[lasem/wip/emmanuel/extents] wip: ruler use



commit aadf2b0d4fcb6a8be0c07dd98b172b2d4d1622a0
Author: Emmanuel Pacaud <emmanuel gnome org>
Date:   Wed Jul 13 16:03:44 2016 +0200

    wip: ruler use

 src/lsmsvgcircleelement.c  |   14 +++++++-------
 src/lsmsvgelement.c        |   20 ++++++++++----------
 src/lsmsvgelement.h        |   10 +++++-----
 src/lsmsvgellipseelement.c |   16 ++++++++--------
 src/lsmsvgfilterelement.c  |   37 ++-----------------------------------
 src/lsmsvgimageelement.c   |   10 +++++-----
 src/lsmsvglineelement.c    |   17 ++++++++---------
 src/lsmsvgpathelement.c    |    5 +++--
 src/lsmsvgpolygonelement.c |    2 +-
 src/lsmsvgrectelement.c    |   10 +++++-----
 src/lsmsvgsvgelement.c     |    2 +-
 src/lsmsvgtextelement.c    |    4 ++--
 src/lsmsvgtransformable.c  |    4 ++--
 src/lsmsvguseelement.c     |   12 ++++++------
 src/lsmsvgview.c           |   14 +++++++++++---
 src/lsmsvgview.h           |    2 ++
 16 files changed, 78 insertions(+), 101 deletions(-)
---
diff --git a/src/lsmsvgcircleelement.c b/src/lsmsvgcircleelement.c
index 6b1e727..db4c09f 100644
--- a/src/lsmsvgcircleelement.c
+++ b/src/lsmsvgcircleelement.c
@@ -40,11 +40,11 @@ lsm_svg_circle_element_get_node_name (LsmDomNode *node)
 /* LsmSvgGraphic implementation */
 
 static void
-_normalize_length (LsmSvgCircleElement *circle, LsmSvgView *view, double *cx, double *cy, double *r)
+_normalize_length (LsmSvgCircleElement *circle, LsmSvgRuler *ruler, double *cx, double *cy, double *r)
 {
-       *cx = lsm_svg_view_normalize_length (view, &circle->cx.length, LSM_SVG_LENGTH_DIRECTION_HORIZONTAL);
-       *cy = lsm_svg_view_normalize_length (view, &circle->cy.length, LSM_SVG_LENGTH_DIRECTION_VERTICAL);
-       *r  = lsm_svg_view_normalize_length (view, &circle->r.length,  LSM_SVG_LENGTH_DIRECTION_DIAGONAL);
+       *cx = lsm_svg_ruler_normalize_length (ruler, &circle->cx.length, LSM_SVG_LENGTH_DIRECTION_HORIZONTAL);
+       *cy = lsm_svg_ruler_normalize_length (ruler, &circle->cy.length, LSM_SVG_LENGTH_DIRECTION_VERTICAL);
+       *r  = lsm_svg_ruler_normalize_length (ruler, &circle->r.length,  LSM_SVG_LENGTH_DIRECTION_DIAGONAL);
 }
 
 static void
@@ -53,7 +53,7 @@ lsm_svg_circle_element_render (LsmSvgElement *self, LsmSvgView *view)
        LsmSvgCircleElement *circle = LSM_SVG_CIRCLE_ELEMENT (self);
        double cx, cy, r;
 
-       _normalize_length (circle, view, &cx,&cy,&r);
+       _normalize_length (circle, lsm_svg_view_get_ruler (view), &cx,&cy,&r);
 
        lsm_debug_render ("[LsmSvgCircleElement::render] cx = %g, cy = %g, r = %g", cx, cy, r);
 
@@ -61,12 +61,12 @@ lsm_svg_circle_element_render (LsmSvgElement *self, LsmSvgView *view)
 }
 
 static void
-lsm_svg_circle_element_get_extents (LsmSvgElement *self, LsmSvgView *view, LsmExtents *extents)
+lsm_svg_circle_element_get_extents (LsmSvgElement *self, LsmSvgRuler *ruler, LsmExtents *extents)
 {
        LsmSvgCircleElement *circle = LSM_SVG_CIRCLE_ELEMENT (self);
        double cx, cy, r;
 
-       _normalize_length (circle, view, &cx,&cy,&r);
+       _normalize_length (circle, ruler, &cx,&cy,&r);
 
        extents->x1 = cx - r;
        extents->y1 = cy - r;
diff --git a/src/lsmsvgelement.c b/src/lsmsvgelement.c
index 08cc86c..6dd5dce 100644
--- a/src/lsmsvgelement.c
+++ b/src/lsmsvgelement.c
@@ -228,23 +228,23 @@ lsm_svg_element_force_render (LsmSvgElement *element, LsmSvgView *view)
 }
 
 void
-lsm_svg_element_transformed_get_extents (LsmSvgElement *element, LsmSvgView *view, LsmExtents *extents)
+lsm_svg_element_transformed_get_extents (LsmSvgElement *element, LsmSvgRuler *ruler, LsmExtents *extents)
 {
        LsmSvgElementClass *element_class;
        g_return_if_fail (LSM_IS_SVG_ELEMENT (element));
-       g_return_if_fail (LSM_IS_SVG_VIEW (view));
+       g_return_if_fail (ruler != NULL);
        g_return_if_fail (extents != NULL);
 
        element_class = LSM_SVG_ELEMENT_GET_CLASS (element);
 
        if (element_class->transformed_get_extents != NULL)
-               element_class->transformed_get_extents (element, view, extents);
+               element_class->transformed_get_extents (element, ruler, extents);
        else
-               element_class->get_extents (element, view, extents);
+               element_class->get_extents (element, ruler, extents);
 }
 
 static void
-_get_extents (LsmSvgElement *element, LsmSvgView *view, LsmExtents *extents)
+_get_extents (LsmSvgElement *element, LsmSvgRuler *ruler, LsmExtents *extents)
 {
        LsmDomNode *node;
        gboolean first_child = TRUE;
@@ -262,9 +262,9 @@ _get_extents (LsmSvgElement *element, LsmSvgView *view, LsmExtents *extents)
                        child_element_class = LSM_SVG_ELEMENT_GET_CLASS (node);
                        
                        if (child_element_class->transformed_get_extents != NULL)
-                               child_element_class->transformed_get_extents (child_element, view, 
&child_extents);
+                               child_element_class->transformed_get_extents (child_element, ruler, 
&child_extents);
                        else
-                               child_element_class->get_extents (child_element, view, &child_extents);
+                               child_element_class->get_extents (child_element, ruler, &child_extents);
 
                        if (first_child) {
                                element_extents = child_extents;
@@ -282,16 +282,16 @@ _get_extents (LsmSvgElement *element, LsmSvgView *view, LsmExtents *extents)
 }
 
 void
-lsm_svg_element_get_extents (LsmSvgElement *element, LsmSvgView *view, LsmExtents *extents)
+lsm_svg_element_get_extents (LsmSvgElement *element, LsmSvgRuler *ruler, LsmExtents *extents)
 {
        LsmSvgElementClass *element_class;
 
        g_return_if_fail (LSM_IS_SVG_ELEMENT (element));
-       g_return_if_fail (LSM_IS_SVG_VIEW (view));
+       g_return_if_fail (ruler != NULL);
        g_return_if_fail (extents != NULL);
 
        element_class = LSM_SVG_ELEMENT_GET_CLASS (element);
-       element_class->get_extents (element, view, extents);
+       element_class->get_extents (element, ruler, extents);
 
        if (element->id.value != NULL)
                lsm_debug_measure ("LsmSvgElement::get_extents] Extents for '%s' = %g,%g %g,%g",
diff --git a/src/lsmsvgelement.h b/src/lsmsvgelement.h
index 536b873..7ad5dee 100644
--- a/src/lsmsvgelement.h
+++ b/src/lsmsvgelement.h
@@ -27,6 +27,7 @@
 #include <lsmsvgtypes.h>
 #include <lsmsvgattributes.h>
 #include <lsmsvgstyle.h>
+#include <lsmsvgruler.h>
 #include <lsmdom.h>
 #include <cairo.h>
 
@@ -59,9 +60,9 @@ struct _LsmSvgElementClass {
 
        void            (*enable_rendering)             (LsmSvgElement *element);
        void            (*render)                       (LsmSvgElement *element, LsmSvgView *view);
-       void            (*get_extents)                  (LsmSvgElement *element, LsmSvgView *view, LsmExtents 
*extents);
        void            (*transformed_render)           (LsmSvgElement *element, LsmSvgView *view);
-       void            (*transformed_get_extents)      (LsmSvgElement *element, LsmSvgView *view, LsmExtents 
*extents);
+       void            (*get_extents)                  (LsmSvgElement *element, LsmSvgRuler *ruler, 
LsmExtents *extents);
+       void            (*transformed_get_extents)      (LsmSvgElement *element, LsmSvgRuler *ruler, 
LsmExtents *extents);
 
        gboolean is_shape_element;
 };
@@ -71,10 +72,9 @@ GType lsm_svg_element_get_type (void);
 LsmSvgElementCategory  lsm_svg_element_get_category    (LsmSvgElement *element);
 
 void           lsm_svg_element_render                          (LsmSvgElement *element, LsmSvgView *view);
-void           lsm_svg_element_render                          (LsmSvgElement *element, LsmSvgView *view);
 void           lsm_svg_element_force_render                    (LsmSvgElement *element, LsmSvgView *view);
-void           lsm_svg_element_get_extents                     (LsmSvgElement *element, LsmSvgView *view, 
LsmExtents *extents);
-void           lsm_svg_element_transformed_get_extents         (LsmSvgElement *element, LsmSvgView *view, 
LsmExtents *extents);
+void           lsm_svg_element_get_extents                     (LsmSvgElement *element, LsmSvgRuler *ruler, 
LsmExtents *extents);
+void           lsm_svg_element_transformed_get_extents         (LsmSvgElement *element, LsmSvgRuler *ruler, 
LsmExtents *extents);
 
 G_END_DECLS
 
diff --git a/src/lsmsvgellipseelement.c b/src/lsmsvgellipseelement.c
index e8a1dab..67d0fc1 100644
--- a/src/lsmsvgellipseelement.c
+++ b/src/lsmsvgellipseelement.c
@@ -39,12 +39,12 @@ lsm_svg_ellipse_element_get_node_name (LsmDomNode *node)
 /* LsmSvgGraphic implementation */
 
 static void
-_normalize_length (LsmSvgEllipseElement *ellipse, LsmSvgView *view, double *cx, double *cy, double *rx, 
double *ry)
+_normalize_length (LsmSvgEllipseElement *ellipse, LsmSvgRuler *ruler, double *cx, double *cy, double *rx, 
double *ry)
 {
-       *cx = lsm_svg_view_normalize_length (view, &ellipse->cx.length, LSM_SVG_LENGTH_DIRECTION_HORIZONTAL);
-       *cy = lsm_svg_view_normalize_length (view, &ellipse->cy.length, LSM_SVG_LENGTH_DIRECTION_VERTICAL);
-       *rx = lsm_svg_view_normalize_length (view, &ellipse->rx.length, LSM_SVG_LENGTH_DIRECTION_HORIZONTAL);
-       *ry = lsm_svg_view_normalize_length (view, &ellipse->ry.length, LSM_SVG_LENGTH_DIRECTION_VERTICAL);
+       *cx = lsm_svg_ruler_normalize_length (ruler, &ellipse->cx.length, 
LSM_SVG_LENGTH_DIRECTION_HORIZONTAL);
+       *cy = lsm_svg_ruler_normalize_length (ruler, &ellipse->cy.length, LSM_SVG_LENGTH_DIRECTION_VERTICAL);
+       *rx = lsm_svg_ruler_normalize_length (ruler, &ellipse->rx.length, 
LSM_SVG_LENGTH_DIRECTION_HORIZONTAL);
+       *ry = lsm_svg_ruler_normalize_length (ruler, &ellipse->ry.length, LSM_SVG_LENGTH_DIRECTION_VERTICAL);
 }
 
 static void
@@ -53,18 +53,18 @@ lsm_svg_ellipse_element_render (LsmSvgElement *self, LsmSvgView *view)
        LsmSvgEllipseElement *ellipse = LSM_SVG_ELLIPSE_ELEMENT (self);
        double cx, cy, rx, ry;
 
-       _normalize_length (ellipse, view, &cx, &cy, &rx, &ry);
+       _normalize_length (ellipse, lsm_svg_view_get_ruler (view), &cx, &cy, &rx, &ry);
 
        lsm_svg_view_show_ellipse (view, cx, cy, rx, ry);
 }
 
 static void
-lsm_svg_ellipse_element_get_extents (LsmSvgElement *self, LsmSvgView *view, LsmExtents *extents)
+lsm_svg_ellipse_element_get_extents (LsmSvgElement *self, LsmSvgRuler *ruler, LsmExtents *extents)
 {
        LsmSvgEllipseElement *ellipse = LSM_SVG_ELLIPSE_ELEMENT (self);
        double cx, cy, rx, ry;
 
-       _normalize_length (ellipse, view, &cx, &cy, &rx, &ry);
+       _normalize_length (ellipse, ruler, &cx, &cy, &rx, &ry);
 
        extents->x1 = cx - rx;
        extents->y1 = cy - ry;
diff --git a/src/lsmsvgfilterelement.c b/src/lsmsvgfilterelement.c
index 9d10210..8f817de 100644
--- a/src/lsmsvgfilterelement.c
+++ b/src/lsmsvgfilterelement.c
@@ -126,42 +126,9 @@ lsm_svg_filter_element_enable_rendering (LsmSvgElement *element)
 }
 
 static void
-lsm_svg_filter_element_get_extents (LsmSvgElement *self, LsmSvgView *view, LsmExtents *extents)
+lsm_svg_filter_element_get_extents (LsmSvgElement *self, LsmSvgRuler *ruler, LsmExtents *extents)
 {
-       LsmSvgFilterElement *filter = LSM_SVG_FILTER_ELEMENT (self);
-       const LsmBox *source_extents;
-       double x, y;
-       double w, h;
-       gboolean is_object_bounding_box;
-
-       source_extents = lsm_svg_view_get_pattern_extents (view);
-
-       is_object_bounding_box = (filter->units.value == LSM_SVG_PATTERN_UNITS_OBJECT_BOUNDING_BOX);
-
-       if (is_object_bounding_box) {
-               LsmBox viewbox = {.x = 0.0, .y = .0, .width = 1.0, .height = 1.0};
-
-               lsm_svg_view_push_viewbox (view, &viewbox);
-       }
-
-       x = lsm_svg_view_normalize_length (view, &filter->x.length, LSM_SVG_LENGTH_DIRECTION_HORIZONTAL);
-       y = lsm_svg_view_normalize_length (view, &filter->y.length, LSM_SVG_LENGTH_DIRECTION_VERTICAL);
-       w  = lsm_svg_view_normalize_length (view, &filter->width.length, LSM_SVG_LENGTH_DIRECTION_HORIZONTAL);
-       h = lsm_svg_view_normalize_length (view, &filter->height.length, LSM_SVG_LENGTH_DIRECTION_VERTICAL);
-
-       if (is_object_bounding_box) {
-               lsm_svg_view_pop_viewbox (view);
-
-               x = x * source_extents->width + source_extents->x;
-               y = y * source_extents->height + source_extents->y;
-               w *= source_extents->width;
-               h *= source_extents->height;
-       }
-
-       extents->x1 = x;
-       extents->y1 = y;
-       extents->x2 = x + w;
-       extents->y2 = y + h;
+       g_assert_not_reached ();
 }
 
 /* LsmSvgGraphic implementation */
diff --git a/src/lsmsvgimageelement.c b/src/lsmsvgimageelement.c
index c78ed9d..973e078 100644
--- a/src/lsmsvgimageelement.c
+++ b/src/lsmsvgimageelement.c
@@ -132,7 +132,7 @@ lsm_svg_image_element_render (LsmSvgElement *self, LsmSvgView *view)
 }
 
 static void
-lsm_svg_image_element_get_extents (LsmSvgElement *self, LsmSvgView *view, LsmExtents *extents)
+lsm_svg_image_element_get_extents (LsmSvgElement *self, LsmSvgRuler *ruler, LsmExtents *extents)
 {
        LsmSvgImageElement *image;
 
@@ -140,10 +140,10 @@ lsm_svg_image_element_get_extents (LsmSvgElement *self, LsmSvgView *view, LsmExt
        double x, y;
        double w, h;
 
-       x = lsm_svg_view_normalize_length (view, &image->x.length, LSM_SVG_LENGTH_DIRECTION_HORIZONTAL);
-       y = lsm_svg_view_normalize_length (view, &image->y.length, LSM_SVG_LENGTH_DIRECTION_VERTICAL);
-       w = lsm_svg_view_normalize_length (view, &image->width.length, LSM_SVG_LENGTH_DIRECTION_HORIZONTAL);
-       h = lsm_svg_view_normalize_length (view, &image->height.length, LSM_SVG_LENGTH_DIRECTION_VERTICAL);
+       x = lsm_svg_ruler_normalize_length (ruler, &image->x.length, LSM_SVG_LENGTH_DIRECTION_HORIZONTAL);
+       y = lsm_svg_ruler_normalize_length (ruler, &image->y.length, LSM_SVG_LENGTH_DIRECTION_VERTICAL);
+       w = lsm_svg_ruler_normalize_length (ruler, &image->width.length, LSM_SVG_LENGTH_DIRECTION_HORIZONTAL);
+       h = lsm_svg_ruler_normalize_length (ruler, &image->height.length, LSM_SVG_LENGTH_DIRECTION_VERTICAL);
 
        extents->x1 = x;
        extents->y1 = y;
diff --git a/src/lsmsvglineelement.c b/src/lsmsvglineelement.c
index 4c2ab5c..f877b47 100644
--- a/src/lsmsvglineelement.c
+++ b/src/lsmsvglineelement.c
@@ -40,13 +40,12 @@ lsm_svg_line_element_get_node_name (LsmDomNode *node)
 /* LsmSvgGraphic implementation */
 
 static void
-_normalize_length (LsmSvgLineElement *line, LsmSvgView *view, double *x1, double *y1, double *x2, double *y2)
+_normalize_length (LsmSvgLineElement *line, LsmSvgRuler *ruler, double *x1, double *y1, double *x2, double 
*y2)
 {
-       *x1 = lsm_svg_view_normalize_length (view, &line->x1.length, LSM_SVG_LENGTH_DIRECTION_HORIZONTAL);
-       *y1 = lsm_svg_view_normalize_length (view, &line->y1.length, LSM_SVG_LENGTH_DIRECTION_VERTICAL);
-       *x2 = lsm_svg_view_normalize_length (view, &line->x2.length, LSM_SVG_LENGTH_DIRECTION_HORIZONTAL);
-       *y2 = lsm_svg_view_normalize_length (view, &line->y2.length, LSM_SVG_LENGTH_DIRECTION_VERTICAL);
-
+       *x1 = lsm_svg_ruler_normalize_length (ruler, &line->x1.length, LSM_SVG_LENGTH_DIRECTION_HORIZONTAL);
+       *y1 = lsm_svg_ruler_normalize_length (ruler, &line->y1.length, LSM_SVG_LENGTH_DIRECTION_VERTICAL);
+       *x2 = lsm_svg_ruler_normalize_length (ruler, &line->x2.length, LSM_SVG_LENGTH_DIRECTION_HORIZONTAL);
+       *y2 = lsm_svg_ruler_normalize_length (ruler, &line->y2.length, LSM_SVG_LENGTH_DIRECTION_VERTICAL);
 }
 
 static void
@@ -55,7 +54,7 @@ lsm_svg_line_element_render (LsmSvgElement *self, LsmSvgView *view)
        LsmSvgLineElement *line = LSM_SVG_LINE_ELEMENT (self);
        double x1, y1, x2, y2;
 
-       _normalize_length (line, view, &x1, &y1, &x2, &y2);
+       _normalize_length (line, lsm_svg_view_get_ruler (view), &x1, &y1, &x2, &y2);
 
        lsm_debug_render ("[LsmSvgLineElement::render] %g, %g, %g, %g", x1, y1, x2, y2);
 
@@ -63,12 +62,12 @@ lsm_svg_line_element_render (LsmSvgElement *self, LsmSvgView *view)
 }
 
 static void
-lsm_svg_line_element_get_extents (LsmSvgElement *self, LsmSvgView *view, LsmExtents *extents)
+lsm_svg_line_element_get_extents (LsmSvgElement *self, LsmSvgRuler *ruler, LsmExtents *extents)
 {
        LsmSvgLineElement *line = LSM_SVG_LINE_ELEMENT (self);
        double x1, y1, x2, y2;
 
-       _normalize_length (line, view, &x1, &y1, &x2, &y2);
+       _normalize_length (line, ruler, &x1, &y1, &x2, &y2);
 
        extents->x1 = MIN (x1, x2);
        extents->y1 = MIN (y1, y2);
diff --git a/src/lsmsvgpathelement.c b/src/lsmsvgpathelement.c
index 3f59a88..62d6f95 100644
--- a/src/lsmsvgpathelement.c
+++ b/src/lsmsvgpathelement.c
@@ -48,11 +48,12 @@ lsm_svg_path_element_render (LsmSvgElement *self, LsmSvgView *view)
 }
 
 static void
-lsm_svg_path_element_get_extents (LsmSvgElement *self, LsmSvgView *view, LsmExtents *extents)
+lsm_svg_path_element_get_extents (LsmSvgElement *self, LsmSvgRuler *ruler, LsmExtents *extents)
 {
        LsmSvgPathElement *path = LSM_SVG_PATH_ELEMENT (self);
 
-       lsm_svg_view_path_extents (view, path->d.value, extents);
+       /* FIXME */
+/*        lsm_svg_view_path_extents (view, path->d.value, extents);*/
 }
 
 /* LsmSvgPathElement implementation */
diff --git a/src/lsmsvgpolygonelement.c b/src/lsmsvgpolygonelement.c
index 533a7bd..76b752e 100644
--- a/src/lsmsvgpolygonelement.c
+++ b/src/lsmsvgpolygonelement.c
@@ -47,7 +47,7 @@ lsm_svg_polygon_element_render (LsmSvgElement *self, LsmSvgView *view)
 }
 
 static void
-lsm_svg_polygon_element_get_extents (LsmSvgElement *self, LsmSvgView *view, LsmExtents *extents)
+lsm_svg_polygon_element_get_extents (LsmSvgElement *self, LsmSvgRuler *ruler, LsmExtents *extents)
 {
        LsmSvgPolygonElement *polygon = LSM_SVG_POLYGON_ELEMENT (self);
 
diff --git a/src/lsmsvgrectelement.c b/src/lsmsvgrectelement.c
index e5446f6..3e7dc46 100644
--- a/src/lsmsvgrectelement.c
+++ b/src/lsmsvgrectelement.c
@@ -66,16 +66,16 @@ lsm_svg_rect_element_render (LsmSvgElement *self, LsmSvgView *view)
 }
 
 static void
-lsm_svg_rect_element_get_extents (LsmSvgElement *self, LsmSvgView *view, LsmExtents *extents)
+lsm_svg_rect_element_get_extents (LsmSvgElement *self, LsmSvgRuler *ruler, LsmExtents *extents)
 {
        LsmSvgRectElement *rect = LSM_SVG_RECT_ELEMENT (self);
        double x, y;
        double w, h;
 
-       x = lsm_svg_view_normalize_length (view, &rect->x.length, LSM_SVG_LENGTH_DIRECTION_HORIZONTAL);
-       y = lsm_svg_view_normalize_length (view, &rect->y.length, LSM_SVG_LENGTH_DIRECTION_VERTICAL);
-       w = lsm_svg_view_normalize_length (view, &rect->width.length, LSM_SVG_LENGTH_DIRECTION_HORIZONTAL);
-       h = lsm_svg_view_normalize_length (view, &rect->height.length, LSM_SVG_LENGTH_DIRECTION_VERTICAL);
+       x = lsm_svg_ruler_normalize_length (ruler, &rect->x.length, LSM_SVG_LENGTH_DIRECTION_HORIZONTAL);
+       y = lsm_svg_ruler_normalize_length (ruler, &rect->y.length, LSM_SVG_LENGTH_DIRECTION_VERTICAL);
+       w = lsm_svg_ruler_normalize_length (ruler, &rect->width.length, LSM_SVG_LENGTH_DIRECTION_HORIZONTAL);
+       h = lsm_svg_ruler_normalize_length (ruler, &rect->height.length, LSM_SVG_LENGTH_DIRECTION_VERTICAL);
 
        extents->x1 = x;
        extents->y1 = y;
diff --git a/src/lsmsvgsvgelement.c b/src/lsmsvgsvgelement.c
index 257c79d..2477bd9 100644
--- a/src/lsmsvgsvgelement.c
+++ b/src/lsmsvgsvgelement.c
@@ -111,7 +111,7 @@ lsm_svg_svg_element_measure (LsmSvgSvgElement *self, LsmSvgView *view, LsmDomVie
                                *y = 0.0;
                        break;
                case LSM_DOM_VIEW_MEASUREMENT_EXTENTS:
-                       lsm_svg_element_get_extents (LSM_SVG_ELEMENT (self), view, &extents);
+                       lsm_svg_element_get_extents (LSM_SVG_ELEMENT (self), lsm_svg_view_get_ruler (view), 
&extents);
                        break;
        }
 
diff --git a/src/lsmsvgtextelement.c b/src/lsmsvgtextelement.c
index fd21f22..d34c6da 100644
--- a/src/lsmsvgtextelement.c
+++ b/src/lsmsvgtextelement.c
@@ -96,7 +96,7 @@ lsm_svg_text_element_render (LsmSvgElement *self, LsmSvgView *view)
 }
 
 static void
-lsm_svg_text_element_get_extents (LsmSvgElement *self, LsmSvgView *view, LsmExtents *extents)
+lsm_svg_text_element_get_extents (LsmSvgElement *self, LsmSvgRuler *ruler, LsmExtents *extents)
 {
 /*        LsmSvgTextElement *text = LSM_SVG_TEXT_ELEMENT (self);*/
        LsmDomNode *iter;
@@ -112,7 +112,7 @@ lsm_svg_text_element_get_extents (LsmSvgElement *self, LsmSvgView *view, LsmExte
 /*        x = lsm_svg_view_normalize_length (view, &text->x.length, LSM_SVG_LENGTH_DIRECTION_HORIZONTAL);*/
 /*        y = lsm_svg_view_normalize_length (view, &text->y.length, LSM_SVG_LENGTH_DIRECTION_VERTICAL);*/
 
-       lsm_svg_view_text_extents (view, g_strstrip (string->str), 0, 0, 0, NULL, 0, NULL, extents);
+/*        lsm_svg_view_text_extents (view, g_strstrip (string->str), 0, 0, 0, NULL, 0, NULL, extents);*/
 
        g_string_free (string, TRUE);
 }
diff --git a/src/lsmsvgtransformable.c b/src/lsmsvgtransformable.c
index b435d17..20f6b97 100644
--- a/src/lsmsvgtransformable.c
+++ b/src/lsmsvgtransformable.c
@@ -55,12 +55,12 @@ lsm_svg_transformable_transformed_render (LsmSvgElement *element, LsmSvgView *vi
 }
 
 static void
-lsm_svg_transformable_transformed_get_extents (LsmSvgElement *element, LsmSvgView *view, LsmExtents *extents)
+lsm_svg_transformable_transformed_get_extents (LsmSvgElement *element, LsmSvgRuler *ruler, LsmExtents 
*extents)
 {
        LsmSvgTransformable *transformable = LSM_SVG_TRANSFORMABLE (element);
        LsmSvgElementClass *element_class = LSM_SVG_ELEMENT_GET_CLASS (element);
 
-       element_class->get_extents (element, view, extents);
+       element_class->get_extents (element, ruler, extents);
 
        if (!lsm_svg_matrix_is_identity (&transformable->transform.matrix))
                lsm_svg_matrix_transform_bounding_box (&transformable->transform.matrix,
diff --git a/src/lsmsvguseelement.c b/src/lsmsvguseelement.c
index bb0406f..dcd0cff 100644
--- a/src/lsmsvguseelement.c
+++ b/src/lsmsvguseelement.c
@@ -111,7 +111,7 @@ lsm_svg_use_element_render (LsmSvgElement *self, LsmSvgView *view)
 }
 
 static void
-lsm_svg_use_element_get_extents (LsmSvgElement *self, LsmSvgView *view, LsmExtents *extents)
+lsm_svg_use_element_get_extents (LsmSvgElement *self, LsmSvgRuler *ruler, LsmExtents *extents)
 {
        LsmSvgUseElement *use_element = LSM_SVG_USE_ELEMENT (self);
        LsmDomElement *element;
@@ -138,20 +138,20 @@ lsm_svg_use_element_get_extents (LsmSvgElement *self, LsmSvgView *view, LsmExten
 
        use_element->flags |= LSM_SVG_USE_ELEMENT_FLAGS_IN_USE_FOR_GET_EXTENTS;
 
-       x = lsm_svg_view_normalize_length (view, &use_element->x.length,
+       x = lsm_svg_ruler_normalize_length (ruler, &use_element->x.length,
                                           LSM_SVG_LENGTH_DIRECTION_HORIZONTAL);
-       y = lsm_svg_view_normalize_length (view, &use_element->y.length,
+       y = lsm_svg_ruler_normalize_length (ruler, &use_element->y.length,
                                           LSM_SVG_LENGTH_DIRECTION_VERTICAL);
 
-       lsm_svg_element_transformed_get_extents (LSM_SVG_ELEMENT (element), view, extents);
+       lsm_svg_element_transformed_get_extents (LSM_SVG_ELEMENT (element), ruler, extents);
 
        lsm_svg_matrix_init_translate (&matrix, x, y);
 
-       if (lsm_svg_view_push_matrix (view, &matrix))
+       if (lsm_svg_ruler_push_matrix (ruler, &matrix))
                lsm_svg_matrix_transform_bounding_box (&matrix,
                                                       &extents->x1, &extents->y1,
                                                       &extents->x2, &extents->y2);
-       lsm_svg_view_pop_matrix (view);
+       lsm_svg_ruler_pop_matrix (ruler);
 
        use_element->flags &= ~LSM_SVG_USE_ELEMENT_FLAGS_IN_USE_FOR_GET_EXTENTS;
 }
diff --git a/src/lsmsvgview.c b/src/lsmsvgview.c
index 4777310..db8631b 100644
--- a/src/lsmsvgview.c
+++ b/src/lsmsvgview.c
@@ -1686,7 +1686,7 @@ lsm_svg_view_push_clip (LsmSvgView *view)
        g_return_if_fail (LSM_IS_SVG_VIEW (view));
        g_return_if_fail (!view->is_clipping);
 
-       lsm_svg_element_get_extents (view->element_stack->data, view, &extents);
+       lsm_svg_element_get_extents (view->element_stack->data, view->ruler, &extents);
 
        style = lsm_svg_ruler_get_style (view->ruler);
        url = style->clip_path->value;
@@ -1751,7 +1751,7 @@ lsm_svg_view_pop_mask (LsmSvgView *view)
                LsmBox mask_extents;
                cairo_t *cairo;
 
-               lsm_svg_element_get_extents (view->element_stack->data, view, &extents);
+               lsm_svg_element_get_extents (view->element_stack->data, view->ruler, &extents);
 
                mask_extents.x = extents.x1;
                mask_extents.y = extents.y1;
@@ -1827,7 +1827,7 @@ lsm_svg_view_push_filter (LsmSvgView *view)
        g_return_if_fail (view->element_stack != NULL);
 
        style = lsm_svg_ruler_get_style (view->ruler);
-       lsm_svg_element_get_extents (view->element_stack->data, view, &extents);
+       lsm_svg_element_get_extents (view->element_stack->data, view->ruler, &extents);
 
        object_extents.x = extents.x1;
        object_extents.y = extents.y1;
@@ -2625,6 +2625,14 @@ lsm_svg_view_get_clip_extents (LsmSvgView *view)
        return &view->clip_extents;
 }
 
+LsmSvgRuler *
+lsm_svg_view_get_ruler (LsmSvgView *view)
+{
+       g_return_val_if_fail (LSM_IS_SVG_VIEW (view), NULL);
+
+       return view->ruler;
+}
+
 static void
 lsm_svg_view_measure (LsmDomView *view, LsmDomViewMeasurement measurement,
                      double *x, double *y, double *width, double *height, double *baseline)
diff --git a/src/lsmsvgview.h b/src/lsmsvgview.h
index 87fa77f..9a27bf0 100644
--- a/src/lsmsvgview.h
+++ b/src/lsmsvgview.h
@@ -90,6 +90,8 @@ GType lsm_svg_view_get_type (void);
 
 LsmSvgView *   lsm_svg_view_new                        (LsmSvgDocument *document);
 
+LsmSvgRuler *  lsm_svg_view_get_ruler                  (LsmSvgView *view);
+
 double                 lsm_svg_view_normalize_length           (LsmSvgView *view, const LsmSvgLength *length,
                                                         LsmSvgLengthDirection direction);
 double *       lsm_svg_view_normalize_length_list      (LsmSvgView *view, const LsmSvgLengthList *list, 
LsmSvgLengthDirection direction,


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]