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