| /************************************************************** |
| * |
| * 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 _FNTCACHE_HXX |
| #define _FNTCACHE_HXX |
| |
| #include <vcl/font.hxx> |
| #include <tools/mempool.hxx> |
| |
| #include "swtypes.hxx" |
| #include "swcache.hxx" |
| |
| class Printer; |
| class OutputDevice; |
| class FontMetric; |
| class SwFntObj; |
| class SwDrawTextInfo; // DrawText |
| class ViewShell; |
| class SwSubFont; |
| class MapMode; |
| |
| /************************************************************************* |
| * class SwFntCache |
| *************************************************************************/ |
| |
| class SwFntCache : public SwCache |
| { |
| public: |
| |
| inline SwFntCache() : SwCache(50,50 |
| #ifdef DBG_UTIL |
| , ByteString( RTL_CONSTASCII_STRINGPARAM( |
| "Globaler Font-Cache pFntCache" )) |
| #endif |
| ) {} |
| |
| inline SwFntObj *First( ) { return (SwFntObj *)SwCache::First(); } |
| inline SwFntObj *Next( SwFntObj *pFntObj) |
| { return (SwFntObj *)SwCache::Next( (SwCacheObj *)pFntObj ); } |
| void Flush(); |
| }; |
| |
| // Font-Cache, globale Variable, in txtinit.Cxx angelegt/zerstoert |
| extern SwFntCache *pFntCache; |
| extern SwFntObj *pLastFont; |
| extern sal_uInt8 *pMagicNo; |
| extern Color *pWaveCol; |
| |
| /************************************************************************* |
| * class SwFntObj |
| *************************************************************************/ |
| |
| class SwFntObj : public SwCacheObj |
| { |
| friend class SwFntAccess; |
| friend void _InitCore(); |
| friend void _FinitCore(); |
| |
| Font aFont; |
| Font *pScrFont; |
| Font *pPrtFont; |
| OutputDevice* pPrinter; |
| sal_uInt16 nGuessedLeading; |
| sal_uInt16 nExtLeading; |
| sal_uInt16 nScrAscent; |
| sal_uInt16 nPrtAscent; |
| sal_uInt16 nScrHeight; |
| sal_uInt16 nPrtHeight; |
| sal_uInt16 nPropWidth; |
| sal_uInt16 nZoom; |
| sal_Bool bSymbol : 1; |
| sal_Bool bPaintBlank : 1; |
| |
| static long nPixWidth; |
| static MapMode *pPixMap; |
| static OutputDevice *pPixOut; |
| |
| // SMARTTAGS |
| void calcLinePos(SwDrawTextInfo& rInf, Point& aStart, Point& aEnd, xub_StrLen nStart, |
| xub_StrLen nWrLen, xub_StrLen nCnt, const sal_Bool bSwitchH2V, const sal_Bool bSwitchL2R, |
| long nHalfSpace, long* pKernArray, const sal_Bool bBidiPor); |
| |
| public: |
| DECL_FIXEDMEMPOOL_NEWDEL(SwFntObj) |
| |
| SwFntObj( const SwSubFont &rFont, const void* pOwner, |
| ViewShell *pSh ); |
| |
| virtual ~SwFntObj(); |
| |
| inline Font *GetScrFont() { return pScrFont; } |
| inline Font *GetFont() { return &aFont; } |
| inline const Font *GetFont() const { return &aFont; } |
| |
| inline sal_uInt16 GetGuessedLeading() const { return nGuessedLeading; } |
| inline sal_uInt16 GetExtLeading() const { return nExtLeading; } |
| |
| sal_uInt16 GetFontAscent( const ViewShell *pSh, const OutputDevice& rOut ); |
| sal_uInt16 GetFontHeight( const ViewShell *pSh, const OutputDevice& rOut ); |
| sal_uInt16 GetFontLeading( const ViewShell *pSh, const OutputDevice& rOut ); |
| |
| void GuessLeading( const ViewShell& rSh, const FontMetric& rMet ); |
| |
| void SetDevFont( const ViewShell *pSh, OutputDevice& rOut ); |
| inline OutputDevice* GetPrt() const { return pPrinter; } |
| inline sal_uInt16 GetZoom() const { return nZoom; } |
| inline sal_uInt16 GetPropWidth() const { return nPropWidth; } |
| inline sal_Bool IsSymbol() const { return bSymbol; } |
| |
| void DrawText( SwDrawTextInfo &rInf ); |
| Size GetTextSize( SwDrawTextInfo &rInf ); |
| xub_StrLen GetCrsrOfst( SwDrawTextInfo &rInf ); |
| |
| void CreateScrFont( const ViewShell& rSh, const OutputDevice& rOut ); |
| void CreatePrtFont( const OutputDevice& rOut ); |
| }; |
| |
| /************************************************************************* |
| * class SwFntAccess |
| *************************************************************************/ |
| |
| |
| class SwFntAccess : public SwCacheAccess |
| { |
| ViewShell *pShell; |
| protected: |
| virtual SwCacheObj *NewObj( ); |
| |
| public: |
| SwFntAccess( const void * &rMagic, sal_uInt16 &rIndex, const void *pOwner, |
| ViewShell *pShell, |
| sal_Bool bCheck = sal_False ); |
| inline SwFntObj* Get() { return (SwFntObj*) SwCacheAccess::Get(); }; |
| }; |
| |
| |
| #endif |