From 791ad09510422d231b5e57b1a408dc8e993bc41a Mon Sep 17 00:00:00 2001 From: Nicola Mettifogo Date: Sun, 18 Mar 2007 10:38:31 +0000 Subject: Made loadFont return a new Cnv instead of accepting a parameter. svn-id: r26203 --- engines/parallaction/disk.cpp | 5 ++++- engines/parallaction/disk.h | 2 +- engines/parallaction/graphics.cpp | 34 +++++++++++++++++++--------------- engines/parallaction/graphics.h | 2 +- 4 files changed, 25 insertions(+), 18 deletions(-) diff --git a/engines/parallaction/disk.cpp b/engines/parallaction/disk.cpp index 8e2c2dd8a2..26da5f6967 100644 --- a/engines/parallaction/disk.cpp +++ b/engines/parallaction/disk.cpp @@ -313,11 +313,14 @@ StaticCnv* Disk::loadPointer() { return cnv; } -void Disk::loadFont(const char* name, Cnv* cnv) { +Cnv* Disk::loadFont(const char* name) { char path[PATH_LEN]; sprintf(path, "%scnv", name); + + Cnv* cnv = new Cnv; loadExternalCnv(path, cnv); + return cnv; } // loads character's icons set diff --git a/engines/parallaction/disk.h b/engines/parallaction/disk.h index 730cf559e6..d9163f92e4 100644 --- a/engines/parallaction/disk.h +++ b/engines/parallaction/disk.h @@ -109,7 +109,7 @@ public: Cnv* loadObjects(const char *name); StaticCnv* loadPointer(); StaticCnv* loadHead(const char* name); - void loadFont(const char* name, Cnv* cnv); + Cnv* loadFont(const char* name); void loadStatic(const char* name, StaticCnv* cnv); void loadFrames(const char* name, Cnv* cnv); void loadSlide(const char *filename); diff --git a/engines/parallaction/graphics.cpp b/engines/parallaction/graphics.cpp index e8d8da16d4..f2344a542c 100644 --- a/engines/parallaction/graphics.cpp +++ b/engines/parallaction/graphics.cpp @@ -587,9 +587,9 @@ void Gfx::displayString(uint16 x, uint16 y, const char *text) { for (uint16 i = 0; i < len; i++) { byte c = mapChar(text[i]); - tmp._width = _font._width; - tmp._height = _font._height; - tmp._data0 = _font._array[c]; + tmp._width = _font->_width; + tmp._height = _font->_height; + tmp._data0 = _font->_array[c]; flatBlitCnv(&tmp, x, y, kBitFront); @@ -609,12 +609,12 @@ void Gfx::displayBalloonString(uint16 x, uint16 y, const char *text, byte color) byte c = mapChar(text[i]); uint16 w = _proportionalFont ? _glyphWidths[(int)c] : 8; - byte *s = _font._array[c]; + byte *s = _font->_array[c]; byte *d = _buffers[kBitFront] + x + y*SCREEN_WIDTH; // printf("%i\n", text[i]); - for (uint16 j = 0; j < _font._height; j++) { + for (uint16 j = 0; j < _font->_height; j++) { for (uint16 k = 0; k < w; k++) { *d = (*s) ? 1 : color; d++; @@ -742,8 +742,10 @@ void Gfx::getStringExtent(char *text, uint16 maxwidth, int16* width, int16* heig void Gfx::setFont(const char* name) { - freeCnv(&_font); - _vm->_disk->loadFont(name, &_font); + freeCnv(_font); + if (_font) delete _font; + + _font = _vm->_disk->loadFont(name); } @@ -782,8 +784,8 @@ void Gfx::makeCnvFromString(StaticCnv *cnv, char *text) { uint16 len = strlen(text); - cnv->_width = _font._width * len; - cnv->_height = _font._height; + cnv->_width = _font->_width * len; + cnv->_height = _font->_height; // printf("%i x %i\n", cnv->_width, cnv->_height); @@ -792,10 +794,10 @@ void Gfx::makeCnvFromString(StaticCnv *cnv, char *text) { for (uint16 i = 0; i < len; i++) { byte c = mapChar(text[i]); - byte *s = _font._array[c]; - byte *d = cnv->_data0 + _font._width * i; + byte *s = _font->_array[c]; + byte *d = cnv->_data0 + _font->_width * i; - for (uint16 j = 0; j < _font._height; j++) { + for (uint16 j = 0; j < _font->_height; j++) { memcpy(d, s, 8); s += 8; @@ -970,8 +972,9 @@ Gfx::Gfx(Parallaction* vm) : initMouse( 0 ); - _font._count = 0; - _font._array = NULL; + _font = NULL; +// _font._count = 0; +// _font._array = NULL; return; } @@ -984,7 +987,8 @@ Gfx::~Gfx() { free(_buffers[kBitBack]); free(_buffers[kBit2]); - freeCnv(&_font); + freeCnv(_font); + if (_font) delete _font; return; } diff --git a/engines/parallaction/graphics.h b/engines/parallaction/graphics.h index 9301fed35d..1f91386777 100644 --- a/engines/parallaction/graphics.h +++ b/engines/parallaction/graphics.h @@ -151,7 +151,7 @@ protected: static byte _mouseArrow[256]; StaticCnv *_mouseComposedArrow; - Cnv _font; + Cnv *_font; protected: -- cgit v1.2.3