- double dx, dy, x, y, distance, fraction;
- int i;
-
- if (model->mouse_anchor.object != NULL)
- model_constrain_anchor (model, &model->mouse_anchor);
- for (i = 0; i < model->num_anchors; i++)
- model_constrain_anchor (model, &model->anchors[i]);
-
- /* String constraints. */
- for (i = 0; i < model->num_strings; i++) {
- x = model->strings[i].a->position.x;
- y = model->strings[i].a->position.y;
- dx = model->strings[i].b->position.x - x;
- dy = model->strings[i].b->position.y - y;
- distance = estimate_distance (dx, dy, model->strings[i].length);
- if (distance < model->strings[i].length)
- continue;
- fraction = (distance - model->strings[i].length) / distance / 2;
- model->strings[i].a->position.x = x + dx * fraction;
- model->strings[i].a->position.y = y + dy * fraction;
- model->strings[i].b->position.x = x + dx * (1 - fraction);
- model->strings[i].b->position.y = y + dy * (1 - fraction);
- }
-
- /* Spacer constraints. */
- for (i = 0; i < model->num_spacers; i++) {
- x = model->spacers[i].a->position.x;
- y = model->spacers[i].a->position.y;
- dx = model->spacers[i].b->position.x - x;
- dy = model->spacers[i].b->position.y - y;
- distance = estimate_distance (dx, dy, model->spacers[i].length);
- if (distance > model->spacers[i].length)
- continue;
- fraction = (distance - model->spacers[i].length) / distance / 2;
- model->spacers[i].a->position.x = x + dx * fraction;
- model->spacers[i].a->position.y = y + dy * fraction;
- model->spacers[i].b->position.x = x + dx * (1 - fraction);
- model->spacers[i].b->position.y = y + dy * (1 - fraction);
- }
-
- /* Stick constraints. */
- for (i = 0; i < model->num_sticks; i++) {
- x = model->sticks[i].a->position.x;
- y = model->sticks[i].a->position.y;
- dx = model->sticks[i].b->position.x - x;
- dy = model->sticks[i].b->position.y - y;
- distance = estimate_distance (dx, dy, model->sticks[i].length);
- fraction = (distance - model->sticks[i].length) / distance / 2;
- model->sticks[i].a->position.x = x + dx * fraction;
- model->sticks[i].a->position.y = y + dy * fraction;
- model->sticks[i].b->position.x = x + dx * (1 - fraction);
- model->sticks[i].b->position.y = y + dy * (1 - fraction);
- }
-
- /* Offset constraints. */
- for (i = 0; i < model->num_offsets; i++)
- model_constrain_offset (model, &model->offsets[i]);
-
- /* Polygon constraints. */
- for (i = 0; i < model->num_polygons; i++)
- model_constrain_polygon (model, &model->polygons[i]);
+ double dx, dy, x, y, distance, fraction;
+ int i;
+
+ if (model->mouse_anchor.object != NULL)
+ model_constrain_anchor (model, &model->mouse_anchor);
+ for (i = 0; i < model->num_anchors; i++)
+ model_constrain_anchor (model, &model->anchors[i]);
+
+ /* String constraints. */
+ for (i = 0; i < model->num_strings; i++) {
+ x = model->strings[i].a->position.x;
+ y = model->strings[i].a->position.y;
+ dx = model->strings[i].b->position.x - x;
+ dy = model->strings[i].b->position.y - y;
+ distance = estimate_distance (dx, dy, model->strings[i].length);
+ if (distance < model->strings[i].length)
+ continue;
+ fraction = (distance - model->strings[i].length) / distance / 2;
+ model->strings[i].a->position.x = x + dx * fraction;
+ model->strings[i].a->position.y = y + dy * fraction;
+ model->strings[i].b->position.x = x + dx * (1 - fraction);
+ model->strings[i].b->position.y = y + dy * (1 - fraction);
+ }
+
+ /* Spacer constraints. */
+ for (i = 0; i < model->num_spacers; i++) {
+ x = model->spacers[i].a->position.x;
+ y = model->spacers[i].a->position.y;
+ dx = model->spacers[i].b->position.x - x;
+ dy = model->spacers[i].b->position.y - y;
+ distance = estimate_distance (dx, dy, model->spacers[i].length);
+ if (distance > model->spacers[i].length)
+ continue;
+ fraction = (distance - model->spacers[i].length) / distance / 2;
+ model->spacers[i].a->position.x = x + dx * fraction;
+ model->spacers[i].a->position.y = y + dy * fraction;
+ model->spacers[i].b->position.x = x + dx * (1 - fraction);
+ model->spacers[i].b->position.y = y + dy * (1 - fraction);
+ }
+
+ /* Stick constraints. */
+ for (i = 0; i < model->num_sticks; i++) {
+ x = model->sticks[i].a->position.x;
+ y = model->sticks[i].a->position.y;
+ dx = model->sticks[i].b->position.x - x;
+ dy = model->sticks[i].b->position.y - y;
+ distance = estimate_distance (dx, dy, model->sticks[i].length);
+ fraction = (distance - model->sticks[i].length) / distance / 2;
+ model->sticks[i].a->position.x = x + dx * fraction;
+ model->sticks[i].a->position.y = y + dy * fraction;
+ model->sticks[i].b->position.x = x + dx * (1 - fraction);
+ model->sticks[i].b->position.y = y + dy * (1 - fraction);
+ }
+
+ /* Offset constraints. */
+ for (i = 0; i < model->num_offsets; i++)
+ model_constrain_offset (model, &model->offsets[i]);
+
+ /* Polygon constraints. */
+ for (i = 0; i < model->num_polygons; i++)
+ model_constrain_polygon (model, &model->polygons[i]);