aboutsummaryrefslogtreecommitdiff
path: root/engines/access/screen.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'engines/access/screen.cpp')
-rw-r--r--engines/access/screen.cpp90
1 files changed, 27 insertions, 63 deletions
diff --git a/engines/access/screen.cpp b/engines/access/screen.cpp
index 6a241d0c2b..c1a4d9143c 100644
--- a/engines/access/screen.cpp
+++ b/engines/access/screen.cpp
@@ -43,15 +43,13 @@ Screen::Screen(AccessEngine *vm) : _vm(vm) {
_currentPanel = 0;
_hideFlag = true;
_loadPalFlag = false;
- _leftSkip = _rightSkip = 0;
- _topSkip = _bottomSkip = 0;
- _clipWidth = _clipHeight = 0;
_scrollFlag = false;
_scrollThreshold = 0;
_startColor = _numColors = 0;
_scrollX = _scrollY = 0;
_scrollCol = _scrollRow = 0;
-
+ _windowXAdd = _windowYAdd = 0;
+ _screenYOff = 0;
}
void Screen::setDisplayScan() {
@@ -145,60 +143,6 @@ void Screen::copyBuffer(const byte *data) {
g_system->copyRectToScreen(destP, w, 0, 0, w, h);
}
-void Screen::plotImage(const byte *pData, int idx, const Common::Point &pt) {
- const byte *sizeP = pData + READ_LE_UINT16(pData + idx * 4);
- int w = READ_LE_UINT16(sizeP);
- int h = READ_LE_UINT16(sizeP + 2);
- Common::Rect r(pt.x, pt.y, pt.x + w, pt.y + h);
-
- if (!clip(r)) {
- _lastBounds = r;
- //plotf();
- }
-}
-
-bool Screen::clip(Common::Rect &r) {
- int skip;
- _leftSkip = _rightSkip = 0;
- _topSkip = _bottomSkip = 0;
-
- if (r.left > _clipWidth) {
- skip = -r.left;
- r.setWidth(r.width() - skip);
- _leftSkip = skip;
- r.moveTo(0, r.top);
- } else if (r.left >= 0)
- return true;
-
- int right = r.right - 1;
- if (right < 0)
- return true;
- else if (right > _clipWidth) {
- skip = right - _clipWidth;
- r.setWidth(r.width() - skip);
- _rightSkip = skip;
- }
-
- if (r.top > _clipHeight) {
- skip = -r.top;
- r.setHeight(r.height() - skip);
- _topSkip = skip;
- r.moveTo(r.left, 0);
- } else if (r.top >= 0)
- return true;
-
- int bottom = r.bottom - 1;
- if (bottom < 0)
- return true;
- else if (bottom > _clipHeight) {
- skip = bottom - _clipHeight;
- _bottomSkip = skip;
- r.setHeight(r.height() - skip);
- }
-
- return false;
-}
-
void Screen::checkScroll() {
warning("TODO");
}
@@ -227,10 +171,6 @@ void Screen::setBufferScan() {
warning("TODO: setBufferScan");
}
-void Screen::restoreScan() {
- warning("TODO: restoreScan");
-}
-
void Screen::setScaleTable(int scale) {
int total = 0;
for (int idx = 0; idx < 256; ++idx) {
@@ -241,7 +181,31 @@ void Screen::setScaleTable(int scale) {
}
void Screen::saveScreen() {
- warning("TODO: saveScreen");
+ _screenSave._clipWidth = _clipWidth;
+ _screenSave._clipHeight = _clipHeight;
+ _screenSave._windowXAdd = _windowXAdd;
+ _screenSave._windowYAdd = _windowYAdd;
+ _screenSave._scroll.x = _scrollX;
+ _screenSave._scroll.y = _scrollY;
+ _screenSave._scrollCol = _scrollCol;
+ _screenSave._scrollRow = _scrollRow;
+ _screenSave._bufferStart.x = _bufferStart.x;
+ _screenSave._bufferStart.y = _bufferStart.y;
+ _screenSave._screenYOff = _screenYOff;
+}
+
+void Screen::restoreScreen() {
+ _clipWidth = _screenSave._clipWidth;
+ _clipHeight = _screenSave._clipHeight;
+ _windowXAdd = _screenSave._windowXAdd;
+ _windowYAdd = _screenSave._windowYAdd;
+ _scrollX = _screenSave._scroll.x;
+ _scrollY = _screenSave._scroll.y;
+ _scrollCol = _screenSave._scrollCol;
+ _scrollRow = _screenSave._scrollRow;
+ _bufferStart.x = _screenSave._bufferStart.x;
+ _bufferStart.y = _screenSave._bufferStart.y;
+ _screenYOff = _screenSave._screenYOff;
}
} // End of namespace Access