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 ************************************************************************/
34 #include <tools/color.hxx>
36 #ifndef _FORMAT_HXX //autogen
41 //Der ColumnDescriptor --------------------------
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
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 ;
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'
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
);
109 SwFmtCol( const 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.
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
); }
180 } //namespace binfilter