diff options
| author | Max Horn | 2004-03-13 13:03:25 +0000 | 
|---|---|---|
| committer | Max Horn | 2004-03-13 13:03:25 +0000 | 
| commit | a0bde7a732a121915a63c835d3177a616b85eab0 (patch) | |
| tree | b6edc20ded5c555c3890b15655a88710256b70c4 | |
| parent | 7000cb00e4394f10f567b2669fc805af0ea6d55a (diff) | |
| download | scummvm-rg350-a0bde7a732a121915a63c835d3177a616b85eab0.tar.gz scummvm-rg350-a0bde7a732a121915a63c835d3177a616b85eab0.tar.bz2 scummvm-rg350-a0bde7a732a121915a63c835d3177a616b85eab0.zip  | |
Revamped the font code: now it's very easy to switch between the 'original' SCUMM font and any new font... or to have multiple different fonts (like, one for 320x240 and and one for 640x480); furthermore, font rendering can now be done w/o using NewGui
svn-id: r13243
| -rw-r--r-- | gui/PopUpWidget.cpp | 2 | ||||
| -rw-r--r-- | gui/console.cpp | 10 | ||||
| -rw-r--r-- | gui/dialog.h | 1 | ||||
| -rw-r--r-- | gui/font.cpp | 2722 | ||||
| -rw-r--r-- | gui/font.h | 62 | ||||
| -rw-r--r-- | gui/module.mk | 11 | ||||
| -rw-r--r-- | gui/newfont.cpp | 2600 | ||||
| -rw-r--r-- | gui/newgui.cpp | 223 | ||||
| -rw-r--r-- | gui/newgui.h | 28 | ||||
| -rw-r--r-- | gui/scummfont.cpp | 112 | ||||
| -rw-r--r-- | gui/widget.cpp | 2 | ||||
| -rw-r--r-- | gui/widget.h | 11 | 
12 files changed, 2974 insertions, 2810 deletions
diff --git a/gui/PopUpWidget.cpp b/gui/PopUpWidget.cpp index 71d861d35c..98fbdfcfde 100644 --- a/gui/PopUpWidget.cpp +++ b/gui/PopUpWidget.cpp @@ -345,7 +345,7 @@ void PopUpWidget::drawWidget(bool hilite) {  	// Draw the selected entry, if any  	if (_selectedItem >= 0) { -		int align = (gui->getStringWidth(_entries[_selectedItem].name) > w-6) ? kTextAlignRight : kTextAlignLeft; +		TextAlignment align = (gui->getStringWidth(_entries[_selectedItem].name) > w-6) ? kTextAlignRight : kTextAlignLeft;  		gui->drawString(_entries[_selectedItem].name, x+2, _y+3, w-6, !isEnabled() ? gui->_color : gui->_textcolor, align);  	}  } diff --git a/gui/console.cpp b/gui/console.cpp index bf08633bee..08780c17af 100644 --- a/gui/console.cpp +++ b/gui/console.cpp @@ -25,14 +25,8 @@  #include "base/engine.h"  #include "base/version.h" -#ifdef NEW_FONT_CODE  #include "gui/font.h" -#define kCharWidth	g_sysfont.maxwidth -#else -enum { -	kCharWidth = 8 -}; -#endif +#define kCharWidth	g_guifont.getMaxCharWidth()  namespace GUI { @@ -85,7 +79,7 @@ ConsoleDialog::ConsoleDialog(float widthPercent, float heightPercent)  }  void ConsoleDialog::reflowLayout() { -	// Calculate the real width/height (rounded to char/line multiples +	// Calculate the real width/height (rounded to char/line multiples)  	_w = (uint16)(_widthPercent * g_system->get_overlay_width());  //	_w = (_widthPercent * g_system->get_overlay_width() - kScrollBarWidth - 2) / kCharWidth;  //	_w = _w * kCharWidth + kScrollBarWidth + 2; diff --git a/gui/dialog.h b/gui/dialog.h index 80ae07ef78..e3d7f46cfa 100644 --- a/gui/dialog.h +++ b/gui/dialog.h @@ -74,6 +74,7 @@ protected:  	virtual void handleKeyUp(uint16 ascii, int keycode, int modifiers);  	virtual void handleMouseMoved(int x, int y, int button);  	virtual void handleCommand(CommandSender *sender, uint32 cmd, uint32 data); +	virtual void handleScreenChanged() {}  	Widget *findWidget(int x, int y); // Find the widget at pos x,y if any diff --git a/gui/font.cpp b/gui/font.cpp index 020e5c0445..a4031a4144 100644 --- a/gui/font.cpp +++ b/gui/font.cpp @@ -1,2581 +1,153 @@ -/* Generated by convbdf on Thu Nov 20 00:15:51 2003. */ -#include "font.h" - -/* Font information: -   name: 04b-16b-10 -   facename: 04b-16b-10 -   w x h: 9x10 -   size: 94 -   ascent: 8 -   descent: 2 -   first char: 33 (0x21) -   last char: 126 (0x7e) -   default char: 33 (0x21) -   proportional: yes -    -*/ +/* ScummVM - Scumm Interpreter + * Copyright (C) 2002-2004 The ScummVM project + * + * 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., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA. + * + * $Header$ + */ + +#include "common/stdafx.h" +#include "gui/font.h"  namespace GUI { -/* Font character bitmap data. */ -static const bitmap_t _font_bits[] = { - -/* Character 33 (0x21): -   width 3 -   +---+ -   |   | -   | * | -   | * | -   | * | -   | * | -   | * | -   |   | -   | * | -   |   | -   |   | -   +---+ -*/ -0x0000, -0x4000, -0x4000, -0x4000, -0x4000, -0x4000, -0x0000, -0x4000, -0x0000, -0x0000, - -/* Character 34 (0x22): -   width 4 -   +----+ -   |    | -   |* * | -   |* * | -   |    | -   |    | -   |    | -   |    | -   |    | -   |    | -   |    | -   +----+ -*/ -0x0000, -0xa000, -0xa000, -0x0000, -0x0000, -0x0000, -0x0000, -0x0000, -0x0000, -0x0000, - -/* Character 35 (0x23): -   width 6 -   +------+ -   |      | -   |      | -   | * *  | -   |***** | -   | * *  | -   |***** | -   | * *  | -   |      | -   |      | -   |      | -   +------+ -*/ -0x0000, -0x0000, -0x5000, -0xf800, -0x5000, -0xf800, -0x5000, -0x0000, -0x0000, -0x0000, - -/* Character 36 (0x24): -   width 6 -   +------+ -   |  *   | -   | ***  | -   |* * * | -   |* *   | -   | ***  | -   |  * * | -   |* * * | -   | ***  | -   |  *   | -   |      | -   +------+ -*/ -0x2000, -0x7000, -0xa800, -0xa000, -0x7000, -0x2800, -0xa800, -0x7000, -0x2000, -0x0000, - -/* Character 37 (0x25): -   width 9 -   +---------+ -   |         | -   | *   *   | -   |* *  *   | -   |* * *    | -   | *  *    | -   |   *  *  | -   |   * * * | -   |  *  * * | -   |  *   *  | -   |         | -   +---------+ -*/ -0x0000, -0x4400, -0xa400, -0xa800, -0x4800, -0x1200, -0x1500, -0x2500, -0x2200, -0x0000, - -/* Character 38 (0x26): -   width 5 -   +-----+ -   |     | -   | **  | -   |*    | -   |* *  | -   | *** | -   |* *  | -   |* *  | -   | * * | -   |     | -   |     | -   +-----+ -*/ -0x0000, -0x6000, -0x8000, -0xa000, -0x7000, -0xa000, -0xa000, -0x5000, -0x0000, -0x0000, - -/* Character 39 (0x27): -   width 2 -   +--+ -   |  | -   |* | -   |* | -   |  | -   |  | -   |  | -   |  | -   |  | -   |  | -   |  | -   +--+ -*/ -0x0000, -0x8000, -0x8000, -0x0000, -0x0000, -0x0000, -0x0000, -0x0000, -0x0000, -0x0000, - -/* Character 40 (0x28): -   width 5 -   +-----+ -   |     | -   |   * | -   |  *  | -   | *   | -   | *   | -   | *   | -   |  *  | -   |   * | -   |     | -   |     | -   +-----+ -*/ -0x0000, -0x1000, -0x2000, -0x4000, -0x4000, -0x4000, -0x2000, -0x1000, -0x0000, -0x0000, - -/* Character 41 (0x29): -   width 5 -   +-----+ -   |     | -   |*    | -   | *   | -   |  *  | -   |  *  | -   |  *  | -   | *   | -   |*    | -   |     | -   |     | -   +-----+ -*/ -0x0000, -0x8000, -0x4000, -0x2000, -0x2000, -0x2000, -0x4000, -0x8000, -0x0000, -0x0000, - -/* Character 42 (0x2a): -   width 6 -   +------+ -   |      | -   |      | -   |  *   | -   |* * * | -   | ***  | -   |* * * | -   |  *   | -   |      | -   |      | -   |      | -   +------+ -*/ -0x0000, -0x0000, -0x2000, -0xa800, -0x7000, -0xa800, -0x2000, -0x0000, -0x0000, -0x0000, - -/* Character 43 (0x2b): -   width 6 -   +------+ -   |      | -   |      | -   |  *   | -   |  *   | -   |***** | -   |  *   | -   |  *   | -   |      | -   |      | -   |      | -   +------+ -*/ -0x0000, -0x0000, -0x2000, -0x2000, -0xf800, -0x2000, -0x2000, -0x0000, -0x0000, -0x0000, - -/* Character 44 (0x2c): -   width 3 -   +---+ -   |   | -   |   | -   |   | -   |   | -   |   | -   | * | -   |   | -   | * | -   |*  | -   |   | -   +---+ -*/ -0x0000, -0x0000, -0x0000, -0x0000, -0x0000, -0x4000, -0x0000, -0x4000, -0x8000, -0x0000, - -/* Character 45 (0x2d): -   width 5 -   +-----+ -   |     | -   |     | -   |     | -   |     | -   |**** | -   |     | -   |     | -   |     | -   |     | -   |     | -   +-----+ -*/ -0x0000, -0x0000, -0x0000, -0x0000, -0xf000, -0x0000, -0x0000, -0x0000, -0x0000, -0x0000, - -/* Character 46 (0x2e): -   width 2 -   +--+ -   |  | -   |  | -   |  | -   |  | -   |  | -   |  | -   |  | -   |* | -   |  | -   |  | -   +--+ -*/ -0x0000, -0x0000, -0x0000, -0x0000, -0x0000, -0x0000, -0x0000, -0x8000, -0x0000, -0x0000, - -/* Character 47 (0x2f): -   width 5 -   +-----+ -   |     | -   |   * | -   |   * | -   |  *  | -   |  *  | -   | *   | -   | *   | -   |*    | -   |*    | -   |     | -   +-----+ -*/ -0x0000, -0x1000, -0x1000, -0x2000, -0x2000, -0x4000, -0x4000, -0x8000, -0x8000, -0x0000, - -/* Character 48 (0x30): -   width 5 -   +-----+ -   |     | -   | **  | -   |*  * | -   |*  * | -   |*  * | -   |*  * | -   |*  * | -   | **  | -   |     | -   |     | -   +-----+ -*/ -0x0000, -0x6000, -0x9000, -0x9000, -0x9000, -0x9000, -0x9000, -0x6000, -0x0000, -0x0000, - -/* Character 49 (0x31): -   width 3 -   +---+ -   |   | -   | * | -   |** | -   | * | -   | * | -   | * | -   | * | -   | * | -   |   | -   |   | -   +---+ -*/ -0x0000, -0x4000, -0xc000, -0x4000, -0x4000, -0x4000, -0x4000, -0x4000, -0x0000, -0x0000, - -/* Character 50 (0x32): -   width 5 -   +-----+ -   |     | -   |***  | -   |   * | -   |   * | -   |  *  | -   | *   | -   |*    | -   |**** | -   |     | -   |     | -   +-----+ -*/ -0x0000, -0xe000, -0x1000, -0x1000, -0x2000, -0x4000, -0x8000, -0xf000, -0x0000, -0x0000, - -/* Character 51 (0x33): -   width 5 -   +-----+ -   |     | -   |***  | -   |   * | -   |   * | -   | **  | -   |   * | -   |   * | -   |***  | -   |     | -   |     | -   +-----+ -*/ -0x0000, -0xe000, -0x1000, -0x1000, -0x6000, -0x1000, -0x1000, -0xe000, -0x0000, -0x0000, - -/* Character 52 (0x34): -   width 5 -   +-----+ -   |     | -   |  *  | -   | **  | -   |* *  | -   |* *  | -   |**** | -   |  *  | -   |  *  | -   |     | -   |     | -   +-----+ -*/ -0x0000, -0x2000, -0x6000, -0xa000, -0xa000, -0xf000, -0x2000, -0x2000, -0x0000, -0x0000, - -/* Character 53 (0x35): -   width 5 -   +-----+ -   |     | -   |**** | -   |*    | -   |***  | -   |   * | -   |   * | -   |   * | -   |***  | -   |     | -   |     | -   +-----+ -*/ -0x0000, -0xf000, -0x8000, -0xe000, -0x1000, -0x1000, -0x1000, -0xe000, -0x0000, -0x0000, - -/* Character 54 (0x36): -   width 5 -   +-----+ -   |     | -   | **  | -   |*    | -   |***  | -   |*  * | -   |*  * | -   |*  * | -   | **  | -   |     | -   |     | -   +-----+ -*/ -0x0000, -0x6000, -0x8000, -0xe000, -0x9000, -0x9000, -0x9000, -0x6000, -0x0000, -0x0000, - -/* Character 55 (0x37): -   width 5 -   +-----+ -   |     | -   |**** | -   |   * | -   |   * | -   |  *  | -   |  *  | -   | *   | -   | *   | -   |     | -   |     | -   +-----+ -*/ -0x0000, -0xf000, -0x1000, -0x1000, -0x2000, -0x2000, -0x4000, -0x4000, -0x0000, -0x0000, - -/* Character 56 (0x38): -   width 5 -   +-----+ -   |     | -   | **  | -   |*  * | -   |*  * | -   | **  | -   |*  * | -   |*  * | -   | **  | -   |     | -   |     | -   +-----+ -*/ -0x0000, -0x6000, -0x9000, -0x9000, -0x6000, -0x9000, -0x9000, -0x6000, -0x0000, -0x0000, - -/* Character 57 (0x39): -   width 5 -   +-----+ -   |     | -   | **  | -   |*  * | -   |*  * | -   |*  * | -   | *** | -   |   * | -   | **  | -   |     | -   |     | -   +-----+ -*/ -0x0000, -0x6000, -0x9000, -0x9000, -0x9000, -0x7000, -0x1000, -0x6000, -0x0000, -0x0000, - -/* Character 58 (0x3a): -   width 2 -   +--+ -   |  | -   |  | -   |  | -   |* | -   |  | -   |* | -   |  | -   |  | -   |  | -   |  | -   +--+ -*/ -0x0000, -0x0000, -0x0000, -0x8000, -0x0000, -0x8000, -0x0000, -0x0000, -0x0000, -0x0000, - -/* Character 59 (0x3b): -   width 2 -   +--+ -   |  | -   |  | -   |  | -   |* | -   |  | -   |* | -   |* | -   |  | -   |  | -   |  | -   +--+ -*/ -0x0000, -0x0000, -0x0000, -0x8000, -0x0000, -0x8000, -0x8000, -0x0000, -0x0000, -0x0000, - -/* Character 60 (0x3c): -   width 5 -   +-----+ -   |     | -   |     | -   |   * | -   |  *  | -   | *   | -   |  *  | -   |   * | -   |     | -   |     | -   |     | -   +-----+ -*/ -0x0000, -0x0000, -0x1000, -0x2000, -0x4000, -0x2000, -0x1000, -0x0000, -0x0000, -0x0000, - -/* Character 61 (0x3d): -   width 5 -   +-----+ -   |     | -   |     | -   |     | -   |**** | -   |     | -   |**** | -   |     | -   |     | -   |     | -   |     | -   +-----+ -*/ -0x0000, -0x0000, -0x0000, -0xf000, -0x0000, -0xf000, -0x0000, -0x0000, -0x0000, -0x0000, - -/* Character 62 (0x3e): -   width 5 -   +-----+ -   |     | -   |     | -   |*    | -   | *   | -   |  *  | -   | *   | -   |*    | -   |     | -   |     | -   |     | -   +-----+ -*/ -0x0000, -0x0000, -0x8000, -0x4000, -0x2000, -0x4000, -0x8000, -0x0000, -0x0000, -0x0000, - -/* Character 63 (0x3f): -   width 5 -   +-----+ -   |     | -   |***  | -   |   * | -   |   * | -   |  *  | -   | *   | -   |     | -   | *   | -   |     | -   |     | -   +-----+ -*/ -0x0000, -0xe000, -0x1000, -0x1000, -0x2000, -0x4000, -0x0000, -0x4000, -0x0000, -0x0000, - -/* Character 64 (0x40): -   width 7 -   +-------+ -   |       | -   |  ***  | -   | *   * | -   |*  *** | -   |* *  * | -   |*  *** | -   | *     | -   |  **** | -   |       | -   |       | -   +-------+ -*/ -0x0000, -0x3800, -0x4400, -0x9c00, -0xa400, -0x9c00, -0x4000, -0x3c00, -0x0000, -0x0000, - -/* Character 65 (0x41): -   width 5 -   +-----+ -   |     | -   | **  | -   |*  * | -   |**** | -   |*  * | -   |*  * | -   |*  * | -   |*  * | -   |     | -   |     | -   +-----+ -*/ -0x0000, -0x6000, -0x9000, -0xf000, -0x9000, -0x9000, -0x9000, -0x9000, -0x0000, -0x0000, - -/* Character 66 (0x42): -   width 5 -   +-----+ -   |     | -   |***  | -   |*  * | -   |***  | -   |*  * | -   |*  * | -   |*  * | -   |***  | -   |     | -   |     | -   +-----+ -*/ -0x0000, -0xe000, -0x9000, -0xe000, -0x9000, -0x9000, -0x9000, -0xe000, -0x0000, -0x0000, - -/* Character 67 (0x43): -   width 5 -   +-----+ -   |     | -   | **  | -   |*  * | -   |*    | -   |*    | -   |*    | -   |*  * | -   | **  | -   |     | -   |     | -   +-----+ -*/ -0x0000, -0x6000, -0x9000, -0x8000, -0x8000, -0x8000, -0x9000, -0x6000, -0x0000, -0x0000, - -/* Character 68 (0x44): -   width 5 -   +-----+ -   |     | -   |***  | -   |*  * | -   |*  * | -   |*  * | -   |*  * | -   |*  * | -   |***  | -   |     | -   |     | -   +-----+ -*/ -0x0000, -0xe000, -0x9000, -0x9000, -0x9000, -0x9000, -0x9000, -0xe000, -0x0000, -0x0000, - -/* Character 69 (0x45): -   width 5 -   +-----+ -   |     | -   |**** | -   |*    | -   |**** | -   |*    | -   |*    | -   |*    | -   |**** | -   |     | -   |     | -   +-----+ -*/ -0x0000, -0xf000, -0x8000, -0xf000, -0x8000, -0x8000, -0x8000, -0xf000, -0x0000, -0x0000, - -/* Character 70 (0x46): -   width 5 -   +-----+ -   |     | -   |**** | -   |*    | -   |**** | -   |*    | -   |*    | -   |*    | -   |*    | -   |     | -   |     | -   +-----+ -*/ -0x0000, -0xf000, -0x8000, -0xf000, -0x8000, -0x8000, -0x8000, -0x8000, -0x0000, -0x0000, - -/* Character 71 (0x47): -   width 5 -   +-----+ -   |     | -   | **  | -   |*  * | -   |*    | -   |* ** | -   |*  * | -   |*  * | -   | **  | -   |     | -   |     | -   +-----+ -*/ -0x0000, -0x6000, -0x9000, -0x8000, -0xb000, -0x9000, -0x9000, -0x6000, -0x0000, -0x0000, - -/* Character 72 (0x48): -   width 5 -   +-----+ -   |     | -   |*  * | -   |*  * | -   |**** | -   |*  * | -   |*  * | -   |*  * | -   |*  * | -   |     | -   |     | -   +-----+ -*/ -0x0000, -0x9000, -0x9000, -0xf000, -0x9000, -0x9000, -0x9000, -0x9000, -0x0000, -0x0000, - -/* Character 73 (0x49): -   width 2 -   +--+ -   |  | -   |* | -   |* | -   |* | -   |* | -   |* | -   |* | -   |* | -   |  | -   |  | -   +--+ -*/ -0x0000, -0x8000, -0x8000, -0x8000, -0x8000, -0x8000, -0x8000, -0x8000, -0x0000, -0x0000, - -/* Character 74 (0x4a): -   width 5 -   +-----+ -   |     | -   |  ** | -   |   * | -   |   * | -   |*  * | -   |*  * | -   |*  * | -   | **  | -   |     | -   |     | -   +-----+ -*/ -0x0000, -0x3000, -0x1000, -0x1000, -0x9000, -0x9000, -0x9000, -0x6000, -0x0000, -0x0000, - -/* Character 75 (0x4b): -   width 5 -   +-----+ -   |     | -   |*  * | -   |*  * | -   |* *  | -   |**   | -   |* *  | -   |*  * | -   |*  * | -   |     | -   |     | -   +-----+ -*/ -0x0000, -0x9000, -0x9000, -0xa000, -0xc000, -0xa000, -0x9000, -0x9000, -0x0000, -0x0000, - -/* Character 76 (0x4c): -   width 5 -   +-----+ -   |     | -   |*    | -   |*    | -   |*    | -   |*    | -   |*    | -   |*    | -   | *** | -   |     | -   |     | -   +-----+ -*/ -0x0000, -0x8000, -0x8000, -0x8000, -0x8000, -0x8000, -0x8000, -0x7000, -0x0000, -0x0000, - -/* Character 77 (0x4d): -   width 6 -   +------+ -   |      | -   |*   * | -   |** ** | -   |* * * | -   |*   * | -   |*   * | -   |*   * | -   |*   * | -   |      | -   |      | -   +------+ -*/ -0x0000, -0x8800, -0xd800, -0xa800, -0x8800, -0x8800, -0x8800, -0x8800, -0x0000, -0x0000, - -/* Character 78 (0x4e): -   width 5 -   +-----+ -   |     | -   |*  * | -   |** * | -   |* ** | -   |*  * | -   |*  * | -   |*  * | -   |*  * | -   |     | -   |     | -   +-----+ -*/ -0x0000, -0x9000, -0xd000, -0xb000, -0x9000, -0x9000, -0x9000, -0x9000, -0x0000, -0x0000, - -/* Character 79 (0x4f): -   width 5 -   +-----+ -   |     | -   | **  | -   |*  * | -   |*  * | -   |*  * | -   |*  * | -   |*  * | -   | **  | -   |     | -   |     | -   +-----+ -*/ -0x0000, -0x6000, -0x9000, -0x9000, -0x9000, -0x9000, -0x9000, -0x6000, -0x0000, -0x0000, - -/* Character 80 (0x50): -   width 5 -   +-----+ -   |     | -   |***  | -   |*  * | -   |*  * | -   |***  | -   |*    | -   |*    | -   |*    | -   |     | -   |     | -   +-----+ -*/ -0x0000, -0xe000, -0x9000, -0x9000, -0xe000, -0x8000, -0x8000, -0x8000, -0x0000, -0x0000, - -/* Character 81 (0x51): -   width 5 -   +-----+ -   |     | -   | **  | -   |*  * | -   |*  * | -   |*  * | -   |*  * | -   |*  * | -   | **  | -   |   * | -   |     | -   +-----+ -*/ -0x0000, -0x6000, -0x9000, -0x9000, -0x9000, -0x9000, -0x9000, -0x6000, -0x1000, -0x0000, - -/* Character 82 (0x52): -   width 5 -   +-----+ -   |     | -   |***  | -   |*  * | -   |*  * | -   |***  | -   |*  * | -   |*  * | -   |*  * | -   |     | -   |     | -   +-----+ -*/ -0x0000, -0xe000, -0x9000, -0x9000, -0xe000, -0x9000, -0x9000, -0x9000, -0x0000, -0x0000, - -/* Character 83 (0x53): -   width 5 -   +-----+ -   |     | -   | **  | -   |*  * | -   |*    | -   | **  | -   |   * | -   |*  * | -   | **  | -   |     | -   |     | -   +-----+ -*/ -0x0000, -0x6000, -0x9000, -0x8000, -0x6000, -0x1000, -0x9000, -0x6000, -0x0000, -0x0000, - -/* Character 84 (0x54): -   width 6 -   +------+ -   |      | -   |***** | -   |  *   | -   |  *   | -   |  *   | -   |  *   | -   |  *   | -   |  *   | -   |      | -   |      | -   +------+ -*/ -0x0000, -0xf800, -0x2000, -0x2000, -0x2000, -0x2000, -0x2000, -0x2000, -0x0000, -0x0000, - -/* Character 85 (0x55): -   width 5 -   +-----+ -   |     | -   |*  * | -   |*  * | -   |*  * | -   |*  * | -   |*  * | -   |*  * | -   | **  | -   |     | -   |     | -   +-----+ -*/ -0x0000, -0x9000, -0x9000, -0x9000, -0x9000, -0x9000, -0x9000, -0x6000, -0x0000, -0x0000, - -/* Character 86 (0x56): -   width 6 -   +------+ -   |      | -   |*   * | -   |*   * | -   |*   * | -   | * *  | -   | * *  | -   |  *   | -   |  *   | -   |      | -   |      | -   +------+ -*/ -0x0000, -0x8800, -0x8800, -0x8800, -0x5000, -0x5000, -0x2000, -0x2000, -0x0000, -0x0000, - -/* Character 87 (0x57): -   width 6 -   +------+ -   |      | -   |*   * | -   |*   * | -   |*   * | -   |* * * | -   |* * * | -   | * *  | -   | * *  | -   |      | -   |      | -   +------+ -*/ -0x0000, -0x8800, -0x8800, -0x8800, -0xa800, -0xa800, -0x5000, -0x5000, -0x0000, -0x0000, - -/* Character 88 (0x58): -   width 5 -   +-----+ -   |     | -   |*  * | -   |*  * | -   | **  | -   |*  * | -   |*  * | -   |*  * | -   |*  * | -   |     | -   |     | -   +-----+ -*/ -0x0000, -0x9000, -0x9000, -0x6000, -0x9000, -0x9000, -0x9000, -0x9000, -0x0000, -0x0000, - -/* Character 89 (0x59): -   width 6 -   +------+ -   |      | -   |*   * | -   |*   * | -   | * *  | -   |  *   | -   |  *   | -   |  *   | -   |  *   | -   |      | -   |      | -   +------+ -*/ -0x0000, -0x8800, -0x8800, -0x5000, -0x2000, -0x2000, -0x2000, -0x2000, -0x0000, -0x0000, - -/* Character 90 (0x5a): -   width 5 -   +-----+ -   |     | -   |**** | -   |   * | -   |  *  | -   | *   | -   |*    | -   |*    | -   |**** | -   |     | -   |     | -   +-----+ -*/ -0x0000, -0xf000, -0x1000, -0x2000, -0x4000, -0x8000, -0x8000, -0xf000, -0x0000, -0x0000, - -/* Character 91 (0x5b): -   width 4 -   +----+ -   |    | -   | ** | -   | *  | -   | *  | -   | *  | -   | *  | -   | *  | -   | ** | -   |    | -   |    | -   +----+ -*/ -0x0000, -0x6000, -0x4000, -0x4000, -0x4000, -0x4000, -0x4000, -0x6000, -0x0000, -0x0000, - -/* Character 92 (0x5c): -   width 5 -   +-----+ -   |     | -   |*    | -   |*    | -   | *   | -   | *   | -   |  *  | -   |  *  | -   |   * | -   |   * | -   |     | -   +-----+ -*/ -0x0000, -0x8000, -0x8000, -0x4000, -0x4000, -0x2000, -0x2000, -0x1000, -0x1000, -0x0000, - -/* Character 93 (0x5d): -   width 4 -   +----+ -   |    | -   |**  | -   | *  | -   | *  | -   | *  | -   | *  | -   | *  | -   |**  | -   |    | -   |    | -   +----+ -*/ -0x0000, -0xc000, -0x4000, -0x4000, -0x4000, -0x4000, -0x4000, -0xc000, -0x0000, -0x0000, - -/* Character 94 (0x5e): -   width 4 -   +----+ -   |    | -   | *  | -   |* * | -   |    | -   |    | -   |    | -   |    | -   |    | -   |    | -   |    | -   +----+ -*/ -0x0000, -0x4000, -0xa000, -0x0000, -0x0000, -0x0000, -0x0000, -0x0000, -0x0000, -0x0000, - -/* Character 95 (0x5f): -   width 5 -   +-----+ -   |     | -   |     | -   |     | -   |     | -   |     | -   |     | -   |     | -   |**** | -   |     | -   |     | -   +-----+ -*/ -0x0000, -0x0000, -0x0000, -0x0000, -0x0000, -0x0000, -0x0000, -0xf000, -0x0000, -0x0000, - -/* Character 96 (0x60): -   width 3 -   +---+ -   |   | -   |*  | -   | * | -   |   | -   |   | -   |   | -   |   | -   |   | -   |   | -   |   | -   +---+ -*/ -0x0000, -0x8000, -0x4000, -0x0000, -0x0000, -0x0000, -0x0000, -0x0000, -0x0000, -0x0000, - -/* Character 97 (0x61): -   width 5 -   +-----+ -   |     | -   |     | -   |     | -   | *** | -   |*  * | -   |*  * | -   |*  * | -   | *** | -   |     | -   |     | -   +-----+ -*/ -0x0000, -0x0000, -0x0000, -0x7000, -0x9000, -0x9000, -0x9000, -0x7000, -0x0000, -0x0000, - -/* Character 98 (0x62): -   width 5 -   +-----+ -   |     | -   |*    | -   |*    | -   |***  | -   |*  * | -   |*  * | -   |*  * | -   |***  | -   |     | -   |     | -   +-----+ -*/ -0x0000, -0x8000, -0x8000, -0xe000, -0x9000, -0x9000, -0x9000, -0xe000, -0x0000, -0x0000, - -/* Character 99 (0x63): -   width 4 -   +----+ -   |    | -   |    | -   |    | -   | ** | -   |*   | -   |*   | -   |*   | -   | ** | -   |    | -   |    | -   +----+ -*/ -0x0000, -0x0000, -0x0000, -0x6000, -0x8000, -0x8000, -0x8000, -0x6000, -0x0000, -0x0000, - -/* Character 100 (0x64): -   width 5 -   +-----+ -   |     | -   |   * | -   |   * | -   | *** | -   |*  * | -   |*  * | -   |*  * | -   | *** | -   |     | -   |     | -   +-----+ -*/ -0x0000, -0x1000, -0x1000, -0x7000, -0x9000, -0x9000, -0x9000, -0x7000, -0x0000, -0x0000, - -/* Character 101 (0x65): -   width 5 -   +-----+ -   |     | -   |     | -   |     | -   | **  | -   |*  * | -   |**** | -   |*    | -   | **  | -   |     | -   |     | -   +-----+ -*/ -0x0000, -0x0000, -0x0000, -0x6000, -0x9000, -0xf000, -0x8000, -0x6000, -0x0000, -0x0000, - -/* Character 102 (0x66): -   width 5 -   +-----+ -   |     | -   |  ** | -   | *   | -   |**** | -   | *   | -   | *   | -   | *   | -   | *   | -   |     | -   |     | -   +-----+ -*/ -0x0000, -0x3000, -0x4000, -0xf000, -0x4000, -0x4000, -0x4000, -0x4000, -0x0000, -0x0000, - -/* Character 103 (0x67): -   width 5 -   +-----+ -   |     | -   |     | -   |     | -   | *** | -   |*  * | -   |*  * | -   |*  * | -   | *** | -   |   * | -   | **  | -   +-----+ -*/ -0x0000, -0x0000, -0x0000, -0x7000, -0x9000, -0x9000, -0x9000, -0x7000, -0x1000, -0x6000, - -/* Character 104 (0x68): -   width 5 -   +-----+ -   |     | -   |*    | -   |*    | -   |***  | -   |*  * | -   |*  * | -   |*  * | -   |*  * | -   |     | -   |     | -   +-----+ -*/ -0x0000, -0x8000, -0x8000, -0xe000, -0x9000, -0x9000, -0x9000, -0x9000, -0x0000, -0x0000, - -/* Character 105 (0x69): -   width 2 -   +--+ -   |  | -   |* | -   |  | -   |* | -   |* | -   |* | -   |* | -   |* | -   |  | -   |  | -   +--+ -*/ -0x0000, -0x8000, -0x0000, -0x8000, -0x8000, -0x8000, -0x8000, -0x8000, -0x0000, -0x0000, - -/* Character 106 (0x6a): -   width 4 -   +----+ -   |    | -   |  * | -   |    | -   |  * | -   |  * | -   |  * | -   |  * | -   |  * | -   |  * | -   |**  | -   +----+ -*/ -0x0000, -0x2000, -0x0000, -0x2000, -0x2000, -0x2000, -0x2000, -0x2000, -0x2000, -0xc000, - -/* Character 107 (0x6b): -   width 5 -   +-----+ -   |     | -   |*    | -   |*    | -   |*  * | -   |* *  | -   |**   | -   |* *  | -   |*  * | -   |     | -   |     | -   +-----+ -*/ -0x0000, -0x8000, -0x8000, -0x9000, -0xa000, -0xc000, -0xa000, -0x9000, -0x0000, -0x0000, - -/* Character 108 (0x6c): -   width 2 -   +--+ -   |  | -   |* | -   |* | -   |* | -   |* | -   |* | -   |* | -   |* | -   |  | -   |  | -   +--+ -*/ -0x0000, -0x8000, -0x8000, -0x8000, -0x8000, -0x8000, -0x8000, -0x8000, -0x0000, -0x0000, - -/* Character 109 (0x6d): -   width 6 -   +------+ -   |      | -   |      | -   |      | -   |****  | -   |* * * | -   |* * * | -   |* * * | -   |* * * | -   |      | -   |      | -   +------+ -*/ -0x0000, -0x0000, -0x0000, -0xf000, -0xa800, -0xa800, -0xa800, -0xa800, -0x0000, -0x0000, - -/* Character 110 (0x6e): -   width 5 -   +-----+ -   |     | -   |     | -   |     | -   |***  | -   |*  * | -   |*  * | -   |*  * | -   |*  * | -   |     | -   |     | -   +-----+ -*/ -0x0000, -0x0000, -0x0000, -0xe000, -0x9000, -0x9000, -0x9000, -0x9000, -0x0000, -0x0000, - -/* Character 111 (0x6f): -   width 5 -   +-----+ -   |     | -   |     | -   |     | -   | **  | -   |*  * | -   |*  * | -   |*  * | -   | **  | -   |     | -   |     | -   +-----+ -*/ -0x0000, -0x0000, -0x0000, -0x6000, -0x9000, -0x9000, -0x9000, -0x6000, -0x0000, -0x0000, - -/* Character 112 (0x70): -   width 5 -   +-----+ -   |     | -   |     | -   |     | -   |***  | -   |*  * | -   |*  * | -   |*  * | -   |***  | -   |*    | -   |*    | -   +-----+ -*/ -0x0000, -0x0000, -0x0000, -0xe000, -0x9000, -0x9000, -0x9000, -0xe000, -0x8000, -0x8000, - -/* Character 113 (0x71): -   width 5 -   +-----+ -   |     | -   |     | -   |     | -   | *** | -   |*  * | -   |*  * | -   |*  * | -   | *** | -   |   * | -   |   * | -   +-----+ -*/ -0x0000, -0x0000, -0x0000, -0x7000, -0x9000, -0x9000, -0x9000, -0x7000, -0x1000, -0x1000, - -/* Character 114 (0x72): -   width 5 -   +-----+ -   |     | -   |     | -   |     | -   |* ** | -   |**   | -   |*    | -   |*    | -   |*    | -   |     | -   |     | -   +-----+ -*/ -0x0000, -0x0000, -0x0000, -0xb000, -0xc000, -0x8000, -0x8000, -0x8000, -0x0000, -0x0000, - -/* Character 115 (0x73): -   width 5 -   +-----+ -   |     | -   |     | -   |     | -   | *** | -   |*    | -   | **  | -   |   * | -   |***  | -   |     | -   |     | -   +-----+ -*/ -0x0000, -0x0000, -0x0000, -0x7000, -0x8000, -0x6000, -0x1000, -0xe000, -0x0000, -0x0000, - -/* Character 116 (0x74): -   width 4 -   +----+ -   |    | -   | *  | -   | *  | -   |*** | -   | *  | -   | *  | -   | *  | -   |  * | -   |    | -   |    | -   +----+ -*/ -0x0000, -0x4000, -0x4000, -0xe000, -0x4000, -0x4000, -0x4000, -0x2000, -0x0000, -0x0000, - -/* Character 117 (0x75): -   width 5 -   +-----+ -   |     | -   |     | -   |     | -   |*  * | -   |*  * | -   |*  * | -   |*  * | -   | *** | -   |     | -   |     | -   +-----+ -*/ -0x0000, -0x0000, -0x0000, -0x9000, -0x9000, -0x9000, -0x9000, -0x7000, -0x0000, -0x0000, - -/* Character 118 (0x76): -   width 6 -   +------+ -   |      | -   |      | -   |      | -   |*   * | -   |*   * | -   | * *  | -   | * *  | -   |  *   | -   |      | -   |      | -   +------+ -*/ -0x0000, -0x0000, -0x0000, -0x8800, -0x8800, -0x5000, -0x5000, -0x2000, -0x0000, -0x0000, - -/* Character 119 (0x77): -   width 6 -   +------+ -   |      | -   |      | -   |      | -   |* * * | -   |* * * | -   |* * * | -   | * *  | -   | * *  | -   |      | -   |      | -   +------+ -*/ -0x0000, -0x0000, -0x0000, -0xa800, -0xa800, -0xa800, -0x5000, -0x5000, -0x0000, -0x0000, - -/* Character 120 (0x78): -   width 5 -   +-----+ -   |     | -   |     | -   |     | -   |*  * | -   |*  * | -   | **  | -   |*  * | -   |*  * | -   |     | -   |     | -   +-----+ -*/ -0x0000, -0x0000, -0x0000, -0x9000, -0x9000, -0x6000, -0x9000, -0x9000, -0x0000, -0x0000, - -/* Character 121 (0x79): -   width 5 -   +-----+ -   |     | -   |     | -   |     | -   |*  * | -   |*  * | -   |*  * | -   |*  * | -   | *** | -   |   * | -   | **  | -   +-----+ -*/ -0x0000, -0x0000, -0x0000, -0x9000, -0x9000, -0x9000, -0x9000, -0x7000, -0x1000, -0x6000, - -/* Character 122 (0x7a): -   width 5 -   +-----+ -   |     | -   |     | -   |     | -   |**** | -   |   * | -   | **  | -   |*    | -   |**** | -   |     | -   |     | -   +-----+ -*/ -0x0000, -0x0000, -0x0000, -0xf000, -0x1000, -0x6000, -0x8000, -0xf000, -0x0000, -0x0000, - -/* Character 123 (0x7b): -   width 5 -   +-----+ -   |   * | -   |  *  | -   |  *  | -   |  *  | -   | *   | -   |  *  | -   |  *  | -   |  *  | -   |   * | -   |     | -   +-----+ -*/ -0x1000, -0x2000, -0x2000, -0x2000, -0x4000, -0x2000, -0x2000, -0x2000, -0x1000, -0x0000, - -/* Character 124 (0x7c): -   width 4 -   +----+ -   |    | -   | *  | -   | *  | -   | *  | -   | *  | -   | *  | -   | *  | -   | *  | -   | *  | -   |    | -   +----+ -*/ -0x0000, -0x4000, -0x4000, -0x4000, -0x4000, -0x4000, -0x4000, -0x4000, -0x4000, -0x0000, - -/* Character 125 (0x7d): -   width 5 -   +-----+ -   |*    | -   | *   | -   | *   | -   | *   | -   |  *  | -   | *   | -   | *   | -   | *   | -   |*    | -   |     | -   +-----+ -*/ -0x8000, -0x4000, -0x4000, -0x4000, -0x2000, -0x4000, -0x4000, -0x4000, -0x8000, -0x0000, - -/* Character 126 (0x7e): -   width 5 -   +-----+ -   |     | -   | * * | -   |* *  | -   |     | -   |     | -   |     | -   |     | -   |     | -   |     | -   |     | -   +-----+ -*/ -0x0000, -0x5000, -0xa000, -0x0000, -0x0000, -0x0000, -0x0000, -0x0000, -0x0000, -0x0000, -}; - -/* Character width data. */ -static const unsigned char _sysfont_width[] = { -	3,	/* (0x21) */ -	4,	/* (0x22) */ -	6,	/* (0x23) */ -	6,	/* (0x24) */ -	9,	/* (0x25) */ -	5,	/* (0x26) */ -	2,	/* (0x27) */ -	5,	/* (0x28) */ -	5,	/* (0x29) */ -	6,	/* (0x2a) */ -	6,	/* (0x2b) */ -	3,	/* (0x2c) */ -	5,	/* (0x2d) */ -	2,	/* (0x2e) */ -	5,	/* (0x2f) */ -	5,	/* (0x30) */ -	3,	/* (0x31) */ -	5,	/* (0x32) */ -	5,	/* (0x33) */ -	5,	/* (0x34) */ -	5,	/* (0x35) */ -	5,	/* (0x36) */ -	5,	/* (0x37) */ -	5,	/* (0x38) */ -	5,	/* (0x39) */ -	2,	/* (0x3a) */ -	2,	/* (0x3b) */ -	5,	/* (0x3c) */ -	5,	/* (0x3d) */ -	5,	/* (0x3e) */ -	5,	/* (0x3f) */ -	7,	/* (0x40) */ -	5,	/* (0x41) */ -	5,	/* (0x42) */ -	5,	/* (0x43) */ -	5,	/* (0x44) */ -	5,	/* (0x45) */ -	5,	/* (0x46) */ -	5,	/* (0x47) */ -	5,	/* (0x48) */ -	2,	/* (0x49) */ -	5,	/* (0x4a) */ -	5,	/* (0x4b) */ -	5,	/* (0x4c) */ -	6,	/* (0x4d) */ -	5,	/* (0x4e) */ -	5,	/* (0x4f) */ -	5,	/* (0x50) */ -	5,	/* (0x51) */ -	5,	/* (0x52) */ -	5,	/* (0x53) */ -	6,	/* (0x54) */ -	5,	/* (0x55) */ -	6,	/* (0x56) */ -	6,	/* (0x57) */ -	5,	/* (0x58) */ -	6,	/* (0x59) */ -	5,	/* (0x5a) */ -	4,	/* (0x5b) */ -	5,	/* (0x5c) */ -	4,	/* (0x5d) */ -	4,	/* (0x5e) */ -	5,	/* (0x5f) */ -	3,	/* (0x60) */ -	5,	/* (0x61) */ -	5,	/* (0x62) */ -	4,	/* (0x63) */ -	5,	/* (0x64) */ -	5,	/* (0x65) */ -	5,	/* (0x66) */ -	5,	/* (0x67) */ -	5,	/* (0x68) */ -	2,	/* (0x69) */ -	4,	/* (0x6a) */ -	5,	/* (0x6b) */ -	2,	/* (0x6c) */ -	6,	/* (0x6d) */ -	5,	/* (0x6e) */ -	5,	/* (0x6f) */ -	5,	/* (0x70) */ -	5,	/* (0x71) */ -	5,	/* (0x72) */ -	5,	/* (0x73) */ -	4,	/* (0x74) */ -	5,	/* (0x75) */ -	6,	/* (0x76) */ -	6,	/* (0x77) */ -	5,	/* (0x78) */ -	5,	/* (0x79) */ -	5,	/* (0x7a) */ -	5,	/* (0x7b) */ -	4,	/* (0x7c) */ -	5,	/* (0x7d) */ -	5,	/* (0x7e) */ -}; +int NewFont::getCharWidth(byte chr) const { +	// If no width table is specified, return the maximum width +	if (!width) +		return maxwidth; +	// If this character is not included in the font, use the default char. +	if (chr < firstchar || firstchar + size < chr) { +		if (chr == ' ') +			return maxwidth / 2; +		chr = defaultchar; +	} +	return width[chr - firstchar]; +} + +void NewFont::drawChar(const Surface *dst, byte chr, int x, int y, uint32 color) const { +	assert(dst != 0); +	byte *ptr = (byte *)dst->pixels + x * dst->bytesPerPixel + y * dst->pitch; + +	assert(bits != 0 && maxwidth <= 16); +	assert(dst->bytesPerPixel == 1 || dst->bytesPerPixel == 2); + +	// If this character is not included in the font, use the default char. +	if (chr < firstchar || chr >= firstchar + size) { +		if (chr == ' ') +			return; +		chr = defaultchar; +	} + +	const int w = getCharWidth(chr); +	chr -= firstchar; +	const bitmap_t *tmp = bits + (offset ? offset[chr] : (chr * height)); + +	for (y = 0; y < height; y++) { +		const bitmap_t buffer = *tmp++; +		bitmap_t mask = 0x8000; +		for (x = 0; x < w; x++) { +			if ((buffer & mask) != 0) { +				if (dst->bytesPerPixel == 1) +					ptr[x] = color; +				else if (dst->bytesPerPixel == 2) +					((uint16 *)ptr)[x] = color; +			} +			mask >>= 1; +		} +		ptr += dst->pitch; +	} +} + + +int Font::getStringWidth(const Common::String &str) const { +	int space = 0; + +	for (uint i = 0; i < str.size(); ++i) +		space += getCharWidth(str[i]); +	return space; +} + +void Font::drawString(const Surface *dst, const Common::String &s, int x, int y, int w, uint32 color, TextAlignment align, int deltax, bool useEllipsis) const { +	assert(dst != 0); +	const int leftX = x, rightX = x + w; +	uint i; +	int width = getStringWidth(s); +	Common::String str; +	 +	if (useEllipsis && width > w) { +		// String is too wide. So we shorten it "intellegently", by replacing +		// parts of it by an ellipsis ("..."). There are three possibilities +		// for this: replace the start, the end, or the middle of the string. +		// What is best really depends on the context; but unless we want to +		// make this configurable, replacing the middle probably is a good +		// compromise. +		const int ellipsisWidth = getStringWidth("..."); +		 +		// SLOW algorithm to remove enough of the middle. But it is good enough +		// for now. +		const int halfWidth = (w - ellipsisWidth) / 2; +		int w2 = 0; +		 +		for (i = 0; i < s.size(); ++i) { +			int charWidth = getCharWidth(s[i]); +			if (w2 + charWidth > halfWidth) +				break; +			w2 += charWidth; +			str += s[i]; +		} +		// At this point we know that the first 'i' chars are together 'w2' +		// pixels wide. We took the first i-1, and add "..." to them. +		str += "..."; +		 +		// The original string is width wide. Of those we already skipped past +		// w2 pixels, which means (width - w2) remain. +		// The new str is (w2+ellipsisWidth) wide, so we can accomodate about +		// (w - (w2+ellipsisWidth)) more pixels. +		// Thus we skip ((width - w2) - (w - (w2+ellipsisWidth))) = +		// (width + ellipsisWidth - w) +		int skip = width + ellipsisWidth - w; +		for (; i < s.size() && skip > 0; ++i) { +			skip -= getCharWidth(s[i]); +		} + +		// Append the remaining chars, if any +		for (; i < s.size(); ++i) { +			str += s[i]; +		} + +		width = getStringWidth(str); + +	} else { +		str = s; +	} + +	if (align == kTextAlignCenter) +		x = x + (w - width - 1)/2; +	else if (align == kTextAlignRight) +		x = x + w - width; +	x += deltax; + +	for (i = 0; i < str.size(); ++i) { +		w = getCharWidth(str[i]); +		if (x+w > rightX) +			break; +		if (x >= leftX) +			drawChar(dst, str[i], x, y, color); +		x += w; +	} +} -/* Exported structure definition. */ -const Font g_sysfont = { -	"04b-16b-10", -	9, -	10, -	8, -	33, -	94, -	_font_bits, -	0,  /* no encode table*/ -	_sysfont_width, -	33, -	sizeof(_font_bits)/sizeof(bitmap_t), -};  } // End of namespace GUI diff --git a/gui/font.h b/gui/font.h index 72ed03983d..d5bfedbe2d 100644 --- a/gui/font.h +++ b/gui/font.h @@ -21,13 +21,62 @@  #ifndef FONT_H  #define FONT_H +#include "common/str.h" +  namespace GUI { +// Text alignment modes for drawString() +enum TextAlignment { +	kTextAlignLeft, +	kTextAlignCenter, +	kTextAlignRight +}; + +/** + * An arbitrary graphics surface, which can be the target (or source) of blit + * operations, font rendering, etc. + * @todo This shouldn't be in font.h, but rather in e.g. graphics/surface.h + */ +struct Surface { +	void *pixels; +	uint16 w; +	uint16 h; +	uint16 pitch; +	uint8 bytesPerPixel; +}; + +class Font { +public: +	virtual int getFontHeight() const = 0; +	virtual int getMaxCharWidth() const = 0; + +	virtual int getCharWidth(byte chr) const = 0; +	virtual void drawChar(const Surface *dst, byte chr, int x, int y, uint32 color) const = 0; + +	void drawString(const Surface *dst, const Common::String &str, int x, int y, int w, uint32 color, TextAlignment align = kTextAlignLeft, int deltax = 0, bool useEllipsis = true) const; +	int getStringWidth(const Common::String &str) const; +}; + + +class ScummFont : public Font { +public: +	virtual int getFontHeight() const { return 8; } +	virtual int getMaxCharWidth() const { return 8; }; + +	virtual int getCharWidth(byte chr) const; +	virtual void drawChar(const Surface *dst, byte chr, int x, int y, uint32 color) const; +}; + +extern const ScummFont g_scummfont; + + +  typedef unsigned short bitmap_t; /* bitmap image unit size*/  /* builtin C-based proportional/fixed font structure */  /* based on The Microwindows Project http://microwindows.org */ -struct Font { +class NewFont : public Font { +protected:  	const char *	name;		/* font name*/  	int		maxwidth;	/* max width in pixels*/  	int 	height;		/* height in pixels*/ @@ -39,9 +88,18 @@ struct Font {  	const unsigned char* width;	/* character widths or NULL if fixed*/  	int		defaultchar;	/* default char (not glyph index)*/  	long	bits_size;	/* # words of bitmap_t bits*/ + +public: +	NewFont(); +	 +	virtual int getFontHeight() const { return height; } +	virtual int getMaxCharWidth() const { return maxwidth; }; + +	virtual int getCharWidth(byte chr) const; +	virtual void drawChar(const Surface *dst, byte chr, int x, int y, uint32 color) const;  }; -extern const Font g_sysfont; +extern const NewFont g_sysfont;  } // End of namespace GUI diff --git a/gui/module.mk b/gui/module.mk index 018c0fd651..6a7b6b6805 100644 --- a/gui/module.mk +++ b/gui/module.mk @@ -7,7 +7,6 @@ MODULE_OBJS := \  	gui/console.o \  	gui/dialog.o \  	gui/EditTextWidget.o \ -	gui/font.o \  	gui/launcher.o \  	gui/ListWidget.o \  	gui/message.o \ @@ -16,7 +15,15 @@ MODULE_OBJS := \  	gui/PopUpWidget.o \  	gui/ScrollBarWidget.o \  	gui/TabWidget.o \ -	gui/widget.o \ +	gui/widget.o + +# TODO: Move the fonts to a separate dir? +MODULE_OBJS += \ +	gui/font.o \ +	gui/scummfont.o \ +	gui/newfont.o + +  MODULE_DIRS += \  	gui diff --git a/gui/newfont.cpp b/gui/newfont.cpp new file mode 100644 index 0000000000..1654db6448 --- /dev/null +++ b/gui/newfont.cpp @@ -0,0 +1,2600 @@ +/* Generated by convbdf on Thu Nov 20 00:15:51 2003. */ +#include "common/stdafx.h" +#include "gui/font.h" + +/* Font information: +   name: 04b-16b-10 +   facename: 04b-16b-10 +   w x h: 9x10 +   size: 94 +   ascent: 8 +   descent: 2 +   first char: 33 (0x21) +   last char: 126 (0x7e) +   default char: 33 (0x21) +   proportional: yes +    +*/ + +namespace GUI { + +/* Font character bitmap data. */ +static const bitmap_t _font_bits[] = { + +/* Character 33 (0x21): +   width 3 +   +---+ +   |   | +   | * | +   | * | +   | * | +   | * | +   | * | +   |   | +   | * | +   |   | +   |   | +   +---+ +*/ +0x0000, +0x4000, +0x4000, +0x4000, +0x4000, +0x4000, +0x0000, +0x4000, +0x0000, +0x0000, + +/* Character 34 (0x22): +   width 4 +   +----+ +   |    | +   |* * | +   |* * | +   |    | +   |    | +   |    | +   |    | +   |    | +   |    | +   |    | +   +----+ +*/ +0x0000, +0xa000, +0xa000, +0x0000, +0x0000, +0x0000, +0x0000, +0x0000, +0x0000, +0x0000, + +/* Character 35 (0x23): +   width 6 +   +------+ +   |      | +   |      | +   | * *  | +   |***** | +   | * *  | +   |***** | +   | * *  | +   |      | +   |      | +   |      | +   +------+ +*/ +0x0000, +0x0000, +0x5000, +0xf800, +0x5000, +0xf800, +0x5000, +0x0000, +0x0000, +0x0000, + +/* Character 36 (0x24): +   width 6 +   +------+ +   |  *   | +   | ***  | +   |* * * | +   |* *   | +   | ***  | +   |  * * | +   |* * * | +   | ***  | +   |  *   | +   |      | +   +------+ +*/ +0x2000, +0x7000, +0xa800, +0xa000, +0x7000, +0x2800, +0xa800, +0x7000, +0x2000, +0x0000, + +/* Character 37 (0x25): +   width 9 +   +---------+ +   |         | +   | *   *   | +   |* *  *   | +   |* * *    | +   | *  *    | +   |   *  *  | +   |   * * * | +   |  *  * * | +   |  *   *  | +   |         | +   +---------+ +*/ +0x0000, +0x4400, +0xa400, +0xa800, +0x4800, +0x1200, +0x1500, +0x2500, +0x2200, +0x0000, + +/* Character 38 (0x26): +   width 5 +   +-----+ +   |     | +   | **  | +   |*    | +   |* *  | +   | *** | +   |* *  | +   |* *  | +   | * * | +   |     | +   |     | +   +-----+ +*/ +0x0000, +0x6000, +0x8000, +0xa000, +0x7000, +0xa000, +0xa000, +0x5000, +0x0000, +0x0000, + +/* Character 39 (0x27): +   width 2 +   +--+ +   |  | +   |* | +   |* | +   |  | +   |  | +   |  | +   |  | +   |  | +   |  | +   |  | +   +--+ +*/ +0x0000, +0x8000, +0x8000, +0x0000, +0x0000, +0x0000, +0x0000, +0x0000, +0x0000, +0x0000, + +/* Character 40 (0x28): +   width 5 +   +-----+ +   |     | +   |   * | +   |  *  | +   | *   | +   | *   | +   | *   | +   |  *  | +   |   * | +   |     | +   |     | +   +-----+ +*/ +0x0000, +0x1000, +0x2000, +0x4000, +0x4000, +0x4000, +0x2000, +0x1000, +0x0000, +0x0000, + +/* Character 41 (0x29): +   width 5 +   +-----+ +   |     | +   |*    | +   | *   | +   |  *  | +   |  *  | +   |  *  | +   | *   | +   |*    | +   |     | +   |     | +   +-----+ +*/ +0x0000, +0x8000, +0x4000, +0x2000, +0x2000, +0x2000, +0x4000, +0x8000, +0x0000, +0x0000, + +/* Character 42 (0x2a): +   width 6 +   +------+ +   |      | +   |      | +   |  *   | +   |* * * | +   | ***  | +   |* * * | +   |  *   | +   |      | +   |      | +   |      | +   +------+ +*/ +0x0000, +0x0000, +0x2000, +0xa800, +0x7000, +0xa800, +0x2000, +0x0000, +0x0000, +0x0000, + +/* Character 43 (0x2b): +   width 6 +   +------+ +   |      | +   |      | +   |  *   | +   |  *   | +   |***** | +   |  *   | +   |  *   | +   |      | +   |      | +   |      | +   +------+ +*/ +0x0000, +0x0000, +0x2000, +0x2000, +0xf800, +0x2000, +0x2000, +0x0000, +0x0000, +0x0000, + +/* Character 44 (0x2c): +   width 3 +   +---+ +   |   | +   |   | +   |   | +   |   | +   |   | +   | * | +   |   | +   | * | +   |*  | +   |   | +   +---+ +*/ +0x0000, +0x0000, +0x0000, +0x0000, +0x0000, +0x4000, +0x0000, +0x4000, +0x8000, +0x0000, + +/* Character 45 (0x2d): +   width 5 +   +-----+ +   |     | +   |     | +   |     | +   |     | +   |**** | +   |     | +   |     | +   |     | +   |     | +   |     | +   +-----+ +*/ +0x0000, +0x0000, +0x0000, +0x0000, +0xf000, +0x0000, +0x0000, +0x0000, +0x0000, +0x0000, + +/* Character 46 (0x2e): +   width 2 +   +--+ +   |  | +   |  | +   |  | +   |  | +   |  | +   |  | +   |  | +   |* | +   |  | +   |  | +   +--+ +*/ +0x0000, +0x0000, +0x0000, +0x0000, +0x0000, +0x0000, +0x0000, +0x8000, +0x0000, +0x0000, + +/* Character 47 (0x2f): +   width 5 +   +-----+ +   |     | +   |   * | +   |   * | +   |  *  | +   |  *  | +   | *   | +   | *   | +   |*    | +   |*    | +   |     | +   +-----+ +*/ +0x0000, +0x1000, +0x1000, +0x2000, +0x2000, +0x4000, +0x4000, +0x8000, +0x8000, +0x0000, + +/* Character 48 (0x30): +   width 5 +   +-----+ +   |     | +   | **  | +   |*  * | +   |*  * | +   |*  * | +   |*  * | +   |*  * | +   | **  | +   |     | +   |     | +   +-----+ +*/ +0x0000, +0x6000, +0x9000, +0x9000, +0x9000, +0x9000, +0x9000, +0x6000, +0x0000, +0x0000, + +/* Character 49 (0x31): +   width 3 +   +---+ +   |   | +   | * | +   |** | +   | * | +   | * | +   | * | +   | * | +   | * | +   |   | +   |   | +   +---+ +*/ +0x0000, +0x4000, +0xc000, +0x4000, +0x4000, +0x4000, +0x4000, +0x4000, +0x0000, +0x0000, + +/* Character 50 (0x32): +   width 5 +   +-----+ +   |     | +   |***  | +   |   * | +   |   * | +   |  *  | +   | *   | +   |*    | +   |**** | +   |     | +   |     | +   +-----+ +*/ +0x0000, +0xe000, +0x1000, +0x1000, +0x2000, +0x4000, +0x8000, +0xf000, +0x0000, +0x0000, + +/* Character 51 (0x33): +   width 5 +   +-----+ +   |     | +   |***  | +   |   * | +   |   * | +   | **  | +   |   * | +   |   * | +   |***  | +   |     | +   |     | +   +-----+ +*/ +0x0000, +0xe000, +0x1000, +0x1000, +0x6000, +0x1000, +0x1000, +0xe000, +0x0000, +0x0000, + +/* Character 52 (0x34): +   width 5 +   +-----+ +   |     | +   |  *  | +   | **  | +   |* *  | +   |* *  | +   |**** | +   |  *  | +   |  *  | +   |     | +   |     | +   +-----+ +*/ +0x0000, +0x2000, +0x6000, +0xa000, +0xa000, +0xf000, +0x2000, +0x2000, +0x0000, +0x0000, + +/* Character 53 (0x35): +   width 5 +   +-----+ +   |     | +   |**** | +   |*    | +   |***  | +   |   * | +   |   * | +   |   * | +   |***  | +   |     | +   |     | +   +-----+ +*/ +0x0000, +0xf000, +0x8000, +0xe000, +0x1000, +0x1000, +0x1000, +0xe000, +0x0000, +0x0000, + +/* Character 54 (0x36): +   width 5 +   +-----+ +   |     | +   | **  | +   |*    | +   |***  | +   |*  * | +   |*  * | +   |*  * | +   | **  | +   |     | +   |     | +   +-----+ +*/ +0x0000, +0x6000, +0x8000, +0xe000, +0x9000, +0x9000, +0x9000, +0x6000, +0x0000, +0x0000, + +/* Character 55 (0x37): +   width 5 +   +-----+ +   |     | +   |**** | +   |   * | +   |   * | +   |  *  | +   |  *  | +   | *   | +   | *   | +   |     | +   |     | +   +-----+ +*/ +0x0000, +0xf000, +0x1000, +0x1000, +0x2000, +0x2000, +0x4000, +0x4000, +0x0000, +0x0000, + +/* Character 56 (0x38): +   width 5 +   +-----+ +   |     | +   | **  | +   |*  * | +   |*  * | +   | **  | +   |*  * | +   |*  * | +   | **  | +   |     | +   |     | +   +-----+ +*/ +0x0000, +0x6000, +0x9000, +0x9000, +0x6000, +0x9000, +0x9000, +0x6000, +0x0000, +0x0000, + +/* Character 57 (0x39): +   width 5 +   +-----+ +   |     | +   | **  | +   |*  * | +   |*  * | +   |*  * | +   | *** | +   |   * | +   | **  | +   |     | +   |     | +   +-----+ +*/ +0x0000, +0x6000, +0x9000, +0x9000, +0x9000, +0x7000, +0x1000, +0x6000, +0x0000, +0x0000, + +/* Character 58 (0x3a): +   width 2 +   +--+ +   |  | +   |  | +   |  | +   |* | +   |  | +   |* | +   |  | +   |  | +   |  | +   |  | +   +--+ +*/ +0x0000, +0x0000, +0x0000, +0x8000, +0x0000, +0x8000, +0x0000, +0x0000, +0x0000, +0x0000, + +/* Character 59 (0x3b): +   width 2 +   +--+ +   |  | +   |  | +   |  | +   |* | +   |  | +   |* | +   |* | +   |  | +   |  | +   |  | +   +--+ +*/ +0x0000, +0x0000, +0x0000, +0x8000, +0x0000, +0x8000, +0x8000, +0x0000, +0x0000, +0x0000, + +/* Character 60 (0x3c): +   width 5 +   +-----+ +   |     | +   |     | +   |   * | +   |  *  | +   | *   | +   |  *  | +   |   * | +   |     | +   |     | +   |     | +   +-----+ +*/ +0x0000, +0x0000, +0x1000, +0x2000, +0x4000, +0x2000, +0x1000, +0x0000, +0x0000, +0x0000, + +/* Character 61 (0x3d): +   width 5 +   +-----+ +   |     | +   |     | +   |     | +   |**** | +   |     | +   |**** | +   |     | +   |     | +   |     | +   |     | +   +-----+ +*/ +0x0000, +0x0000, +0x0000, +0xf000, +0x0000, +0xf000, +0x0000, +0x0000, +0x0000, +0x0000, + +/* Character 62 (0x3e): +   width 5 +   +-----+ +   |     | +   |     | +   |*    | +   | *   | +   |  *  | +   | *   | +   |*    | +   |     | +   |     | +   |     | +   +-----+ +*/ +0x0000, +0x0000, +0x8000, +0x4000, +0x2000, +0x4000, +0x8000, +0x0000, +0x0000, +0x0000, + +/* Character 63 (0x3f): +   width 5 +   +-----+ +   |     | +   |***  | +   |   * | +   |   * | +   |  *  | +   | *   | +   |     | +   | *   | +   |     | +   |     | +   +-----+ +*/ +0x0000, +0xe000, +0x1000, +0x1000, +0x2000, +0x4000, +0x0000, +0x4000, +0x0000, +0x0000, + +/* Character 64 (0x40): +   width 7 +   +-------+ +   |       | +   |  ***  | +   | *   * | +   |*  *** | +   |* *  * | +   |*  *** | +   | *     | +   |  **** | +   |       | +   |       | +   +-------+ +*/ +0x0000, +0x3800, +0x4400, +0x9c00, +0xa400, +0x9c00, +0x4000, +0x3c00, +0x0000, +0x0000, + +/* Character 65 (0x41): +   width 5 +   +-----+ +   |     | +   | **  | +   |*  * | +   |**** | +   |*  * | +   |*  * | +   |*  * | +   |*  * | +   |     | +   |     | +   +-----+ +*/ +0x0000, +0x6000, +0x9000, +0xf000, +0x9000, +0x9000, +0x9000, +0x9000, +0x0000, +0x0000, + +/* Character 66 (0x42): +   width 5 +   +-----+ +   |     | +   |***  | +   |*  * | +   |***  | +   |*  * | +   |*  * | +   |*  * | +   |***  | +   |     | +   |     | +   +-----+ +*/ +0x0000, +0xe000, +0x9000, +0xe000, +0x9000, +0x9000, +0x9000, +0xe000, +0x0000, +0x0000, + +/* Character 67 (0x43): +   width 5 +   +-----+ +   |     | +   | **  | +   |*  * | +   |*    | +   |*    | +   |*    | +   |*  * | +   | **  | +   |     | +   |     | +   +-----+ +*/ +0x0000, +0x6000, +0x9000, +0x8000, +0x8000, +0x8000, +0x9000, +0x6000, +0x0000, +0x0000, + +/* Character 68 (0x44): +   width 5 +   +-----+ +   |     | +   |***  | +   |*  * | +   |*  * | +   |*  * | +   |*  * | +   |*  * | +   |***  | +   |     | +   |     | +   +-----+ +*/ +0x0000, +0xe000, +0x9000, +0x9000, +0x9000, +0x9000, +0x9000, +0xe000, +0x0000, +0x0000, + +/* Character 69 (0x45): +   width 5 +   +-----+ +   |     | +   |**** | +   |*    | +   |**** | +   |*    | +   |*    | +   |*    | +   |**** | +   |     | +   |     | +   +-----+ +*/ +0x0000, +0xf000, +0x8000, +0xf000, +0x8000, +0x8000, +0x8000, +0xf000, +0x0000, +0x0000, + +/* Character 70 (0x46): +   width 5 +   +-----+ +   |     | +   |**** | +   |*    | +   |**** | +   |*    | +   |*    | +   |*    | +   |*    | +   |     | +   |     | +   +-----+ +*/ +0x0000, +0xf000, +0x8000, +0xf000, +0x8000, +0x8000, +0x8000, +0x8000, +0x0000, +0x0000, + +/* Character 71 (0x47): +   width 5 +   +-----+ +   |     | +   | **  | +   |*  * | +   |*    | +   |* ** | +   |*  * | +   |*  * | +   | **  | +   |     | +   |     | +   +-----+ +*/ +0x0000, +0x6000, +0x9000, +0x8000, +0xb000, +0x9000, +0x9000, +0x6000, +0x0000, +0x0000, + +/* Character 72 (0x48): +   width 5 +   +-----+ +   |     | +   |*  * | +   |*  * | +   |**** | +   |*  * | +   |*  * | +   |*  * | +   |*  * | +   |     | +   |     | +   +-----+ +*/ +0x0000, +0x9000, +0x9000, +0xf000, +0x9000, +0x9000, +0x9000, +0x9000, +0x0000, +0x0000, + +/* Character 73 (0x49): +   width 2 +   +--+ +   |  | +   |* | +   |* | +   |* | +   |* | +   |* | +   |* | +   |* | +   |  | +   |  | +   +--+ +*/ +0x0000, +0x8000, +0x8000, +0x8000, +0x8000, +0x8000, +0x8000, +0x8000, +0x0000, +0x0000, + +/* Character 74 (0x4a): +   width 5 +   +-----+ +   |     | +   |  ** | +   |   * | +   |   * | +   |*  * | +   |*  * | +   |*  * | +   | **  | +   |     | +   |     | +   +-----+ +*/ +0x0000, +0x3000, +0x1000, +0x1000, +0x9000, +0x9000, +0x9000, +0x6000, +0x0000, +0x0000, + +/* Character 75 (0x4b): +   width 5 +   +-----+ +   |     | +   |*  * | +   |*  * | +   |* *  | +   |**   | +   |* *  | +   |*  * | +   |*  * | +   |     | +   |     | +   +-----+ +*/ +0x0000, +0x9000, +0x9000, +0xa000, +0xc000, +0xa000, +0x9000, +0x9000, +0x0000, +0x0000, + +/* Character 76 (0x4c): +   width 5 +   +-----+ +   |     | +   |*    | +   |*    | +   |*    | +   |*    | +   |*    | +   |*    | +   | *** | +   |     | +   |     | +   +-----+ +*/ +0x0000, +0x8000, +0x8000, +0x8000, +0x8000, +0x8000, +0x8000, +0x7000, +0x0000, +0x0000, + +/* Character 77 (0x4d): +   width 6 +   +------+ +   |      | +   |*   * | +   |** ** | +   |* * * | +   |*   * | +   |*   * | +   |*   * | +   |*   * | +   |      | +   |      | +   +------+ +*/ +0x0000, +0x8800, +0xd800, +0xa800, +0x8800, +0x8800, +0x8800, +0x8800, +0x0000, +0x0000, + +/* Character 78 (0x4e): +   width 5 +   +-----+ +   |     | +   |*  * | +   |** * | +   |* ** | +   |*  * | +   |*  * | +   |*  * | +   |*  * | +   |     | +   |     | +   +-----+ +*/ +0x0000, +0x9000, +0xd000, +0xb000, +0x9000, +0x9000, +0x9000, +0x9000, +0x0000, +0x0000, + +/* Character 79 (0x4f): +   width 5 +   +-----+ +   |     | +   | **  | +   |*  * | +   |*  * | +   |*  * | +   |*  * | +   |*  * | +   | **  | +   |     | +   |     | +   +-----+ +*/ +0x0000, +0x6000, +0x9000, +0x9000, +0x9000, +0x9000, +0x9000, +0x6000, +0x0000, +0x0000, + +/* Character 80 (0x50): +   width 5 +   +-----+ +   |     | +   |***  | +   |*  * | +   |*  * | +   |***  | +   |*    | +   |*    | +   |*    | +   |     | +   |     | +   +-----+ +*/ +0x0000, +0xe000, +0x9000, +0x9000, +0xe000, +0x8000, +0x8000, +0x8000, +0x0000, +0x0000, + +/* Character 81 (0x51): +   width 5 +   +-----+ +   |     | +   | **  | +   |*  * | +   |*  * | +   |*  * | +   |*  * | +   |*  * | +   | **  | +   |   * | +   |     | +   +-----+ +*/ +0x0000, +0x6000, +0x9000, +0x9000, +0x9000, +0x9000, +0x9000, +0x6000, +0x1000, +0x0000, + +/* Character 82 (0x52): +   width 5 +   +-----+ +   |     | +   |***  | +   |*  * | +   |*  * | +   |***  | +   |*  * | +   |*  * | +   |*  * | +   |     | +   |     | +   +-----+ +*/ +0x0000, +0xe000, +0x9000, +0x9000, +0xe000, +0x9000, +0x9000, +0x9000, +0x0000, +0x0000, + +/* Character 83 (0x53): +   width 5 +   +-----+ +   |     | +   | **  | +   |*  * | +   |*    | +   | **  | +   |   * | +   |*  * | +   | **  | +   |     | +   |     | +   +-----+ +*/ +0x0000, +0x6000, +0x9000, +0x8000, +0x6000, +0x1000, +0x9000, +0x6000, +0x0000, +0x0000, + +/* Character 84 (0x54): +   width 6 +   +------+ +   |      | +   |***** | +   |  *   | +   |  *   | +   |  *   | +   |  *   | +   |  *   | +   |  *   | +   |      | +   |      | +   +------+ +*/ +0x0000, +0xf800, +0x2000, +0x2000, +0x2000, +0x2000, +0x2000, +0x2000, +0x0000, +0x0000, + +/* Character 85 (0x55): +   width 5 +   +-----+ +   |     | +   |*  * | +   |*  * | +   |*  * | +   |*  * | +   |*  * | +   |*  * | +   | **  | +   |     | +   |     | +   +-----+ +*/ +0x0000, +0x9000, +0x9000, +0x9000, +0x9000, +0x9000, +0x9000, +0x6000, +0x0000, +0x0000, + +/* Character 86 (0x56): +   width 6 +   +------+ +   |      | +   |*   * | +   |*   * | +   |*   * | +   | * *  | +   | * *  | +   |  *   | +   |  *   | +   |      | +   |      | +   +------+ +*/ +0x0000, +0x8800, +0x8800, +0x8800, +0x5000, +0x5000, +0x2000, +0x2000, +0x0000, +0x0000, + +/* Character 87 (0x57): +   width 6 +   +------+ +   |      | +   |*   * | +   |*   * | +   |*   * | +   |* * * | +   |* * * | +   | * *  | +   | * *  | +   |      | +   |      | +   +------+ +*/ +0x0000, +0x8800, +0x8800, +0x8800, +0xa800, +0xa800, +0x5000, +0x5000, +0x0000, +0x0000, + +/* Character 88 (0x58): +   width 5 +   +-----+ +   |     | +   |*  * | +   |*  * | +   | **  | +   |*  * | +   |*  * | +   |*  * | +   |*  * | +   |     | +   |     | +   +-----+ +*/ +0x0000, +0x9000, +0x9000, +0x6000, +0x9000, +0x9000, +0x9000, +0x9000, +0x0000, +0x0000, + +/* Character 89 (0x59): +   width 6 +   +------+ +   |      | +   |*   * | +   |*   * | +   | * *  | +   |  *   | +   |  *   | +   |  *   | +   |  *   | +   |      | +   |      | +   +------+ +*/ +0x0000, +0x8800, +0x8800, +0x5000, +0x2000, +0x2000, +0x2000, +0x2000, +0x0000, +0x0000, + +/* Character 90 (0x5a): +   width 5 +   +-----+ +   |     | +   |**** | +   |   * | +   |  *  | +   | *   | +   |*    | +   |*    | +   |**** | +   |     | +   |     | +   +-----+ +*/ +0x0000, +0xf000, +0x1000, +0x2000, +0x4000, +0x8000, +0x8000, +0xf000, +0x0000, +0x0000, + +/* Character 91 (0x5b): +   width 4 +   +----+ +   |    | +   | ** | +   | *  | +   | *  | +   | *  | +   | *  | +   | *  | +   | ** | +   |    | +   |    | +   +----+ +*/ +0x0000, +0x6000, +0x4000, +0x4000, +0x4000, +0x4000, +0x4000, +0x6000, +0x0000, +0x0000, + +/* Character 92 (0x5c): +   width 5 +   +-----+ +   |     | +   |*    | +   |*    | +   | *   | +   | *   | +   |  *  | +   |  *  | +   |   * | +   |   * | +   |     | +   +-----+ +*/ +0x0000, +0x8000, +0x8000, +0x4000, +0x4000, +0x2000, +0x2000, +0x1000, +0x1000, +0x0000, + +/* Character 93 (0x5d): +   width 4 +   +----+ +   |    | +   |**  | +   | *  | +   | *  | +   | *  | +   | *  | +   | *  | +   |**  | +   |    | +   |    | +   +----+ +*/ +0x0000, +0xc000, +0x4000, +0x4000, +0x4000, +0x4000, +0x4000, +0xc000, +0x0000, +0x0000, + +/* Character 94 (0x5e): +   width 4 +   +----+ +   |    | +   | *  | +   |* * | +   |    | +   |    | +   |    | +   |    | +   |    | +   |    | +   |    | +   +----+ +*/ +0x0000, +0x4000, +0xa000, +0x0000, +0x0000, +0x0000, +0x0000, +0x0000, +0x0000, +0x0000, + +/* Character 95 (0x5f): +   width 5 +   +-----+ +   |     | +   |     | +   |     | +   |     | +   |     | +   |     | +   |     | +   |**** | +   |     | +   |     | +   +-----+ +*/ +0x0000, +0x0000, +0x0000, +0x0000, +0x0000, +0x0000, +0x0000, +0xf000, +0x0000, +0x0000, + +/* Character 96 (0x60): +   width 3 +   +---+ +   |   | +   |*  | +   | * | +   |   | +   |   | +   |   | +   |   | +   |   | +   |   | +   |   | +   +---+ +*/ +0x0000, +0x8000, +0x4000, +0x0000, +0x0000, +0x0000, +0x0000, +0x0000, +0x0000, +0x0000, + +/* Character 97 (0x61): +   width 5 +   +-----+ +   |     | +   |     | +   |     | +   | *** | +   |*  * | +   |*  * | +   |*  * | +   | *** | +   |     | +   |     | +   +-----+ +*/ +0x0000, +0x0000, +0x0000, +0x7000, +0x9000, +0x9000, +0x9000, +0x7000, +0x0000, +0x0000, + +/* Character 98 (0x62): +   width 5 +   +-----+ +   |     | +   |*    | +   |*    | +   |***  | +   |*  * | +   |*  * | +   |*  * | +   |***  | +   |     | +   |     | +   +-----+ +*/ +0x0000, +0x8000, +0x8000, +0xe000, +0x9000, +0x9000, +0x9000, +0xe000, +0x0000, +0x0000, + +/* Character 99 (0x63): +   width 4 +   +----+ +   |    | +   |    | +   |    | +   | ** | +   |*   | +   |*   | +   |*   | +   | ** | +   |    | +   |    | +   +----+ +*/ +0x0000, +0x0000, +0x0000, +0x6000, +0x8000, +0x8000, +0x8000, +0x6000, +0x0000, +0x0000, + +/* Character 100 (0x64): +   width 5 +   +-----+ +   |     | +   |   * | +   |   * | +   | *** | +   |*  * | +   |*  * | +   |*  * | +   | *** | +   |     | +   |     | +   +-----+ +*/ +0x0000, +0x1000, +0x1000, +0x7000, +0x9000, +0x9000, +0x9000, +0x7000, +0x0000, +0x0000, + +/* Character 101 (0x65): +   width 5 +   +-----+ +   |     | +   |     | +   |     | +   | **  | +   |*  * | +   |**** | +   |*    | +   | **  | +   |     | +   |     | +   +-----+ +*/ +0x0000, +0x0000, +0x0000, +0x6000, +0x9000, +0xf000, +0x8000, +0x6000, +0x0000, +0x0000, + +/* Character 102 (0x66): +   width 5 +   +-----+ +   |     | +   |  ** | +   | *   | +   |**** | +   | *   | +   | *   | +   | *   | +   | *   | +   |     | +   |     | +   +-----+ +*/ +0x0000, +0x3000, +0x4000, +0xf000, +0x4000, +0x4000, +0x4000, +0x4000, +0x0000, +0x0000, + +/* Character 103 (0x67): +   width 5 +   +-----+ +   |     | +   |     | +   |     | +   | *** | +   |*  * | +   |*  * | +   |*  * | +   | *** | +   |   * | +   | **  | +   +-----+ +*/ +0x0000, +0x0000, +0x0000, +0x7000, +0x9000, +0x9000, +0x9000, +0x7000, +0x1000, +0x6000, + +/* Character 104 (0x68): +   width 5 +   +-----+ +   |     | +   |*    | +   |*    | +   |***  | +   |*  * | +   |*  * | +   |*  * | +   |*  * | +   |     | +   |     | +   +-----+ +*/ +0x0000, +0x8000, +0x8000, +0xe000, +0x9000, +0x9000, +0x9000, +0x9000, +0x0000, +0x0000, + +/* Character 105 (0x69): +   width 2 +   +--+ +   |  | +   |* | +   |  | +   |* | +   |* | +   |* | +   |* | +   |* | +   |  | +   |  | +   +--+ +*/ +0x0000, +0x8000, +0x0000, +0x8000, +0x8000, +0x8000, +0x8000, +0x8000, +0x0000, +0x0000, + +/* Character 106 (0x6a): +   width 4 +   +----+ +   |    | +   |  * | +   |    | +   |  * | +   |  * | +   |  * | +   |  * | +   |  * | +   |  * | +   |**  | +   +----+ +*/ +0x0000, +0x2000, +0x0000, +0x2000, +0x2000, +0x2000, +0x2000, +0x2000, +0x2000, +0xc000, + +/* Character 107 (0x6b): +   width 5 +   +-----+ +   |     | +   |*    | +   |*    | +   |*  * | +   |* *  | +   |**   | +   |* *  | +   |*  * | +   |     | +   |     | +   +-----+ +*/ +0x0000, +0x8000, +0x8000, +0x9000, +0xa000, +0xc000, +0xa000, +0x9000, +0x0000, +0x0000, + +/* Character 108 (0x6c): +   width 2 +   +--+ +   |  | +   |* | +   |* | +   |* | +   |* | +   |* | +   |* | +   |* | +   |  | +   |  | +   +--+ +*/ +0x0000, +0x8000, +0x8000, +0x8000, +0x8000, +0x8000, +0x8000, +0x8000, +0x0000, +0x0000, + +/* Character 109 (0x6d): +   width 6 +   +------+ +   |      | +   |      | +   |      | +   |****  | +   |* * * | +   |* * * | +   |* * * | +   |* * * | +   |      | +   |      | +   +------+ +*/ +0x0000, +0x0000, +0x0000, +0xf000, +0xa800, +0xa800, +0xa800, +0xa800, +0x0000, +0x0000, + +/* Character 110 (0x6e): +   width 5 +   +-----+ +   |     | +   |     | +   |     | +   |***  | +   |*  * | +   |*  * | +   |*  * | +   |*  * | +   |     | +   |     | +   +-----+ +*/ +0x0000, +0x0000, +0x0000, +0xe000, +0x9000, +0x9000, +0x9000, +0x9000, +0x0000, +0x0000, + +/* Character 111 (0x6f): +   width 5 +   +-----+ +   |     | +   |     | +   |     | +   | **  | +   |*  * | +   |*  * | +   |*  * | +   | **  | +   |     | +   |     | +   +-----+ +*/ +0x0000, +0x0000, +0x0000, +0x6000, +0x9000, +0x9000, +0x9000, +0x6000, +0x0000, +0x0000, + +/* Character 112 (0x70): +   width 5 +   +-----+ +   |     | +   |     | +   |     | +   |***  | +   |*  * | +   |*  * | +   |*  * | +   |***  | +   |*    | +   |*    | +   +-----+ +*/ +0x0000, +0x0000, +0x0000, +0xe000, +0x9000, +0x9000, +0x9000, +0xe000, +0x8000, +0x8000, + +/* Character 113 (0x71): +   width 5 +   +-----+ +   |     | +   |     | +   |     | +   | *** | +   |*  * | +   |*  * | +   |*  * | +   | *** | +   |   * | +   |   * | +   +-----+ +*/ +0x0000, +0x0000, +0x0000, +0x7000, +0x9000, +0x9000, +0x9000, +0x7000, +0x1000, +0x1000, + +/* Character 114 (0x72): +   width 5 +   +-----+ +   |     | +   |     | +   |     | +   |* ** | +   |**   | +   |*    | +   |*    | +   |*    | +   |     | +   |     | +   +-----+ +*/ +0x0000, +0x0000, +0x0000, +0xb000, +0xc000, +0x8000, +0x8000, +0x8000, +0x0000, +0x0000, + +/* Character 115 (0x73): +   width 5 +   +-----+ +   |     | +   |     | +   |     | +   | *** | +   |*    | +   | **  | +   |   * | +   |***  | +   |     | +   |     | +   +-----+ +*/ +0x0000, +0x0000, +0x0000, +0x7000, +0x8000, +0x6000, +0x1000, +0xe000, +0x0000, +0x0000, + +/* Character 116 (0x74): +   width 4 +   +----+ +   |    | +   | *  | +   | *  | +   |*** | +   | *  | +   | *  | +   | *  | +   |  * | +   |    | +   |    | +   +----+ +*/ +0x0000, +0x4000, +0x4000, +0xe000, +0x4000, +0x4000, +0x4000, +0x2000, +0x0000, +0x0000, + +/* Character 117 (0x75): +   width 5 +   +-----+ +   |     | +   |     | +   |     | +   |*  * | +   |*  * | +   |*  * | +   |*  * | +   | *** | +   |     | +   |     | +   +-----+ +*/ +0x0000, +0x0000, +0x0000, +0x9000, +0x9000, +0x9000, +0x9000, +0x7000, +0x0000, +0x0000, + +/* Character 118 (0x76): +   width 6 +   +------+ +   |      | +   |      | +   |      | +   |*   * | +   |*   * | +   | * *  | +   | * *  | +   |  *   | +   |      | +   |      | +   +------+ +*/ +0x0000, +0x0000, +0x0000, +0x8800, +0x8800, +0x5000, +0x5000, +0x2000, +0x0000, +0x0000, + +/* Character 119 (0x77): +   width 6 +   +------+ +   |      | +   |      | +   |      | +   |* * * | +   |* * * | +   |* * * | +   | * *  | +   | * *  | +   |      | +   |      | +   +------+ +*/ +0x0000, +0x0000, +0x0000, +0xa800, +0xa800, +0xa800, +0x5000, +0x5000, +0x0000, +0x0000, + +/* Character 120 (0x78): +   width 5 +   +-----+ +   |     | +   |     | +   |     | +   |*  * | +   |*  * | +   | **  | +   |*  * | +   |*  * | +   |     | +   |     | +   +-----+ +*/ +0x0000, +0x0000, +0x0000, +0x9000, +0x9000, +0x6000, +0x9000, +0x9000, +0x0000, +0x0000, + +/* Character 121 (0x79): +   width 5 +   +-----+ +   |     | +   |     | +   |     | +   |*  * | +   |*  * | +   |*  * | +   |*  * | +   | *** | +   |   * | +   | **  | +   +-----+ +*/ +0x0000, +0x0000, +0x0000, +0x9000, +0x9000, +0x9000, +0x9000, +0x7000, +0x1000, +0x6000, + +/* Character 122 (0x7a): +   width 5 +   +-----+ +   |     | +   |     | +   |     | +   |**** | +   |   * | +   | **  | +   |*    | +   |**** | +   |     | +   |     | +   +-----+ +*/ +0x0000, +0x0000, +0x0000, +0xf000, +0x1000, +0x6000, +0x8000, +0xf000, +0x0000, +0x0000, + +/* Character 123 (0x7b): +   width 5 +   +-----+ +   |   * | +   |  *  | +   |  *  | +   |  *  | +   | *   | +   |  *  | +   |  *  | +   |  *  | +   |   * | +   |     | +   +-----+ +*/ +0x1000, +0x2000, +0x2000, +0x2000, +0x4000, +0x2000, +0x2000, +0x2000, +0x1000, +0x0000, + +/* Character 124 (0x7c): +   width 4 +   +----+ +   |    | +   | *  | +   | *  | +   | *  | +   | *  | +   | *  | +   | *  | +   | *  | +   | *  | +   |    | +   +----+ +*/ +0x0000, +0x4000, +0x4000, +0x4000, +0x4000, +0x4000, +0x4000, +0x4000, +0x4000, +0x0000, + +/* Character 125 (0x7d): +   width 5 +   +-----+ +   |*    | +   | *   | +   | *   | +   | *   | +   |  *  | +   | *   | +   | *   | +   | *   | +   |*    | +   |     | +   +-----+ +*/ +0x8000, +0x4000, +0x4000, +0x4000, +0x2000, +0x4000, +0x4000, +0x4000, +0x8000, +0x0000, + +/* Character 126 (0x7e): +   width 5 +   +-----+ +   |     | +   | * * | +   |* *  | +   |     | +   |     | +   |     | +   |     | +   |     | +   |     | +   |     | +   +-----+ +*/ +0x0000, +0x5000, +0xa000, +0x0000, +0x0000, +0x0000, +0x0000, +0x0000, +0x0000, +0x0000, +}; + +/* Character width data. */ +static const unsigned char _sysfont_width[] = { +	3,	/* (0x21) */ +	4,	/* (0x22) */ +	6,	/* (0x23) */ +	6,	/* (0x24) */ +	9,	/* (0x25) */ +	5,	/* (0x26) */ +	2,	/* (0x27) */ +	5,	/* (0x28) */ +	5,	/* (0x29) */ +	6,	/* (0x2a) */ +	6,	/* (0x2b) */ +	3,	/* (0x2c) */ +	5,	/* (0x2d) */ +	2,	/* (0x2e) */ +	5,	/* (0x2f) */ +	5,	/* (0x30) */ +	3,	/* (0x31) */ +	5,	/* (0x32) */ +	5,	/* (0x33) */ +	5,	/* (0x34) */ +	5,	/* (0x35) */ +	5,	/* (0x36) */ +	5,	/* (0x37) */ +	5,	/* (0x38) */ +	5,	/* (0x39) */ +	2,	/* (0x3a) */ +	2,	/* (0x3b) */ +	5,	/* (0x3c) */ +	5,	/* (0x3d) */ +	5,	/* (0x3e) */ +	5,	/* (0x3f) */ +	7,	/* (0x40) */ +	5,	/* (0x41) */ +	5,	/* (0x42) */ +	5,	/* (0x43) */ +	5,	/* (0x44) */ +	5,	/* (0x45) */ +	5,	/* (0x46) */ +	5,	/* (0x47) */ +	5,	/* (0x48) */ +	2,	/* (0x49) */ +	5,	/* (0x4a) */ +	5,	/* (0x4b) */ +	5,	/* (0x4c) */ +	6,	/* (0x4d) */ +	5,	/* (0x4e) */ +	5,	/* (0x4f) */ +	5,	/* (0x50) */ +	5,	/* (0x51) */ +	5,	/* (0x52) */ +	5,	/* (0x53) */ +	6,	/* (0x54) */ +	5,	/* (0x55) */ +	6,	/* (0x56) */ +	6,	/* (0x57) */ +	5,	/* (0x58) */ +	6,	/* (0x59) */ +	5,	/* (0x5a) */ +	4,	/* (0x5b) */ +	5,	/* (0x5c) */ +	4,	/* (0x5d) */ +	4,	/* (0x5e) */ +	5,	/* (0x5f) */ +	3,	/* (0x60) */ +	5,	/* (0x61) */ +	5,	/* (0x62) */ +	4,	/* (0x63) */ +	5,	/* (0x64) */ +	5,	/* (0x65) */ +	5,	/* (0x66) */ +	5,	/* (0x67) */ +	5,	/* (0x68) */ +	2,	/* (0x69) */ +	4,	/* (0x6a) */ +	5,	/* (0x6b) */ +	2,	/* (0x6c) */ +	6,	/* (0x6d) */ +	5,	/* (0x6e) */ +	5,	/* (0x6f) */ +	5,	/* (0x70) */ +	5,	/* (0x71) */ +	5,	/* (0x72) */ +	5,	/* (0x73) */ +	4,	/* (0x74) */ +	5,	/* (0x75) */ +	6,	/* (0x76) */ +	6,	/* (0x77) */ +	5,	/* (0x78) */ +	5,	/* (0x79) */ +	5,	/* (0x7a) */ +	5,	/* (0x7b) */ +	4,	/* (0x7c) */ +	5,	/* (0x7d) */ +	5,	/* (0x7e) */ +}; + +/* Exported structure definition. */ +NewFont::NewFont() { +	name = "04b-16b-10"; +	maxwidth = 9; +	height = 10; +	ascent = 8; +	firstchar = 33; +	size = 94; +	bits = _font_bits; +	offset = 0;  /* no encode table*/ +	width = _sysfont_width; +	defaultchar = 33; +	bits_size = sizeof(_font_bits)/sizeof(bitmap_t); +} + +const NewFont g_sysfont; + +#if 0 +const Font g_sysfont = { +	"04b-16b-10", +	9, +	10, +	8, +	33, +	94, +	_font_bits, +	0,  /* no encode table*/ +	_sysfont_width, +	33, +	sizeof(_font_bits)/sizeof(bitmap_t), +}; +#endif + +} // End of namespace GUI diff --git a/gui/newgui.cpp b/gui/newgui.cpp index 37ebdc9b4b..2f2c0e6e5d 100644 --- a/gui/newgui.cpp +++ b/gui/newgui.cpp @@ -20,12 +20,8 @@  #include "stdafx.h"  #include "common/util.h" -#include "newgui.h" -#include "dialog.h" - -#ifdef NEW_FONT_CODE -#include "gui/font.h" -#endif +#include "gui/newgui.h" +#include "gui/dialog.h"  namespace GUI { @@ -49,49 +45,6 @@ enum {  	kKeyRepeatSustainDelay = 100  }; -#ifdef NEW_FONT_CODE -/* - * TODO:  - *  - replace kLineHeight by global variable or query method - *  - .... - */ -#else -#ifdef __PALM_OS__ -static const byte *guifont; -#else -// Built-in font -static const byte guifont[] = { -0,0,99,1,226,8,4,8,6,8,6,0,0,0,0,0,0,0,0,0,0,0,8,2,1,8,0,0,0,0,0,0,0,0,0,0,0,0,4,3,7,8,7,7,8,4,5,5,8,7,4,7,3,8,7,7,7,7,8,7,7,7,7,7,3,4,7,5,7,7,8,7,7,7,7,7,7,7,7,5,7,7, -7,8,7,7,7,7,7,7,7,7,7,8,7,7,7,5,8,5,8,8,7,7,7,6,7,7,7,7,7,5,6,7,5,8,7,7,7,7,7,7,7,7,7,8,7,7,7,5,3,5,7,8,7,7,7,7,7,7,0,6,7,7,7,5,5,5,7,0,6,8,8,7,7,7,7,7,0,7,7,0,0, -0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,0,0,0,0,0,1,3,6,12, -24,62,3,0,128,192,96,48,24,124,192,0,0,3,62,24,12,6,3,1,0,192,124,24,48,96,192,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,237,74,72,0,0,0,0,0,128,128,128,0,0,0,0,0,0,0,0,0,0,0,0,0,60,66,153,161,161,153,66,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,96,96,96,96,0,0,96,0,102,102,102,0,0,0,0,0,102,102,255,102,255,102,102,0,24,62,96,60,6,124,24,0,98,102,12,24,48,102,70,0,60,102,60,56,103,102,63,0,96,48,16,0,0,0,0,0,24,48,96,96,96,48,24,0,96,48,24,24,24,48,96,0, -0,102,60,255,60,102,0,0,0,24,24,126,24,24,0,0,0,0,0,0,0,48,48,96,0,0,0,126,0,0,0,0,0,0,0,0,0,96,96,0,0,3,6,12,24,48,96,0,60,102,102,102,102,102,60,0,24,24,56,24,24,24,126,0,60,102,6,12,48,96,126,0,60,102,6,28,6,102,60,0,6, -14,30,102,127,6,6,0,126,96,124,6,6,102,60,0,60,102,96,124,102,102,60,0,126,102,12,24,24,24,24,0,60,102,102,60,102,102,60,0,60,102,102,62,6,102,60,0,0,0,96,0,0,96,0,0,0,0,48,0,0,48,48,96,14,24,48,96,48,24,14,0,0,0,120,0,120,0,0,0,112,24, -12,6,12,24,112,0,60,102,6,12,24,0,24,0,0,0,0,255,255,0,0,0,24,60,102,126,102,102,102,0,124,102,102,124,102,102,124,0,60,102,96,96,96,102,60,0,120,108,102,102,102,108,120,0,126,96,96,120,96,96,126,0,126,96,96,120,96,96,96,0,60,102,96,110,102,102,60,0,102,102,102, -126,102,102,102,0,120,48,48,48,48,48,120,0,30,12,12,12,12,108,56,0,102,108,120,112,120,108,102,0,96,96,96,96,96,96,126,0,99,119,127,107,99,99,99,0,102,118,126,126,110,102,102,0,60,102,102,102,102,102,60,0,124,102,102,124,96,96,96,0,60,102,102,102,102,60,14,0,124,102,102,124, -120,108,102,0,60,102,96,60,6,102,60,0,126,24,24,24,24,24,24,0,102,102,102,102,102,102,60,0,102,102,102,102,102,60,24,0,99,99,99,107,127,119,99,0,102,102,60,24,60,102,102,0,102,102,102,60,24,24,24,0,126,6,12,24,48,96,126,0,120,96,96,96,96,96,120,0,3,6,12,24,48, -96,192,0,120,24,24,24,24,24,120,0,0,0,0,0,0,219,219,0,0,0,0,0,0,0,0,255,102,102,102,0,0,0,0,0,0,0,60,6,62,102,62,0,0,96,96,124,102,102,124,0,0,0,60,96,96,96,60,0,0,6,6,62,102,102,62,0,0,0,60,102,126,96,60,0,0,14,24,62,24,24, -24,0,0,0,62,102,102,62,6,124,0,96,96,124,102,102,102,0,0,48,0,112,48,48,120,0,0,12,0,12,12,12,12,120,0,96,96,108,120,108,102,0,0,112,48,48,48,48,120,0,0,0,102,127,127,107,99,0,0,0,124,102,102,102,102,0,0,0,60,102,102,102,60,0,0,0,124,102,102,124,96, -96,0,0,62,102,102,62,6,6,0,0,124,102,96,96,96,0,0,0,62,96,60,6,124,0,0,24,126,24,24,24,14,0,0,0,102,102,102,102,62,0,0,0,102,102,102,60,24,0,0,0,99,107,127,62,54,0,0,0,102,60,24,60,102,0,0,0,102,102,102,62,12,120,0,0,126,12,24,48,126,0, -24,48,48,96,48,48,24,0,96,96,96,0,96,96,96,0,96,48,48,24,48,48,96,0,0,0,97,153,134,0,0,0,8,12,14,255,255,14,12,8,60,102,96,96,102,60,24,56,102,0,102,102,102,102,62,0,12,24,60,102,126,96,60,0,24,36,60,6,62,102,62,0,102,0,60,6,62,102,62,0,48, -24,60,6,62,102,62,0,0,0,0,0,0,0,0,0,0,60,96,96,96,60,24,56,24,36,60,102,126,96,60,0,102,0,60,102,126,96,60,0,48,24,60,102,126,96,60,0,0,216,0,112,48,48,120,0,48,72,0,112,48,48,120,0,96,48,0,112,48,48,120,0,102,24,60,102,126,102,102,0,0,0, -0,0,0,0,0,0,24,48,124,96,120,96,124,0,0,0,108,26,126,216,110,0,30,40,40,126,72,136,142,0,24,36,60,102,102,102,60,0,102,0,60,102,102,102,60,0,48,24,60,102,102,102,60,0,24,36,0,102,102,102,62,0,48,24,102,102,102,102,62,0,0,0,0,0,0,0,0,0,102,60,102, -102,102,102,60,0,102,0,102,102,102,102,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,24,60,6,62,102,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,28,54,54,124,102,102,124,64,0,0,0 -}; -#endif - -#endif // NEW_FONT_CODE -  // Constructor  NewGui::NewGui() : _screen(0), _needRedraw(false), @@ -204,6 +157,7 @@ void NewGui::runLoop() {  				return;  			case OSystem::EVENT_SCREEN_CHANGED:  				updateColors(); +				activeDialog->handleScreenChanged();  				break;  			}  		} @@ -402,57 +356,16 @@ void NewGui::addDirtyRect(int x, int y, int w, int h) {  }  void NewGui::drawChar(byte chr, int xx, int yy, OverlayColor color) { -	OverlayColor *ptr = getBasePtr(xx, yy); -	uint x, y; - -#ifdef NEW_FONT_CODE -	assert(g_sysfont.bits != 0 && g_sysfont.maxwidth <= 16); - -	// If this character is not included in the font, use the default char. -	if (chr < g_sysfont.firstchar || chr >= g_sysfont.firstchar + g_sysfont.size) { -		if (chr == ' ') -			return; -		chr = g_sysfont.defaultchar; -	} - -	const uint w = getCharWidth(chr); -	const uint h = g_sysfont.height; -	chr -= g_sysfont.firstchar; -	const bitmap_t *tmp = g_sysfont.bits + (g_sysfont.offset ? g_sysfont.offset[chr] : (chr * h)); -//printf("Char '%c', width %d\n", chr, w); - -	for (y = 0; y < h; y++) { -		const bitmap_t buffer = *tmp++; -		bitmap_t mask = 0x8000; -		for (x = 0; x < w; x++) { -			if ((buffer & mask) != 0) -				ptr[x] = color; -			mask >>= 1; -		} -		ptr += _screenPitch; -	} -#else -	const uint w = 8; -	const uint h = 8; -	const byte *tmp = guifont + 6 + guifont[4] + chr * 8; -	uint buffer = 0; -	uint mask = 0; - -	for (y = 0; y < h; y++) { -		for (x = 0; x < w; x++) { -			unsigned char c; -			mask >>= 1; -			if (mask == 0) { -				buffer = *tmp++; -				mask = 0x80; -			} -			c = ((buffer & mask) != 0); -			if (c) -				ptr[x] = color; -		} -		ptr += _screenPitch; -	} -#endif +	const int sys_height = _system->get_overlay_height(); +	const int sys_width = _system->get_overlay_width(); +	Surface dst = { +			_screen, +			sys_width, +			sys_height, +			sizeof(OverlayColor) * _screenPitch, +			sizeof(OverlayColor) +		}; +	g_guifont.drawChar(&dst, chr, xx, yy, color);  }  int NewGui::getStringWidth(const String &str) { @@ -464,89 +377,20 @@ int NewGui::getStringWidth(const String &str) {  }  int NewGui::getCharWidth(byte c) { -#ifdef NEW_FONT_CODE -	// If no width table is specified, return the maximum width -	if (!g_sysfont.width) -		return g_sysfont.maxwidth; -	// If this character is not included in the font, use the default char. -	if (c < g_sysfont.firstchar || g_sysfont.firstchar + g_sysfont.size < c) { -		if (c == ' ') -			return g_sysfont.maxwidth / 2; -		c = g_sysfont.defaultchar; -	} -	return g_sysfont.width[c - g_sysfont.firstchar]; -#else -	return guifont[c+6]; -#endif +	return g_guifont.getCharWidth(c);  } -void NewGui::drawString(const String &s, int x, int y, int w, OverlayColor color, int align, int deltax, bool useEllipsis) { -	const int leftX = x, rightX = x + w; -	uint i; -	int width = getStringWidth(s); -	String str; -	 -	if (useEllipsis && width > w) { -		// String is too wide. So we shorten it "intellegently", by replacing -		// parts of it by an ellipsis ("..."). There are three possibilities -		// for this: replace the start, the end, or the middle of the string. -		// What is best really depends on the context; but unless we want to -		// make this configurable, replacing the middle probably is a good -		// compromise. -		const int ellipsisWidth = getStringWidth("..."); -		 -		// SLOW algorithm to remove enough of the middle. But it is good enough -		// for now. -		const int halfWidth = (w - ellipsisWidth) / 2; -		int w2 = 0; -		 -		for (i = 0; i < s.size(); ++i) { -			int charWidth = getCharWidth(s[i]); -			if (w2 + charWidth > halfWidth) -				break; -			w2 += charWidth; -			str += s[i]; -		} -		// At this point we know that the first 'i' chars are together 'w2' -		// pixels wide. We took the first i-1, and add "..." to them. -		str += "..."; -		 -		// The original string is width wide. Of those we already skipped past -		// w2 pixels, which means (width - w2) remain. -		// The new str is (w2+ellipsisWidth) wide, so we can accomodate about -		// (w - (w2+ellipsisWidth)) more pixels. -		// Thus we skip ((width - w2) - (w - (w2+ellipsisWidth))) = -		// (width + ellipsisWidth - w) -		int skip = width + ellipsisWidth - w; -		for (; i < s.size() && skip > 0; ++i) { -			skip -= getCharWidth(s[i]); -		} - -		// Append the remaining chars, if any -		for (; i < s.size(); ++i) { -			str += s[i]; -		} - -		width = getStringWidth(str); - -	} else { -		str = s; -	} - -	if (align == kTextAlignCenter) -		x = x + (w - width - 1)/2; -	else if (align == kTextAlignRight) -		x = x + w - width; -	x += deltax; - -	for (i = 0; i < str.size(); ++i) { -		w = getCharWidth(str[i]); -		if (x+w > rightX) -			break; -		if (x >= leftX) -			drawChar(str[i], x, y, color); -		x += w; -	} +void NewGui::drawString(const String &s, int x, int y, int w, OverlayColor color, TextAlignment align, int deltax, bool useEllipsis) { +	const int sys_height = _system->get_overlay_height(); +	const int sys_width = _system->get_overlay_width(); +	Surface dst = { +			_screen, +			sys_width, +			sys_height, +			sizeof(OverlayColor) * _screenPitch, +			sizeof(OverlayColor) +		}; +	g_guifont.drawString(&dst, s, x, y, w, color, align, deltax, useEllipsis);  }  // @@ -620,20 +464,3 @@ void NewGui::animateCursor() {  }  } // End of namespace GUI - -#ifdef __PALM_OS__ -#include "scumm_globals.h" - -_GINIT(NewGui) -#ifndef NEW_FONT_CODE -_GSETPTR(GUI::guifont, GBVARS_GUIFONT_INDEX, byte, GBVARS_SCUMM) -#endif -_GEND - -_GRELEASE(NewGui) -#ifndef NEW_FONT_CODE -_GRELEASEPTR(GBVARS_GUIFONT_INDEX, GBVARS_SCUMM) -#endif -_GEND - -#endif diff --git a/gui/newgui.h b/gui/newgui.h index 1866845fa5..58e2bc2997 100644 --- a/gui/newgui.h +++ b/gui/newgui.h @@ -25,22 +25,12 @@  #include "common/singleton.h"  #include "common/str.h"  #include "common/system.h"	// For events +#include "gui/font.h"  // Uncomment the following to enable the new font code:  //#define NEW_FONT_CODE -// Height of a single text line -#ifdef NEW_FONT_CODE -#include "gui/font.h" -#define kLineHeight	(g_sysfont.height + 2) -#else -enum { -	kLineHeight			= 10 -}; -#endif - -  namespace GUI {  class Dialog; @@ -51,12 +41,14 @@ class Dialog;  #define g_gui	(GUI::NewGui::instance()) -// Text alignment modes for drawString() -enum { -	kTextAlignLeft, -	kTextAlignCenter, -	kTextAlignRight -}; +// Height of a single text line +#ifdef NEW_FONT_CODE +#define		g_guifont		g_sysfont +#else +#define		g_guifont		g_scummfont +#endif +#define kLineHeight	(g_guifont.getFontHeight() + 2) +  // Extremly simple stack class, doesn't even do any error checking (for now)  class DialogStack { @@ -150,7 +142,7 @@ public:  	void drawChar(byte c, int x, int y, OverlayColor color);  	int getStringWidth(const String &str);  	int getCharWidth(byte c); -	void drawString(const String &str, int x, int y, int w, OverlayColor color, int align = kTextAlignLeft, int deltax = 0, bool useEllipsis = true); +	void drawString(const String &str, int x, int y, int w, OverlayColor color, TextAlignment align = kTextAlignLeft, int deltax = 0, bool useEllipsis = true);  	void blitFromBuffer(int x, int y, int w, int h, const byte *buf, int pitch);  	void blitToBuffer(int x, int y, int w, int h, byte *buf, int pitch); diff --git a/gui/scummfont.cpp b/gui/scummfont.cpp new file mode 100644 index 0000000000..263f7a50d3 --- /dev/null +++ b/gui/scummfont.cpp @@ -0,0 +1,112 @@ +/* ScummVM - Scumm Interpreter + * Copyright (C) 2002-2004 The ScummVM project + * + * 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., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA. + * + * $Header$ + */ + +#include "stdafx.h" +#include "gui/font.h" + +namespace GUI { + +#ifdef __PALM_OS__ +static const byte *guifont; +#else +// Built-in font +static const byte guifont[] = { +0,0,99,1,226,8,4,8,6,8,6,0,0,0,0,0,0,0,0,0,0,0,8,2,1,8,0,0,0,0,0,0,0,0,0,0,0,0,4,3,7,8,7,7,8,4,5,5,8,7,4,7,3,8,7,7,7,7,8,7,7,7,7,7,3,4,7,5,7,7,8,7,7,7,7,7,7,7,7,5,7,7, +7,8,7,7,7,7,7,7,7,7,7,8,7,7,7,5,8,5,8,8,7,7,7,6,7,7,7,7,7,5,6,7,5,8,7,7,7,7,7,7,7,7,7,8,7,7,7,5,3,5,7,8,7,7,7,7,7,7,0,6,7,7,7,5,5,5,7,0,6,8,8,7,7,7,7,7,0,7,7,0,0, +0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,0,0,0,0,0,1,3,6,12, +24,62,3,0,128,192,96,48,24,124,192,0,0,3,62,24,12,6,3,1,0,192,124,24,48,96,192,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,237,74,72,0,0,0,0,0,128,128,128,0,0,0,0,0,0,0,0,0,0,0,0,0,60,66,153,161,161,153,66,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,96,96,96,96,0,0,96,0,102,102,102,0,0,0,0,0,102,102,255,102,255,102,102,0,24,62,96,60,6,124,24,0,98,102,12,24,48,102,70,0,60,102,60,56,103,102,63,0,96,48,16,0,0,0,0,0,24,48,96,96,96,48,24,0,96,48,24,24,24,48,96,0, +0,102,60,255,60,102,0,0,0,24,24,126,24,24,0,0,0,0,0,0,0,48,48,96,0,0,0,126,0,0,0,0,0,0,0,0,0,96,96,0,0,3,6,12,24,48,96,0,60,102,102,102,102,102,60,0,24,24,56,24,24,24,126,0,60,102,6,12,48,96,126,0,60,102,6,28,6,102,60,0,6, +14,30,102,127,6,6,0,126,96,124,6,6,102,60,0,60,102,96,124,102,102,60,0,126,102,12,24,24,24,24,0,60,102,102,60,102,102,60,0,60,102,102,62,6,102,60,0,0,0,96,0,0,96,0,0,0,0,48,0,0,48,48,96,14,24,48,96,48,24,14,0,0,0,120,0,120,0,0,0,112,24, +12,6,12,24,112,0,60,102,6,12,24,0,24,0,0,0,0,255,255,0,0,0,24,60,102,126,102,102,102,0,124,102,102,124,102,102,124,0,60,102,96,96,96,102,60,0,120,108,102,102,102,108,120,0,126,96,96,120,96,96,126,0,126,96,96,120,96,96,96,0,60,102,96,110,102,102,60,0,102,102,102, +126,102,102,102,0,120,48,48,48,48,48,120,0,30,12,12,12,12,108,56,0,102,108,120,112,120,108,102,0,96,96,96,96,96,96,126,0,99,119,127,107,99,99,99,0,102,118,126,126,110,102,102,0,60,102,102,102,102,102,60,0,124,102,102,124,96,96,96,0,60,102,102,102,102,60,14,0,124,102,102,124, +120,108,102,0,60,102,96,60,6,102,60,0,126,24,24,24,24,24,24,0,102,102,102,102,102,102,60,0,102,102,102,102,102,60,24,0,99,99,99,107,127,119,99,0,102,102,60,24,60,102,102,0,102,102,102,60,24,24,24,0,126,6,12,24,48,96,126,0,120,96,96,96,96,96,120,0,3,6,12,24,48, +96,192,0,120,24,24,24,24,24,120,0,0,0,0,0,0,219,219,0,0,0,0,0,0,0,0,255,102,102,102,0,0,0,0,0,0,0,60,6,62,102,62,0,0,96,96,124,102,102,124,0,0,0,60,96,96,96,60,0,0,6,6,62,102,102,62,0,0,0,60,102,126,96,60,0,0,14,24,62,24,24, +24,0,0,0,62,102,102,62,6,124,0,96,96,124,102,102,102,0,0,48,0,112,48,48,120,0,0,12,0,12,12,12,12,120,0,96,96,108,120,108,102,0,0,112,48,48,48,48,120,0,0,0,102,127,127,107,99,0,0,0,124,102,102,102,102,0,0,0,60,102,102,102,60,0,0,0,124,102,102,124,96, +96,0,0,62,102,102,62,6,6,0,0,124,102,96,96,96,0,0,0,62,96,60,6,124,0,0,24,126,24,24,24,14,0,0,0,102,102,102,102,62,0,0,0,102,102,102,60,24,0,0,0,99,107,127,62,54,0,0,0,102,60,24,60,102,0,0,0,102,102,102,62,12,120,0,0,126,12,24,48,126,0, +24,48,48,96,48,48,24,0,96,96,96,0,96,96,96,0,96,48,48,24,48,48,96,0,0,0,97,153,134,0,0,0,8,12,14,255,255,14,12,8,60,102,96,96,102,60,24,56,102,0,102,102,102,102,62,0,12,24,60,102,126,96,60,0,24,36,60,6,62,102,62,0,102,0,60,6,62,102,62,0,48, +24,60,6,62,102,62,0,0,0,0,0,0,0,0,0,0,60,96,96,96,60,24,56,24,36,60,102,126,96,60,0,102,0,60,102,126,96,60,0,48,24,60,102,126,96,60,0,0,216,0,112,48,48,120,0,48,72,0,112,48,48,120,0,96,48,0,112,48,48,120,0,102,24,60,102,126,102,102,0,0,0, +0,0,0,0,0,0,24,48,124,96,120,96,124,0,0,0,108,26,126,216,110,0,30,40,40,126,72,136,142,0,24,36,60,102,102,102,60,0,102,0,60,102,102,102,60,0,48,24,60,102,102,102,60,0,24,36,0,102,102,102,62,0,48,24,102,102,102,102,62,0,0,0,0,0,0,0,0,0,102,60,102, +102,102,102,60,0,102,0,102,102,102,102,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,24,60,6,62,102,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,28,54,54,124,102,102,124,64,0,0,0 +}; +#endif + +int ScummFont::getCharWidth(byte chr) const { +	return guifont[chr+6]; +} + +//void ScummFont::drawChar(byte chr, int xx, int yy, OverlayColor color) { +void ScummFont::drawChar(const Surface *dst, byte chr, int x, int y, uint32 color) const { +	assert(dst != 0); +	byte *ptr = (byte *)dst->pixels + x * dst->bytesPerPixel + y * dst->pitch; + +	const byte *tmp = guifont + 6 + guifont[4] + chr * 8; +	uint buffer = 0; +	uint mask = 0; + +	for (y = 0; y < 8; y++) { +		for (x = 0; x < 8; x++) { +			unsigned char c; +			mask >>= 1; +			if (mask == 0) { +				buffer = *tmp++; +				mask = 0x80; +			} +			c = ((buffer & mask) != 0); +			if (c) { +				if (dst->bytesPerPixel == 1) +					ptr[x] = color; +				else if (dst->bytesPerPixel == 2) +					((uint16 *)ptr)[x] = color; +			} +		} +		ptr += dst->pitch; +	} +} + +const ScummFont g_scummfont; + +} // End of namespace GUI + +#ifdef __PALM_OS__ +#include "scumm_globals.h" + +_GINIT(NewGui) +#ifndef NEW_FONT_CODE +_GSETPTR(GUI::guifont, GBVARS_GUIFONT_INDEX, byte, GBVARS_SCUMM) +#endif +_GEND + +_GRELEASE(NewGui) +#ifndef NEW_FONT_CODE +_GRELEASEPTR(GBVARS_GUIFONT_INDEX, GBVARS_SCUMM) +#endif +_GEND + +#endif diff --git a/gui/widget.cpp b/gui/widget.cpp index 3285ac14af..8fff12dff9 100644 --- a/gui/widget.cpp +++ b/gui/widget.cpp @@ -107,7 +107,7 @@ Widget *Widget::findWidgetInChain(Widget *w, int x, int y) {  #pragma mark - -StaticTextWidget::StaticTextWidget(GuiObject *boss, int x, int y, int w, int h, const String &text, int align) +StaticTextWidget::StaticTextWidget(GuiObject *boss, int x, int y, int w, int h, const String &text, TextAlignment align)  	: Widget(boss, x, y, w, h), _align(align) {  	_flags = WIDGET_ENABLED;  	_type = kStaticTextWidget; diff --git a/gui/widget.h b/gui/widget.h index 46618367f6..a435e418b8 100644 --- a/gui/widget.h +++ b/gui/widget.h @@ -23,6 +23,7 @@  #include "common/scummsys.h"  #include "common/str.h" +#include "gui/font.h"  #include "gui/object.h"  namespace GUI { @@ -127,15 +128,15 @@ class StaticTextWidget : public Widget {  protected:  	typedef Common::String String; -	String _label; -	int		_align; +	String			_label; +	TextAlignment	_align;  public: -	StaticTextWidget(GuiObject *boss, int x, int y, int w, int h, const String &text, int align); +	StaticTextWidget(GuiObject *boss, int x, int y, int w, int h, const String &text, TextAlignment align);  	void setValue(int value);  	void setLabel(const String &label)	{ _label = label; }  	const String &getLabel() const		{ return _label; } -	void setAlign(int align)			{ _align = align; } -	int getAlign() const				{ return _align; } +	void setAlign(TextAlignment align)	{ _align = align; } +	TextAlignment getAlign() const		{ return _align; }  protected:  	void drawWidget(bool hilite);  | 
