Code

even with zero opacity, paths must be selectable in outline mode
[inkscape.git] / src / display / nr-filter-blend.h
1 #ifndef __NR_FILTER_BLEND_H__
2 #define __NR_FILTER_BLEND_H__
4 /*
5  * SVG feBlend renderer
6  *
7  * "This filter composites two objects together using commonly used
8  * imaging software blending modes. It performs a pixel-wise combination
9  * of two input images." 
10  * http://www.w3.org/TR/SVG11/filters.html#feBlend
11  *
12  * Authors:
13  *   Niko Kiirala <niko@kiirala.com>
14  *
15  * Copyright (C) 2007 authors
16  *
17  * Released under GNU GPL, read the file 'COPYING' for more information
18  */
20 #include "display/nr-filter-primitive.h"
21 #include "display/nr-filter-slot.h"
22 #include "display/nr-filter-units.h"
23 #include "libnr/nr-matrix.h"
25 namespace NR {
27 enum FilterBlendMode {
28     BLEND_NORMAL,
29     BLEND_MULTIPLY,
30     BLEND_SCREEN,
31     BLEND_DARKEN,
32     BLEND_LIGHTEN,
33     BLEND_ENDMODE
34 };
36 class FilterBlend : public FilterPrimitive {
37 public:
38     FilterBlend();
39     static FilterPrimitive *create();
40     virtual ~FilterBlend();
42     virtual int render(FilterSlot &slot, FilterUnits const &units);
44     virtual void set_input(int slot);
45     virtual void set_input(int input, int slot);
46     void set_mode(FilterBlendMode mode);
48 private:
49     FilterBlendMode _blend_mode;
50     int _input2;
51 };
54 } /* namespace NR */
59 #endif /* __NR_FILTER_BLEND_H__ */
60 /*
61   Local Variables:
62   mode:c++
63   c-file-style:"stroustrup"
64   c-file-offsets:((innamespace . 0)(inline-open . 0)(case-label . +))
65   indent-tabs-mode:nil
66   fill-column:99
67   End:
68 */
69 // vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:encoding=utf-8:textwidth=99 :