xref: /AOO41X/main/sw/source/core/text/pordrop.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 _PORDROP_HXX
24cdf0e10cSrcweir #define _PORDROP_HXX
25cdf0e10cSrcweir 
26cdf0e10cSrcweir #include "portxt.hxx"
27cdf0e10cSrcweir 
28cdf0e10cSrcweir class SwFont;
29cdf0e10cSrcweir 
30cdf0e10cSrcweir // DropCap-Cache, globale Variable, in txtinit.cxx initialisiert/zerstoert
31cdf0e10cSrcweir // und in txtdrop.cxx benutzt bei der Initialenberechnung
32cdf0e10cSrcweir 
33cdf0e10cSrcweir class SwDropCapCache;
34cdf0e10cSrcweir extern SwDropCapCache *pDropCapCache;
35cdf0e10cSrcweir 
36cdf0e10cSrcweir /*************************************************************************
37cdf0e10cSrcweir  *                      class SwDropPortionPart
38cdf0e10cSrcweir  *
39cdf0e10cSrcweir  * A drop portion can consist of one or more parts in order to allow
40cdf0e10cSrcweir  * attribute changes inside them.
41cdf0e10cSrcweir  *************************************************************************/
42cdf0e10cSrcweir 
43cdf0e10cSrcweir class SwDropPortionPart
44cdf0e10cSrcweir {
45cdf0e10cSrcweir     SwDropPortionPart* pFollow;
46cdf0e10cSrcweir     SwFont* pFnt;
47cdf0e10cSrcweir     xub_StrLen nLen;
48cdf0e10cSrcweir     sal_uInt16 nWidth;
49cdf0e10cSrcweir 
50cdf0e10cSrcweir public:
SwDropPortionPart(SwFont & rFont,const xub_StrLen nL)51cdf0e10cSrcweir     SwDropPortionPart( SwFont& rFont, const xub_StrLen nL )
52cdf0e10cSrcweir             : pFollow( 0 ), pFnt( &rFont ), nLen( nL ), nWidth( 0 ) {};
53cdf0e10cSrcweir     ~SwDropPortionPart();
54cdf0e10cSrcweir 
GetFollow() const55cdf0e10cSrcweir     inline SwDropPortionPart* GetFollow() const { return pFollow; };
SetFollow(SwDropPortionPart * pNew)56cdf0e10cSrcweir     inline void SetFollow( SwDropPortionPart* pNew ) { pFollow = pNew; };
GetFont() const57cdf0e10cSrcweir     inline SwFont& GetFont() const { return *pFnt; }
GetLen() const58cdf0e10cSrcweir     inline xub_StrLen GetLen() const { return nLen; }
GetWidth() const59cdf0e10cSrcweir     inline sal_uInt16 GetWidth() const { return nWidth; }
SetWidth(sal_uInt16 nNew)60cdf0e10cSrcweir     inline void SetWidth( sal_uInt16 nNew )  { nWidth = nNew; }
61cdf0e10cSrcweir };
62cdf0e10cSrcweir 
63cdf0e10cSrcweir /*************************************************************************
64cdf0e10cSrcweir  *						class SwDropPortion
65cdf0e10cSrcweir  *************************************************************************/
66cdf0e10cSrcweir 
67cdf0e10cSrcweir class SwDropPortion : public SwTxtPortion
68cdf0e10cSrcweir {
69cdf0e10cSrcweir 	friend class SwDropCapCache;
70cdf0e10cSrcweir     SwDropPortionPart* pPart; // due to script / attribute changes
71cdf0e10cSrcweir     MSHORT nLines;          // Anzahl der Zeilen
72cdf0e10cSrcweir 	KSHORT nDropHeight; 	// Hoehe
73cdf0e10cSrcweir 	KSHORT nDropDescent; 	// Abstand zur naechsten Zeile
74cdf0e10cSrcweir 	KSHORT nDistance;		// Abstand zum Text
75cdf0e10cSrcweir 	KSHORT nFix;			// Fixposition
76cdf0e10cSrcweir 	short nX;				// X-PaintOffset
77cdf0e10cSrcweir     short nY;               // Y-Offset
78cdf0e10cSrcweir 
79cdf0e10cSrcweir 	sal_Bool FormatTxt( SwTxtFormatInfo &rInf );
80cdf0e10cSrcweir     void PaintTxt( const SwTxtPaintInfo &rInf ) const;
81cdf0e10cSrcweir 
Fix(const KSHORT nNew)82cdf0e10cSrcweir 	inline void Fix( const KSHORT nNew ) { nFix = nNew; }
83cdf0e10cSrcweir public:
84cdf0e10cSrcweir     SwDropPortion( const MSHORT nLineCnt,
85cdf0e10cSrcweir                    const KSHORT nDropHeight,
86cdf0e10cSrcweir                    const KSHORT nDropDescent,
87cdf0e10cSrcweir                    const KSHORT nDistance );
88cdf0e10cSrcweir 	virtual ~SwDropPortion();
89cdf0e10cSrcweir 
90cdf0e10cSrcweir 	virtual void Paint( const SwTxtPaintInfo &rInf ) const;
91cdf0e10cSrcweir 			void PaintDrop( const SwTxtPaintInfo &rInf ) const;
92cdf0e10cSrcweir 	virtual sal_Bool Format( SwTxtFormatInfo &rInf );
93cdf0e10cSrcweir 	virtual SwPosSize GetTxtSize( const SwTxtSizeInfo &rInfo ) const;
94cdf0e10cSrcweir 	virtual xub_StrLen GetCrsrOfst( const MSHORT nOfst ) const;
95cdf0e10cSrcweir 
GetLines() const96cdf0e10cSrcweir 	inline MSHORT GetLines() const { return nLines; }
GetDistance() const97cdf0e10cSrcweir 	inline KSHORT GetDistance() const { return nDistance; }
GetDropHeight() const98cdf0e10cSrcweir 	inline KSHORT GetDropHeight() const { return nDropHeight; }
GetDropDescent() const99cdf0e10cSrcweir 	inline KSHORT GetDropDescent() const { return nDropDescent; }
GetDropLeft() const100cdf0e10cSrcweir 	inline KSHORT GetDropLeft() const { return Width() + nFix; }
101cdf0e10cSrcweir 
GetPart() const102cdf0e10cSrcweir     inline SwDropPortionPart* GetPart() const { return pPart; }
SetPart(SwDropPortionPart * pNew)103cdf0e10cSrcweir     inline void SetPart( SwDropPortionPart* pNew ) { pPart = pNew; }
104cdf0e10cSrcweir 
SetY(short nNew)105cdf0e10cSrcweir     inline void SetY( short nNew )  { nY = nNew; }
106cdf0e10cSrcweir 
GetFnt() const107cdf0e10cSrcweir     inline SwFont* GetFnt() const { return pPart ? &pPart->GetFont() : NULL; }
108cdf0e10cSrcweir 
109cdf0e10cSrcweir 	static void DeleteDropCapCache();
110cdf0e10cSrcweir 
111cdf0e10cSrcweir 	OUTPUT_OPERATOR
112cdf0e10cSrcweir };
113cdf0e10cSrcweir 
114cdf0e10cSrcweir 
115cdf0e10cSrcweir #endif
116