mirror of
https://github.com/scummvm/scummvm.git
synced 2026-06-20 05:45:29 +00:00
GLK: FROTZ: Compilation fix
This commit is contained in:
@@ -20,77 +20,17 @@
|
||||
*
|
||||
*/
|
||||
|
||||
#include "glk/frotz/screen.h"
|
||||
#include "glk/conf.h"
|
||||
#include "common/file.h"
|
||||
#include "graphics/fonts/ttf.h"
|
||||
#include "image/bmp.h"
|
||||
#include "glk/frotz/windows.h"
|
||||
|
||||
namespace Glk {
|
||||
namespace Frotz {
|
||||
|
||||
FrotzScreen::FrotzScreen() : Glk::Screen() {
|
||||
g_conf->_tStyles[style_User1].font = CUSTOM;
|
||||
g_conf->_gStyles[style_User1].font = CUSTOM;
|
||||
g_conf->_tStyles[style_User2].font = CUSTOM2;
|
||||
Windows::Windows() : _lower(_windows[0]), _upper(_windows[1]) {
|
||||
}
|
||||
|
||||
void FrotzScreen::loadFonts(Common::Archive *archive) {
|
||||
Screen::loadFonts(archive);
|
||||
|
||||
// Add character graphics font
|
||||
Image::BitmapDecoder decoder;
|
||||
Common::File f;
|
||||
if (!f.open("infocom_graphics.bmp", *archive))
|
||||
error("Could not load font");
|
||||
|
||||
Common::Point fontSize(_fonts[0]->getMaxCharWidth(), _fonts[0]->getFontHeight());
|
||||
decoder.loadStream(f);
|
||||
_fonts.push_back(new Frotz::BitmapFont(*decoder.getSurface(), fontSize));
|
||||
f.close();
|
||||
|
||||
// Add Runic font. It provides cleaner versions of the runic characters in the
|
||||
// character graphics font
|
||||
if (!f.open("NotoSansRunic-Regular.ttf", *archive))
|
||||
error("Could not load font");
|
||||
|
||||
_fonts.push_back(Graphics::loadTTFFont(f, g_conf->_propInfo._size, Graphics::kTTFSizeModeCharacter));
|
||||
f.close();
|
||||
}
|
||||
|
||||
/*--------------------------------------------------------------------------*/
|
||||
|
||||
BitmapFont::BitmapFont(const Graphics::Surface &src, const Common::Point &size,
|
||||
uint srcWidth, uint srcHeight, unsigned char startingChar) :
|
||||
_startingChar(startingChar), _size(size) {
|
||||
assert(src.format.bytesPerPixel == 1);
|
||||
assert((src.w % srcWidth) == 0);
|
||||
assert((src.h % srcHeight) == 0);
|
||||
|
||||
// Set up a characters array
|
||||
_chars.resize((src.w / srcWidth) * (src.h / srcHeight));
|
||||
|
||||
// Iterate through loading characters
|
||||
Common::Rect r(srcWidth, srcHeight);
|
||||
int charsPerRow = src.w / srcWidth;
|
||||
for (uint idx = 0; idx < _chars.size(); ++idx) {
|
||||
r.moveTo((idx % charsPerRow) * srcWidth, (idx / charsPerRow) * srcHeight);
|
||||
|
||||
_chars[idx].create(size.x, size.y, src.format);
|
||||
_chars[idx].transBlitFrom(src, r, Common::Rect(0, 0, size.x, size.y));
|
||||
}
|
||||
}
|
||||
|
||||
void BitmapFont::drawChar(Graphics::Surface *dst, uint32 chr, int x, int y, uint32 color) const {
|
||||
const Graphics::ManagedSurface &c = _chars[chr - _startingChar];
|
||||
for (int yCtr = 0; yCtr < c.h; ++yCtr) {
|
||||
const byte *srcP = (const byte *)c.getBasePtr(0, yCtr);
|
||||
|
||||
for (int xCtr = 0; xCtr < c.w; ++xCtr, ++srcP) {
|
||||
if (!*srcP)
|
||||
dst->hLine(x + xCtr, y + yCtr, x + xCtr, color);
|
||||
}
|
||||
}
|
||||
Window &Windows::operator[](uint idx) {
|
||||
assert(idx < 8);
|
||||
return _windows[idx];
|
||||
}
|
||||
|
||||
} // End of namespace Scott
|
||||
|
||||
@@ -23,6 +23,8 @@
|
||||
#ifndef GLK_FROTZ_WINDOWS
|
||||
#define GLK_FROTZ_WINDOWS
|
||||
|
||||
#include "glk/windows.h"
|
||||
|
||||
namespace Glk {
|
||||
namespace Frotz {
|
||||
|
||||
@@ -80,15 +82,12 @@ public:
|
||||
/**
|
||||
* Constructor
|
||||
*/
|
||||
Windows() : _lower(_windows[0]), _upper(_windows[1]) {}
|
||||
Windows();
|
||||
|
||||
/**
|
||||
* Array access
|
||||
*/
|
||||
Window &operator[](uint idx) {
|
||||
assert(idx < 8);
|
||||
return _windows[idx];
|
||||
}
|
||||
Window &operator[](uint idx);
|
||||
};
|
||||
|
||||
} // End of namespace Frotz
|
||||
|
||||
Reference in New Issue
Block a user