merge the formfield patch from ooo-build
[ooovba.git] / sw / inc / fmtclds.hxx
blob1868eaaa7e04dab5311df372bec03e7f583449fd
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.11 $
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 #include <tools/color.hxx>
34 #include <svtools/poolitem.hxx>
35 #include "swdllapi.h"
36 #include <hintids.hxx>
37 #include <format.hxx>
39 //Der ColumnDescriptor --------------------------
41 class SwColumn
43 USHORT nWish; //Wunschbreite incl. Raender.
44 //Verhaelt sich proportional zum Verhaeltniss:
45 //Wunschbreite der Umgebung / aktuelle Breite der Spalte
46 USHORT nUpper; //Oberer Rand
47 USHORT nLower; //Unterer Rand
48 USHORT nLeft; //Linker Rand
49 USHORT nRight; //Rechter Rand
51 public:
52 SwColumn();
54 BOOL operator==( const SwColumn & );
57 void SetWishWidth( USHORT nNew ) { nWish = nNew; }
58 void SetUpper( USHORT nNew ) { nUpper = nNew; }
59 void SetLower( USHORT nNew ) { nLower = nNew; }
60 void SetLeft ( USHORT nNew ) { nLeft = nNew; }
61 void SetRight( USHORT nNew ) { nRight = nNew; }
63 USHORT GetWishWidth() const { return nWish; }
64 USHORT GetUpper() const { return nUpper; }
65 USHORT GetLower() const { return nLower; }
66 USHORT GetLeft () const { return nLeft; }
67 USHORT GetRight() const { return nRight; }
70 typedef SwColumn* SwColumnPtr;
71 SV_DECL_PTRARR_DEL( SwColumns, SwColumnPtr, 0, 2 )
73 enum SwColLineAdj
75 COLADJ_NONE,
76 COLADJ_TOP,
77 COLADJ_CENTER,
78 COLADJ_BOTTOM
81 class SW_DLLPUBLIC SwFmtCol : public SfxPoolItem
83 // Pen aPen; //Pen fuer die Linine zwischen den Spalten
84 ULONG nLineWidth; //width of the separator line
85 Color aLineColor; //color of the separator line
87 BYTE nLineHeight; //Prozentuale Hoehe der Linien
88 //(Relativ zu der Hoehe der Spalten incl. UL).
89 SwColLineAdj eAdj; //Linie wird oben, mittig oder unten ausgerichtet.
91 SwColumns aColumns; //Informationen fuer die einzelnen Spalten.
92 USHORT nWidth; //Gesamtwunschbreite aller Spalten.
94 BOOL bOrtho; //Nur wenn dieses Flag gesetzt ist wird beim setzen
95 //der GutterWidth eine 'optische Verteilung'
96 //vorgenommen.
97 //Es muss zurueckgesetzt werden wenn an den
98 //Spaltenbreiten bzw. den Raendern gedreht wird.
99 //Wenn es wieder gesetzt wird wird automatisch neu
100 //gemischt (optisch verteilt).
101 //Das Flag ist initial gesetzt.
103 SW_DLLPRIVATE void Calc( USHORT nGutterWidth, USHORT nAct );
105 public:
106 SwFmtCol();
107 SwFmtCol( const SwFmtCol& );
108 ~SwFmtCol();
110 SwFmtCol& operator=( const SwFmtCol& );
112 // "pure virtual Methoden" vom SfxPoolItem
113 virtual int operator==( const SfxPoolItem& ) const;
114 virtual SfxPoolItem* Clone( SfxItemPool* pPool = 0 ) const;
115 virtual SfxItemPresentation GetPresentation( SfxItemPresentation ePres,
116 SfxMapUnit eCoreMetric,
117 SfxMapUnit ePresMetric,
118 String &rText,
119 const IntlWrapper* pIntl = 0 ) const;
121 virtual BOOL QueryValue( com::sun::star::uno::Any& rVal, BYTE nMemberId = 0 ) const;
122 virtual BOOL PutValue( const com::sun::star::uno::Any& rVal, BYTE nMemberId = 0 );
124 const SwColumns &GetColumns() const { return aColumns; }
125 SwColumns &GetColumns() { return aColumns; }
126 USHORT GetNumCols() const { return aColumns.Count(); }
127 // const Pen& GetLinePen() const { return aPen; }
128 ULONG GetLineWidth() const { return nLineWidth;}
129 const Color& GetLineColor() const { return aLineColor;}
132 SwColLineAdj GetLineAdj() const { return eAdj; }
133 BOOL IsOrtho() const { return bOrtho; }
134 USHORT GetWishWidth() const { return nWidth; }
135 BYTE GetLineHeight()const { return nLineHeight; }
137 //Return USHRT_MAX wenn uneindeutig.
138 //Return die kleinste Breite wenn bMin True ist.
139 USHORT GetGutterWidth( BOOL bMin = FALSE ) const;
141 // void SetLinePen( const Pen& rNew ) { aPen = rNew; }
142 void SetLineWidth(ULONG nLWidth) { nLineWidth = nLWidth;}
143 void SetLineColor(const Color& rCol ) { aLineColor = rCol;}
144 void SetLineHeight( BYTE nNew ) { nLineHeight = nNew; }
145 void SetLineAdj( SwColLineAdj eNew ){ eAdj = eNew; }
146 void SetWishWidth( USHORT nNew ) { nWidth = nNew; }
148 //Mit dieser Funktion koennen die Spalten (immer wieder) initialisert
149 //werden. Das Ortho Flag wird automatisch gesetzt.
150 void Init( USHORT nNumCols, USHORT nGutterWidth, USHORT nAct );
152 //Stellt die Raender fuer die Spalten in aColumns ein.
153 //Wenn das Flag bOrtho gesetzt ist, werden die Spalten neu optisch
154 //verteilt. Ist das Flag nicht gesetzt werden die Spaltenbreiten nicht
155 //veraendert und die Raender werden einfach eingestellt.
156 void SetGutterWidth( USHORT nNew, USHORT nAct );
158 //Verteilt ebenfalls automatisch neu wenn das Flag gesetzt wird;
159 //nur dann wird auch der zweite Param. benoetigt und beachtet.
160 void SetOrtho( BOOL bNew, USHORT nGutterWidth, USHORT nAct );
162 //Fuer den Reader
163 void _SetOrtho( BOOL bNew ) { bOrtho = bNew; }
165 //Berechnet die aktuelle Breite der Spalte nCol.
166 //Das Verhaeltniss von Wunschbreite der Spalte zum Returnwert ist
167 //proportional zum Verhaeltniss des Gesamtwunschwertes zu nAct.
168 USHORT CalcColWidth( USHORT nCol, USHORT nAct ) const;
170 //Wie oben, aber es wir die Breite der PrtArea - also das was fuer
171 //den Anwender die Spalte ist - geliefert.
172 USHORT CalcPrtColWidth( USHORT nCol, USHORT nAct ) const;
175 inline const SwFmtCol &SwAttrSet::GetCol(BOOL bInP) const
176 { return (const SwFmtCol&)Get( RES_COL,bInP); }
178 inline const SwFmtCol &SwFmt::GetCol(BOOL bInP) const
179 { return aSet.GetCol(bInP); }
181 #endif