aboutsummaryrefslogtreecommitdiff
path: root/engines/sci/graphics
diff options
context:
space:
mode:
authorMartin Kiewitz2010-01-31 17:14:58 +0000
committerMartin Kiewitz2010-01-31 17:14:58 +0000
commit66c88b98f54fb750bebb038ef92636bcc906db55 (patch)
tree453adae0cbd2ff6c76ccd98e61e34f14318ee42a /engines/sci/graphics
parent6a3308150fd401b25cb2cab1c8c494fbf3af1a12 (diff)
downloadscummvm-rg350-66c88b98f54fb750bebb038ef92636bcc906db55.tar.gz
scummvm-rg350-66c88b98f54fb750bebb038ef92636bcc906db55.tar.bz2
scummvm-rg350-66c88b98f54fb750bebb038ef92636bcc906db55.zip
SCI: GfxCache is now also called directly w/o SciGui nor SciGui32
svn-id: r47759
Diffstat (limited to 'engines/sci/graphics')
-rw-r--r--engines/sci/graphics/cache.cpp24
-rw-r--r--engines/sci/graphics/cache.h4
-rw-r--r--engines/sci/graphics/gui.cpp21
-rw-r--r--engines/sci/graphics/gui.h10
-rw-r--r--engines/sci/graphics/gui32.cpp21
-rw-r--r--engines/sci/graphics/gui32.h8
6 files changed, 31 insertions, 57 deletions
diff --git a/engines/sci/graphics/cache.cpp b/engines/sci/graphics/cache.cpp
index bce467a480..8d153e8472 100644
--- a/engines/sci/graphics/cache.cpp
+++ b/engines/sci/graphics/cache.cpp
@@ -53,14 +53,30 @@ void GfxCache::purgeCache() {
_cachedViews.clear();
}
-View *GfxCache::getView(GuiResourceId viewNum) {
+View *GfxCache::getView(GuiResourceId viewId) {
if (_cachedViews.size() >= MAX_CACHED_VIEWS)
purgeCache();
- if (!_cachedViews.contains(viewNum))
- _cachedViews[viewNum] = new View(_resMan, _screen, _palette, viewNum);
+ if (!_cachedViews.contains(viewId))
+ _cachedViews[viewId] = new View(_resMan, _screen, _palette, viewId);
- return _cachedViews[viewNum];
+ return _cachedViews[viewId];
+}
+
+int16 GfxCache::kernelViewGetCelWidth(GuiResourceId viewId, int16 loopNo, int16 celNo) {
+ return getView(viewId)->getCelInfo(loopNo, celNo)->width;
+}
+
+int16 GfxCache::kernelViewGetCelHeight(GuiResourceId viewId, int16 loopNo, int16 celNo) {
+ return getView(viewId)->getCelInfo(loopNo, celNo)->height;
+}
+
+int16 GfxCache::kernelViewGetLoopCount(GuiResourceId viewId) {
+ return getView(viewId)->getLoopCount();
+}
+
+int16 GfxCache::kernelViewGetCelCount(GuiResourceId viewId, int16 loopNo) {
+ return getView(viewId)->getLoopInfo(loopNo)->celCount;
}
} // End of namespace Sci
diff --git a/engines/sci/graphics/cache.h b/engines/sci/graphics/cache.h
index 804ce810e4..a8c3dd5a13 100644
--- a/engines/sci/graphics/cache.h
+++ b/engines/sci/graphics/cache.h
@@ -43,6 +43,10 @@ public:
~GfxCache();
View *getView(GuiResourceId viewNum);
+ int16 kernelViewGetCelWidth(GuiResourceId viewId, int16 loopNo, int16 celNo);
+ int16 kernelViewGetCelHeight(GuiResourceId viewId, int16 loopNo, int16 celNo);
+ int16 kernelViewGetLoopCount(GuiResourceId viewId);
+ int16 kernelViewGetCelCount(GuiResourceId viewId, int16 loopNo);
private:
void purgeCache();
diff --git a/engines/sci/graphics/gui.cpp b/engines/sci/graphics/gui.cpp
index 9b7ef36f1a..ae14a7e73b 100644
--- a/engines/sci/graphics/gui.cpp
+++ b/engines/sci/graphics/gui.cpp
@@ -50,10 +50,9 @@
namespace Sci {
-SciGui::SciGui(EngineState *state, GfxScreen *screen, GfxPalette *palette, Cursor *cursor, GfxPorts *ports, AudioPlayer *audio)
- : _s(state), _screen(screen), _palette(palette), _cursor(cursor), _ports(ports), _audio(audio) {
+SciGui::SciGui(EngineState *state, GfxScreen *screen, GfxPalette *palette, GfxCache *cache, Cursor *cursor, GfxPorts *ports, AudioPlayer *audio)
+ : _s(state), _screen(screen), _palette(palette), _cache(cache), _cursor(cursor), _ports(ports), _audio(audio) {
- _cache = new GfxCache(_s->resMan, _screen, _palette);
_compare = new GfxCompare(_s->_segMan, _s->_kernel, _cache, _screen);
_paint16 = new GfxPaint16(_s->resMan, _s->_segMan, _s->_kernel, _cache, _ports, _screen, _palette);
_transitions = new Transitions(this, _screen, _palette, _s->resMan->isVGA());
@@ -655,22 +654,6 @@ void SciGui::setCursorZone(Common::Rect zone) {
_cursor->setMoveZone(zone);
}
-int16 SciGui::getCelWidth(GuiResourceId viewId, int16 loopNo, int16 celNo) {
- return _cache->getView(viewId)->getCelInfo(loopNo, celNo)->width;
-}
-
-int16 SciGui::getCelHeight(GuiResourceId viewId, int16 loopNo, int16 celNo) {
- return _cache->getView(viewId)->getCelInfo(loopNo, celNo)->height;
-}
-
-int16 SciGui::getLoopCount(GuiResourceId viewId) {
- return _cache->getView(viewId)->getLoopCount();
-}
-
-int16 SciGui::getCelCount(GuiResourceId viewId, int16 loopNo) {
- return _cache->getView(viewId)->getLoopInfo(loopNo)->celCount;
-}
-
void SciGui::syncWithFramebuffer() {
_screen->syncWithFramebuffer();
}
diff --git a/engines/sci/graphics/gui.h b/engines/sci/graphics/gui.h
index 4242ecbdda..5e002d57c6 100644
--- a/engines/sci/graphics/gui.h
+++ b/engines/sci/graphics/gui.h
@@ -57,8 +57,8 @@ class Transitions;
class SciGui {
public:
- SciGui(EngineState *s, GfxScreen *screen, GfxPalette *palette, Cursor *cursor, GfxPorts *ports, AudioPlayer *audio);
- virtual ~SciGui();
+ SciGui(EngineState *s, GfxScreen *screen, GfxPalette *palette, GfxCache *cache, Cursor *cursor, GfxPorts *ports, AudioPlayer *audio);
+ ~SciGui();
virtual void init(bool usesOldGfxFunctions);
@@ -123,12 +123,6 @@ public:
virtual void moveCursor(Common::Point pos);
void setCursorZone(Common::Rect zone);
- virtual int16 getCelWidth(GuiResourceId viewId, int16 loopNo, int16 celNo);
- virtual int16 getCelHeight(GuiResourceId viewId, int16 loopNo, int16 celNo);
-
- virtual int16 getLoopCount(GuiResourceId viewId);
- virtual int16 getCelCount(GuiResourceId viewId, int16 loopNo);
-
virtual void syncWithFramebuffer();
virtual reg_t portraitLoad(Common::String resourceName);
diff --git a/engines/sci/graphics/gui32.cpp b/engines/sci/graphics/gui32.cpp
index f690ec68da..ed12c33757 100644
--- a/engines/sci/graphics/gui32.cpp
+++ b/engines/sci/graphics/gui32.cpp
@@ -44,10 +44,9 @@
namespace Sci {
-SciGui32::SciGui32(EngineState *state, GfxScreen *screen, GfxPalette *palette, Cursor *cursor)
- : _s(state), _screen(screen), _palette(palette), _cursor(cursor) {
+SciGui32::SciGui32(EngineState *state, GfxScreen *screen, GfxPalette *palette, GfxCache *cache, Cursor *cursor)
+ : _s(state), _screen(screen), _palette(palette), _cache(cache), _cursor(cursor) {
- _cache = new GfxCache(_s->resMan, _screen, _palette);
_compare = new GfxCompare(_s->_segMan, _s->_kernel, _cache, _screen);
}
@@ -217,22 +216,6 @@ void SciGui32::setCursorZone(Common::Rect zone) {
_cursor->setMoveZone(zone);
}
-int16 SciGui32::getCelWidth(GuiResourceId viewId, int16 loopNo, int16 celNo) {
- return _cache->getView(viewId)->getCelInfo(loopNo, celNo)->width;
-}
-
-int16 SciGui32::getCelHeight(GuiResourceId viewId, int16 loopNo, int16 celNo) {
- return _cache->getView(viewId)->getCelInfo(loopNo, celNo)->height;
-}
-
-int16 SciGui32::getLoopCount(GuiResourceId viewId) {
- return _cache->getView(viewId)->getLoopCount();
-}
-
-int16 SciGui32::getCelCount(GuiResourceId viewId, int16 loopNo) {
- return _cache->getView(viewId)->getLoopInfo(loopNo)->celCount;
-}
-
void SciGui32::syncWithFramebuffer() {
_screen->syncWithFramebuffer();
}
diff --git a/engines/sci/graphics/gui32.h b/engines/sci/graphics/gui32.h
index 1484af4219..1092cb9508 100644
--- a/engines/sci/graphics/gui32.h
+++ b/engines/sci/graphics/gui32.h
@@ -39,7 +39,7 @@ class Text;
class SciGui32 {
public:
- SciGui32(EngineState *s, GfxScreen *screen, GfxPalette *palette, Cursor *cursor);
+ SciGui32(EngineState *s, GfxScreen *screen, GfxPalette *palette, GfxCache *cache, Cursor *cursor);
~SciGui32();
void init();
@@ -64,12 +64,6 @@ public:
void moveCursor(Common::Point pos);
void setCursorZone(Common::Rect zone);
- int16 getCelWidth(GuiResourceId viewId, int16 loopNo, int16 celNo);
- int16 getCelHeight(GuiResourceId viewId, int16 loopNo, int16 celNo);
-
- int16 getLoopCount(GuiResourceId viewId);
- int16 getCelCount(GuiResourceId viewId, int16 loopNo);
-
void syncWithFramebuffer();
void addScreenItem(reg_t object);