xref: /haiku/src/add-ons/translators/wonderbrush/Layer.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 LAYER_H
10*73a2ffbaSStephan Aßmus #define LAYER_H
11*73a2ffbaSStephan Aßmus 
12*73a2ffbaSStephan Aßmus #include <Rect.h>
13*73a2ffbaSStephan Aßmus #include <String.h>
14*73a2ffbaSStephan Aßmus 
15*73a2ffbaSStephan Aßmus // property flags
16*73a2ffbaSStephan Aßmus enum {
17*73a2ffbaSStephan Aßmus 	FLAG_INVISIBLE		= 0x01,
18*73a2ffbaSStephan Aßmus };
19*73a2ffbaSStephan Aßmus 
20*73a2ffbaSStephan Aßmus // blending modes (as of WonderBrush 2.0)
21*73a2ffbaSStephan Aßmus enum {
22*73a2ffbaSStephan Aßmus 	MODE_NORMAL					= 0,
23*73a2ffbaSStephan Aßmus 	MODE_MULTIPLY				= 1,
24*73a2ffbaSStephan Aßmus 	MODE_INVERSE_MULTIPLY		= 2,
25*73a2ffbaSStephan Aßmus 	MODE_LUMINANCE				= 3,
26*73a2ffbaSStephan Aßmus 	MODE_MULTIPLY_ALPHA			= 4,
27*73a2ffbaSStephan Aßmus 	MODE_MULTIPLY_INVERSE_ALPHA	= 5,
28*73a2ffbaSStephan Aßmus 
29*73a2ffbaSStephan Aßmus 	MODE_REPLACE_RED			= 6,
30*73a2ffbaSStephan Aßmus 	MODE_REPLACE_GREEN			= 7,
31*73a2ffbaSStephan Aßmus 	MODE_REPLACE_BLUE			= 8,
32*73a2ffbaSStephan Aßmus 
33*73a2ffbaSStephan Aßmus 	MODE_DARKEN					= 9,
34*73a2ffbaSStephan Aßmus 	MODE_LIGHTEN				= 10,
35*73a2ffbaSStephan Aßmus 
36*73a2ffbaSStephan Aßmus 	MODE_HARD_LIGHT				= 11,
37*73a2ffbaSStephan Aßmus 	MODE_SOFT_LIGHT				= 12,
38*73a2ffbaSStephan Aßmus };
39*73a2ffbaSStephan Aßmus 
40*73a2ffbaSStephan Aßmus class BBitmap;
41*73a2ffbaSStephan Aßmus class BMessage;
42*73a2ffbaSStephan Aßmus 
43*73a2ffbaSStephan Aßmus class Layer {
44*73a2ffbaSStephan Aßmus  public:
45*73a2ffbaSStephan Aßmus 								Layer();
46*73a2ffbaSStephan Aßmus 								~Layer();
47*73a2ffbaSStephan Aßmus 
48*73a2ffbaSStephan Aßmus 	// active area of layer
ActiveBounds()49*73a2ffbaSStephan Aßmus 	inline	BRect				ActiveBounds() const
50*73a2ffbaSStephan Aßmus 									{ return fBounds; }
51*73a2ffbaSStephan Aßmus 
52*73a2ffbaSStephan Aßmus 	// composing
53*73a2ffbaSStephan Aßmus 			status_t			Compose(const BBitmap* into,
54*73a2ffbaSStephan Aßmus 										BRect area);
55*73a2ffbaSStephan Aßmus 
56*73a2ffbaSStephan Aßmus 	// loading
57*73a2ffbaSStephan Aßmus 			status_t			Unarchive(const BMessage* archive);
58*73a2ffbaSStephan Aßmus 
59*73a2ffbaSStephan Aßmus  protected:
60*73a2ffbaSStephan Aßmus 			BBitmap*			fBitmap;
61*73a2ffbaSStephan Aßmus 			BRect				fBounds;
62*73a2ffbaSStephan Aßmus 
63*73a2ffbaSStephan Aßmus 			float				fAlpha;
64*73a2ffbaSStephan Aßmus 			uint32				fMode;
65*73a2ffbaSStephan Aßmus 			uint32				fFlags;
66*73a2ffbaSStephan Aßmus };
67*73a2ffbaSStephan Aßmus 
68*73a2ffbaSStephan Aßmus #endif // LAYER_H
69