git.asbjorn.biz
/
swftools.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge branch 'horizontals'
[swftools.git]
/
lib
/
gfxpoly
/
active.c
diff --git
a/lib/gfxpoly/active.c
b/lib/gfxpoly/active.c
index
e9270e4
..
c5f9c02
100644
(file)
--- a/
lib/gfxpoly/active.c
+++ b/
lib/gfxpoly/active.c
@@
-1,7
+1,9
@@
#include <stdlib.h>
#include <memory.h>
#include <math.h>
#include <stdlib.h>
#include <memory.h>
#include <math.h>
+#include "../../config.h"
#include "../q.h"
#include "../q.h"
+#include "../types.h"
#include "active.h"
actlist_t* actlist_new()
#include "active.h"
actlist_t* actlist_new()
@@
-14,7
+16,7
@@
void actlist_destroy(actlist_t*a)
free(a);
}
free(a);
}
-void actlist_dump(actlist_t*a, int32_t y)
+void actlist_dump(actlist_t*a, int32_t y, double gridsize)
{
segment_t*s = a->list;
double lastx;
{
segment_t*s = a->list;
double lastx;
@@
-25,14
+27,14
@@
void actlist_dump(actlist_t*a, int32_t y)
double x = ((double)s->delta.x*(y-s->a.y)/s->delta.y)+s->a.x;
if(s!=a->list) {
if(lastx>x)
double x = ((double)s->delta.x*(y-s->a.y)/s->delta.y)+s->a.x;
if(s!=a->list) {
if(lastx>x)
- fprintf(stderr, "?%f<->%f? ", lastx, x);
+ fprintf(stderr, "?%.2f<->%.2f? ", lastx * gridsize, x * gridsize);
}
lastx = x;
}
}
lastx = x;
}
- fprintf(stderr, "[%d]", s->nr);
+ fprintf(stderr, "[%d]", (int)s->nr);
s = s->right;
if(s) fprintf(stderr, " ");
s = s->right;
if(s) fprintf(stderr, " ");
- else fprintf(stderr, " y=%d\n", y);
+ else fprintf(stderr, " y=%.2f\n", y * gridsize);
}
}
void actlist_verify(actlist_t*a, int32_t y)
}
}
void actlist_verify(actlist_t*a, int32_t y)
@@
-95,10
+97,10
@@
segment_t* actlist_find(actlist_t*a, point_t p1, point_t p2)
//double d = cmp(t, p1, p2);
double d = single_cmp(t, p1);
if(d>=0 && to_the_left) {
//double d = cmp(t, p1, p2);
double d = single_cmp(t, p1);
if(d>=0 && to_the_left) {
- actlist_dump(a, p1.y);
+ actlist_dump(a, p1.y, 1);
segment_t*s = a->list;
while(s) {
segment_t*s = a->list;
while(s) {
- fprintf(stderr, "[%d] %f/%f (%d,%d) -> (%d,%d)\n", s->nr,
+ fprintf(stderr, "[%d] %f/%f (%d,%d) -> (%d,%d)\n", SEGNR(s),
single_cmp(s,p1), cmp(s,p1,p2),
s->a.x, s->a.y, s->b.x, s->b.y);
s = s->right;
single_cmp(s,p1), cmp(s,p1,p2),
s->a.x, s->a.y, s->b.x, s->b.y);
s = s->right;
@@
-375,7
+377,7
@@
static void move_to_root(actlist_t*a, segment_t*s)
}
}
}
}
-static int actlist_splay(actlist_t*a, point_t p1, point_t p2)
+static void actlist_splay(actlist_t*a, point_t p1, point_t p2)
{
if(!a->list) return;
{
if(!a->list) return;
@@
-503,7
+505,11
@@
void actlist_delete(actlist_t*a, segment_t*s)
} else if(!a->root->rightchild) {
a->root = a->root->leftchild;
} else {
} else if(!a->root->rightchild) {
a->root = a->root->leftchild;
} else {
+#ifdef HAVE_LRAND48
if(lrand48()&1) {
if(lrand48()&1) {
+#else
+ if(((ptroff_t)s)&16) {
+#endif
// free up root->left->right
segment_t*t = a->root->leftchild;
while(t->rightchild) {
// free up root->left->right
segment_t*t = a->root->leftchild;
while(t->rightchild) {