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(bool children = false); 50 virtual void Relayout(bool immediate = false); 51 52 void* LayoutData() const; 53 void SetLayoutData(void* data); 54 55 void AlignInFrame(BRect frame); 56 57 virtual status_t Archive(BMessage* into, bool deep = true) const; 58 59 virtual status_t Perform(perform_code d, void* arg); 60 61 protected: 62 // archiving methods 63 virtual status_t AllArchived(BMessage* into) const; 64 virtual status_t AllUnarchived(const BMessage* from); 65 66 // hook methods 67 virtual void LayoutInvalidated(bool children); 68 69 virtual void AttachedToLayout(); 70 virtual void DetachedFromLayout(BLayout* layout); 71 72 virtual void AncestorVisibilityChanged(bool shown); 73 74 private: 75 void SetLayout(BLayout* layout); 76 77 virtual void _ReservedLayoutItem1(); 78 virtual void _ReservedLayoutItem2(); 79 virtual void _ReservedLayoutItem3(); 80 virtual void _ReservedLayoutItem4(); 81 virtual void _ReservedLayoutItem5(); 82 virtual void _ReservedLayoutItem6(); 83 virtual void _ReservedLayoutItem7(); 84 virtual void _ReservedLayoutItem8(); 85 virtual void _ReservedLayoutItem9(); 86 virtual void _ReservedLayoutItem10(); 87 88 // forbidden methods 89 BLayoutItem(const BLayoutItem&); 90 void operator =(const BLayoutItem&); 91 92 friend class BLayout; 93 94 BLayout* fLayout; 95 void* fLayoutData; 96 97 uint32 _reserved[5]; 98 }; 99 100 101 #endif // _LAYOUT_ITEM_H 102