]> granicus.if.org Git - graphviz/commitdiff
eliminate integer version of gvrender_polyline()
authorellson <devnull@localhost>
Sat, 17 Jun 2006 18:08:31 +0000 (18:08 +0000)
committerellson <devnull@localhost>
Sat, 17 Jun 2006 18:08:31 +0000 (18:08 +0000)
lib/common/arrows.c
lib/common/emit.c
lib/common/geom.c
lib/common/geomprocs.h
lib/common/shapes.c
lib/gvc/gvcproc.h
lib/gvc/gvrender.c
plugin/core/gvrender_core_ps.c

index 4694231a93e2f944bc7bb11a4ba074c5508b8ab3..8d3a00a6f673a9d5b9dccd178b3ddada17f0c314 100644 (file)
@@ -387,7 +387,7 @@ static void arrow_type_tee(GVJ_t * job, pointf p, pointf u, int flag)
     gvrender_polygon(job, a, 4, 1);
     a[0] = p;
     a[1] = q;
-    gvrender_polylinef(job, a, 2);
+    gvrender_polyline(job, a, 2);
 }
 
 static void arrow_type_box(GVJ_t * job, pointf p, pointf u, int flag)
@@ -418,7 +418,7 @@ static void arrow_type_box(GVJ_t * job, pointf p, pointf u, int flag)
     gvrender_polygon(job, a, 4, !(flag & ARR_MOD_OPEN));
     a[0] = m;
     a[1] = q;
-    gvrender_polylinef(job, a, 2);
+    gvrender_polyline(job, a, 2);
 }
 
 static void arrow_type_diamond(GVJ_t * job, pointf p, pointf u, int flag)
index fabed160416d2222af382985a4ccadfbba90ce8d..b91f27388e9a52df14d2a30347b5b11c119cc227 100644 (file)
@@ -709,7 +709,8 @@ static pointf computeoffset_qr(pointf p, pointf q, pointf r, pointf s,
 
 static void emit_attachment(GVJ_t * job, textlabel_t * lp, splines * spl)
 {
-    point sz, A[3];
+    pointf sz, AF[3];
+    point p;
     unsigned char *s;
 
     for (s = (unsigned char *) (lp->text); *s; s++) {
@@ -719,10 +720,11 @@ static void emit_attachment(GVJ_t * job, textlabel_t * lp, splines * spl)
     if (*s == 0)
        return;
 
-    PF2P(lp->dimen, sz);
-    A[0] = pointof(lp->p.x + sz.x / 2, lp->p.y - sz.y / 2);
-    A[1] = pointof(A[0].x - sz.x, A[0].y);
-    A[2] = dotneato_closest(spl, lp->p);
+    sz = lp->dimen;
+    AF[0] = pointfof((double)(lp->p.x) + sz.x / 2., (double)(lp->p.y) - sz.y / 2.);
+    AF[1] = pointfof(AF[0].x - sz.x, AF[0].y);
+    p = dotneato_closest(spl, lp->p);
+    P2PF(p,AF[2]);
     /* Don't use edge style to draw attachment */
     gvrender_set_style(job, job->gvc->defaultlinestyle);
     /* Use font color to draw attachment
@@ -730,7 +732,7 @@ static void emit_attachment(GVJ_t * job, textlabel_t * lp, splines * spl)
        - defaults to black for html-like labels
      */
     gvrender_set_pencolor(job, lp->fontcolor);
-    gvrender_polyline(job, A, 3);
+    gvrender_polyline(job, AF, 3);
 }
 
 #if 0
index d362f0cd2ce8c3ba26b0f17cd2d3862ad74acfd4..dadcc51f936f7cb108892d041b968d20aaef77e6 100644 (file)
@@ -27,6 +27,13 @@ point pointof(int x, int y)
     return rv;
 }
 
+pointf pointfof(double x, double y)
+{
+    pointf rv;
+    rv.x = x, rv.y = y;
+    return rv;
+}
+
 point cvt2pt(pointf p)
 {
     point rv;
index 65fa3c914d79b8e069b80305f455c0d74293f97f..df2c03bb1a62187a5f3b04bd376fa907212ca47d 100644 (file)
@@ -25,34 +25,47 @@ extern "C" {
 #endif
 
 extern point pointof(int, int);
+extern pointf pointfof(double, double);
+
 extern pointf cvt2ptf(point);
 extern point cvt2pt(pointf);
+
 extern point add_points(point, point);
 extern pointf add_pointfs(pointf, pointf);
+
 extern point sub_points(point, point);
 extern pointf sub_pointfs(pointf, pointf);
+
 extern point exch_xy(point p);
 extern pointf exch_xyf(pointf p);
 
 extern box boxof(int llx, int lly, int urx, int ury);
 extern boxf boxfof(double llx, double lly, double urx, double ury);
+
 extern box mkbox(point, point);
 extern boxf mkboxf(pointf, pointf);
+
 extern box box_bb(box, box);
 extern boxf boxf_bb(boxf, boxf);
+
 extern box box_intersect(box, box);
 extern boxf boxf_intersect(boxf, boxf);
+
 extern bool box_overlap(box, box);
 extern bool boxf_overlap(boxf, boxf);
+
 extern bool box_contains(box, box);
 extern bool boxf_contains(boxf, boxf);
+
 extern box flip_rec_box(box b, point p);
 
 extern double ptToLine2 (pointf l1, pointf l2, pointf p);
+
 extern int lineToBox(pointf p1, pointf p2, boxf b);
 
 extern point ccwrotatep(point p, int ccwrot);
 extern pointf ccwrotatepf(pointf p, int ccwrot);
+
 extern point cwrotatep(point p, int cwrot);
 extern pointf cwrotatepf(pointf p, int cwrot);
 
index d0e11c2929fca50bd7786baf17e2703d93539a0d..c32dbabb87a6f39c74f2992283037c0f17b6d74e 100644 (file)
@@ -320,20 +320,21 @@ static int stylenode(GVJ_t * job, node_t * n)
 static void Mcircle_hack(GVJ_t * job, node_t * n)
 {
     double x, y;
-    point A[2], p;
+    pointf AF[2], p, coord;
 
     y = .7500;
     x = .6614;                 /* x^2 + y^2 = 1.0 */
     p.y = y * ND_ht_i(n) / 2.0;
     p.x = ND_rw_i(n) * x;      /* assume node is symmetric */
 
-    A[0] = add_points(p, ND_coord_i(n));
-    A[1].y = A[0].y;
-    A[1].x = A[0].x - 2 * p.x;
-    gvrender_polyline(job, A, 2);
-    A[0].y -= 2 * p.y;
-    A[1].y = A[0].y;
-    gvrender_polyline(job, A, 2);
+    P2PF(ND_coord_i(n), coord);
+    AF[0] = add_pointfs(p, coord);
+    AF[1].y = AF[0].y;
+    AF[1].x = AF[0].x - 2 * p.x;
+    gvrender_polyline(job, AF, 2);
+    AF[0].y -= 2 * p.y;
+    AF[1].y = AF[0].y;
+    gvrender_polyline(job, AF, 2);
 }
 
 static pointf interpolate(double t, pointf p0, pointf p1)
@@ -401,7 +402,7 @@ void round_corners(GVJ_t * job, char* fillc, char* penc, pointf * AF,
        }
        gvrender_set_pencolor(job, penc);
        for (seg = 0; seg < sides; seg++) {
-           gvrender_polylinef(job, B + 4 * seg + 1, 2);
+           gvrender_polyline(job, B + 4 * seg + 1, 2);
            gvrender_beziercurve(job, B + 4 * seg + 2, 4, FALSE, FALSE, FALSE);
        }
     } else {                   /* diagonals are weird.  rewrite someday. */
@@ -413,11 +414,11 @@ void round_corners(GVJ_t * job, char* fillc, char* penc, pointf * AF,
 #ifdef NOTDEF
            C[0] = B[3 * seg];
            C[1] = B[3 * seg + 3];
-           gvrender_polylinef(job, C, 2);
+           gvrender_polyline(job, C, 2);
 #endif
            C[0] = B[3 * seg + 2];
            C[1] = B[3 * seg + 4];
-           gvrender_polylinef(job, C, 2);
+           gvrender_polyline(job, C, 2);
        }
     }
     free(B);
@@ -1825,7 +1826,7 @@ static void gen_fields(GVJ_t * job, node_t * n, field_t * f)
 {
     int i;
     double cx, cy;
-    point A[2];
+    pointf AF[2], coord;
 
     if (f->lp) {
        cx = (f->b.LL.x + f->b.UR.x) / 2.0 + ND_coord_i(n).x;
@@ -1837,17 +1838,18 @@ static void gen_fields(GVJ_t * job, node_t * n, field_t * f)
     for (i = 0; i < f->n_flds; i++) {
        if (i > 0) {
            if (f->LR) {
-               A[0] = f->fld[i]->b.LL;
-               A[1].x = A[0].x;
-               A[1].y = f->fld[i]->b.UR.y;
+               P2PF(f->fld[i]->b.LL, AF[0]);
+               AF[1].x = AF[0].x;
+               AF[1].y = (double)(f->fld[i]->b.UR.y);
            } else {
-               A[1] = f->fld[i]->b.UR;
-               A[0].x = f->fld[i]->b.LL.x;
-               A[0].y = A[1].y;
+               P2PF(f->fld[i]->b.UR, AF[1]);
+               AF[0].x = (double)(f->fld[i]->b.LL.x);
+               AF[0].y = AF[1].y;
            }
-           A[0] = add_points(A[0], ND_coord_i(n));
-           A[1] = add_points(A[1], ND_coord_i(n));
-           gvrender_polyline(job, A, 2);
+           P2PF(ND_coord_i(n), coord);
+           AF[0] = add_pointfs(AF[0], coord);
+           AF[1] = add_pointfs(AF[1], coord);
+           gvrender_polyline(job, AF, 2);
        }
        gen_fields(job, n, f->fld[i]);
     }
index b7e48c6f57063deaa9bdfa40bbffc0ec0fb290e8..df77ee7b19bc0e6fb0e4e1b70920ef7b1173aee8 100644 (file)
@@ -112,8 +112,7 @@ extern "C" {
     extern void gvrender_box(GVJ_t * job, boxf BF, bool filled);
     extern void gvrender_beziercurve(GVJ_t * job, pointf * AF, int n,
                        int arrow_at_start, int arrow_at_end, bool filled);
-    extern void gvrender_polyline(GVJ_t * job, point * A, int n);
-    extern void gvrender_polylinef(GVJ_t * job, pointf * AF, int n);
+    extern void gvrender_polyline(GVJ_t * job, pointf * AF, int n);
     extern void gvrender_comment(GVJ_t * job, char *str);
     extern void gvrender_usershape(GVJ_t * job, char *name, pointf * AF, int n, bool filled);
 
index c176cd52c3a4bb8483add32a890b816bc3031eb5..cc9fda19c6b2ad3a565b8833d3ab2942e0defbbb 100644 (file)
@@ -331,14 +331,6 @@ static pointf* gvrender_ptf_A(GVJ_t *job, pointf *af, pointf *AF, int n)
     return AF;
 }
 
-static pointf gvrender_pt(GVJ_t *job, point p)
-{
-    pointf pf;
-
-    P2PF(p, pf);
-    return gvrender_ptf(job, pf);
-}
-
 static int gvrender_comparestr(const void *s1, const void *s2)
 {
     return strcmp(*(char **) s1, *(char **) s2);
@@ -1647,7 +1639,7 @@ void gvrender_beziercurve(GVJ_t * job, pointf * af, int n,
 #endif
 }
 
-void gvrender_polylinef(GVJ_t * job, pointf * af, int n)
+void gvrender_polyline(GVJ_t * job, pointf * af, int n)
 {
     gvrender_engine_t *gvre = job->render.engine;
 
@@ -1682,39 +1674,6 @@ void gvrender_polylinef(GVJ_t * job, pointf * af, int n)
 #endif
 }
 
-void gvrender_polyline(GVJ_t * job, point * a, int n)
-{
-    gvrender_engine_t *gvre = job->render.engine;
-
-    if (gvre && gvre->polyline) {
-       if (job->style->pen != PEN_NONE) {
-           int i;
-           if (sizeAF < n) {
-               sizeAF = n+10;
-               AF = grealloc(AF, sizeAF * sizeof(pointf));
-           }
-           if (job->flags & GVRENDER_DOES_TRANSFORM) {
-               for (i = 0; i < n; i++) {
-                   P2PF(a[i],AF[i]);
-               }
-           }
-           else {
-               for (i = 0; i < n; i++)
-                   AF[i] = gvrender_pt(job, a[i]);
-           }
-           gvre->polyline(job, AF, n);
-       }
-    }
-#ifdef WITH_CODEGENS
-    else {
-       codegen_t *cg = job->codegen;
-
-       if (cg && cg->polyline)
-           cg->polyline(a, n);
-    }
-#endif
-}
-
 void gvrender_comment(GVJ_t * job, char *str)
 {
     gvrender_engine_t *gvre = job->render.engine;
index 7a9eb51be3aaa9cd37b82ac3852ecca57bd44776..6b233b7841ab65dd3ff1a3bf838581201ff15381 100644 (file)
@@ -178,7 +178,7 @@ static void psgen_begin_cluster(GVJ_t * job)
 
     fprintf(job->output_file, "%% %s\n", obj->sg->name);
 
-    if (obj->url) {
+    if (obj->url &&  obj->url_map_p) {
         fprintf(job->output_file, "[ /Rect [ %g %g %g %g ]\n",
                obj->url_map_p[0].x, obj->url_map_p[0].y,
                obj->url_map_p[1].x, obj->url_map_p[1].y);
@@ -194,7 +194,7 @@ static void psgen_begin_node(GVJ_t * job)
 {
     obj_state_t *obj = job->obj;
 
-    if (obj->url) {
+    if (obj->url && obj->url_map_p) {
         fprintf(job->output_file, "[ /Rect [ %g %g %g %g ]\n",
                obj->url_map_p[0].x, obj->url_map_p[0].y,
                obj->url_map_p[1].x, obj->url_map_p[1].y);
@@ -211,7 +211,7 @@ psgen_begin_edge(GVJ_t * job)
 {
     obj_state_t *obj = job->obj;
 
-    if (obj->url) {
+    if (obj->url && obj->url_map_p) {
         fprintf(job->output_file, "[ /Rect [ %g %g %g %g ]\n",
                obj->url_map_p[0].x, obj->url_map_p[0].y,
                obj->url_map_p[1].x, obj->url_map_p[1].y);
@@ -221,7 +221,7 @@ psgen_begin_edge(GVJ_t * job)
                "/ANN pdfmark\n",
                ps_string(obj->url, isLatin1));
     }
-    if (obj->tailurl) {
+    if (obj->tailurl && obj->tailurl_map_p) {
         fprintf(job->output_file, "[ /Rect [ %g %g %g %g ]\n",
                obj->tailurl_map_p[0].x, obj->tailurl_map_p[0].y,
                obj->tailurl_map_p[1].x, obj->tailurl_map_p[1].y);
@@ -231,7 +231,7 @@ psgen_begin_edge(GVJ_t * job)
                "/ANN pdfmark\n",
                ps_string(obj->tailurl, isLatin1));
     }
-    if (obj->headurl) {
+    if (obj->headurl && obj->headurl_map_p) {
         fprintf(job->output_file, "[ /Rect [ %g %g %g %g ]\n",
                obj->headurl_map_p[0].x, obj->headurl_map_p[0].y,
                obj->headurl_map_p[1].x, obj->headurl_map_p[1].y);
@@ -241,7 +241,7 @@ psgen_begin_edge(GVJ_t * job)
                "/ANN pdfmark\n",
                ps_string(obj->headurl, isLatin1));
     }
-    if (obj->tailurl) {
+    if (obj->tailurl && obj->tailendurl_map_p) {
         fprintf(job->output_file, "[ /Rect [ %g %g %g %g ]\n",
                obj->tailendurl_map_p[0].x, obj->tailendurl_map_p[0].y,
                obj->tailendurl_map_p[1].x, obj->tailendurl_map_p[1].y);
@@ -251,7 +251,7 @@ psgen_begin_edge(GVJ_t * job)
                "/ANN pdfmark\n",
                ps_string(obj->tailurl, isLatin1));
     }
-    if (obj->headurl) {
+    if (obj->headurl && obj->headendurl_map_p) {
         fprintf(job->output_file, "[ /Rect [ %g %g %g %g ]\n",
                obj->headendurl_map_p[0].x, obj->headendurl_map_p[0].y,
                obj->headendurl_map_p[1].x, obj->headendurl_map_p[1].y);