[Scummvm-cvs-logs] SF.net SVN: scummvm:[44723] scummvm/trunk/engines/sci
thebluegr at users.sourceforge.net
thebluegr at users.sourceforge.net
Wed Oct 7 00:45:13 CEST 2009
Revision: 44723
http://scummvm.svn.sourceforge.net/scummvm/?rev=44723&view=rev
Author: thebluegr
Date: 2009-10-06 22:45:08 +0000 (Tue, 06 Oct 2009)
Log Message:
-----------
More work on the view wrapper code
Modified Paths:
--------------
scummvm/trunk/engines/sci/gfx/gfx_resmgr.cpp
scummvm/trunk/engines/sci/gui/gui_view.h
Modified: scummvm/trunk/engines/sci/gfx/gfx_resmgr.cpp
===================================================================
--- scummvm/trunk/engines/sci/gfx/gfx_resmgr.cpp 2009-10-06 22:13:46 UTC (rev 44722)
+++ scummvm/trunk/engines/sci/gfx/gfx_resmgr.cpp 2009-10-06 22:45:08 UTC (rev 44723)
@@ -500,6 +500,7 @@
IntResMap &resMap = _resourceMaps[GFX_RESOURCE_TYPE_VIEW];
gfx_resource_t *res = resMap.contains(nr) ? resMap[nr] : NULL;
int hash = palette;
+ ViewType viewType = _resMan->getViewType();
gfxr_view_t *view = NULL;
gfxr_loop_t *loop_data = NULL;
@@ -515,8 +516,19 @@
SciGuiView *guiView = new SciGuiView(_resMan, _screen, _palette, nr);
+ // Translate view palette
+ view->palette = NULL;
+
+ if (guiView->getPalette()) {
+ GuiPalette viewPalette = guiView->getPalette()->_sysPalette;
+ int colorCount = (viewType == kViewVga) ? 256 : 16;
+ view->palette = new Palette(colorCount);
+
+ for (int c = 0; c < colorCount; c++)
+ view->palette->setColor(c, viewPalette.colors[c].r, viewPalette.colors[c].g, viewPalette.colors[c].b);
+ }
+
view->loops_nr = guiView->getLoopCount();
- view->palette = _staticPalette->getref(); // TODO: this only works in non-VGA games
view->loops = (gfxr_loop_t*)malloc(sizeof(gfxr_loop_t) * ((view->loops_nr) ? view->loops_nr : 1)); /* Alloc 1 if no loop */
for (int i = 0; i < view->loops_nr; i++) {
@@ -534,12 +546,12 @@
curCel->height = celInfo->height;
curCel->index_width = celInfo->width;
curCel->index_height = celInfo->height;
- curCel->palette = _staticPalette->getref(); // TODO: this only works in non-VGA games
curCel->palette_revision = 0;
curCel->xoffset = celInfo->displaceX;
curCel->yoffset = celInfo->displaceY;
curCel->alpha_map = 0; // will be allocated by gfx_xlate_pixmap()
curCel->data = 0; // will be allocated by gfx_xlate_pixmap()
+ curCel->palette = view->palette->getref();
}
}
@@ -552,7 +564,6 @@
return NULL;
int resid = GFXR_RES_ID(GFX_RESOURCE_TYPE_VIEW, nr);
- ViewType viewType = _resMan->getViewType();
if (viewType == kViewEga) {
int pal = (getSciVersion() <= SCI_VERSION_01) ? -1 : palette;
Modified: scummvm/trunk/engines/sci/gui/gui_view.h
===================================================================
--- scummvm/trunk/engines/sci/gui/gui_view.h 2009-10-06 22:13:46 UTC (rev 44722)
+++ scummvm/trunk/engines/sci/gui/gui_view.h 2009-10-06 22:45:08 UTC (rev 44723)
@@ -59,6 +59,7 @@
byte *getBitmap(GuiViewLoopNo loopNo, GuiViewCelNo celNo);
void draw(Common::Rect rect, Common::Rect clipRect, Common::Rect clipRectTranslated, GuiViewLoopNo loopNo, GuiViewCelNo celNo, byte priority, uint16 paletteNo);
uint16 getLoopCount() const { return _loopCount; }
+ SciGuiPalette *getPalette() const { return _palette; }
private:
void initData(GuiResourceId resourceId);
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
More information about the Scummvm-git-logs
mailing list