Permalink
Browse files

GLK: FROTZ: Compilation fix

  • Loading branch information...
dreammaster committed Jan 2, 2019
1 parent c43f625 commit fd2dda4c18b97500bcfca8b4e10b8d420d5b5dbd
Showing with 9 additions and 70 deletions.
  1. +5 −65 engines/glk/frotz/windows.cpp
  2. +4 −5 engines/glk/frotz/windows.h
@@ -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 @@ class Windows {
/**
* 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

0 comments on commit fd2dda4

Please sign in to comment.