/* This file is part of the KDE libraries Copyright (C) 1999 Lars Knoll (knoll@kde.org) This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with this library; see the file COPYING.LIB. If not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. This widget holds some useful definitions needed for layouting Elements */ #ifndef HTML_LAYOUT_H #define HTML_LAYOUT_H /* * this namespace contains definitions for various types needed for * layouting. */ namespace tdehtml { const int UNDEFINED = -1; // alignment enum VAlign { VNone=0, Bottom, VCenter, Top, Baseline }; enum HAlign { HDefault, Left, HCenter, Right, HNone = 0 }; /* * %multiLength and %Length */ enum LengthType { Variable = 0, Relative, Percent, Fixed, Static }; struct Length { Length() : _length(0) {} Length(LengthType t) { _length = 0; l.type = t; } Length(int v, LengthType t, bool q=false) { _length= 0; l.value = v; l.type = t; l.quirk = q; } bool operator==(const Length& o) const { return _length == o._length; } bool operator!=(const Length& o) const { return _length != o._length; } void setValue(LengthType t, int v) { _length = 0; l.value = v; l.type = t; l.quirk = false; } /* * works only for Fixed and Percent, returns -1 otherwise */ int width(int maxWidth) const { switch(l.type) { case Fixed: return l.value; case Percent: return maxWidth*l.value/100; case Variable: return maxWidth; default: return -1; } } /* * returns the minimum width value which could work... */ int minWidth(int maxWidth) const { switch(l.type) { case Fixed: return l.value; case Percent: return maxWidth*l.value/100; case Variable: default: return 0; } } bool isVariable() const { return ((LengthType) l.type == Variable); } bool isRelative() const { return ((LengthType) l.type == Relative); } bool isPercent() const { return ((LengthType ) l.type == Percent); } bool isFixed() const { return ((LengthType) l.type == Fixed); } bool isStatic() const { return ((LengthType) l.type == Static); } bool isQuirk() const { return l.quirk; } int value() const { return l.value; } LengthType type() const { return (LengthType) l.type; } union { struct { signed int value : 28; unsigned type : 3; bool quirk : 1; } l; TQ_UINT32 _length; }; }; } #endif