diff options
| author | Max Horn | 2009-05-08 16:00:39 +0000 | 
|---|---|---|
| committer | Max Horn | 2009-05-08 16:00:39 +0000 | 
| commit | e34c6316c67a06d9586e217cdca52d3bc6cc0438 (patch) | |
| tree | b50edba644faa997de6e9e53b2ede8f561ddf3da /engines | |
| parent | 418d80c8a84175bdefb5e8310816d489abf0e1c6 (diff) | |
| download | scummvm-rg350-e34c6316c67a06d9586e217cdca52d3bc6cc0438.tar.gz scummvm-rg350-e34c6316c67a06d9586e217cdca52d3bc6cc0438.tar.bz2 scummvm-rg350-e34c6316c67a06d9586e217cdca52d3bc6cc0438.zip  | |
SCI: Replaced gfx_driver_t::set_palette and install_palette by directly invoking their OSystem counterparts
svn-id: r40385
Diffstat (limited to 'engines')
| -rw-r--r-- | engines/sci/gfx/gfx_driver.cpp | 32 | ||||
| -rw-r--r-- | engines/sci/gfx/gfx_driver.h | 21 | ||||
| -rw-r--r-- | engines/sci/gfx/operations.cpp | 11 | 
3 files changed, 8 insertions, 56 deletions
diff --git a/engines/sci/gfx/gfx_driver.cpp b/engines/sci/gfx/gfx_driver.cpp index ffe161d846..e4f6a40120 100644 --- a/engines/sci/gfx/gfx_driver.cpp +++ b/engines/sci/gfx/gfx_driver.cpp @@ -38,7 +38,6 @@ struct _scummvm_driver_state {  	byte *visual[2];  	uint8 *pointer_data;  	int xsize, ysize; -	uint8 *palette_data;  };  #define S ((struct _scummvm_driver_state *)(drv->state)) @@ -79,10 +78,6 @@ static int scummvm_init(gfx_driver_t *drv, int xfact, int yfact, int bytespp) {  	drv->mode = gfx_new_mode(xfact, yfact, format, new Palette(256), 0);  	drv->mode->palette->name = "global"; -	S->palette_data = new uint8[4*256]; -	for (i = 0; i < 4*256; ++i) -		S->palette_data[i] = 0; -  	return GFX_OK;  } @@ -102,9 +97,6 @@ static void scummvm_exit(gfx_driver_t *drv) {  		delete[] S->pointer_data;  		S->pointer_data = NULL; -		delete[] S->palette_data; -		S->palette_data = NULL; -  		delete S;  	}  } @@ -306,28 +298,6 @@ static int scummvm_set_pointer(gfx_driver_t *drv, gfx_pixmap_t *pointer, Common:  	return GFX_OK;  } -// Palette operations - -static int scummvm_set_palette(gfx_driver_t *drv, int index, byte red, byte green, byte blue) { -	if (index < 0 || index > 255) { -		GFXERROR("Attempt to set invalid palette entry %d\n", index); -		return GFX_ERROR; -	} - -	S->palette_data[4*index+0] = red; -	S->palette_data[4*index+1] = green; -	S->palette_data[4*index+2] = blue; -	S->palette_data[4*index+3] = 255; - -	return GFX_OK; -} - -static int scummvm_install_palette(gfx_driver_t *drv, Palette* palette) { -	g_system->setPalette(S->palette_data, 0, palette->size()); -	return GFX_OK; -} - -  gfx_driver_t gfx_driver_scummvm = {  	NULL,  	0, 0, @@ -343,8 +313,6 @@ gfx_driver_t gfx_driver_scummvm = {  	scummvm_update,  	scummvm_set_static_buffer,  	scummvm_set_pointer, -	scummvm_set_palette, -	scummvm_install_palette,  	NULL  }; diff --git a/engines/sci/gfx/gfx_driver.h b/engines/sci/gfx/gfx_driver.h index a24347c1f1..634fe072e0 100644 --- a/engines/sci/gfx/gfx_driver.h +++ b/engines/sci/gfx/gfx_driver.h @@ -267,27 +267,6 @@ struct gfx_driver_t { /* Graphics driver */  	*/ -	/*** Palette operations ***/ - -	int (*set_palette)(gfx_driver_t *drv, int index, byte red, byte green, -	                   byte blue); -	/* Manipulates a palette index in the hardware palette. -	** The actual update is not performed until install_palette() is called. -	** This way updates can be batched. -	** Parameters: (gfx_driver_t *) drv: The driver affected -	**             (int) index: The index of the palette entry to modify -	**             (int x int x int) red, green, blue: The RGB intensities to -	**                               set for the specified index. The minimum -	**                               intensity is 0, maximum is 0xff. -	** Returns   : (int) GFX_OK, GFX_ERROR or GFX_FATAL -	** This function does not need to update mode->palette, as this is done -	** by the calling code. -	** set_palette() is only required for targets supporting color index mode. -	*/ - -	int (*install_palette)(gfx_driver_t *drv, Palette* pal); -	/* As set_palette, but for the full palette. */ -  	void *state; /* Reserved for internal use */  }; diff --git a/engines/sci/gfx/operations.cpp b/engines/sci/gfx/operations.cpp index 0559a677b3..1cf1f19590 100644 --- a/engines/sci/gfx/operations.cpp +++ b/engines/sci/gfx/operations.cpp @@ -202,12 +202,17 @@ static int _gfxop_install_pixmap(gfx_driver_t *driver, gfx_pixmap_t *pxm) {  	// TODO: We probably want to only update the colours used by this pixmap  	// here. This will require updating the 'dirty' system. -	for (unsigned int i = 0; i < driver->mode->palette->size(); ++i) { +	uint8 paletteData[4*256]; +	const uint paletteSize = driver->mode->palette->size(); +	for (uint i = 0; i < paletteSize; ++i) {  		const PaletteEntry& c = (*driver->mode->palette)[i]; -		driver->set_palette(driver, i, c.r, c.g, c.b); +		paletteData[4*i+0] = c.r; +		paletteData[4*i+1] = c.g; +		paletteData[4*i+2] = c.b; +		paletteData[4*i+3] = 255;  	} -	driver->install_palette(driver, driver->mode->palette); +	g_system->setPalette(paletteData, 0, paletteSize);  	driver->mode->palette->markClean();  	return GFX_OK;  }  | 
