99 lines
2.6 KiB
C++
99 lines
2.6 KiB
C++
/**********************************************************************
|
|
|
|
Filename : GFxFontMap.cpp
|
|
Content : Implementation of font name mapping.
|
|
Created : July 18, 2007
|
|
Authors : Michael Antonov
|
|
|
|
Copyright : (c) 2001-2007 Scaleform Corp. All Rights Reserved.
|
|
|
|
Notes :
|
|
|
|
Licensees may use this file in accordance with the valid Scaleform
|
|
Commercial License Agreement provided with the software.
|
|
|
|
This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING
|
|
THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR ANY PURPOSE.
|
|
|
|
**********************************************************************/
|
|
|
|
#include "GFxLoader.h"
|
|
#include "GFxStringHash.h"
|
|
|
|
|
|
// ***** GFxFontMap class
|
|
|
|
// GFxFontMapImpl contains the font mapping hash table.
|
|
class GFxFontMapImpl : public GNewOverrideBase<GStat_Default_Mem>
|
|
{
|
|
public:
|
|
|
|
GFxStringHashLH<GFxFontMap::MapEntry> FontMap;
|
|
};
|
|
|
|
|
|
GFxFontMap::GFxFontMap()
|
|
: GFxState(GFxState::State_FontMap),
|
|
pImpl(new GFxFontMapImpl)
|
|
{
|
|
}
|
|
|
|
GFxFontMap::~GFxFontMap()
|
|
{
|
|
delete pImpl;
|
|
}
|
|
|
|
bool GFxFontMap::MapFont(const char* pfontName, const char* pnewFontName,
|
|
MapFontFlags mff, Float scaleFactor,
|
|
Float offx, Float offy)
|
|
{
|
|
if (!pImpl || !pfontName)
|
|
return 0;
|
|
|
|
GString fontName(pfontName);
|
|
if (pImpl->FontMap.GetCaseInsensitive(fontName))
|
|
{
|
|
GFC_DEBUG_WARNING1(1, "GFxFontMap::MapFont failed - font name '%s' already mapped",
|
|
fontName.ToCStr());
|
|
return 0;
|
|
}
|
|
|
|
MapEntry me(pnewFontName, mff, scaleFactor, offx, offy);
|
|
pImpl->FontMap.Set(fontName, me);
|
|
return 1;
|
|
}
|
|
|
|
bool GFxFontMap::MapFont(const wchar_t* pfontName, const wchar_t* pnewFontName, MapFontFlags mff, Float scaleFactor,
|
|
Float offx, Float offy)
|
|
{
|
|
if (!pImpl || !pfontName)
|
|
return 0;
|
|
|
|
GString fontName(pfontName);
|
|
if (pImpl->FontMap.GetCaseInsensitive(fontName))
|
|
{
|
|
GFC_DEBUG_WARNING1(1, "GFxFontMap::MapFont failed - font name '%s' already mapped",
|
|
fontName.ToCStr());
|
|
return 0;
|
|
}
|
|
|
|
MapEntry me = MapEntry(GString(pnewFontName), mff, scaleFactor, offx, offy);
|
|
pImpl->FontMap.Set(fontName, me);
|
|
return 1;
|
|
}
|
|
|
|
// Obtains a font mapping, returning a const string (UTF8).
|
|
bool GFxFontMap::GetFontMapping(MapEntry* pentry, const char *pfontName)
|
|
{
|
|
if (!pImpl)
|
|
return 0;
|
|
|
|
const MapEntry* pfound = pImpl->FontMap.GetCaseInsensitive(pfontName);
|
|
if (pfound)
|
|
{
|
|
*pentry = *pfound;
|
|
return 1;
|
|
}
|
|
return 0;
|
|
}
|