mirror of
https://github.com/libretro/scummvm.git
synced 2024-12-22 09:49:11 +00:00
197ef8f178
This makes it easy to get a localized font for the current TranslationManager charset if one has been loaded. It tries first to find one for the BigGUI or GUI fonts and then looks for any acceptable font. Also only use lower case font name for the FontManager HashMap. This is to avoid issues with the case when looking for a font by its name. There was for example an issue for font helvB12 that is named helvb12 in the scummmodern theme.
114 lines
3.3 KiB
C++
114 lines
3.3 KiB
C++
/* ScummVM - Graphic Adventure Engine
|
|
*
|
|
* ScummVM is the legal property of its developers, whose names
|
|
* are too numerous to list here. Please refer to the COPYRIGHT
|
|
* file distributed with this source distribution.
|
|
*
|
|
* 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 2
|
|
* 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, write to the Free Software
|
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
*/
|
|
|
|
#ifndef GRAPHICS_FONTMAN_H
|
|
#define GRAPHICS_FONTMAN_H
|
|
|
|
#include "common/scummsys.h"
|
|
#include "common/singleton.h"
|
|
#include "common/str.h"
|
|
#include "common/hashmap.h"
|
|
#include "common/hash-str.h"
|
|
|
|
|
|
namespace Graphics {
|
|
|
|
class Font;
|
|
|
|
class FontManager : public Common::Singleton<FontManager> {
|
|
public:
|
|
enum FontUsage {
|
|
kLocalizedFont = 0,
|
|
kConsoleFont = 1,
|
|
kGUIFont = 2,
|
|
kBigGUIFont = 3
|
|
};
|
|
|
|
/**
|
|
* Retrieve a font object based on its 'name'.
|
|
*
|
|
* @param name the name of the font to be retrieved.
|
|
* @return a pointer to a font, or 0 if no suitable font was found.
|
|
*/
|
|
const Font *getFontByName(const Common::String &name) const;
|
|
|
|
/**
|
|
* Associates a font object with an 'name'
|
|
*
|
|
* @param name the name of the font
|
|
* @param font the font object
|
|
* @return true on success, false on failure
|
|
*/
|
|
bool assignFontToName(const Common::String &name, const Font *font);
|
|
|
|
/**
|
|
* Removes binding from name to font
|
|
*
|
|
* @param name name which should be removed
|
|
*/
|
|
void removeFontName(const Common::String &name);
|
|
|
|
/**
|
|
* Retrieve a font object based on what it is supposed
|
|
* to be used for
|
|
*
|
|
* @param usage a FontUsage enum value indicating what the font will be used for.
|
|
* @return a pointer to a font, or 0 if no suitable font was found.
|
|
*/
|
|
const Font *getFontByUsage(FontUsage usage) const;
|
|
|
|
/**
|
|
* Get the localized font for the current TranslationManager charset from the
|
|
* non localized font name
|
|
*
|
|
* @param filename the non-localized font file name.
|
|
* @return The localized font file name.
|
|
*/
|
|
Common::String genLocalizedFontFilename(const Common::String &filename) const;
|
|
|
|
//const Font *getFontBySize(int size???) const;
|
|
|
|
protected:
|
|
/**
|
|
* Get the name of the localized font for the given usage. There is no garanty that
|
|
* the font exists. If the usage is kLocalizedFont it returns an empty string.
|
|
*
|
|
* @param usage a FontUsage enum value indicating what the font will be used for.
|
|
* @return the name of a localized font or an empty string if no suitable font was found.
|
|
*/
|
|
Common::String getLocalizedFontNameByUsage(FontUsage usage) const;
|
|
|
|
private:
|
|
friend class Common::Singleton<SingletonBaseType>;
|
|
FontManager();
|
|
~FontManager();
|
|
|
|
Common::HashMap<Common::String, const Font *> _fontMap;
|
|
};
|
|
|
|
|
|
} // End of namespace Graphics
|
|
|
|
/** Shortcut for accessing the font manager. */
|
|
#define FontMan (Graphics::FontManager::instance())
|
|
|
|
#endif
|