diff options
author | Filippos Karapetis | 2011-10-30 12:12:40 +0200 |
---|---|---|
committer | Filippos Karapetis | 2011-10-30 21:42:33 +0200 |
commit | 9caacac724fa8b83b1949389bdeeba1ecb7fec6e (patch) | |
tree | 8d2b9aa48106f267734f4b92cbc20a7f6811328f /engines/sci/graphics/text32.cpp | |
parent | acebd6d0be60c25c4e7b157f3dc04afe5fcbb535 (diff) | |
download | scummvm-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.cpp | 17 |
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); |