[lasem] svg_view: store intermediate filter surfaces.
- From: Emmanuel Pacaud <emmanuel src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [lasem] svg_view: store intermediate filter surfaces.
- Date: Sun, 29 Aug 2010 07:55:56 +0000 (UTC)
commit 94d0d03b45e00ed62afb04618db51718360d6a65
Author: Emmanuel Pacaud <emmanuel gnome org>
Date: Sun Aug 29 09:50:41 2010 +0200
svg_view: store intermediate filter surfaces.
src/lsmsvgview.c | 26 +++++++++++++++++++++++++-
src/lsmsvgview.h | 5 +++++
2 files changed, 30 insertions(+), 1 deletions(-)
---
diff --git a/src/lsmsvgview.c b/src/lsmsvgview.c
index 9d5b29f..fcd31f1 100644
--- a/src/lsmsvgview.c
+++ b/src/lsmsvgview.c
@@ -31,6 +31,7 @@
#include <lsmsvgmarkerelement.h>
#include <lsmsvgclippathelement.h>
#include <lsmsvgmaskelement.h>
+#include <lsmcairo.h>
#include <lsmstr.h>
#include <gdk/gdk.h>
#include <glib/gprintf.h>
@@ -1867,7 +1868,10 @@ void
lsm_svg_view_pop_filter (LsmSvgView *view)
{
LsmSvgElement *filter_element;
+ LsmFilterSurface *filter_surface;
+ cairo_surface_t *surface;
cairo_t *cairo;
+ GSList *iter;
g_return_if_fail (LSM_IS_SVG_VIEW (view));
@@ -1876,6 +1880,13 @@ lsm_svg_view_pop_filter (LsmSvgView *view)
cairo = view->pattern_data->old_cairo;
+ view->filter_surfaces = NULL;
+
+ cairo_pattern_get_surface (view->pattern_data->pattern, &surface);
+ filter_surface = lsm_filter_surface_new_with_content ("SourceGraphic", 0, 0, surface);
+
+ view->filter_surfaces = g_slist_prepend (view->filter_surfaces, filter_surface);
+
#if 1
{
char *filename;
@@ -1887,15 +1898,28 @@ lsm_svg_view_pop_filter (LsmSvgView *view)
}
#endif
-#if 0
+#if 1
cairo_pattern_set_extend (view->pattern_data->pattern, CAIRO_EXTEND_NONE);
cairo_set_source (cairo, view->pattern_data->pattern);
cairo_paint (cairo);
#endif
+
+ for (iter = view->filter_surfaces; iter != NULL; iter = iter->next)
+ lsm_filter_surface_free (iter->data);
+ g_slist_free (view->filter_surfaces);
+ view->filter_surfaces = NULL;
+
_end_pattern (view);
}
void
+lsm_svg_view_apply_gaussian_blur (LsmSvgView *view, const char *input, const char *output,
+ double x, double y, double w, double h,
+ double std_x, double std_y)
+{
+}
+
+void
lsm_svg_view_push_element (LsmSvgView *view, const LsmSvgElement *element)
{
g_return_if_fail (LSM_IS_SVG_VIEW (view));
diff --git a/src/lsmsvgview.h b/src/lsmsvgview.h
index 390d2c3..85bffdc 100644
--- a/src/lsmsvgview.h
+++ b/src/lsmsvgview.h
@@ -71,6 +71,8 @@ struct _LsmSvgView {
LsmBox clip_extents;
double last_stop_offset;
+
+ GSList *filter_surfaces;
};
struct _LsmSvgViewClass {
@@ -141,6 +143,9 @@ void lsm_svg_view_pop_style (LsmSvgView *view);
LsmSvgStyle * lsm_svg_view_get_current_style (LsmSvgView *view);
+void lsm_svg_view_apply_gaussian_blur (LsmSvgView *view, const char *input, const char *output,
+ double x, double y, double w, double h,
+ double std_x, double std_y);
G_END_DECLS
#endif
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]