xref: /AOO41X/main/sw/source/core/text/porglue.hxx (revision 1d2dbeb0b7301723c6d13094e87a8714ef81a328)
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 _PORGLUE_HXX
24cdf0e10cSrcweir #define _PORGLUE_HXX
25cdf0e10cSrcweir 
26cdf0e10cSrcweir //#include <stdlib.h>
27cdf0e10cSrcweir 
28cdf0e10cSrcweir #include "porlin.hxx"
29cdf0e10cSrcweir 
30cdf0e10cSrcweir class SwRect;
31cdf0e10cSrcweir class SwLineLayout;
32cdf0e10cSrcweir 
33cdf0e10cSrcweir /*************************************************************************
34cdf0e10cSrcweir  *						class SwGluePortion
35cdf0e10cSrcweir  *************************************************************************/
36cdf0e10cSrcweir 
37cdf0e10cSrcweir class SwGluePortion : public SwLinePortion
38cdf0e10cSrcweir {
39cdf0e10cSrcweir private:
40cdf0e10cSrcweir 	KSHORT nFixWidth;
41cdf0e10cSrcweir public:
42cdf0e10cSrcweir 				SwGluePortion( const KSHORT nInitFixWidth );
43cdf0e10cSrcweir 
44cdf0e10cSrcweir 	void Join( SwGluePortion *pVictim );
45cdf0e10cSrcweir 
46cdf0e10cSrcweir 	inline short GetPrtGlue() const;
GetFixWidth() const47cdf0e10cSrcweir 	inline KSHORT GetFixWidth() const { return nFixWidth; }
SetFixWidth(const KSHORT nNew)48cdf0e10cSrcweir 	inline void SetFixWidth( const KSHORT nNew ) { nFixWidth = nNew; }
49cdf0e10cSrcweir 	void MoveGlue( SwGluePortion *pTarget, const short nPrtGlue );
50cdf0e10cSrcweir 	inline void MoveAllGlue( SwGluePortion *pTarget );
51cdf0e10cSrcweir 	inline void MoveHalfGlue( SwGluePortion *pTarget );
52cdf0e10cSrcweir 	inline void AdjFixWidth();
53cdf0e10cSrcweir 	virtual void Paint( const SwTxtPaintInfo &rInf ) const;
54cdf0e10cSrcweir 	virtual xub_StrLen GetCrsrOfst( const KSHORT nOfst ) const;
55cdf0e10cSrcweir 	virtual SwPosSize GetTxtSize( const SwTxtSizeInfo &rInfo ) const;
56cdf0e10cSrcweir 	virtual sal_Bool GetExpTxt( const SwTxtSizeInfo &rInf, XubString &rTxt ) const;
57cdf0e10cSrcweir 
58cdf0e10cSrcweir 	OUTPUT_OPERATOR
59cdf0e10cSrcweir };
60cdf0e10cSrcweir 
61cdf0e10cSrcweir /*************************************************************************
62cdf0e10cSrcweir  *						class SwFixPortion
63cdf0e10cSrcweir  *************************************************************************/
64cdf0e10cSrcweir 
65cdf0e10cSrcweir class SwFixPortion : public SwGluePortion
66cdf0e10cSrcweir {
67cdf0e10cSrcweir 	KSHORT nFix;		// der Width-Offset in der Zeile
68cdf0e10cSrcweir public:
69cdf0e10cSrcweir 		SwFixPortion( const SwRect &rFlyRect );
70cdf0e10cSrcweir 		SwFixPortion( const KSHORT nFixWidth, const KSHORT nFixPos );
Fix(const KSHORT nNewFix)71cdf0e10cSrcweir 	inline void   Fix( const KSHORT nNewFix ) { nFix = nNewFix; }
Fix() const72cdf0e10cSrcweir 	inline KSHORT Fix() const { return nFix; }
73cdf0e10cSrcweir 	OUTPUT_OPERATOR
74cdf0e10cSrcweir };
75cdf0e10cSrcweir 
76cdf0e10cSrcweir /*************************************************************************
77cdf0e10cSrcweir  *				  class SwMarginPortion
78cdf0e10cSrcweir  *************************************************************************/
79cdf0e10cSrcweir 
80cdf0e10cSrcweir class SwMarginPortion : public SwGluePortion
81cdf0e10cSrcweir {
82cdf0e10cSrcweir public:
83cdf0e10cSrcweir 		SwMarginPortion( const KSHORT nFixWidth );
84cdf0e10cSrcweir 		void AdjustRight( const SwLineLayout* pCurr );
85cdf0e10cSrcweir 	OUTPUT_OPERATOR
86cdf0e10cSrcweir };
87cdf0e10cSrcweir 
88cdf0e10cSrcweir /*************************************************************************
89cdf0e10cSrcweir  *				  inline SwGluePortion::GetPrtGlue()
90cdf0e10cSrcweir  *************************************************************************/
91cdf0e10cSrcweir 
GetPrtGlue() const92cdf0e10cSrcweir inline short SwGluePortion::GetPrtGlue() const
93cdf0e10cSrcweir { return Width() - nFixWidth; }
94cdf0e10cSrcweir 
95cdf0e10cSrcweir /*************************************************************************
96cdf0e10cSrcweir  *				inline SwGluePortion::AdjFixWidth()
97cdf0e10cSrcweir  * Die FixWidth darf niemals groesser sein als die Gesamtbreite !
98cdf0e10cSrcweir  *************************************************************************/
99cdf0e10cSrcweir 
AdjFixWidth()100cdf0e10cSrcweir inline void SwGluePortion::AdjFixWidth()
101cdf0e10cSrcweir {
102cdf0e10cSrcweir 	if( nFixWidth > PrtWidth() )
103cdf0e10cSrcweir 		nFixWidth = PrtWidth();
104cdf0e10cSrcweir }
105cdf0e10cSrcweir 
106cdf0e10cSrcweir /*************************************************************************
107cdf0e10cSrcweir  *				   inline SwGluePortion::MoveGlue()
108cdf0e10cSrcweir  *************************************************************************/
109cdf0e10cSrcweir 
MoveAllGlue(SwGluePortion * pTarget)110cdf0e10cSrcweir inline void SwGluePortion::MoveAllGlue( SwGluePortion *pTarget )
111cdf0e10cSrcweir {
112cdf0e10cSrcweir 	MoveGlue( pTarget, GetPrtGlue() );
113cdf0e10cSrcweir }
114cdf0e10cSrcweir 
115cdf0e10cSrcweir /*************************************************************************
116cdf0e10cSrcweir  *				  inline SwGluePortion::MoveHalfGlue()
117cdf0e10cSrcweir  *************************************************************************/
118cdf0e10cSrcweir 
MoveHalfGlue(SwGluePortion * pTarget)119cdf0e10cSrcweir inline void SwGluePortion::MoveHalfGlue( SwGluePortion *pTarget )
120cdf0e10cSrcweir {
121cdf0e10cSrcweir 	MoveGlue( pTarget, GetPrtGlue() / 2 );
122cdf0e10cSrcweir }
123cdf0e10cSrcweir 
124cdf0e10cSrcweir CLASSIO( SwGluePortion )
125cdf0e10cSrcweir CLASSIO( SwFixPortion )
126cdf0e10cSrcweir CLASSIO( SwMarginPortion )
127cdf0e10cSrcweir 
128cdf0e10cSrcweir 
129cdf0e10cSrcweir #endif
130cdf0e10cSrcweir 
131