[lasem] svg_view: don't store pattern units in pattern data stack.
- From: Emmanuel Pacaud <emmanuel src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [lasem] svg_view: don't store pattern units in pattern data stack.
- Date: Sat, 28 Aug 2010 08:57:54 +0000 (UTC)
commit d0d7200b2bcda73f784588d93920c58dc6a7613a
Author: Emmanuel Pacaud <emmanuel gnome org>
Date: Sat Aug 28 10:57:11 2010 +0200
svg_view: don't store pattern units in pattern data stack.
src/lsmsvgview.c | 48 ++++++++++++++++++------------------------------
1 files changed, 18 insertions(+), 30 deletions(-)
---
diff --git a/src/lsmsvgview.c b/src/lsmsvgview.c
index 784da8f..307eb8f 100644
--- a/src/lsmsvgview.c
+++ b/src/lsmsvgview.c
@@ -62,8 +62,6 @@ struct _LsmSvgViewPatternData {
LsmBox extents;
- LsmSvgPatternUnits units;
-
double opacity;
};
@@ -94,7 +92,6 @@ _start_pattern (LsmSvgView *view, const LsmBox *extents, double opacity)
view->pattern_data = g_new (LsmSvgViewPatternData, 1);
view->pattern_data->old_cairo = view->dom_view.cairo;
view->pattern_data->pattern = NULL;
- view->pattern_data->units = LSM_SVG_PATTERN_UNITS_USER_SPACE_ON_USE;
view->pattern_data->extents = *extents;
view->pattern_data->opacity = opacity;
@@ -206,8 +203,6 @@ lsm_svg_view_set_gradient_properties (LsmSvgView *view,
g_return_if_fail (view->pattern_data != NULL);
g_return_if_fail (view->pattern_data->pattern != NULL);
- view->pattern_data->units = units;
-
if (matrix != NULL) {
cairo_matrix_init (&view->pattern_data->matrix,
matrix->a, matrix->b,
@@ -228,6 +223,23 @@ lsm_svg_view_set_gradient_properties (LsmSvgView *view,
cairo_pattern_set_extend (view->pattern_data->pattern, CAIRO_EXTEND_PAD);
}
+ if (units == LSM_SVG_PATTERN_UNITS_OBJECT_BOUNDING_BOX &&
+ view->pattern_data->extents.width > 0.0 &&
+ view->pattern_data->extents.height > 0.0) {
+ cairo_matrix_t matrix;
+
+ matrix = view->pattern_data->matrix;
+
+ cairo_matrix_scale (&matrix,
+ 1.0 / view->pattern_data->extents.width,
+ 1.0 / view->pattern_data->extents.height);
+ cairo_matrix_translate (&matrix,
+ -view->pattern_data->extents.x,
+ -view->pattern_data->extents.y);
+
+ cairo_pattern_set_matrix (view->pattern_data->pattern, &matrix);
+ } else
+ cairo_pattern_set_matrix (view->pattern_data->pattern, &view->pattern_data->matrix);
}
gboolean
@@ -303,8 +315,6 @@ lsm_svg_view_create_surface_pattern (LsmSvgView *view,
_set_pattern (view, pattern);
- view->pattern_data->units = units;
-
if (matrix != NULL) {
cairo_matrix_init (&view->pattern_data->matrix,
matrix->a, matrix->b,
@@ -317,6 +327,7 @@ lsm_svg_view_create_surface_pattern (LsmSvgView *view,
cairo_matrix_scale (&view->pattern_data->matrix, 1.0 / x_scale, 1.0 / y_scale);
}
+ cairo_pattern_set_matrix (view->pattern_data->pattern, &view->pattern_data->matrix);
cairo_pattern_set_extend (view->pattern_data->pattern, CAIRO_EXTEND_REPEAT);
return TRUE;
@@ -800,29 +811,6 @@ _paint_url (LsmSvgView *view,
}
#endif
- if ((LSM_IS_SVG_RADIAL_GRADIENT_ELEMENT (element) || LSM_IS_SVG_LINEAR_GRADIENT_ELEMENT (element)) &&
- view->pattern_data->units == LSM_SVG_PATTERN_UNITS_OBJECT_BOUNDING_BOX) {
- cairo_matrix_t matrix;
-
- if (view->pattern_data->extents.width <= 0.0 ||
- view->pattern_data->extents.height <= 0.0) {
- _end_pattern (view);
- return;
- }
-
- matrix = view->pattern_data->matrix;
-
- cairo_matrix_scale (&matrix,
- 1.0 / view->pattern_data->extents.width,
- 1.0 / view->pattern_data->extents.height);
- cairo_matrix_translate (&matrix,
- -view->pattern_data->extents.x,
- -view->pattern_data->extents.y);
-
- cairo_pattern_set_matrix (view->pattern_data->pattern, &matrix);
- } else
- cairo_pattern_set_matrix (view->pattern_data->pattern, &view->pattern_data->matrix);
-
cairo_set_source (cairo, view->pattern_data->pattern);
} else
cairo_set_source_rgb (cairo, 0.0, 0.0, 0.0);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]