diff options
author | Matthew Hoops | 2011-12-12 15:25:28 -0500 |
---|---|---|
committer | Matthew Hoops | 2011-12-12 15:25:28 -0500 |
commit | 00279659b22cbd5db739d5351e83a9fc2a2ae408 (patch) | |
tree | 497f06f46820043cbdf1725652b8f0073223e24a /engines/sci/graphics/compare.cpp | |
parent | d932df79bed5aac97e17c0920a5e75cb5ce733ee (diff) | |
parent | d1628feb761acc9f4607f64de3eb620fea53bcc9 (diff) | |
download | scummvm-rg350-00279659b22cbd5db739d5351e83a9fc2a2ae408.tar.gz scummvm-rg350-00279659b22cbd5db739d5351e83a9fc2a2ae408.tar.bz2 scummvm-rg350-00279659b22cbd5db739d5351e83a9fc2a2ae408.zip |
Merge remote branch 'upstream/master' into pegasus
Conflicts:
video/qt_decoder.cpp
Diffstat (limited to 'engines/sci/graphics/compare.cpp')
-rw-r--r-- | engines/sci/graphics/compare.cpp | 35 |
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 |