Update ooo320-m1
[ooovba.git] / binfilter / inc / bf_sw / fmtclds.hxx
blob87d936822b5e75de0b4a436f547be667dc56c181
1 /*************************************************************************
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 *
5 * Copyright 2008 by Sun Microsystems, Inc.
7 * OpenOffice.org - a multi-platform office productivity suite
9 * $RCSfile: fmtclds.hxx,v $
10 * $Revision: 1.8 $
12 * This file is part of OpenOffice.org.
14 * OpenOffice.org is free software: you can redistribute it and/or modify
15 * it under the terms of the GNU Lesser General Public License version 3
16 * only, as published by the Free Software Foundation.
18 * OpenOffice.org is distributed in the hope that it will be useful,
19 * but WITHOUT ANY WARRANTY; without even the implied warranty of
20 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
21 * GNU Lesser General Public License version 3 for more details
22 * (a copy is included in the LICENSE file that accompanied this code).
24 * You should have received a copy of the GNU Lesser General Public License
25 * version 3 along with OpenOffice.org. If not, see
26 * <http://www.openoffice.org/license.html>
27 * for a copy of the LGPLv3 License.
29 ************************************************************************/
30 #ifndef _FMTCLDS_HXX
31 #define _FMTCLDS_HXX
33 #ifndef _COLOR_HXX
34 #include <tools/color.hxx>
35 #endif
36 #ifndef _FORMAT_HXX //autogen
37 #include <format.hxx>
38 #endif
39 namespace binfilter {
41 //Der ColumnDescriptor --------------------------
43 class SwColumn
45 USHORT nWish; //Wunschbreite incl. Raender.
46 //Verhaelt sich proportional zum Verhaeltniss:
47 //Wunschbreite der Umgebung / aktuelle Breite der Spalte
48 USHORT nUpper; //Oberer Rand
49 USHORT nLower; //Unterer Rand
50 USHORT nLeft; //Linker Rand
51 USHORT nRight; //Rechter Rand
53 public:
54 SwColumn();
56 BOOL operator==( const SwColumn & );
59 void SetWishWidth( USHORT nNew ) { nWish = nNew; }
60 void SetUpper( USHORT nNew ) { nUpper = nNew; }
61 void SetLower( USHORT nNew ) { nLower = nNew; }
62 void SetLeft ( USHORT nNew ) { nLeft = nNew; }
63 void SetRight( USHORT nNew ) { nRight = nNew; }
65 USHORT GetWishWidth() const { return nWish; }
66 USHORT GetUpper() const { return nUpper; }
67 USHORT GetLower() const { return nLower; }
68 USHORT GetLeft () const { return nLeft; }
69 USHORT GetRight() const { return nRight; }
72 typedef SwColumn* SwColumnPtr;
73 SV_DECL_PTRARR_DEL( SwColumns, SwColumnPtr, 0, 2 )//STRIP008 ;
75 enum SwColLineAdj
77 COLADJ_NONE,
78 COLADJ_TOP,
79 COLADJ_CENTER,
80 COLADJ_BOTTOM
83 class SwFmtCol : public SfxPoolItem
85 // Pen aPen; //Pen fuer die Linine zwischen den Spalten
86 ULONG nLineWidth; //width of the separator line
87 Color aLineColor; //color of the separator line
89 BYTE nLineHeight; //Prozentuale Hoehe der Linien
90 //(Relativ zu der Hoehe der Spalten incl. UL).
91 SwColLineAdj eAdj; //Linie wird oben, mittig oder unten ausgerichtet.
93 SwColumns aColumns; //Informationen fuer die einzelnen Spalten.
94 USHORT nWidth; //Gesamtwunschbreite aller Spalten.
96 BOOL bOrtho; //Nur wenn dieses Flag gesetzt ist wird beim setzen
97 //der GutterWidth eine 'optische Verteilung'
98 //vorgenommen.
99 //Es muss zurueckgesetzt werden wenn an den
100 //Spaltenbreiten bzw. den Raendern gedreht wird.
101 //Wenn es wieder gesetzt wird wird automatisch neu
102 //gemischt (optisch verteilt).
103 //Das Flag ist initial gesetzt.
105 void Calc( USHORT nGutterWidth, USHORT nAct );
107 public:
108 SwFmtCol();
109 SwFmtCol( const SwFmtCol& );
110 ~SwFmtCol();
112 SwFmtCol& operator=( const SwFmtCol& );
114 // "pure virtual Methoden" vom SfxPoolItem
115 virtual int operator==( const SfxPoolItem& ) const;
116 virtual SfxPoolItem* Clone( SfxItemPool* pPool = 0 ) const;
117 virtual SfxPoolItem* Create(SvStream &, USHORT nVer) const;
118 virtual SvStream& Store(SvStream &, USHORT nIVer) const;
120 virtual BOOL QueryValue( ::com::sun::star::uno::Any& rVal, BYTE nMemberId = 0 ) const;
121 virtual BOOL PutValue( const ::com::sun::star::uno::Any& rVal, BYTE nMemberId = 0 );
123 const SwColumns &GetColumns() const { return aColumns; }
124 SwColumns &GetColumns() { return aColumns; }
125 USHORT GetNumCols() const { return aColumns.Count(); }
126 // const Pen& GetLinePen() const { return aPen; }
127 ULONG GetLineWidth() const { return nLineWidth;}
128 const Color& GetLineColor() const { return aLineColor;}
131 SwColLineAdj GetLineAdj() const { return eAdj; }
132 BOOL IsOrtho() const { return bOrtho; }
133 USHORT GetWishWidth() const { return nWidth; }
134 BYTE GetLineHeight()const { return nLineHeight; }
136 //Return USHRT_MAX wenn uneindeutig.
137 //Return die kleinste Breite wenn bMin True ist.
138 USHORT GetGutterWidth( BOOL bMin = FALSE ) const;
140 // void SetLinePen( const Pen& rNew ) { aPen = rNew; }
141 void SetLineWidth(ULONG nWidth) { nLineWidth = nWidth;}
142 void SetLineColor(const Color& rCol ) { aLineColor = rCol;}
143 void SetLineHeight( BYTE nNew ) { nLineHeight = nNew; }
144 void SetLineAdj( SwColLineAdj eNew ){ eAdj = eNew; }
145 void SetWishWidth( USHORT nNew ) { nWidth = nNew; }
147 //Mit dieser Funktion koennen die Spalten (immer wieder) initialisert
148 //werden. Das Ortho Flag wird automatisch gesetzt.
149 void Init( USHORT nNumCols, USHORT nGutterWidth, USHORT nAct );
151 //Stellt die Raender fuer die Spalten in aColumns ein.
152 //Wenn das Flag bOrtho gesetzt ist, werden die Spalten neu optisch
153 //verteilt. Ist das Flag nicht gesetzt werden die Spaltenbreiten nicht
154 //veraendert und die Raender werden einfach eingestellt.
156 //Verteilt ebenfalls automatisch neu wenn das Flag gesetzt wird;
157 //nur dann wird auch der zweite Param. benoetigt und beachtet.
159 //Fuer den Reader
160 void _SetOrtho( BOOL bNew ) { bOrtho = bNew; }
162 //Berechnet die aktuelle Breite der Spalte nCol.
163 //Das Verhaeltniss von Wunschbreite der Spalte zum Returnwert ist
164 //proportional zum Verhaeltniss des Gesamtwunschwertes zu nAct.
165 USHORT CalcColWidth( USHORT nCol, USHORT nAct ) const;
167 //Wie oben, aber es wir die Breite der PrtArea - also das was fuer
168 //den Anwender die Spalte ist - geliefert.
171 #if !(defined(MACOSX) && ( __GNUC__ < 3 ))
172 // GrP moved to gcc_outl.cxx; revisit with gcc3
173 inline const SwFmtCol &SwAttrSet::GetCol(BOOL bInP) const
174 { return (const SwFmtCol&)Get( RES_COL,bInP); }
176 inline const SwFmtCol &SwFmt::GetCol(BOOL bInP) const
177 { return aSet.GetCol(bInP); }
178 #endif
180 } //namespace binfilter
181 #endif