1 #ifndef __CANVAS_IMAGE__
2 #define __CANVAS_IMAGE__
5 #include <boost/shared_ptr.hpp>
6 #include <boost/shared_array.hpp>
8 #include "canvas/item.h"
10 namespace ArdourCanvas {
12 class Image : public Item
15 Image (Group *, Cairo::Format, int width, int height);
18 Data (boost::shared_array<uint8_t> d, int w, int h, int s, Cairo::Format fmt)
26 boost::shared_array<uint8_t> data;
33 boost::shared_ptr<Data> get_image ();
34 void put_image (boost::shared_ptr<Data>);
36 void render (Rect const &, Cairo::RefPtr<Cairo::Context>) const;
37 void compute_bounding_box () const;
38 XMLNode* get_state () const;
39 void set_state (XMLNode const *);
42 Cairo::Format _format;
46 mutable boost::shared_ptr<Data> _current;
47 boost::shared_ptr<Data> _pending;
48 mutable bool _need_render;
49 mutable Cairo::RefPtr<Cairo::Surface> _surface;
52 PBD::Signal0<void> DataReady;
53 PBD::ScopedConnectionList data_connections;