Update ooo320-m1
[ooovba.git] / sw / source / core / text / portab.hxx
blob547eb1fb512e13a9e0637440a06a39d0b1546943
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: portab.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 _PORTAB_HXX
31 #define _PORTAB_HXX
33 #include "porglue.hxx"
35 /*************************************************************************
36 * class SwTabPortion
37 *************************************************************************/
39 class SwTabPortion : public SwFixPortion
41 const KSHORT nTabPos;
42 const xub_Unicode cFill;
44 // Das Format() verzweigt entweder in Pre- oder PostFormat()
45 sal_Bool PreFormat( SwTxtFormatInfo &rInf );
46 public:
47 SwTabPortion( const KSHORT nTabPos, const xub_Unicode cFill = '\0' );
48 virtual void Paint( const SwTxtPaintInfo &rInf ) const;
49 virtual sal_Bool Format( SwTxtFormatInfo &rInf );
50 virtual void FormatEOL( SwTxtFormatInfo &rInf );
51 sal_Bool PostFormat( SwTxtFormatInfo &rInf );
52 inline sal_Bool IsFilled() const { return 0 != cFill; }
53 inline KSHORT GetTabPos() const { return nTabPos; }
55 // Accessibility: pass information about this portion to the PortionHandler
56 virtual void HandlePortion( SwPortionHandler& rPH ) const;
58 OUTPUT_OPERATOR
61 /*************************************************************************
62 * class SwTabLeftPortion
63 *************************************************************************/
65 class SwTabLeftPortion : public SwTabPortion
67 public:
68 inline SwTabLeftPortion( const KSHORT nTabPosVal, const xub_Unicode cFillChar='\0' )
69 : SwTabPortion( nTabPosVal, cFillChar )
70 { SetWhichPor( POR_TABLEFT ); }
71 OUTPUT_OPERATOR
74 /*************************************************************************
75 * class SwTabRightPortion
76 *************************************************************************/
78 class SwTabRightPortion : public SwTabPortion
80 public:
81 inline SwTabRightPortion( const KSHORT nTabPosVal, const xub_Unicode cFillChar='\0' )
82 : SwTabPortion( nTabPosVal, cFillChar )
83 { SetWhichPor( POR_TABRIGHT ); }
84 OUTPUT_OPERATOR
87 /*************************************************************************
88 * class SwTabCenterPortion
89 *************************************************************************/
91 class SwTabCenterPortion : public SwTabPortion
93 public:
94 inline SwTabCenterPortion( const KSHORT nTabPosVal, const xub_Unicode cFillChar='\0' )
95 : SwTabPortion( nTabPosVal, cFillChar )
96 { SetWhichPor( POR_TABCENTER ); }
97 OUTPUT_OPERATOR
100 /*************************************************************************
101 * class SwTabDecimalPortion
102 *************************************************************************/
104 class SwTabDecimalPortion : public SwTabPortion
106 const xub_Unicode mcTab;
109 * During text formatting, we already store the width of the portions
110 * following the tab stop up to the decimal position. This value is
111 * evaluated during pLastTab->FormatEOL. FME 2006-01-06 #127428#.
113 USHORT mnWidthOfPortionsUpTpDecimalPosition;
115 public:
116 inline SwTabDecimalPortion( const KSHORT nTabPosVal, const xub_Unicode cTab,
117 const xub_Unicode cFillChar = '\0' )
118 : SwTabPortion( nTabPosVal, cFillChar ),
119 mcTab(cTab),
120 mnWidthOfPortionsUpTpDecimalPosition( USHRT_MAX )
121 { SetWhichPor( POR_TABDECIMAL ); }
123 inline xub_Unicode GetTabDecimal() const { return mcTab; }
125 inline void SetWidthOfPortionsUpToDecimalPosition( USHORT nNew )
127 mnWidthOfPortionsUpTpDecimalPosition = nNew;
129 inline USHORT GetWidthOfPortionsUpToDecimalPosition() const
131 return mnWidthOfPortionsUpTpDecimalPosition;
134 OUTPUT_OPERATOR
138 /*************************************************************************
139 * class SwAutoTabDecimalPortion
140 *************************************************************************/
142 class SwAutoTabDecimalPortion : public SwTabDecimalPortion
144 public:
145 inline SwAutoTabDecimalPortion( const KSHORT nTabPosVal, const xub_Unicode cTab,
146 const xub_Unicode cFillChar = '\0' )
147 : SwTabDecimalPortion( nTabPosVal, cTab, cFillChar )
148 { SetLen( 0 ); }
149 virtual void Paint( const SwTxtPaintInfo &rInf ) const;
153 CLASSIO( SwTabPortion )
154 CLASSIO( SwTabLeftPortion )
155 CLASSIO( SwTabRightPortion )
156 CLASSIO( SwTabCenterPortion )
157 CLASSIO( SwTabDecimalPortion )
160 #endif