diff options
Diffstat (limited to 'sword2/maketext.h')
-rw-r--r-- | sword2/maketext.h | 119 |
1 files changed, 0 insertions, 119 deletions
diff --git a/sword2/maketext.h b/sword2/maketext.h deleted file mode 100644 index 364a412857..0000000000 --- a/sword2/maketext.h +++ /dev/null @@ -1,119 +0,0 @@ -/* Copyright (C) 1994-1998 Revolution Software Ltd. - * Copyright (C) 2003-2006 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - * - * $URL$ - * $Id$ - */ - -#ifndef _MAKETEXT_H -#define _MAKETEXT_H - -#include "sword2/debug.h" - -namespace Sword2 { - -// Output colour for character border - should be be black but note that we -// have to use a different pen number during sequences - -#define BORDER_PEN 194 - -// Usually the only texts on screen are the subtitles and the mouse-over text, -// but there can also be a considerable number of debugging messages... - -#define MAX_text_blocs MAX_DEBUG_TEXTS + 1 - -enum { - // Doesn't keep the text inside the screen - only for debug text! - NO_JUSTIFICATION = 0, - - // These all force text inside the screen edge margin when necessary - POSITION_AT_CENTRE_OF_BASE = 1, - POSITION_AT_CENTRE_OF_TOP = 2, - POSITION_AT_LEFT_OF_TOP = 3, - POSITION_AT_RIGHT_OF_TOP = 4, - POSITION_AT_LEFT_OF_BASE = 5, - POSITION_AT_RIGHT_OF_BASE = 6, - POSITION_AT_LEFT_OF_CENTRE = 7, - POSITION_AT_RIGHT_OF_CENTRE = 8 -}; - -enum { - DEFAULT_TEXT = 0, - FINNISH_TEXT = 1, - POLISH_TEXT = 2 -}; - -// Info about the text, used to create the SpriteInfo struct - - struct TextBloc { - int16 x; - int16 y; - uint16 type; - byte *text_mem; -}; - -// Info for each line of words in the output text sprite - -struct LineInfo { - uint16 width; // Width in pixels - uint16 length; // Length in characters -}; - -class FontRenderer { -private: - Sword2Engine *_vm; - TextBloc _blocList[MAX_text_blocs]; - - // Layout variables - these used to be defines, but now we're dealing - // with three character sets - - int8 _lineSpacing; // no. of pixels to separate lines of - // characters in the output sprite - negative - // for overlap - int8 _charSpacing; // no. of pixels to separate characters along - // each line - negative for overlap - uint8 _borderPen; // output pen colour of character borders - - uint16 analyseSentence(byte *sentence, uint16 maxWidth, uint32 fontRes, LineInfo *line); - byte *buildTextSprite(byte *sentence, uint32 fontRes, uint8 pen, LineInfo *line, uint16 noOfLines); - uint16 charWidth(byte ch, uint32 fontRes); - uint16 charHeight(uint32 fontRes); - byte *findChar(byte ch, byte *charSet); - void copyChar(byte *charPtr, byte *spritePtr, uint16 spriteWidth, uint8 pen); - -public: - FontRenderer(Sword2Engine *vm) : _vm(vm) { - for (int i = 0; i < MAX_text_blocs; i++) - _blocList[i].text_mem = NULL; - } - - ~FontRenderer() { - for (int i = 0; i < MAX_text_blocs; i++) - free(_blocList[i].text_mem); - } - - byte *makeTextSprite(byte *sentence, uint16 maxWidth, uint8 pen, uint32 fontRes, uint8 border = BORDER_PEN); - - void killTextBloc(uint32 bloc_number); - void printTextBlocs(); - - uint32 buildNewBloc(byte *ascii, int16 x, int16 y, uint16 width, uint8 pen, uint32 type, uint32 fontRes, uint8 justification); -}; - -} // End of namespace Sword2 - -#endif |