aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBertrand Augereau2011-08-11 02:27:41 +0200
committerBertrand Augereau2011-08-11 02:27:41 +0200
commit3e9773a858b5d710845d7a188dbebbada1101887 (patch)
tree9d764b9d944e76d8cbe54b9e589b19f23f4d6bd7
parenta710b32c615d2d8bdf3c07f5e9674d37d40a009d (diff)
downloadscummvm-rg350-3e9773a858b5d710845d7a188dbebbada1101887.tar.gz
scummvm-rg350-3e9773a858b5d710845d7a188dbebbada1101887.tar.bz2
scummvm-rg350-3e9773a858b5d710845d7a188dbebbada1101887.zip
DREAMWEB: Stricter typing in the printing subsystem
-rw-r--r--engines/dreamweb/print.cpp38
-rw-r--r--engines/dreamweb/stubs.h8
2 files changed, 23 insertions, 23 deletions
diff --git a/engines/dreamweb/print.cpp b/engines/dreamweb/print.cpp
index 105f7e14f9..f8dddf3f4e 100644
--- a/engines/dreamweb/print.cpp
+++ b/engines/dreamweb/print.cpp
@@ -28,19 +28,19 @@ namespace DreamGen {
void DreamGenContext::printboth() {
uint16 x = di;
- printboth(ds.ptr(0, 0), &x, bx, al, ah);
+ printboth((const Frame *)ds.ptr(0, 0), &x, bx, al, ah);
di = x;
}
-void DreamGenContext::printboth(const void* src, uint16 *x, uint16 y, uint8 c, uint8 nextChar) {
+void DreamGenContext::printboth(const Frame *charSet, uint16 *x, uint16 y, uint8 c, uint8 nextChar) {
uint16 newX = *x;
uint8 width, height;
- printchar(src, &newX, y, c, nextChar, &width, &height);
+ printchar(charSet, &newX, y, c, nextChar, &width, &height);
multidump(*x, y, width, height);
*x = newX;
}
-uint8 DreamGenContext::getnextword(const uint8 *string, uint8 *totalWidth, uint8 *charCount) {
+uint8 DreamGenContext::getnextword(const Frame *charSet, const uint8 *string, uint8 *totalWidth, uint8 *charCount) {
*totalWidth = 0;
*charCount = 0;
while(true) {
@@ -58,7 +58,7 @@ uint8 DreamGenContext::getnextword(const uint8 *string, uint8 *totalWidth, uint8
firstChar = engine->modifyChar(firstChar);
if (firstChar != 255) {
uint8 secondChar = *string;
- uint8 width = ds.byte(6*(firstChar - 32 + data.word(kCharshift)));
+ uint8 width = charSet[firstChar - 32 + data.word(kCharshift)].width;
width = kernchars(firstChar, secondChar, width);
*totalWidth += width;
}
@@ -67,7 +67,7 @@ uint8 DreamGenContext::getnextword(const uint8 *string, uint8 *totalWidth, uint8
void DreamGenContext::getnextword() {
uint8 totalWidth, charCount;
- al = getnextword(es.ptr(di, 0), &totalWidth, &charCount);
+ al = getnextword((Frame *)ds.ptr(0, 0), es.ptr(di, 0), &totalWidth, &charCount);
bl = totalWidth;
bh = charCount;
di += charCount;
@@ -76,13 +76,13 @@ void DreamGenContext::getnextword() {
void DreamGenContext::printchar() {
uint16 x = di;
uint8 width, height;
- printchar(ds.ptr(0, 0), &x, bx, al, ah, &width, &height);
+ printchar((const Frame *)ds.ptr(0, 0), &x, bx, al, ah, &width, &height);
di = x;
cl = width;
ch = height;
}
-void DreamGenContext::printchar(const void *src, uint16* x, uint16 y, uint8 c, uint8 nextChar, uint8 *width, uint8 *height) {
+void DreamGenContext::printchar(const Frame *charSet, uint16* x, uint16 y, uint8 c, uint8 nextChar, uint8 *width, uint8 *height) {
if (c == 255)
return;
push(si);
@@ -90,7 +90,7 @@ void DreamGenContext::printchar(const void *src, uint16* x, uint16 y, uint8 c, u
if (data.byte(kForeignrelease) != 0)
y -= 3;
uint16 tmp = c - 32 + data.word(kCharshift);
- showframe(src, *x, y, tmp & 0x1ff, (tmp >> 8) & 0xfe, width, height);
+ showframe(charSet, *x, y, tmp & 0x1ff, (tmp >> 8) & 0xfe, width, height);
di = pop();
si = pop();
_cmp(data.byte(kKerning), 0);
@@ -107,10 +107,10 @@ uint8 DreamGenContext::printslow(uint16 x, uint16 y, uint8 maxWidth, bool center
data.byte(kPointerframe) = 1;
data.byte(kPointermode) = 3;
ds = data.word(kCharset1);
- const void* src = ds.ptr(0, 0);
+ const Frame* charSet = (const Frame *)ds.ptr(0, 0);
do {
uint16 offset = x;
- uint16 charCount = getnumber(es.ptr(si, 0), maxWidth, centered, &offset);
+ uint16 charCount = getnumber(charSet, es.ptr(si, 0), maxWidth, centered, &offset);
do {
push(si);
push(es);
@@ -118,7 +118,7 @@ uint8 DreamGenContext::printslow(uint16 x, uint16 y, uint8 maxWidth, bool center
uint8 c1 = es.byte(si+1);
uint8 c2 = es.byte(si+2);
c0 = engine->modifyChar(c0);
- printboth(src, &offset, y, c0, c1);
+ printboth(charSet, &offset, y, c0, c1);
++si;
if ((c1 == 0) || (c1 == ':')) {
es = pop();
@@ -129,7 +129,7 @@ uint8 DreamGenContext::printslow(uint16 x, uint16 y, uint8 maxWidth, bool center
c1 = engine->modifyChar(c1);
data.word(kCharshift) = 91;
uint16 offset2 = offset;
- printboth(src, &offset2, y, c1, c2);
+ printboth(charSet, &offset2, y, c1, c2);
data.word(kCharshift) = 0;
for (int i=0; i<2; ++i) {
waitframes();
@@ -165,10 +165,10 @@ void DreamGenContext::printdirect() {
void DreamGenContext::printdirect(const uint8** string, uint16 x, uint16 *y, uint8 maxWidth, bool centered) {
data.word(kLastxpos) = x;
ds = data.word(kCurrentset);
- const void *src = ds.ptr(0, 0);
+ const Frame *charSet = (const Frame *)ds.ptr(0, 0);
while (true) {
uint16 offset = x;
- uint8 charCount = getnumber(*string, maxWidth, centered, &offset);
+ uint8 charCount = getnumber(charSet, *string, maxWidth, centered, &offset);
uint16 i = offset;
do {
uint8 c = (*string)[0];
@@ -179,7 +179,7 @@ void DreamGenContext::printdirect(const uint8** string, uint16 x, uint16 *y, uin
}
c = engine->modifyChar(c);
uint8 width, height;
- printchar(src, &i, *y, c, nextChar, &width, &height);
+ printchar(charSet, &i, *y, c, nextChar, &width, &height);
data.word(kLastxpos) = i;
--charCount;
} while(charCount);
@@ -189,16 +189,16 @@ void DreamGenContext::printdirect(const uint8** string, uint16 x, uint16 *y, uin
void DreamGenContext::getnumber() {
uint16 offset = di;
- cl = getnumber(es.ptr(si, 0), dl, (bool)(dl & 1), &offset);
+ cl = getnumber((Frame *)ds.ptr(0, 0), es.ptr(si, 0), dl, (bool)(dl & 1), &offset);
di = offset;
}
-uint8 DreamGenContext::getnumber(const uint8 *string, uint16 maxWidth, bool centered, uint16* offset) {
+uint8 DreamGenContext::getnumber(const Frame *charSet, const uint8 *string, uint16 maxWidth, bool centered, uint16* offset) {
uint8 totalWidth = 0;
uint8 charCount = 0;
while (true) {
uint8 wordTotalWidth, wordCharCount;
- uint8 done = getnextword(string, &wordTotalWidth, &wordCharCount);
+ uint8 done = getnextword(charSet, string, &wordTotalWidth, &wordCharCount);
string += wordCharCount;
if (done == 1) { //endoftext
diff --git a/engines/dreamweb/stubs.h b/engines/dreamweb/stubs.h
index 840a47384d..5ac340feea 100644
--- a/engines/dreamweb/stubs.h
+++ b/engines/dreamweb/stubs.h
@@ -42,11 +42,11 @@
void randomnumber();
void quickquit2();
void getnextword();
- uint8 getnextword(const uint8 *string, uint8 *totalWidth, uint8 *charCount);
+ uint8 getnextword(const Frame *charSet, const uint8 *string, uint8 *totalWidth, uint8 *charCount);
void printboth();
- void printboth(const void *src, uint16 *x, uint16 y, uint8 c, uint8 nextChar);
+ void printboth(const Frame* charSet, uint16 *x, uint16 y, uint8 c, uint8 nextChar);
void printchar();
- void printchar(const void *src, uint16 *x, uint16 y, uint8 c, uint8 nextChar, uint8 *width, uint8 *height);
+ void printchar(const Frame* charSet, uint16 *x, uint16 y, uint8 c, uint8 nextChar, uint8 *width, uint8 *height);
void printdirect();
void printdirect(const uint8** string, uint16 x, uint16 *y, uint8 maxWidth, bool centered);
void usetimedtext();
@@ -56,7 +56,7 @@
void printslow();
void dumptextline();
void getnumber();
- uint8 getnumber(const uint8 *string, uint16 maxWidth, bool centered, uint16 *offset);
+ uint8 getnumber(const Frame *charSet, const uint8 *string, uint16 maxWidth, bool centered, uint16 *offset);
void kernchars();
uint8 kernchars(uint8 firstChar, uint8 secondChar, uint8 width);
void getroomdata();