- while(s) {
- if(!dict_contains(d, &s->a)) {
- dict_put(d, &s->a, (void*)(ptroff_t)1);
- } else {
- int count = (ptroff_t)dict_lookup(d, &s->a);
- dict_del(d, &s->a);
- count++;
- dict_put(d, &s->a, (void*)(ptroff_t)count);
- }
- if(!dict_contains(d, &s->b)) {
- dict_put(d, &s->b, (void*)(ptroff_t)1);
- } else {
- int count = (ptroff_t)dict_lookup(d, &s->b);
- dict_del(d, &s->b);
- count++;
- dict_put(d, &s->b, (void*)(ptroff_t)count);
- }
- s = s->next;
+ int s,t;
+ gfxpolystroke_t*stroke = poly->strokes;
+ for(;stroke;stroke=stroke->next) {
+ for(s=0;s<stroke->num_points;s++) {
+ point_t p = stroke->points[s];
+ int num = (s>=1 && s<stroke->num_points-1)?2:1; // mid points are two points (start+end)
+ if(!dict_contains(d, &p)) {
+ dict_put(d, &p, (void*)(ptroff_t)num);
+ } else {
+ int count = (ptroff_t)dict_lookup(d, &p);
+ dict_del(d, &p);
+ count+=num;
+ dict_put(d, &p, (void*)(ptroff_t)count);
+ }
+ }