diff options
| -rw-r--r-- | engines/sci/gfx/gfx_resmgr.h | 28 | ||||
| -rw-r--r-- | engines/sci/gfx/operations.cpp | 22 | ||||
| -rw-r--r-- | engines/sci/gfx/resmgr.cpp | 10 | ||||
| -rw-r--r-- | engines/sci/gfx/resource/res_manager.cpp | 27 | 
4 files changed, 45 insertions, 42 deletions
| diff --git a/engines/sci/gfx/gfx_resmgr.h b/engines/sci/gfx/gfx_resmgr.h index 0be816dd26..21bbf517b8 100644 --- a/engines/sci/gfx/gfx_resmgr.h +++ b/engines/sci/gfx/gfx_resmgr.h @@ -37,6 +37,7 @@  namespace Sci {  struct gfx_bitmap_font_t; +class ResourceManager;  enum gfx_resource_type_t {  	GFX_RESOURCE_TYPE_VIEW = 0, @@ -191,9 +192,10 @@ gfxr_view_t *gfxr_get_view(gfx_resstate_t *state, int nr, int *loop, int *cel, i  ** loop and cel numbers have to be interpreted as 'maximum' or 'minimum' by the interpreter)  */ -gfx_bitmap_font_t *gfxr_get_font(gfx_resstate_t *state, int nr, int scaled); +gfx_bitmap_font_t *gfxr_get_font(ResourceManager& resourceManager, gfx_resstate_t *state, int nr, int scaled);  /* Retreives a font -** Parameters: (gfx_resstate_t *) state: The relevant resource state +** Parameters: (ResourceManager&) resourceManager: supplies the resource repository capability +** 			   (gfx_resstate_t *) state: The relevant resource state  **             (int) nr: The font number  **             (int) scaled: Whether the font should be font-scaled  ** Returns   : (gfx_font_t *) The appropriate font, or NULL on error @@ -236,7 +238,7 @@ int gfxr_interpreter_options_hash(gfx_resource_type_t type, int version,  ** (Yes, this isn't really a "hash" in the traditional sense...)  */ -int *gfxr_interpreter_get_resources(ResourceManager *resourceManager, gfx_resource_type_t type, +int *gfxr_interpreter_get_resources(ResourceManager& resourceManager, gfx_resource_type_t type,  	int version, int *entries_nr);  /* Retreives all resources of a specified type that are available from the interpreter  ** Parameters: (gfx_resstate_t *) state: The relevant resource state @@ -279,9 +281,9 @@ int gfxr_interpreter_calculate_pic(gfx_resstate_t *state, gfxr_pic_t *scaled_pic  ** Returns   : (int) GFX_ERROR if the resource could not be found, GFX_OK otherwise  */ -gfxr_view_t *gfxr_interpreter_get_view(ResourceManager* resourceManager, int nr, int palette, Palette* staticPalette, int version); +gfxr_view_t *gfxr_interpreter_get_view(ResourceManager& resourceManager, int nr, int palette, Palette* staticPalette, int version);  /* Instructs the interpreter-specific code to calculate a view -** Parameters: (ResourceManager *) resourceManager: The resource manager +** Parameters: (ResourceManager& ) resourceManager: The resource manager  **             (int) nr: The view resource number  **             (int) palette: The palette number to use  **             (Palette*) staticPalette: The static palette to use in VGA games @@ -289,33 +291,33 @@ gfxr_view_t *gfxr_interpreter_get_view(ResourceManager* resourceManager, int nr,  ** Returns   : (gfx_view_t *) The appropriate view, or NULL on error  */ -gfx_bitmap_font_t *gfxr_interpreter_get_font(ResourceManager *resourceManager, int nr); +gfx_bitmap_font_t *gfxr_interpreter_get_font(ResourceManager& resourceManager, int nr);  /* Instructs the interpreter-specific code to calculate a font -** Parameters: (ResourceManager *) resourceManager: The resource manager +** Parameters: (ResourceManager& ) resourceManager: The resource manager  **             (int) nr: The font resource number  ** Returns   : (gfx_font_t *) The newly calculated font, or NULL on error  */ -gfx_pixmap_t *gfxr_interpreter_get_cursor(ResourceManager *resourceManager, int nr, int version); +gfx_pixmap_t *gfxr_interpreter_get_cursor(ResourceManager& resourceManager, int nr, int version);  /* Instructs the interpreter-specific code to calculate a cursor -** Parameters: (ResourceManager *) state: The resource manager +** Parameters: (ResourceManager& ) state: The resource manager  **             (int nr): The cursor resource number  **             (int version): The SCI version used  ** Returns   : (gfx_pixmap_t *) The cursor pixmap, or NULL on error  */ -Palette *gfxr_interpreter_get_static_palette(ResourceManager *resourceManager, int version, int *colors_nr); +Palette *gfxr_interpreter_get_static_palette(ResourceManager& resourceManager, int version, int *colors_nr);  /* Retreives the static palette (palette 999) from the interpreter-specific code -** Parameters: (ResourceManager *) state: The resource manager +** Parameters: (ResourceManager& ) state: The resource manager  **             (int) version: Interpreter version to use  **             (int *) colors_nr: Number of colors to use  ** Returns   : (gfx_pixmap_color_t *) *colors_nr static color entries  **             if a static palette must be used, NULL otherwise  */ -Palette *gfxr_interpreter_get_palette(ResourceManager *resourceManager, int version, int *colors_nr, int nr); +Palette *gfxr_interpreter_get_palette(ResourceManager& resourceManager, int version, int *colors_nr, int nr);  /* Retreives the static palette from the interpreter-specific code -** Parameters: (ResourceManager *) state: The resource manager +** Parameters: (ResourceManager& ) state: The resource manager  **             (int) version: Interpreter version to use  **             (int *) colors_nr: Number of colors to use  **             (int) nr: The palette to read diff --git a/engines/sci/gfx/operations.cpp b/engines/sci/gfx/operations.cpp index 481076aec4..ae1bfd81b8 100644 --- a/engines/sci/gfx/operations.cpp +++ b/engines/sci/gfx/operations.cpp @@ -205,7 +205,7 @@ DRAW_LOOP(map->index_data[offset] < color) // Draw only lower priority  static int _gfxop_install_pixmap(gfx_driver_t *driver, gfx_pixmap_t *pxm) {  	if (!driver->mode->palette) return GFX_OK;  	if (!pxm->palette) return GFX_OK; -	 +  	assert(pxm->palette->getParent() == driver->mode->palette);  	if (!driver->mode->palette->isDirty()) return GFX_OK; @@ -428,7 +428,7 @@ static int _gfxop_init_common(gfx_state_t *state, gfx_options_t *options, Resour  	}  	int size; -	state->static_palette = gfxr_interpreter_get_static_palette(state->resstate->resManager, state->version, &size); +	state->static_palette = gfxr_interpreter_get_static_palette(*(state->resstate->resManager), state->version, &size);  	state->visible_map = GFX_MASK_VISUAL;  	state->fullscreen_override = NULL; // No magical override @@ -627,10 +627,10 @@ int gfxop_set_color(gfx_state_t *state, gfx_color_t *color, int r, int g, int b,  // Wrapper for gfxop_set_color  int gfxop_set_color(gfx_state_t *state, gfx_color_t *colorOut, gfx_color_t &colorIn) {  	if (colorIn.mask & GFX_MASK_VISUAL) -		return gfxop_set_color(state, colorOut, colorIn.visual.r, colorIn.visual.g, colorIn.visual.b,  +		return gfxop_set_color(state, colorOut, colorIn.visual.r, colorIn.visual.g, colorIn.visual.b,  			colorIn.alpha, colorIn.priority, colorIn.control);  	else -		return gfxop_set_color(state, colorOut, -1, -1, -1, colorIn.alpha,  +		return gfxop_set_color(state, colorOut, -1, -1, -1, colorIn.alpha,  			colorIn.priority, colorIn.control);  } @@ -885,7 +885,7 @@ int gfxop_draw_line(gfx_state_t *state, Common::Point start, Common::Point end,  		end.x += xfact >> 1;  		end.y += yfact >> 1;  	} -	 +  	if (color.visual.parent_index == GFX_COLOR_INDEX_UNMAPPED)  		gfxop_set_color(state, &color, color);  	return _gfxop_draw_line_clipped(state, start, end, color, line_mode, line_style); @@ -1892,11 +1892,13 @@ int gfxop_add_to_pic(gfx_state_t *state, int nr, int flags, int default_palette)  // Text operations +// FIXME: only the resstate member of state is used -- inline the reference by: +// replacing gfx_state_t* state parameter with gfx_resstate_t* gfxResourceState and adjust callers accordingly  int gfxop_get_font_height(gfx_state_t *state, int font_nr) {  	gfx_bitmap_font_t *font;  	BASIC_CHECKS(GFX_FATAL); -	font = gfxr_get_font(state->resstate, font_nr, 0); +	font = gfxr_get_font(*(state->resstate->resManager), state->resstate, font_nr, 0);  	if (!font)  		return GFX_ERROR; @@ -1910,7 +1912,7 @@ int gfxop_get_text_params(gfx_state_t *state, int font_nr, const char *text, int  	BASIC_CHECKS(GFX_FATAL); -	font = gfxr_get_font(state->resstate, font_nr, 0); +	font = gfxr_get_font(*(state->resstate->resManager), state->resstate, font_nr, 0);  	if (!font) {  		GFXERROR("Attempt to calculate text size with invalid font #%d\n", font_nr); @@ -1945,10 +1947,10 @@ gfx_text_handle_t *gfxop_new_text(gfx_state_t *state, int font_nr, char *text, i  	error |= gfxop_set_color(state, &bg_color, bg_color);  	if (error) {  		GFXERROR("Unable to set up colors"); -		return NULL;  +		return NULL;  	} -		 -	font = gfxr_get_font(state->resstate, font_nr, 0); + +	font = gfxr_get_font(*(state->resstate->resManager), state->resstate, font_nr, 0);  	if (!font) {  		GFXERROR("Attempt to draw text with invalid font #%d\n", font_nr); diff --git a/engines/sci/gfx/resmgr.cpp b/engines/sci/gfx/resmgr.cpp index 6ddd89bb18..82af489874 100644 --- a/engines/sci/gfx/resmgr.cpp +++ b/engines/sci/gfx/resmgr.cpp @@ -65,7 +65,7 @@ gfx_resstate_t *gfxr_new_resource_manager(int version, gfx_options_t *options, g  		gfx_resource_type_t i = (gfx_resource_type_t) ii;  		sbtree_t *tree;  		int entries_nr; -		int *resources = gfxr_interpreter_get_resources(state->resManager, i, version, &entries_nr); +		int *resources = gfxr_interpreter_get_resources(*(state->resManager), i, version, &entries_nr);  		if (!resources)  			state->resource_trees[i] = NULL; @@ -459,7 +459,7 @@ gfxr_view_t *gfxr_get_view(gfx_resstate_t *state, int nr, int *loop, int *cel, i  	res = (gfx_resource_t *) sbtree_get(tree, nr);  	if (!res || res->mode != hash) { -		view = gfxr_interpreter_get_view(state->resManager, nr, palette, state->static_palette, state->version); +		view = gfxr_interpreter_get_view(*(state->resManager), nr, palette, state->static_palette, state->version);  		if (!view)  			return NULL; @@ -527,7 +527,7 @@ gfxr_view_t *gfxr_get_view(gfx_resstate_t *state, int nr, int *loop, int *cel, i  	return view;  } -gfx_bitmap_font_t *gfxr_get_font(gfx_resstate_t *state, int nr, int scaled) { +gfx_bitmap_font_t *gfxr_get_font(ResourceManager& resourceManager, gfx_resstate_t *state, int nr, int scaled) {  	gfx_resource_type_t restype = GFX_RESOURCE_TYPE_FONT;  	sbtree_t *tree = NULL;  	gfx_resource_t *res = NULL; @@ -543,7 +543,7 @@ gfx_bitmap_font_t *gfxr_get_font(gfx_resstate_t *state, int nr, int scaled) {  	res = (gfx_resource_t *)sbtree_get(tree, nr);  	if (!res || res->mode != hash) { -		gfx_bitmap_font_t *font = gfxr_interpreter_get_font(state->resManager, nr); +		gfx_bitmap_font_t *font = gfxr_interpreter_get_font(resourceManager, nr);  		if (!font)  			return NULL; @@ -583,7 +583,7 @@ gfx_pixmap_t *gfxr_get_cursor(gfx_resstate_t *state, int nr) {  	res = (gfx_resource_t *)sbtree_get(tree, nr);  	if (!res || res->mode != hash) { -		gfx_pixmap_t *cursor = gfxr_interpreter_get_cursor(state->resManager, nr, state->version); +		gfx_pixmap_t *cursor = gfxr_interpreter_get_cursor(*(state->resManager), nr, state->version);  		if (!cursor)  			return NULL; diff --git a/engines/sci/gfx/resource/res_manager.cpp b/engines/sci/gfx/resource/res_manager.cpp index ae7fb2f785..dc264b74fd 100644 --- a/engines/sci/gfx/resource/res_manager.cpp +++ b/engines/sci/gfx/resource/res_manager.cpp @@ -71,8 +71,8 @@ void gfxr_interpreter_clear_pic(int version, gfxr_pic_t *pic) {  int gfxr_interpreter_calculate_pic(gfx_resstate_t *state, gfxr_pic_t *scaled_pic, gfxr_pic_t *unscaled_pic,  	int flags, int default_palette, int nr) { -	ResourceManager *resmgr = state->resManager; -	Resource *res = resmgr->findResource(kResourceTypePic, nr, 0); +	ResourceManager& resourceManager = *(state->resManager); +	Resource *res = resourceManager.findResource(kResourceTypePic, nr, 0);  	int need_unscaled = unscaled_pic != NULL;  	gfxr_pic0_params_t style, basic_style; @@ -142,8 +142,8 @@ void gfxr_palettize_view(gfxr_view_t *view, Palette *source) {  gfxr_view_t *gfxr_draw_view11(int id, byte *resource, int size); -gfxr_view_t *gfxr_interpreter_get_view(ResourceManager* resourceManager, int nr, int palette, Palette* staticPalette, int version) { -	Resource *res = resourceManager->findResource(kResourceTypeView, nr, 0); +gfxr_view_t *gfxr_interpreter_get_view(ResourceManager& resourceManager, int nr, int palette, Palette* staticPalette, int version) { +	Resource *res = resourceManager.findResource(kResourceTypeView, nr, 0);  	int resid = GFXR_RES_ID(GFX_RESOURCE_TYPE_VIEW, nr);  	gfxr_view_t *result = 0; @@ -179,17 +179,16 @@ gfxr_view_t *gfxr_interpreter_get_view(ResourceManager* resourceManager, int nr,  	return result;  } -gfx_bitmap_font_t *gfxr_interpreter_get_font(ResourceManager* resourceManager, int nr) { -	Resource *res = resourceManager->findResource(kResourceTypeFont, nr, 0); - +gfx_bitmap_font_t *gfxr_interpreter_get_font(ResourceManager& resourceManager, int nr) { +	Resource *res = resourceManager.findResource(kResourceTypeFont, nr, 0);  	if (!res || !res->data)  		return NULL;  	return gfxr_read_font(res->id, res->data, res->size);  } -gfx_pixmap_t *gfxr_interpreter_get_cursor(ResourceManager* resourceManager, int nr, int version) { -	Resource *res = resourceManager->findResource(kResourceTypeCursor, nr, 0); +gfx_pixmap_t *gfxr_interpreter_get_cursor(ResourceManager& resourceManager, int nr, int version) { +	Resource *res = resourceManager.findResource(kResourceTypeCursor, nr, 0);  	int resid = GFXR_RES_ID(GFX_RESOURCE_TYPE_CURSOR, nr);  	if (!res || !res->data) @@ -203,7 +202,7 @@ gfx_pixmap_t *gfxr_interpreter_get_cursor(ResourceManager* resourceManager, int  	return gfxr_draw_cursor(resid, res->data, res->size, version != SCI_VERSION_0);  } -int *gfxr_interpreter_get_resources(ResourceManager* resourceManager, gfx_resource_type_t type, int version, int *entries_nr) { +int *gfxr_interpreter_get_resources(ResourceManager& resourceManager, gfx_resource_type_t type, int version, int *entries_nr) {  	ResourceType restype;  	int *resources;  	int count = 0; @@ -235,7 +234,7 @@ int *gfxr_interpreter_get_resources(ResourceManager* resourceManager, gfx_resour  	resources = (int *)sci_malloc(sizeof(int) * top);  	for (i = 0; i < top; i++) -		if (resourceManager->testResource(restype, i)) +		if (resourceManager.testResource(restype, i))  			resources[count++] = i;  	*entries_nr = count; @@ -243,7 +242,7 @@ int *gfxr_interpreter_get_resources(ResourceManager* resourceManager, gfx_resour  	return resources;  } -Palette *gfxr_interpreter_get_static_palette(ResourceManager *resourceManager, int version, int *colors_nr) { +Palette *gfxr_interpreter_get_static_palette(ResourceManager& resourceManager, int version, int *colors_nr) {  	if (version >= SCI_VERSION_01_VGA)  		return gfxr_interpreter_get_palette(resourceManager, version, colors_nr, 999); @@ -251,13 +250,13 @@ Palette *gfxr_interpreter_get_static_palette(ResourceManager *resourceManager, i  	return gfx_sci0_pic_colors->getref();  } -Palette *gfxr_interpreter_get_palette(ResourceManager *resourceManager, int version, int *colors_nr, int nr) { +Palette *gfxr_interpreter_get_palette(ResourceManager& resourceManager, int version, int *colors_nr, int nr) {  	Resource *res;  	if (version < SCI_VERSION_01_VGA)  		return NULL; -	res = resourceManager->findResource(kResourceTypePalette, nr, 0); +	res = resourceManager.findResource(kResourceTypePalette, nr, 0);  	if (!res || !res->data)  		return NULL; | 
