summaryrefslogtreecommitdiffstats
path: root/src/libnr/nr-gradient.h
diff options
context:
space:
mode:
authorMenTaLguY <mental@rydia.net>2007-08-29 01:23:41 +0000
committermental <mental@users.sourceforge.net>2007-08-29 01:23:41 +0000
commitd65bb2794effa5b62ee2e877dddf07f8d647a31b (patch)
tree0cef933a2cd5c5857cd917bc424b68ce8130bb39 /src/libnr/nr-gradient.h
parentWhoops, put check on empty rect back in! Maybe no one noticed ;-) (diff)
downloadinkscape-d65bb2794effa5b62ee2e877dddf07f8d647a31b.tar.gz
inkscape-d65bb2794effa5b62ee2e877dddf07f8d647a31b.zip
Refactor gradient rendering to facilitate future changes, since the simple
addition of noise has been reported to be generally ineffective by users. (bzr r3605)
Diffstat (limited to 'src/libnr/nr-gradient.h')
-rw-r--r--src/libnr/nr-gradient.h47
1 files changed, 28 insertions, 19 deletions
diff --git a/src/libnr/nr-gradient.h b/src/libnr/nr-gradient.h
index e39ece2af..092ed1e22 100644
--- a/src/libnr/nr-gradient.h
+++ b/src/libnr/nr-gradient.h
@@ -23,20 +23,22 @@
#define NR_GRADIENT_VECTOR_BITS 10
#define NR_GRADIENT_VECTOR_LENGTH (1<<NR_GRADIENT_VECTOR_BITS)
-enum {
- NR_GRADIENT_SPREAD_PAD,
- NR_GRADIENT_SPREAD_REFLECT,
- NR_GRADIENT_SPREAD_REPEAT
+enum NRGradientSpread {
+ NR_GRADIENT_SPREAD_PAD,
+ NR_GRADIENT_SPREAD_REFLECT,
+ NR_GRADIENT_SPREAD_REPEAT
+};
+
+struct NRGradientRenderer : public NRRenderer {
+ const unsigned char *vector;
+ unsigned int spread;
};
/* Linear */
-struct NRLGradientRenderer {
- NRRenderer renderer;
- const unsigned char *vector;
- unsigned int spread;
- double x0, y0;
- double dx, dy;
+struct NRLGradientRenderer : public NRGradientRenderer {
+ double x0, y0;
+ double dx, dy;
};
NRRenderer *nr_lgradient_renderer_setup (NRLGradientRenderer *lgr,
@@ -48,15 +50,12 @@ NRRenderer *nr_lgradient_renderer_setup (NRLGradientRenderer *lgr,
/* Radial */
-struct NRRGradientRenderer {
- NRRenderer renderer;
- const unsigned char *vector;
- unsigned int spread;
- NRMatrix px2gs;
- float cx, cy;
- float fx, fy;
- float r;
- float C;
+struct NRRGradientRenderer : public NRGradientRenderer {
+ NRMatrix px2gs;
+ float cx, cy;
+ float fx, fy;
+ float r;
+ float C;
};
NRRenderer *nr_rgradient_renderer_setup (NRRGradientRenderer *rgr,
@@ -70,3 +69,13 @@ NRRenderer *nr_rgradient_renderer_setup (NRRGradientRenderer *rgr,
#endif
+/*
+ * 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 :