aboutsummaryrefslogtreecommitdiff
path: root/graphics/macgui/mactextwindow.cpp
diff options
context:
space:
mode:
authorEugene Sandulenko2017-08-03 10:45:52 +0200
committerEugene Sandulenko2017-08-04 21:54:20 +0200
commit145b7c9ec994e97ad36527e177ccaf45f224d398 (patch)
treedbc37e00ca4fdc75711fb3fe82163cd0efad46cf /graphics/macgui/mactextwindow.cpp
parentb3c8a8e1290eae0ca7628562c887cfa0ad354e6a (diff)
downloadscummvm-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.cpp33
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;