aboutsummaryrefslogtreecommitdiff
path: root/engines/sci/graphics/compare.cpp
diff options
context:
space:
mode:
authorFilippos Karapetis2011-10-19 20:27:43 +0300
committerFilippos Karapetis2011-10-19 20:29:05 +0300
commit513d0be10628574c98bb2588a7ef4567590228e2 (patch)
treefece4be1f2bc0224eccf799fe20879b95a1beea3 /engines/sci/graphics/compare.cpp
parent7a96bcb3eda703426d6d88a7392f520cae32bf88 (diff)
downloadscummvm-rg350-513d0be10628574c98bb2588a7ef4567590228e2.tar.gz
scummvm-rg350-513d0be10628574c98bb2588a7ef4567590228e2.tar.bz2
scummvm-rg350-513d0be10628574c98bb2588a7ef4567590228e2.zip
SCI: Merged all the code to get/set the NS rect
Diffstat (limited to 'engines/sci/graphics/compare.cpp')
-rw-r--r--engines/sci/graphics/compare.cpp35
1 files changed, 27 insertions, 8 deletions
diff --git a/engines/sci/graphics/compare.cpp b/engines/sci/graphics/compare.cpp
index 3183ffa2b9..70dff15a86 100644
--- a/engines/sci/graphics/compare.cpp
+++ b/engines/sci/graphics/compare.cpp
@@ -147,10 +147,7 @@ void GfxCompare::kernelSetNowSeen(reg_t objectReference) {
#endif
if (lookupSelector(_segMan, objectReference, SELECTOR(nsTop), NULL, NULL) == kSelectorVariable) {
- writeSelectorValue(_segMan, objectReference, SELECTOR(nsLeft), celRect.left);
- writeSelectorValue(_segMan, objectReference, SELECTOR(nsRight), celRect.right);
- writeSelectorValue(_segMan, objectReference, SELECTOR(nsTop), celRect.top);
- writeSelectorValue(_segMan, objectReference, SELECTOR(nsBottom), celRect.bottom);
+ setNSRect(objectReference, celRect);
}
}
@@ -221,10 +218,7 @@ void GfxCompare::kernelBaseSetter(reg_t object) {
scaleSignal = 0;
if (scaleSignal & kScaleSignalDoScaling) {
- celRect.left = readSelectorValue(_segMan, object, SELECTOR(nsLeft));
- celRect.right = readSelectorValue(_segMan, object, SELECTOR(nsRight));
- celRect.top = readSelectorValue(_segMan, object, SELECTOR(nsTop));
- celRect.bottom = readSelectorValue(_segMan, object, SELECTOR(nsBottom));
+ celRect = getNSRect(object);
} else {
if (tmpView->isSci2Hires())
tmpView->adjustToUpscaledCoordinates(y, x);
@@ -247,4 +241,29 @@ void GfxCompare::kernelBaseSetter(reg_t object) {
}
}
+Common::Rect GfxCompare::getNSRect(reg_t object, bool fixRect) {
+ Common::Rect nsRect;
+ nsRect.top = readSelectorValue(_segMan, object, SELECTOR(nsTop));
+ nsRect.left = readSelectorValue(_segMan, object, SELECTOR(nsLeft));
+ nsRect.bottom = readSelectorValue(_segMan, object, SELECTOR(nsBottom));
+ nsRect.right = readSelectorValue(_segMan, object, SELECTOR(nsRight));
+
+ if (fixRect) {
+ // nsRect top/left may be negative, adjust accordingly
+ if (nsRect.top < 0)
+ nsRect.top = 0;
+ if (nsRect.left < 0)
+ nsRect.left = 0;
+ }
+
+ return nsRect;
+}
+
+void GfxCompare::setNSRect(reg_t object, Common::Rect nsRect) {
+ writeSelectorValue(_segMan, object, SELECTOR(nsLeft), nsRect.left);
+ writeSelectorValue(_segMan, object, SELECTOR(nsTop), nsRect.top);
+ writeSelectorValue(_segMan, object, SELECTOR(nsRight), nsRect.right);
+ writeSelectorValue(_segMan, object, SELECTOR(nsBottom), nsRect.bottom);
+}
+
} // End of namespace Sci