11f343b8117dbf56931f537820c2749a8232fec2Liam P. White#ifndef SEEN_SP_FILTER_PRIMITIVE_H
11f343b8117dbf56931f537820c2749a8232fec2Liam P. White#define SEEN_SP_FILTER_PRIMITIVE_H
91934be261c16d036521379306a74b0991720e67joncruz
f727367dddbf050f0a7d33757e9290f571cbd492kiirala/** \file
f727367dddbf050f0a7d33757e9290f571cbd492kiirala * Document level base class for all SVG filter primitives.
f727367dddbf050f0a7d33757e9290f571cbd492kiirala */
f727367dddbf050f0a7d33757e9290f571cbd492kiirala/*
f727367dddbf050f0a7d33757e9290f571cbd492kiirala * Authors:
f727367dddbf050f0a7d33757e9290f571cbd492kiirala * Hugo Rodrigues <haa.rodrigues@gmail.com>
f727367dddbf050f0a7d33757e9290f571cbd492kiirala * Niko Kiirala <niko@kiirala.com>
f727367dddbf050f0a7d33757e9290f571cbd492kiirala *
f727367dddbf050f0a7d33757e9290f571cbd492kiirala * Copyright (C) 2006,2007 Authors
f727367dddbf050f0a7d33757e9290f571cbd492kiirala *
f727367dddbf050f0a7d33757e9290f571cbd492kiirala * Released under GNU GPL, read the file 'COPYING' for more information
f727367dddbf050f0a7d33757e9290f571cbd492kiirala */
91934be261c16d036521379306a74b0991720e67joncruz
91934be261c16d036521379306a74b0991720e67joncruz#include "sp-object.h"
dff9bb0d25ad38c515c32e2c76a20e747c8eed10Krzysztof Kosiński#include "svg/svg-length.h"
91934be261c16d036521379306a74b0991720e67joncruz
aded4b44e9194df7c9905c5787d1c7a9553d12cdMarkus Engel#define SP_FILTER_PRIMITIVE(obj) (dynamic_cast<SPFilterPrimitive*>((SPObject*)obj))
d74e415b7dd25ccb70d40a9f11ec99f23b57ed63Markus Engel#define SP_IS_FILTER_PRIMITIVE(obj) (dynamic_cast<const SPFilterPrimitive*>((SPObject*)obj) != NULL)
91934be261c16d036521379306a74b0991720e67joncruz
7059798b454ecd2386eb02769ad8d9c6d9d5f98eKrzysztof Kosińskinamespace Inkscape {
7059798b454ecd2386eb02769ad8d9c6d9d5f98eKrzysztof Kosińskinamespace Filters {
7059798b454ecd2386eb02769ad8d9c6d9d5f98eKrzysztof Kosińskiclass Filter;
7059798b454ecd2386eb02769ad8d9c6d9d5f98eKrzysztof Kosińskiclass FilterPrimitive;
7059798b454ecd2386eb02769ad8d9c6d9d5f98eKrzysztof Kosiński} }
7059798b454ecd2386eb02769ad8d9c6d9d5f98eKrzysztof Kosiński
35087bff7509c736a32e0b74fd9ff0834bde7b6bMarkus Engelclass SPFilterPrimitive : public SPObject {
6ab675b12355da3e6c9a4a67d03e3a2c02d8c189Markus Engelpublic:
a2e796b608034e2c62290378d713058b8b58ef8fMarkus Engel SPFilterPrimitive();
c9ebeb3ded5075c514a3cfa23bc2619d70136493Markus Engel virtual ~SPFilterPrimitive();
91934be261c16d036521379306a74b0991720e67joncruz
1eb1d82bb52720d1379a4ed8f78c0e700251956dkiirala int image_in, image_out;
7c89b734639fa72a5d2ffdc9cf1f7ab22eff67f1tavmjong-free
7c89b734639fa72a5d2ffdc9cf1f7ab22eff67f1tavmjong-free /* filter primitive subregion */
7c89b734639fa72a5d2ffdc9cf1f7ab22eff67f1tavmjong-free SVGLength x, y, height, width;
6ab675b12355da3e6c9a4a67d03e3a2c02d8c189Markus Engel
81092741e7a5b65552e8224f5cb152a618d54a48Markus Engelprotected:
51dc158adbe2c9d1df3c941cbf78b90944d1afc2Markus Engel virtual void build(SPDocument* doc, Inkscape::XML::Node* repr);
51dc158adbe2c9d1df3c941cbf78b90944d1afc2Markus Engel virtual void release();
6ab675b12355da3e6c9a4a67d03e3a2c02d8c189Markus Engel
11f343b8117dbf56931f537820c2749a8232fec2Liam P. White virtual void set(unsigned int key, char const* value);
6ab675b12355da3e6c9a4a67d03e3a2c02d8c189Markus Engel
51dc158adbe2c9d1df3c941cbf78b90944d1afc2Markus Engel virtual void update(SPCtx* ctx, unsigned int flags);
6ab675b12355da3e6c9a4a67d03e3a2c02d8c189Markus Engel
11f343b8117dbf56931f537820c2749a8232fec2Liam P. White virtual Inkscape::XML::Node* write(Inkscape::XML::Document* doc, Inkscape::XML::Node* repr, unsigned int flags);
6ab675b12355da3e6c9a4a67d03e3a2c02d8c189Markus Engel
81092741e7a5b65552e8224f5cb152a618d54a48Markus Engelpublic:
81092741e7a5b65552e8224f5cb152a618d54a48Markus Engel virtual void build_renderer(Inkscape::Filters::Filter* filter) = 0;
6ab675b12355da3e6c9a4a67d03e3a2c02d8c189Markus Engel};
6ab675b12355da3e6c9a4a67d03e3a2c02d8c189Markus Engel
f727367dddbf050f0a7d33757e9290f571cbd492kiirala/* Common initialization for filter primitives */
d9a7c806ee7f408ddb61ff4f233c9d96111ee2b5johanengelenvoid sp_filter_primitive_renderer_common(SPFilterPrimitive *sp_prim, Inkscape::Filters::FilterPrimitive *nr_prim);
f727367dddbf050f0a7d33757e9290f571cbd492kiirala
ce31c2a2937dddb2eb4fd13b2cf8679882038d29kiiralaint sp_filter_primitive_name_previous_out(SPFilterPrimitive *prim);
11f343b8117dbf56931f537820c2749a8232fec2Liam P. Whiteint sp_filter_primitive_read_in(SPFilterPrimitive *prim, char const *name);
11f343b8117dbf56931f537820c2749a8232fec2Liam P. Whiteint sp_filter_primitive_read_result(SPFilterPrimitive *prim, char const *name);
1eb1d82bb52720d1379a4ed8f78c0e700251956dkiirala
91934be261c16d036521379306a74b0991720e67joncruz#endif
f727367dddbf050f0a7d33757e9290f571cbd492kiirala/*
f727367dddbf050f0a7d33757e9290f571cbd492kiirala Local Variables:
f727367dddbf050f0a7d33757e9290f571cbd492kiirala mode:c++
f727367dddbf050f0a7d33757e9290f571cbd492kiirala c-file-style:"stroustrup"
f727367dddbf050f0a7d33757e9290f571cbd492kiirala c-file-offsets:((innamespace . 0)(inline-open . 0)(case-label . +))
f727367dddbf050f0a7d33757e9290f571cbd492kiirala indent-tabs-mode:nil
f727367dddbf050f0a7d33757e9290f571cbd492kiirala fill-column:99
f727367dddbf050f0a7d33757e9290f571cbd492kiirala End:
f727367dddbf050f0a7d33757e9290f571cbd492kiirala*/
a4030d5ca449e7e384bc699cd249ee704faaeab0Chris Morgan// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:fileencoding=utf-8:textwidth=99 :