From 7173e6047f26d71718502570836ef0ab158deab2 Mon Sep 17 00:00:00 2001 From: Sebastian Geerken Date: Thu, 12 Sep 2013 10:52:03 +0200 Subject: Added basic functionality for background images to dw::style. Drawing still very incomplete. --- dw/imgrenderer.hh | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) (limited to 'dw/imgrenderer.hh') 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 > + *children; + +public: + inline ImgRendererDist () + { children = new lout::container::typed::HashSet + > (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 (child)); } + void remove (ImgRenderer *child) + { lout::object::TypedPointer tp (child); + children->remove (&tp); } +}; + } // namespace core } // namespace dw -- cgit v1.2.3