1 // SPDX-License-Identifier: GPL-2.0-or-later 2 /** \file 3 * SVG displacement map filter effect 4 *//* 5 * Authors: 6 * Hugo Rodrigues <haa.rodrigues@gmail.com> 7 * 8 * Copyright (C) 2006 Hugo Rodrigues 9 * 10 * Released under GNU GPL v2+, read the file 'COPYING' for more information. 11 */ 12 13 #ifndef SP_FEDISPLACEMENTMAP_H_SEEN 14 #define SP_FEDISPLACEMENTMAP_H_SEEN 15 16 #include "sp-filter-primitive.h" 17 18 #define SP_FEDISPLACEMENTMAP(obj) (dynamic_cast<SPFeDisplacementMap*>((SPObject*)obj)) 19 #define SP_IS_FEDISPLACEMENTMAP(obj) (dynamic_cast<const SPFeDisplacementMap*>((SPObject*)obj) != NULL) 20 21 enum FilterDisplacementMapChannelSelector { 22 DISPLACEMENTMAP_CHANNEL_RED, 23 DISPLACEMENTMAP_CHANNEL_GREEN, 24 DISPLACEMENTMAP_CHANNEL_BLUE, 25 DISPLACEMENTMAP_CHANNEL_ALPHA, 26 DISPLACEMENTMAP_CHANNEL_ENDTYPE 27 }; 28 29 class SPFeDisplacementMap : public SPFilterPrimitive { 30 public: 31 SPFeDisplacementMap(); 32 ~SPFeDisplacementMap() override; 33 34 int in2; 35 double scale; 36 FilterDisplacementMapChannelSelector xChannelSelector; 37 FilterDisplacementMapChannelSelector yChannelSelector; 38 39 protected: 40 void build(SPDocument* doc, Inkscape::XML::Node* repr) override; 41 void release() override; 42 43 void set(SPAttr key, const gchar* value) override; 44 45 void update(SPCtx* ctx, unsigned int flags) override; 46 47 Inkscape::XML::Node* write(Inkscape::XML::Document* doc, Inkscape::XML::Node* repr, guint flags) override; 48 49 void build_renderer(Inkscape::Filters::Filter* filter) override; 50 }; 51 52 #endif /* !SP_FEDISPLACEMENTMAP_H_SEEN */ 53 54 /* 55 Local Variables: 56 mode:c++ 57 c-file-style:"stroustrup" 58 c-file-offsets:((innamespace . 0)(inline-open . 0)(case-label . +)) 59 indent-tabs-mode:nil 60 fill-column:99 61 End: 62 */ 63 // vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:fileencoding=utf-8:textwidth=99 : 64