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 :