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