GLK: FROTZ: Compilation fix

This commit is contained in:
Paul Gilbert
2019-01-01 18:59:47 -08:00
parent c43f625fd8
commit fd2dda4c18
2 changed files with 9 additions and 70 deletions
+5 -65
View File
@@ -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
+4 -5
View File
@@ -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