int inc, err, thre, swap;
int x1, y1, x2, y2;
int x, y;
- rect.name = src->name;
+ rect.name = NULL;
err = 0;
swap = 0;
x1 = src->x;
rect.x = strtol (buffer, &next, 0);
rect.y = strtol (next+1, &next, 0);
strtol (next, &next, 0);
- if (i > 0)
- InsertLine (points, &last, &rect);
while (isspace (*next)) next++;
rect.name = g_strdup (next);
+ if (i > 0)
+ InsertLine (points, &last, &rect);
+ g_array_append_val (points, rect);
last = rect;
i++;
}
fclose (file);
return points;
}
+
+GArray *
+drop_dup_frames (GArray *points, int n)
+{
+ GArray *frames;
+ Point *point;
+ Point *next;
+ int i;
+ int j;
+ int inc;
+ int thre;
+ int err;
+ inc = n;
+ frames = g_array_new (FALSE, TRUE, sizeof (Point));
+ for (i = 0; i < points->len;)
+ {
+ j = i + 1;
+ point = next = &(g_array_index (points, Point, j));
+ while (next->name == NULL && j < points->len)
+ {
+ j++;
+ next = &(g_array_index (points, Point, j));
+ }
+ thre = j - i;
+ err = 0;
+ g_array_append_val (frames, g_array_index (points, Point, i));
+ for (; i < j; i++)
+ {
+ err += inc;
+ while (err > thre)
+ {
+ err -= thre;
+ g_array_append_val (frames, g_array_index (points, Point, i));
+ }
+ }
+ }
+ return frames;
+}
+
+void
+rescale_points (GArray *points)
+{
+ Point *point;
+ int i;
+ for (i = 0; i < points->len; i++)
+ {
+ point = &(g_array_index (points, Point, i));
+ point->rx = 4.0;
+ point->ry = 4.0;
+ point->x *= point->rx;
+ point->y *= point->ry;
+ }
+}