[Scummvm-cvs-logs] SF.net SVN: scummvm: [25900] scummvm/trunk/engines/parallaction
peres001 at users.sourceforge.net
peres001 at users.sourceforge.net
Tue Feb 27 20:39:35 CET 2007
Revision: 25900
http://scummvm.svn.sourceforge.net/scummvm/?rev=25900&view=rev
Author: peres001
Date: 2007-02-27 11:39:33 -0800 (Tue, 27 Feb 2007)
Log Message:
-----------
changed font handling:
- engine doesn't see font as a low-level Cnv anymore
- the Graphics class takes care of freeing memory on font changes
Modified Paths:
--------------
scummvm/trunk/engines/parallaction/callables.cpp
scummvm/trunk/engines/parallaction/dialogue.cpp
scummvm/trunk/engines/parallaction/graphics.cpp
scummvm/trunk/engines/parallaction/graphics.h
scummvm/trunk/engines/parallaction/intro.cpp
scummvm/trunk/engines/parallaction/location.cpp
scummvm/trunk/engines/parallaction/menu.cpp
scummvm/trunk/engines/parallaction/zone.cpp
Modified: scummvm/trunk/engines/parallaction/callables.cpp
===================================================================
--- scummvm/trunk/engines/parallaction/callables.cpp 2007-02-27 17:12:16 UTC (rev 25899)
+++ scummvm/trunk/engines/parallaction/callables.cpp 2007-02-27 19:39:33 UTC (rev 25900)
@@ -285,7 +285,7 @@
_vm->_graphics->palUnk0(_palette);
if (gameCompleted) {
- _vm->_graphics->loadExternalCnv("slidecnv", &Graphics::_font);
+ _vm->_graphics->setFont("slidecnv");
_vm->_graphics->_proportionalFont = false;
uint16 _ax = _vm->_graphics->getStringWidth(v4C[_language]);
_vm->_graphics->displayString((SCREEN_WIDTH - _ax)/2, 70, v4C[_language]);
@@ -303,9 +303,8 @@
strcpy(_location, "estgrotta.drki");
_engineFlags |= kEngineChangeLocation;
- _vm->_graphics->freeCnv(&Graphics::_font);
} else {
- _vm->_graphics->loadExternalCnv("slidecnv", &Graphics::_font);
+ _vm->_graphics->setFont("slidecnv");
_vm->_graphics->_proportionalFont = false;
uint16 _ax = _vm->_graphics->getStringWidth(v8C[_language]);
_vm->_graphics->displayString((SCREEN_WIDTH - _ax)/2, 70, v8C[_language]);
@@ -320,7 +319,6 @@
_vm->_graphics->copyScreen(Graphics::kBitFront, Graphics::kBit2);
waitUntilLeftClick();
- _vm->_graphics->freeCnv(&Graphics::_font);
_vm->_menu->selectCharacter();
}
@@ -357,7 +355,7 @@
_vm->parseLocation("common");
_vm->_archive.close();
- _vm->_graphics->loadExternalCnv("slidecnv", &Graphics::_font);
+ _vm->_graphics->setFont("slidecnv");
_vm->_graphics->_proportionalFont = false;
uint16 _ax = _vm->_graphics->getStringWidth(_slideText[0]);
@@ -368,8 +366,6 @@
_vm->_graphics->copyScreen(Graphics::kBitFront, Graphics::kBitBack);
_vm->_graphics->copyScreen(Graphics::kBitFront, Graphics::kBit2);
- _vm->_graphics->freeCnv(&Graphics::_font);
-
return;
}
Modified: scummvm/trunk/engines/parallaction/dialogue.cpp
===================================================================
--- scummvm/trunk/engines/parallaction/dialogue.cpp 2007-02-27 17:12:16 UTC (rev 25899)
+++ scummvm/trunk/engines/parallaction/dialogue.cpp 2007-02-27 19:39:33 UTC (rev 25900)
@@ -245,7 +245,7 @@
_vm->_graphics->loadExternalCnv(v20, &_characterFace);
debugC(1, kDebugDialogue, "runDialogue: 1st character head loaded");
- _vm->_graphics->loadExternalCnv("comiccnv", &Graphics::_font);
+ _vm->_graphics->setFont("comiccnv");
Cnv v6E;
StaticCnv v5C, v48;
@@ -519,8 +519,6 @@
debugC(1, kDebugDialogue, "runDialogue: 2nd character head free'd");
}
- _vm->_graphics->freeCnv(&Graphics::_font);
-
exitDialogue();
debugC(1, kDebugDialogue, "runDialogue: exit dialogue ok");
Modified: scummvm/trunk/engines/parallaction/graphics.cpp
===================================================================
--- scummvm/trunk/engines/parallaction/graphics.cpp 2007-02-27 17:12:16 UTC (rev 25899)
+++ scummvm/trunk/engines/parallaction/graphics.cpp 2007-02-27 19:39:33 UTC (rev 25900)
@@ -180,7 +180,6 @@
return;
}
-
void Graphics::buildBWPalette(byte *palette) {
for (uint16 i = 0; i < PALETTE_COLORS; i++) {
@@ -797,6 +796,14 @@
}
+void Graphics::setFont(const char* name) {
+ if (_font._array != NULL)
+ freeCnv(&_font);
+
+ loadExternalCnv(name, &_font);
+}
+
+
// backups background mask
//
//
@@ -1106,6 +1113,7 @@
memFree(cnv->_array[_si]);
}
memFree(cnv->_array);
+ cnv->_array = NULL;
return;
}
@@ -1366,6 +1374,8 @@
initMouse( 0 );
+ _font._array = NULL;
+
return;
}
@@ -1379,6 +1389,8 @@
memFree(_buffers[kBit2]);
memFree(_buffers[kBit3]);
+ freeCnv(&_font);
+
return;
}
Modified: scummvm/trunk/engines/parallaction/graphics.h
===================================================================
--- scummvm/trunk/engines/parallaction/graphics.h 2007-02-27 17:12:16 UTC (rev 25899)
+++ scummvm/trunk/engines/parallaction/graphics.h 2007-02-27 19:39:33 UTC (rev 25900)
@@ -140,11 +140,11 @@
void setMousePointer(int16 index);
+ void setFont(const char* name);
public:
static Point _labelPosition[2];
static bool _proportionalFont;
- static Cnv _font;
protected:
Parallaction* _vm;
@@ -154,6 +154,9 @@
static byte _mouseArrow[256];
static StaticCnv _mouseComposedArrow;
+ static Cnv _font;
+
+
protected:
//
// decompress a graphics block (size is *target* size)
Modified: scummvm/trunk/engines/parallaction/intro.cpp
===================================================================
--- scummvm/trunk/engines/parallaction/intro.cpp 2007-02-27 17:12:16 UTC (rev 25899)
+++ scummvm/trunk/engines/parallaction/intro.cpp 2007-02-27 19:39:33 UTC (rev 25900)
@@ -132,7 +132,7 @@
void _c_endIntro(void *parm) {
- _vm->_graphics->loadExternalCnv("slidecnv", &_vm->_graphics->_font);
+ _vm->_graphics->setFont("slidecnv");
_vm->_graphics->_proportionalFont = false;
uint16 _di;
@@ -153,7 +153,6 @@
}
waitUntilLeftClick();
- _vm->_graphics->freeCnv(&Graphics::_font);
_engineFlags &= ~kEngineMouse;
_vm->_menu->selectCharacter();
Modified: scummvm/trunk/engines/parallaction/location.cpp
===================================================================
--- scummvm/trunk/engines/parallaction/location.cpp 2007-02-27 17:12:16 UTC (rev 25899)
+++ scummvm/trunk/engines/parallaction/location.cpp 2007-02-27 19:39:33 UTC (rev 25900)
@@ -46,7 +46,7 @@
uint16 _si = 1;
_vm->_graphics->_proportionalFont = false;
- _vm->_graphics->loadExternalCnv("topazcnv", &Graphics::_font);
+ _vm->_graphics->setFont("topazcnv");
char archivefile[PATH_LEN];
@@ -189,7 +189,6 @@
}
resolveLocationForwards();
- _vm->_graphics->freeCnv(&Graphics::_font);
delete _locationScript;
_locationScript = NULL;
@@ -404,14 +403,13 @@
debugC(1, kDebugLocation, "changeLocation: new background set");
_vm->_graphics->_proportionalFont = false;
- _vm->_graphics->loadExternalCnv("slidecnv", &Graphics::_font);
+ _vm->_graphics->setFont("slidecnv");
uint16 _ax = strlen(_slideText[0]);
_ax <<= 3; // text width
uint16 _dx = (SCREEN_WIDTH - _ax) >> 1; // center text
_vm->_graphics->displayString(_dx, 14, _slideText[0]); // displays text on screen
- _vm->_graphics->freeCnv(&Graphics::_font);
waitUntilLeftClick();
debugC(2, kDebugLocation, "changeLocation: intro text shown");
@@ -511,7 +509,7 @@
jobEraseAnimations(NULL, NULL);
jobDisplayAnimations(NULL, NULL);
- _vm->_graphics->loadExternalCnv("comiccnv", &Graphics::_font);
+ _vm->_graphics->setFont("comiccnv");
_vm->_graphics->swapBuffers();
_vm->_graphics->copyScreen(Graphics::kBitFront, Graphics::kBitBack);
@@ -521,8 +519,6 @@
_vm->_graphics->floodFill(1, 6, 6, 9 + v7C, 4 + v7A, Graphics::kBitFront);
_vm->_graphics->displayWrappedString(_locationComment, 3, 5, 130, 0);
- _vm->_graphics->freeCnv( &Graphics::_font );
-
// FIXME: ???
#if 0
do {
Modified: scummvm/trunk/engines/parallaction/menu.cpp
===================================================================
--- scummvm/trunk/engines/parallaction/menu.cpp 2007-02-27 17:12:16 UTC (rev 25899)
+++ scummvm/trunk/engines/parallaction/menu.cpp 2007-02-27 19:39:33 UTC (rev 25900)
@@ -104,7 +104,7 @@
_vm->_archive.open("disk1");
_vm->_graphics->_proportionalFont = false;
- _vm->_graphics->loadExternalCnv("slidecnv", &Graphics::_font);
+ _vm->_graphics->setFont("slidecnv");
_vm->_graphics->Graphics::loadBackground("intro.slide", Graphics::kBitBack);
_vm->_graphics->palUnk0(_palette);
@@ -196,7 +196,6 @@
if (_mouseButtons != kMouseRightUp)
return; // show intro
- _vm->_graphics->freeCnv(&Graphics::_font);
_vm->_archive.close();
selectCharacter();
@@ -280,7 +279,6 @@
if (_si == 0) return 0; // new game
// load game
- _vm->_graphics->freeCnv(&Graphics::_font);
strcpy(_location, "fogne");
strcpy(_engine->_characterName, "dough");
@@ -316,7 +314,7 @@
_vm->_midiPlayer->stop();
_vm->_graphics->_proportionalFont = false;
- _vm->_graphics->loadExternalCnv("slidecnv", &Graphics::_font);
+ _vm->_graphics->setFont("slidecnv");
_vm->_archive.open("disk1");
_vm->_graphics->loadBackground("password.slide", Graphics::kBitBack);
@@ -416,7 +414,6 @@
_vm->_archive.close();
memFree(v14._data0);
- _vm->_graphics->freeCnv(&Graphics::_font);
refreshInventory(_vm->_characterName);
Modified: scummvm/trunk/engines/parallaction/zone.cpp
===================================================================
--- scummvm/trunk/engines/parallaction/zone.cpp 2007-02-27 17:12:16 UTC (rev 25899)
+++ scummvm/trunk/engines/parallaction/zone.cpp 2007-02-27 19:39:33 UTC (rev 25900)
@@ -389,7 +389,7 @@
v3C._data1 = NULL; //_characterFace.field_8[0];
v3C._data2 = NULL;
- _vm->_graphics->loadExternalCnv("comiccnv", &Graphics::_font);
+ _vm->_graphics->setFont("comiccnv");
_vm->_graphics->flatBlitCnv(&v3C, 190, 80, Graphics::kBitFront, v3C._data1);
int16 v26, v28;
@@ -397,8 +397,6 @@
_vm->_graphics->drawBalloon(140, 10, v28, v26, 0);
_vm->_graphics->displayWrappedString(data->_description, 140, 10, 130, 0);
- _vm->_graphics->freeCnv(&Graphics::_font);
-
// printf("wait left");
waitUntilLeftClick();
@@ -450,13 +448,12 @@
int16 v6A = 0, v6C = 0;
- _vm->_graphics->loadExternalCnv("comiccnv", &Graphics::_font);
+ _vm->_graphics->setFont("comiccnv");
_vm->_graphics->getStringExtent(data->_description, 130, &v6C, &v6A);
_vm->_graphics->drawBalloon(0, 90, v6C, v6A, 0);
_vm->_graphics->flatBlitCnv(&cnv, 100, 152, Graphics::kBitFront, cnv._data1);
_vm->_graphics->freeStaticCnv(&cnv);
_vm->_graphics->displayWrappedString(data->_description, 0, 90, 130, 0);
- _vm->_graphics->freeCnv(&Graphics::_font);
jobEraseAnimations((void*)1, NULL);
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
More information about the Scummvm-git-logs
mailing list