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