[lasem/wip/emmanuel/extents] wip: ruler use
- From: Emmanuel Pacaud <emmanuel src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [lasem/wip/emmanuel/extents] wip: ruler use
- Date: Wed, 13 Jul 2016 14:03:55 +0000 (UTC)
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]