diff options
Diffstat (limited to 'sword1/text.cpp')
-rw-r--r-- | sword1/text.cpp | 26 |
1 files changed, 15 insertions, 11 deletions
diff --git a/sword1/text.cpp b/sword1/text.cpp index e0b6141efd..e72cf3c999 100644 --- a/sword1/text.cpp +++ b/sword1/text.cpp @@ -27,6 +27,8 @@ #include "swordres.h" #include "sworddefs.h" +namespace Sword1 { + #define OVERLAP 3 #define SPACE ' ' #define BORDER_COL 200 @@ -35,7 +37,7 @@ #define MAX_LINES 30 -SwordText::SwordText(ObjectMan *pObjMan, ResMan *pResMan, bool czechVersion) { +Text::Text(ObjectMan *pObjMan, ResMan *pResMan, bool czechVersion) { _objMan = pObjMan; _resMan = pResMan; _textCount = 0; @@ -48,17 +50,17 @@ SwordText::SwordText(ObjectMan *pObjMan, ResMan *pResMan, bool czechVersion) { _textBlocks[0] = _textBlocks[1] = NULL; } -SwordText::~SwordText(void) { +Text::~Text(void) { if (_textBlocks[0]) free(_textBlocks[0]); if (_textBlocks[1]) free(_textBlocks[1]); } -uint32 SwordText::lowTextManager(uint8 *ascii, int32 width, uint8 pen) { +uint32 Text::lowTextManager(uint8 *ascii, int32 width, uint8 pen) { _textCount++; if (_textCount > MAX_TEXT_OBS) - error("SwordText::lowTextManager: MAX_TEXT_OBS exceeded!"); + error("Text::lowTextManager: MAX_TEXT_OBS exceeded!"); uint32 textObjId = (TEXT_sect * ITM_PER_SEC) - 1; do { textObjId++; @@ -71,7 +73,7 @@ uint32 SwordText::lowTextManager(uint8 *ascii, int32 width, uint8 pen) { return textObjId; } -void SwordText::makeTextSprite(uint8 slot, uint8 *text, uint16 maxWidth, uint8 pen) { +void Text::makeTextSprite(uint8 slot, uint8 *text, uint16 maxWidth, uint8 pen) { LineInfo lines[MAX_LINES]; uint16 numLines = analyzeSentence(text, maxWidth, lines); @@ -82,7 +84,7 @@ void SwordText::makeTextSprite(uint8 slot, uint8 *text, uint16 maxWidth, uint8 p sprWidth = lines[lineCnt].width; uint16 sprHeight = _charHeight * numLines; uint32 sprSize = sprWidth * sprHeight; - assert(!_textBlocks[slot]); // if this triggers, the speechDriver failed to call SwordText::releaseText. + assert(!_textBlocks[slot]); // if this triggers, the speechDriver failed to call Text::releaseText. _textBlocks[slot] = (FrameHeader*)malloc(sprSize + sizeof(FrameHeader)); memcpy( _textBlocks[slot]->runTimeComp, "Nu ", 4); @@ -103,13 +105,13 @@ void SwordText::makeTextSprite(uint8 slot, uint8 *text, uint16 maxWidth, uint8 p } } -uint16 SwordText::charWidth(uint8 ch) { +uint16 Text::charWidth(uint8 ch) { if (ch < SPACE) ch = 64; return FROM_LE_16(_resMan->fetchFrame(_font, ch - SPACE)->width); } -uint16 SwordText::analyzeSentence(uint8 *text, uint16 maxWidth, LineInfo *line) { +uint16 Text::analyzeSentence(uint8 *text, uint16 maxWidth, LineInfo *line) { uint16 lineNo = 0; bool firstWord = true; @@ -149,7 +151,7 @@ uint16 SwordText::analyzeSentence(uint8 *text, uint16 maxWidth, LineInfo *line) return lineNo+1; // return no of lines } -uint16 SwordText::copyChar(uint8 ch, uint8 *sprPtr, uint16 sprWidth, uint8 pen) { +uint16 Text::copyChar(uint8 ch, uint8 *sprPtr, uint16 sprWidth, uint8 pen) { FrameHeader *chFrame = _resMan->fetchFrame(_font, ch - SPACE); uint8 *chData = ((uint8*)chFrame) + sizeof(FrameHeader); uint8 *dest = sprPtr; @@ -166,7 +168,7 @@ uint16 SwordText::copyChar(uint8 ch, uint8 *sprPtr, uint16 sprWidth, uint8 pen) return FROM_LE_16(chFrame->width); } -FrameHeader *SwordText::giveSpriteData(uint32 textTarget) { +FrameHeader *Text::giveSpriteData(uint32 textTarget) { // textTarget is the resource ID of the Compact linking the textdata. // that's 0x950000 for slot 0 and 0x950001 for slot 1. easy, huh? :) textTarget &= ITM_ID; @@ -175,7 +177,7 @@ FrameHeader *SwordText::giveSpriteData(uint32 textTarget) { return _textBlocks[textTarget]; } -void SwordText::releaseText(uint32 id) { +void Text::releaseText(uint32 id) { id &= ITM_ID; assert(id <= 1); if (_textBlocks[id]) { @@ -184,3 +186,5 @@ void SwordText::releaseText(uint32 id) { _textCount--; } } + +} // End of namespace Sword1 |