a30a3c71411979ffa061e2f3e20a70637a1bd59d
1 #define INKSCAPE_LPE_SKELETON_CPP\r
2 /** \file\r
3 * SVG <skeleton> implementation, used as an example for a base starting class\r
4 * when implementing new LivePathEffects.\r
5 *\r
6 * In vi, three global search-and-replaces will let you rename everything\r
7 * in this and the .h file:\r
8 *\r
9 * :%s/SKELETON/YOURNAME/g\r
10 * :%s/Skeleton/Yourname/g\r
11 * :%s/skeleton/yourname/g\r
12 */\r
13 /*\r
14 * Authors:\r
15 * Johan Engelen\r
16 *\r
17 * Copyright (C) Johan Engelen 2007 <j.b.c.engelen@utwente.nl>\r
18 *\r
19 * Released under GNU GPL, read the file 'COPYING' for more information\r
20 */\r
21 \r
22 #include "live_effects/lpe-skeleton.h"\r
23 #include "display/curve.h"\r
24 #include <libnr/n-art-bpath.h>\r
25 \r
26 // You might need to include other 2geom files. You can add them here:\r
27 #include <2geom/path.h>\r
28 \r
29 namespace Inkscape {\r
30 namespace LivePathEffect {\r
31 \r
32 LPESkeleton::LPESkeleton(LivePathEffectObject *lpeobject) :\r
33 Effect(lpeobject),\r
34 // initialise your parameters here:\r
35 number(_("Float parameter"), _("just a real number like 1.4!"), "svgname", &wr, this, 1.2)\r
36 {\r
37 // register all your parameters here, so Inkscape knows which parameters this effect has:\r
38 registerParameter( dynamic_cast<Parameter *>(&number) );\r
39 }\r
40 \r
41 LPESkeleton::~LPESkeleton()\r
42 {\r
43 \r
44 }\r
45 \r
46 \r
47 /* ########################\r
48 * Choose to implement one of the doEffect functions. You can delete or comment out the others.\r
49 */\r
50 \r
51 /*\r
52 void\r
53 LPESkeleton::doEffect (SPCurve * curve)\r
54 {\r
55 // spice this up to make the effect actually *do* something!\r
56 }\r
57 \r
58 NArtBpath *\r
59 LPESkeleton::doEffect (NArtBpath * path_in)\r
60 {\r
61 NArtBpath *path_out;\r
62 unsigned ret = 0;\r
63 while ( path_in[ret].code != NR_END ) {\r
64 ++ret;\r
65 }\r
66 unsigned len = ++ret;\r
67 path_out = g_new(NArtBpath, len);\r
68 \r
69 memcpy(path_out, path_in, len * sizeof(NArtBpath)); // spice this up to make the effect actually *do* something!\r
70 \r
71 return path_out;\r
72 }\r
73 \r
74 std::vector<Geom::Path>\r
75 LPESkeleton::doEffect (std::vector<Geom::Path> & path_in)\r
76 {\r
77 std::vector<Geom::Path> path_out;\r
78 \r
79 path_out = path_in; // spice this up to make the effect actually *do* something!\r
80 \r
81 return path_out;\r
82 }\r
83 */\r
84 \r
85 Geom::Piecewise<Geom::D2<Geom::SBasis> >\r
86 LPESkeleton::doEffect (Geom::Piecewise<Geom::D2<Geom::SBasis> > & pwd2_in)\r
87 {\r
88 Geom::Piecewise<Geom::D2<Geom::SBasis> > output;\r
89 \r
90 output = pwd2_in; // spice this up to make the effect actually *do* something!\r
91 \r
92 return output;\r
93 }\r
94 \r
95 /* ######################## */\r
96 \r
97 }; //namespace LivePathEffect\r
98 }; /* namespace Inkscape */\r
99 \r
100 /*\r
101 Local Variables:\r
102 mode:c++\r
103 c-file-style:"stroustrup"\r
104 c-file-offsets:((innamespace . 0)(inline-open . 0)(case-label . +))\r
105 indent-tabs-mode:nil\r
106 fill-column:99\r
107 End:\r
108 */\r
109 // vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4 :\r