[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