STARK: Implement TrueType font rendering
This commit is contained in:
parent
86c3e0d49e
commit
c9540977eb
12 changed files with 215 additions and 11 deletions
|
@ -24,9 +24,9 @@
|
||||||
|
|
||||||
#include "engines/stark/gfx/driver.h"
|
#include "engines/stark/gfx/driver.h"
|
||||||
|
|
||||||
|
#include "engines/stark/services/gameinterface.h"
|
||||||
#include "engines/stark/services/services.h"
|
#include "engines/stark/services/services.h"
|
||||||
#include "engines/stark/services/staticprovider.h"
|
#include "engines/stark/services/staticprovider.h"
|
||||||
#include "engines/stark/services/gameinterface.h"
|
|
||||||
|
|
||||||
#include "engines/stark/resources/item.h"
|
#include "engines/stark/resources/item.h"
|
||||||
|
|
||||||
|
@ -101,6 +101,7 @@ void Cursor::setMouseHint(const Common::String &hint) {
|
||||||
_mouseText = new VisualText(_gfx);
|
_mouseText = new VisualText(_gfx);
|
||||||
_mouseText->setText(hint);
|
_mouseText->setText(hint);
|
||||||
_mouseText->setColor(0xFFFF0000);
|
_mouseText->setColor(0xFFFF0000);
|
||||||
|
_mouseText->setFont(FontProvider::kSmallFont);
|
||||||
_mouseText->setTargetWidth(96);
|
_mouseText->setTargetWidth(96);
|
||||||
} else {
|
} else {
|
||||||
_mouseText = nullptr;
|
_mouseText = nullptr;
|
||||||
|
|
|
@ -63,6 +63,7 @@ MODULE_OBJS := \
|
||||||
scene.o \
|
scene.o \
|
||||||
services/archiveloader.o \
|
services/archiveloader.o \
|
||||||
services/dialogplayer.o \
|
services/dialogplayer.o \
|
||||||
|
services/fontprovider.o \
|
||||||
services/gameinterface.o \
|
services/gameinterface.o \
|
||||||
services/global.o \
|
services/global.o \
|
||||||
services/resourceprovider.o \
|
services/resourceprovider.o \
|
||||||
|
|
|
@ -220,6 +220,7 @@ void ImageText::initVisual() {
|
||||||
text->setText(_text);
|
text->setText(_text);
|
||||||
text->setColor(_color | 0xFF000000);
|
text->setColor(_color | 0xFF000000);
|
||||||
text->setTargetWidth(_size.x);
|
text->setTargetWidth(_size.x);
|
||||||
|
text->setFont(FontProvider::kCustomFont, _font);
|
||||||
|
|
||||||
_visual = text;
|
_visual = text;
|
||||||
}
|
}
|
||||||
|
|
103
engines/stark/services/fontprovider.cpp
Normal file
103
engines/stark/services/fontprovider.cpp
Normal file
|
@ -0,0 +1,103 @@
|
||||||
|
/* ResidualVM - A 3D game interpreter
|
||||||
|
*
|
||||||
|
* ResidualVM is the legal property of its developers, whose names
|
||||||
|
* are too numerous to list here. Please refer to the AUTHORS
|
||||||
|
* 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.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "engines/stark/services/fontprovider.h"
|
||||||
|
|
||||||
|
#include "common/archive.h"
|
||||||
|
|
||||||
|
#include "graphics/font.h"
|
||||||
|
#include "graphics/fontman.h"
|
||||||
|
#include "graphics/fonts/ttf.h"
|
||||||
|
|
||||||
|
namespace Stark {
|
||||||
|
|
||||||
|
FontProvider::FontProvider() {
|
||||||
|
initFonts();
|
||||||
|
}
|
||||||
|
|
||||||
|
FontProvider::~FontProvider() {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void FontProvider::initFonts() {
|
||||||
|
// TODO: Use SystemFontMan instead when it gets merged
|
||||||
|
_ttfFileMap["Garamond"] = "Gara.ttf";
|
||||||
|
_ttfFileMap["Florentine Script"] = "flornt.TTF";
|
||||||
|
_ttfFileMap["Folkard"] = "folkard.ttf";
|
||||||
|
_ttfFileMap["Arial"] = "ARIAL.TTF";
|
||||||
|
_ttfFileMap["Bradley Hand ITC"] = "bradhitc.ttf";
|
||||||
|
|
||||||
|
// TODO: Read from gui.ini
|
||||||
|
_smallFont = FontHolder(this, "Garamond", 12);
|
||||||
|
_bigFont = FontHolder(this, "Florentine Script", 19);
|
||||||
|
|
||||||
|
_customFonts[0] = FontHolder(this, "Folkard", 20);
|
||||||
|
_customFonts[1] = FontHolder(this, "Folkard", 12);
|
||||||
|
_customFonts[2] = FontHolder(this, "Arial", 14);
|
||||||
|
_customFonts[3] = FontHolder(this, "Bradley Hand ITC", 16);
|
||||||
|
_customFonts[4] = FontHolder(this, "Bradley Hand ITC", 20);
|
||||||
|
_customFonts[5] = FontHolder(this, "Bradley Hand ITC", 16);
|
||||||
|
_customFonts[6] = FontHolder(this, "Bradley Hand ITC", 15);
|
||||||
|
_customFonts[7] = FontHolder(this, "Florentine Script", 13);
|
||||||
|
}
|
||||||
|
|
||||||
|
FontProvider::FontHolder::FontHolder(FontProvider *fontProvider, Common::String name, uint32 height, uint32 charset) {
|
||||||
|
_name = name;
|
||||||
|
_height = height;
|
||||||
|
_charset = charset;
|
||||||
|
|
||||||
|
// Fetch the font file name
|
||||||
|
Common::String ttfFileName = "fonts/" + fontProvider->_ttfFileMap[_name];
|
||||||
|
|
||||||
|
// Initialize the font
|
||||||
|
Common::SeekableReadStream *s = SearchMan.createReadStreamForMember(ttfFileName);
|
||||||
|
if (s) {
|
||||||
|
_font = Common::SharedPtr<Graphics::Font>(
|
||||||
|
Graphics::loadTTFFont(*s, _height, Graphics::kTTFSizeModeCell, 0, Graphics::kTTFRenderModeMonochrome)
|
||||||
|
);
|
||||||
|
delete s;
|
||||||
|
} else {
|
||||||
|
warning("Unable to load the font '%s'", ttfFileName.c_str());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const Graphics::Font *FontProvider::getFont(FontProvider::FontType type, int32 customFontIndex) {
|
||||||
|
// Get the font holder
|
||||||
|
FontHolder *holder;
|
||||||
|
if (type == kSmallFont) {
|
||||||
|
holder = &_smallFont;
|
||||||
|
} else if (type == kBigFont) {
|
||||||
|
holder = &_bigFont;
|
||||||
|
} else {
|
||||||
|
assert(customFontIndex >= 0 && customFontIndex < 8);
|
||||||
|
holder = &_customFonts[customFontIndex];
|
||||||
|
}
|
||||||
|
|
||||||
|
if (holder->_font) {
|
||||||
|
return holder->_font.get();
|
||||||
|
} else {
|
||||||
|
// Fallback to a default font
|
||||||
|
return FontMan.getFontByUsage(Graphics::FontManager::kBigGUIFont);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
} // End of namespace Stark
|
76
engines/stark/services/fontprovider.h
Normal file
76
engines/stark/services/fontprovider.h
Normal file
|
@ -0,0 +1,76 @@
|
||||||
|
/* ResidualVM - A 3D game interpreter
|
||||||
|
*
|
||||||
|
* ResidualVM is the legal property of its developers, whose names
|
||||||
|
* are too numerous to list here. Please refer to the AUTHORS
|
||||||
|
* 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 STARK_SERVICES_FONT_PROVIDER_H
|
||||||
|
#define STARK_SERVICES_FONT_PROVIDER_H
|
||||||
|
|
||||||
|
#include "common/hash-str.h"
|
||||||
|
#include "common/ptr.h"
|
||||||
|
|
||||||
|
namespace Graphics {
|
||||||
|
class Font;
|
||||||
|
}
|
||||||
|
|
||||||
|
namespace Stark {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The font provider offers a set of predefined fonts for the game to use
|
||||||
|
*/
|
||||||
|
class FontProvider {
|
||||||
|
public:
|
||||||
|
FontProvider();
|
||||||
|
~FontProvider();
|
||||||
|
|
||||||
|
enum FontType {
|
||||||
|
kSmallFont,
|
||||||
|
kBigFont,
|
||||||
|
kCustomFont
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Request a font matching the specified parameters
|
||||||
|
*/
|
||||||
|
const Graphics::Font *getFont(FontType type, int32 customFontIndex);
|
||||||
|
|
||||||
|
private:
|
||||||
|
struct FontHolder {
|
||||||
|
Common::String _name;
|
||||||
|
uint32 _height;
|
||||||
|
uint32 _charset;
|
||||||
|
Common::SharedPtr<Graphics::Font> _font;
|
||||||
|
|
||||||
|
FontHolder() : _height(0), _charset(0) {}
|
||||||
|
FontHolder(FontProvider *fontProvider, Common::String name, uint32 height, uint32 charset = 0);
|
||||||
|
};
|
||||||
|
|
||||||
|
void initFonts();
|
||||||
|
|
||||||
|
FontHolder _smallFont;
|
||||||
|
FontHolder _bigFont;
|
||||||
|
FontHolder _customFonts[8];
|
||||||
|
|
||||||
|
Common::StringMap _ttfFileMap;
|
||||||
|
};
|
||||||
|
|
||||||
|
} // End of namespace Stark
|
||||||
|
|
||||||
|
#endif // STARK_SERVICES_FONT_PROVIDER_H
|
|
@ -38,11 +38,12 @@ class Driver;
|
||||||
|
|
||||||
class ArchiveLoader;
|
class ArchiveLoader;
|
||||||
class DialogPlayer;
|
class DialogPlayer;
|
||||||
|
class FontProvider;
|
||||||
|
class GameInterface;
|
||||||
class Global;
|
class Global;
|
||||||
class ResourceProvider;
|
class ResourceProvider;
|
||||||
class StaticProvider;
|
class StaticProvider;
|
||||||
class Scene;
|
class Scene;
|
||||||
class GameInterface;
|
|
||||||
class UserInterface;
|
class UserInterface;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -61,6 +62,7 @@ public:
|
||||||
staticProvider = nullptr;
|
staticProvider = nullptr;
|
||||||
gameInterface = nullptr;
|
gameInterface = nullptr;
|
||||||
userInterface = nullptr;
|
userInterface = nullptr;
|
||||||
|
fontProvider = nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
ArchiveLoader *archiveLoader;
|
ArchiveLoader *archiveLoader;
|
||||||
|
@ -73,6 +75,7 @@ public:
|
||||||
StaticProvider *staticProvider;
|
StaticProvider *staticProvider;
|
||||||
GameInterface *gameInterface;
|
GameInterface *gameInterface;
|
||||||
UserInterface *userInterface;
|
UserInterface *userInterface;
|
||||||
|
FontProvider *fontProvider;
|
||||||
};
|
};
|
||||||
|
|
||||||
/** Shortcuts for accessing the services. */
|
/** Shortcuts for accessing the services. */
|
||||||
|
@ -86,6 +89,7 @@ public:
|
||||||
#define StarkStaticProvider StarkServices::instance().staticProvider
|
#define StarkStaticProvider StarkServices::instance().staticProvider
|
||||||
#define StarkGameInterface StarkServices::instance().gameInterface
|
#define StarkGameInterface StarkServices::instance().gameInterface
|
||||||
#define StarkUserInterface StarkServices::instance().userInterface
|
#define StarkUserInterface StarkServices::instance().userInterface
|
||||||
|
#define StarkFontProvider StarkServices::instance().fontProvider
|
||||||
|
|
||||||
} // End of namespace Stark
|
} // End of namespace Stark
|
||||||
|
|
||||||
|
|
|
@ -31,12 +31,13 @@
|
||||||
#include "engines/stark/services/userinterface.h"
|
#include "engines/stark/services/userinterface.h"
|
||||||
#include "engines/stark/services/archiveloader.h"
|
#include "engines/stark/services/archiveloader.h"
|
||||||
#include "engines/stark/services/dialogplayer.h"
|
#include "engines/stark/services/dialogplayer.h"
|
||||||
|
#include "engines/stark/services/fontprovider.h"
|
||||||
|
#include "engines/stark/services/gameinterface.h"
|
||||||
#include "engines/stark/services/global.h"
|
#include "engines/stark/services/global.h"
|
||||||
#include "engines/stark/services/resourceprovider.h"
|
#include "engines/stark/services/resourceprovider.h"
|
||||||
#include "engines/stark/services/services.h"
|
#include "engines/stark/services/services.h"
|
||||||
#include "engines/stark/services/stateprovider.h"
|
#include "engines/stark/services/stateprovider.h"
|
||||||
#include "engines/stark/services/staticprovider.h"
|
#include "engines/stark/services/staticprovider.h"
|
||||||
#include "engines/stark/services/gameinterface.h"
|
|
||||||
#include "engines/stark/gfx/driver.h"
|
#include "engines/stark/gfx/driver.h"
|
||||||
|
|
||||||
#include "common/config-manager.h"
|
#include "common/config-manager.h"
|
||||||
|
@ -65,6 +66,7 @@ StarkEngine::StarkEngine(OSystem *syst, const ADGameDescription *gameDesc) :
|
||||||
_randomSource(nullptr),
|
_randomSource(nullptr),
|
||||||
_dialogPlayer(nullptr),
|
_dialogPlayer(nullptr),
|
||||||
_userInterface(nullptr),
|
_userInterface(nullptr),
|
||||||
|
_fontProvider(nullptr),
|
||||||
_lastClickTime(0) {
|
_lastClickTime(0) {
|
||||||
_mixer->setVolumeForSoundType(Audio::Mixer::kPlainSoundType, 127);
|
_mixer->setVolumeForSoundType(Audio::Mixer::kPlainSoundType, 127);
|
||||||
_mixer->setVolumeForSoundType(Audio::Mixer::kSFXSoundType, ConfMan.getInt("sfx_volume"));
|
_mixer->setVolumeForSoundType(Audio::Mixer::kSFXSoundType, ConfMan.getInt("sfx_volume"));
|
||||||
|
@ -92,6 +94,7 @@ StarkEngine::~StarkEngine() {
|
||||||
delete _stateProvider;
|
delete _stateProvider;
|
||||||
delete _archiveLoader;
|
delete _archiveLoader;
|
||||||
delete _userInterface;
|
delete _userInterface;
|
||||||
|
delete _fontProvider;
|
||||||
|
|
||||||
StarkServices::destroy();
|
StarkServices::destroy();
|
||||||
}
|
}
|
||||||
|
@ -109,6 +112,7 @@ Common::Error StarkEngine::run() {
|
||||||
_resourceProvider = new ResourceProvider(_archiveLoader, _stateProvider, _global);
|
_resourceProvider = new ResourceProvider(_archiveLoader, _stateProvider, _global);
|
||||||
_staticProvider = new StaticProvider(_archiveLoader, _global);
|
_staticProvider = new StaticProvider(_archiveLoader, _global);
|
||||||
_randomSource = new Common::RandomSource("stark");
|
_randomSource = new Common::RandomSource("stark");
|
||||||
|
_fontProvider = new FontProvider();
|
||||||
_scene = new Scene(_gfx);
|
_scene = new Scene(_gfx);
|
||||||
_dialogPlayer = new DialogPlayer();
|
_dialogPlayer = new DialogPlayer();
|
||||||
_cursor = new Cursor(_gfx);
|
_cursor = new Cursor(_gfx);
|
||||||
|
@ -127,6 +131,7 @@ Common::Error StarkEngine::run() {
|
||||||
services.staticProvider = _staticProvider;
|
services.staticProvider = _staticProvider;
|
||||||
services.gameInterface = _gameInterface;
|
services.gameInterface = _gameInterface;
|
||||||
services.userInterface = _userInterface;
|
services.userInterface = _userInterface;
|
||||||
|
services.fontProvider = _fontProvider;
|
||||||
|
|
||||||
// Load global resources
|
// Load global resources
|
||||||
_resourceProvider->initGlobal();
|
_resourceProvider->initGlobal();
|
||||||
|
|
|
@ -44,6 +44,7 @@ class ArchiveLoader;
|
||||||
class Console;
|
class Console;
|
||||||
class Cursor;
|
class Cursor;
|
||||||
class DialogPlayer;
|
class DialogPlayer;
|
||||||
|
class FontProvider;
|
||||||
class Global;
|
class Global;
|
||||||
class GameInterface;
|
class GameInterface;
|
||||||
class Scene;
|
class Scene;
|
||||||
|
@ -84,6 +85,7 @@ private:
|
||||||
StateProvider *_stateProvider;
|
StateProvider *_stateProvider;
|
||||||
StaticProvider *_staticProvider;
|
StaticProvider *_staticProvider;
|
||||||
ResourceProvider *_resourceProvider;
|
ResourceProvider *_resourceProvider;
|
||||||
|
FontProvider *_fontProvider;
|
||||||
Common::RandomSource *_randomSource;
|
Common::RandomSource *_randomSource;
|
||||||
|
|
||||||
const ADGameDescription *_gameDescription;
|
const ADGameDescription *_gameDescription;
|
||||||
|
|
|
@ -34,11 +34,13 @@ ClickText::ClickText(const Common::String &text, uint32 color) :
|
||||||
_visualPassive = new VisualText(StarkGfx);
|
_visualPassive = new VisualText(StarkGfx);
|
||||||
_visualPassive->setText(_text);
|
_visualPassive->setText(_text);
|
||||||
_visualPassive->setColor(_color);
|
_visualPassive->setColor(_color);
|
||||||
|
_visualPassive->setFont(FontProvider::kBigFont);
|
||||||
_visualPassive->setTargetWidth(600);
|
_visualPassive->setTargetWidth(600);
|
||||||
|
|
||||||
_visualActive = new VisualText(StarkGfx);
|
_visualActive = new VisualText(StarkGfx);
|
||||||
_visualActive->setText(_text);
|
_visualActive->setText(_text);
|
||||||
_visualActive->setColor(0xFF00FF00);
|
_visualActive->setColor(0xFF00FF00);
|
||||||
|
_visualActive->setFont(FontProvider::kBigFont);
|
||||||
_visualActive->setTargetWidth(600);
|
_visualActive->setTargetWidth(600);
|
||||||
|
|
||||||
_curVisual = _visualPassive;
|
_curVisual = _visualPassive;
|
||||||
|
|
|
@ -111,6 +111,7 @@ void DialogPanel::updateSubtitleVisual() {
|
||||||
_subtitleVisual = new VisualText(_gfx);
|
_subtitleVisual = new VisualText(_gfx);
|
||||||
_subtitleVisual->setText(_currentSpeech->getPhrase());
|
_subtitleVisual->setText(_currentSpeech->getPhrase());
|
||||||
_subtitleVisual->setColor(_currentSpeech->characterIsApril() ? _aprilColor : _otherColor);
|
_subtitleVisual->setColor(_currentSpeech->characterIsApril() ? _aprilColor : _otherColor);
|
||||||
|
_subtitleVisual->setFont(FontProvider::kBigFont);
|
||||||
_subtitleVisual->setTargetWidth(600);
|
_subtitleVisual->setTargetWidth(600);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -23,7 +23,6 @@
|
||||||
#include "engines/stark/visual/text.h"
|
#include "engines/stark/visual/text.h"
|
||||||
|
|
||||||
#include "graphics/font.h"
|
#include "graphics/font.h"
|
||||||
#include "graphics/fontman.h"
|
|
||||||
#include "graphics/pixelformat.h"
|
#include "graphics/pixelformat.h"
|
||||||
#include "graphics/surface.h"
|
#include "graphics/surface.h"
|
||||||
|
|
||||||
|
@ -40,7 +39,8 @@ VisualText::VisualText(Gfx::Driver *gfx) :
|
||||||
_gfx(gfx),
|
_gfx(gfx),
|
||||||
_texture(nullptr),
|
_texture(nullptr),
|
||||||
_color(0),
|
_color(0),
|
||||||
_targetWidth(600) {
|
_targetWidth(600),
|
||||||
|
_font(nullptr) {
|
||||||
}
|
}
|
||||||
|
|
||||||
VisualText::~VisualText() {
|
VisualText::~VisualText() {
|
||||||
|
@ -71,22 +71,22 @@ void VisualText::setTargetWidth(uint32 width) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void VisualText::createTexture() {
|
void VisualText::createTexture() {
|
||||||
const Graphics::Font *font = FontMan.getFontByUsage(Graphics::FontManager::kBigGUIFont);
|
assert(_font);
|
||||||
|
|
||||||
Common::Array<Common::String> lines;
|
Common::Array<Common::String> lines;
|
||||||
font->wordWrapText(_text, _targetWidth, lines);
|
_font->wordWrapText(_text, _targetWidth, lines);
|
||||||
|
|
||||||
int height = font->getFontHeight();
|
int height = _font->getFontHeight() + 1;
|
||||||
int width = 0;
|
int width = 0;
|
||||||
for (uint i = 0; i < lines.size(); i++) {
|
for (uint i = 0; i < lines.size(); i++) {
|
||||||
width = MAX(width, font->getStringWidth(lines[i]));
|
width = MAX(width, _font->getStringWidth(lines[i]));
|
||||||
}
|
}
|
||||||
|
|
||||||
Graphics::Surface surface;
|
Graphics::Surface surface;
|
||||||
surface.create(width, height*lines.size(), _gfx->getScreenFormat());
|
surface.create(width, height * lines.size(), _gfx->getScreenFormat());
|
||||||
|
|
||||||
for (uint i = 0; i < lines.size(); i++) {
|
for (uint i = 0; i < lines.size(); i++) {
|
||||||
font->drawString(&surface, lines[i], 0, height*i, _targetWidth, _color);
|
_font->drawString(&surface, lines[i], 0, height * i, _targetWidth, _color);
|
||||||
}
|
}
|
||||||
_texture = _gfx->createTexture(&surface);
|
_texture = _gfx->createTexture(&surface);
|
||||||
surface.free();
|
surface.free();
|
||||||
|
@ -105,4 +105,8 @@ void VisualText::render(const Common::Point &position) {
|
||||||
_gfx->drawSurface(_texture, position);
|
_gfx->drawSurface(_texture, position);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void VisualText::setFont(FontProvider::FontType type, int32 customFontIndex) {
|
||||||
|
_font = StarkFontProvider->getFont(type, customFontIndex);
|
||||||
|
}
|
||||||
|
|
||||||
} // End of namespace Stark
|
} // End of namespace Stark
|
||||||
|
|
|
@ -25,6 +25,8 @@
|
||||||
|
|
||||||
#include "engines/stark/visual/visual.h"
|
#include "engines/stark/visual/visual.h"
|
||||||
|
|
||||||
|
#include "engines/stark/services/fontprovider.h"
|
||||||
|
|
||||||
#include "common/rect.h"
|
#include "common/rect.h"
|
||||||
|
|
||||||
namespace Stark {
|
namespace Stark {
|
||||||
|
@ -49,6 +51,7 @@ public:
|
||||||
void setText(const Common::String &text);
|
void setText(const Common::String &text);
|
||||||
void setColor(uint32 color);
|
void setColor(uint32 color);
|
||||||
void setTargetWidth(uint32 width);
|
void setTargetWidth(uint32 width);
|
||||||
|
void setFont(FontProvider::FontType type, int32 customFontIndex = -1);
|
||||||
|
|
||||||
void render(const Common::Point &position);
|
void render(const Common::Point &position);
|
||||||
|
|
||||||
|
@ -59,6 +62,7 @@ private:
|
||||||
Gfx::Driver *_gfx;
|
Gfx::Driver *_gfx;
|
||||||
|
|
||||||
Common::String _text;
|
Common::String _text;
|
||||||
|
const Graphics::Font *_font;
|
||||||
uint32 _color;
|
uint32 _color;
|
||||||
uint32 _targetWidth;
|
uint32 _targetWidth;
|
||||||
Gfx::Texture *_texture;
|
Gfx::Texture *_texture;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue