diff options
author | Martin Kiewitz | 2010-01-31 12:35:15 +0000 |
---|---|---|
committer | Martin Kiewitz | 2010-01-31 12:35:15 +0000 |
commit | 7929255cd9723ebba451d5b9dd4d4597ed32e6a7 (patch) | |
tree | 8cd2c05a2e023aa0d8e56eec338c06690888cddc /engines/sci/graphics/text.cpp | |
parent | 5278b82f33dd1083b99470bb8dcf941debb6b446 (diff) | |
download | scummvm-rg350-7929255cd9723ebba451d5b9dd4d4597ed32e6a7.tar.gz scummvm-rg350-7929255cd9723ebba451d5b9dd4d4597ed32e6a7.tar.bz2 scummvm-rg350-7929255cd9723ebba451d5b9dd4d4597ed32e6a7.zip |
SCI: cleaned up graphics classes, removed gfx&windowmgr, added gfxports, gfxcompare, gfxpaint16, gfxcache. kernel uses gfxports directly w/o going through SciGui
svn-id: r47745
Diffstat (limited to 'engines/sci/graphics/text.cpp')
-rw-r--r-- | engines/sci/graphics/text.cpp | 85 |
1 files changed, 43 insertions, 42 deletions
diff --git a/engines/sci/graphics/text.cpp b/engines/sci/graphics/text.cpp index c5a6c5ced2..f1be3eb1b5 100644 --- a/engines/sci/graphics/text.cpp +++ b/engines/sci/graphics/text.cpp @@ -29,14 +29,15 @@ #include "sci/sci.h" #include "sci/engine/state.h" -#include "sci/graphics/gfx.h" +#include "sci/graphics/ports.h" +#include "sci/graphics/paint16.h" #include "sci/graphics/font.h" #include "sci/graphics/text.h" namespace Sci { -Text::Text(ResourceManager *resMan, Gfx *gfx, Screen *screen) - : _resMan(resMan), _gfx(gfx), _screen(screen) { +Text::Text(ResourceManager *resMan, GfxPorts *ports, GfxPaint16 *paint16, Screen *screen) + : _resMan(resMan), _ports(ports), _paint16(paint16), _screen(screen) { init(); } @@ -53,13 +54,13 @@ void Text::init() { } GuiResourceId Text::GetFontId() { - return _gfx->_curPort->fontId; + return _ports->_curPort->fontId; } Font *Text::GetFont() { - if ((_font == NULL) || (_font->getResourceId() != _gfx->_curPort->fontId)) { + if ((_font == NULL) || (_font->getResourceId() != _ports->_curPort->fontId)) { delete _font; - _font = new Font(_resMan, _gfx->_curPort->fontId); + _font = new Font(_resMan, _ports->_curPort->fontId); } return _font; @@ -71,8 +72,8 @@ void Text::SetFont(GuiResourceId fontId) { _font = new Font(_resMan, fontId); } - _gfx->_curPort->fontId = _font->getResourceId(); - _gfx->_curPort->fontHeight = _font->getHeight(); + _ports->_curPort->fontId = _font->getResourceId(); + _ports->_curPort->fontHeight = _font->getHeight(); } void Text::CodeSetFonts(int argc, reg_t *argv) { @@ -98,21 +99,21 @@ void Text::CodeSetColors(int argc, reg_t *argv) { } void Text::ClearChar(int16 chr) { - if (_gfx->_curPort->penMode != 1) + if (_ports->_curPort->penMode != 1) return; Common::Rect rect; - rect.top = _gfx->_curPort->curTop; - rect.bottom = rect.top + _gfx->_curPort->fontHeight; - rect.left = _gfx->_curPort->curLeft; + rect.top = _ports->_curPort->curTop; + rect.bottom = rect.top + _ports->_curPort->fontHeight; + rect.left = _ports->_curPort->curLeft; rect.right = rect.left + GetFont()->getCharWidth(chr); - _gfx->EraseRect(rect); + _paint16->eraseRect(rect); } void Text::DrawChar(int16 chr) { chr = chr & 0xFF; ClearChar(chr); StdChar(chr); - _gfx->_curPort->curLeft += GetFont()->getCharWidth(chr); + _ports->_curPort->curLeft += GetFont()->getCharWidth(chr); } void Text::StdChar(int16 chr) { @@ -151,10 +152,10 @@ int16 Text::CodeProcessing(const char *&text, GuiResourceId orgFontId, int16 org switch (curCode) { case 'c': // set text color if (curCodeParm == 0) { - _gfx->_curPort->penClr = orgPenColor; + _ports->_curPort->penClr = orgPenColor; } else { if (curCodeParm < _codeColorsCount) { - _gfx->_curPort->penClr = _codeColors[curCodeParm]; + _ports->_curPort->penClr = _codeColors[curCodeParm]; } } break; @@ -177,7 +178,7 @@ int16 Text::GetLongest(const char *text, int16 maxWidth, GuiResourceId orgFontId int16 maxChars = 0, curCharCount = 0; uint16 width = 0; GuiResourceId oldFontId = GetFontId(); - int16 oldPenColor = _gfx->_curPort->penClr; + int16 oldPenColor = _ports->_curPort->penClr; GetFont(); if (!_font) @@ -202,7 +203,7 @@ int16 Text::GetLongest(const char *text, int16 maxWidth, GuiResourceId orgFontId curCharCount++; case 0: SetFont(oldFontId); - _gfx->PenColor(oldPenColor); + _ports->penColor(oldPenColor); return curCharCount; case ' ': @@ -213,14 +214,14 @@ int16 Text::GetLongest(const char *text, int16 maxWidth, GuiResourceId orgFontId curCharCount++; } SetFont(oldFontId); - _gfx->PenColor(oldPenColor); + _ports->penColor(oldPenColor); return maxChars; } void Text::Width(const char *text, int16 from, int16 len, GuiResourceId orgFontId, int16 &textWidth, int16 &textHeight) { unsigned char curChar; GuiResourceId oldFontId = GetFontId(); - int16 oldPenColor = _gfx->_curPort->penClr; + int16 oldPenColor = _ports->_curPort->penClr; textWidth = 0; textHeight = 0; @@ -232,7 +233,7 @@ void Text::Width(const char *text, int16 from, int16 len, GuiResourceId orgFontI switch (curChar) { case 0x0A: case 0x0D: - textHeight = MAX<int16> (textHeight, _gfx->_curPort->fontHeight); + textHeight = MAX<int16> (textHeight, _ports->_curPort->fontHeight); break; case 0x7C: if (getSciVersion() >= SCI_VERSION_1_1) { @@ -240,13 +241,13 @@ void Text::Width(const char *text, int16 from, int16 len, GuiResourceId orgFontI break; } default: - textHeight = MAX<int16> (textHeight, _gfx->_curPort->fontHeight); + textHeight = MAX<int16> (textHeight, _ports->_curPort->fontHeight); textWidth += _font->getCharWidth(curChar); } } } SetFont(oldFontId); - _gfx->PenColor(oldPenColor); + _ports->penColor(oldPenColor); return; } @@ -263,7 +264,7 @@ void Text::DrawString(const char *str, GuiResourceId orgFontId, int16 orgPenColo int16 Text::Size(Common::Rect &rect, const char *str, GuiResourceId fontId, int16 maxWidth) { GuiResourceId oldFontId = GetFontId(); - int16 oldPenColor = _gfx->_curPort->penClr; + int16 oldPenColor = _ports->_curPort->penClr; int16 charCount; int16 maxTextWidth = 0, textWidth; int16 totalHeight = 0, textHeight; @@ -298,7 +299,7 @@ int16 Text::Size(Common::Rect &rect, const char *str, GuiResourceId fontId, int1 rect.right = maxWidth ? maxWidth : MIN(rect.right, maxTextWidth); } SetFont(oldFontId); - _gfx->PenColor(oldPenColor); + _ports->penColor(oldPenColor); return rect.right; } @@ -311,8 +312,8 @@ void Text::Draw(const char *text, int16 from, int16 len, GuiResourceId orgFontId if (!_font) return; - rect.top = _gfx->_curPort->curTop; - rect.bottom = rect.top + _gfx->_curPort->fontHeight; + rect.top = _ports->_curPort->curTop; + rect.bottom = rect.top + _ports->_curPort->fontHeight; text += from; while (len--) { curChar = (*text++); @@ -329,14 +330,14 @@ void Text::Draw(const char *text, int16 from, int16 len, GuiResourceId orgFontId default: charWidth = _font->getCharWidth(curChar); // clear char - if (_gfx->_curPort->penMode == 1) { - rect.left = _gfx->_curPort->curLeft; + if (_ports->_curPort->penMode == 1) { + rect.left = _ports->_curPort->curLeft; rect.right = rect.left + charWidth; - _gfx->EraseRect(rect); + _paint16->eraseRect(rect); } // CharStd - _font->draw(_screen, curChar, _gfx->_curPort->top + _gfx->_curPort->curTop, _gfx->_curPort->left + _gfx->_curPort->curLeft, _gfx->_curPort->penClr, _gfx->_curPort->greyedOutput); - _gfx->_curPort->curLeft += charWidth; + _font->draw(_screen, curChar, _ports->_curPort->top + _ports->_curPort->curTop, _ports->_curPort->left + _ports->_curPort->curLeft, _ports->_curPort->penClr, _ports->_curPort->greyedOutput); + _ports->_curPort->curLeft += charWidth; } } } @@ -345,12 +346,12 @@ void Text::Draw(const char *text, int16 from, int16 len, GuiResourceId orgFontId void Text::Show(const char *text, int16 from, int16 len, GuiResourceId orgFontId, int16 orgPenColor) { Common::Rect rect; - rect.top = _gfx->_curPort->curTop; - rect.bottom = rect.top + _gfx->GetPointSize(); - rect.left = _gfx->_curPort->curLeft; + rect.top = _ports->_curPort->curTop; + rect.bottom = rect.top + _ports->getPointSize(); + rect.left = _ports->_curPort->curLeft; Draw(text, from, len, orgFontId, orgPenColor); - rect.right = _gfx->_curPort->curLeft; - _gfx->BitsShow(rect); + rect.right = _ports->_curPort->curLeft; + _paint16->bitsShow(rect); } // Draws a text in rect. @@ -359,7 +360,7 @@ void Text::Box(const char *text, int16 bshow, const Common::Rect &rect, TextAlig int16 offset = 0; int16 hline = 0; GuiResourceId orgFontId = GetFontId(); - int16 orgPenColor = _gfx->_curPort->penClr; + int16 orgPenColor = _ports->_curPort->penClr; if (fontId != -1) SetFont(fontId); @@ -387,7 +388,7 @@ void Text::Box(const char *text, int16 bshow, const Common::Rect &rect, TextAlig default: // left-aligned warning("Invalid alignment %d used in TextBox()", alignment); } - _gfx->MoveTo(rect.left + offset, rect.top + hline); + _ports->moveTo(rect.left + offset, rect.top + hline); if (bshow) { Show(text, 0, charCount, orgFontId, orgPenColor); @@ -399,16 +400,16 @@ void Text::Box(const char *text, int16 bshow, const Common::Rect &rect, TextAlig text += charCount; } SetFont(orgFontId); - _gfx->PenColor(orgPenColor); + _ports->penColor(orgPenColor); } void Text::Draw_String(const char *text) { GuiResourceId orgFontId = GetFontId(); - int16 orgPenColor = _gfx->_curPort->penClr; + int16 orgPenColor = _ports->_curPort->penClr; Draw(text, 0, strlen(text), orgFontId, orgPenColor); SetFont(orgFontId); - _gfx->PenColor(orgPenColor); + _ports->penColor(orgPenColor); } } // End of namespace Sci |