diff options
author | Martin Kiewitz | 2009-10-04 15:34:43 +0000 |
---|---|---|
committer | Martin Kiewitz | 2009-10-04 15:34:43 +0000 |
commit | 3deae94473d868b4ba60f43bb502e64c79d9ace6 (patch) | |
tree | 108deba37dfe7e8563739018cb5da8ce26eb825c /engines | |
parent | 1572e622a350792df2e07969749a68a5c6344200 (diff) | |
download | scummvm-rg350-3deae94473d868b4ba60f43bb502e64c79d9ace6.tar.gz scummvm-rg350-3deae94473d868b4ba60f43bb502e64c79d9ace6.tar.bz2 scummvm-rg350-3deae94473d868b4ba60f43bb502e64c79d9ace6.zip |
SCI/newgui: getCellRect() getLoopInfo() implemented, cleanup
svn-id: r44611
Diffstat (limited to 'engines')
-rw-r--r-- | engines/sci/gui/gui_view.cpp | 17 | ||||
-rw-r--r-- | engines/sci/gui/gui_view.h | 5 |
2 files changed, 19 insertions, 3 deletions
diff --git a/engines/sci/gui/gui_view.cpp b/engines/sci/gui/gui_view.cpp index f795565483..a656a1c9e9 100644 --- a/engines/sci/gui/gui_view.cpp +++ b/engines/sci/gui/gui_view.cpp @@ -181,12 +181,27 @@ int16 SciGUIview::getHeight(uint16 loopNo, uint16 cellNo) { } sciViewCellInfo *SciGUIview::getCellInfo(uint16 loopNo, uint16 cellNo) { - loopNo = CLIP<int16>(loopNo, 0, _loopCount -1); + loopNo = CLIP<int16>(loopNo, 0, _loopCount - 1); if (cellNo >= _loop[loopNo].cellCount) cellNo = 0; return _loopCount ? &_loop[loopNo].cell[cellNo] : NULL; } +sciViewLoopInfo *SciGUIview::getLoopInfo(uint16 loopNo) { + loopNo = CLIP<int16>(loopNo, 0, _loopCount - 1); + return _loopCount ? &_loop[loopNo] : NULL; +} + +void SciGUIview::getCellRect(uint16 loopNo, uint16 cellNo, int16 x, int16 y, int16 z, Common::Rect *outRect) { + sciViewCellInfo *cellInfo = getCellInfo(loopNo, cellNo); + if (cellInfo) { + outRect->left = x + cellInfo->displaceX - (cellInfo->width >> 1); + outRect->right = outRect->left + cellInfo->width; + outRect->bottom = y + cellInfo->displaceY - z + 1; + outRect->top = outRect->bottom - cellInfo->height; + } +} + void SciGUIview::unpackView(uint16 loopNo, uint16 cellNo, byte *outPtr, uint16 pixelCount) { byte *rlePtr = _resourceData + _loop[loopNo].cell[cellNo].offsetRLE; byte *literalPtr = _resourceData + _loop[loopNo].cell[cellNo].offsetLiteral; diff --git a/engines/sci/gui/gui_view.h b/engines/sci/gui/gui_view.h index bdecd59124..c89ab000f9 100644 --- a/engines/sci/gui/gui_view.h +++ b/engines/sci/gui/gui_view.h @@ -51,8 +51,9 @@ public: sciResourceId getResourceId(); int16 getWidth(uint16 loopNo, uint16 cellNo); int16 getHeight(uint16 loopNo, uint16 cellNo); - sciViewCellInfo *getCellInfo(uint16 loop, uint16 cel); - sciViewLoopInfo *getLoopInfo(uint16 loop); + sciViewCellInfo *getCellInfo(uint16 loopNo, uint16 cellNo); + sciViewLoopInfo *getLoopInfo(uint16 loopNo); + void getCellRect(uint16 loopNo, uint16 cellNo, int16 x, int16 y, int16 z, Common::Rect *outRect); byte *getBitmap(uint16 loopNo, uint16 cellNo); void draw(Common::Rect rect, Common::Rect clipRect, uint16 loopNo, uint16 cellNo, byte priority, uint16 paletteNo); |