khtml Library API Documentation

khtmllayout.h

00001 /*
00002     This file is part of the KDE libraries
00003 
00004     Copyright (C) 1999 Lars Knoll (knoll@kde.org)
00005 
00006     This library is free software; you can redistribute it and/or
00007     modify it under the terms of the GNU Library General Public
00008     License as published by the Free Software Foundation; either
00009     version 2 of the License, or (at your option) any later version.
00010 
00011     This library is distributed in the hope that it will be useful,
00012     but WITHOUT ANY WARRANTY; without even the implied warranty of
00013     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00014     Library General Public License for more details.
00015 
00016     You should have received a copy of the GNU Library General Public License
00017     along with this library; see the file COPYING.LIB.  If not, write to
00018     the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
00019     Boston, MA 02111-1307, USA.
00020 
00021     $Id: khtmllayout.h,v 1.18.2.4 2003/08/17 14:38:51 mueller Exp $
00022 
00023     This widget holds some useful definitions needed for layouting Elements
00024 */
00025 #ifndef HTML_LAYOUT_H
00026 #define HTML_LAYOUT_H
00027 
00028 
00029 /*
00030  * this namespace contains definitions for various types needed for
00031  * layouting.
00032  */
00033 namespace khtml
00034 {
00035 
00036     const int UNDEFINED = -1;
00037 
00038     // alignment
00039     enum VAlign { VNone=0, Bottom, VCenter, Top, Baseline };
00040     enum HAlign { HDefault, Left, HCenter, Right, HNone = 0 };
00041 
00042     /*
00043      * %multiLength and %Length
00044      */
00045     enum LengthType { Variable = 0, Relative, Percent, Fixed, Static };
00046     class Length
00047     {
00048     public:
00049     Length() : _length(0) {}
00050         Length(LengthType t) { l.value = 0; l.type = t; }
00051         Length(int v, LengthType t) { l.value = v; l.type = t; }
00052 
00053         bool operator==(const Length& o) const
00054             { return _length == o._length; }
00055         bool operator!=(const Length& o) const
00056             { return _length != o._length ; }
00057 
00058     /*
00059      * works only for Fixed and Percent, returns -1 otherwise
00060      */
00061     int width(int maxWidth) const
00062         {
00063         switch(l.type)
00064         {
00065         case Fixed:
00066             return l.value;
00067         case Percent:
00068             return maxWidth*l.value/100;
00069         case Variable:
00070             return maxWidth;
00071         default:
00072             return -1;
00073         }
00074         }
00075     /*
00076      * returns the minimum width value which could work...
00077      */
00078     int minWidth(int maxWidth) const
00079         {
00080         switch(l.type)
00081         {
00082         case Fixed:
00083             return l.value;
00084         case Percent:
00085             return maxWidth*l.value/100;
00086         case Variable:
00087         default:
00088             return 0;
00089         }
00090         }
00091         bool isVariable() const { return (l.type == Variable); }
00092         bool isRelative() const { return (l.type == Relative); }
00093         bool isPercent() const { return (l.type == Percent); }
00094         bool isFixed() const { return (l.type == Fixed); }
00095         bool isStatic() const { return (l.type == Static); }
00096 
00097         int value() const { return l.value; }
00098         LengthType type() const { return l.type; }
00099         union {
00100           struct {
00101             signed int value : 29;
00102             LengthType type : 3;
00103           } l;
00104           Q_UINT32 _length;
00105        };
00106     };
00107 
00108 }
00109 
00110 #ifdef __GNUC__
00111 #if __GNUC__ -  0 < 3 // stupid stl_relops.h
00112 inline bool operator!=(khtml::LengthType __x, khtml::LengthType __y) {
00113   return !(__x == __y);
00114 }
00115 #endif
00116 #endif
00117 
00118 #endif
KDE Logo
This file is part of the documentation for kdelibs Version 3.1.4.
Documentation copyright © 1996-2002 the KDE developers.
Generated on Sun Feb 27 22:16:37 2005 by doxygen 1.3.4 written by Dimitri van Heesch, © 1997-2001