mirror of
https://foundry.openuru.org/gitblit/r/CWE-ou-minkata.git
synced 2025-07-17 18:59:09 +00:00
Remove unused plWinFontCache & plDynSurfaceWriter.
This commit is contained in:
@ -135,7 +135,6 @@ You can contact Cyan Worlds, Inc. by email legal@cyan.com
|
||||
#include "pfAnimation/plAnimDebugList.h"
|
||||
#include "pfGameGUIMgr/pfGUICtrlGenerator.h"
|
||||
|
||||
#include "plGImage/plWinFontCache.h"
|
||||
#include "plGImage/plFontCache.h"
|
||||
|
||||
#include "pfJournalBook/pfJournalBook.h"
|
||||
@ -2202,7 +2201,6 @@ void plClient::IOnAsyncInitComplete () {
|
||||
|
||||
// Load our custom fonts from our current dat directory
|
||||
fFontCache->LoadCustomFonts("dat");
|
||||
plWinFontCache::GetInstance().LoadCustomFonts("dat");
|
||||
|
||||
// We'd like to do a SetHoldLoadRequests here, but the GUI stuff doesn't draw right
|
||||
// if you try to delay the loading for it. To work around that, we allocate a
|
||||
|
@ -15,7 +15,6 @@ set(plGImage_SOURCES
|
||||
plBumpMapGen.cpp
|
||||
plCubicEnvironmap.cpp
|
||||
plDynamicTextMap.cpp
|
||||
plDynSurfaceWriter.cpp
|
||||
plFont.cpp
|
||||
plFontCache.cpp
|
||||
plJPEG.cpp
|
||||
@ -23,7 +22,6 @@ set(plGImage_SOURCES
|
||||
plMipmap.cpp
|
||||
plPNG.cpp
|
||||
plTGAWriter.cpp
|
||||
plWinFontCache.cpp
|
||||
)
|
||||
|
||||
set(plGImage_HEADERS
|
||||
@ -35,7 +33,6 @@ set(plGImage_HEADERS
|
||||
plBumpMapGen.h
|
||||
plCubicEnvironmap.h
|
||||
plDynamicTextMap.h
|
||||
plDynSurfaceWriter.h
|
||||
plFont.h
|
||||
plFontCache.h
|
||||
plGImageCreatable.h
|
||||
@ -44,7 +41,6 @@ set(plGImage_HEADERS
|
||||
plMipmap.h
|
||||
plPNG.h
|
||||
plTGAWriter.h
|
||||
plWinFontCache.h
|
||||
)
|
||||
|
||||
add_library(plGImage STATIC ${plGImage_SOURCES} ${plGImage_HEADERS})
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -1,221 +0,0 @@
|
||||
/*==LICENSE==*
|
||||
|
||||
CyanWorlds.com Engine - MMOG client, server and tools
|
||||
Copyright (C) 2011 Cyan Worlds, Inc.
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
Additional permissions under GNU GPL version 3 section 7
|
||||
|
||||
If you modify this Program, or any covered work, by linking or
|
||||
combining it with any of RAD Game Tools Bink SDK, Autodesk 3ds Max SDK,
|
||||
NVIDIA PhysX SDK, Microsoft DirectX SDK, OpenSSL library, Independent
|
||||
JPEG Group JPEG library, Microsoft Windows Media SDK, or Apple QuickTime SDK
|
||||
(or a modified version of those libraries),
|
||||
containing parts covered by the terms of the Bink SDK EULA, 3ds Max EULA,
|
||||
PhysX SDK EULA, DirectX SDK EULA, OpenSSL and SSLeay licenses, IJG
|
||||
JPEG Library README, Windows Media SDK EULA, or QuickTime SDK EULA, the
|
||||
licensors of this Program grant you additional
|
||||
permission to convey the resulting work. Corresponding Source for a
|
||||
non-source form of such a combination shall include the source code for
|
||||
the parts of OpenSSL and IJG JPEG Library used as well as that of the covered
|
||||
work.
|
||||
|
||||
You can contact Cyan Worlds, Inc. by email legal@cyan.com
|
||||
or by snail mail at:
|
||||
Cyan Worlds, Inc.
|
||||
14617 N Newport Hwy
|
||||
Mead, WA 99021
|
||||
|
||||
*==LICENSE==*/
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// //
|
||||
// plDynSurfaceWriter Class Header //
|
||||
// Abstract class wrapping around Windows GDI functionality for writing to //
|
||||
// a generic RGBA surface. Allows us to create one writer per DTMap or a //
|
||||
// single shared writer to conserve OS resources on 98/ME. //
|
||||
// //
|
||||
// Cyan, Inc. //
|
||||
// //
|
||||
//// Version History //////////////////////////////////////////////////////////
|
||||
// //
|
||||
// 10.28.2002 mcn - Created. //
|
||||
// //
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#ifndef _plDynSurfaceWriter_h
|
||||
#define _plDynSurfaceWriter_h
|
||||
|
||||
#include "hsColorRGBA.h"
|
||||
#include "hsWindows.h" // FIXME: windows :(
|
||||
|
||||
struct hsMatrix44;
|
||||
|
||||
class plDynamicTextMap;
|
||||
|
||||
//// Class Definition /////////////////////////////////////////////////////////
|
||||
|
||||
class plDynSurfaceWriter
|
||||
{
|
||||
public:
|
||||
|
||||
//// Public Flags ////
|
||||
enum Justify
|
||||
{
|
||||
kLeftJustify = 0,
|
||||
kCenter,
|
||||
kRightJustify
|
||||
};
|
||||
|
||||
enum Flags
|
||||
{
|
||||
kSupportAlpha = 0x00000001,
|
||||
|
||||
kFontBold = 0x00000002,
|
||||
kFontItalic = 0x00000004,
|
||||
kFontShadowed = 0x00000008,
|
||||
kFontMask = 0x0000000e,
|
||||
|
||||
kDiscardOnFlush = 0x00000010
|
||||
};
|
||||
|
||||
//// Public Data /////
|
||||
|
||||
|
||||
//// Public Members ////
|
||||
|
||||
|
||||
plDynSurfaceWriter();
|
||||
plDynSurfaceWriter( plDynamicTextMap *target, uint32_t flags = 0 );
|
||||
virtual ~plDynSurfaceWriter();
|
||||
|
||||
|
||||
/// Operations to perform on the text block
|
||||
|
||||
void ClearToColor( hsColorRGBA &color );
|
||||
void SetFont( const char *face, uint16_t size, uint8_t fontFlags = 0, bool antiAliasRGB = true );
|
||||
void SetTextColor( hsColorRGBA &color, bool blockRGB = false );
|
||||
void SetJustify( Justify j );
|
||||
|
||||
void DrawString( uint16_t x, uint16_t y, const char *text );
|
||||
void DrawClippedString( int16_t x, int16_t y, const char *text, uint16_t width, uint16_t height );
|
||||
void DrawClippedString( int16_t x, int16_t y, const char *text, uint16_t clipX, uint16_t clipY, uint16_t width, uint16_t height );
|
||||
void DrawWrappedString( uint16_t x, uint16_t y, const char *text, uint16_t width, uint16_t height );
|
||||
uint16_t CalcStringWidth( const char *text, uint16_t *height = nil );
|
||||
void CalcWrappedStringSize( const char *text, uint16_t *width, uint16_t *height );
|
||||
void FillRect( uint16_t x, uint16_t y, uint16_t width, uint16_t height, hsColorRGBA &color );
|
||||
void FrameRect( uint16_t x, uint16_t y, uint16_t width, uint16_t height, hsColorRGBA &color );
|
||||
|
||||
// void DrawImage( uint16_t x, uint16_t y, plMipmap *image, bool respectAlpha = false );
|
||||
// void DrawClippedImage( uint16_t x, uint16_t y, plMipmap *image, uint16_t srcClipX, uint16_t srcClipY,
|
||||
// uint16_t srcClipWidth, uint16_t srcClipHeight, bool respectAlpha = false );
|
||||
|
||||
// Copy the raw data from the given buffer.
|
||||
// void SetBitsFromBuffer( uint32_t *clearBuffer, uint16_t width, uint16_t height )
|
||||
|
||||
/// Target switching operations
|
||||
|
||||
// Flushes all ops to the target.
|
||||
void FlushToTarget( void );
|
||||
|
||||
// Switches targets. Will flush to old target before switching. Also, if kDiscard isn't specified, will copy contents of new target to working surface
|
||||
void SwitchTarget( plDynamicTextMap *target ); // Will force a flush
|
||||
|
||||
// Clears and resets everything. Does NOT flush.
|
||||
void Reset( void );
|
||||
|
||||
bool IsValid( void ) const;
|
||||
|
||||
static bool CanHandleLotsOfThem( void );
|
||||
|
||||
protected:
|
||||
|
||||
//// Protected Members ////
|
||||
|
||||
void IInit( void );
|
||||
void IEnsureSurfaceUpdated( void );
|
||||
void IRefreshOSJustify( void );
|
||||
void ISetTextColor( hsColorRGBA &color, bool blockRGB );
|
||||
|
||||
void ISetFont( const plString &face, uint16_t size, uint8_t fontFlags = 0, bool antiAliasRGB = true );
|
||||
|
||||
plDynamicTextMap *fCurrTarget;
|
||||
uint32_t fFlags;
|
||||
Justify fJustify;
|
||||
bool fFlushed;
|
||||
|
||||
plString fFontFace;
|
||||
uint16_t fFontSize;
|
||||
uint8_t fFontFlags;
|
||||
bool fFontAntiAliasRGB;
|
||||
bool fFontBlockedRGB;
|
||||
|
||||
static bool fForceSharedSurfaces;
|
||||
static bool fOSDetected;
|
||||
static bool fOSCanShareSurfaces;
|
||||
|
||||
#if HS_BUILD_FOR_WIN32
|
||||
class plWinSurface
|
||||
{
|
||||
protected:
|
||||
void *fBits;
|
||||
|
||||
virtual uint8_t IBitsPerPixel( void ) const = 0;
|
||||
|
||||
public:
|
||||
HDC fDC;
|
||||
HBITMAP fBitmap;
|
||||
HFONT fFont;
|
||||
COLORREF fTextColor;
|
||||
int fSaveNum;
|
||||
|
||||
uint16_t fWidth, fHeight;
|
||||
|
||||
plString fFontFace;
|
||||
uint16_t fFontSize;
|
||||
uint8_t fFontFlags;
|
||||
bool fFontAntiAliasRGB, fFontBlockedRGB;
|
||||
|
||||
plWinSurface();
|
||||
~plWinSurface();
|
||||
|
||||
void Allocate( uint16_t w, uint16_t h );
|
||||
void Release( void );
|
||||
|
||||
bool WillFit( uint16_t w, uint16_t h );
|
||||
bool FontMatches( const plString &face, uint16_t size, uint8_t flags, bool aaRGB );
|
||||
void SetFont( const plString &face, uint16_t size, uint8_t flags, bool aaRGB );
|
||||
};
|
||||
|
||||
class plWinRGBSurface : public plWinSurface
|
||||
{
|
||||
virtual uint8_t IBitsPerPixel( void ) const { return 32; }
|
||||
public:
|
||||
uint32_t *GetBits( void ) const { return (uint32_t *)fBits; }
|
||||
};
|
||||
|
||||
class plWinAlphaSurface : public plWinSurface
|
||||
{
|
||||
virtual uint8_t IBitsPerPixel( void ) const { return 8; }
|
||||
public:
|
||||
uint8_t *GetBits( void ) const { return (uint8_t *)fBits; }
|
||||
};
|
||||
|
||||
plWinRGBSurface fRGBSurface;
|
||||
plWinAlphaSurface fAlphaSurface;
|
||||
#endif
|
||||
};
|
||||
|
||||
|
||||
#endif // _plDynSurfaceWriter_h
|
@ -1,293 +0,0 @@
|
||||
/*==LICENSE==*
|
||||
|
||||
CyanWorlds.com Engine - MMOG client, server and tools
|
||||
Copyright (C) 2011 Cyan Worlds, Inc.
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
Additional permissions under GNU GPL version 3 section 7
|
||||
|
||||
If you modify this Program, or any covered work, by linking or
|
||||
combining it with any of RAD Game Tools Bink SDK, Autodesk 3ds Max SDK,
|
||||
NVIDIA PhysX SDK, Microsoft DirectX SDK, OpenSSL library, Independent
|
||||
JPEG Group JPEG library, Microsoft Windows Media SDK, or Apple QuickTime SDK
|
||||
(or a modified version of those libraries),
|
||||
containing parts covered by the terms of the Bink SDK EULA, 3ds Max EULA,
|
||||
PhysX SDK EULA, DirectX SDK EULA, OpenSSL and SSLeay licenses, IJG
|
||||
JPEG Library README, Windows Media SDK EULA, or QuickTime SDK EULA, the
|
||||
licensors of this Program grant you additional
|
||||
permission to convey the resulting work. Corresponding Source for a
|
||||
non-source form of such a combination shall include the source code for
|
||||
the parts of OpenSSL and IJG JPEG Library used as well as that of the covered
|
||||
work.
|
||||
|
||||
You can contact Cyan Worlds, Inc. by email legal@cyan.com
|
||||
or by snail mail at:
|
||||
Cyan Worlds, Inc.
|
||||
14617 N Newport Hwy
|
||||
Mead, WA 99021
|
||||
|
||||
*==LICENSE==*/
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// //
|
||||
// plWinFontCache Class Header //
|
||||
// I've stopped keeping track, there are far too many reasons already to //
|
||||
// hate Microsoft. Anyway, this class keeps track of various Win32 fonts we //
|
||||
// allocate because Win98/ME seems to have problems re-allocating the exact //
|
||||
// same freaking goddamn font over and over again. I mean, you'd think //
|
||||
// there'd be a rule somewhere about deterministic behavior when calling //
|
||||
// the exact same function with the exact same parameters over and over... //
|
||||
// Oh, wait... //
|
||||
// //
|
||||
// Cyan, Inc. //
|
||||
// //
|
||||
//// Version History //////////////////////////////////////////////////////////
|
||||
// //
|
||||
// 11.25.2002 mcn - Created. //
|
||||
// //
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#include "HeadSpin.h"
|
||||
|
||||
#include "plWinFontCache.h"
|
||||
|
||||
#include "plStatusLog/plStatusLog.h"
|
||||
#include "plGImage/plDynSurfaceWriter.h"
|
||||
|
||||
#if HS_BUILD_FOR_WIN32
|
||||
|
||||
#include <wingdi.h>
|
||||
|
||||
|
||||
const char* plWinFontCache::kCustFontExtension = ".prf";
|
||||
|
||||
|
||||
plWinFontCache::plWinFontCache()
|
||||
{
|
||||
fInShutdown = false;
|
||||
fCustFontDir = nil;
|
||||
}
|
||||
|
||||
plWinFontCache::~plWinFontCache()
|
||||
{
|
||||
fInShutdown = true;
|
||||
Clear();
|
||||
delete [] fCustFontDir;
|
||||
}
|
||||
|
||||
plWinFontCache &plWinFontCache::GetInstance( void )
|
||||
{
|
||||
static plWinFontCache cache;
|
||||
return cache;
|
||||
}
|
||||
|
||||
HFONT plWinFontCache::IFindFont( const plString &face, int height, int weight, bool italic, uint32_t quality )
|
||||
{
|
||||
int i;
|
||||
|
||||
|
||||
for( i = 0; i < fFontCache.GetCount(); i++ )
|
||||
{
|
||||
// Do other tests first, since they're cheaper
|
||||
if( fFontCache[ i ].fHeight == height &&
|
||||
fFontCache[ i ].fWeight == weight &&
|
||||
fFontCache[ i ].fItalic == italic &&
|
||||
fFontCache[ i ].fQuality == quality )
|
||||
{
|
||||
if (fFontCache[i].fFace == face)
|
||||
return fFontCache[ i ].fFont;
|
||||
}
|
||||
}
|
||||
|
||||
return nil;
|
||||
}
|
||||
|
||||
HFONT plWinFontCache::IMakeFont( const plString &face, int height, int weight, bool italic, uint32_t quality )
|
||||
{
|
||||
plFontRecord myRec;
|
||||
int i;
|
||||
|
||||
|
||||
// Find a cached name for us
|
||||
for( i = 0; i < fFontNameCache.GetCount(); i++ )
|
||||
{
|
||||
if (face == fFontNameCache[i])
|
||||
break;
|
||||
}
|
||||
|
||||
if( i == fFontNameCache.GetCount() )
|
||||
fFontNameCache.Append(face);
|
||||
|
||||
myRec.fFace = fFontNameCache[ i ];
|
||||
myRec.fHeight = height;
|
||||
myRec.fWeight = weight;
|
||||
myRec.fItalic = italic;
|
||||
myRec.fQuality = quality;
|
||||
|
||||
myRec.fFont = CreateFontW( height, 0, 0, 0, weight, italic ? TRUE : FALSE, FALSE, FALSE, ANSI_CHARSET, OUT_DEFAULT_PRECIS,
|
||||
CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, VARIABLE_PITCH, face.ToWchar().GetData() );
|
||||
|
||||
if( myRec.fFont != nil )
|
||||
{
|
||||
//#ifdef HS_DEBUGGING
|
||||
#if 1
|
||||
LOGFONT fontInfo;
|
||||
|
||||
if( GetObject( myRec.fFont, sizeof( fontInfo ), &fontInfo ) )
|
||||
{
|
||||
const char *err = nil;
|
||||
|
||||
if( fontInfo.lfQuality != quality )
|
||||
err = "Quality of created font does not match";
|
||||
if( fontInfo.lfHeight != height )
|
||||
err = "Height of created font does not match";
|
||||
if( fontInfo.lfWeight != weight )
|
||||
err = "Weight of created font does not match";
|
||||
if( static_cast<bool>(fontInfo.lfItalic) != italic )
|
||||
err = "Italic-ness of created font does not match";
|
||||
if( face.CompareI(fontInfo.lfFaceName) != 0 )
|
||||
err = "Face of created font does not match";
|
||||
|
||||
if( err != nil )
|
||||
{
|
||||
static bool triedClearing = false;
|
||||
|
||||
if( fontInfo.lfQuality != quality )
|
||||
{
|
||||
plStatusLog::AddLineS( "pipeline.log", "ERROR: CreateFont() failed to return proper font (%s). Using what was given...", err );
|
||||
}
|
||||
else
|
||||
{
|
||||
plStatusLog::AddLineS( "pipeline.log", "ERROR: CreateFont() failed to return proper font (%s). %s", err, triedClearing ? "" : "Clearing cache and retrying..." );
|
||||
if( !triedClearing )
|
||||
{
|
||||
triedClearing = true;
|
||||
|
||||
// Didn't work, so get rid of it
|
||||
DeleteObject( myRec.fFont );
|
||||
|
||||
// Clear all fonts and try again
|
||||
Clear();
|
||||
|
||||
// Make sure we reload our custom fonts tho
|
||||
ILoadCustomFonts();
|
||||
|
||||
// Try again
|
||||
HFONT font = IMakeFont( face, height, weight, italic, quality );
|
||||
|
||||
triedClearing = false;
|
||||
|
||||
return font;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
fFontCache.Append( myRec );
|
||||
}
|
||||
else
|
||||
{
|
||||
plStatusLog::AddLineS( "pipeline.log", "ERROR: CreateFont() call FAILED (face: %s, size: %d %s %s)",
|
||||
face.c_str(), -height, weight == FW_BOLD ? "bold" : "", italic ? "italic" : "" );
|
||||
}
|
||||
|
||||
return myRec.fFont;
|
||||
}
|
||||
|
||||
HFONT plWinFontCache::GetMeAFont( const plString &face, int height, int weight, bool italic, uint32_t quality )
|
||||
{
|
||||
HFONT font = IFindFont( face, height, weight, italic, quality );
|
||||
if( font == nil )
|
||||
font = IMakeFont( face, height, weight, italic, quality );
|
||||
|
||||
return font;
|
||||
}
|
||||
|
||||
void plWinFontCache::Clear( void )
|
||||
{
|
||||
int i;
|
||||
|
||||
|
||||
if( !fInShutdown )
|
||||
plStatusLog::AddLineS( "pipeline.log", "** Clearing Win32 font cache **" );
|
||||
|
||||
for( i = 0; i < fFontCache.GetCount(); i++ )
|
||||
DeleteObject( fFontCache[ i ].fFont );
|
||||
fFontCache.Reset();
|
||||
|
||||
fFontNameCache.Reset();
|
||||
|
||||
for( i = 0; i < fCustFonts.GetCount(); i++ )
|
||||
{
|
||||
#if (_WIN32_WINNT >= 0x0500)
|
||||
if (plDynSurfaceWriter::CanHandleLotsOfThem())
|
||||
RemoveFontResourceExW(fCustFonts[i]->fFilename.AsString().ToWchar(), FR_PRIVATE, 0);
|
||||
else
|
||||
#endif
|
||||
if (RemoveFontResourceW(fCustFonts[i]->fFilename.AsString().ToWchar()) == 0)
|
||||
{
|
||||
int q= 0;
|
||||
DWORD e = GetLastError();
|
||||
}
|
||||
delete fCustFonts[ i ];
|
||||
}
|
||||
fCustFonts.Reset();
|
||||
}
|
||||
|
||||
void plWinFontCache::FreeFont( HFONT font )
|
||||
{
|
||||
// Currently a no-op, but should do some sort of ref-counting
|
||||
}
|
||||
|
||||
void plWinFontCache::LoadCustomFonts( const char *dir )
|
||||
{
|
||||
delete [] fCustFontDir;
|
||||
fCustFontDir = ( dir != nil ) ? hsStrcpy( dir ) : nil;
|
||||
|
||||
ILoadCustomFonts();
|
||||
}
|
||||
|
||||
void plWinFontCache::ILoadCustomFonts( void )
|
||||
{
|
||||
if( fCustFontDir == nil )
|
||||
return;
|
||||
|
||||
// Iterate through all the custom fonts in our dir
|
||||
int numAdded;
|
||||
|
||||
std::vector<plFileName> fonts = plFileSystem::ListDir(fCustFontDir, kCustFontExtension);
|
||||
for (auto iter = fonts.begin(); iter != fonts.end(); ++iter)
|
||||
{
|
||||
// Note that this call can be translated as "does my OS suck?"
|
||||
#if (_WIN32_WINNT >= 0x0500)
|
||||
if( plDynSurfaceWriter::CanHandleLotsOfThem() )
|
||||
numAdded = AddFontResourceExW(iter->AsString().ToWchar(), FR_PRIVATE, 0);
|
||||
else
|
||||
#endif
|
||||
numAdded = AddFontResourceW(iter->AsString().ToWchar());
|
||||
|
||||
if( numAdded > 0 )
|
||||
{
|
||||
plStatusLog::AddLineS( "pipeline.log", "WinFontCache: Added custom font %s, %d fonts", iter->GetFileName().c_str(), numAdded );
|
||||
fCustFonts.Append(new plCustFont(*iter));
|
||||
}
|
||||
else
|
||||
{
|
||||
plStatusLog::AddLineS( "pipeline.log", "WinFontCache: Unable to load custom font %s", iter->GetFileName().c_str() );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#endif
|
@ -1,130 +0,0 @@
|
||||
/*==LICENSE==*
|
||||
|
||||
CyanWorlds.com Engine - MMOG client, server and tools
|
||||
Copyright (C) 2011 Cyan Worlds, Inc.
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
Additional permissions under GNU GPL version 3 section 7
|
||||
|
||||
If you modify this Program, or any covered work, by linking or
|
||||
combining it with any of RAD Game Tools Bink SDK, Autodesk 3ds Max SDK,
|
||||
NVIDIA PhysX SDK, Microsoft DirectX SDK, OpenSSL library, Independent
|
||||
JPEG Group JPEG library, Microsoft Windows Media SDK, or Apple QuickTime SDK
|
||||
(or a modified version of those libraries),
|
||||
containing parts covered by the terms of the Bink SDK EULA, 3ds Max EULA,
|
||||
PhysX SDK EULA, DirectX SDK EULA, OpenSSL and SSLeay licenses, IJG
|
||||
JPEG Library README, Windows Media SDK EULA, or QuickTime SDK EULA, the
|
||||
licensors of this Program grant you additional
|
||||
permission to convey the resulting work. Corresponding Source for a
|
||||
non-source form of such a combination shall include the source code for
|
||||
the parts of OpenSSL and IJG JPEG Library used as well as that of the covered
|
||||
work.
|
||||
|
||||
You can contact Cyan Worlds, Inc. by email legal@cyan.com
|
||||
or by snail mail at:
|
||||
Cyan Worlds, Inc.
|
||||
14617 N Newport Hwy
|
||||
Mead, WA 99021
|
||||
|
||||
*==LICENSE==*/
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// //
|
||||
// plWinFontCache Class Header //
|
||||
// I've stopped keeping track, there are far too many reasons already to //
|
||||
// hate Microsoft. Anyway, this class keeps track of various Win32 fonts we //
|
||||
// allocate because Win98/ME seems to have problems re-allocating the exact //
|
||||
// same freaking goddamn font over and over again. I mean, you'd think //
|
||||
// there'd be a rule somewhere about deterministic behavior when calling //
|
||||
// the exact same function with the exact same parameters over and over... //
|
||||
// Oh, wait... //
|
||||
// //
|
||||
// Cyan, Inc. //
|
||||
// //
|
||||
//// Version History //////////////////////////////////////////////////////////
|
||||
// //
|
||||
// 11.25.2002 mcn - Created. //
|
||||
// //
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#ifndef _plWinFontCache_h
|
||||
#define _plWinFontCache_h
|
||||
|
||||
|
||||
#include "hsColorRGBA.h"
|
||||
#include "hsTemplates.h"
|
||||
#include "hsWindows.h" // FIXME: Windows header level include :(
|
||||
|
||||
#if HS_BUILD_FOR_WIN32
|
||||
|
||||
|
||||
//// Class Definition /////////////////////////////////////////////////////////
|
||||
|
||||
class plWinFontCache
|
||||
{
|
||||
protected:
|
||||
|
||||
class plFontRecord
|
||||
{
|
||||
public:
|
||||
HFONT fFont;
|
||||
|
||||
plString fFace;
|
||||
int fHeight;
|
||||
int fWeight;
|
||||
bool fItalic;
|
||||
uint32_t fQuality;
|
||||
};
|
||||
|
||||
class plCustFont
|
||||
{
|
||||
public:
|
||||
plFileName fFilename;
|
||||
|
||||
plCustFont(const plFileName &c) { fFilename = c; }
|
||||
};
|
||||
|
||||
bool fInShutdown;
|
||||
|
||||
hsTArray<plFontRecord> fFontCache;
|
||||
hsTArray<plString> fFontNameCache;
|
||||
|
||||
char *fCustFontDir;
|
||||
hsTArray<plCustFont *> fCustFonts;
|
||||
|
||||
plWinFontCache();
|
||||
|
||||
HFONT IFindFont( const plString &face, int height, int weight, bool italic, uint32_t quality );
|
||||
HFONT IMakeFont( const plString &face, int height, int weight, bool italic, uint32_t quality );
|
||||
|
||||
void ILoadCustomFonts( void );
|
||||
|
||||
public:
|
||||
|
||||
virtual ~plWinFontCache();
|
||||
static plWinFontCache &GetInstance( void );
|
||||
|
||||
HFONT GetMeAFont( const plString &face, int height, int weight, bool italic, uint32_t quality );
|
||||
void FreeFont( HFONT font );
|
||||
void Clear( void );
|
||||
|
||||
void LoadCustomFonts( const char *dir );
|
||||
|
||||
// Our custom font extension
|
||||
static const char* kCustFontExtension;
|
||||
};
|
||||
|
||||
|
||||
#endif // HS_BUILD_FOR_WIN32
|
||||
#endif // _plWinFontCache_h
|
Reference in New Issue
Block a user