aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--engines/lab/engine.cpp3
-rw-r--r--engines/lab/intro.cpp3
-rw-r--r--engines/lab/labfun.h2
-rw-r--r--engines/lab/map.cpp41
-rw-r--r--engines/lab/special.cpp13
-rw-r--r--engines/lab/text.cpp42
-rw-r--r--engines/lab/text.h1
7 files changed, 14 insertions, 91 deletions
diff --git a/engines/lab/engine.cpp b/engines/lab/engine.cpp
index 34ca89c192..571b72d88d 100644
--- a/engines/lab/engine.cpp
+++ b/engines/lab/engine.cpp
@@ -38,6 +38,7 @@
#include "lab/parsefun.h"
#include "lab/interface.h"
#include "lab/mouse.h"
+#include "lab/resource.h"
namespace Lab {
@@ -1361,7 +1362,7 @@ void LabEngine::go() {
if (!dointro)
g_music->initMusic();
- openFont("P:AvanteG.12", &MsgFont);
+ MsgFont = g_resource->getFont("P:AvanteG.12");
mouseHide();
diff --git a/engines/lab/intro.cpp b/engines/lab/intro.cpp
index 4f1720fe23..2ffddf7dc5 100644
--- a/engines/lab/intro.cpp
+++ b/engines/lab/intro.cpp
@@ -31,6 +31,7 @@
#include "lab/lab.h"
#include "lab/stddefines.h"
#include "lab/labfun.h"
+#include "lab/resource.h"
#include "lab/timing.h"
#include "lab/diff.h"
#include "lab/text.h"
@@ -352,7 +353,7 @@ void introSequence() {
blackAllScreen();
g_music->updateMusic();
- getFont("P:Map.fon", msgfont);
+ msgfont = g_resource->getFont("P:Map.fon");
nopalchange = true;
NReadPict("Intro.1", true);
diff --git a/engines/lab/labfun.h b/engines/lab/labfun.h
index 1db04a8c09..9ed334f431 100644
--- a/engines/lab/labfun.h
+++ b/engines/lab/labfun.h
@@ -99,7 +99,6 @@ uint32 flowTextToMem(Image *DestIm, void *font, /* the TextAttr pointer */
void drawMessage(const char *text);
int32 longDrawMessage(const char *text);
-bool readFont(char *filename, void *font, void *data);
/* The Wipes */
@@ -255,7 +254,6 @@ char *translateFileName(const char *filename);
void fade(bool fadein, uint16 res);
void setAmigaPal(uint16 *pal, uint16 numcolors);
char *getText(const char *filename);
-bool getFont(const char *filename, TextFont *textfont);
void readImage(byte **buffer, Image **im);
void doMap(uint16 CurRoom);
void doJournal();
diff --git a/engines/lab/map.cpp b/engines/lab/map.cpp
index 2e3dffc943..34eb018f94 100644
--- a/engines/lab/map.cpp
+++ b/engines/lab/map.cpp
@@ -37,6 +37,7 @@
#include "lab/mouse.h"
#include "lab/parsefun.h"
#include "lab/parsetypes.h"
+#include "lab/resource.h"
#include "lab/interface.h"
#include "lab/text.h"
@@ -74,44 +75,6 @@ void setAmigaPal(uint16 *pal, uint16 numcolors) {
}
-/*****************************************************************************/
-/* Gets a font from disk and puts it into temporary memory. */
-/*****************************************************************************/
-bool getFont(const char *filename, TextFont *textfont) {
- byte **file = NULL;
- char header[5];
- uint32 filesize, headersize = 4L + 2L + 256 * 3 + 4L;
-
- file = g_music->newOpen(filename, filesize);
- g_music->updateMusic();
-
- if ((file != NULL) && (filesize > headersize)) {
- byte *fontbuffer = (byte *)stealBufMem(filesize - (sizeof(TextFont) + 4));
- if (!fontbuffer)
- return false;
-
- header[4] = 0;
- readBlock(&header, 4L, file);
-
- if (strcmp(header, "VGAF") == 0) {
- textfont->DataLength = filesize - headersize;
- readBlock(&(textfont->Height), 2L, file);
- swapUShortPtr(&(textfont->Height), 1);
-
- readBlock(textfont->Widths, 256L, file);
- readBlock(textfont->Offsets, 256L * 2L, file);
- swapUShortPtr(textfont->Offsets, 256);
-
- (*file) += 4;
- textfont->data = fontbuffer;
- readBlock(textfont->data, textfont->DataLength, file);
- return true;
- }
- }
-
- return false;
-}
-
/*****************************************************************************/
/* Gets a chunk of text and puts it into the graphics memory. */
@@ -234,7 +197,7 @@ static bool loadMapData() {
BigMsgFont = &bmf;
- if (!getFont("P:Map.fon", BigMsgFont))
+ if (!(BigMsgFont = g_resource->getFont("P:Map.fon")))
BigMsgFont = MsgFont;
resetBuffer(); /* Make images load into start of buffer */
diff --git a/engines/lab/special.cpp b/engines/lab/special.cpp
index bedf7215d0..b7f14729a9 100644
--- a/engines/lab/special.cpp
+++ b/engines/lab/special.cpp
@@ -44,6 +44,7 @@
#include "lab/timing.h"
#include "lab/stddefines.h"
#include "lab/parsetypes.h"
+#include "lab/resource.h"
namespace Lab {
@@ -474,7 +475,7 @@ void doNotes() {
/* Load in the data */
BigMsgFont = &bmfont;
- if (!getFont("P:Note.fon", BigMsgFont)) {
+ if (!(BigMsgFont = g_resource->getFont("P:Note.fon"))) {
BigMsgFont = NULL;
return;
}
@@ -500,7 +501,7 @@ void doWestPaper() {
BigMsgFont = &bmfont;
- if (!getFont("P:News22.fon", BigMsgFont)) {
+ if (!(BigMsgFont = g_resource->getFont("P:News22.fon"))) {
BigMsgFont = NULL;
return;
}
@@ -512,7 +513,7 @@ void doWestPaper() {
BigMsgFont = &bmfont;
- if (!getFont("P:News32.fon", BigMsgFont)) {
+ if (!(BigMsgFont = g_resource->getFont("P:News32.fon"))) {
BigMsgFont = NULL;
return;
}
@@ -531,7 +532,7 @@ void doWestPaper() {
BigMsgFont = &bmfont;
- if (!getFont("P:Note.fon", BigMsgFont)) {
+ if (!(BigMsgFont = g_resource->getFont("P:Note.fon"))) {
BigMsgFont = NULL;
return;
}
@@ -562,7 +563,7 @@ static bool loadJournalData() {
BigMsgFont = &bmfont;
- if (!getFont("P:Journal.fon", BigMsgFont)) {
+ if (!(BigMsgFont = g_resource->getFont("P:Journal.fon"))) {
BigMsgFont = NULL;
return false;
}
@@ -1071,7 +1072,7 @@ void doMonitor(char *background, char *textfile, bool isinteractive, uint16 x1,
BigMsgFont = &bmfont;
- if (!getFont("P:Map.fon", BigMsgFont)) {
+ if (!(BigMsgFont = g_resource->getFont("P:Map.fon"))) {
freeAllStolenMem();
BigMsgFont = NULL;
return;
diff --git a/engines/lab/text.cpp b/engines/lab/text.cpp
index f31515fa5f..807df45a04 100644
--- a/engines/lab/text.cpp
+++ b/engines/lab/text.cpp
@@ -38,52 +38,12 @@ namespace Lab {
extern uint32 VGAScreenWidth, VGABytesPerPage;
/*****************************************************************************/
-/* Opens up a font from disk. */
-/*****************************************************************************/
-bool openFont(const char *TextFontPath, struct TextFont **tf) {
- byte **file = NULL;
- char header[5];
- uint32 filesize, headersize = 4L + 2L + 256 * 3 + 4L;
-
- if ((*tf = (TextFont *)calloc(sizeof(struct TextFont), 1))) {
- file = g_music->newOpen(TextFontPath, filesize);
-
- if ((file != NULL) && (filesize > headersize)) {
- header[4] = 0;
- readBlock(&header, 4L, file);
-
- if (strcmp(header, "VGAF") == 0) {
- (*tf)->DataLength = filesize - headersize;
- readBlock(&((*tf)->Height), 2L, file);
- swapUShortPtr(&((*tf)->Height), 1);
-
- readBlock((*tf)->Widths, 256L, file);
- readBlock((*tf)->Offsets, 256L * 2L, file);
- swapUShortPtr((*tf)->Offsets, 256);
-
- (*file) += 4;
-
- if (((*tf)->data = (byte *)calloc((*tf)->DataLength, 1))) {
- readBlock((*tf)->data, (*tf)->DataLength, file);
- return true;
- }
- }
- }
-
- free(*tf);
- }
-
- *tf = NULL;
- return false;
-}
-
-/*****************************************************************************/
/* Closes a font and frees all memory associated with it. */
/*****************************************************************************/
void closeFont(struct TextFont *tf) {
if (tf) {
if (tf->data && tf->DataLength)
- free(tf->data);
+ delete[] tf->data;
free(tf);
}
diff --git a/engines/lab/text.h b/engines/lab/text.h
index 333f449203..8d171b2094 100644
--- a/engines/lab/text.h
+++ b/engines/lab/text.h
@@ -52,7 +52,6 @@ struct TextFont {
#pragma pack(pop)
#endif
-bool openFont(const char *TextFontPath, TextFont **tf);
void closeFont(TextFont *tf);
uint16 textLength(TextFont *tf, const char *text, uint16 numchars);
uint16 textHeight(TextFont *tf);