1 // SPDX-License-Identifier: GPL-2.0-or-later 2 /** @file 3 * @brief SVG turbulence filter effect 4 *//* 5 * Authors: 6 * Felipe Corrêa da Silva Sanches <juca@members.fsf.org> 7 * Hugo Rodrigues <haa.rodrigues@gmail.com> 8 * 9 * Copyright (C) 2006 Hugo Rodrigues 10 * 11 * Released under GNU GPL v2+, read the file 'COPYING' for more information. 12 */ 13 14 #ifndef SP_FETURBULENCE_H_SEEN 15 #define SP_FETURBULENCE_H_SEEN 16 17 #include "sp-filter-primitive.h" 18 #include "number-opt-number.h" 19 #include "display/nr-filter-turbulence.h" 20 21 #define SP_FETURBULENCE(obj) (dynamic_cast<SPFeTurbulence*>((SPObject*)obj)) 22 #define SP_IS_FETURBULENCE(obj) (dynamic_cast<const SPFeTurbulence*>((SPObject*)obj) != NULL) 23 24 /* FeTurbulence base class */ 25 26 class SPFeTurbulence : public SPFilterPrimitive { 27 public: 28 SPFeTurbulence(); 29 ~SPFeTurbulence() override; 30 31 /** TURBULENCE ATTRIBUTES HERE */ 32 NumberOptNumber baseFrequency; 33 int numOctaves; 34 double seed; 35 bool stitchTiles; 36 Inkscape::Filters::FilterTurbulenceType type; 37 SVGLength x, y, height, width; 38 bool updated; 39 40 protected: 41 void build(SPDocument* doc, Inkscape::XML::Node* repr) override; 42 void release() override; 43 44 void set(SPAttr key, const gchar* value) override; 45 46 void update(SPCtx* ctx, unsigned int flags) override; 47 48 Inkscape::XML::Node* write(Inkscape::XML::Document* doc, Inkscape::XML::Node* repr, guint flags) override; 49 50 void build_renderer(Inkscape::Filters::Filter* filter) override; 51 }; 52 53 #endif /* !SP_FETURBULENCE_H_SEEN */ 54 55 /* 56 Local Variables: 57 mode:c++ 58 c-file-style:"stroustrup" 59 c-file-offsets:((innamespace . 0)(inline-open . 0)(case-label . +)) 60 indent-tabs-mode:nil 61 fill-column:99 62 End: 63 */ 64 // vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:fileencoding=utf-8:textwidth=99 : 65