]> granicus.if.org Git - graphviz/commitdiff
eliminate job->comptrans
authorellson <devnull@localhost>
Sat, 29 Jul 2006 22:30:11 +0000 (22:30 +0000)
committerellson <devnull@localhost>
Sat, 29 Jul 2006 22:30:11 +0000 (22:30 +0000)
fix bug with landscape bugs in -Tgif

lib/common/emit.c
lib/gvc/gvcjob.h
lib/gvc/gvevent.c
lib/gvc/gvrender.c
plugin/core/gvrender_core_svg.c
plugin/pango/gvrender_pango.c

index e4599e4313e28087dc7365d9a67341f23da3b1cc..0914731d53d4cdc0c030d343f970a9347d41ac51 100644 (file)
@@ -364,7 +364,7 @@ static void setup_page(GVJ_t * job, graph_t * g)
     if (job->rotation) {
        if (job->flags & GVRENDER_Y_GOES_DOWN) {
            job->translation.x = -job->pageBox.UR.x - job->pageBoundingBox.LL.x / job->scale.x;
-           job->translation.y =  job->pageBox.UR.y + job->pageBoundingBox.LL.y / job->scale.y;
+           job->translation.y = -job->pageBox.UR.y - job->pageBoundingBox.LL.y / job->scale.y;
        }
        else {
            job->translation.x = -job->pageBox.LL.x + job->pageBoundingBox.LL.y / job->scale.y;
@@ -374,15 +374,13 @@ static void setup_page(GVJ_t * job, graph_t * g)
     else {
        job->translation.x = -job->pageBox.LL.x + job->pageBoundingBox.LL.x / job->scale.x;
        if (job->flags & GVRENDER_Y_GOES_DOWN)
-           job->translation.y =  job->pageBox.UR.y + job->pageBoundingBox.LL.y / job->scale.y;
+           job->translation.y = -job->pageBox.UR.y - job->pageBoundingBox.LL.y / job->scale.y;
        else
            job->translation.y = -job->pageBox.LL.y + job->pageBoundingBox.LL.y / job->scale.y;
     }
 
     job->compscale = job->scale;
     job->compscale.y *= (job->flags & GVRENDER_Y_GOES_DOWN) ? -1. : 1.;
-    job->comptrans = job->translation;
-    job->comptrans.y *= (job->flags & GVRENDER_Y_GOES_DOWN) ? -1: 1;
 }
 
 #if 0
index 84ef73559dbd4bf5551f81dfdfbac0deaee1ef9a..a2f6f51fe47b25a6d9adf72c3dabde9dd8cccb82 100644 (file)
@@ -263,11 +263,10 @@ extern "C" {
        box     pageBoundingBox;/* rotated boundingBox - device units */
        box     boundingBox;    /* cumulative boundingBox over all pages - device units */
 
-       pointf  scale;          /* composite device scale (zoom and dpi) */
+       pointf  scale;          /* composite device scale (zoom and dpi) */
        pointf  translation;    /* composite translation */
        pointf  compscale;      /* composite device scale incl: zoom, dpi, y_goes_down */
-       pointf  comptrans;      /* composite translation */
-       
+
        bool    fit_mode,
                needs_refresh,
                click,
index cc1248cc61263e55a486f9568b7ee60f6ded229f..0e2e9294dd44a856e5eefd0c5a3d17110a74d67b 100644 (file)
@@ -292,29 +292,29 @@ static void gvevent_enter_obj(GVJ_t * job)
 static void gvevent_find_current_obj(GVJ_t * job, pointf pointer)
 {
     void *obj;
-    pointf p;
+    pointf p, translation = job->translation, scale = job->compscale;
     boxf b;
     double closeenough;
 
     if (job->rotation) {
-       p.x = pointer.y / job->compscale.y - job->comptrans.x; 
-       p.y = -pointer.x / job->compscale.x - job->comptrans.y; 
+       p.x = pointer.y / scale.y - translation.x; 
+       p.y = -pointer.x / scale.x - translation.y; 
     }
     else {
-       p.x = pointer.x / job->compscale.x - job->comptrans.x; 
-       p.y = pointer.y / job->compscale.y - job->comptrans.y; 
+       p.x = pointer.x / scale.x - translation.x; 
+       p.y = pointer.y / scale.y - translation.y; 
     }
 
 #if 0
 fprintf(stderr,"pointer = %g,%g compscale = %g,%g comptrans = %g,%g, graphpoint = %g,%g\n",
        pointer.x, pointer.y,
-       job->compscale.x, job->compscale.y,
-       job->comptrans.x, job->comptrans.y,
+       scale.x, scale.y,
+       trans.x, trans.y,
        p.x, p.y);
 #endif
 
     /* convert window point to graph coordinates */
-    closeenough = CLOSEENOUGH / job->compscale.x;
+    closeenough = CLOSEENOUGH / scale.x;
 
     b.UR.x = p.x + closeenough;
     b.UR.y = p.y + closeenough;
index 99b2d789373b1b7f99cf9d5346b2517edf6a85db..9c6581796f3ce756d94f7dc5b8ed69eda1ed5614 100644 (file)
@@ -288,14 +288,14 @@ void gvrender_end_job(GVJ_t * job)
 
 static pointf gvrender_ptf(GVJ_t *job, pointf p)
 {
-    pointf rv;
+    pointf rv, translation = job->translation, scale = job->compscale;
 
     if (job->rotation) {
-       rv.x =  -(p.y + job->comptrans.y) * job->compscale.x;
-       rv.y =  (p.x + job->comptrans.x) * job->compscale.y;
+       rv.x =  -(p.y + translation.y) * scale.x;
+       rv.y =  (p.x + translation.x) * scale.y;
     } else {
-       rv.x =  (p.x + job->comptrans.x) * job->compscale.x;
-       rv.y =  (p.y + job->comptrans.y) * job->compscale.y;
+       rv.x =  (p.x + translation.x) * scale.x;
+       rv.y =  (p.y + translation.y) * scale.y;
     }
     return rv;
 }
@@ -306,18 +306,20 @@ static pointf gvrender_ptf(GVJ_t *job, pointf p)
 static pointf* gvrender_ptf_A(GVJ_t *job, pointf *af, pointf *AF, int n)
 {
     int i;
-    pointf trans = job->comptrans, scale = job->compscale;
+    pointf translation = job->translation, scale = job->compscale;
+    double t;
 
     if (job->rotation) {
         for (i = 0; i < n; i++) {
-           AF[i].x = -(af[i].y + trans.y) * scale.x;
-           AF[i].y =  (af[i].x + trans.x) * scale.y;
+                 t = -(af[i].y + translation.y) * scale.x;
+           AF[i].y =  (af[i].x + translation.x) * scale.y;
+           AF[i].x = t;
        }
     }
     else {
         for (i = 0; i < n; i++) {
-           AF[i].x =  (af[i].x + trans.x) * scale.x;
-           AF[i].y =  (af[i].y + trans.y) * scale.y;
+           AF[i].x =  (af[i].x + translation.x) * scale.x;
+           AF[i].y =  (af[i].y + translation.y) * scale.y;
        }
     }
     return AF;
index ec9360da5cccc829d71ff7efba90863831f502b8..d75ee745cd5916357e815d7b83399c222fc6bad5 100644 (file)
@@ -265,7 +265,7 @@ static void svggen_begin_page(GVJ_t * job)
     svggen_printf(job, "<g id=\"graph%d\" class=\"graph\"", job->common->viewNum);
     svggen_printf(job, " transform=\"scale(%g %g) rotate(%d) translate(%g %g)\">\n",
            job->scale.x, job->scale.y, -job->rotation,
-           job->translation.x, job->translation.y);
+           job->translation.x, -job->translation.y);
     /* default style */
     if (obj->g->name[0]) {
         svggen_fputs(job, "<title>");
index 699f78562db48a50be21affb14aa64c1250bcf83..60d891f3bbd2b4111f88f60e3224feda2b15b9a1 100644 (file)
@@ -195,7 +195,7 @@ static void cairogen_begin_page(GVJ_t * job)
     cairo_save(cr);
     cairo_scale(cr, job->scale.x, job->scale.y);
     cairo_rotate(cr, -job->rotation * M_PI / 180.);
-    cairo_translate(cr, job->translation.x, job->translation.y);
+    cairo_translate(cr, job->translation.x, -job->translation.y);
 }
 
 static void cairogen_end_page(GVJ_t * job)