1/* 2 * Copyright 2010, Haiku, Inc. 3 * Copyright 2006, Ingo Weinhold <bonefish@cs.tu-berlin.de>. 4 * All rights reserved. Distributed under the terms of the MIT License. 5 */ 6 7 8#include <AbstractLayoutItem.h> 9 10#include <LayoutUtils.h> 11#include <Message.h> 12 13 14namespace { 15 const char* const kSizesField = "BAbstractLayoutItem:sizes"; 16 // kSizesField == {min, max, preferred} 17 const char* const kAlignmentField = "BAbstractLayoutItem:alignment"; 18} 19 20 21BAbstractLayoutItem::BAbstractLayoutItem() 22 : 23 fMinSize(), 24 fMaxSize(), 25 fPreferredSize(), 26 fAlignment() 27{ 28} 29 30 31BAbstractLayoutItem::BAbstractLayoutItem(BMessage* from) 32 : 33 BLayoutItem(from), 34 fMinSize(), 35 fMaxSize(), 36 fPreferredSize(), 37 fAlignment() 38{ 39 from->FindSize(kSizesField, 0, &fMinSize); 40 from->FindSize(kSizesField, 1, &fMaxSize); 41 from->FindSize(kSizesField, 2, &fPreferredSize); 42 from->FindAlignment(kAlignmentField, &fAlignment); 43} 44 45 46BAbstractLayoutItem::~BAbstractLayoutItem() 47{ 48} 49 50 51BSize 52BAbstractLayoutItem::MinSize() 53{ 54 return BLayoutUtils::ComposeSize(fMinSize, BaseMinSize()); 55} 56 57 58BSize 59BAbstractLayoutItem::MaxSize() 60{ 61 return BLayoutUtils::ComposeSize(fMaxSize, BaseMaxSize()); 62} 63 64 65BSize 66BAbstractLayoutItem::PreferredSize() 67{ 68 return BLayoutUtils::ComposeSize(fMaxSize, BasePreferredSize()); 69} 70 71 72BAlignment 73BAbstractLayoutItem::Alignment() 74{ 75 return BLayoutUtils::ComposeAlignment(fAlignment, BaseAlignment()); 76} 77 78 79void 80BAbstractLayoutItem::SetExplicitMinSize(BSize size) 81{ 82 fMinSize = size; 83} 84 85 86void 87BAbstractLayoutItem::SetExplicitMaxSize(BSize size) 88{ 89 fMaxSize = size; 90} 91 92 93void 94BAbstractLayoutItem::SetExplicitPreferredSize(BSize size) 95{ 96 fPreferredSize = size; 97} 98 99 100void 101BAbstractLayoutItem::SetExplicitAlignment(BAlignment alignment) 102{ 103 fAlignment = alignment; 104} 105 106 107BSize 108BAbstractLayoutItem::BaseMinSize() 109{ 110 return BSize(0, 0); 111} 112 113 114BSize 115BAbstractLayoutItem::BaseMaxSize() 116{ 117 return BSize(B_SIZE_UNLIMITED, B_SIZE_UNLIMITED); 118} 119 120 121BSize 122BAbstractLayoutItem::BasePreferredSize() 123{ 124 return BSize(0, 0); 125} 126 127 128BAlignment 129BAbstractLayoutItem::BaseAlignment() 130{ 131 return BAlignment(B_ALIGN_HORIZONTAL_CENTER, B_ALIGN_VERTICAL_CENTER); 132} 133 134 135status_t 136BAbstractLayoutItem::Archive(BMessage* into, bool deep) const 137{ 138 BArchiver archiver(into); 139 status_t err = BLayoutItem::Archive(into, deep); 140 141 if (err == B_OK) 142 err = into->AddSize(kSizesField, fMinSize); 143 144 if (err == B_OK) 145 err = into->AddSize(kSizesField, fMaxSize); 146 147 if (err == B_OK) 148 err = into->AddSize(kSizesField, fPreferredSize); 149 150 if (err == B_OK) 151 err = into->AddAlignment(kAlignmentField, fAlignment); 152 153 return archiver.Finish(err); 154} 155 156 157status_t 158BAbstractLayoutItem::AllUnarchived(const BMessage* archive) 159{ 160 return BLayoutItem::AllUnarchived(archive); 161} 162 163 164status_t 165BAbstractLayoutItem::AllArchived(BMessage* archive) const 166{ 167 return BLayoutItem::AllArchived(archive); 168} 169 170 171void 172BAbstractLayoutItem::LayoutInvalidated(bool children) 173{ 174 BLayoutItem::LayoutInvalidated(children); 175} 176 177 178void 179BAbstractLayoutItem::AttachedToLayout() 180{ 181 BLayoutItem::AttachedToLayout(); 182} 183 184 185void 186BAbstractLayoutItem::DetachedFromLayout(BLayout* layout) 187{ 188 BLayoutItem::DetachedFromLayout(layout); 189} 190 191 192void 193BAbstractLayoutItem::AncestorVisibilityChanged(bool shown) 194{ 195 BLayoutItem::AncestorVisibilityChanged(shown); 196} 197 198 199status_t 200BAbstractLayoutItem::Perform(perform_code d, void* arg) 201{ 202 return BLayoutItem::Perform(d, arg); 203} 204 205 206void BAbstractLayoutItem::_ReservedAbstractLayoutItem1() {} 207void BAbstractLayoutItem::_ReservedAbstractLayoutItem2() {} 208void BAbstractLayoutItem::_ReservedAbstractLayoutItem3() {} 209void BAbstractLayoutItem::_ReservedAbstractLayoutItem4() {} 210void BAbstractLayoutItem::_ReservedAbstractLayoutItem5() {} 211void BAbstractLayoutItem::_ReservedAbstractLayoutItem6() {} 212void BAbstractLayoutItem::_ReservedAbstractLayoutItem7() {} 213void BAbstractLayoutItem::_ReservedAbstractLayoutItem8() {} 214void BAbstractLayoutItem::_ReservedAbstractLayoutItem9() {} 215void BAbstractLayoutItem::_ReservedAbstractLayoutItem10() {} 216 217