diff options
author | Eugene Sandulenko | 2017-08-03 10:45:52 +0200 |
---|---|---|
committer | Eugene Sandulenko | 2017-08-04 21:54:20 +0200 |
commit | 145b7c9ec994e97ad36527e177ccaf45f224d398 (patch) | |
tree | dbc37e00ca4fdc75711fb3fe82163cd0efad46cf /graphics/macgui/mactextwindow.cpp | |
parent | b3c8a8e1290eae0ca7628562c887cfa0ad354e6a (diff) | |
download | scummvm-rg350-145b7c9ec994e97ad36527e177ccaf45f224d398.tar.gz scummvm-rg350-145b7c9ec994e97ad36527e177ccaf45f224d398.tar.bz2 scummvm-rg350-145b7c9ec994e97ad36527e177ccaf45f224d398.zip |
GRAPHICS: MACGUI: Initial selection drawing code to MacTextWindow
Diffstat (limited to 'graphics/macgui/mactextwindow.cpp')
-rw-r--r-- | graphics/macgui/mactextwindow.cpp | 33 |
1 files changed, 32 insertions, 1 deletions
diff --git a/graphics/macgui/mactextwindow.cpp b/graphics/macgui/mactextwindow.cpp index a5f7b05822..4fa8103f24 100644 --- a/graphics/macgui/mactextwindow.cpp +++ b/graphics/macgui/mactextwindow.cpp @@ -141,6 +141,9 @@ bool MacTextWindow::draw(ManagedSurface *g, bool forceRedraw) { if (_cursorState) _composeSurface.blitFrom(*_cursorSurface, *_cursorRect, Common::Point(_cursorX + kConWOverlap, _cursorY + kConHOverlap)); + if (_inTextSelection) + drawSelection(); + _composeSurface.transBlitFrom(_borderSurface, kColorGreen); g->transBlitFrom(_composeSurface, _composeSurface.getBounds(), Common::Point(_dims.left - 2, _dims.top - 2), kColorGreen2); @@ -148,6 +151,34 @@ bool MacTextWindow::draw(ManagedSurface *g, bool forceRedraw) { return true; } +void MacTextWindow::drawSelection() { + int start = MIN(_selectedText.startY, _selectedText.endY); + start -= _scrollPos; + start = MAX(0, start); + + if (start > getInnerDimensions().height()) + return; + + int end = MAX(_selectedText.startY, _selectedText.endY); + + end -= _scrollPos; + + if (end < 0) + return; + + end = MIN((int)getInnerDimensions().height(), end); + + for (int y = start; y < end; y++) { + byte *ptr = (byte *)_composeSurface.getBasePtr(kConWOverlap - 2, kConWOverlap - 2 + y); + + for (int x = 0; x < getInnerDimensions().width(); x++, ptr++) + if (*ptr == kColorBlack) + *ptr = kColorWhite; + else + *ptr = kColorBlack; + } +} + bool MacTextWindow::processEvent(Common::Event &event) { /*WindowClick click =*/ isInBorder(event.mouse.x, event.mouse.y); @@ -266,7 +297,7 @@ void MacTextWindow::startMarking(int x, int y) { y += _scrollPos; - _mactext->getRowCol(x, y, &_selectedText.endX, &_selectedText.endY, &_selectedText.endRow, &_selectedText.endCol); + _mactext->getRowCol(x, y, &_selectedText.startX, &_selectedText.startY, &_selectedText.startRow, &_selectedText.startCol); _selectedText.endY = -1; |