xref: /haiku/src/add-ons/translators/wonderbrush/Canvas.h (revision 73a2ffba3bb47d5fa3811f0e609f7afa815db9bc)
1*73a2ffbaSStephan Aßmus /*
2*73a2ffbaSStephan Aßmus  * Copyright 2006, Haiku. All rights reserved.
3*73a2ffbaSStephan Aßmus  * Distributed under the terms of the MIT License.
4*73a2ffbaSStephan Aßmus  *
5*73a2ffbaSStephan Aßmus  * Authors:
6*73a2ffbaSStephan Aßmus  *		Stephan Aßmus <superstippi@gmx.de>
7*73a2ffbaSStephan Aßmus  */
8*73a2ffbaSStephan Aßmus 
9*73a2ffbaSStephan Aßmus #ifndef CANVAS_H
10*73a2ffbaSStephan Aßmus #define CANVAS_H
11*73a2ffbaSStephan Aßmus 
12*73a2ffbaSStephan Aßmus #include <List.h>
13*73a2ffbaSStephan Aßmus #include <Rect.h>
14*73a2ffbaSStephan Aßmus #include <String.h>
15*73a2ffbaSStephan Aßmus 
16*73a2ffbaSStephan Aßmus struct entry_ref;
17*73a2ffbaSStephan Aßmus 
18*73a2ffbaSStephan Aßmus class BBitmap;
19*73a2ffbaSStephan Aßmus class BMessage;
20*73a2ffbaSStephan Aßmus class Layer;
21*73a2ffbaSStephan Aßmus 
22*73a2ffbaSStephan Aßmus class Canvas : private BList {
23*73a2ffbaSStephan Aßmus  public:
24*73a2ffbaSStephan Aßmus 								Canvas(BRect frame);
25*73a2ffbaSStephan Aßmus 								~Canvas();
26*73a2ffbaSStephan Aßmus 
27*73a2ffbaSStephan Aßmus 			bool				IsValid() const;
28*73a2ffbaSStephan Aßmus 			void				MakeEmpty();
29*73a2ffbaSStephan Aßmus 
30*73a2ffbaSStephan Aßmus 	// list functionality
31*73a2ffbaSStephan Aßmus 			bool				AddLayer(Layer* layer);
32*73a2ffbaSStephan Aßmus 			bool				AddLayer(Layer* layer, int32 index);
33*73a2ffbaSStephan Aßmus 
34*73a2ffbaSStephan Aßmus 			Layer*				RemoveLayer(int32 index);
35*73a2ffbaSStephan Aßmus 			bool				RemoveLayer(Layer* layer);
36*73a2ffbaSStephan Aßmus 
37*73a2ffbaSStephan Aßmus 			Layer*				LayerAt(int32 index) const;
38*73a2ffbaSStephan Aßmus 			Layer*				LayerAtFast(int32 index) const;
39*73a2ffbaSStephan Aßmus 			int32				IndexOf(Layer* layer) const;
40*73a2ffbaSStephan Aßmus 			int32				CountLayers() const;
41*73a2ffbaSStephan Aßmus 			bool				HasLayer(Layer* layer) const;
42*73a2ffbaSStephan Aßmus 
43*73a2ffbaSStephan Aßmus 			void				SetBounds(BRect bounds);
44*73a2ffbaSStephan Aßmus 			BRect				Bounds() const;
45*73a2ffbaSStephan Aßmus 
46*73a2ffbaSStephan Aßmus 								// composes layers on top of passed bitmap
47*73a2ffbaSStephan Aßmus 			void				Compose(BBitmap* into, BRect area) const;
48*73a2ffbaSStephan Aßmus 								// returns entire composition in new bitmap
49*73a2ffbaSStephan Aßmus 			BBitmap*			Bitmap() const;
50*73a2ffbaSStephan Aßmus 
51*73a2ffbaSStephan Aßmus 	// loading
52*73a2ffbaSStephan Aßmus 			status_t			Unarchive(const BMessage* archive);
53*73a2ffbaSStephan Aßmus 
54*73a2ffbaSStephan Aßmus  private:
55*73a2ffbaSStephan Aßmus 	BRect						fBounds;
56*73a2ffbaSStephan Aßmus };
57*73a2ffbaSStephan Aßmus 
58*73a2ffbaSStephan Aßmus #endif // CANVAS_H
59