aboutsummaryrefslogtreecommitdiff
path: root/engines/sci/graphics/text32.cpp
diff options
context:
space:
mode:
authorFilippos Karapetis2011-10-30 12:12:40 +0200
committerFilippos Karapetis2011-10-30 21:42:33 +0200
commit9caacac724fa8b83b1949389bdeeba1ecb7fec6e (patch)
tree8d2b9aa48106f267734f4b92cbc20a7f6811328f /engines/sci/graphics/text32.cpp
parentacebd6d0be60c25c4e7b157f3dc04afe5fcbb535 (diff)
downloadscummvm-rg350-9caacac724fa8b83b1949389bdeeba1ecb7fec6e.tar.gz
scummvm-rg350-9caacac724fa8b83b1949389bdeeba1ecb7fec6e.tar.bz2
scummvm-rg350-9caacac724fa8b83b1949389bdeeba1ecb7fec6e.zip
SCI: More work on kEditText
Diffstat (limited to 'engines/sci/graphics/text32.cpp')
-rw-r--r--engines/sci/graphics/text32.cpp17
1 files changed, 13 insertions, 4 deletions
diff --git a/engines/sci/graphics/text32.cpp b/engines/sci/graphics/text32.cpp
index 37e421d09d..fd6637f313 100644
--- a/engines/sci/graphics/text32.cpp
+++ b/engines/sci/graphics/text32.cpp
@@ -52,7 +52,7 @@ GfxText32::GfxText32(SegManager *segMan, GfxCache *fonts, GfxScreen *screen)
GfxText32::~GfxText32() {
}
-reg_t GfxText32::createTextBitmap(reg_t textObject, uint16 maxWidth, uint16 maxHeight) {
+reg_t GfxText32::createTextBitmap(reg_t textObject, uint16 maxWidth, uint16 maxHeight, reg_t prevHunk) {
reg_t stringObject = readSelector(_segMan, textObject, SELECTOR(text));
// The object in the text selector of the item can be either a raw string
@@ -91,11 +91,20 @@ reg_t GfxText32::createTextBitmap(reg_t textObject, uint16 maxWidth, uint16 maxH
}
int entrySize = width * height + BITMAP_HEADER_SIZE;
- reg_t memoryId = _segMan->allocateHunkEntry("TextBitmap()", entrySize);
- writeSelector(_segMan, textObject, SELECTOR(bitmap), memoryId);
+ reg_t memoryId = NULL_REG;
+ if (prevHunk.isNull()) {
+ memoryId = _segMan->allocateHunkEntry("TextBitmap()", entrySize);
+ writeSelector(_segMan, textObject, SELECTOR(bitmap), memoryId);
+ } else {
+ memoryId = prevHunk;
+ }
byte *memoryPtr = _segMan->getHunkPointer(memoryId);
- memset(memoryPtr, backColor, entrySize);
+
+ if (prevHunk.isNull())
+ memset(memoryPtr, 0, BITMAP_HEADER_SIZE);
+
byte *bitmap = memoryPtr + BITMAP_HEADER_SIZE;
+ memset(bitmap, backColor, width * height);
// Save totalWidth, totalHeight
WRITE_LE_UINT16(memoryPtr, width);