1*b1cdbd2cSJim Jagielski /************************************************************** 2*b1cdbd2cSJim Jagielski * 3*b1cdbd2cSJim Jagielski * Licensed to the Apache Software Foundation (ASF) under one 4*b1cdbd2cSJim Jagielski * or more contributor license agreements. See the NOTICE file 5*b1cdbd2cSJim Jagielski * distributed with this work for additional information 6*b1cdbd2cSJim Jagielski * regarding copyright ownership. The ASF licenses this file 7*b1cdbd2cSJim Jagielski * to you under the Apache License, Version 2.0 (the 8*b1cdbd2cSJim Jagielski * "License"); you may not use this file except in compliance 9*b1cdbd2cSJim Jagielski * with the License. You may obtain a copy of the License at 10*b1cdbd2cSJim Jagielski * 11*b1cdbd2cSJim Jagielski * http://www.apache.org/licenses/LICENSE-2.0 12*b1cdbd2cSJim Jagielski * 13*b1cdbd2cSJim Jagielski * Unless required by applicable law or agreed to in writing, 14*b1cdbd2cSJim Jagielski * software distributed under the License is distributed on an 15*b1cdbd2cSJim Jagielski * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16*b1cdbd2cSJim Jagielski * KIND, either express or implied. See the License for the 17*b1cdbd2cSJim Jagielski * specific language governing permissions and limitations 18*b1cdbd2cSJim Jagielski * under the License. 19*b1cdbd2cSJim Jagielski * 20*b1cdbd2cSJim Jagielski *************************************************************/ 21*b1cdbd2cSJim Jagielski 22*b1cdbd2cSJim Jagielski 23*b1cdbd2cSJim Jagielski #ifndef _FNTCACHE_HXX 24*b1cdbd2cSJim Jagielski #define _FNTCACHE_HXX 25*b1cdbd2cSJim Jagielski 26*b1cdbd2cSJim Jagielski #include <vcl/font.hxx> 27*b1cdbd2cSJim Jagielski #include <tools/mempool.hxx> 28*b1cdbd2cSJim Jagielski 29*b1cdbd2cSJim Jagielski #include "swtypes.hxx" 30*b1cdbd2cSJim Jagielski #include "swcache.hxx" 31*b1cdbd2cSJim Jagielski 32*b1cdbd2cSJim Jagielski class Printer; 33*b1cdbd2cSJim Jagielski class OutputDevice; 34*b1cdbd2cSJim Jagielski class FontMetric; 35*b1cdbd2cSJim Jagielski class SwFntObj; 36*b1cdbd2cSJim Jagielski class SwDrawTextInfo; // DrawText 37*b1cdbd2cSJim Jagielski class ViewShell; 38*b1cdbd2cSJim Jagielski class SwSubFont; 39*b1cdbd2cSJim Jagielski class MapMode; 40*b1cdbd2cSJim Jagielski 41*b1cdbd2cSJim Jagielski /************************************************************************* 42*b1cdbd2cSJim Jagielski * class SwFntCache 43*b1cdbd2cSJim Jagielski *************************************************************************/ 44*b1cdbd2cSJim Jagielski 45*b1cdbd2cSJim Jagielski class SwFntCache : public SwCache 46*b1cdbd2cSJim Jagielski { 47*b1cdbd2cSJim Jagielski public: 48*b1cdbd2cSJim Jagielski SwFntCache()49*b1cdbd2cSJim Jagielski inline SwFntCache() : SwCache(50,50 50*b1cdbd2cSJim Jagielski #ifdef DBG_UTIL 51*b1cdbd2cSJim Jagielski , ByteString( RTL_CONSTASCII_STRINGPARAM( 52*b1cdbd2cSJim Jagielski "Globaler Font-Cache pFntCache" )) 53*b1cdbd2cSJim Jagielski #endif 54*b1cdbd2cSJim Jagielski ) {} 55*b1cdbd2cSJim Jagielski First()56*b1cdbd2cSJim Jagielski inline SwFntObj *First( ) { return (SwFntObj *)SwCache::First(); } Next(SwFntObj * pFntObj)57*b1cdbd2cSJim Jagielski inline SwFntObj *Next( SwFntObj *pFntObj) 58*b1cdbd2cSJim Jagielski { return (SwFntObj *)SwCache::Next( (SwCacheObj *)pFntObj ); } 59*b1cdbd2cSJim Jagielski void Flush(); 60*b1cdbd2cSJim Jagielski }; 61*b1cdbd2cSJim Jagielski 62*b1cdbd2cSJim Jagielski // Font-Cache, globale Variable, in txtinit.Cxx angelegt/zerstoert 63*b1cdbd2cSJim Jagielski extern SwFntCache *pFntCache; 64*b1cdbd2cSJim Jagielski extern SwFntObj *pLastFont; 65*b1cdbd2cSJim Jagielski extern sal_uInt8 *pMagicNo; 66*b1cdbd2cSJim Jagielski extern Color *pWaveCol; 67*b1cdbd2cSJim Jagielski 68*b1cdbd2cSJim Jagielski /************************************************************************* 69*b1cdbd2cSJim Jagielski * class SwFntObj 70*b1cdbd2cSJim Jagielski *************************************************************************/ 71*b1cdbd2cSJim Jagielski 72*b1cdbd2cSJim Jagielski class SwFntObj : public SwCacheObj 73*b1cdbd2cSJim Jagielski { 74*b1cdbd2cSJim Jagielski friend class SwFntAccess; 75*b1cdbd2cSJim Jagielski friend void _InitCore(); 76*b1cdbd2cSJim Jagielski friend void _FinitCore(); 77*b1cdbd2cSJim Jagielski 78*b1cdbd2cSJim Jagielski Font aFont; 79*b1cdbd2cSJim Jagielski Font *pScrFont; 80*b1cdbd2cSJim Jagielski Font *pPrtFont; 81*b1cdbd2cSJim Jagielski OutputDevice* pPrinter; 82*b1cdbd2cSJim Jagielski sal_uInt16 nGuessedLeading; 83*b1cdbd2cSJim Jagielski sal_uInt16 nExtLeading; 84*b1cdbd2cSJim Jagielski sal_uInt16 nScrAscent; 85*b1cdbd2cSJim Jagielski sal_uInt16 nPrtAscent; 86*b1cdbd2cSJim Jagielski sal_uInt16 nScrHeight; 87*b1cdbd2cSJim Jagielski sal_uInt16 nPrtHeight; 88*b1cdbd2cSJim Jagielski sal_uInt16 nPropWidth; 89*b1cdbd2cSJim Jagielski sal_uInt16 nZoom; 90*b1cdbd2cSJim Jagielski sal_Bool bSymbol : 1; 91*b1cdbd2cSJim Jagielski sal_Bool bPaintBlank : 1; 92*b1cdbd2cSJim Jagielski 93*b1cdbd2cSJim Jagielski static long nPixWidth; 94*b1cdbd2cSJim Jagielski static MapMode *pPixMap; 95*b1cdbd2cSJim Jagielski static OutputDevice *pPixOut; 96*b1cdbd2cSJim Jagielski 97*b1cdbd2cSJim Jagielski // SMARTTAGS 98*b1cdbd2cSJim Jagielski void calcLinePos(SwDrawTextInfo& rInf, Point& aStart, Point& aEnd, xub_StrLen nStart, 99*b1cdbd2cSJim Jagielski xub_StrLen nWrLen, xub_StrLen nCnt, const sal_Bool bSwitchH2V, const sal_Bool bSwitchL2R, 100*b1cdbd2cSJim Jagielski long nHalfSpace, long* pKernArray, const sal_Bool bBidiPor); 101*b1cdbd2cSJim Jagielski 102*b1cdbd2cSJim Jagielski public: 103*b1cdbd2cSJim Jagielski DECL_FIXEDMEMPOOL_NEWDEL(SwFntObj) 104*b1cdbd2cSJim Jagielski 105*b1cdbd2cSJim Jagielski SwFntObj( const SwSubFont &rFont, const void* pOwner, 106*b1cdbd2cSJim Jagielski ViewShell *pSh ); 107*b1cdbd2cSJim Jagielski 108*b1cdbd2cSJim Jagielski virtual ~SwFntObj(); 109*b1cdbd2cSJim Jagielski GetScrFont()110*b1cdbd2cSJim Jagielski inline Font *GetScrFont() { return pScrFont; } GetFont()111*b1cdbd2cSJim Jagielski inline Font *GetFont() { return &aFont; } GetFont() const112*b1cdbd2cSJim Jagielski inline const Font *GetFont() const { return &aFont; } 113*b1cdbd2cSJim Jagielski GetGuessedLeading() const114*b1cdbd2cSJim Jagielski inline sal_uInt16 GetGuessedLeading() const { return nGuessedLeading; } GetExtLeading() const115*b1cdbd2cSJim Jagielski inline sal_uInt16 GetExtLeading() const { return nExtLeading; } 116*b1cdbd2cSJim Jagielski 117*b1cdbd2cSJim Jagielski sal_uInt16 GetFontAscent( const ViewShell *pSh, const OutputDevice& rOut ); 118*b1cdbd2cSJim Jagielski sal_uInt16 GetFontHeight( const ViewShell *pSh, const OutputDevice& rOut ); 119*b1cdbd2cSJim Jagielski sal_uInt16 GetFontLeading( const ViewShell *pSh, const OutputDevice& rOut ); 120*b1cdbd2cSJim Jagielski 121*b1cdbd2cSJim Jagielski void GuessLeading( const ViewShell& rSh, const FontMetric& rMet ); 122*b1cdbd2cSJim Jagielski 123*b1cdbd2cSJim Jagielski void SetDevFont( const ViewShell *pSh, OutputDevice& rOut ); GetPrt() const124*b1cdbd2cSJim Jagielski inline OutputDevice* GetPrt() const { return pPrinter; } GetZoom() const125*b1cdbd2cSJim Jagielski inline sal_uInt16 GetZoom() const { return nZoom; } GetPropWidth() const126*b1cdbd2cSJim Jagielski inline sal_uInt16 GetPropWidth() const { return nPropWidth; } IsSymbol() const127*b1cdbd2cSJim Jagielski inline sal_Bool IsSymbol() const { return bSymbol; } 128*b1cdbd2cSJim Jagielski 129*b1cdbd2cSJim Jagielski void DrawText( SwDrawTextInfo &rInf ); 130*b1cdbd2cSJim Jagielski Size GetTextSize( SwDrawTextInfo &rInf ); 131*b1cdbd2cSJim Jagielski xub_StrLen GetCrsrOfst( SwDrawTextInfo &rInf ); 132*b1cdbd2cSJim Jagielski 133*b1cdbd2cSJim Jagielski void CreateScrFont( const ViewShell& rSh, const OutputDevice& rOut ); 134*b1cdbd2cSJim Jagielski void CreatePrtFont( const OutputDevice& rOut ); 135*b1cdbd2cSJim Jagielski }; 136*b1cdbd2cSJim Jagielski 137*b1cdbd2cSJim Jagielski /************************************************************************* 138*b1cdbd2cSJim Jagielski * class SwFntAccess 139*b1cdbd2cSJim Jagielski *************************************************************************/ 140*b1cdbd2cSJim Jagielski 141*b1cdbd2cSJim Jagielski 142*b1cdbd2cSJim Jagielski class SwFntAccess : public SwCacheAccess 143*b1cdbd2cSJim Jagielski { 144*b1cdbd2cSJim Jagielski ViewShell *pShell; 145*b1cdbd2cSJim Jagielski protected: 146*b1cdbd2cSJim Jagielski virtual SwCacheObj *NewObj( ); 147*b1cdbd2cSJim Jagielski 148*b1cdbd2cSJim Jagielski public: 149*b1cdbd2cSJim Jagielski SwFntAccess( const void * &rMagic, sal_uInt16 &rIndex, const void *pOwner, 150*b1cdbd2cSJim Jagielski ViewShell *pShell, 151*b1cdbd2cSJim Jagielski sal_Bool bCheck = sal_False ); Get()152*b1cdbd2cSJim Jagielski inline SwFntObj* Get() { return (SwFntObj*) SwCacheAccess::Get(); }; 153*b1cdbd2cSJim Jagielski }; 154*b1cdbd2cSJim Jagielski 155*b1cdbd2cSJim Jagielski 156*b1cdbd2cSJim Jagielski #endif 157