Code

Added support for in-parameter in filter primitives
[inkscape.git] / src / sp-filter.h
1 #ifndef SP_FILTER_H_SEEN
2 #define SP_FILTER_H_SEEN
4 /** \file
5  * SVG <filter> implementation, see sp-filter.cpp.
6  */
7 /*
8  * Authors:
9  *   Hugo Rodrigues <haa.rodrigues@gmail.com>
10  *   Niko Kiirala <niko@kiirala.com>
11  *
12  * Copyright (C) 2006,2007 Authors
13  *
14  * Released under GNU GPL, read the file 'COPYING' for more information
15  */
17 #include <map>
19 #include "number-opt-number.h"
20 #include "sp-object.h"
21 #include "sp-filter-units.h"
22 #include "sp-filter-fns.h"
23 #include "svg/svg-length.h"
24 #include "display/nr-filter.h"
26 /* Filter base class */
28 /* MACROS DEFINED IN FILE sp-filter-fns.h */
30 struct SPFilterReference;
32 class SPFilter;
33 class SPFilterClass;
35 struct ltstr {
36     bool operator()(const char* s1, const char* s2) const;
37 };
39 struct SPFilter : public SPObject {
41     /** filterUnits attribute */
42     SPFilterUnits filterUnits;
43     guint filterUnits_set : 1;
44     /** primitiveUnits attribute */
45     SPFilterUnits primitiveUnits;
46     guint primitiveUnits_set : 1;
47     /** X attribute */    
48     SVGLength x;
49     /** Y attribute */
50     SVGLength y;
51     /** WIDTH attribute */
52     SVGLength width;
53     /** HEIGHT attribute */
54     SVGLength height;
55     /** FILTERRES attribute */
56     NumberOptNumber filterRes;
57     /** HREF attribute */
58     SPFilterReference *href;
60     int _primitive_count;
61     int _primitive_table_size;
62     SPFilterPrimitive ** _primitives;
63     NR::Filter *_renderer;
65     std::map<gchar *, int, ltstr> _image_name;
66     int _image_number_next;
67 };
69 struct SPFilterClass {
70     SPObjectClass parent_class;
71 };
73 /*
74  * Initializes the given NR::Filter object as a renderer for this
75  * SPFilter object.
76  */
77 void sp_filter_build_renderer(SPFilter *sp_filter, NR::Filter *nr_filter);
79 /*
80  * Returns the number of filter primitives in this SPFilter object.
81  */
82 int sp_filter_primitive_count(SPFilter *filter);
84 int sp_filter_get_image_name(SPFilter *filter, gchar const *name);
85 int sp_filter_set_image_name(SPFilter *filter, gchar const *name);
87 #endif /* !SP_FILTER_H_SEEN */
89 /*
90   Local Variables:
91   mode:c++
92   c-file-style:"stroustrup"
93   c-file-offsets:((innamespace . 0)(inline-open . 0)(case-label . +))
94   indent-tabs-mode:nil
95   fill-column:99
96   End:
97 */
98 // vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:encoding=utf-8:textwidth=99 :