1 /*************************************************************************
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
5 * Copyright 2008 by Sun Microsystems, Inc.
7 * OpenOffice.org - a multi-platform office productivity suite
9 * $RCSfile: fmtclds.hxx,v $
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 ************************************************************************/
33 #include <tools/color.hxx>
34 #include <svtools/poolitem.hxx>
36 #include <hintids.hxx>
39 //Der ColumnDescriptor --------------------------
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
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 )
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'
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
);
107 SwFmtCol( const 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
,
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
);
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
); }