1 #ifndef __NR_FILTER_SPECULARLIGHTING_H__
2 #define __NR_FILTER_SPECULARLIGHTING_H__
4 /*
5 * feSpecularLighting renderer
6 *
7 * Authors:
8 * Niko Kiirala <niko@kiirala.com>
9 * Jean-Rene Reinhard <jr@komite.net>
10 *
11 * Copyright (C) 2007 authors
12 *
13 * Released under GNU GPL, read the file 'COPYING' for more information
14 */
16 #include <gdk/gdktypes.h>
17 #include "display/nr-light-types.h"
18 #include "display/nr-filter-primitive.h"
19 #include "display/nr-filter-slot.h"
20 #include "display/nr-filter-units.h"
21 #include "filters/distantlight.h"
22 #include "filters/pointlight.h"
23 #include "filters/spotlight.h"
24 #include "color.h"
26 namespace Inkscape {
27 namespace Filters {
29 class FilterSpecularLighting : public FilterPrimitive {
30 public:
31 union {
32 SPFeDistantLight *distant;
33 SPFePointLight *point;
34 SPFeSpotLight *spot;
35 } light;
36 LightType light_type;
37 gdouble surfaceScale;
38 gdouble specularConstant;
39 gdouble specularExponent;
40 guint32 lighting_color;
42 FilterSpecularLighting();
43 static FilterPrimitive *create();
44 virtual ~FilterSpecularLighting();
45 virtual int render(FilterSlot &slot, FilterUnits const &units);
46 virtual void area_enlarge(NRRectL &area, Geom::Matrix const &trans);
47 virtual FilterTraits get_input_traits();
49 private:
50 };
52 } /* namespace Filters */
53 } /* namespace Inkscape */
55 #endif /* __NR_FILTER_SPECULARLIGHTING_H__ */
56 /*
57 Local Variables:
58 mode:c++
59 c-file-style:"stroustrup"
60 c-file-offsets:((innamespace . 0)(inline-open . 0)(case-label . +))
61 indent-tabs-mode:nil
62 fill-column:99
63 End:
64 */
65 // vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:encoding=utf-8:textwidth=99 :