Code

Connector tool: make connectors avoid the convex hull of shapes.
[inkscape.git] / src / libnr / nr-gradient.h
index f9cb1ba458d629a43ccb22a93a52757c9619e488..1073f36ae18faeace48043584dbcd93aa0cf90b6 100644 (file)
@@ -7,37 +7,61 @@
  * Authors:
  *   Lauris Kaplinski <lauris@kaplinski.com>
  *
- * This code is in public domain
+ * Copyright (C) 2001-2002 Lauris Kaplinski
+ * Copyright (C) 2001-2002 Ximian, Inc.
+ *
+ * Released under GNU GPL, read the file 'COPYING' for more information
+ */
+
+/*
+ * Derived in part from public domain code by Lauris Kaplinski
  */
 
 #include <libnr/nr-matrix.h>
 #include <libnr/nr-render.h>
 
-#define NR_GRADIENT_VECTOR_LENGTH 1024
+#define NR_GRADIENT_VECTOR_BITS 10
+#define NR_GRADIENT_VECTOR_LENGTH (1<<NR_GRADIENT_VECTOR_BITS)
+
+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 */
 
-enum {
-       NR_GRADIENT_SPREAD_PAD,
-       NR_GRADIENT_SPREAD_REFLECT,
-       NR_GRADIENT_SPREAD_REPEAT
+struct NRLGradientRenderer : public NRGradientRenderer {
+    double x0, y0;
+    double dx, dy;
 };
 
+NRRenderer *nr_lgradient_renderer_setup (NRLGradientRenderer *lgr,
+                                        const unsigned char *cv, 
+                                        unsigned int spread, 
+                                        const NR::Matrix *gs2px,
+                                        float x0, float y0,
+                                        float x1, float y1);
+
 /* 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 {
+    NR::Matrix px2gs;
+    float cx, cy;
+    float fx, fy;
+    float r;
+    float C;
 };
 
 NRRenderer *nr_rgradient_renderer_setup (NRRGradientRenderer *rgr,
                                         const unsigned char *cv,
                                         unsigned int spread,
-                                        const NRMatrix *gs2px,
+                                        const NR::Matrix *gs2px,
                                         float cx, float cy,
                                         float fx, float fy,
                                         float r);
@@ -45,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 :