1/* 2 * Copyright 2006, Haiku Inc. 3 * Distributed under the terms of the MIT License. 4 */ 5#ifndef LAYOUTER_H 6#define LAYOUTER_H 7 8#include <SupportDefs.h> 9 10namespace BPrivate { 11namespace Layout { 12 13class LayoutInfo { 14public: 15 LayoutInfo(); 16 virtual ~LayoutInfo(); 17 18 virtual float ElementLocation(int32 element) = 0; 19 virtual float ElementSize(int32 element) = 0; 20 21 virtual float ElementRangeSize(int32 position, int32 length); 22}; 23 24 25class Layouter { 26public: 27 Layouter(); 28 virtual ~Layouter(); 29 30 virtual void AddConstraints(int32 element, int32 length, 31 float min, float max, float preferred) = 0; 32 virtual void SetWeight(int32 element, float weight) = 0; 33 34 virtual float MinSize() = 0; 35 virtual float MaxSize() = 0; 36 virtual float PreferredSize() = 0; 37 38 virtual LayoutInfo* CreateLayoutInfo() = 0; 39 40 virtual void Layout(LayoutInfo* layoutInfo, float size) = 0; 41 42 virtual Layouter* CloneLayouter() = 0; 43}; 44 45 46} // namespace Layout 47} // namespace BPrivate 48 49using BPrivate::Layout::LayoutInfo; 50using BPrivate::Layout::Layouter; 51 52#endif // LAYOUTER_H 53