diff options
Diffstat (limited to 'engines/glk')
-rw-r--r-- | engines/glk/frotz/windows.cpp | 70 | ||||
-rw-r--r-- | engines/glk/frotz/windows.h | 9 |
2 files changed, 9 insertions, 70 deletions
diff --git a/engines/glk/frotz/windows.cpp b/engines/glk/frotz/windows.cpp index 8bdfafd879..b49c6d1413 100644 --- a/engines/glk/frotz/windows.cpp +++ b/engines/glk/frotz/windows.cpp @@ -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 diff --git a/engines/glk/frotz/windows.h b/engines/glk/frotz/windows.h index 566d2fd5c8..ef300fbb4c 100644 --- a/engines/glk/frotz/windows.h +++ b/engines/glk/frotz/windows.h @@ -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 |