Code

fix compositing for premultiplication and non-alpha cases
[inkscape.git] / src / live_effects / lpe-test-doEffect-stack.cpp
1 #define INKSCAPE_LPE_DOEFFECT_STACK_CPP\r
2 \r
3 /*\r
4  * Copyright (C) Johan Engelen 2007 <j.b.c.engelen@utwente.nl>\r
5  *\r
6  * Released under GNU GPL, read the file 'COPYING' for more information\r
7  */\r
8 \r
9 #include "live_effects/lpe-test-doEffect-stack.h"\r
10 \r
11 #include <2geom/piecewise.h>\r
12 #include <vector>\r
13 #include <libnr/n-art-bpath.h>\r
14 \r
15 namespace Inkscape {\r
16 namespace LivePathEffect {\r
17 \r
18 \r
19 LPEdoEffectStackTest::LPEdoEffectStackTest(LivePathEffectObject *lpeobject) :\r
20     Effect(lpeobject),\r
21     step(_("Stack step"), _(""), "step", &wr, this)\r
22 {\r
23     registerParameter( dynamic_cast<Parameter *>(&step) );\r
24 }\r
25 \r
26 LPEdoEffectStackTest::~LPEdoEffectStackTest()\r
27 {\r
28 \r
29 }\r
30 \r
31 void\r
32 LPEdoEffectStackTest::doEffect (SPCurve * curve)\r
33 {\r
34     if (step >= 1) {\r
35         Effect::doEffect(curve);\r
36     } else {\r
37         // return here\r
38         return;\r
39     }\r
40 }\r
41 \r
42 NArtBpath *\r
43 LPEdoEffectStackTest::doEffect (NArtBpath * path_in)\r
44 {\r
45     if (step >= 2) {\r
46         return Effect::doEffect(path_in);\r
47     } else {\r
48         // return here\r
49         NArtBpath *path_out;\r
50 \r
51         unsigned ret = 0;\r
52         while ( path_in[ret].code != NR_END ) {\r
53             ++ret;\r
54         }\r
55         unsigned len = ++ret;\r
56 \r
57         path_out = g_new(NArtBpath, len);\r
58         memcpy(path_out, path_in, len * sizeof(NArtBpath));\r
59         return path_out;\r
60     }\r
61 }\r
62 \r
63 std::vector<Geom::Path>\r
64 LPEdoEffectStackTest::doEffect (std::vector<Geom::Path> & path_in)\r
65 {\r
66     if (step >= 3) {\r
67         return Effect::doEffect(path_in);\r
68     } else {\r
69         // return here\r
70         std::vector<Geom::Path> path_out = path_in;\r
71         return path_out;\r
72     }\r
73 }\r
74 \r
75 Geom::Piecewise<Geom::D2<Geom::SBasis> > \r
76 LPEdoEffectStackTest::doEffect (Geom::Piecewise<Geom::D2<Geom::SBasis> > & pwd2_in)\r
77 {\r
78     Geom::Piecewise<Geom::D2<Geom::SBasis> > output = pwd2_in;\r
79 \r
80     return output;\r
81 }\r
82 \r
83 \r
84 } // namespace LivePathEffect\r
85 } /* namespace Inkscape */\r
86 \r
87 /*\r
88   Local Variables:\r
89   mode:c++\r
90   c-file-style:"stroustrup"\r
91   c-file-offsets:((innamespace . 0)(inline-open . 0)(case-label . +))\r
92   indent-tabs-mode:nil\r
93   fill-column:99\r
94   End:\r
95 */\r
96 // vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4 :\r