summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKrzysztof Kosi??ski <tweenk.pl@gmail.com>2010-07-14 02:32:10 +0000
committerKrzysztof Kosiński <tweenk.pl@gmail.com>2010-07-14 02:32:10 +0000
commitbb8404b19557519bd828113fa93604b10e9e7fe3 (patch)
tree01fd9c531829445801184b172fd7636cde1ab86e
parentGaussian blur (diff)
downloadinkscape-bb8404b19557519bd828113fa93604b10e9e7fe3.tar.gz
inkscape-bb8404b19557519bd828113fa93604b10e9e7fe3.zip
Merge redundant *-fns.h into respective filter headers.
Move gaussian blur to filters directory. Blend filter effect. (bzr r9508.1.16)
-rw-r--r--src/Makefile_insert3
-rw-r--r--src/desktop-style.cpp2
-rw-r--r--src/display/cairo-utils.cpp20
-rw-r--r--src/display/nr-arena-group.cpp2
-rw-r--r--src/display/nr-arena-image.cpp4
-rw-r--r--src/display/nr-arena-item.h31
-rw-r--r--src/display/nr-filter-blend.cpp253
-rw-r--r--src/display/nr-filter-blend.h2
-rw-r--r--src/display/nr-filter-gaussian.cpp429
-rw-r--r--src/display/nr-filter-gaussian.h3
-rw-r--r--src/display/nr-filter-primitive.h16
-rw-r--r--src/display/nr-filter-slot.cpp39
-rw-r--r--src/filter-chemistry.cpp2
-rw-r--r--src/filter-chemistry.h11
-rw-r--r--src/filters/Makefile_insert91
-rw-r--r--src/filters/blend-fns.h38
-rw-r--r--src/filters/blend.cpp3
-rw-r--r--src/filters/blend.h23
-rw-r--r--src/filters/colormatrix-fns.h38
-rw-r--r--src/filters/colormatrix.cpp1
-rw-r--r--src/filters/colormatrix.h26
-rw-r--r--src/filters/componenttransfer-fns.h38
-rw-r--r--src/filters/componenttransfer.cpp5
-rw-r--r--src/filters/componenttransfer.h31
-rw-r--r--src/filters/composite-fns.h38
-rw-r--r--src/filters/composite.cpp4
-rw-r--r--src/filters/composite.h23
-rw-r--r--src/filters/convolvematrix-fns.h38
-rw-r--r--src/filters/convolvematrix.cpp6
-rw-r--r--src/filters/convolvematrix.h25
-rw-r--r--src/filters/diffuselighting-fns.h38
-rw-r--r--src/filters/diffuselighting.cpp3
-rw-r--r--src/filters/diffuselighting.h43
-rw-r--r--src/filters/displacementmap-fns.h38
-rw-r--r--src/filters/displacementmap.cpp6
-rw-r--r--src/filters/displacementmap.h23
-rw-r--r--src/filters/distantlight.cpp6
-rw-r--r--src/filters/flood-fns.h38
-rw-r--r--src/filters/flood.cpp5
-rw-r--r--src/filters/flood.h25
-rw-r--r--src/filters/gaussian-blur.cpp (renamed from src/sp-gaussian-blur.cpp)2
-rw-r--r--src/filters/gaussian-blur.h (renamed from src/sp-gaussian-blur-fns.h)41
-rw-r--r--src/filters/image-fns.h38
-rw-r--r--src/filters/image.h25
-rw-r--r--src/filters/merge-fns.h38
-rw-r--r--src/filters/merge.cpp1
-rw-r--r--src/filters/merge.h21
-rw-r--r--src/filters/mergenode.cpp5
-rw-r--r--src/filters/morphology-fns.h38
-rw-r--r--src/filters/morphology.cpp1
-rw-r--r--src/filters/morphology.h22
-rw-r--r--src/filters/offset-fns.h38
-rw-r--r--src/filters/offset.cpp3
-rw-r--r--src/filters/offset.h24
-rw-r--r--src/filters/pointlight.cpp6
-rw-r--r--src/filters/specularlighting-fns.h38
-rw-r--r--src/filters/specularlighting.cpp1
-rw-r--r--src/filters/specularlighting.h30
-rw-r--r--src/filters/spotlight.cpp6
-rw-r--r--src/filters/tile-fns.h38
-rw-r--r--src/filters/tile.cpp5
-rw-r--r--src/filters/tile.h25
-rw-r--r--src/filters/turbulence-fns.h38
-rw-r--r--src/filters/turbulence.h22
-rw-r--r--src/preferences-skeleton.h1
-rw-r--r--src/sp-filter-fns.h53
-rw-r--r--src/sp-filter-primitive.h9
-rw-r--r--src/sp-filter-reference.cpp1
-rw-r--r--src/sp-filter-reference.h5
-rw-r--r--src/sp-filter.cpp1
-rw-r--r--src/sp-filter.h67
-rw-r--r--src/sp-gaussian-blur.h45
-rw-r--r--src/sp-object-repr.cpp2
-rw-r--r--src/spray-context.cpp6
-rw-r--r--src/tweak-context.cpp3
-rw-r--r--src/ui/dialog/filter-effects-dialog.cpp2
76 files changed, 705 insertions, 1466 deletions
diff --git a/src/Makefile_insert b/src/Makefile_insert
index 36c9de34f..2298ddb42 100644
--- a/src/Makefile_insert
+++ b/src/Makefile_insert
@@ -152,7 +152,6 @@ ink_common_sources += \
sp-desc.cpp sp-desc.h \
sp-ellipse.cpp sp-ellipse.h \
sp-filter.cpp sp-filter.h number-opt-number.h \
- sp-filter-fns.h \
sp-filter-primitive.cpp sp-filter-primitive.h \
sp-filter-reference.cpp sp-filter-reference.h \
sp-filter-units.h \
@@ -161,8 +160,6 @@ ink_common_sources += \
sp-flowtext.h sp-flowtext.cpp \
sp-font.cpp sp-font.h \
sp-font-face.cpp sp-font-face.h \
- sp-gaussian-blur.cpp sp-gaussian-blur.h \
- sp-gaussian-blur-fns.h \
sp-glyph.cpp sp-glyph.h \
sp-glyph-kerning.cpp sp-glyph-kerning.h \
sp-gradient.cpp sp-gradient.h \
diff --git a/src/desktop-style.cpp b/src/desktop-style.cpp
index 26f29d172..1b277a381 100644
--- a/src/desktop-style.cpp
+++ b/src/desktop-style.cpp
@@ -28,7 +28,7 @@
#include "filters/blend.h"
#include "sp-filter.h"
#include "sp-filter-reference.h"
-#include "sp-gaussian-blur.h"
+#include "filters/gaussian-blur.h"
#include "sp-flowtext.h"
#include "sp-flowregion.h"
#include "sp-flowdiv.h"
diff --git a/src/display/cairo-utils.cpp b/src/display/cairo-utils.cpp
index a063a62bb..36202f42e 100644
--- a/src/display/cairo-utils.cpp
+++ b/src/display/cairo-utils.cpp
@@ -337,11 +337,21 @@ ink_cairo_surface_copy(cairo_surface_t *s)
{
cairo_surface_t *ns = ink_cairo_surface_create_identical(s);
- cairo_t *ct = cairo_create(ns);
- cairo_set_source_surface(ct, s, 0, 0);
- cairo_set_operator(ct, CAIRO_OPERATOR_SOURCE);
- cairo_paint(ct);
- cairo_destroy(ct);
+ if (cairo_surface_get_type(s) == CAIRO_SURFACE_TYPE_IMAGE) {
+ // use memory copy instead of using a Cairo context
+ cairo_surface_flush(s);
+ int stride = cairo_image_surface_get_stride(s);
+ int h = cairo_image_surface_get_height(s);
+ memcpy(cairo_image_surface_get_data(ns), cairo_image_surface_get_data(s), stride * h);
+ cairo_surface_mark_dirty(ns);
+ } else {
+ // generic implementation
+ cairo_t *ct = cairo_create(ns);
+ cairo_set_source_surface(ct, s, 0, 0);
+ cairo_set_operator(ct, CAIRO_OPERATOR_SOURCE);
+ cairo_paint(ct);
+ cairo_destroy(ct);
+ }
return ns;
}
diff --git a/src/display/nr-arena-group.cpp b/src/display/nr-arena-group.cpp
index 0fa5f332a..3bc78ea56 100644
--- a/src/display/nr-arena-group.cpp
+++ b/src/display/nr-arena-group.cpp
@@ -14,12 +14,10 @@
#include "display/nr-arena-group.h"
#include "display/nr-filter.h"
-#include "display/nr-filter-gaussian.h"
#include "display/nr-filter-types.h"
#include "style.h"
#include "sp-filter.h"
#include "sp-filter-reference.h"
-#include "sp-gaussian-blur.h"
#include "filters/blend.h"
#include "display/nr-filter-blend.h"
#include "helper/geom.h"
diff --git a/src/display/nr-arena-image.cpp b/src/display/nr-arena-image.cpp
index 325cff65a..422b691b7 100644
--- a/src/display/nr-arena-image.cpp
+++ b/src/display/nr-arena-image.cpp
@@ -21,12 +21,8 @@
#include "display/cairo-utils.h"
#include "display/nr-arena.h"
#include "display/nr-filter.h"
-#include "display/nr-filter-gaussian.h"
#include "sp-filter.h"
#include "sp-filter-reference.h"
-#include "sp-gaussian-blur.h"
-#include "filters/blend.h"
-#include "display/nr-filter-blend.h"
int nr_arena_image_x_sample = 1;
int nr_arena_image_y_sample = 1;
diff --git a/src/display/nr-arena-item.h b/src/display/nr-arena-item.h
index 468d352bc..447307535 100644
--- a/src/display/nr-arena-item.h
+++ b/src/display/nr-arena-item.h
@@ -1,6 +1,3 @@
-#ifndef __NR_ARENA_ITEM_H__
-#define __NR_ARENA_ITEM_H__
-
/*
* RGBA display list system for inkscape
*
@@ -13,6 +10,22 @@
* Released under GNU GPL, read the file 'COPYING' for more information
*/
+#ifndef SEEN_DISPLAY_NR_ARENA_ITEM_H
+#define SEEN_DISPLAY_NR_ARENA_ITEM_H
+
+#include <cairo.h>
+#include <2geom/matrix.h>
+#include <libnr/nr-rect-l.h>
+#include <libnr/nr-pixblock.h>
+#include <libnr/nr-object.h>
+#include "gc-soft-ptr.h"
+#include "nr-arena-forward.h"
+
+namespace Inkscape {
+namespace Filters {
+class Filter;
+} }
+
#define NR_TYPE_ARENA_ITEM (nr_arena_item_get_type ())
#define NR_ARENA_ITEM(o) (NR_CHECK_INSTANCE_CAST ((o), NR_TYPE_ARENA_ITEM, NRArenaItem))
#define NR_IS_ARENA_ITEM(o) (NR_CHECK_INSTANCE_TYPE ((o), NR_TYPE_ARENA_ITEM))
@@ -52,15 +65,6 @@
#define NR_ARENA_ITEM_RENDER_NO_CACHE (1 << 0)
-#include <2geom/matrix.h>
-#include <libnr/nr-rect-l.h>
-#include <libnr/nr-pixblock.h>
-#include <libnr/nr-object.h>
-#include "gc-soft-ptr.h"
-#include "nr-arena-forward.h"
-#include "display/nr-filter.h"
-#include <cairo.h>
-
struct NRGC {
NRGC(NRGC const *p) : parent(p) {}
NRGC const *parent;
@@ -181,8 +185,7 @@ NRArenaItem *nr_arena_item_detach (NRArenaItem *parent, NRArenaItem *child);
#define NR_ARENA_ITEM_SET_KEY(i,k) (((NRArenaItem *) (i))->key = (k))
#define NR_ARENA_ITEM_GET_KEY(i) (((NRArenaItem *) (i))->key)
-
-#endif /* !__NR_ARENA_ITEM_H__ */
+#endif /* !SEEN_DISPLAY_NR_ARENA_ITEM_H */
/*
Local Variables:
diff --git a/src/display/nr-filter-blend.cpp b/src/display/nr-filter-blend.cpp
index 4645d9bc0..4ce37ae3b 100644
--- a/src/display/nr-filter-blend.cpp
+++ b/src/display/nr-filter-blend.cpp
@@ -15,6 +15,11 @@
* Released under GNU GPL, read the file 'COPYING' for more information
*/
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include "display/cairo-utils.h"
#include "display/nr-filter-blend.h"
#include "display/nr-filter-pixops.h"
#include "display/nr-filter-primitive.h"
@@ -24,6 +29,7 @@
#include "libnr/nr-pixblock.h"
#include "libnr/nr-blit.h"
#include "libnr/nr-pixops.h"
+#include "preferences.h"
namespace Inkscape {
namespace Filters {
@@ -125,6 +131,247 @@ FilterPrimitive * FilterBlend::create() {
FilterBlend::~FilterBlend()
{}
+#define EXTRACT_ARGB32(px,a,r,g,b) \
+ guint32 a, r, g, b; \
+ a = (px & 0xff000000) >> 24; \
+ r = (px & 0x00ff0000) >> 16; \
+ g = (px & 0x0000ff00) >> 8; \
+ b = (px & 0x000000ff);
+
+#define ASSEMBLE_ARGB32(px,a,r,g,b) \
+ guint32 px = (a << 24) | (r << 16) | (g << 8) | b;
+
+// cr = (1-qa)*cb + (1-qb)*ca + ca*cb
+struct BlendMultiply {
+ void operator()(guint32 in1, guint32 in2, guint32 *out)
+ {
+ EXTRACT_ARGB32(in1, aa, ra, ga, ba)
+ EXTRACT_ARGB32(in2, ab, rb, gb, bb)
+
+ guint32 ao = 255*255 - (255-aa)*(255-ab); ao = (ao + 127) / 255;
+ guint32 ro = (255-aa)*rb + (255-ab)*ra + ra*rb; ro = (ro + 127) / 255;
+ guint32 go = (255-aa)*gb + (255-ab)*ga + ga*gb; go = (go + 127) / 255;
+ guint32 bo = (255-aa)*bb + (255-ab)*ba + ba*bb; bo = (bo + 127) / 255;
+
+ ASSEMBLE_ARGB32(pxout, ao, ro, go, bo)
+ *out = pxout;
+ }
+};
+
+// cr = cb + ca - ca * cb
+struct BlendScreen {
+ void operator()(guint32 in1, guint32 in2, guint32 *out)
+ {
+ EXTRACT_ARGB32(in1, aa, ra, ga, ba)
+ EXTRACT_ARGB32(in2, ab, rb, gb, bb)
+
+ guint32 ao = 255*255 - (255-aa)*(255-ab); ao = (ao + 127) / 255;
+ guint32 ro = 255*(rb + ra) - ra * rb; ro = (ro + 127) / 255;
+ guint32 go = 255*(gb + ga) - ga * gb; go = (go + 127) / 255;
+ guint32 bo = 255*(bb + ba) - ba * bb; bo = (bo + 127) / 255;
+
+ ASSEMBLE_ARGB32(pxout, ao, ro, go, bo)
+ *out = pxout;
+ }
+};
+
+// cr = Min ((1 - qa) * cb + ca, (1 - qb) * ca + cb)
+struct BlendDarken {
+ void operator()(guint32 in1, guint32 in2, guint32 *out)
+ {
+ EXTRACT_ARGB32(in1, aa, ra, ga, ba)
+ EXTRACT_ARGB32(in2, ab, rb, gb, bb)
+
+ guint32 ao = 255*255 - (255-aa)*(255-ab); ao = (ao + 127) / 255;
+ guint32 ro = std::min((255-aa)*rb + 255*ra, (255-ab)*ra + 255*rb); ro = (ro + 127) / 255;
+ guint32 go = std::min((255-aa)*gb + 255*ga, (255-ab)*ga + 255*gb); go = (go + 127) / 255;
+ guint32 bo = std::min((255-aa)*bb + 255*ba, (255-ab)*ba + 255*bb); bo = (bo + 127) / 255;
+
+ ASSEMBLE_ARGB32(pxout, ao, ro, go, bo)
+ *out = pxout;
+ }
+};
+
+// cr = Max ((1 - qa) * cb + ca, (1 - qb) * ca + cb)
+struct BlendLighten {
+ void operator()(guint32 in1, guint32 in2, guint32 *out)
+ {
+ EXTRACT_ARGB32(in1, aa, ra, ga, ba)
+ EXTRACT_ARGB32(in2, ab, rb, gb, bb)
+
+ guint32 ao = 255*255 - (255-aa)*(255-ab); ao = (ao + 127) / 255;
+ guint32 ro = std::max((255-aa)*rb + 255*ra, (255-ab)*ra + 255*rb); ro = (ro + 127) / 255;
+ guint32 go = std::max((255-aa)*gb + 255*ga, (255-ab)*ga + 255*gb); go = (go + 127) / 255;
+ guint32 bo = std::max((255-aa)*bb + 255*ba, (255-ab)*ba + 255*bb); bo = (bo + 127) / 255;
+
+ ASSEMBLE_ARGB32(pxout, ao, ro, go, bo)
+ *out = pxout;
+ }
+};
+
+/*
+struct BlendAlpha
+static inline void blend_alpha(guint32 in1, guint32 in2, guint32 *out)
+{
+ EXTRACT_ARGB32(in1, a1, a2, a3, a4);
+ EXTRACT_ARGB32(in2, b1, b2, b3, b4);
+
+ guint32 o1 = 255*255 - (255-a1)*(255-b1); o1 = (o1+127) / 255;
+ guint32 o2 = 255*255 - (255-a2)*(255-b2); o2 = (o2+127) / 255;
+ guint32 o3 = 255*255 - (255-a3)*(255-b3); o3 = (o3+127) / 255;
+ guint32 o4 = 255*255 - (255-a4)*(255-b4); o4 = (o4+127) / 255;
+
+ ASSEMBLE_ARGB32(pxout, o1, o2, o3, o4);
+ *out = pxout;
+}
+*/
+
+template <typename Blend>
+void surface_blend(cairo_surface_t *in1, cairo_surface_t *in2, cairo_surface_t *out)
+{
+ cairo_surface_flush(in1);
+ cairo_surface_flush(in2);
+
+ // WARNING: code below assumes that:
+ // 1. Cairo ARGB32 surface strides are always divisible by 4
+ // 2. We can only receive CAIRO_FORMAT_ARGB32 or CAIRO_FORMAT_A8 surfaces
+
+ int w = cairo_image_surface_get_width(in2);
+ int h = cairo_image_surface_get_height(in2);
+ int stride1 = cairo_image_surface_get_stride(in1);
+ int stride2 = cairo_image_surface_get_stride(in2);
+ int strideout = cairo_image_surface_get_stride(out);
+ int bpp1 = cairo_image_surface_get_format(in1) == CAIRO_FORMAT_A8 ? 1 : 4;
+ int bpp2 = cairo_image_surface_get_format(in2) == CAIRO_FORMAT_A8 ? 1 : 4;
+ // assumption: out surface is CAIRO_FORMAT_ARGB32 if at least one input is ARGB32
+
+ guint32 *const in1_data = (guint32*) cairo_image_surface_get_data(in1);
+ guint32 *const in2_data = (guint32*) cairo_image_surface_get_data(in2);
+ guint32 *const out_data = (guint32*) cairo_image_surface_get_data(out);
+
+ #if HAVE_OPENMP
+ Inkscape::Preferences *prefs = Inkscape::Preferences::get();
+ int num_threads = prefs->getIntLimited("/options/threading/numthreads", omp_get_num_procs(), 1, 256);
+ #endif
+
+ if (bpp1 == 4) {
+ if (bpp2 == 4) {
+ #if HAVE_OPENMP
+ #pragma omp parallel for num_threads(num_threads)
+ #endif
+ for (int i = 0; i < h; ++i) {
+ guint32 *in1_p = in1_data + i * stride1/4;
+ guint32 *in2_p = in2_data + i * stride2/4;
+ guint32 *out_p = out_data + i * strideout/4;
+ for (int j = 0; j < w; ++j) {
+ Blend()(*in1_p, *in2_p, out_p);
+ ++in1_p;
+ ++in2_p;
+ ++out_p;
+ }
+ }
+ } else {
+ // bpp2 == 1
+ #if HAVE_OPENMP
+ #pragma omp parallel for num_threads(num_threads)
+ #endif
+ for (int i = 0; i < h; ++i) {
+ guint32 *in1_p = in1_data + i * stride1/4;
+ guint8 *in2_p = reinterpret_cast<guint8*>(in2_data) + i * stride2;
+ guint32 *out_p = out_data + i * strideout/4;
+ for (int j = 0; j < w; ++j) {
+ guint32 in2_px = *in2_p;
+ in2_px <<= 24;
+ Blend()(*in1_p, in2_px, out_p);
+ ++in1_p;
+ ++in2_p;
+ ++out_p;
+ }
+ }
+ }
+ } else {
+ if (bpp2 == 4) {
+ // bpp1 == 1
+ #if HAVE_OPENMP
+ #pragma omp parallel for num_threads(num_threads)
+ #endif
+ for (int i = 0; i < h; ++i) {
+ guint8 *in1_p = reinterpret_cast<guint8*>(in1_data) + i * stride1;
+ guint32 *in2_p = in2_data + i * stride2/4;
+ guint32 *out_p = out_data + i * strideout/4;
+ for (int j = 0; j < w; ++j) {
+ guint32 in1_px = *in1_p;
+ in1_px <<= 24;
+ Blend()(in1_px, *in2_p, out_p);
+ ++in1_p;
+ ++in2_p;
+ ++out_p;
+ }
+ }
+ } else {
+ // bpp1 == 1 && bpp2 == 1
+ // don't do anything - this should have been handled via Cairo blending
+ g_assert_not_reached();
+ }
+ }
+
+ cairo_surface_mark_dirty(out);
+}
+
+void FilterBlend::render_cairo(FilterSlot &slot)
+{
+ cairo_surface_t *input1 = slot.getcairo(_input);
+ cairo_surface_t *input2 = slot.getcairo(_input2);
+
+ cairo_content_t ct1 = cairo_surface_get_content(input1);
+ cairo_content_t ct2 = cairo_surface_get_content(input2);
+
+ // input2 is the "background" image
+ // out should be ARGB32 if any of the inputs is ARGB32
+ cairo_surface_t *out = NULL;
+ if ((ct1 == CAIRO_CONTENT_ALPHA && ct2 == CAIRO_CONTENT_ALPHA)
+ || _blend_mode == BLEND_NORMAL)
+ {
+ out = ink_cairo_surface_copy(input2);
+ cairo_t *out_ct = cairo_create(out);
+ cairo_set_source_surface(out_ct, input1, 0, 0);
+ cairo_paint(out_ct);
+ cairo_destroy(out_ct);
+ } else {
+ // blend mode != normal and at least 1 surface is not pure alpha
+ // create surface identical to the ARGB32 surface
+ if (ct1 == CAIRO_CONTENT_ALPHA) {
+ out = ink_cairo_surface_create_identical(input2);
+ } else {
+ out = ink_cairo_surface_create_identical(input1);
+ }
+
+ // TODO: convert to Cairo blending operators once we start using the 1.10 series
+ switch (_blend_mode) {
+ case BLEND_MULTIPLY:
+ surface_blend<BlendMultiply>(input1, input2, out);
+ break;
+ case BLEND_SCREEN:
+ surface_blend<BlendScreen>(input1, input2, out);
+ break;
+ case BLEND_DARKEN:
+ surface_blend<BlendDarken>(input1, input2, out);
+ break;
+ case BLEND_LIGHTEN:
+ surface_blend<BlendLighten>(input1, input2, out);
+ break;
+ case BLEND_NORMAL:
+ default:
+ // this was handled before
+ g_assert_not_reached();
+ break;
+ }
+ }
+
+ slot.set(_output, out);
+ cairo_surface_destroy(out);
+}
+
int FilterBlend::render(FilterSlot &slot, FilterUnits const & /*units*/) {
NRPixBlock *in1 = slot.get(_input);
NRPixBlock *in2 = slot.get(_input2);
@@ -202,6 +449,12 @@ int FilterBlend::render(FilterSlot &slot, FilterUnits const & /*units*/) {
return 0;
}
+bool FilterBlend::can_handle_affine(Geom::Matrix const &)
+{
+ // blend is a per-pixel primitive and is immutable under transformations
+ return true;
+}
+
void FilterBlend::set_input(int slot) {
_input = slot;
}
diff --git a/src/display/nr-filter-blend.h b/src/display/nr-filter-blend.h
index ffdd62118..45da07f27 100644
--- a/src/display/nr-filter-blend.h
+++ b/src/display/nr-filter-blend.h
@@ -39,7 +39,9 @@ public:
static FilterPrimitive *create();
virtual ~FilterBlend();
+ virtual void render_cairo(FilterSlot &slot);
virtual int render(FilterSlot &slot, FilterUnits const &units);
+ virtual bool can_handle_affine(Geom::Matrix const &);
virtual void set_input(int slot);
virtual void set_input(int input, int slot);
diff --git a/src/display/nr-filter-gaussian.cpp b/src/display/nr-filter-gaussian.cpp
index 2e6bed070..1e59748c4 100644
--- a/src/display/nr-filter-gaussian.cpp
+++ b/src/display/nr-filter-gaussian.cpp
@@ -32,8 +32,6 @@
#include "display/nr-filter-gaussian.h"
#include "display/nr-filter-types.h"
#include "display/nr-filter-units.h"
-#include "libnr/nr-blit.h"
-#include "libnr/nr-pixblock.h"
#include <2geom/matrix.h>
#include "util/fixed_point.h"
#include "preferences.h"
@@ -193,21 +191,6 @@ _effect_subsample_step_log2(double const deviation, int const quality)
return stepsize_l2;
}
-/**
- * Sanity check function for indexing pixblocks.
- * Catches reading and writing outside the pixblock area.
- * When enabled, decreases filter rendering speed massively.
- */
-static inline void
-_check_index(NRPixBlock const * const pb, int const location, int const line)
-{
- if (false) {
- int max_loc = pb->rs * (pb->area.y1 - pb->area.y0);
- if (location < 0 || location >= max_loc)
- g_warning("Location %d out of bounds (0 ... %d) at line %d", location, max_loc, line);
- }
-}
-
static void calcFilter(double const sigma, double b[N]) {
assert(N==3);
std::complex<double> const d1_org(1.40098, 1.00236);
@@ -287,8 +270,10 @@ filter2D_IIR(PT *const dest, int const dstr1, int const dstr2,
{
#if G_BYTE_ORDER == G_LITTLE_ENDIAN
static unsigned int const alpha_PC = PC-1;
+ #define PREMUL_ALPHA_LOOP for(unsigned int c=0; c<PC-1; ++c)
#else
static unsigned int const alpha_PC = 0;
+ #define PREMUL_ALPHA_LOOP for(unsigned int c=1; c<PC; ++c)
#endif
#if HAVE_OPENMP
@@ -327,7 +312,7 @@ filter2D_IIR(PT *const dest, int const dstr1, int const dstr2,
dstimg -= dstr1;
if ( PREMULTIPLIED_ALPHA ) {
dstimg[alpha_PC] = clip_round_cast<PT>(v[0][alpha_PC]);
- for(unsigned int c=0; c<alpha_PC; c++) dstimg[c] = clip_round_cast<PT>(v[0][c], std::numeric_limits<PT>::min(), dstimg[alpha_PC]);
+ PREMUL_ALPHA_LOOP dstimg[c] = clip_round_cast<PT>(v[0][c], std::numeric_limits<PT>::min(), dstimg[alpha_PC]);
} else {
for(unsigned int c=0; c<PC; c++) dstimg[c] = clip_round_cast<PT>(v[0][c]);
}
@@ -342,7 +327,7 @@ filter2D_IIR(PT *const dest, int const dstr1, int const dstr2,
dstimg -= dstr1;
if ( PREMULTIPLIED_ALPHA ) {
dstimg[alpha_PC] = clip_round_cast<PT>(v[0][alpha_PC]);
- for(unsigned int c=0; c<alpha_PC; c++) dstimg[c] = clip_round_cast<PT>(v[0][c], std::numeric_limits<PT>::min(), dstimg[alpha_PC]);
+ PREMUL_ALPHA_LOOP dstimg[c] = clip_round_cast<PT>(v[0][c], std::numeric_limits<PT>::min(), dstimg[alpha_PC]);
} else {
for(unsigned int c=0; c<PC; c++) dstimg[c] = clip_round_cast<PT>(v[0][c]);
}
@@ -457,93 +442,6 @@ filter2D_FIR(PT *const dst, int const dstr1, int const dstr2,
}
}
-template<typename PT, unsigned int PC>
-static void
-downsample(PT *const dst, int const dstr1, int const dstr2, int const dn1, int const dn2,
- PT const *const src, int const sstr1, int const sstr2, int const sn1, int const sn2,
- int const step1_l2, int const step2_l2)
-{
- unsigned int const divisor_l2 = step1_l2+step2_l2; // step1*step2=2^(step1_l2+step2_l2)
- unsigned int const round_offset = (1<<divisor_l2)/2;
- int const step1 = 1<<step1_l2;
- int const step2 = 1<<step2_l2;
- int const step1_2 = step1/2;
- int const step2_2 = step2/2;
- for(int dc2 = 0 ; dc2 < dn2 ; dc2++) {
- int const sc2_begin = (dc2<<step2_l2)-step2_2;
- int const sc2_end = sc2_begin+step2;
- for(int dc1 = 0 ; dc1 < dn1 ; dc1++) {
- int const sc1_begin = (dc1<<step1_l2)-step1_2;
- int const sc1_end = sc1_begin+step1;
- unsigned int sum[PC];
- std::fill_n(sum, PC, 0);
- for(int sc2 = sc2_begin ; sc2 < sc2_end ; sc2++) {
- for(int sc1 = sc1_begin ; sc1 < sc1_end ; sc1++) {
- for(unsigned int ch = 0 ; ch < PC ; ch++) {
- sum[ch] += src[clip(sc2,0,sn2-1)*sstr2+clip(sc1,0,sn1-1)*sstr1+ch];
- }
- }
- }
- for(unsigned int ch = 0 ; ch < PC ; ch++) {
- dst[dc2*dstr2+dc1*dstr1+ch] = static_cast<PT>((sum[ch]+round_offset)>>divisor_l2);
- }
- }
- }
-}
-
-template<typename PT, unsigned int PC>
-static void
-upsample(PT *const dst, int const dstr1, int const dstr2, unsigned int const dn1, unsigned int const dn2,
- PT const *const src, int const sstr1, int const sstr2, unsigned int const sn1, unsigned int const sn2,
- unsigned int const step1_l2, unsigned int const step2_l2)
-{
- assert(((sn1-1)<<step1_l2)>=dn1 && ((sn2-1)<<step2_l2)>=dn2); // The last pixel of the source image should fall outside the destination image
- unsigned int const divisor_l2 = step1_l2+step2_l2; // step1*step2=2^(step1_l2+step2_l2)
- unsigned int const round_offset = (1<<divisor_l2)/2;
- unsigned int const step1 = 1<<step1_l2;
- unsigned int const step2 = 1<<step2_l2;
- for ( unsigned int sc2 = 0 ; sc2 < sn2-1 ; sc2++ ) {
- unsigned int const dc2_begin = (sc2 << step2_l2);
- unsigned int const dc2_end = std::min(dn2, dc2_begin+step2);
- for ( unsigned int sc1 = 0 ; sc1 < sn1-1 ; sc1++ ) {
- unsigned int const dc1_begin = (sc1 << step1_l2);
- unsigned int const dc1_end = std::min(dn1, dc1_begin+step1);
- for ( unsigned int byte = 0 ; byte < PC ; byte++) {
-
- // get 4 values at the corners of the pixel from src
- PT a00 = src[sstr2* sc2 + sstr1* sc1 + byte];
- PT a10 = src[sstr2* sc2 + sstr1*(sc1+1) + byte];
- PT a01 = src[sstr2*(sc2+1) + sstr1* sc1 + byte];
- PT a11 = src[sstr2*(sc2+1) + sstr1*(sc1+1) + byte];
-
- // initialize values for linear interpolation
- unsigned int a0 = a00*step2/*+a01*0*/;
- unsigned int a1 = a10*step2/*+a11*0*/;
-
- // iterate over the rectangle to be interpolated
- for ( unsigned int dc2 = dc2_begin ; dc2 < dc2_end ; dc2++ ) {
-
- // prepare linear interpolation for this row
- unsigned int a = a0*step1/*+a1*0*/+round_offset;
-
- for ( unsigned int dc1 = dc1_begin ; dc1 < dc1_end ; dc1++ ) {
-
- // simple linear interpolation
- dst[dstr2*dc2 + dstr1*dc1 + byte] = static_cast<PT>(a>>divisor_l2);
-
- // compute a = a0*(ix-1)+a1*(xi+1)+round_offset
- a = a - a0 + a1;
- }
-
- // compute a0 = a00*(iy-1)+a01*(yi+1) and similar for a1
- a0 = a0 - a00 + a01;
- a1 = a1 - a10 + a11;
- }
- }
- }
- }
-}
-
static void
gaussian_pass_IIR(Geom::Dim2 d, double deviation, cairo_surface_t *src, cairo_surface_t *dest,
IIRValue **tmpdata, int num_threads)
@@ -735,315 +633,6 @@ void FilterGaussian::render_cairo(FilterSlot &slot)
}
}
-int FilterGaussian::render(FilterSlot &slot, FilterUnits const &units)
-{
- // TODO: Meaningful return values? (If they're checked at all.)
-
- /* in holds the input pixblock */
- NRPixBlock *original_in = slot.get(_input);
-
- /* If to either direction, the standard deviation is zero or
- * input image is not defined,
- * a transparent black image should be returned. */
- if (_deviation_x <= 0 || _deviation_y <= 0 || original_in == NULL) {
- NRPixBlock *src = original_in;
- if (src == NULL) {
- g_warning("Missing source image for feGaussianBlur (in=%d)", _input);
- // A bit guessing here, but source graphic is likely to be of
- // right size
- src = slot.get(NR_FILTER_SOURCEGRAPHIC);
- }
- NRPixBlock *out = new NRPixBlock;
- nr_pixblock_setup_fast(out, src->mode, src->area.x0, src->area.y0,
- src->area.x1, src->area.y1, true);
- if (out->size != NR_PIXBLOCK_SIZE_TINY && out->data.px != NULL) {
- out->empty = false;
- slot.set(_output, out);
- }
- return 0;
- }
-
- // Gaussian blur is defined to operate on non-premultiplied color values.
- // So, convert the input first it uses non-premultiplied color values.
- // And please note that this should not be done AFTER resampling, as resampling a non-premultiplied image
- // does not simply yield a non-premultiplied version of the resampled premultiplied image!!!
- NRPixBlock *in = original_in;
- if (in->mode == NR_PIXBLOCK_MODE_R8G8B8A8N) {
- in = nr_pixblock_new_fast(NR_PIXBLOCK_MODE_R8G8B8A8P,
- original_in->area.x0, original_in->area.y0,
- original_in->area.x1, original_in->area.y1,
- false);
- if (!in) {
- // ran out of memory
- return 0;
- }
- nr_blit_pixblock_pixblock(in, original_in);
- }
-
- Geom::Matrix trans = units.get_matrix_primitiveunits2pb();
-
- // Some common constants
- int const width_org = in->area.x1-in->area.x0, height_org = in->area.y1-in->area.y0;
- double const deviation_x_org = _deviation_x * trans.expansionX();
- double const deviation_y_org = _deviation_y * trans.expansionY();
- int const PC = NR_PIXBLOCK_BPP(in);
-#if HAVE_OPENMP
- int const NTHREADS = std::max(1,std::min(8, Inkscape::Preferences::get()->getInt("/options/threading/numthreads", omp_get_num_procs())));
-#else
- int const NTHREADS = 1;
-#endif // HAVE_OPENMP
-
- // Subsampling constants
- int const quality = slot.get_blurquality();
- int const x_step_l2 = _effect_subsample_step_log2(deviation_x_org, quality);
- int const y_step_l2 = _effect_subsample_step_log2(deviation_y_org, quality);
- int const x_step = 1<<x_step_l2;
- int const y_step = 1<<y_step_l2;
- bool const resampling = x_step > 1 || y_step > 1;
- int const width = resampling ? static_cast<int>(ceil(static_cast<double>(width_org)/x_step))+1 : width_org;
- int const height = resampling ? static_cast<int>(ceil(static_cast<double>(height_org)/y_step))+1 : height_org;
- double const deviation_x = deviation_x_org / x_step;
- double const deviation_y = deviation_y_org / y_step;
- int const scr_len_x = _effect_area_scr(deviation_x);
- int const scr_len_y = _effect_area_scr(deviation_y);
-
- // Decide which filter to use for X and Y
- // This threshold was determined by trial-and-error for one specific machine,
- // so there's a good chance that it's not optimal.
- // Whatever you do, don't go below 1 (and preferrably not even below 2), as
- // the IIR filter gets unstable there.
- bool const use_IIR_x = deviation_x > 3;
- bool const use_IIR_y = deviation_y > 3;
-
- // new buffer for the subsampled output
- NRPixBlock *out = new NRPixBlock;
- nr_pixblock_setup_fast(out, in->mode, in->area.x0/x_step, in->area.y0/y_step,
- in->area.x0/x_step+width, in->area.y0/y_step+height, true);
- if (out->size != NR_PIXBLOCK_SIZE_TINY && out->data.px == NULL) {
- // alas, we've accomplished a lot, but ran out of memory - so abort
- if (in != original_in) nr_pixblock_free(in);
- delete out;
- return 0;
- }
- // Temporary storage for IIR filter
- // NOTE: This can be eliminated, but it reduces the precision a bit
- IIRValue * tmpdata[NTHREADS];
- std::fill_n(tmpdata, NTHREADS, (IIRValue*)0);
- if ( use_IIR_x || use_IIR_y ) {
- for(int i=0; i<NTHREADS; i++) {
- tmpdata[i] = new IIRValue[std::max(width,height)*PC];
- if (tmpdata[i] == NULL) {
- if (in != original_in) nr_pixblock_free(in);
- nr_pixblock_release(out);
- while(i-->0) {
- delete[] tmpdata[i];
- }
- delete out;
- return 0;
- }
- }
- }
-
- // Resampling (if necessary), goes from in -> out (setting ssin to out if used)
- NRPixBlock *ssin = in;
- if ( resampling ) {
- ssin = out;
- // Downsample
- switch(in->mode) {
- case NR_PIXBLOCK_MODE_A8: ///< Grayscale
- downsample<unsigned char,1>(NR_PIXBLOCK_PX(out), 1, out->rs, width, height, NR_PIXBLOCK_PX(in), 1, in->rs, width_org, height_org, x_step_l2, y_step_l2);
- break;
- case NR_PIXBLOCK_MODE_R8G8B8: ///< 8 bit RGB
- downsample<unsigned char,3>(NR_PIXBLOCK_PX(out), 3, out->rs, width, height, NR_PIXBLOCK_PX(in), 3, in->rs, width_org, height_org, x_step_l2, y_step_l2);
- break;
- //case NR_PIXBLOCK_MODE_R8G8B8A8N: ///< Normal 8 bit RGBA
- // downsample<unsigned char,4>(NR_PIXBLOCK_PX(out), 4, out->rs, width, height, NR_PIXBLOCK_PX(in), 4, in->rs, width_org, height_org, x_step_l2, y_step_l2);
- // break;
- case NR_PIXBLOCK_MODE_R8G8B8A8P: ///< Premultiplied 8 bit RGBA
- downsample<unsigned char,4>(NR_PIXBLOCK_PX(out), 4, out->rs, width, height, NR_PIXBLOCK_PX(in), 4, in->rs, width_org, height_org, x_step_l2, y_step_l2);
- break;
- default:
- assert(false);
- };
- }
-
- // Horizontal filtering, goes from ssin -> out (ssin might be equal to out, but these algorithms can be used in-place)
- if (use_IIR_x) {
- // Filter variables
- IIRValue b[N+1]; // scaling coefficient + filter coefficients (can be 10.21 fixed point)
- double bf[N]; // computed filter coefficients
- double M[N*N]; // matrix used for initialization procedure (has to be double)
-
- // Compute filter (x)
- calcFilter(deviation_x, bf);
- for(size_t i=0; i<N; i++) bf[i] = -bf[i];
- b[0] = 1; // b[0] == alpha (scaling coefficient)
- for(size_t i=0; i<N; i++) {
- b[i+1] = bf[i];
- b[0] -= b[i+1];
- }
-
- // Compute initialization matrix (x)
- calcTriggsSdikaM(bf, M);
-
- // Filter (x)
- switch(in->mode) {
- case NR_PIXBLOCK_MODE_A8: ///< Grayscale
- filter2D_IIR<unsigned char,1,false>(NR_PIXBLOCK_PX(out), 1, out->rs, NR_PIXBLOCK_PX(ssin), 1, ssin->rs, width, height, b, M, tmpdata, NTHREADS);
- break;
- case NR_PIXBLOCK_MODE_R8G8B8: ///< 8 bit RGB
- filter2D_IIR<unsigned char,3,false>(NR_PIXBLOCK_PX(out), 3, out->rs, NR_PIXBLOCK_PX(ssin), 3, ssin->rs, width, height, b, M, tmpdata, NTHREADS);
- break;
- //case NR_PIXBLOCK_MODE_R8G8B8A8N: ///< Normal 8 bit RGBA
- // filter2D_IIR<unsigned char,4,false>(NR_PIXBLOCK_PX(out), 4, out->rs, NR_PIXBLOCK_PX(ssin), 4, ssin->rs, width, height, b, M, tmpdata, NTHREADS);
- // break;
- case NR_PIXBLOCK_MODE_R8G8B8A8P: ///< Premultiplied 8 bit RGBA
- filter2D_IIR<unsigned char,4,true >(NR_PIXBLOCK_PX(out), 4, out->rs, NR_PIXBLOCK_PX(ssin), 4, ssin->rs, width, height, b, M, tmpdata, NTHREADS);
- break;
- default:
- assert(false);
- };
- } else if ( scr_len_x > 0 ) { // !use_IIR_x
- // Filter kernel for x direction
- FIRValue kernel[scr_len_x+1];
- _make_kernel(kernel, deviation_x);
-
- // Filter (x)
- switch(in->mode) {
- case NR_PIXBLOCK_MODE_A8: ///< Grayscale
- filter2D_FIR<unsigned char,1>(NR_PIXBLOCK_PX(out), 1, out->rs, NR_PIXBLOCK_PX(ssin), 1, ssin->rs, width, height, kernel, scr_len_x, NTHREADS);
- break;
- case NR_PIXBLOCK_MODE_R8G8B8: ///< 8 bit RGB
- filter2D_FIR<unsigned char,3>(NR_PIXBLOCK_PX(out), 3, out->rs, NR_PIXBLOCK_PX(ssin), 3, ssin->rs, width, height, kernel, scr_len_x, NTHREADS);
- break;
- //case NR_PIXBLOCK_MODE_R8G8B8A8N: ///< Normal 8 bit RGBA
- // filter2D_FIR<unsigned char,4>(NR_PIXBLOCK_PX(out), 4, out->rs, NR_PIXBLOCK_PX(ssin), 4, ssin->rs, width, height, kernel, scr_len_x, NTHREADS);
- // break;
- case NR_PIXBLOCK_MODE_R8G8B8A8P: ///< Premultiplied 8 bit RGBA
- filter2D_FIR<unsigned char,4>(NR_PIXBLOCK_PX(out), 4, out->rs, NR_PIXBLOCK_PX(ssin), 4, ssin->rs, width, height, kernel, scr_len_x, NTHREADS);
- break;
- default:
- assert(false);
- };
- } else if ( out != ssin ) { // out can be equal to ssin if resampling is used
- nr_blit_pixblock_pixblock(out, ssin);
- }
-
- // Vertical filtering, goes from out -> out
- if (use_IIR_y) {
- // Filter variables
- IIRValue b[N+1]; // scaling coefficient + filter coefficients (can be 10.21 fixed point)
- double bf[N]; // computed filter coefficients
- double M[N*N]; // matrix used for initialization procedure (has to be double)
-
- // Compute filter (y)
- calcFilter(deviation_y, bf);
- for(size_t i=0; i<N; i++) bf[i] = -bf[i];
- b[0] = 1; // b[0] == alpha (scaling coefficient)
- for(size_t i=0; i<N; i++) {
- b[i+1] = bf[i];
- b[0] -= b[i+1];
- }
-
- // Compute initialization matrix (y)
- calcTriggsSdikaM(bf, M);
-
- // Filter (y)
- switch(in->mode) {
- case NR_PIXBLOCK_MODE_A8: ///< Grayscale
- filter2D_IIR<unsigned char,1,false>(NR_PIXBLOCK_PX(out), out->rs, 1, NR_PIXBLOCK_PX(out), out->rs, 1, height, width, b, M, tmpdata, NTHREADS);
- break;
- case NR_PIXBLOCK_MODE_R8G8B8: ///< 8 bit RGB
- filter2D_IIR<unsigned char,3,false>(NR_PIXBLOCK_PX(out), out->rs, 3, NR_PIXBLOCK_PX(out), out->rs, 3, height, width, b, M, tmpdata, NTHREADS);
- break;
- //case NR_PIXBLOCK_MODE_R8G8B8A8N: ///< Normal 8 bit RGBA
- // filter2D_IIR<unsigned char,4,false>(NR_PIXBLOCK_PX(out), out->rs, 4, NR_PIXBLOCK_PX(out), out->rs, 4, height, width, b, M, tmpdata, NTHREADS);
- // break;
- case NR_PIXBLOCK_MODE_R8G8B8A8P: ///< Premultiplied 8 bit RGBA
- filter2D_IIR<unsigned char,4,true >(NR_PIXBLOCK_PX(out), out->rs, 4, NR_PIXBLOCK_PX(out), out->rs, 4, height, width, b, M, tmpdata, NTHREADS);
- break;
- default:
- assert(false);
- };
- } else if ( scr_len_y > 0 ) { // !use_IIR_y
- // Filter kernel for y direction
- FIRValue kernel[scr_len_y+1];
- _make_kernel(kernel, deviation_y);
-
- // Filter (y)
- switch(in->mode) {
- case NR_PIXBLOCK_MODE_A8: ///< Grayscale
- filter2D_FIR<unsigned char,1>(NR_PIXBLOCK_PX(out), out->rs, 1, NR_PIXBLOCK_PX(out), out->rs, 1, height, width, kernel, scr_len_y, NTHREADS);
- break;
- case NR_PIXBLOCK_MODE_R8G8B8: ///< 8 bit RGB
- filter2D_FIR<unsigned char,3>(NR_PIXBLOCK_PX(out), out->rs, 3, NR_PIXBLOCK_PX(out), out->rs, 3, height, width, kernel, scr_len_y, NTHREADS);
- break;
- //case NR_PIXBLOCK_MODE_R8G8B8A8N: ///< Normal 8 bit RGBA
- // filter2D_FIR<unsigned char,4>(NR_PIXBLOCK_PX(out), out->rs, 4, NR_PIXBLOCK_PX(out), out->rs, 4, height, width, kernel, scr_len_y, NTHREADS);
- // break;
- case NR_PIXBLOCK_MODE_R8G8B8A8P: ///< Premultiplied 8 bit RGBA
- filter2D_FIR<unsigned char,4>(NR_PIXBLOCK_PX(out), out->rs, 4, NR_PIXBLOCK_PX(out), out->rs, 4, height, width, kernel, scr_len_y, NTHREADS);
- break;
- default:
- assert(false);
- };
- }
-
- for(int i=0; i<NTHREADS; i++) {
- delete[] tmpdata[i]; // deleting a nullptr has no effect, so this is safe
- }
-
- // Upsampling, stores (the upsampled) out using slot.set(_output, ...)
- if ( !resampling ) {
- // No upsampling needed
- out->empty = FALSE;
- slot.set(_output, out);
- } else {
- // New buffer for the final output, same resolution as the in buffer
- NRPixBlock *finalout = new NRPixBlock;
- nr_pixblock_setup_fast(finalout, in->mode, in->area.x0, in->area.y0,
- in->area.x1, in->area.y1, true);
- if (finalout->size != NR_PIXBLOCK_SIZE_TINY && finalout->data.px == NULL) {
- // alas, we've accomplished a lot, but ran out of memory - so abort
- if (in != original_in) nr_pixblock_free(in);
- nr_pixblock_release(out);
- delete out;
- return 0;
- }
-
- // Upsample
- switch(in->mode) {
- case NR_PIXBLOCK_MODE_A8: ///< Grayscale
- upsample<unsigned char,1>(NR_PIXBLOCK_PX(finalout), 1, finalout->rs, width_org, height_org, NR_PIXBLOCK_PX(out), 1, out->rs, width, height, x_step_l2, y_step_l2);
- break;
- case NR_PIXBLOCK_MODE_R8G8B8: ///< 8 bit RGB
- upsample<unsigned char,3>(NR_PIXBLOCK_PX(finalout), 3, finalout->rs, width_org, height_org, NR_PIXBLOCK_PX(out), 3, out->rs, width, height, x_step_l2, y_step_l2);
- break;
- //case NR_PIXBLOCK_MODE_R8G8B8A8N: ///< Normal 8 bit RGBA
- // upsample<unsigned char,4>(NR_PIXBLOCK_PX(finalout), 4, finalout->rs, width_org, height_org, NR_PIXBLOCK_PX(out), 4, out->rs, width, height, x_step_l2, y_step_l2);
- // break;
- case NR_PIXBLOCK_MODE_R8G8B8A8P: ///< Premultiplied 8 bit RGBA
- upsample<unsigned char,4>(NR_PIXBLOCK_PX(finalout), 4, finalout->rs, width_org, height_org, NR_PIXBLOCK_PX(out), 4, out->rs, width, height, x_step_l2, y_step_l2);
- break;
- default:
- assert(false);
- };
-
- // We don't need the out buffer anymore
- nr_pixblock_release(out);
- delete out;
-
- // The final out buffer gets returned
- finalout->empty = FALSE;
- slot.set(_output, finalout);
- }
-
- // If we downsampled the input, clean up the downsampled data
- if (in != original_in) nr_pixblock_free(in);
-
- return 0;
-}
-
void FilterGaussian::area_enlarge(NRRectL &area, Geom::Matrix const &trans)
{
int area_x = _effect_area_scr(_deviation_x * trans.expansionX());
@@ -1057,8 +646,14 @@ void FilterGaussian::area_enlarge(NRRectL &area, Geom::Matrix const &trans)
area.y1 += area_max;
}
-FilterTraits FilterGaussian::get_input_traits() {
- return TRAIT_PARALLER;
+bool FilterGaussian::can_handle_affine(Geom::Matrix const &m)
+{
+ if (Geom::are_near(_deviation_x, _deviation_y)) {
+ // TODO after 2Geom sync, change this to m.preservesAngles()
+ return Geom::are_near(m[0], m[3]) && Geom::are_near(m[1], -m[2]);
+ } else {
+ return false;
+ }
}
void FilterGaussian::set_deviation(double deviation)
diff --git a/src/display/nr-filter-gaussian.h b/src/display/nr-filter-gaussian.h
index 7bcabdba9..01ce9efcb 100644
--- a/src/display/nr-filter-gaussian.h
+++ b/src/display/nr-filter-gaussian.h
@@ -39,9 +39,8 @@ public:
virtual ~FilterGaussian();
virtual void render_cairo(FilterSlot &slot);
- virtual int render(FilterSlot &slot, FilterUnits const &units);
virtual void area_enlarge(NRRectL &area, Geom::Matrix const &m);
- virtual FilterTraits get_input_traits();
+ virtual bool can_handle_affine(Geom::Matrix const &m);
/**
* Set the standard deviation value for gaussian blur. Deviation along
diff --git a/src/display/nr-filter-primitive.h b/src/display/nr-filter-primitive.h
index a7ae0125e..89927fdbd 100644
--- a/src/display/nr-filter-primitive.h
+++ b/src/display/nr-filter-primitive.h
@@ -44,7 +44,7 @@ public:
virtual ~FilterPrimitive();
virtual void render_cairo(FilterSlot &slot);
- virtual int render(FilterSlot &slot, FilterUnits const &units) = 0;
+ virtual int render(FilterSlot &slot, FilterUnits const &units) { return 0; }
virtual void area_enlarge(NRRectL &area, Geom::Matrix const &m);
/**
@@ -109,6 +109,20 @@ public:
*/
virtual FilterTraits get_input_traits();
+ /** @brief Indicate whether the filter primitive can handle the given affine.
+ *
+ * Results of some filter primitives depend on the coordinate system used when rendering.
+ * A gaussian blur will equal x and y deviation will remain unchanged by rotations.
+ * Per-pixel filters like color matrix and blend will not change regardless of
+ * the transformation.
+ *
+ * When any filter returns false, filter rendering is performed on an intermediate surface
+ * with edges parallel to the axes of the user coordinate system. This means
+ * the matrices from FilterUnits will contain at most a (possibly non-uniform) scale
+ * and a translation. When all primitives of the filter return false, the rendering is
+ * performed in display coordinate space and no intermediate surface is used. */
+ virtual bool can_handle_affine(Geom::Matrix const &) { return false; }
+
protected:
int _input;
int _output;
diff --git a/src/display/nr-filter-slot.cpp b/src/display/nr-filter-slot.cpp
index d700cd433..5371499e4 100644
--- a/src/display/nr-filter-slot.cpp
+++ b/src/display/nr-filter-slot.cpp
@@ -20,7 +20,6 @@
#include "display/nr-filter-types.h"
#include "display/nr-filter-gaussian.h"
#include "display/nr-filter-slot.h"
-#include "display/nr-filter-getalpha.h"
#include "display/nr-filter-units.h"
#include "display/pixblock-scaler.h"
#include "display/pixblock-transform.h"
@@ -131,10 +130,9 @@ cairo_surface_t *FilterSlot::getcairo(int slot_nr)
cairo_surface_destroy(tr);
} break;
case NR_FILTER_BACKGROUNDIMAGE: {
- // TODO
- //cairo_surface_t *bg = _get_transformed_background();
- //_set_internal(NR_FILTER_BACKGROUNDIMAGE, bg);
- //cairo_surface_destroy(bg);
+ cairo_surface_t *bg = _get_transformed_background();
+ _set_internal(NR_FILTER_BACKGROUNDIMAGE, bg);
+ cairo_surface_destroy(bg);
} break;
case NR_FILTER_SOURCEALPHA: {
cairo_surface_t *src = getcairo(NR_FILTER_SOURCEGRAPHIC);
@@ -158,8 +156,12 @@ cairo_surface_t *FilterSlot::getcairo(int slot_nr)
if (s == _slots.end()) {
// create empty surface
- // TODO
- return NULL;
+ cairo_surface_t *empty = cairo_surface_create_similar(
+ _source_graphic, cairo_surface_get_content(_source_graphic),
+ _slot_area.x1 - _slot_area.x0, _slot_area.y1 - _slot_area.y0);
+ _set_internal(slot_nr, empty);
+ cairo_surface_destroy(empty);
+ s = _slots.find(slot_nr);
}
return s->second;
@@ -189,7 +191,23 @@ cairo_surface_t *FilterSlot::_get_transformed_source_graphic()
cairo_surface_t *FilterSlot::_get_transformed_background()
{
- return NULL;
+ Geom::Matrix trans = _units.get_matrix_display2pb();
+
+ cairo_surface_t *bg = cairo_get_target(_background_ct);
+ cairo_surface_t *tbg = cairo_surface_create_similar(
+ bg, cairo_surface_get_content(bg),
+ _slot_area.x1 - _slot_area.x0, _slot_area.y1 - _slot_area.y0);
+ cairo_t *tbg_ct = cairo_create(tbg);
+
+ cairo_translate(tbg_ct, -_slot_area.x0, -_slot_area.y0);
+ ink_cairo_transform(tbg_ct, trans);
+ cairo_translate(tbg_ct, _background_area->x0, _background_area->y0);
+ cairo_set_source_surface(tbg_ct, bg, 0, 0);
+ cairo_set_operator(tbg_ct, CAIRO_OPERATOR_SOURCE);
+ cairo_paint(tbg_ct);
+ cairo_destroy(tbg_ct);
+
+ return tbg;
}
cairo_surface_t *FilterSlot::get_result(int res)
@@ -299,11 +317,6 @@ void FilterSlot::set(int slot_nr, cairo_surface_t *surface)
trans[1] * x1 + trans[3] * y0 + trans[5],
trans[1] * x1 + trans[3] * y1 + trans[5]);
- cairo_surface_t *trans_s = cairo_surface_create_similar(s,
- CAIRO_CONTENT_COLOR, max_x - min_x, max_y - min_y);
- cairo_t *ct = cairo_create(trans_s);
-
-
nr_pixblock_setup_fast(trans_pb, pb->mode,
min_x, min_y,
max_x, max_y, true);
diff --git a/src/filter-chemistry.cpp b/src/filter-chemistry.cpp
index 363663ac3..298531db0 100644
--- a/src/filter-chemistry.cpp
+++ b/src/filter-chemistry.cpp
@@ -22,9 +22,9 @@
#include "filter-enums.h"
#include "filters/blend.h"
+#include "filters/gaussian-blur.h"
#include "sp-filter.h"
#include "sp-filter-reference.h"
-#include "sp-gaussian-blur.h"
#include "svg/css-ostringstream.h"
#include "libnr/nr-matrix-fns.h"
diff --git a/src/filter-chemistry.h b/src/filter-chemistry.h
index 1b18ec11a..67531d630 100644
--- a/src/filter-chemistry.h
+++ b/src/filter-chemistry.h
@@ -1,6 +1,3 @@
-#ifndef __SP_FILTER_CHEMISTRY_H__
-#define __SP_FILTER_CHEMISTRY_H__
-
/*
* Various utility methods for filters
*
@@ -14,8 +11,14 @@
* Released under GNU GPL, read the file 'COPYING' for more information
*/
+#ifndef SEEN_SP_FILTER_CHEMISTRY_H
+#define SEEN_SP_FILTER_CHEMISTRY_H
+
#include "forward.h"
-#include "sp-filter.h"
+#include "display/nr-filter-types.h"
+
+class SPFilter;
+class SPFilterPrimitive;
SPFilterPrimitive *filter_add_primitive(SPFilter *filter, Inkscape::Filters::FilterPrimitiveType);
SPFilter *new_filter (SPDocument *document);
diff --git a/src/filters/Makefile_insert b/src/filters/Makefile_insert
index dde7cdb68..ea9ff4b56 100644
--- a/src/filters/Makefile_insert
+++ b/src/filters/Makefile_insert
@@ -1,59 +1,46 @@
## Makefile.am fragment sourced by src/Makefile.am.
ink_common_sources += \
- filters/blend.cpp \
- filters/blend-fns.h \
- filters/blend.h \
- filters/colormatrix.cpp \
- filters/colormatrix-fns.h \
- filters/colormatrix.h \
- filters/componenttransfer.cpp \
- filters/componenttransfer-fns.h \
+ filters/blend.cpp \
+ filters/blend.h \
+ filters/colormatrix.cpp \
+ filters/colormatrix.h \
+ filters/componenttransfer.cpp \
filters/componenttransfer-funcnode.cpp \
filters/componenttransfer-funcnode.h \
- filters/componenttransfer.h \
- filters/composite.cpp \
- filters/composite-fns.h \
- filters/composite.h \
- filters/convolvematrix.cpp \
- filters/convolvematrix-fns.h \
- filters/convolvematrix.h \
- filters/diffuselighting.cpp \
- filters/diffuselighting-fns.h \
- filters/diffuselighting.h \
- filters/displacementmap.cpp \
- filters/displacementmap-fns.h \
- filters/displacementmap.h \
- filters/distantlight.cpp \
- filters/distantlight.h \
- filters/flood.cpp \
- filters/flood-fns.h \
- filters/flood.h \
- filters/image.cpp \
- filters/image-fns.h \
- filters/image.h \
- filters/merge.cpp \
- filters/merge-fns.h \
- filters/merge.h \
- filters/mergenode.cpp \
- filters/mergenode.h \
- filters/morphology.cpp \
- filters/morphology-fns.h \
- filters/morphology.h \
- filters/offset.cpp \
- filters/offset-fns.h \
- filters/offset.h \
- filters/pointlight.cpp \
- filters/pointlight.h \
- filters/specularlighting.cpp \
- filters/specularlighting-fns.h \
- filters/specularlighting.h \
- filters/spotlight.cpp \
- filters/spotlight.h \
- filters/tile.cpp \
- filters/tile-fns.h \
- filters/tile.h \
- filters/turbulence.cpp \
- filters/turbulence-fns.h \
+ filters/componenttransfer.h \
+ filters/composite.cpp \
+ filters/composite.h \
+ filters/convolvematrix.cpp \
+ filters/convolvematrix.h \
+ filters/diffuselighting.cpp \
+ filters/diffuselighting.h \
+ filters/displacementmap.cpp \
+ filters/displacementmap.h \
+ filters/distantlight.cpp \
+ filters/distantlight.h \
+ filters/flood.cpp \
+ filters/flood.h \
+ filters/gaussian-blur.cpp \
+ filters/gaussian-blur.h \
+ filters/image.cpp \
+ filters/image.h \
+ filters/merge.cpp \
+ filters/merge.h \
+ filters/mergenode.cpp \
+ filters/mergenode.h \
+ filters/morphology.cpp \
+ filters/morphology.h \
+ filters/offset.cpp \
+ filters/offset.h \
+ filters/pointlight.cpp \
+ filters/pointlight.h \
+ filters/specularlighting.cpp \
+ filters/specularlighting.h \
+ filters/spotlight.cpp \
+ filters/spotlight.h \
+ filters/tile.cpp \
+ filters/tile.h \
+ filters/turbulence.cpp \
filters/turbulence.h
diff --git a/src/filters/blend-fns.h b/src/filters/blend-fns.h
deleted file mode 100644
index f08ed9dd1..000000000
--- a/src/filters/blend-fns.h
+++ /dev/null
@@ -1,38 +0,0 @@
-#ifndef SP_FEBLEND_FNS_H
-#define SP_FEBLEND_FNS_H
-
-/** \file
- * Macros and fn declarations related to gaussian blur filter.
- */
-
-#include <glib-object.h>
-#include <glib/gtypes.h>
-
-namespace Inkscape {
-namespace XML {
-class Node;
-}
-}
-
-class SPFeBlend;
-
-#define SP_TYPE_FEBLEND (sp_feBlend_get_type())
-#define SP_FEBLEND(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), SP_TYPE_FEBLEND, SPFeBlend))
-#define SP_FEBLEND_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), SP_TYPE_FEBLEND, SPFeBlendClass))
-#define SP_IS_FEBLEND(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), SP_TYPE_FEBLEND))
-#define SP_IS_FEBLEND_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), SP_TYPE_FEBLEND))
-
-GType sp_feBlend_get_type();
-
-#endif /* !SP_FEBLEND_FNS_H */
-
-/*
- Local Variables:
- mode:c++
- c-file-style:"stroustrup"
- c-file-offsets:((innamespace . 0)(inline-open . 0)(case-label . +))
- indent-tabs-mode:nil
- fill-column:99
- End:
-*/
-// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:encoding=utf-8:textwidth=99 :
diff --git a/src/filters/blend.cpp b/src/filters/blend.cpp
index 5998d7be3..795cbff20 100644
--- a/src/filters/blend.cpp
+++ b/src/filters/blend.cpp
@@ -20,9 +20,10 @@
#include <string.h>
+#include "sp-filter.h"
+#include "filters/blend.h"
#include "attributes.h"
#include "svg/svg.h"
-#include "blend.h"
#include "xml/repr.h"
#include "display/nr-filter.h"
diff --git a/src/filters/blend.h b/src/filters/blend.h
index 9f3cab475..4fd763166 100644
--- a/src/filters/blend.h
+++ b/src/filters/blend.h
@@ -1,10 +1,6 @@
-#ifndef SP_FEBLEND_H_SEEN
-#define SP_FEBLEND_H_SEEN
-
-/** \file
- * SVG <feBlend> implementation, see Blend.cpp.
- */
-/*
+/** @file
+ * @brief SVG blend filter effect
+ *//*
* Authors:
* Hugo Rodrigues <haa.rodrigues@gmail.com>
* Niko Kiirala <niko@kiirala.com>
@@ -14,16 +10,21 @@
* Released under GNU GPL, read the file 'COPYING' for more information
*/
-#include "sp-filter.h"
-#include "blend-fns.h"
+#ifndef SP_FEBLEND_H_SEEN
+#define SP_FEBLEND_H_SEEN
+#include "sp-filter-primitive.h"
#include "display/nr-filter-blend.h"
-/* FeBlend base class */
+#define SP_TYPE_FEBLEND (sp_feBlend_get_type())
+#define SP_FEBLEND(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), SP_TYPE_FEBLEND, SPFeBlend))
+#define SP_FEBLEND_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), SP_TYPE_FEBLEND, SPFeBlendClass))
+#define SP_IS_FEBLEND(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), SP_TYPE_FEBLEND))
+#define SP_IS_FEBLEND_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), SP_TYPE_FEBLEND))
+
class SPFeBlendClass;
struct SPFeBlend : public SPFilterPrimitive {
- /** BLEND ATTRIBUTES HERE */
Inkscape::Filters::FilterBlendMode blend_mode;
int in2;
};
diff --git a/src/filters/colormatrix-fns.h b/src/filters/colormatrix-fns.h
deleted file mode 100644
index 3a4a8d35c..000000000
--- a/src/filters/colormatrix-fns.h
+++ /dev/null
@@ -1,38 +0,0 @@
-#ifndef SP_FECOLORMATRIX_FNS_H
-#define SP_FECOLORMATRIX_FNS_H
-
-/** \file
- * Macros and fn declarations related to gaussian blur filter.
- */
-
-#include <glib-object.h>
-#include <glib/gtypes.h>
-
-namespace Inkscape {
-namespace XML {
-class Node;
-}
-}
-
-class SPFeColorMatrix;
-
-#define SP_TYPE_FECOLORMATRIX (sp_feColorMatrix_get_type())
-#define SP_FECOLORMATRIX(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), SP_TYPE_FECOLORMATRIX, SPFeColorMatrix))
-#define SP_FECOLORMATRIX_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), SP_TYPE_FECOLORMATRIX, SPFeColorMatrixClass))
-#define SP_IS_FECOLORMATRIX(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), SP_TYPE_FECOLORMATRIX))
-#define SP_IS_FECOLORMATRIX_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), SP_TYPE_FECOLORMATRIX))
-
-GType sp_feColorMatrix_get_type();
-
-#endif /* !SP_FECOLORMATRIX_FNS_H */
-
-/*
- Local Variables:
- mode:c++
- c-file-style:"stroustrup"
- c-file-offsets:((innamespace . 0)(inline-open . 0)(case-label . +))
- indent-tabs-mode:nil
- fill-column:99
- End:
-*/
-// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:encoding=utf-8:textwidth=99 :
diff --git a/src/filters/colormatrix.cpp b/src/filters/colormatrix.cpp
index 3f60ea05c..07567cce6 100644
--- a/src/filters/colormatrix.cpp
+++ b/src/filters/colormatrix.cpp
@@ -27,6 +27,7 @@
#include "xml/repr.h"
#include "helper-fns.h"
+#include "display/nr-filter.h"
#include "display/nr-filter-colormatrix.h"
/* FeColorMatrix base class */
diff --git a/src/filters/colormatrix.h b/src/filters/colormatrix.h
index 69be96928..71c19db4d 100644
--- a/src/filters/colormatrix.h
+++ b/src/filters/colormatrix.h
@@ -1,10 +1,6 @@
-#ifndef SP_FECOLORMATRIX_H_SEEN
-#define SP_FECOLORMATRIX_H_SEEN
-
-/** \file
- * SVG <feColorMatrix> implementation, see ColorMatrix.cpp.
- */
-/*
+/** @file
+ * @brief SVG color matrix filter effect
+ *//*
* Authors:
* Hugo Rodrigues <haa.rodrigues@gmail.com>
*
@@ -12,17 +8,22 @@
*
* Released under GNU GPL, read the file 'COPYING' for more information
*/
+#ifndef SP_FECOLORMATRIX_H_SEEN
+#define SP_FECOLORMATRIX_H_SEEN
-#include "sp-filter.h"
-#include "colormatrix-fns.h"
-#include "display/nr-filter-colormatrix.h"
#include <vector>
+#include "sp-filter-primitive.h"
+#include "display/nr-filter-colormatrix.h"
+
+#define SP_TYPE_FECOLORMATRIX (sp_feColorMatrix_get_type())
+#define SP_FECOLORMATRIX(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), SP_TYPE_FECOLORMATRIX, SPFeColorMatrix))
+#define SP_FECOLORMATRIX_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), SP_TYPE_FECOLORMATRIX, SPFeColorMatrixClass))
+#define SP_IS_FECOLORMATRIX(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), SP_TYPE_FECOLORMATRIX))
+#define SP_IS_FECOLORMATRIX_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), SP_TYPE_FECOLORMATRIX))
-/* FeColorMatrix base class */
class SPFeColorMatrixClass;
struct SPFeColorMatrix : public SPFilterPrimitive {
- /** COLORMATRIX ATTRIBUTES HERE */
Inkscape::Filters::FilterColorMatrixType type;
gdouble value;
std::vector<gdouble> values;
@@ -34,7 +35,6 @@ struct SPFeColorMatrixClass {
GType sp_feColorMatrix_get_type();
-
#endif /* !SP_FECOLORMATRIX_H_SEEN */
/*
diff --git a/src/filters/componenttransfer-fns.h b/src/filters/componenttransfer-fns.h
deleted file mode 100644
index 49983770a..000000000
--- a/src/filters/componenttransfer-fns.h
+++ /dev/null
@@ -1,38 +0,0 @@
-#ifndef SP_FECOMPONENTTRANSFER_FNS_H
-#define SP_FECOMPONENTTRANSFER_FNS_H
-
-/** \file
- * Macros and fn declarations related to gaussian blur filter.
- */
-
-#include <glib-object.h>
-#include <glib/gtypes.h>
-
-namespace Inkscape {
-namespace XML {
-class Node;
-}
-}
-
-class SPFeComponentTransfer;
-
-#define SP_TYPE_FECOMPONENTTRANSFER (sp_feComponentTransfer_get_type())
-#define SP_FECOMPONENTTRANSFER(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), SP_TYPE_FECOMPONENTTRANSFER, SPFeComponentTransfer))
-#define SP_FECOMPONENTTRANSFER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), SP_TYPE_FECOMPONENTTRANSFER, SPFeComponentTransferClass))
-#define SP_IS_FECOMPONENTTRANSFER(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), SP_TYPE_FECOMPONENTTRANSFER))
-#define SP_IS_FECOMPONENTTRANSFER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), SP_TYPE_FECOMPONENTTRANSFER))
-
-GType sp_feComponentTransfer_get_type();
-
-#endif /* !SP_FECOMPONENTTRANSFER_FNS_H */
-
-/*
- Local Variables:
- mode:c++
- c-file-style:"stroustrup"
- c-file-offsets:((innamespace . 0)(inline-open . 0)(case-label . +))
- indent-tabs-mode:nil
- fill-column:99
- End:
-*/
-// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:encoding=utf-8:textwidth=99 :
diff --git a/src/filters/componenttransfer.cpp b/src/filters/componenttransfer.cpp
index 27e63eaa6..4853ab8cd 100644
--- a/src/filters/componenttransfer.cpp
+++ b/src/filters/componenttransfer.cpp
@@ -22,9 +22,10 @@
#include "document.h"
#include "attributes.h"
#include "svg/svg.h"
-#include "componenttransfer.h"
-#include "componenttransfer-funcnode.h"
+#include "filters/componenttransfer.h"
+#include "filters/componenttransfer-funcnode.h"
#include "xml/repr.h"
+#include "display/nr-filter.h"
#include "display/nr-filter-component-transfer.h"
/* FeComponentTransfer base class */
diff --git a/src/filters/componenttransfer.h b/src/filters/componenttransfer.h
index 8281d9aea..be66d5a82 100644
--- a/src/filters/componenttransfer.h
+++ b/src/filters/componenttransfer.h
@@ -1,10 +1,6 @@
-#ifndef SP_FECOMPONENTTRANSFER_H_SEEN
-#define SP_FECOMPONENTTRANSFER_H_SEEN
-
-/** \file
- * SVG <feComponentTransfer> implementation, see ComponentTransfer.cpp.
- */
-/*
+/** @file
+ * @brief SVG component transferfilter effect
+ *//*
* Authors:
* Hugo Rodrigues <haa.rodrigues@gmail.com>
*
@@ -12,18 +8,25 @@
*
* Released under GNU GPL, read the file 'COPYING' for more information
*/
+#ifndef SP_FECOMPONENTTRANSFER_H_SEEN
+#define SP_FECOMPONENTTRANSFER_H_SEEN
+
+#include "sp-filter-primitive.h"
-#include "sp-filter.h"
-#include "componenttransfer-fns.h"
-#include "display/nr-filter-component-transfer.h"
-#include <vector>
+#define SP_TYPE_FECOMPONENTTRANSFER (sp_feComponentTransfer_get_type())
+#define SP_FECOMPONENTTRANSFER(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), SP_TYPE_FECOMPONENTTRANSFER, SPFeComponentTransfer))
+#define SP_FECOMPONENTTRANSFER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), SP_TYPE_FECOMPONENTTRANSFER, SPFeComponentTransferClass))
+#define SP_IS_FECOMPONENTTRANSFER(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), SP_TYPE_FECOMPONENTTRANSFER))
+#define SP_IS_FECOMPONENTTRANSFER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), SP_TYPE_FECOMPONENTTRANSFER))
+
+namespace Inkscape {
+namespace Filters {
+class FilterComponentTransfer;
+} }
-/* FeComponentTransfer base class */
class SPFeComponentTransferClass;
struct SPFeComponentTransfer : public SPFilterPrimitive {
- /** COMPONENTTRANSFER ATTRIBUTES HERE */
-
Inkscape::Filters::FilterComponentTransfer *renderer;
};
diff --git a/src/filters/composite-fns.h b/src/filters/composite-fns.h
deleted file mode 100644
index c79cb17bb..000000000
--- a/src/filters/composite-fns.h
+++ /dev/null
@@ -1,38 +0,0 @@
-#ifndef SP_FECOMPOSITE_FNS_H
-#define SP_FECOMPOSITE_FNS_H
-
-/** \file
- * Macros and fn declarations related to gaussian blur filter.
- */
-
-#include <glib-object.h>
-#include <glib/gtypes.h>
-
-namespace Inkscape {
-namespace XML {
-class Node;
-}
-}
-
-class SPFeComposite;
-
-#define SP_TYPE_FECOMPOSITE (sp_feComposite_get_type())
-#define SP_FECOMPOSITE(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), SP_TYPE_FECOMPOSITE, SPFeComposite))
-#define SP_FECOMPOSITE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), SP_TYPE_FECOMPOSITE, SPFeCompositeClass))
-#define SP_IS_FECOMPOSITE(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), SP_TYPE_FECOMPOSITE))
-#define SP_IS_FECOMPOSITE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), SP_TYPE_FECOMPOSITE))
-
-GType sp_feComposite_get_type();
-
-#endif /* !SP_FECOMPOSITE_FNS_H */
-
-/*
- Local Variables:
- mode:c++
- c-file-style:"stroustrup"
- c-file-offsets:((innamespace . 0)(inline-open . 0)(case-label . +))
- indent-tabs-mode:nil
- fill-column:99
- End:
-*/
-// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:encoding=utf-8:textwidth=99 :
diff --git a/src/filters/composite.cpp b/src/filters/composite.cpp
index 93c692f94..0c534e01d 100644
--- a/src/filters/composite.cpp
+++ b/src/filters/composite.cpp
@@ -19,10 +19,12 @@
#include "attributes.h"
#include "svg/svg.h"
-#include "composite.h"
+#include "filters/composite.h"
#include "helper-fns.h"
#include "xml/repr.h"
+#include "display/nr-filter.h"
#include "display/nr-filter-composite.h"
+#include "sp-filter.h"
/* FeComposite base class */
diff --git a/src/filters/composite.h b/src/filters/composite.h
index 095d7616d..126d8e71b 100644
--- a/src/filters/composite.h
+++ b/src/filters/composite.h
@@ -1,10 +1,6 @@
-#ifndef SP_FECOMPOSITE_H_SEEN
-#define SP_FECOMPOSITE_H_SEEN
-
-/** \file
- * SVG <feComposite> implementation, see Composite.cpp.
- */
-/*
+/** @file
+ * @brief SVG composite filter effect
+ *//*
* Authors:
* Hugo Rodrigues <haa.rodrigues@gmail.com>
*
@@ -12,9 +8,16 @@
*
* Released under GNU GPL, read the file 'COPYING' for more information
*/
+#ifndef SP_FECOMPOSITE_H_SEEN
+#define SP_FECOMPOSITE_H_SEEN
-#include "sp-filter.h"
-#include "composite-fns.h"
+#include "sp-filter-primitive.h"
+
+#define SP_TYPE_FECOMPOSITE (sp_feComposite_get_type())
+#define SP_FECOMPOSITE(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), SP_TYPE_FECOMPOSITE, SPFeComposite))
+#define SP_FECOMPOSITE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), SP_TYPE_FECOMPOSITE, SPFeCompositeClass))
+#define SP_IS_FECOMPOSITE(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), SP_TYPE_FECOMPOSITE))
+#define SP_IS_FECOMPOSITE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), SP_TYPE_FECOMPOSITE))
enum FeCompositeOperator {
// Default value is 'over', but let's distinquish specifying the
@@ -29,7 +32,6 @@ enum FeCompositeOperator {
COMPOSITE_ENDOPERATOR
};
-/* FeComposite base class */
class SPFeCompositeClass;
struct SPFeComposite : public SPFilterPrimitive {
@@ -44,7 +46,6 @@ struct SPFeCompositeClass {
GType sp_feComposite_get_type();
-
#endif /* !SP_FECOMPOSITE_H_SEEN */
/*
diff --git a/src/filters/convolvematrix-fns.h b/src/filters/convolvematrix-fns.h
deleted file mode 100644
index 76baf7f41..000000000
--- a/src/filters/convolvematrix-fns.h
+++ /dev/null
@@ -1,38 +0,0 @@
-#ifndef SP_FECONVOLVEMATRIX_FNS_H
-#define SP_FECONVOLVEMATRIX_FNS_H
-
-/** \file
- * Macros and fn declarations related to gaussian blur filter.
- */
-
-#include <glib-object.h>
-#include <glib/gtypes.h>
-
-namespace Inkscape {
-namespace XML {
-class Node;
-}
-}
-
-class SPFeConvolveMatrix;
-
-#define SP_TYPE_FECONVOLVEMATRIX (sp_feConvolveMatrix_get_type())
-#define SP_FECONVOLVEMATRIX(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), SP_TYPE_FECONVOLVEMATRIX, SPFeConvolveMatrix))
-#define SP_FECONVOLVEMATRIX_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), SP_TYPE_FECONVOLVEMATRIX, SPFeConvolveMatrixClass))
-#define SP_IS_FECONVOLVEMATRIX(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), SP_TYPE_FECONVOLVEMATRIX))
-#define SP_IS_FECONVOLVEMATRIX_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), SP_TYPE_FECONVOLVEMATRIX))
-
-GType sp_feConvolveMatrix_get_type();
-
-#endif /* !SP_FECONVOLVEMATRIX_FNS_H */
-
-/*
- Local Variables:
- mode:c++
- c-file-style:"stroustrup"
- c-file-offsets:((innamespace . 0)(inline-open . 0)(case-label . +))
- indent-tabs-mode:nil
- fill-column:99
- End:
-*/
-// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:encoding=utf-8:textwidth=99 :
diff --git a/src/filters/convolvematrix.cpp b/src/filters/convolvematrix.cpp
index 6440f340a..4444b82ce 100644
--- a/src/filters/convolvematrix.cpp
+++ b/src/filters/convolvematrix.cpp
@@ -19,15 +19,15 @@
#endif
#include <string.h>
-
+#include <math.h>
#include <vector>
#include "attributes.h"
#include "svg/svg.h"
-#include "convolvematrix.h"
+#include "filters/convolvematrix.h"
#include "helper-fns.h"
#include "xml/repr.h"
+#include "display/nr-filter.h"
#include "display/nr-filter-convolve-matrix.h"
-#include <math.h>
/* FeConvolveMatrix base class */
diff --git a/src/filters/convolvematrix.h b/src/filters/convolvematrix.h
index 1e8545040..11120698d 100644
--- a/src/filters/convolvematrix.h
+++ b/src/filters/convolvematrix.h
@@ -1,8 +1,5 @@
-#ifndef SP_FECONVOLVEMATRIX_H_SEEN
-#define SP_FECONVOLVEMATRIX_H_SEEN
-
-/** \file
- * SVG <feConvolveMatrix> implementation, see ConvolveMatrix.cpp.
+/** @file
+ * @brief SVG matrix convolution filter effect
*/
/*
* Authors:
@@ -13,18 +10,23 @@
*
* Released under GNU GPL, read the file 'COPYING' for more information
*/
+#ifndef SP_FECONVOLVEMATRIX_H_SEEN
+#define SP_FECONVOLVEMATRIX_H_SEEN
-#include "sp-filter.h"
-#include "convolvematrix-fns.h"
+#include <vector>
+#include "sp-filter-primitive.h"
#include "number-opt-number.h"
#include "display/nr-filter-convolve-matrix.h"
-#include <vector>
-/* FeConvolveMatrix base class */
+#define SP_TYPE_FECONVOLVEMATRIX (sp_feConvolveMatrix_get_type())
+#define SP_FECONVOLVEMATRIX(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), SP_TYPE_FECONVOLVEMATRIX, SPFeConvolveMatrix))
+#define SP_FECONVOLVEMATRIX_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), SP_TYPE_FECONVOLVEMATRIX, SPFeConvolveMatrixClass))
+#define SP_IS_FECONVOLVEMATRIX(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), SP_TYPE_FECONVOLVEMATRIX))
+#define SP_IS_FECONVOLVEMATRIX_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), SP_TYPE_FECONVOLVEMATRIX))
+
class SPFeConvolveMatrixClass;
struct SPFeConvolveMatrix : public SPFilterPrimitive {
- /* CONVOLVEMATRIX ATTRIBUTES */
NumberOptNumber order;
std::vector<gdouble> kernelMatrix;
double divisor, bias;
@@ -32,7 +34,7 @@ struct SPFeConvolveMatrix : public SPFilterPrimitive {
Inkscape::Filters::FilterConvolveMatrixEdgeMode edgeMode;
NumberOptNumber kernelUnitLength;
bool preserveAlpha;
- //some helper variables:
+
bool targetXIsSet;
bool targetYIsSet;
bool divisorIsSet;
@@ -45,7 +47,6 @@ struct SPFeConvolveMatrixClass {
GType sp_feConvolveMatrix_get_type();
-
#endif /* !SP_FECONVOLVEMATRIX_H_SEEN */
/*
diff --git a/src/filters/diffuselighting-fns.h b/src/filters/diffuselighting-fns.h
deleted file mode 100644
index b91ed80f6..000000000
--- a/src/filters/diffuselighting-fns.h
+++ /dev/null
@@ -1,38 +0,0 @@
-#ifndef SP_FEDIFFUSELIGHTING_FNS_H
-#define SP_FEDIFFUSELIGHTING_FNS_H
-
-/** \file
- * Macros and fn declarations related to gaussian blur filter.
- */
-
-#include <glib-object.h>
-#include <glib/gtypes.h>
-
-namespace Inkscape {
-namespace XML {
-class Node;
-}
-}
-
-class SPFeDiffuseLighting;
-
-#define SP_TYPE_FEDIFFUSELIGHTING (sp_feDiffuseLighting_get_type())
-#define SP_FEDIFFUSELIGHTING(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), SP_TYPE_FEDIFFUSELIGHTING, SPFeDiffuseLighting))
-#define SP_FEDIFFUSELIGHTING_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), SP_TYPE_FEDIFFUSELIGHTING, SPFeDiffuseLightingClass))
-#define SP_IS_FEDIFFUSELIGHTING(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), SP_TYPE_FEDIFFUSELIGHTING))
-#define SP_IS_FEDIFFUSELIGHTING_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), SP_TYPE_FEDIFFUSELIGHTING))
-
-GType sp_feDiffuseLighting_get_type();
-
-#endif /* !SP_FEDIFFUSELIGHTING_FNS_H */
-
-/*
- Local Variables:
- mode:c++
- c-file-style:"stroustrup"
- c-file-offsets:((innamespace . 0)(inline-open . 0)(case-label . +))
- indent-tabs-mode:nil
- fill-column:99
- End:
-*/
-// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:encoding=utf-8:textwidth=99 :
diff --git a/src/filters/diffuselighting.cpp b/src/filters/diffuselighting.cpp
index bdc569083..117b9d145 100644
--- a/src/filters/diffuselighting.cpp
+++ b/src/filters/diffuselighting.cpp
@@ -23,7 +23,8 @@
#include "svg/svg.h"
#include "sp-object.h"
#include "svg/svg-color.h"
-#include "diffuselighting.h"
+#include "filters/diffuselighting.h"
+#include "display/nr-filter.h"
#include "xml/repr.h"
#include "display/nr-filter-diffuselighting.h"
diff --git a/src/filters/diffuselighting.h b/src/filters/diffuselighting.h
index 3c6c0ae73..0cb62c5a7 100644
--- a/src/filters/diffuselighting.h
+++ b/src/filters/diffuselighting.h
@@ -1,46 +1,46 @@
-#ifndef SP_FEDIFFUSELIGHTING_H_SEEN
-#define SP_FEDIFFUSELIGHTING_H_SEEN
-
-/** \file
- * SVG <feDiffuseLighting> implementation, see DiffuseLighting.cpp.
- */
-/*
+/** @file
+ * @brief SVG diffuse lighting filter effect
+ *//*
* Authors:
* Hugo Rodrigues <haa.rodrigues@gmail.com>
* Jean-Rene Reinhard <jr@komite.net>
*
- * Copyright (C) 2006 Hugo Rodrigues
- * 2007 authors
- *
+ * Copyright (C) 2006-2007 Authors
* Released under GNU GPL, read the file 'COPYING' for more information
*/
-#include "sp-filter.h"
-#include "diffuselighting-fns.h"
+#ifndef SP_FEDIFFUSELIGHTING_H_SEEN
+#define SP_FEDIFFUSELIGHTING_H_SEEN
+
+#include "sp-filter-primitive.h"
+#include "number-opt-number.h"
namespace Inkscape {
namespace Filters {
class FilterDiffuseLighting;
-}
-}
+} }
+
+#define SP_TYPE_FEDIFFUSELIGHTING (sp_feDiffuseLighting_get_type())
+#define SP_FEDIFFUSELIGHTING(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), SP_TYPE_FEDIFFUSELIGHTING, SPFeDiffuseLighting))
+#define SP_FEDIFFUSELIGHTING_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), SP_TYPE_FEDIFFUSELIGHTING, SPFeDiffuseLightingClass))
+#define SP_IS_FEDIFFUSELIGHTING(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), SP_TYPE_FEDIFFUSELIGHTING))
+#define SP_IS_FEDIFFUSELIGHTING_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), SP_TYPE_FEDIFFUSELIGHTING))
+
+namespace Inkscape {
+namespace Filters {
+class FilterDiffuseLighting;
+} }
-/* FeDiffuseLighting base class */
class SPFeDiffuseLightingClass;
struct SPFeDiffuseLighting : public SPFilterPrimitive {
- /** DIFFUSELIGHTING ATTRIBUTES HERE */
- /** surfaceScale attribute */
gfloat surfaceScale;
guint surfaceScale_set : 1;
- /** diffuseConstant attribute */
gfloat diffuseConstant;
guint diffuseConstant_set : 1;
- /** kernelUnitLength attribute */
NumberOptNumber kernelUnitLength;
- /** lighting-color property */
guint32 lighting_color;
guint lighting_color_set : 1;
- /** pointer to the associated renderer */
Inkscape::Filters::FilterDiffuseLighting *renderer;
};
@@ -50,7 +50,6 @@ struct SPFeDiffuseLightingClass {
GType sp_feDiffuseLighting_get_type();
-
#endif /* !SP_FEDIFFUSELIGHTING_H_SEEN */
/*
diff --git a/src/filters/displacementmap-fns.h b/src/filters/displacementmap-fns.h
deleted file mode 100644
index 6d92c6b78..000000000
--- a/src/filters/displacementmap-fns.h
+++ /dev/null
@@ -1,38 +0,0 @@
-#ifndef SP_FEDISPLACEMENTMAP_FNS_H
-#define SP_FEDISPLACEMENTMAP_FNS_H
-
-/** \file
- * Macros and fn declarations related to gaussian blur filter.
- */
-
-#include <glib-object.h>
-#include <glib/gtypes.h>
-
-namespace Inkscape {
-namespace XML {
-class Node;
-}
-}
-
-class SPFeDisplacementMap;
-
-#define SP_TYPE_FEDISPLACEMENTMAP (sp_feDisplacementMap_get_type())
-#define SP_FEDISPLACEMENTMAP(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), SP_TYPE_FEDISPLACEMENTMAP, SPFeDisplacementMap))
-#define SP_FEDISPLACEMENTMAP_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), SP_TYPE_FEDISPLACEMENTMAP, SPFeDisplacementMapClass))
-#define SP_IS_FEDISPLACEMENTMAP(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), SP_TYPE_FEDISPLACEMENTMAP))
-#define SP_IS_FEDISPLACEMENTMAP_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), SP_TYPE_FEDISPLACEMENTMAP))
-
-GType sp_feDisplacementMap_get_type();
-
-#endif /* !SP_FEDISPLACEMENTMAP_FNS_H */
-
-/*
- Local Variables:
- mode:c++
- c-file-style:"stroustrup"
- c-file-offsets:((innamespace . 0)(inline-open . 0)(case-label . +))
- indent-tabs-mode:nil
- fill-column:99
- End:
-*/
-// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:encoding=utf-8:textwidth=99 :
diff --git a/src/filters/displacementmap.cpp b/src/filters/displacementmap.cpp
index baa17d785..cfa8e427e 100644
--- a/src/filters/displacementmap.cpp
+++ b/src/filters/displacementmap.cpp
@@ -19,10 +19,12 @@
#include "attributes.h"
#include "svg/svg.h"
-#include "displacementmap.h"
+#include "filters/displacementmap.h"
#include "xml/repr.h"
-#include "display/nr-filter-displacement-map.h"
+#include "sp-filter.h"
#include "helper-fns.h"
+#include "display/nr-filter.h"
+#include "display/nr-filter-displacement-map.h"
/* FeDisplacementMap base class */
diff --git a/src/filters/displacementmap.h b/src/filters/displacementmap.h
index 6a8ac9cd9..414b3e663 100644
--- a/src/filters/displacementmap.h
+++ b/src/filters/displacementmap.h
@@ -1,10 +1,6 @@
-#ifndef SP_FEDISPLACEMENTMAP_H_SEEN
-#define SP_FEDISPLACEMENTMAP_H_SEEN
-
/** \file
- * SVG <feDisplacementMap> implementation, see DisplacementMap.cpp.
- */
-/*
+ * SVG displacement map filter effect
+ *//*
* Authors:
* Hugo Rodrigues <haa.rodrigues@gmail.com>
*
@@ -13,8 +9,16 @@
* Released under GNU GPL, read the file 'COPYING' for more information
*/
-#include "sp-filter.h"
-#include "displacementmap-fns.h"
+#ifndef SP_FEDISPLACEMENTMAP_H_SEEN
+#define SP_FEDISPLACEMENTMAP_H_SEEN
+
+#include "sp-filter-primitive.h"
+
+#define SP_TYPE_FEDISPLACEMENTMAP (sp_feDisplacementMap_get_type())
+#define SP_FEDISPLACEMENTMAP(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), SP_TYPE_FEDISPLACEMENTMAP, SPFeDisplacementMap))
+#define SP_FEDISPLACEMENTMAP_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), SP_TYPE_FEDISPLACEMENTMAP, SPFeDisplacementMapClass))
+#define SP_IS_FEDISPLACEMENTMAP(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), SP_TYPE_FEDISPLACEMENTMAP))
+#define SP_IS_FEDISPLACEMENTMAP_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), SP_TYPE_FEDISPLACEMENTMAP))
enum FilterDisplacementMapChannelSelector {
DISPLACEMENTMAP_CHANNEL_RED,
@@ -24,11 +28,9 @@ enum FilterDisplacementMapChannelSelector {
DISPLACEMENTMAP_CHANNEL_ENDTYPE
};
-/* FeDisplacementMap base class */
class SPFeDisplacementMapClass;
struct SPFeDisplacementMap : public SPFilterPrimitive {
- /** DISPLACEMENTMAP ATTRIBUTES HERE */
int in2;
double scale;
FilterDisplacementMapChannelSelector xChannelSelector;
@@ -41,7 +43,6 @@ struct SPFeDisplacementMapClass {
GType sp_feDisplacementMap_get_type();
-
#endif /* !SP_FEDISPLACEMENTMAP_H_SEEN */
/*
diff --git a/src/filters/distantlight.cpp b/src/filters/distantlight.cpp
index 41584c4a4..de33d967e 100644
--- a/src/filters/distantlight.cpp
+++ b/src/filters/distantlight.cpp
@@ -22,9 +22,9 @@
#include "attributes.h"
#include "document.h"
-#include "distantlight.h"
-#include "diffuselighting-fns.h"
-#include "specularlighting-fns.h"
+#include "filters/distantlight.h"
+#include "filters/diffuselighting.h"
+#include "filters/specularlighting.h"
#include "xml/repr.h"
#define SP_MACROS_SILENT
diff --git a/src/filters/flood-fns.h b/src/filters/flood-fns.h
deleted file mode 100644
index 8cc507274..000000000
--- a/src/filters/flood-fns.h
+++ /dev/null
@@ -1,38 +0,0 @@
-#ifndef SP_FEFLOOD_FNS_H
-#define SP_FEFLOOD_FNS_H
-
-/** \file
- * Macros and fn declarations related to gaussian blur filter.
- */
-
-#include <glib-object.h>
-#include <glib/gtypes.h>
-
-namespace Inkscape {
-namespace XML {
-class Node;
-}
-}
-
-class SPFeFlood;
-
-#define SP_TYPE_FEFLOOD (sp_feFlood_get_type())
-#define SP_FEFLOOD(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), SP_TYPE_FEFLOOD, SPFeFlood))
-#define SP_FEFLOOD_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), SP_TYPE_FEFLOOD, SPFeFloodClass))
-#define SP_IS_FEFLOOD(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), SP_TYPE_FEFLOOD))
-#define SP_IS_FEFLOOD_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), SP_TYPE_FEFLOOD))
-
-GType sp_feFlood_get_type();
-
-#endif /* !SP_FEFLOOD_FNS_H */
-
-/*
- Local Variables:
- mode:c++
- c-file-style:"stroustrup"
- c-file-offsets:((innamespace . 0)(inline-open . 0)(case-label . +))
- indent-tabs-mode:nil
- fill-column:99
- End:
-*/
-// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:encoding=utf-8:textwidth=99 :
diff --git a/src/filters/flood.cpp b/src/filters/flood.cpp
index 221b0daf2..8b7d4c5cd 100644
--- a/src/filters/flood.cpp
+++ b/src/filters/flood.cpp
@@ -21,9 +21,12 @@
#include "attributes.h"
#include "svg/svg.h"
-#include "flood.h"
+#include "svg/svg-color.h"
+#include "filters/flood.h"
#include "xml/repr.h"
#include "helper-fns.h"
+#include "display/nr-filter.h"
+#include "display/nr-filter-flood.h"
/* FeFlood base class */
diff --git a/src/filters/flood.h b/src/filters/flood.h
index f386e2cd4..220faca83 100644
--- a/src/filters/flood.h
+++ b/src/filters/flood.h
@@ -1,10 +1,6 @@
-#ifndef SP_FEFLOOD_H_SEEN
-#define SP_FEFLOOD_H_SEEN
-
-/** \file
- * SVG <feFlood> implementation, see Flood.cpp.
- */
-/*
+/** @file
+ * @brief SVG flood filter effect
+ *//*
* Authors:
* Hugo Rodrigues <haa.rodrigues@gmail.com>
*
@@ -13,18 +9,21 @@
* Released under GNU GPL, read the file 'COPYING' for more information
*/
-#include "sp-filter.h"
-#include "flood-fns.h"
+#ifndef SP_FEFLOOD_H_SEEN
+#define SP_FEFLOOD_H_SEEN
+
+#include "sp-filter-primitive.h"
#include "svg/svg-icc-color.h"
-#include "display/nr-filter.h"
-#include "display/nr-filter-flood.h"
+#define SP_TYPE_FEFLOOD (sp_feFlood_get_type())
+#define SP_FEFLOOD(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), SP_TYPE_FEFLOOD, SPFeFlood))
+#define SP_FEFLOOD_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), SP_TYPE_FEFLOOD, SPFeFloodClass))
+#define SP_IS_FEFLOOD(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), SP_TYPE_FEFLOOD))
+#define SP_IS_FEFLOOD_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), SP_TYPE_FEFLOOD))
-/* FeFlood base class */
class SPFeFloodClass;
struct SPFeFlood : public SPFilterPrimitive {
- /** FLOOD ATTRIBUTES HERE */
guint32 color;
SVGICCColor *icc;
double opacity;
diff --git a/src/sp-gaussian-blur.cpp b/src/filters/gaussian-blur.cpp
index e6eab5032..3f7cea0c9 100644
--- a/src/sp-gaussian-blur.cpp
+++ b/src/filters/gaussian-blur.cpp
@@ -20,7 +20,7 @@
#include "attributes.h"
#include "svg/svg.h"
-#include "sp-gaussian-blur.h"
+#include "filters/gaussian-blur.h"
#include "xml/repr.h"
#include "display/nr-filter.h"
diff --git a/src/sp-gaussian-blur-fns.h b/src/filters/gaussian-blur.h
index 030739263..5607080fe 100644
--- a/src/sp-gaussian-blur-fns.h
+++ b/src/filters/gaussian-blur.h
@@ -1,20 +1,19 @@
-#ifndef SP_GAUSSIANBLUR_FNS_H
-#define SP_GAUSSIANBLUR_FNS_H
-
-/** \file
- * Macros and fn declarations related to gaussian blur filter.
+/** @file
+ * @brief SVG Gaussian blur filter effect
+ *//*
+ * Authors:
+ * Hugo Rodrigues <haa.rodrigues@gmail.com>
+ *
+ * Copyright (C) 2006 Hugo Rodrigues
+ *
+ * Released under GNU GPL, read the file 'COPYING' for more information
*/
-#include <glib-object.h>
-#include <glib/gtypes.h>
-
-namespace Inkscape {
-namespace XML {
-class Node;
-}
-}
+#ifndef SP_GAUSSIANBLUR_H_SEEN
+#define SP_GAUSSIANBLUR_H_SEEN
-class SPGaussianBlur;
+#include "sp-filter-primitive.h"
+#include "number-opt-number.h"
#define SP_TYPE_GAUSSIANBLUR (sp_gaussianBlur_get_type())
#define SP_GAUSSIANBLUR(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), SP_TYPE_GAUSSIANBLUR, SPGaussianBlur))
@@ -22,11 +21,23 @@ class SPGaussianBlur;
#define SP_IS_GAUSSIANBLUR(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), SP_TYPE_GAUSSIANBLUR))
#define SP_IS_GAUSSIANBLUR_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), SP_TYPE_GAUSSIANBLUR))
+/* GaussianBlur base class */
+class SPGaussianBlurClass;
+
+struct SPGaussianBlur : public SPFilterPrimitive {
+ /** stdDeviation attribute */
+ NumberOptNumber stdDeviation;
+};
+
+struct SPGaussianBlurClass {
+ SPFilterPrimitiveClass parent_class;
+};
+
GType sp_gaussianBlur_get_type();
void sp_gaussianBlur_setDeviation(SPGaussianBlur *blur, float num);
void sp_gaussianBlur_setDeviation(SPGaussianBlur *blur, float num, float optnum);
-#endif /* !SP_GAUSSIANBLUR_FNS_H */
+#endif /* !SP_GAUSSIANBLUR_H_SEEN */
/*
Local Variables:
diff --git a/src/filters/image-fns.h b/src/filters/image-fns.h
deleted file mode 100644
index 0a8b453fe..000000000
--- a/src/filters/image-fns.h
+++ /dev/null
@@ -1,38 +0,0 @@
-#ifndef SP_FEIMAGE_FNS_H
-#define SP_FEIMAGE_FNS_H
-
-/** \file
- * Macros and fn declarations related to gaussian blur filter.
- */
-
-#include <glib-object.h>
-#include <glib/gtypes.h>
-
-namespace Inkscape {
-namespace XML {
-class Node;
-}
-}
-
-class SPFeImage;
-
-#define SP_TYPE_FEIMAGE (sp_feImage_get_type())
-#define SP_FEIMAGE(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), SP_TYPE_FEIMAGE, SPFeImage))
-#define SP_FEIMAGE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), SP_TYPE_FEIMAGE, SPFeImageClass))
-#define SP_IS_FEIMAGE(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), SP_TYPE_FEIMAGE))
-#define SP_IS_FEIMAGE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), SP_TYPE_FEIMAGE))
-
-GType sp_feImage_get_type();
-
-#endif /* !SP_FEIMAGE_FNS_H */
-
-/*
- Local Variables:
- mode:c++
- c-file-style:"stroustrup"
- c-file-offsets:((innamespace . 0)(inline-open . 0)(case-label . +))
- indent-tabs-mode:nil
- fill-column:99
- End:
-*/
-// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:encoding=utf-8:textwidth=99 :
diff --git a/src/filters/image.h b/src/filters/image.h
index 78e719ac7..a8fb65d6a 100644
--- a/src/filters/image.h
+++ b/src/filters/image.h
@@ -1,10 +1,6 @@
-#ifndef SP_FEIMAGE_H_SEEN
-#define SP_FEIMAGE_H_SEEN
-
-/** \file
- * SVG <feImage> implementation, see Image.cpp.
- */
-/*
+/** @file
+ * @brief SVG image filter effect
+ *//*
* Authors:
* Felipe Corrêa da Silva Sanches <juca@members.fsf.org>
* Hugo Rodrigues <haa.rodrigues@gmail.com>
@@ -14,17 +10,23 @@
* Released under GNU GPL, read the file 'COPYING' for more information
*/
-#include "sp-filter.h"
-#include "image-fns.h"
+#ifndef SP_FEIMAGE_H_SEEN
+#define SP_FEIMAGE_H_SEEN
+
+#include "sp-filter-primitive.h"
#include "svg/svg-length.h"
#include "sp-item.h"
#include "uri-references.h"
-/* FeImage base class */
+#define SP_TYPE_FEIMAGE (sp_feImage_get_type())
+#define SP_FEIMAGE(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), SP_TYPE_FEIMAGE, SPFeImage))
+#define SP_FEIMAGE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), SP_TYPE_FEIMAGE, SPFeImageClass))
+#define SP_IS_FEIMAGE(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), SP_TYPE_FEIMAGE))
+#define SP_IS_FEIMAGE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), SP_TYPE_FEIMAGE))
+
class SPFeImageClass;
struct SPFeImage : public SPFilterPrimitive {
- /** IMAGE ATTRIBUTES HERE */
gchar *href;
SVGLength x, y, height, width;
SPDocument *document;
@@ -41,7 +43,6 @@ struct SPFeImageClass {
GType sp_feImage_get_type();
-
#endif /* !SP_FEIMAGE_H_SEEN */
/*
diff --git a/src/filters/merge-fns.h b/src/filters/merge-fns.h
deleted file mode 100644
index 24bda1ae2..000000000
--- a/src/filters/merge-fns.h
+++ /dev/null
@@ -1,38 +0,0 @@
-#ifndef SP_FEMERGE_FNS_H
-#define SP_FEMERGE_FNS_H
-
-/** \file
- * Macros and fn declarations related to gaussian blur filter.
- */
-
-#include <glib-object.h>
-#include <glib/gtypes.h>
-
-namespace Inkscape {
-namespace XML {
-class Node;
-}
-}
-
-class SPFeMerge;
-
-#define SP_TYPE_FEMERGE (sp_feMerge_get_type())
-#define SP_FEMERGE(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), SP_TYPE_FEMERGE, SPFeMerge))
-#define SP_FEMERGE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), SP_TYPE_FEMERGE, SPFeMergeClass))
-#define SP_IS_FEMERGE(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), SP_TYPE_FEMERGE))
-#define SP_IS_FEMERGE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), SP_TYPE_FEMERGE))
-
-GType sp_feMerge_get_type();
-
-#endif /* !SP_FEMERGE_FNS_H */
-
-/*
- Local Variables:
- mode:c++
- c-file-style:"stroustrup"
- c-file-offsets:((innamespace . 0)(inline-open . 0)(case-label . +))
- indent-tabs-mode:nil
- fill-column:99
- End:
-*/
-// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:encoding=utf-8:textwidth=99 :
diff --git a/src/filters/merge.cpp b/src/filters/merge.cpp
index 437cb4b55..798b7dfcc 100644
--- a/src/filters/merge.cpp
+++ b/src/filters/merge.cpp
@@ -23,6 +23,7 @@
#include "merge.h"
#include "mergenode.h"
+#include "display/nr-filter.h"
#include "display/nr-filter-merge.h"
/* FeMerge base class */
diff --git a/src/filters/merge.h b/src/filters/merge.h
index 5d28faba9..c28eaa1f6 100644
--- a/src/filters/merge.h
+++ b/src/filters/merge.h
@@ -1,22 +1,23 @@
-#ifndef SP_FEMERGE_H_SEEN
-#define SP_FEMERGE_H_SEEN
-
/** \file
- * SVG <feMerge> implementation, see Merge.cpp.
- */
-/*
+ * SVG merge filter effect
+ *//*
* Authors:
* Hugo Rodrigues <haa.rodrigues@gmail.com>
*
* Copyright (C) 2006 Hugo Rodrigues
- *
* Released under GNU GPL, read the file 'COPYING' for more information
*/
+#ifndef SP_FEMERGE_H_SEEN
+#define SP_FEMERGE_H_SEEN
+
+#include "sp-filter-primitive.h"
-#include "sp-filter.h"
-#include "merge-fns.h"
+#define SP_TYPE_FEMERGE (sp_feMerge_get_type())
+#define SP_FEMERGE(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), SP_TYPE_FEMERGE, SPFeMerge))
+#define SP_FEMERGE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), SP_TYPE_FEMERGE, SPFeMergeClass))
+#define SP_IS_FEMERGE(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), SP_TYPE_FEMERGE))
+#define SP_IS_FEMERGE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), SP_TYPE_FEMERGE))
-/* FeMerge base class */
class SPFeMergeClass;
struct SPFeMerge : public SPFilterPrimitive {
diff --git a/src/filters/mergenode.cpp b/src/filters/mergenode.cpp
index 8a4e0dd0a..4ff569364 100644
--- a/src/filters/mergenode.cpp
+++ b/src/filters/mergenode.cpp
@@ -20,8 +20,9 @@
#include "attributes.h"
#include "xml/repr.h"
-#include "mergenode.h"
-#include "merge.h"
+#include "filters/mergenode.h"
+#include "filters/merge.h"
+#include "display/nr-filter-types.h"
static void sp_feMergeNode_class_init(SPFeMergeNodeClass *klass);
static void sp_feMergeNode_init(SPFeMergeNode *skeleton);
diff --git a/src/filters/morphology-fns.h b/src/filters/morphology-fns.h
deleted file mode 100644
index a0550405d..000000000
--- a/src/filters/morphology-fns.h
+++ /dev/null
@@ -1,38 +0,0 @@
-#ifndef SP_FEMORPHOLOGY_FNS_H
-#define SP_FEMORPHOLOGY_FNS_H
-
-/** \file
- * Macros and fn declarations related to gaussian blur filter.
- */
-
-#include <glib-object.h>
-#include <glib/gtypes.h>
-
-namespace Inkscape {
-namespace XML {
-class Node;
-}
-}
-
-class SPFeMorphology;
-
-#define SP_TYPE_FEMORPHOLOGY (sp_feMorphology_get_type())
-#define SP_FEMORPHOLOGY(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), SP_TYPE_FEMORPHOLOGY, SPFeMorphology))
-#define SP_FEMORPHOLOGY_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), SP_TYPE_FEMORPHOLOGY, SPFeMorphologyClass))
-#define SP_IS_FEMORPHOLOGY(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), SP_TYPE_FEMORPHOLOGY))
-#define SP_IS_FEMORPHOLOGY_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), SP_TYPE_FEMORPHOLOGY))
-
-GType sp_feMorphology_get_type();
-
-#endif /* !SP_FEMORPHOLOGY_FNS_H */
-
-/*
- Local Variables:
- mode:c++
- c-file-style:"stroustrup"
- c-file-offsets:((innamespace . 0)(inline-open . 0)(case-label . +))
- indent-tabs-mode:nil
- fill-column:99
- End:
-*/
-// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:encoding=utf-8:textwidth=99 :
diff --git a/src/filters/morphology.cpp b/src/filters/morphology.cpp
index 1530dae8c..f6f9dc609 100644
--- a/src/filters/morphology.cpp
+++ b/src/filters/morphology.cpp
@@ -24,6 +24,7 @@
#include "svg/svg.h"
#include "morphology.h"
#include "xml/repr.h"
+#include "display/nr-filter.h"
#include "display/nr-filter-morphology.h"
/* FeMorphology base class */
diff --git a/src/filters/morphology.h b/src/filters/morphology.h
index 20abf8a8d..01eb2f59b 100644
--- a/src/filters/morphology.h
+++ b/src/filters/morphology.h
@@ -1,10 +1,6 @@
-#ifndef SP_FEMORPHOLOGY_H_SEEN
-#define SP_FEMORPHOLOGY_H_SEEN
-
/** \file
- * SVG <feMorphology> implementation, see Morphology.cpp.
- */
-/*
+ * @brief SVG morphology filter effect
+ *//*
* Authors:
* Hugo Rodrigues <haa.rodrigues@gmail.com>
*
@@ -13,18 +9,22 @@
* Released under GNU GPL, read the file 'COPYING' for more information
*/
-#include "sp-filter.h"
-#include "morphology-fns.h"
+#ifndef SP_FEMORPHOLOGY_H_SEEN
+#define SP_FEMORPHOLOGY_H_SEEN
+
+#include "sp-filter-primitive.h"
#include "number-opt-number.h"
-#include "display/nr-filter.h"
#include "display/nr-filter-morphology.h"
+#define SP_TYPE_FEMORPHOLOGY (sp_feMorphology_get_type())
+#define SP_FEMORPHOLOGY(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), SP_TYPE_FEMORPHOLOGY, SPFeMorphology))
+#define SP_FEMORPHOLOGY_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), SP_TYPE_FEMORPHOLOGY, SPFeMorphologyClass))
+#define SP_IS_FEMORPHOLOGY(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), SP_TYPE_FEMORPHOLOGY))
+#define SP_IS_FEMORPHOLOGY_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), SP_TYPE_FEMORPHOLOGY))
-/* FeMorphology base class */
class SPFeMorphologyClass;
struct SPFeMorphology : public SPFilterPrimitive {
- /** MORPHOLOGY ATTRIBUTES HERE */
Inkscape::Filters::FilterMorphologyOperator Operator;
NumberOptNumber radius;
};
diff --git a/src/filters/offset-fns.h b/src/filters/offset-fns.h
deleted file mode 100644
index 38561c188..000000000
--- a/src/filters/offset-fns.h
+++ /dev/null
@@ -1,38 +0,0 @@
-#ifndef SP_FEOFFSET_FNS_H
-#define SP_FEOFFSET_FNS_H
-
-/** \file
- * Macros and fn declarations related to gaussian blur filter.
- */
-
-#include <glib-object.h>
-#include <glib/gtypes.h>
-
-namespace Inkscape {
-namespace XML {
-class Node;
-}
-}
-
-class SPFeOffset;
-
-#define SP_TYPE_FEOFFSET (sp_feOffset_get_type())
-#define SP_FEOFFSET(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), SP_TYPE_FEOFFSET, SPFeOffset))
-#define SP_FEOFFSET_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), SP_TYPE_FEOFFSET, SPFeOffsetClass))
-#define SP_IS_FEOFFSET(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), SP_TYPE_FEOFFSET))
-#define SP_IS_FEOFFSET_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), SP_TYPE_FEOFFSET))
-
-GType sp_feOffset_get_type();
-
-#endif /* !SP_FEOFFSET_FNS_H */
-
-/*
- Local Variables:
- mode:c++
- c-file-style:"stroustrup"
- c-file-offsets:((innamespace . 0)(inline-open . 0)(case-label . +))
- indent-tabs-mode:nil
- fill-column:99
- End:
-*/
-// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:encoding=utf-8:textwidth=99 :
diff --git a/src/filters/offset.cpp b/src/filters/offset.cpp
index 61ea45ff2..b436fd0fb 100644
--- a/src/filters/offset.cpp
+++ b/src/filters/offset.cpp
@@ -20,9 +20,10 @@
#include "attributes.h"
#include "svg/svg.h"
-#include "offset.h"
+#include "filters/offset.h"
#include "helper-fns.h"
#include "xml/repr.h"
+#include "display/nr-filter.h"
#include "display/nr-filter-offset.h"
/* FeOffset base class */
diff --git a/src/filters/offset.h b/src/filters/offset.h
index 72d852514..5319ff84e 100644
--- a/src/filters/offset.h
+++ b/src/filters/offset.h
@@ -1,10 +1,6 @@
-#ifndef SP_FEOFFSET_H_SEEN
-#define SP_FEOFFSET_H_SEEN
-
-/** \file
- * SVG <feOffset> implementation, see Offset.cpp.
- */
-/*
+/** @file
+ * @brief SVG offset filter effect
+ *//*
* Authors:
* Hugo Rodrigues <haa.rodrigues@gmail.com>
*
@@ -13,14 +9,20 @@
* Released under GNU GPL, read the file 'COPYING' for more information
*/
-#include "sp-filter.h"
-#include "offset-fns.h"
+#ifndef SP_FEOFFSET_H_SEEN
+#define SP_FEOFFSET_H_SEEN
+
+#include "sp-filter-primitive.h"
+
+#define SP_TYPE_FEOFFSET (sp_feOffset_get_type())
+#define SP_FEOFFSET(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), SP_TYPE_FEOFFSET, SPFeOffset))
+#define SP_FEOFFSET_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), SP_TYPE_FEOFFSET, SPFeOffsetClass))
+#define SP_IS_FEOFFSET(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), SP_TYPE_FEOFFSET))
+#define SP_IS_FEOFFSET_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), SP_TYPE_FEOFFSET))
-/* FeOffset base class */
class SPFeOffsetClass;
struct SPFeOffset : public SPFilterPrimitive {
- /** OFFSET ATTRIBUTES HERE */
double dx, dy;
};
diff --git a/src/filters/pointlight.cpp b/src/filters/pointlight.cpp
index ce58cf13e..5bb662c0f 100644
--- a/src/filters/pointlight.cpp
+++ b/src/filters/pointlight.cpp
@@ -22,9 +22,9 @@
#include "attributes.h"
#include "document.h"
-#include "pointlight.h"
-#include "diffuselighting-fns.h"
-#include "specularlighting-fns.h"
+#include "filters/pointlight.h"
+#include "filters/diffuselighting.h"
+#include "filters/specularlighting.h"
#include "xml/repr.h"
#define SP_MACROS_SILENT
diff --git a/src/filters/specularlighting-fns.h b/src/filters/specularlighting-fns.h
deleted file mode 100644
index bd48ba684..000000000
--- a/src/filters/specularlighting-fns.h
+++ /dev/null
@@ -1,38 +0,0 @@
-#ifndef SP_FESPECULARLIGHTING_FNS_H
-#define SP_FESPECULARLIGHTING_FNS_H
-
-/** \file
- * Macros and fn declarations related to gaussian blur filter.
- */
-
-#include <glib-object.h>
-#include <glib/gtypes.h>
-
-namespace Inkscape {
-namespace XML {
-class Node;
-}
-}
-
-class SPFeSpecularLighting;
-
-#define SP_TYPE_FESPECULARLIGHTING (sp_feSpecularLighting_get_type())
-#define SP_FESPECULARLIGHTING(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), SP_TYPE_FESPECULARLIGHTING, SPFeSpecularLighting))
-#define SP_FESPECULARLIGHTING_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), SP_TYPE_FESPECULARLIGHTING, SPFeSpecularLightingClass))
-#define SP_IS_FESPECULARLIGHTING(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), SP_TYPE_FESPECULARLIGHTING))
-#define SP_IS_FESPECULARLIGHTING_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), SP_TYPE_FESPECULARLIGHTING))
-
-GType sp_feSpecularLighting_get_type();
-
-#endif /* !SP_FESPECULARLIGHTING_FNS_H */
-
-/*
- Local Variables:
- mode:c++
- c-file-style:"stroustrup"
- c-file-offsets:((innamespace . 0)(inline-open . 0)(case-label . +))
- indent-tabs-mode:nil
- fill-column:99
- End:
-*/
-// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:encoding=utf-8:textwidth=99 :
diff --git a/src/filters/specularlighting.cpp b/src/filters/specularlighting.cpp
index 03a0c7f96..1b6000522 100644
--- a/src/filters/specularlighting.cpp
+++ b/src/filters/specularlighting.cpp
@@ -25,6 +25,7 @@
#include "svg/svg-color.h"
#include "specularlighting.h"
#include "xml/repr.h"
+#include "display/nr-filter.h"
#include "display/nr-filter-specularlighting.h"
/* FeSpecularLighting base class */
diff --git a/src/filters/specularlighting.h b/src/filters/specularlighting.h
index cdca5f99f..8d26b8cfe 100644
--- a/src/filters/specularlighting.h
+++ b/src/filters/specularlighting.h
@@ -1,10 +1,6 @@
-#ifndef SP_FESPECULARLIGHTING_H_SEEN
-#define SP_FESPECULARLIGHTING_H_SEEN
-
-/** \file
- * SVG <feSpecularLighting> implementation, see SpecularLighting.cpp.
- */
-/*
+/** @file
+ * @brief SVG specular lighting filter effect
+ *//*
* Authors:
* Hugo Rodrigues <haa.rodrigues@gmail.com>
* Jean-Rene Reinhard <jr@komite.net>
@@ -15,8 +11,17 @@
* Released under GNU GPL, read the file 'COPYING' for more information
*/
-#include "sp-filter.h"
-#include "specularlighting-fns.h"
+#ifndef SP_FESPECULARLIGHTING_H_SEEN
+#define SP_FESPECULARLIGHTING_H_SEEN
+
+#include "sp-filter-primitive.h"
+#include "number-opt-number.h"
+
+#define SP_TYPE_FESPECULARLIGHTING (sp_feSpecularLighting_get_type())
+#define SP_FESPECULARLIGHTING(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), SP_TYPE_FESPECULARLIGHTING, SPFeSpecularLighting))
+#define SP_FESPECULARLIGHTING_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), SP_TYPE_FESPECULARLIGHTING, SPFeSpecularLightingClass))
+#define SP_IS_FESPECULARLIGHTING(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), SP_TYPE_FESPECULARLIGHTING))
+#define SP_IS_FESPECULARLIGHTING_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), SP_TYPE_FESPECULARLIGHTING))
namespace Inkscape {
namespace Filters {
@@ -24,23 +29,16 @@ class FilterSpecularLighting;
}
}
-/* FeSpecularLighting base class */
class SPFeSpecularLightingClass;
struct SPFeSpecularLighting : public SPFilterPrimitive {
- /** SPECULARLIGHTING ATTRIBUTES HERE */
- /** surfaceScale attribute */
gfloat surfaceScale;
guint surfaceScale_set : 1;
- /** specularConstant attribute */
gfloat specularConstant;
guint specularConstant_set : 1;
- /** specularConstant attribute */
gfloat specularExponent;
guint specularExponent_set : 1;
- /** kernelUnitLenght attribute */
NumberOptNumber kernelUnitLength;
- /** lighting-color property */
guint32 lighting_color;
guint lighting_color_set : 1;
diff --git a/src/filters/spotlight.cpp b/src/filters/spotlight.cpp
index 3b518f0b4..10815cfb1 100644
--- a/src/filters/spotlight.cpp
+++ b/src/filters/spotlight.cpp
@@ -22,9 +22,9 @@
#include "attributes.h"
#include "document.h"
-#include "spotlight.h"
-#include "diffuselighting-fns.h"
-#include "specularlighting-fns.h"
+#include "filters/spotlight.h"
+#include "filters/diffuselighting.h"
+#include "filters/specularlighting.h"
#include "xml/repr.h"
#define SP_MACROS_SILENT
diff --git a/src/filters/tile-fns.h b/src/filters/tile-fns.h
deleted file mode 100644
index b7c4c5f27..000000000
--- a/src/filters/tile-fns.h
+++ /dev/null
@@ -1,38 +0,0 @@
-#ifndef SP_FETILE_FNS_H
-#define SP_FETILE_FNS_H
-
-/** \file
- * Macros and fn declarations related to gaussian blur filter.
- */
-
-#include <glib-object.h>
-#include <glib/gtypes.h>
-
-namespace Inkscape {
-namespace XML {
-class Node;
-}
-}
-
-class SPFeTile;
-
-#define SP_TYPE_FETILE (sp_feTile_get_type())
-#define SP_FETILE(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), SP_TYPE_FETILE, SPFeTile))
-#define SP_FETILE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), SP_TYPE_FETILE, SPFeTileClass))
-#define SP_IS_FETILE(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), SP_TYPE_FETILE))
-#define SP_IS_FETILE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), SP_TYPE_FETILE))
-
-GType sp_feTile_get_type();
-
-#endif /* !SP_FETILE_FNS_H */
-
-/*
- Local Variables:
- mode:c++
- c-file-style:"stroustrup"
- c-file-offsets:((innamespace . 0)(inline-open . 0)(case-label . +))
- indent-tabs-mode:nil
- fill-column:99
- End:
-*/
-// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:encoding=utf-8:textwidth=99 :
diff --git a/src/filters/tile.cpp b/src/filters/tile.cpp
index 877f70b27..c87d78554 100644
--- a/src/filters/tile.cpp
+++ b/src/filters/tile.cpp
@@ -19,9 +19,10 @@
#include "attributes.h"
#include "svg/svg.h"
-#include "tile.h"
+#include "filters/tile.h"
#include "xml/repr.h"
-
+#include "display/nr-filter.h"
+#include "display/nr-filter-tile.h"
/* FeTile base class */
diff --git a/src/filters/tile.h b/src/filters/tile.h
index 9e12ca7ee..45c43213d 100644
--- a/src/filters/tile.h
+++ b/src/filters/tile.h
@@ -1,10 +1,6 @@
-#ifndef SP_FETILE_H_SEEN
-#define SP_FETILE_H_SEEN
-
-/** \file
- * SVG <feTile> implementation, see Tile.cpp.
- */
-/*
+/** @file
+ * @brief SVG tile filter effect
+ *//*
* Authors:
* Hugo Rodrigues <haa.rodrigues@gmail.com>
*
@@ -13,17 +9,21 @@
* Released under GNU GPL, read the file 'COPYING' for more information
*/
-#include "sp-filter.h"
-#include "tile-fns.h"
+#ifndef SP_FETILE_H_SEEN
+#define SP_FETILE_H_SEEN
-#include "display/nr-filter.h"
-#include "display/nr-filter-tile.h"
+#include "sp-filter-primitive.h"
+
+#define SP_TYPE_FETILE (sp_feTile_get_type())
+#define SP_FETILE(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), SP_TYPE_FETILE, SPFeTile))
+#define SP_FETILE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), SP_TYPE_FETILE, SPFeTileClass))
+#define SP_IS_FETILE(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), SP_TYPE_FETILE))
+#define SP_IS_FETILE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), SP_TYPE_FETILE))
/* FeTile base class */
class SPFeTileClass;
struct SPFeTile : public SPFilterPrimitive {
- /** TILE ATTRIBUTES HERE */
};
@@ -33,7 +33,6 @@ struct SPFeTileClass {
GType sp_feTile_get_type();
-
#endif /* !SP_FETILE_H_SEEN */
/*
diff --git a/src/filters/turbulence-fns.h b/src/filters/turbulence-fns.h
deleted file mode 100644
index 43b4450a5..000000000
--- a/src/filters/turbulence-fns.h
+++ /dev/null
@@ -1,38 +0,0 @@
-#ifndef SP_FETURBULENCE_FNS_H
-#define SP_FETURBULENCE_FNS_H
-
-/** \file
- * Macros and fn declarations related to gaussian blur filter.
- */
-
-#include <glib-object.h>
-#include <glib/gtypes.h>
-
-namespace Inkscape {
-namespace XML {
-class Node;
-}
-}
-
-class SPFeTurbulence;
-
-#define SP_TYPE_FETURBULENCE (sp_feTurbulence_get_type())
-#define SP_FETURBULENCE(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), SP_TYPE_FETURBULENCE, SPFeTurbulence))
-#define SP_FETURBULENCE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), SP_TYPE_FETURBULENCE, SPFeTurbulenceClass))
-#define SP_IS_FETURBULENCE(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), SP_TYPE_FETURBULENCE))
-#define SP_IS_FETURBULENCE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), SP_TYPE_FETURBULENCE))
-
-GType sp_feTurbulence_get_type();
-
-#endif /* !SP_FETURBULENCE_FNS_H */
-
-/*
- Local Variables:
- mode:c++
- c-file-style:"stroustrup"
- c-file-offsets:((innamespace . 0)(inline-open . 0)(case-label . +))
- indent-tabs-mode:nil
- fill-column:99
- End:
-*/
-// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:encoding=utf-8:textwidth=99 :
diff --git a/src/filters/turbulence.h b/src/filters/turbulence.h
index 792a6181a..e9403a164 100644
--- a/src/filters/turbulence.h
+++ b/src/filters/turbulence.h
@@ -1,10 +1,6 @@
-#ifndef SP_FETURBULENCE_H_SEEN
-#define SP_FETURBULENCE_H_SEEN
-
-/** \file
- * SVG <feTurbulence> implementation, see Turbulence.cpp.
- */
-/*
+/** @file
+ * @brief SVG turbulence filter effect
+ *//*
* Authors:
* Felipe Corrêa da Silva Sanches <juca@members.fsf.org>
* Hugo Rodrigues <haa.rodrigues@gmail.com>
@@ -14,11 +10,19 @@
* Released under GNU GPL, read the file 'COPYING' for more information
*/
-#include "sp-filter.h"
-#include "turbulence-fns.h"
+#ifndef SP_FETURBULENCE_H_SEEN
+#define SP_FETURBULENCE_H_SEEN
+
+#include "sp-filter-primitive.h"
#include "number-opt-number.h"
#include "display/nr-filter-turbulence.h"
+#define SP_TYPE_FETURBULENCE (sp_feTurbulence_get_type())
+#define SP_FETURBULENCE(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), SP_TYPE_FETURBULENCE, SPFeTurbulence))
+#define SP_FETURBULENCE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), SP_TYPE_FETURBULENCE, SPFeTurbulenceClass))
+#define SP_IS_FETURBULENCE(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), SP_TYPE_FETURBULENCE))
+#define SP_IS_FETURBULENCE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), SP_TYPE_FETURBULENCE))
+
/* FeTurbulence base class */
class SPFeTurbulenceClass;
diff --git a/src/preferences-skeleton.h b/src/preferences-skeleton.h
index c334ae31e..0c8834951 100644
--- a/src/preferences-skeleton.h
+++ b/src/preferences-skeleton.h
@@ -344,7 +344,6 @@ static char const preferences_skeleton[] =
" <group id=\"workarounds\"\n"
" colorsontop=\"0\"\n"
" partialdynamic=\"0\"/>\n"
-" <group id=\"threading\" numthreads=\"1\"/>\n"
" </group>\n"
"\n"
" <group id=\"extensions\">"
diff --git a/src/sp-filter-fns.h b/src/sp-filter-fns.h
deleted file mode 100644
index 4e1b012a3..000000000
--- a/src/sp-filter-fns.h
+++ /dev/null
@@ -1,53 +0,0 @@
-#ifndef SEEN_SP_FILTER_FNS_H
-#define SEEN_SP_FILTER_FNS_H
-
-/** \file
- * Macros and fn declarations related to filters.
- */
-
-#include <glib/gtypes.h>
-#include <glib-object.h>
-#include "libnr/nr-forward.h"
-#include "sp-filter-units.h"
-#include "sp-filter-primitive.h"
-
-class SPFilter;
-
-namespace Inkscape {
-namespace XML {
-class Node;
-}
-}
-
-#define SP_TYPE_FILTER (sp_filter_get_type())
-#define SP_FILTER(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), SP_TYPE_FILTER, SPFilter))
-#define SP_FILTER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), SP_TYPE_FILTER, SPFilterClass))
-#define SP_IS_FILTER(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), SP_TYPE_FILTER))
-#define SP_IS_FILTER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), SP_TYPE_FILTER))
-
-#define SP_FILTER_FILTER_UNITS(f) (SP_FILTER(f)->filterUnits)
-#define SP_FILTER_PRIMITIVE_UNITS(f) (SP_FILTER(f)->primitiveUnits)
-
-GType sp_filter_get_type();
-
-//need to define function
-void sp_filter_set_filter_units(SPFilter *filter, SPFilterUnits filterUnits);
-//need to define function
-void sp_filter_set_primitive_units(SPFilter *filter, SPFilterUnits filterUnits);
-
-SPFilterPrimitive *add_primitive(SPFilter *filter, SPFilterPrimitive *primitive);
-SPFilterPrimitive *get_primitive(SPFilter *filter, int index);
-
-
-#endif /* !SEEN_SP_FILTER_FNS_H */
-
-/*
- Local Variables:
- mode:c++
- c-file-style:"stroustrup"
- c-file-offsets:((innamespace . 0)(inline-open . 0)(case-label . +))
- indent-tabs-mode:nil
- fill-column:99
- End:
-*/
-// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:encoding=utf-8:textwidth=99 :
diff --git a/src/sp-filter-primitive.h b/src/sp-filter-primitive.h
index 3a7e73861..1ed101489 100644
--- a/src/sp-filter-primitive.h
+++ b/src/sp-filter-primitive.h
@@ -15,9 +15,6 @@
*/
#include "sp-object.h"
-#include "display/nr-filter.h"
-#include "display/nr-filter-primitive.h"
-#include "display/nr-filter-types.h"
#define SP_TYPE_FILTER_PRIMITIVE (sp_filter_primitive_get_type ())
#define SP_FILTER_PRIMITIVE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), SP_TYPE_FILTER_PRIMITIVE, SPFilterPrimitive))
@@ -27,6 +24,12 @@
class SPFilterPrimitive;
class SPFilterPrimitiveClass;
+namespace Inkscape {
+namespace Filters {
+class Filter;
+class FilterPrimitive;
+} }
+
struct SPFilterPrimitive : public SPObject {
int image_in, image_out;
diff --git a/src/sp-filter-reference.cpp b/src/sp-filter-reference.cpp
index 18e187603..79860d5d8 100644
--- a/src/sp-filter-reference.cpp
+++ b/src/sp-filter-reference.cpp
@@ -1,3 +1,4 @@
+#include "sp-filter.h"
#include "sp-filter-reference.h"
bool
diff --git a/src/sp-filter-reference.h b/src/sp-filter-reference.h
index 216ff1d6f..e5a3bc8ec 100644
--- a/src/sp-filter-reference.h
+++ b/src/sp-filter-reference.h
@@ -2,8 +2,10 @@
#define SEEN_SP_FILTER_REFERENCE_H
#include "uri-references.h"
-#include "sp-filter-fns.h"
+
class SPObject;
+class SPDocument;
+class SPFilter;
class SPFilterReference : public Inkscape::URIReference {
public:
@@ -18,7 +20,6 @@ protected:
virtual bool _acceptObject(SPObject *obj) const;
};
-
#endif /* !SEEN_SP_FILTER_REFERENCE_H */
/*
diff --git a/src/sp-filter.cpp b/src/sp-filter.cpp
index 4cbafe50c..44db09b86 100644
--- a/src/sp-filter.cpp
+++ b/src/sp-filter.cpp
@@ -28,6 +28,7 @@ using std::pair;
#include "document.h"
#include "sp-filter.h"
#include "sp-filter-reference.h"
+#include "sp-filter-primitive.h"
#include "uri.h"
#include "xml/repr.h"
#include <cstring>
diff --git a/src/sp-filter.h b/src/sp-filter.h
index 5ad3863e5..527a0b8a1 100644
--- a/src/sp-filter.h
+++ b/src/sp-filter.h
@@ -1,10 +1,6 @@
-#ifndef SP_FILTER_H_SEEN
-#define SP_FILTER_H_SEEN
-
/** \file
- * SVG <filter> implementation, see sp-filter.cpp.
- */
-/*
+ * SVG <filter> element
+ *//*
* Authors:
* Hugo Rodrigues <haa.rodrigues@gmail.com>
* Niko Kiirala <niko@kiirala.com>
@@ -13,6 +9,8 @@
*
* Released under GNU GPL, read the file 'COPYING' for more information
*/
+#ifndef SP_FILTER_H_SEEN
+#define SP_FILTER_H_SEEN
#include <map>
@@ -21,18 +19,24 @@
#include "number-opt-number.h"
#include "sp-object.h"
#include "sp-filter-units.h"
-#include "sp-filter-fns.h"
#include "svg/svg-length.h"
-#include "display/nr-filter.h"
-/* Filter base class */
+#define SP_TYPE_FILTER (sp_filter_get_type())
+#define SP_FILTER(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), SP_TYPE_FILTER, SPFilter))
+#define SP_FILTER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), SP_TYPE_FILTER, SPFilterClass))
+#define SP_IS_FILTER(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), SP_TYPE_FILTER))
+#define SP_IS_FILTER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), SP_TYPE_FILTER))
-/* MACROS DEFINED IN FILE sp-filter-fns.h */
+#define SP_FILTER_FILTER_UNITS(f) (SP_FILTER(f)->filterUnits)
+#define SP_FILTER_PRIMITIVE_UNITS(f) (SP_FILTER(f)->primitiveUnits)
-struct SPFilterReference;
+namespace Inkscape {
+namespace Filters {
+class Filter;
+} }
-class SPFilter;
-class SPFilterClass;
+struct SPFilterReference;
+class SPFilterPrimitive;
struct ltstr {
bool operator()(const char* s1, const char* s2) const;
@@ -70,34 +74,31 @@ struct SPFilterClass {
SPObjectClass parent_class;
};
-/*
- * Initializes the given Inkscape::Filters::Filter object as a renderer for this
- * SPFilter object.
- */
+GType sp_filter_get_type();
+
+void sp_filter_set_filter_units(SPFilter *filter, SPFilterUnits filterUnits);
+void sp_filter_set_primitive_units(SPFilter *filter, SPFilterUnits filterUnits);
+SPFilterPrimitive *add_primitive(SPFilter *filter, SPFilterPrimitive *primitive);
+SPFilterPrimitive *get_primitive(SPFilter *filter, int index);
+
+/* Initializes the given Inkscape::Filters::Filter object as a renderer for this
+ * SPFilter object. */
void sp_filter_build_renderer(SPFilter *sp_filter, Inkscape::Filters::Filter *nr_filter);
-/*
- * Returns the number of filter primitives in this SPFilter object.
- */
+/// Returns the number of filter primitives in this SPFilter object.
int sp_filter_primitive_count(SPFilter *filter);
-/**
- * Returns a slot number for given image name, or -1 for unknown name.
- */
+/// Returns a slot number for given image name, or -1 for unknown name.
int sp_filter_get_image_name(SPFilter *filter, gchar const *name);
-/**
- * Returns slot number for given image name, even if it's unknown.
- */
+
+/// Returns slot number for given image name, even if it's unknown.
int sp_filter_set_image_name(SPFilter *filter, gchar const *name);
-/**
- * Finds image name based on it's slot number. Returns 0 for unknown slot
- * numbers.
- */
+
+/** Finds image name based on it's slot number. Returns 0 for unknown slot
+ * numbers. */
gchar const *sp_filter_name_for_image(SPFilter const *filter, int const image);
-/*
- * Returns a result image name that is not in use inside this filter.
- */
+/// Returns a result image name that is not in use inside this filter.
Glib::ustring sp_filter_get_new_result_name(SPFilter *filter);
#endif /* !SP_FILTER_H_SEEN */
diff --git a/src/sp-gaussian-blur.h b/src/sp-gaussian-blur.h
deleted file mode 100644
index c86ee3288..000000000
--- a/src/sp-gaussian-blur.h
+++ /dev/null
@@ -1,45 +0,0 @@
-#ifndef SP_GAUSSIANBLUR_H_SEEN
-#define SP_GAUSSIANBLUR_H_SEEN
-
-/** \file
- * SVG <gaussianBlur> implementation, see sp-gaussianBlur.cpp.
- */
-/*
- * Authors:
- * Hugo Rodrigues <haa.rodrigues@gmail.com>
- *
- * Copyright (C) 2006 Hugo Rodrigues
- *
- * Released under GNU GPL, read the file 'COPYING' for more information
- */
-
-#include "sp-filter.h"
-#include "sp-gaussian-blur-fns.h"
-
-/* GaussianBlur base class */
-class SPGaussianBlurClass;
-
-struct SPGaussianBlur : public SPFilterPrimitive {
- /** stdDeviation attribute */
- NumberOptNumber stdDeviation;
-};
-
-struct SPGaussianBlurClass {
- SPFilterPrimitiveClass parent_class;
-};
-
-GType sp_gaussianBlur_get_type();
-
-
-#endif /* !SP_GAUSSIANBLUR_H_SEEN */
-
-/*
- Local Variables:
- mode:c++
- c-file-style:"stroustrup"
- c-file-offsets:((innamespace . 0)(inline-open . 0)(case-label . +))
- indent-tabs-mode:nil
- fill-column:99
- End:
-*/
-// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:encoding=utf-8:textwidth=99 :
diff --git a/src/sp-object-repr.cpp b/src/sp-object-repr.cpp
index 62143e3ab..cc289317e 100644
--- a/src/sp-object-repr.cpp
+++ b/src/sp-object-repr.cpp
@@ -59,7 +59,6 @@
#include "color-profile-fns.h"
#include "xml/repr.h"
#include "sp-filter.h"
-#include "sp-gaussian-blur.h"
#include "filters/blend.h"
#include "filters/colormatrix.h"
#include "filters/componenttransfer.h"
@@ -70,6 +69,7 @@
#include "filters/distantlight.h"
#include "filters/displacementmap.h"
#include "filters/flood.h"
+#include "filters/gaussian-blur.h"
#include "filters/image.h"
#include "filters/merge.h"
#include "filters/morphology.h"
diff --git a/src/spray-context.cpp b/src/spray-context.cpp
index 2bdac197f..ee168f136 100644
--- a/src/spray-context.cpp
+++ b/src/spray-context.cpp
@@ -1,5 +1,3 @@
-#define __SP_SPRAY_CONTEXT_C__
-
/*
* Spray Tool
*
@@ -36,7 +34,6 @@
#include "desktop.h"
#include "desktop-events.h"
#include "desktop-handles.h"
-#include "unistd.h"
#include "desktop-style.h"
#include "message-context.h"
#include "pixmaps/cursor-spray.xpm"
@@ -72,9 +69,6 @@
#include "style.h"
#include "box3d.h"
#include "sp-item-transform.h"
-#include "filter-chemistry.h"
-#include "sp-gaussian-blur-fns.h"
-#include "sp-gaussian-blur.h"
#include "spray-context.h"
#include "ui/dialog/dialog-manager.h"
diff --git a/src/tweak-context.cpp b/src/tweak-context.cpp
index 13299b5a4..36357ab84 100644
--- a/src/tweak-context.cpp
+++ b/src/tweak-context.cpp
@@ -72,8 +72,7 @@
#include "box3d.h"
#include "sp-item-transform.h"
#include "filter-chemistry.h"
-#include "sp-gaussian-blur-fns.h"
-#include "sp-gaussian-blur.h"
+#include "filters/gaussian-blur.h"
#include "tweak-context.h"
diff --git a/src/ui/dialog/filter-effects-dialog.cpp b/src/ui/dialog/filter-effects-dialog.cpp
index 1672c4b69..4ec719bf4 100644
--- a/src/ui/dialog/filter-effects-dialog.cpp
+++ b/src/ui/dialog/filter-effects-dialog.cpp
@@ -48,13 +48,13 @@
#include "filters/convolvematrix.h"
#include "filters/displacementmap.h"
#include "filters/distantlight.h"
+#include "filters/gaussian-blur.h"
#include "filters/merge.h"
#include "filters/mergenode.h"
#include "filters/offset.h"
#include "filters/pointlight.h"
#include "filters/spotlight.h"
#include "sp-filter-primitive.h"
-#include "sp-gaussian-blur.h"
#include "style.h"
#include "svg/svg-color.h"