| /************************************************************** |
| * |
| * Licensed to the Apache Software Foundation (ASF) under one |
| * or more contributor license agreements. See the NOTICE file |
| * distributed with this work for additional information |
| * regarding copyright ownership. The ASF licenses this file |
| * to you under the Apache License, Version 2.0 (the |
| * "License"); you may not use this file except in compliance |
| * with the License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, |
| * software distributed under the License is distributed on an |
| * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| * KIND, either express or implied. See the License for the |
| * specific language governing permissions and limitations |
| * under the License. |
| * |
| *************************************************************/ |
| |
| |
| #ifndef _PORDROP_HXX |
| #define _PORDROP_HXX |
| |
| #include "portxt.hxx" |
| |
| class SwFont; |
| |
| // DropCap-Cache, globale Variable, in txtinit.cxx initialisiert/zerstoert |
| // und in txtdrop.cxx benutzt bei der Initialenberechnung |
| |
| class SwDropCapCache; |
| extern SwDropCapCache *pDropCapCache; |
| |
| /************************************************************************* |
| * class SwDropPortionPart |
| * |
| * A drop portion can consist of one or more parts in order to allow |
| * attribute changes inside them. |
| *************************************************************************/ |
| |
| class SwDropPortionPart |
| { |
| SwDropPortionPart* pFollow; |
| SwFont* pFnt; |
| xub_StrLen nLen; |
| sal_uInt16 nWidth; |
| |
| public: |
| SwDropPortionPart( SwFont& rFont, const xub_StrLen nL ) |
| : pFollow( 0 ), pFnt( &rFont ), nLen( nL ), nWidth( 0 ) {}; |
| ~SwDropPortionPart(); |
| |
| inline SwDropPortionPart* GetFollow() const { return pFollow; }; |
| inline void SetFollow( SwDropPortionPart* pNew ) { pFollow = pNew; }; |
| inline SwFont& GetFont() const { return *pFnt; } |
| inline xub_StrLen GetLen() const { return nLen; } |
| inline sal_uInt16 GetWidth() const { return nWidth; } |
| inline void SetWidth( sal_uInt16 nNew ) { nWidth = nNew; } |
| }; |
| |
| /************************************************************************* |
| * class SwDropPortion |
| *************************************************************************/ |
| |
| class SwDropPortion : public SwTxtPortion |
| { |
| friend class SwDropCapCache; |
| SwDropPortionPart* pPart; // due to script / attribute changes |
| MSHORT nLines; // Anzahl der Zeilen |
| KSHORT nDropHeight; // Hoehe |
| KSHORT nDropDescent; // Abstand zur naechsten Zeile |
| KSHORT nDistance; // Abstand zum Text |
| KSHORT nFix; // Fixposition |
| short nX; // X-PaintOffset |
| short nY; // Y-Offset |
| |
| sal_Bool FormatTxt( SwTxtFormatInfo &rInf ); |
| void PaintTxt( const SwTxtPaintInfo &rInf ) const; |
| |
| inline void Fix( const KSHORT nNew ) { nFix = nNew; } |
| public: |
| SwDropPortion( const MSHORT nLineCnt, |
| const KSHORT nDropHeight, |
| const KSHORT nDropDescent, |
| const KSHORT nDistance ); |
| virtual ~SwDropPortion(); |
| |
| virtual void Paint( const SwTxtPaintInfo &rInf ) const; |
| void PaintDrop( const SwTxtPaintInfo &rInf ) const; |
| virtual sal_Bool Format( SwTxtFormatInfo &rInf ); |
| virtual SwPosSize GetTxtSize( const SwTxtSizeInfo &rInfo ) const; |
| virtual xub_StrLen GetCrsrOfst( const MSHORT nOfst ) const; |
| |
| inline MSHORT GetLines() const { return nLines; } |
| inline KSHORT GetDistance() const { return nDistance; } |
| inline KSHORT GetDropHeight() const { return nDropHeight; } |
| inline KSHORT GetDropDescent() const { return nDropDescent; } |
| inline KSHORT GetDropLeft() const { return Width() + nFix; } |
| |
| inline SwDropPortionPart* GetPart() const { return pPart; } |
| inline void SetPart( SwDropPortionPart* pNew ) { pPart = pNew; } |
| |
| inline void SetY( short nNew ) { nY = nNew; } |
| |
| inline SwFont* GetFnt() const { return pPart ? &pPart->GetFont() : NULL; } |
| |
| static void DeleteDropCapCache(); |
| |
| OUTPUT_OPERATOR |
| }; |
| |
| |
| #endif |