diff options
| author | Felipe Corr??a da Silva Sanches <juca@members.fsf.org> | 2007-08-04 04:18:36 +0000 |
|---|---|---|
| committer | jucablues <jucablues@users.sourceforge.net> | 2007-08-04 04:18:36 +0000 |
| commit | 73cfc14aac46e4a2c026db46d81584a0842d4e8a (patch) | |
| tree | 2d007773f0bd1599307eebc68bdc566c80ac5053 /src/display | |
| parent | boiler plate code for feTile (diff) | |
| download | inkscape-73cfc14aac46e4a2c026db46d81584a0842d4e8a.tar.gz inkscape-73cfc14aac46e4a2c026db46d81584a0842d4e8a.zip | |
boilerplate code for the remaining filters. My next commits will
probably deal with setting default attribute values for these filters
(bzr r3363)
Diffstat (limited to 'src/display')
| -rw-r--r-- | src/display/Makefile_insert | 8 | ||||
| -rw-r--r-- | src/display/nr-filter-colormatrix.cpp | 60 | ||||
| -rw-r--r-- | src/display/nr-filter-colormatrix.h | 42 | ||||
| -rw-r--r-- | src/display/nr-filter-flood.cpp | 60 | ||||
| -rw-r--r-- | src/display/nr-filter-flood.h | 42 | ||||
| -rw-r--r-- | src/display/nr-filter-morphology.cpp | 60 | ||||
| -rw-r--r-- | src/display/nr-filter-morphology.h | 42 | ||||
| -rw-r--r-- | src/display/nr-filter.cpp | 15 |
8 files changed, 323 insertions, 6 deletions
diff --git a/src/display/Makefile_insert b/src/display/Makefile_insert index ed9eae9be..de6e64c4a 100644 --- a/src/display/Makefile_insert +++ b/src/display/Makefile_insert @@ -69,6 +69,10 @@ display_libspdisplay_a_SOURCES = \ display/nr-filter.h \ display/nr-filter-blend.cpp \ display/nr-filter-blend.h \ + display/nr-filter-colormatrix.cpp \ + display/nr-filter-colormatrix.h \ + display/nr-filter-component-transfer.cpp \ + display/nr-filter-component-transfer.h \ display/nr-filter-composite.h \ display/nr-filter-composite.cpp \ display/nr-filter-convolve-matrix.cpp \ @@ -77,6 +81,8 @@ display_libspdisplay_a_SOURCES = \ display/nr-filter-diffuselighting.h \ display/nr-filter-displacement-map.cpp \ display/nr-filter-displacement-map.h \ + display/nr-filter-flood.cpp \ + display/nr-filter-flood.h \ display/nr-filter-gaussian.cpp \ display/nr-filter-gaussian.h \ display/nr-filter-getalpha.cpp \ @@ -85,6 +91,8 @@ display_libspdisplay_a_SOURCES = \ display/nr-filter-image.h \ display/nr-filter-merge.cpp \ display/nr-filter-merge.h \ + display/nr-filter-morphology.cpp \ + display/nr-filter-morphology.h \ display/nr-filter-offset.cpp \ display/nr-filter-offset.h \ display/nr-filter-primitive.cpp \ diff --git a/src/display/nr-filter-colormatrix.cpp b/src/display/nr-filter-colormatrix.cpp new file mode 100644 index 000000000..060703ada --- /dev/null +++ b/src/display/nr-filter-colormatrix.cpp @@ -0,0 +1,60 @@ +/* + * feColorMatrix filter primitive renderer + * + * Authors: + * Felipe Corrêa da Silva Sanches <felipe.sanches@gmail.com> + * + * Copyright (C) 2007 authors + * + * Released under GNU GPL, read the file 'COPYING' for more information + */ + +#include "display/nr-filter-colormatrix.h" +namespace NR { + +FilterColorMatrix::FilterColorMatrix() +{ + g_warning("FilterColorMatrix::render not implemented."); +} + +FilterPrimitive * FilterColorMatrix::create() { + return new FilterColorMatrix(); +} + +FilterColorMatrix::~FilterColorMatrix() +{} + +int FilterColorMatrix::render(FilterSlot &slot, Matrix const &trans) { + NRPixBlock *in = slot.get(_input); + NRPixBlock *out = new NRPixBlock; + + nr_pixblock_setup_fast(out, in->mode, + in->area.x0, in->area.y0, in->area.x1, in->area.y1, + true); + + unsigned char *in_data = NR_PIXBLOCK_PX(in); + unsigned char *out_data = NR_PIXBLOCK_PX(out); + +//IMPLEMENT ME! + + out->empty = FALSE; + slot.set(_output, out); + return 0; +} + +void FilterColorMatrix::area_enlarge(NRRectL &area, Matrix const &trans) +{ +} + +} /* namespace NR */ + +/* + Local Variables: + mode:c++ + c-file-style:"stroustrup" + c-file-offsets:((innamespace . 0)(inline-open . 0)(case-label . +)) + indent-tabs-mode:nil + fill-column:99 + End: +*/ +// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:encoding=utf-8:textwidth=99 : diff --git a/src/display/nr-filter-colormatrix.h b/src/display/nr-filter-colormatrix.h new file mode 100644 index 000000000..cf93a75cb --- /dev/null +++ b/src/display/nr-filter-colormatrix.h @@ -0,0 +1,42 @@ +#ifndef __NR_FILTER_COLOR_MATRIX_H__ +#define __NR_FILTER_COLOR_MATRIX_H__ + +/* + * feColorMatrix filter primitive renderer + * + * Authors: + * Felipe Corrêa da Silva Sanches <felipe.sanches@gmail.com> + * + * Copyright (C) 2007 authors + * + * Released under GNU GPL, read the file 'COPYING' for more information + */ + +#include "display/nr-filter-primitive.h" +#include "display/nr-filter-slot.h" + +namespace NR { + +class FilterColorMatrix : public FilterPrimitive { +public: + FilterColorMatrix(); + static FilterPrimitive *create(); + virtual ~FilterColorMatrix(); + + virtual int render(FilterSlot &slot, Matrix const &trans); + virtual void area_enlarge(NRRectL &area, Matrix const &trans); +}; + +} /* namespace NR */ + +#endif /* __NR_FILTER_COLOR_MATRIX_H__ */ +/* + Local Variables: + mode:c++ + c-file-style:"stroustrup" + c-file-offsets:((innamespace . 0)(inline-open . 0)(case-label . +)) + indent-tabs-mode:nil + fill-column:99 + End: +*/ +// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:encoding=utf-8:textwidth=99 : diff --git a/src/display/nr-filter-flood.cpp b/src/display/nr-filter-flood.cpp new file mode 100644 index 000000000..5bd346637 --- /dev/null +++ b/src/display/nr-filter-flood.cpp @@ -0,0 +1,60 @@ +/* + * feFlood filter primitive renderer + * + * Authors: + * Felipe Corrêa da Silva Sanches <felipe.sanches@gmail.com> + * + * Copyright (C) 2007 authors + * + * Released under GNU GPL, read the file 'COPYING' for more information + */ + +#include "display/nr-filter-flood.h" +namespace NR { + +FilterFlood::FilterFlood() +{ + g_warning("FilterFlood::render not implemented."); +} + +FilterPrimitive * FilterFlood::create() { + return new FilterFlood(); +} + +FilterFlood::~FilterFlood() +{} + +int FilterFlood::render(FilterSlot &slot, Matrix const &trans) { + NRPixBlock *in = slot.get(_input); + NRPixBlock *out = new NRPixBlock; + + nr_pixblock_setup_fast(out, in->mode, + in->area.x0, in->area.y0, in->area.x1, in->area.y1, + true); + + unsigned char *in_data = NR_PIXBLOCK_PX(in); + unsigned char *out_data = NR_PIXBLOCK_PX(out); + +//IMPLEMENT ME! + + out->empty = FALSE; + slot.set(_output, out); + return 0; +} + +void FilterFlood::area_enlarge(NRRectL &area, Matrix const &trans) +{ +} + +} /* namespace NR */ + +/* + Local Variables: + mode:c++ + c-file-style:"stroustrup" + c-file-offsets:((innamespace . 0)(inline-open . 0)(case-label . +)) + indent-tabs-mode:nil + fill-column:99 + End: +*/ +// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:encoding=utf-8:textwidth=99 : diff --git a/src/display/nr-filter-flood.h b/src/display/nr-filter-flood.h new file mode 100644 index 000000000..548711164 --- /dev/null +++ b/src/display/nr-filter-flood.h @@ -0,0 +1,42 @@ +#ifndef __NR_FILTER_FLOOD_H__ +#define __NR_FILTER_FLOOD_H__ + +/* + * feFlood filter primitive renderer + * + * Authors: + * Felipe Corrêa da Silva Sanches <felipe.sanches@gmail.com> + * + * Copyright (C) 2007 authors + * + * Released under GNU GPL, read the file 'COPYING' for more information + */ + +#include "display/nr-filter-primitive.h" +#include "display/nr-filter-slot.h" + +namespace NR { + +class FilterFlood : public FilterPrimitive { +public: + FilterFlood(); + static FilterPrimitive *create(); + virtual ~FilterFlood(); + + virtual int render(FilterSlot &slot, Matrix const &trans); + virtual void area_enlarge(NRRectL &area, Matrix const &trans); +}; + +} /* namespace NR */ + +#endif /* __NR_FILTER_FLOOD_H__ */ +/* + Local Variables: + mode:c++ + c-file-style:"stroustrup" + c-file-offsets:((innamespace . 0)(inline-open . 0)(case-label . +)) + indent-tabs-mode:nil + fill-column:99 + End: +*/ +// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:encoding=utf-8:textwidth=99 : diff --git a/src/display/nr-filter-morphology.cpp b/src/display/nr-filter-morphology.cpp new file mode 100644 index 000000000..9660d61ef --- /dev/null +++ b/src/display/nr-filter-morphology.cpp @@ -0,0 +1,60 @@ +/* + * feMorphology filter primitive renderer + * + * Authors: + * Felipe Corrêa da Silva Sanches <felipe.sanches@gmail.com> + * + * Copyright (C) 2007 authors + * + * Released under GNU GPL, read the file 'COPYING' for more information + */ + +#include "display/nr-filter-morphology.h" +namespace NR { + +FilterMorphology::FilterMorphology() +{ + g_warning("FilterMorphology::render not implemented."); +} + +FilterPrimitive * FilterMorphology::create() { + return new FilterMorphology(); +} + +FilterMorphology::~FilterMorphology() +{} + +int FilterMorphology::render(FilterSlot &slot, Matrix const &trans) { + NRPixBlock *in = slot.get(_input); + NRPixBlock *out = new NRPixBlock; + + nr_pixblock_setup_fast(out, in->mode, + in->area.x0, in->area.y0, in->area.x1, in->area.y1, + true); + + unsigned char *in_data = NR_PIXBLOCK_PX(in); + unsigned char *out_data = NR_PIXBLOCK_PX(out); + +//IMPLEMENT ME! + + out->empty = FALSE; + slot.set(_output, out); + return 0; +} + +void FilterMorphology::area_enlarge(NRRectL &area, Matrix const &trans) +{ +} + +} /* namespace NR */ + +/* + Local Variables: + mode:c++ + c-file-style:"stroustrup" + c-file-offsets:((innamespace . 0)(inline-open . 0)(case-label . +)) + indent-tabs-mode:nil + fill-column:99 + End: +*/ +// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:encoding=utf-8:textwidth=99 : diff --git a/src/display/nr-filter-morphology.h b/src/display/nr-filter-morphology.h new file mode 100644 index 000000000..5f89688d0 --- /dev/null +++ b/src/display/nr-filter-morphology.h @@ -0,0 +1,42 @@ +#ifndef __NR_FILTER_MORPHOLOGY_H__ +#define __NR_FILTER_MORPHOLOGY_H__ + +/* + * feMorphology filter primitive renderer + * + * Authors: + * Felipe Corrêa da Silva Sanches <felipe.sanches@gmail.com> + * + * Copyright (C) 2007 authors + * + * Released under GNU GPL, read the file 'COPYING' for more information + */ + +#include "display/nr-filter-primitive.h" +#include "display/nr-filter-slot.h" + +namespace NR { + +class FilterMorphology : public FilterPrimitive { +public: + FilterMorphology(); + static FilterPrimitive *create(); + virtual ~FilterMorphology(); + + virtual int render(FilterSlot &slot, Matrix const &trans); + virtual void area_enlarge(NRRectL &area, Matrix const &trans); +}; + +} /* namespace NR */ + +#endif /* __NR_FILTER_MORPHOLOGY_H__ */ +/* + Local Variables: + mode:c++ + c-file-style:"stroustrup" + c-file-offsets:((innamespace . 0)(inline-open . 0)(case-label . +)) + indent-tabs-mode:nil + fill-column:99 + End: +*/ +// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:encoding=utf-8:textwidth=99 : diff --git a/src/display/nr-filter.cpp b/src/display/nr-filter.cpp index 31c3478a2..34a33e2b8 100644 --- a/src/display/nr-filter.cpp +++ b/src/display/nr-filter.cpp @@ -24,11 +24,15 @@ #include "display/nr-filter-blend.h" #include "display/nr-filter-composite.h" #include "display/nr-filter-convolve-matrix.h" +#include "display/nr-filter-colormatrix.h" +#include "display/nr-filter-component-transfer.h" #include "display/nr-filter-diffuselighting.h" #include "display/nr-filter-displacement-map.h" +#include "display/nr-filter-flood.h" #include "display/nr-filter-gaussian.h" #include "display/nr-filter-image.h" #include "display/nr-filter-merge.h" +#include "display/nr-filter-morphology.h" #include "display/nr-filter-offset.h" #include "display/nr-filter-specularlighting.h" #include "display/nr-filter-tile.h" @@ -316,20 +320,19 @@ void Filter::_create_constructor_table() if(created) return; /* Some filter classes are not implemented yet. - Filters with constructors appearing in this table are not necessarilly already implemented. - Some of them still have only boilerplate-code.*/ + Some of them still have only boilerplate code.*/ _constructor[NR_FILTER_BLEND] = &FilterBlend::create; - _constructor[NR_FILTER_COLORMATRIX] = NULL; - _constructor[NR_FILTER_COMPONENTTRANSFER] = NULL; + _constructor[NR_FILTER_COLORMATRIX] = &FilterColorMatrix::create; + _constructor[NR_FILTER_COMPONENTTRANSFER] = &FilterComponentTransfer::create; _constructor[NR_FILTER_COMPOSITE] = &FilterComposite::create; _constructor[NR_FILTER_CONVOLVEMATRIX] = &FilterConvolveMatrix::create; _constructor[NR_FILTER_DIFFUSELIGHTING] = &FilterDiffuseLighting::create; _constructor[NR_FILTER_DISPLACEMENTMAP] = &FilterDisplacementMap::create; - _constructor[NR_FILTER_FLOOD] = NULL; + _constructor[NR_FILTER_FLOOD] = &FilterFlood::create; _constructor[NR_FILTER_GAUSSIANBLUR] = &FilterGaussian::create; _constructor[NR_FILTER_IMAGE] = &FilterImage::create; _constructor[NR_FILTER_MERGE] = &FilterMerge::create; - _constructor[NR_FILTER_MORPHOLOGY] = NULL; + _constructor[NR_FILTER_MORPHOLOGY] = &FilterMorphology::create; _constructor[NR_FILTER_OFFSET] = &FilterOffset::create; _constructor[NR_FILTER_SPECULARLIGHTING] = &FilterSpecularLighting::create; _constructor[NR_FILTER_TILE] = &FilterTile::create; |
