diff options
author | Sebastian Geerken <devnull@localhost> | 2013-09-12 10:52:03 +0200 |
---|---|---|
committer | Sebastian Geerken <devnull@localhost> | 2013-09-12 10:52:03 +0200 |
commit | 7173e6047f26d71718502570836ef0ab158deab2 (patch) | |
tree | e422d560c6acdeb5ebd72f01e3bb22eb177422cf /dw/imgrenderer.hh | |
parent | 06f5833b8f41196bc427c06e39ed21d431c1e665 (diff) |
Added basic functionality for background images to dw::style. Drawing still very incomplete.
Diffstat (limited to 'dw/imgrenderer.hh')
-rw-r--r-- | dw/imgrenderer.hh | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/dw/imgrenderer.hh b/dw/imgrenderer.hh index 9c7c6525..1efeef8c 100644 --- a/dw/imgrenderer.hh +++ b/dw/imgrenderer.hh @@ -16,10 +16,40 @@ namespace core { class ImgRenderer { public: + virtual ~ImgRenderer () { } + virtual void setBuffer (core::Imgbuf *buffer, bool resize = false) = 0; virtual void drawRow (int row) = 0; }; +/** + * \brief Implementation of ImgRenderer, which distributes all calls + * to a set of other implementations of ImgRenderer. + * + * The order of the call children is not defined, especially not + * identical to the order in which they have been added. + */ +class ImgRendererDist: public ImgRenderer +{ + lout::container::typed::HashSet <lout::object::TypedPointer <ImgRenderer> > + *children; + +public: + inline ImgRendererDist () + { children = new lout::container::typed::HashSet + <lout::object::TypedPointer <ImgRenderer> > (true); } + ~ImgRendererDist () { delete children; } + + void setBuffer (core::Imgbuf *buffer, bool resize); + void drawRow (int row); + + void put (ImgRenderer *child) + { children->put (new lout::object::TypedPointer <ImgRenderer> (child)); } + void remove (ImgRenderer *child) + { lout::object::TypedPointer <ImgRenderer> tp (child); + children->remove (&tp); } +}; + } // namespace core } // namespace dw |