xref: /trunk/main/sw/source/core/text/porrst.hxx (revision 1d2dbeb0)
1 /**************************************************************
2  *
3  * Licensed to the Apache Software Foundation (ASF) under one
4  * or more contributor license agreements.  See the NOTICE file
5  * distributed with this work for additional information
6  * regarding copyright ownership.  The ASF licenses this file
7  * to you under the Apache License, Version 2.0 (the
8  * "License"); you may not use this file except in compliance
9  * with the License.  You may obtain a copy of the License at
10  *
11  *   http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing,
14  * software distributed under the License is distributed on an
15  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16  * KIND, either express or implied.  See the License for the
17  * specific language governing permissions and limitations
18  * under the License.
19  *
20  *************************************************************/
21 
22 
23 #ifndef _PORRST_HXX
24 #define _PORRST_HXX
25 #include "porlay.hxx"
26 #include "porexp.hxx"
27 
28 #define LINE_BREAK_WIDTH        150
29 #define SPECIAL_FONT_HEIGHT     200
30 
31 class SwTxtFormatInfo;
32 
33 /*************************************************************************
34  *						class SwTmpEndPortion
35  *************************************************************************/
36 
37 class SwTmpEndPortion : public SwLinePortion
38 {
39 public:
40 			SwTmpEndPortion( const SwLinePortion &rPortion );
41 	virtual void Paint( const SwTxtPaintInfo &rInf ) const;
42 	OUTPUT_OPERATOR
43 };
44 
45 /*************************************************************************
46  *						class SwBreakPortion
47  *************************************************************************/
48 
49 class SwBreakPortion : public SwLinePortion
50 {
51 public:
52 			SwBreakPortion( const SwLinePortion &rPortion );
53 	// liefert 0 zurueck, wenn keine Nutzdaten enthalten sind.
54 	virtual SwLinePortion *Compress();
55 	virtual void Paint( const SwTxtPaintInfo &rInf ) const;
56 	virtual sal_Bool Format( SwTxtFormatInfo &rInf );
57 	virtual KSHORT GetViewWidth( const SwTxtSizeInfo &rInf ) const;
58     virtual xub_StrLen GetCrsrOfst( const MSHORT nOfst ) const;
59 
60     // Accessibility: pass information about this portion to the PortionHandler
61     virtual void HandlePortion( SwPortionHandler& rPH ) const;
62 
63 	OUTPUT_OPERATOR
64 };
65 
66 /*************************************************************************
67  *						class SwKernPortion
68  *************************************************************************/
69 
70 class SwKernPortion : public SwLinePortion
71 {
72 	short nKern;
73     sal_Bool bBackground;
74     sal_Bool bGridKern;
75 
76 public:
77 
78     // This constructor automatically appends the portion to rPortion
79     // bBG indicates, that the background of the kerning portion has to
80     // be painted, e.g., if the portion if positioned between to fields.
81     // bGridKern indicates, that the kerning portion is used to provide
82     // additional space in grid mode.
83     SwKernPortion( SwLinePortion &rPortion, short nKrn,
84                    sal_Bool bBG = sal_False, sal_Bool bGridKern = sal_False );
85 
86     // This constructor only sets the height and ascent to the values
87     // of rPortion. It is only used for kerning portions for grid mode
88     SwKernPortion( const SwLinePortion &rPortion );
89 
90 	virtual void FormatEOL( SwTxtFormatInfo &rInf );
91 	virtual void Paint( const SwTxtPaintInfo &rInf ) const;
92 
93 	OUTPUT_OPERATOR
94 };
95 
96 /*************************************************************************
97  *						class SwArrowPortion
98  *************************************************************************/
99 
100 class SwArrowPortion : public SwLinePortion
101 {
102 	Point aPos;
103 	sal_Bool bLeft;
104 public:
105 			SwArrowPortion( const SwLinePortion &rPortion );
106 			SwArrowPortion( const SwTxtPaintInfo &rInf );
107 	virtual void Paint( const SwTxtPaintInfo &rInf ) const;
108 	virtual SwLinePortion *Compress();
IsLeft() const109 	inline sal_Bool IsLeft() const { return bLeft; }
GetPos() const110 	inline const Point& GetPos() const { return aPos; }
111 	OUTPUT_OPERATOR
112 };
113 
114 /*************************************************************************
115  *						class SwHangingPortion
116  * The characters which are forbidden at the start of a line like the dot and
117  * other punctuation marks are allowed to display in the margin of the page
118  * by a user option.
119  * The SwHangingPortion is the corresponding textportion to do that.
120  *************************************************************************/
121 
122 class SwHangingPortion : public SwTxtPortion
123 {
124 	KSHORT nInnerWidth;
125 public:
SwHangingPortion(SwPosSize aSize)126 	inline SwHangingPortion( SwPosSize aSize ) : nInnerWidth( aSize.Width() )
127 		{ SetWhichPor( POR_HNG );  SetLen( 1 ); Height( aSize.Height() ); }
128 
GetInnerWidth() const129 	inline KSHORT GetInnerWidth() const { return nInnerWidth; }
130 };
131 
132 /*************************************************************************
133  *                      class SwHiddenTextPortion
134  * Is used to hide text
135  *************************************************************************/
136 
137 class SwHiddenTextPortion : public SwLinePortion
138 {
139 public:
SwHiddenTextPortion(xub_StrLen nLen)140     inline SwHiddenTextPortion( xub_StrLen nLen )
141         { SetWhichPor( POR_HIDDEN_TXT );  SetLen( nLen ); }
142 
143     virtual void Paint( const SwTxtPaintInfo &rInf ) const;
144     virtual sal_Bool Format( SwTxtFormatInfo &rInf );
145 };
146 
147 /*************************************************************************
148  *                      class SwControlCharPortion
149  *************************************************************************/
150 
151 class SwControlCharPortion : public SwLinePortion
152 {
153 
154 private:
155     mutable sal_uInt16 mnViewWidth;            // used to cache a calculated value
156     mutable sal_uInt16 mnHalfCharWidth;        // used to cache a calculated value
157     sal_Unicode mcChar;
158 
159 public:
160 
SwControlCharPortion(sal_Unicode cChar)161     inline SwControlCharPortion( sal_Unicode cChar )
162         : mnViewWidth( 0 ), mnHalfCharWidth( 0 ), mcChar( cChar )
163     {
164         SetWhichPor( POR_CONTROLCHAR ); SetLen( 1 );
165     }
166 
167     virtual void Paint( const SwTxtPaintInfo &rInf ) const;
168     virtual sal_Bool Format( SwTxtFormatInfo &rInf );
169     virtual KSHORT GetViewWidth( const SwTxtSizeInfo& rInf ) const;
170 };
171 
172 
173 
174 /*************************************************************************
175  *					inline - Implementations
176  *************************************************************************/
177 
178 CLASSIO( SwBreakPortion )
179 CLASSIO( SwEndPortion )
180 CLASSIO( SwKernPortion )
181 CLASSIO( SwArrowPortion )
182 
183 #endif
184