diff options
author | Martin Kiewitz | 2010-01-31 22:20:55 +0000 |
---|---|---|
committer | Martin Kiewitz | 2010-01-31 22:20:55 +0000 |
commit | d31f696d1f5c9f5fb79be0524a6142e967308220 (patch) | |
tree | 6a805b593551bb089dd8846b15eca183b1ea01e4 /engines/sci/graphics | |
parent | 12d983eaf41bd8353849ee8776fc2bbc59808870 (diff) | |
download | scummvm-rg350-d31f696d1f5c9f5fb79be0524a6142e967308220.tar.gz scummvm-rg350-d31f696d1f5c9f5fb79be0524a6142e967308220.tar.bz2 scummvm-rg350-d31f696d1f5c9f5fb79be0524a6142e967308220.zip |
SCI: rename Controls to GfxControls, gets directly called now
svn-id: r47783
Diffstat (limited to 'engines/sci/graphics')
-rw-r--r-- | engines/sci/graphics/controls.cpp | 121 | ||||
-rw-r--r-- | engines/sci/graphics/controls.h | 25 | ||||
-rw-r--r-- | engines/sci/graphics/gui.cpp | 106 | ||||
-rw-r--r-- | engines/sci/graphics/gui.h | 14 |
4 files changed, 129 insertions, 137 deletions
diff --git a/engines/sci/graphics/controls.cpp b/engines/sci/graphics/controls.cpp index fb1e40122f..7bfe050db9 100644 --- a/engines/sci/graphics/controls.cpp +++ b/engines/sci/graphics/controls.cpp @@ -34,27 +34,28 @@ #include "sci/graphics/ports.h" #include "sci/graphics/paint16.h" #include "sci/graphics/font.h" +#include "sci/graphics/screen.h" #include "sci/graphics/text16.h" #include "sci/graphics/controls.h" namespace Sci { -Controls::Controls(SegManager *segMan, GfxPorts *ports, GfxPaint16 *paint16, GfxText16 *text16) - : _segMan(segMan), _ports(ports), _paint16(paint16), _text16(text16) { +GfxControls::GfxControls(SegManager *segMan, GfxPorts *ports, GfxPaint16 *paint16, GfxText16 *text16, GfxScreen *screen) + : _segMan(segMan), _ports(ports), _paint16(paint16), _text16(text16), _screen(screen) { init(); } -Controls::~Controls() { +GfxControls::~GfxControls() { } -void Controls::init() { +void GfxControls::init() { _texteditCursorVisible = false; } const char controlListUpArrow[2] = { 0x18, 0 }; const char controlListDownArrow[2] = { 0x19, 0 }; -void Controls::drawListControl(Common::Rect rect, reg_t obj, int16 maxChars, int16 count, const char **entries, GuiResourceId fontId, int16 upperPos, int16 cursorPos, bool isAlias) { +void GfxControls::drawListControl(Common::Rect rect, reg_t obj, int16 maxChars, int16 count, const char **entries, GuiResourceId fontId, int16 upperPos, int16 cursorPos, bool isAlias) { Common::Rect workerRect = rect; GuiResourceId oldFontId = _text16->GetFontId(); int16 oldPenColor = _ports->_curPort->penClr; @@ -109,7 +110,7 @@ void Controls::drawListControl(Common::Rect rect, reg_t obj, int16 maxChars, int _text16->SetFont(oldFontId); } -void Controls::TexteditCursorDraw(Common::Rect rect, const char *text, uint16 curPos) { +void GfxControls::texteditCursorDraw(Common::Rect rect, const char *text, uint16 curPos) { int16 textWidth, i; if (!_texteditCursorVisible) { textWidth = 0; @@ -123,24 +124,24 @@ void Controls::TexteditCursorDraw(Common::Rect rect, const char *text, uint16 cu _paint16->invertRect(_texteditCursorRect); _paint16->bitsShow(_texteditCursorRect); _texteditCursorVisible = true; - TexteditSetBlinkTime(); + texteditSetBlinkTime(); } } -void Controls::TexteditCursorErase() { +void GfxControls::texteditCursorErase() { if (_texteditCursorVisible) { _paint16->invertRect(_texteditCursorRect); _paint16->bitsShow(_texteditCursorRect); _texteditCursorVisible = false; } - TexteditSetBlinkTime(); + texteditSetBlinkTime(); } -void Controls::TexteditSetBlinkTime() { +void GfxControls::texteditSetBlinkTime() { _texteditBlinkTime = g_system->getMillis() + (30 * 1000 / 60); } -void Controls::TexteditChange(reg_t controlObject, reg_t eventObject) { +void GfxControls::kernelTexteditChange(reg_t controlObject, reg_t eventObject) { uint16 cursorPos = GET_SEL32V(_segMan, controlObject, cursor); uint16 maxChars = GET_SEL32V(_segMan, controlObject, max); reg_t textReference = GET_SEL32(_segMan, controlObject, text); @@ -209,12 +210,12 @@ void Controls::TexteditChange(reg_t controlObject, reg_t eventObject) { GuiResourceId fontId = GET_SEL32V(_segMan, controlObject, font); rect = Common::Rect(GET_SEL32V(_segMan, controlObject, nsLeft), GET_SEL32V(_segMan, controlObject, nsTop), GET_SEL32V(_segMan, controlObject, nsRight), GET_SEL32V(_segMan, controlObject, nsBottom)); - TexteditCursorErase(); + texteditCursorErase(); _paint16->eraseRect(rect); _text16->Box(text.c_str(), 0, rect, SCI_TEXT16_ALIGNMENT_LEFT, fontId); _paint16->bitsShow(rect); _text16->SetFont(fontId); - TexteditCursorDraw(rect, text.c_str(), cursorPos); + texteditCursorDraw(rect, text.c_str(), cursorPos); _text16->SetFont(oldFontId); // Write back string _segMan->strcpy(textReference, text.c_str()); @@ -223,11 +224,103 @@ void Controls::TexteditChange(reg_t controlObject, reg_t eventObject) { _paint16->invertRect(_texteditCursorRect); _paint16->bitsShow(_texteditCursorRect); _texteditCursorVisible = !_texteditCursorVisible; - TexteditSetBlinkTime(); + texteditSetBlinkTime(); } } PUT_SEL32V(_segMan, controlObject, cursor, cursorPos); } +int GfxControls::getPicNotValid() { + if (getSciVersion() >= SCI_VERSION_1_1) + return _screen->_picNotValidSci11; + return _screen->_picNotValid; +} + +void GfxControls::kernelDrawButton(Common::Rect rect, reg_t obj, const char *text, int16 fontId, int16 style, bool hilite) { + if (!hilite) { + rect.grow(1); + _paint16->eraseRect(rect); + _paint16->frameRect(rect); + rect.grow(-2); + _ports->textGreyedOutput(style & 1 ? false : true); + _text16->Box(text, 0, rect, SCI_TEXT16_ALIGNMENT_CENTER, fontId); + _ports->textGreyedOutput(false); + rect.grow(1); + if (style & 8) // selected + _paint16->frameRect(rect); + if (!getPicNotValid()) { + rect.grow(1); + _paint16->bitsShow(rect); + } + } else { + _paint16->invertRect(rect); + _paint16->bitsShow(rect); + } +} + +void GfxControls::kernelDrawText(Common::Rect rect, reg_t obj, const char *text, int16 fontId, TextAlignment alignment, int16 style, bool hilite) { + if (!hilite) { + rect.grow(1); + _paint16->eraseRect(rect); + rect.grow(-1); + _text16->Box(text, 0, rect, alignment, fontId); + if (style & 8) { // selected + _paint16->frameRect(rect); + } + rect.grow(1); + if (!getPicNotValid()) + _paint16->bitsShow(rect); + } else { + _paint16->invertRect(rect); + _paint16->bitsShow(rect); + } +} + +void GfxControls::kernelDrawTextEdit(Common::Rect rect, reg_t obj, const char *text, int16 fontId, int16 mode, int16 style, int16 cursorPos, int16 maxChars, bool hilite) { + Common::Rect textRect = rect; + uint16 oldFontId = _text16->GetFontId(); + + rect.grow(1); + texteditCursorErase(); + _paint16->eraseRect(rect); + _text16->Box(text, 0, textRect, SCI_TEXT16_ALIGNMENT_LEFT, fontId); + _paint16->frameRect(rect); + if (style & 8) { + _text16->SetFont(fontId); + rect.grow(-1); + texteditCursorDraw(rect, text, cursorPos); + _text16->SetFont(oldFontId); + rect.grow(1); + } + if (!getPicNotValid()) + _paint16->bitsShow(rect); +} + +void GfxControls::kernelDrawIcon(Common::Rect rect, reg_t obj, GuiResourceId viewId, int16 loopNo, int16 celNo, int16 priority, int16 style, bool hilite) { + if (!hilite) { + _paint16->drawCelAndShow(viewId, loopNo, celNo, rect.left, rect.top, priority, 0); + if (style & 0x20) { + _paint16->frameRect(rect); + } + if (!getPicNotValid()) + _paint16->bitsShow(rect); + } else { + _paint16->invertRect(rect); + _paint16->bitsShow(rect); + } +} + +void GfxControls::kernelDrawList(Common::Rect rect, reg_t obj, int16 maxChars, int16 count, const char **entries, GuiResourceId fontId, int16 style, int16 upperPos, int16 cursorPos, bool isAlias, bool hilite) { + if (!hilite) { + drawListControl(rect, obj, maxChars, count, entries, fontId, upperPos, cursorPos, isAlias); + rect.grow(1); + if (isAlias && (style & 8)) { + _paint16->frameRect(rect); + } + if (!getPicNotValid()) + _paint16->bitsShow(rect); + } +} + } // End of namespace Sci diff --git a/engines/sci/graphics/controls.h b/engines/sci/graphics/controls.h index 8be3b61810..5f2194f258 100644 --- a/engines/sci/graphics/controls.h +++ b/engines/sci/graphics/controls.h @@ -32,24 +32,33 @@ class GfxPorts; class GfxPaint16; class Font; class GfxText16; -class Controls { +class GfxScreen; +class GfxControls { public: - Controls(SegManager *segMan, GfxPorts *ports, GfxPaint16 *paint16, GfxText16 *text16); - ~Controls(); + GfxControls(SegManager *segMan, GfxPorts *ports, GfxPaint16 *paint16, GfxText16 *text16, GfxScreen *screen); + ~GfxControls(); - void drawListControl(Common::Rect rect, reg_t obj, int16 maxChars, int16 count, const char **entries, GuiResourceId fontId, int16 upperPos, int16 cursorPos, bool isAlias); - void TexteditCursorDraw(Common::Rect rect, const char *text, uint16 curPos); - void TexteditCursorErase(); - void TexteditChange(reg_t controlObject, reg_t eventObject); + void kernelDrawButton(Common::Rect rect, reg_t obj, const char *text, int16 fontId, int16 style, bool hilite); + void kernelDrawText(Common::Rect rect, reg_t obj, const char *text, int16 fontId, int16 alignment, int16 style, bool hilite); + void kernelDrawTextEdit(Common::Rect rect, reg_t obj, const char *text, int16 fontId, int16 mode, int16 style, int16 cursorPos, int16 maxChars, bool hilite); + void kernelDrawIcon(Common::Rect rect, reg_t obj, GuiResourceId viewId, int16 loopNo, int16 celNo, int16 priority, int16 style, bool hilite); + void kernelDrawList(Common::Rect rect, reg_t obj, int16 maxChars, int16 count, const char **entries, GuiResourceId fontId, int16 style, int16 upperPos, int16 cursorPos, bool isAlias, bool hilite); + void kernelTexteditChange(reg_t controlObject, reg_t eventObject); private: void init(); - void TexteditSetBlinkTime(); + void texteditSetBlinkTime(); + + void drawListControl(Common::Rect rect, reg_t obj, int16 maxChars, int16 count, const char **entries, GuiResourceId fontId, int16 upperPos, int16 cursorPos, bool isAlias); + void texteditCursorDraw(Common::Rect rect, const char *text, uint16 curPos); + void texteditCursorErase(); + int getPicNotValid(); SegManager *_segMan; GfxPorts *_ports; GfxPaint16 *_paint16; GfxText16 *_text16; + GfxScreen *_screen; // Textedit-Control related Common::Rect _texteditCursorRect; diff --git a/engines/sci/graphics/gui.cpp b/engines/sci/graphics/gui.cpp index 111038dcd0..a1aeee2033 100644 --- a/engines/sci/graphics/gui.cpp +++ b/engines/sci/graphics/gui.cpp @@ -59,7 +59,8 @@ SciGui::SciGui(EngineState *state, GfxScreen *screen, GfxPalette *palette, GfxCa _animate = new GfxAnimate(_s, _cache, _ports, _paint16, _screen, _palette, _cursor, _transitions); _s->_gfxAnimate = _animate; _text16 = new GfxText16(_s->resMan, _cache, _ports, _paint16, _screen); - _controls = new Controls(_s->_segMan, _ports, _paint16, _text16); + _controls = new GfxControls(_s->_segMan, _ports, _paint16, _text16, _screen); + _s->_gfxControls = _controls; _menu = new Menu(_s->_event, _s->_segMan, this, _ports, _paint16, _text16, _screen, _cursor); } @@ -320,109 +321,6 @@ void SciGui::drawCel(GuiResourceId viewId, int16 loopNo, int16 celNo, uint16 lef _palette->setOnScreen(); } -int SciGui::getControlPicNotValid() { - if (getSciVersion() >= SCI_VERSION_1_1) - return _screen->_picNotValidSci11; - return _screen->_picNotValid; -} - -void SciGui::drawControlButton(Common::Rect rect, reg_t obj, const char *text, int16 fontId, int16 style, bool hilite) { - if (!hilite) { - rect.grow(1); - _paint16->eraseRect(rect); - _paint16->frameRect(rect); - rect.grow(-2); - _ports->textGreyedOutput(style & 1 ? false : true); - _text16->Box(text, 0, rect, SCI_TEXT16_ALIGNMENT_CENTER, fontId); - _ports->textGreyedOutput(false); - rect.grow(1); - if (style & 8) // selected - _paint16->frameRect(rect); - if (!getControlPicNotValid()) { - rect.grow(1); - _paint16->bitsShow(rect); - } - } else { - _paint16->invertRect(rect); - _paint16->bitsShow(rect); - } -} - -void SciGui::drawControlText(Common::Rect rect, reg_t obj, const char *text, int16 fontId, TextAlignment alignment, int16 style, bool hilite) { - if (!hilite) { - rect.grow(1); - _paint16->eraseRect(rect); - rect.grow(-1); - _text16->Box(text, 0, rect, alignment, fontId); - if (style & 8) { // selected - _paint16->frameRect(rect); - } - rect.grow(1); - if (!getControlPicNotValid()) - _paint16->bitsShow(rect); - } else { - _paint16->invertRect(rect); - _paint16->bitsShow(rect); - } -} - -void SciGui::drawControlTextEdit(Common::Rect rect, reg_t obj, const char *text, int16 fontId, int16 mode, int16 style, int16 cursorPos, int16 maxChars, bool hilite) { - Common::Rect textRect = rect; - uint16 oldFontId = _text16->GetFontId(); - - rect.grow(1); - _controls->TexteditCursorErase(); - _paint16->eraseRect(rect); - _text16->Box(text, 0, textRect, SCI_TEXT16_ALIGNMENT_LEFT, fontId); - _paint16->frameRect(rect); - if (style & 8) { - _text16->SetFont(fontId); - rect.grow(-1); - _controls->TexteditCursorDraw(rect, text, cursorPos); - _text16->SetFont(oldFontId); - rect.grow(1); - } - if (!getControlPicNotValid()) - _paint16->bitsShow(rect); -} - -void SciGui::drawControlIcon(Common::Rect rect, reg_t obj, GuiResourceId viewId, int16 loopNo, int16 celNo, int16 priority, int16 style, bool hilite) { - if (!hilite) { - _paint16->drawCelAndShow(viewId, loopNo, celNo, rect.left, rect.top, priority, 0); - if (style & 0x20) { - _paint16->frameRect(rect); - } - if (!getControlPicNotValid()) - _paint16->bitsShow(rect); - } else { - _paint16->invertRect(rect); - _paint16->bitsShow(rect); - } -} - -void SciGui::drawControlList(Common::Rect rect, reg_t obj, int16 maxChars, int16 count, const char **entries, GuiResourceId fontId, int16 style, int16 upperPos, int16 cursorPos, bool isAlias, bool hilite) { - if (!hilite) { - _controls->drawListControl(rect, obj, maxChars, count, entries, fontId, upperPos, cursorPos, isAlias); - rect.grow(1); - if (isAlias && (style & 8)) { - _paint16->frameRect(rect); - } - if (!getControlPicNotValid()) - _paint16->bitsShow(rect); - } -} - -void SciGui::editControl(reg_t controlObject, reg_t eventObject) { - int16 controlType = GET_SEL32V(_s->_segMan, controlObject, type); - - switch (controlType) { - case SCI_CONTROLS_TYPE_TEXTEDIT: - // Only process textedit controls in here - _controls->TexteditChange(controlObject, eventObject); - return; - } -} - void SciGui::graphFillBoxForeground(Common::Rect rect) { _paint16->paintRect(rect); } diff --git a/engines/sci/graphics/gui.h b/engines/sci/graphics/gui.h index 001553585e..cbdcc6c488 100644 --- a/engines/sci/graphics/gui.h +++ b/engines/sci/graphics/gui.h @@ -48,9 +48,8 @@ class GfxCache; class GfxCompare; class GfxPorts; class GfxPaint16; -class WindowMgr; -class SciGuiAnimate; -class Controls; +class GfxAnimate; +class GfxControls; class Menu; class GfxText16; class Transitions; @@ -84,12 +83,6 @@ public: virtual void drawPicture(GuiResourceId pictureId, int16 animationNr, bool animationBlackoutFlag, bool mirroredFlag, bool addToFlag, int16 EGApaletteNo); virtual void drawCel(GuiResourceId viewId, int16 loopNo, int16 celNo, uint16 leftPos, uint16 topPos, int16 priority, uint16 paletteNo, bool hiresMode = false, reg_t upscaledHiresHandle = NULL_REG); - virtual void drawControlButton(Common::Rect rect, reg_t obj, const char *text, int16 fontId, int16 style, bool hilite); - virtual void drawControlText(Common::Rect rect, reg_t obj, const char *text, int16 fontId, int16 alignment, int16 style, bool hilite); - virtual void drawControlTextEdit(Common::Rect rect, reg_t obj, const char *text, int16 fontId, int16 mode, int16 style, int16 cursorPos, int16 maxChars, bool hilite); - virtual void drawControlIcon(Common::Rect rect, reg_t obj, GuiResourceId viewId, int16 loopNo, int16 celNo, int16 priority, int16 style, bool hilite); - virtual void drawControlList(Common::Rect rect, reg_t obj, int16 maxChars, int16 count, const char **entries, GuiResourceId fontId, int16 style, int16 upperPos, int16 cursorPos, bool isAlias, bool hilite); - virtual void editControl(reg_t controlObject, reg_t eventObject); virtual void graphFillBoxForeground(Common::Rect rect); virtual void graphFillBoxBackground(Common::Rect rect); @@ -150,13 +143,12 @@ protected: private: virtual void initPriorityBands(); - virtual int getControlPicNotValid(); static void palVaryCallback(void *refCon); void doPalVary(); AudioPlayer *_audio; GfxAnimate *_animate; - Controls *_controls; + GfxControls *_controls; Menu *_menu; GfxText16 *_text16; Transitions *_transitions; |