1 /* 2 * Copyright 2006-2010, Haiku, Inc. All rights reserved. 3 * Distributed under the terms of the MIT License. 4 */ 5 #ifndef _LAYOUT_ITEM_H 6 #define _LAYOUT_ITEM_H 7 8 9 #include <Alignment.h> 10 #include <Archivable.h> 11 #include <Rect.h> 12 #include <Size.h> 13 14 15 class BLayout; 16 class BView; 17 18 19 class BLayoutItem: public BArchivable { 20 public: 21 BLayoutItem(); 22 BLayoutItem(BMessage* from); 23 virtual ~BLayoutItem(); 24 25 BLayout* Layout() const; 26 27 virtual BSize MinSize() = 0; 28 virtual BSize MaxSize() = 0; 29 virtual BSize PreferredSize() = 0; 30 virtual BAlignment Alignment() = 0; 31 32 virtual void SetExplicitMinSize(BSize size) = 0; 33 virtual void SetExplicitMaxSize(BSize size) = 0; 34 virtual void SetExplicitPreferredSize(BSize size) = 0; 35 virtual void SetExplicitAlignment(BAlignment alignment) = 0; 36 37 virtual bool IsVisible() = 0; 38 virtual void SetVisible(bool visible) = 0; 39 40 virtual BRect Frame() = 0; 41 virtual void SetFrame(BRect frame) = 0; 42 43 virtual bool HasHeightForWidth(); 44 virtual void GetHeightForWidth(float width, float* min, 45 float* max, float* preferred); 46 47 virtual BView* View(); 48 49 virtual void InvalidateLayout(); 50 51 void* LayoutData() const; 52 void SetLayoutData(void* data); 53 54 void AlignInFrame(BRect frame); 55 56 virtual status_t Archive(BMessage* into, bool deep = true) const; 57 virtual status_t AllArchived(BMessage* into) const; 58 virtual status_t AllUnarchived(const BMessage* from); 59 60 private: 61 friend class BLayout; 62 63 void SetLayout(BLayout* layout); 64 65 BLayout* fLayout; 66 void* fLayoutData; 67 }; 68 69 70 #endif // _LAYOUT_ITEM_H 71