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