[Scummvm-cvs-logs] SF.net SVN: scummvm:[44003] scummvm/trunk/engines/sci/gfx

thebluegr at users.sourceforge.net thebluegr at users.sourceforge.net
Mon Sep 7 18:18:05 CEST 2009


Revision: 44003
          http://scummvm.svn.sourceforge.net/scummvm/?rev=44003&view=rev
Author:   thebluegr
Date:     2009-09-07 16:18:05 +0000 (Mon, 07 Sep 2009)

Log Message:
-----------
Merged xfact and yfact into scaleFactor - it doesn't really make sense to multiply one dimension with an integer multiplier which is different to the multiplier of the other dimension, otherwise we'll end up with funny looking and squashed resolutions like 640x200 or 320x400. Also, removed the now-unused pixelFormat member variable of the graphics driver struct

Modified Paths:
--------------
    scummvm/trunk/engines/sci/gfx/gfx_driver.cpp
    scummvm/trunk/engines/sci/gfx/gfx_pixmap_scale.cpp
    scummvm/trunk/engines/sci/gfx/gfx_resmgr.cpp
    scummvm/trunk/engines/sci/gfx/gfx_support.cpp
    scummvm/trunk/engines/sci/gfx/gfx_system.h
    scummvm/trunk/engines/sci/gfx/gfx_tools.cpp
    scummvm/trunk/engines/sci/gfx/operations.cpp
    scummvm/trunk/engines/sci/gfx/picfill.cpp
    scummvm/trunk/engines/sci/gfx/res_pic.cpp

Modified: scummvm/trunk/engines/sci/gfx/gfx_driver.cpp
===================================================================
--- scummvm/trunk/engines/sci/gfx/gfx_driver.cpp	2009-09-07 11:08:56 UTC (rev 44002)
+++ scummvm/trunk/engines/sci/gfx/gfx_driver.cpp	2009-09-07 16:18:05 UTC (rev 44003)
@@ -83,22 +83,21 @@
 	GfxDriver *drv = (GfxDriver *)data;
 	byte *p = drv->getVisual0();
 	uint8 col = c;
-	memcpy(p + (y * 320* drv->getMode()->xfact + x), &col, 1);
+	memcpy(p + (y * 320* drv->getMode()->scaleFactor + x), &col, 1);
 }
 
 void GfxDriver::drawLine(Common::Point start, Common::Point end, gfx_color_t color, 
 						gfx_line_mode_t line_mode, gfx_line_style_t line_style) {
 	uint32 scolor = color.visual.parent_index;
-	int xfact = (line_mode == GFX_LINE_MODE_FINE)? 1: _mode->xfact;
-	int yfact = (line_mode == GFX_LINE_MODE_FINE)? 1: _mode->yfact;
+	int scaleFactor = (line_mode == GFX_LINE_MODE_FINE)? 1: _mode->scaleFactor;
 	int xsize = _mode->xsize;
 	int ysize = _mode->ysize;
 
 	if (color.mask & GFX_MASK_VISUAL) {
 		Common::Point nstart, nend;
 
-		for (int xc = 0; xc < xfact; xc++) {
-			for (int yc = 0; yc < yfact; yc++) {
+		for (int xc = 0; xc < scaleFactor; xc++) {
+			for (int yc = 0; yc < scaleFactor; yc++) {
 
 				nstart.x = CLIP<int16>(start.x + xc, 0, xsize);
 				nstart.y = CLIP<int16>(start.y + yc, 0, ysize);
@@ -229,14 +228,14 @@
 			// Note that some cursors don't have a palette in SQ5
 			if (pointer->palette && color < pointer->palette->size())
 				color = pointer->palette->getColor(color).parent_index;
-			for (int scalectr = 0; scalectr < _mode->xfact; scalectr++) {
+			for (int scalectr = 0; scalectr < _mode->scaleFactor; scalectr++) {
 				*pos++ = color;
 			}
 			src++;
 		}
-		for (int scalectr = 1; scalectr < _mode->yfact; scalectr++)
+		for (int scalectr = 1; scalectr < _mode->scaleFactor; scalectr++)
 			memcpy(linebase + linewidth * scalectr, linebase, linewidth);
-		linebase += linewidth * _mode->yfact;
+		linebase += linewidth * _mode->scaleFactor;
 	}
 	return data;
 }

Modified: scummvm/trunk/engines/sci/gfx/gfx_pixmap_scale.cpp
===================================================================
--- scummvm/trunk/engines/sci/gfx/gfx_pixmap_scale.cpp	2009-09-07 11:08:56 UTC (rev 44002)
+++ scummvm/trunk/engines/sci/gfx/gfx_pixmap_scale.cpp	2009-09-07 16:18:05 UTC (rev 44003)
@@ -40,10 +40,9 @@
 
 static void _gfx_xlate_pixmap_unfiltered(gfx_mode_t *mode, gfx_pixmap_t *pxm, int scale) {
 	byte result_colors[GFX_PIC_COLORS];
-	int xfact = (scale) ? mode->xfact : 1;
-	int yfact = (scale) ? mode->yfact : 1;
+	int scaleFactor = (scale) ? mode->scaleFactor : 1;
 	int widthc, heightc; // Width duplication counter
-	int line_width = xfact * pxm->index_width;
+	int line_width = scaleFactor * pxm->index_width;
 	int x, y;
 	int i;
 	byte byte_transparent = 0;
@@ -55,7 +54,7 @@
 	int separate_alpha_map = using_alpha;
 
 	if (separate_alpha_map && !alpha_dest)
-		alpha_dest = pxm->alpha_map = (byte *)malloc(pxm->index_width * xfact * pxm->index_height * yfact);
+		alpha_dest = pxm->alpha_map = (byte *)malloc(pxm->index_width * scaleFactor * pxm->index_height * scaleFactor);
 
 	// Calculate all colors
 	for (i = 0; i < pxm->colors_nr(); i++)
@@ -77,20 +76,20 @@
 			// O(n) loops. There is an O(ln(n)) algorithm for this, but its slower for small n (which we're optimizing for here).
 			// And, anyway, most of the time is spent in memcpy() anyway.
 
-			for (widthc = 0; widthc < xfact; widthc++) {
+			for (widthc = 0; widthc < scaleFactor; widthc++) {
 				memcpy(dest, &col, 1);
 				dest++;
 			}
 
 			if (separate_alpha_map) { // Set separate alpha map
-				memset(alpha_dest, (isalpha) ? byte_transparent : byte_opaque, xfact);
-				alpha_dest += xfact;
+				memset(alpha_dest, (isalpha) ? byte_transparent : byte_opaque, scaleFactor);
+				alpha_dest += scaleFactor;
 			}
 		}
 
 		// Copies each line. O(n) iterations; again, this could be optimized to O(ln(n)) for very high resolutions,
 		// but that wouldn't really help that much, as the same amount of data still would have to be transferred.
-		for (heightc = 1; heightc < yfact; heightc++) {
+		for (heightc = 1; heightc < scaleFactor; heightc++) {
 			memcpy(dest, prev_dest, line_width);
 			dest += line_width;
 			if (separate_alpha_map) {
@@ -104,8 +103,8 @@
 		pxm->width = pxm->index_width;
 		pxm->height = pxm->index_height;
 	} else {
-		pxm->width = pxm->index_width * mode->xfact;
-		pxm->height = pxm->index_height * mode->yfact;
+		pxm->width = pxm->index_width * mode->scaleFactor;
+		pxm->height = pxm->index_height * mode->scaleFactor;
 	}
 }
 
@@ -115,13 +114,13 @@
 		pxm->palette->mergeInto(mode->palette);
 
 	if (!pxm->data) {
-		pxm->data = (byte*)malloc(mode->xfact * mode->yfact * pxm->index_width * pxm->index_height + 1);
+		pxm->data = (byte*)malloc(mode->scaleFactor * mode->scaleFactor * pxm->index_width * pxm->index_height + 1);
 		// +1: Eases coying on BE machines in 24 bpp packed mode
 		// Assume that memory, if allocated already, will be sufficient
 
 		// Allocate alpha map
 		if (pxm->colors_nr() < GFX_PIC_COLORS)
-			pxm->alpha_map = (byte*)malloc(mode->xfact * mode->yfact * pxm->index_width * pxm->index_height + 1);
+			pxm->alpha_map = (byte*)malloc(mode->scaleFactor * mode->scaleFactor * pxm->index_width * pxm->index_height + 1);
 	}
 
 	_gfx_xlate_pixmap_unfiltered(mode, pxm, !(pxm->flags & GFX_PIXMAP_FLAG_SCALED_INDEX));

Modified: scummvm/trunk/engines/sci/gfx/gfx_resmgr.cpp
===================================================================
--- scummvm/trunk/engines/sci/gfx/gfx_resmgr.cpp	2009-09-07 11:08:56 UTC (rev 44002)
+++ scummvm/trunk/engines/sci/gfx/gfx_resmgr.cpp	2009-09-07 16:18:05 UTC (rev 44003)
@@ -312,11 +312,9 @@
 */
 // FIXME: this is an ugly hack. Perhaps we could do it some other way?
 gfx_mode_t mode_1x1_color_index = { /* Fake 1x1 mode */
-	/* xfact */ 1, /* yfact */ 1,
+	/* scaleFactor */ 1,
 	/* xsize */ 1, /* ysize */ 1,
-	/* palette */ NULL,
-
-	Graphics::PixelFormat()
+	/* palette */ NULL
 };
 
 gfxr_pic_t *GfxResManager::getPic(int num, int maps, int flags, int default_palette, bool scaled) {
@@ -324,7 +322,7 @@
 	IntResMap &resMap = _resourceMaps[GFX_RESOURCE_TYPE_PIC];
 	gfx_resource_t *res = NULL;
 	int hash = getOptionsHash(GFX_RESOURCE_TYPE_PIC);
-	int need_unscaled = (_driver->getMode()->xfact != 1 || _driver->getMode()->yfact != 1);
+	int need_unscaled = (_driver->getMode()->scaleFactor != 1);
 
 	hash |= (flags << 20) | ((default_palette & 0x7) << 28);
 
@@ -417,8 +415,8 @@
 }
 
 static void _gfxr_unscale_pixmap_index_data(gfx_pixmap_t *pxm, gfx_mode_t *mode) {
-	int xmod = mode->xfact; // Step size horizontally
-	int ymod = pxm->index_width * mode->yfact; // Vertical step size
+	int xmod = mode->scaleFactor; // Step size horizontally
+	int ymod = pxm->index_width * mode->scaleFactor; // Vertical step size
 	int maxpos = pxm->index_width * pxm->index_height;
 	int pos;
 	byte *dest = pxm->index_data;
@@ -435,8 +433,8 @@
 			// and left to the reader)
 	}
 
-	pxm->index_width /= mode->xfact;
-	pxm->index_height /= mode->yfact;
+	pxm->index_width /= mode->scaleFactor;
+	pxm->index_height /= mode->scaleFactor;
 	pxm->flags &= ~GFX_PIXMAP_FLAG_SCALED_INDEX;
 }
 
@@ -446,7 +444,7 @@
 	gfx_resource_t *res = NULL;
 	int hash = getOptionsHash(GFX_RESOURCE_TYPE_PIC);
 #ifdef CUSTOM_GRAPHICS_OPTIONS
-	int need_unscaled = !(_options->pic0_unscaled) && (_driver->getMode()->xfact != 1 || _driver->getMode()->yfact != 1);
+	int need_unscaled = !(_options->pic0_unscaled) && (_driver->getMode()->scaleFactor != 1 || _driver->getMode()->scaleFactor != 1);
 #else
 	int need_unscaled = 1;
 #endif

Modified: scummvm/trunk/engines/sci/gfx/gfx_support.cpp
===================================================================
--- scummvm/trunk/engines/sci/gfx/gfx_support.cpp	2009-09-07 11:08:56 UTC (rev 44002)
+++ scummvm/trunk/engines/sci/gfx/gfx_support.cpp	2009-09-07 16:18:05 UTC (rev 44003)
@@ -177,8 +177,8 @@
 
 void gfx_crossblit_pixmap(gfx_mode_t *mode, gfx_pixmap_t *pxm, int priority, rect_t src_coords, rect_t dest_coords,
 						 byte *dest, int dest_line_width, byte *priority_dest, int priority_line_width, int priority_skip, int flags) {
-	int maxx = 320 * mode->xfact;
-	int maxy = 200 * mode->yfact;
+	int maxx = 320 * mode->scaleFactor;
+	int maxy = 200 * mode->scaleFactor;
 	byte *src = pxm->data;
 	byte *alpha = pxm->alpha_map ? pxm->alpha_map : pxm->data;
 	byte *priority_pos = priority_dest;

Modified: scummvm/trunk/engines/sci/gfx/gfx_system.h
===================================================================
--- scummvm/trunk/engines/sci/gfx/gfx_system.h	2009-09-07 11:08:56 UTC (rev 44002)
+++ scummvm/trunk/engines/sci/gfx/gfx_system.h	2009-09-07 16:18:05 UTC (rev 44003)
@@ -30,7 +30,6 @@
 #include "common/rect.h"
 #include "sci/tools.h"
 #include "sci/gfx/palette.h"
-#include "graphics/pixelformat.h"
 
 namespace Sci {
 
@@ -42,7 +41,7 @@
 
 #define GFX_COLOR_SYSTEM -1
 
-#define GFX_MODE_IS_UNSCALED(mode) (((mode)->xfact == 1) && ((mode)->yfact == 1))
+#define GFX_MODE_IS_UNSCALED(mode) (((mode)->scaleFactor == 1) && ((mode)->scaleFactor == 1))
 
 /** Graphics mode description
  *
@@ -59,15 +58,13 @@
 
 struct gfx_mode_t {
 
-	int xfact, yfact; /**< Horizontal and vertical scaling factors */
+	int scaleFactor; /**< Horizontal and vertical scaling factor */
 	int xsize, ysize; /**< Horizontal and vertical size */
 
 	/**
 	 * Palette or NULL to indicate non-palette mode.
 	 */
 	Palette *palette;
-
-	Graphics::PixelFormat format;
 };
 
 

Modified: scummvm/trunk/engines/sci/gfx/gfx_tools.cpp
===================================================================
--- scummvm/trunk/engines/sci/gfx/gfx_tools.cpp	2009-09-07 11:08:56 UTC (rev 44002)
+++ scummvm/trunk/engines/sci/gfx/gfx_tools.cpp	2009-09-07 16:18:05 UTC (rev 44003)
@@ -46,9 +46,8 @@
 gfx_mode_t *gfx_new_mode(int xfact, int yfact, const Graphics::PixelFormat &format, Palette *palette, int flags) {
 	gfx_mode_t *mode = (gfx_mode_t *)malloc(sizeof(gfx_mode_t));
 
-	mode->xfact = xfact;
-	mode->yfact = yfact;
-	mode->format = format;
+	mode->scaleFactor = xfact;
+	mode->scaleFactor = yfact;
 	mode->palette = palette;
 
 	return mode;
@@ -177,8 +176,8 @@
 		pixmap->width = pixmap->index_width;
 		pixmap->height = pixmap->index_height;
 	} else {
-		pixmap->width = pixmap->index_width * mode->xfact;
-		pixmap->height = pixmap->index_height * mode->yfact;
+		pixmap->width = pixmap->index_width * mode->scaleFactor;
+		pixmap->height = pixmap->index_height * mode->scaleFactor;
 	}
 
 	size = pixmap->width * pixmap->height;
@@ -207,8 +206,8 @@
 	int linewidth;
 	int xl, yl;
 	int i, yc;
-	int xfact = mode->xfact;
-	int yfact = mode->yfact;
+	int xfact = mode->scaleFactor;
+	int yfact = mode->scaleFactor;
 
 	if (xfact == 1 && yfact == 1)
 		return pixmap;

Modified: scummvm/trunk/engines/sci/gfx/operations.cpp
===================================================================
--- scummvm/trunk/engines/sci/gfx/operations.cpp	2009-09-07 11:08:56 UTC (rev 44002)
+++ scummvm/trunk/engines/sci/gfx/operations.cpp	2009-09-07 16:18:05 UTC (rev 44003)
@@ -69,15 +69,15 @@
 // Internal operations
 
 static void _gfxop_scale_rect(rect_t *rect, gfx_mode_t *mode) {
-	rect->x *= mode->xfact;
-	rect->y *= mode->yfact;
-	rect->width *= mode->xfact;
-	rect->height *= mode->yfact;
+	rect->x *= mode->scaleFactor;
+	rect->y *= mode->scaleFactor;
+	rect->width *= mode->scaleFactor;
+	rect->height *= mode->scaleFactor;
 }
 
 static void _gfxop_scale_point(Common::Point *point, gfx_mode_t *mode) {
-	point->x *= mode->xfact;
-	point->y *= mode->yfact;
+	point->x *= mode->scaleFactor;
+	point->y *= mode->scaleFactor;
 }
 
 int _gfxop_clip(rect_t *rect, rect_t clipzone) {
@@ -117,13 +117,13 @@
 static void _gfxop_grab_pixmap(GfxState *state, gfx_pixmap_t **pxmp, int x, int y,
 							  int xl, int yl, int priority, rect_t *zone) {
 	// Returns 1 if the resulting data size was zero, GFX_OK or an error code otherwise */
-	int xfact = state->driver->getMode()->xfact;
-	int yfact = state->driver->getMode()->yfact;
+	int xfact = state->driver->getMode()->scaleFactor;
+	int yfact = state->driver->getMode()->scaleFactor;
 	int unscaled_xl = (xl + xfact - 1) / xfact;
 	int unscaled_yl = (yl + yfact - 1) / yfact;
 	*zone = gfx_rect(x, y, xl, yl);
 
-	if (_gfxop_clip(zone, gfx_rect(0, 0, 320 * state->driver->getMode()->xfact, 200 * state->driver->getMode()->yfact)))
+	if (_gfxop_clip(zone, gfx_rect(0, 0, 320 * state->driver->getMode()->scaleFactor, 200 * state->driver->getMode()->scaleFactor)))
 		error("_gfxop_grab_pixmap: zone was empty");
 
 	if (!*pxmp)
@@ -221,7 +221,7 @@
 	rect_t clipped_dest = gfx_rect(dest.x, dest.y, dest.width, dest.height);
 
 	if (control >= 0 || priority >= 0) {
-		Common::Point original_pos = Common::Point(dest.x / driver->getMode()->xfact, dest.y / driver->getMode()->yfact);
+		Common::Point original_pos = Common::Point(dest.x / driver->getMode()->scaleFactor, dest.y / driver->getMode()->scaleFactor);
 
 		if (control >= 0)
 			_gfxop_draw_control(control_map, pxm, control, original_pos);
@@ -242,8 +242,8 @@
 
 	_gfxop_install_pixmap(driver, pxm);
 
-	DDIRTY(stderr, "\\-> Drawing to actual %d %d %d %d\n", clipped_dest.x / driver->getMode()->xfact,
-	       clipped_dest.y / driver->getMode()->yfact, clipped_dest.width / driver->getMode()->xfact, clipped_dest.height / driver->getMode()->yfact);
+	DDIRTY(stderr, "\\-> Drawing to actual %d %d %d %d\n", clipped_dest.x / driver->getMode()->scaleFactor,
+	       clipped_dest.y / driver->getMode()->scaleFactor, clipped_dest.width / driver->getMode()->scaleFactor, clipped_dest.height / driver->getMode()->scaleFactor);
 
 	driver->drawPixmap(pxm, priority, src, clipped_dest, static_buf ? GFX_BUFFER_STATIC : GFX_BUFFER_BACK);
 }
@@ -252,8 +252,8 @@
 	bool clipped = false;
 	Common::Point mousePoint = g_system->getEventManager()->getMousePos();
 
-	state->pointer_pos.x = mousePoint.x / state->driver->getMode()->xfact;
-	state->pointer_pos.y = mousePoint.y / state->driver->getMode()->yfact;
+	state->pointer_pos.x = mousePoint.x / state->driver->getMode()->scaleFactor;
+	state->pointer_pos.y = mousePoint.y / state->driver->getMode()->scaleFactor;
 
 	if (state->pointer_pos.x < state->pointerZone.left) {
 		state->pointer_pos.x = state->pointerZone.left;
@@ -273,8 +273,8 @@
 
 	// FIXME: Do this only when mouse is grabbed?
 	if (clipped)
-		g_system->warpMouse(state->pointer_pos.x * state->driver->getMode()->xfact,
-							state->pointer_pos.y * state->driver->getMode()->yfact);
+		g_system->warpMouse(state->pointer_pos.x * state->driver->getMode()->scaleFactor,
+							state->pointer_pos.y * state->driver->getMode()->scaleFactor);
 }
 
 static void _gfxop_buffer_propagate_box(GfxState *state, rect_t box, gfx_buffer_t buffer);
@@ -489,8 +489,8 @@
 
 	DDIRTY(stderr, "-- Setting clip zone %d %d %d %d\n", GFX_PRINT_RECT(zone));
 
-	xfact = state->driver->getMode()->xfact;
-	yfact = state->driver->getMode()->yfact;
+	xfact = state->driver->getMode()->scaleFactor;
+	yfact = state->driver->getMode()->scaleFactor;
 
 	if (zone.x < MIN_X) {
 		zone.width -= (zone.x - MIN_X);
@@ -665,7 +665,7 @@
 	// Draws a stippled line if this isn't supported by the driver (skipone is ignored ATM)
 	int xl = end.x - start.x;
 	int yl = end.y - start.y;
-	int stepwidth = (xl) ? driver->getMode()->xfact : driver->getMode()->yfact;
+	int stepwidth = (xl) ? driver->getMode()->scaleFactor : driver->getMode()->scaleFactor;
 	int dbl_stepwidth = 2 * stepwidth;
 	int linelength = (line_mode == GFX_LINE_MODE_FINE) ? stepwidth - 1 : 0;
 	int16 *posvar;
@@ -741,7 +741,7 @@
 	        || start.y < state->clip_zone.y
 	        || end.x >= (state->clip_zone.x + state->clip_zone.width)
 	        || end.y >= (state->clip_zone.y + state->clip_zone.height))
-		if (point_clip(&start, &end, state->clip_zone, state->driver->getMode()->xfact - 1, state->driver->getMode()->yfact - 1))
+		if (point_clip(&start, &end, state->clip_zone, state->driver->getMode()->scaleFactor - 1, state->driver->getMode()->scaleFactor - 1))
 			return; // Clipped off
 
 	if (line_style == GFX_LINE_STYLE_STIPPLED) {
@@ -759,8 +759,8 @@
 
 	_gfxop_add_dirty_x(state, gfx_rect(start.x, start.y, end.x - start.x, end.y - start.y));
 
-	xfact = state->driver->getMode()->xfact;
-	yfact = state->driver->getMode()->yfact;
+	xfact = state->driver->getMode()->scaleFactor;
+	yfact = state->driver->getMode()->scaleFactor;
 
 	draw_line_to_control_map(state, start, end, color);
 
@@ -788,8 +788,8 @@
 
 	_gfxop_full_pointer_refresh(state);
 
-	xfact = state->driver->getMode()->xfact;
-	yfact = state->driver->getMode()->yfact;
+	xfact = state->driver->getMode()->scaleFactor;
+	yfact = state->driver->getMode()->scaleFactor;
 
 	int offset = line_mode == GFX_LINE_MODE_FINE ? 1 : 0;
 	x = rect.x * xfact + (xfact - 1) * offset;
@@ -937,7 +937,7 @@
 }
 
 static void _gfxop_buffer_propagate_box(GfxState *state, rect_t box, gfx_buffer_t buffer) {
-	if (_gfxop_clip(&box, gfx_rect(0, 0, 320 * state->driver->getMode()->xfact, 200 * state->driver->getMode()->yfact)))
+	if (_gfxop_clip(&box, gfx_rect(0, 0, 320 * state->driver->getMode()->scaleFactor, 200 * state->driver->getMode()->scaleFactor)))
 		return;
 
 	state->driver->update(box, Common::Point(box.x, box.y), buffer);
@@ -1113,7 +1113,7 @@
 		return; // Not fatal
 	}
 
-	g_system->warpMouse(pos.x * state->driver->getMode()->xfact, pos.y * state->driver->getMode()->yfact);
+	g_system->warpMouse(pos.x * state->driver->getMode()->scaleFactor, pos.y * state->driver->getMode()->scaleFactor);
 
 	// Trigger event reading to make sure the mouse coordinates will
 	// actually have changed the next time we read them.
@@ -1584,8 +1584,8 @@
 	old_x = pos.x -= pxm->xoffset;
 	old_y = pos.y -= pxm->yoffset;
 
-	pos.x *= state->driver->getMode()->xfact;
-	pos.y *= state->driver->getMode()->yfact;
+	pos.x *= state->driver->getMode()->scaleFactor;
+	pos.y *= state->driver->getMode()->scaleFactor;
 
 	if (!static_buf)
 		_gfxop_add_dirty(state, gfx_rect(old_x, old_y, pxm->index_width, pxm->index_height));
@@ -1646,7 +1646,7 @@
 	state->palette_nr = default_palette;
 	state->pic = state->gfxResMan->getPic(nr, GFX_MASK_VISUAL, flags, default_palette, true);
 
-	if (state->driver->getMode()->xfact == 1 && state->driver->getMode()->yfact == 1) {
+	if (state->driver->getMode()->scaleFactor == 1 && state->driver->getMode()->scaleFactor == 1) {
 		state->pic_unscaled = state->pic;
 	} else {
 		state->pic_unscaled = state->gfxResMan->getPic(nr, GFX_MASK_VISUAL, flags, default_palette, false);
@@ -1830,7 +1830,7 @@
 
 	_gfxop_scale_rect(&zone, state->driver->getMode());
 
-	line_height = handle->line_height * state->driver->getMode()->yfact;
+	line_height = handle->line_height * state->driver->getMode()->scaleFactor;
 
 	pos.y = zone.y;
 
@@ -1914,8 +1914,8 @@
 	_gfxop_scale_rect(&zone, state->driver->getMode());
 	_gfxop_scale_rect(&target, state->driver->getMode());
 
-	return _gfxop_draw_pixmap(state->driver, pxm, -1, -1, zone, target, gfx_rect(0, 0, 320*state->driver->getMode()->xfact,
-	                                   200*state->driver->getMode()->yfact), 0, NULL, NULL);
+	return _gfxop_draw_pixmap(state->driver, pxm, -1, -1, zone, target, gfx_rect(0, 0, 320*state->driver->getMode()->scaleFactor,
+	                                   200*state->driver->getMode()->scaleFactor), 0, NULL, NULL);
 }
 
 void gfxop_free_pixmap(GfxState *state, gfx_pixmap_t *pxm) {

Modified: scummvm/trunk/engines/sci/gfx/picfill.cpp
===================================================================
--- scummvm/trunk/engines/sci/gfx/picfill.cpp	2009-09-07 11:08:56 UTC (rev 44002)
+++ scummvm/trunk/engines/sci/gfx/picfill.cpp	2009-09-07 16:18:05 UTC (rev 44003)
@@ -229,9 +229,9 @@
 
 static void FILL_FUNCTION_RECURSIVE(gfxr_pic_t *pic, int old_xl, int old_xr, int y, int dy, byte *bounds,
 	int legalcolor, int legalmask, int color, int priority, int drawenable, int sci_titlebar_size) {
-	int linewidth = pic->mode->xfact * 320;
-	int miny = pic->mode->yfact * sci_titlebar_size;
-	int maxy = pic->mode->yfact * 200;
+	int linewidth = pic->mode->scaleFactor * 320;
+	int miny = pic->mode->scaleFactor * sci_titlebar_size;
+	int maxy = pic->mode->scaleFactor * 200;
 	int xl, xr;
 	int oldytotal = y * linewidth;
 #ifdef DRAW_SCALED
@@ -432,7 +432,7 @@
 
 static void FILL_FUNCTION(gfxr_pic_t *pic, int x_320, int y_200, int color, int priority, int control, int drawenable,
 	int sci_titlebar_size) {
-	int linewidth = pic->mode->xfact * 320;
+	int linewidth = pic->mode->scaleFactor * 320;
 	int x, y;
 	int xl, xr;
 	int ytotal;

Modified: scummvm/trunk/engines/sci/gfx/res_pic.cpp
===================================================================
--- scummvm/trunk/engines/sci/gfx/res_pic.cpp	2009-09-07 11:08:56 UTC (rev 44002)
+++ scummvm/trunk/engines/sci/gfx/res_pic.cpp	2009-09-07 16:18:05 UTC (rev 44003)
@@ -150,12 +150,12 @@
 
 	pic->control_map = gfx_pixmap_alloc_index_data(gfx_new_pixmap(320, 200, ID, 2, 0));
 
-	pic->priority_map = gfx_pixmap_alloc_index_data(gfx_new_pixmap(mode->xfact * 320, mode->yfact * 200,
+	pic->priority_map = gfx_pixmap_alloc_index_data(gfx_new_pixmap(mode->scaleFactor * 320, mode->scaleFactor * 200,
 	                    ID, 1, 0));
 
 
-	pic->visual_map = gfx_pixmap_alloc_index_data(gfx_new_pixmap(320 * mode->xfact,
-	                  200 * mode->yfact, ID, 0, 0));
+	pic->visual_map = gfx_pixmap_alloc_index_data(gfx_new_pixmap(320 * mode->scaleFactor,
+	                  200 * mode->scaleFactor, ID, 0, 0));
 
 	// Initialize colors
 	if (!sci1) {
@@ -169,7 +169,7 @@
 	pic->visual_map->flags = 0;
 	pic->priority_map->flags = 0;
 	pic->control_map->flags = 0;
-	if (mode->xfact > 1 || mode->yfact > 1) {
+	if (mode->scaleFactor > 1) {
 		pic->visual_map->flags |= GFX_PIXMAP_FLAG_SCALED_INDEX;
 		pic->priority_map->flags |= GFX_PIXMAP_FLAG_SCALED_INDEX;
 	}
@@ -187,12 +187,12 @@
 // Pic rendering operations
 
 void gfxr_clear_pic0(gfxr_pic_t *pic, int titlebar_size) {
-	memset(pic->visual_map->index_data, 0x00, (320 * pic->mode->xfact * titlebar_size * pic->mode->yfact));
-	memset(pic->visual_map->index_data + (320 * pic->mode->xfact * titlebar_size * pic->mode->yfact),
-	       0xff, pic->mode->xfact * 320 * pic->mode->yfact * (200 - titlebar_size)); // white
-	memset(pic->priority_map->index_data + (320 * pic->mode->xfact * titlebar_size * pic->mode->yfact),
-	       0x0, pic->mode->xfact * 320 * pic->mode->yfact * (200 - titlebar_size));
-	memset(pic->priority_map->index_data, 0x0a, titlebar_size * (pic->mode->yfact * 320 * pic->mode->xfact));
+	memset(pic->visual_map->index_data, 0x00, (320 * pic->mode->scaleFactor * titlebar_size * pic->mode->scaleFactor));
+	memset(pic->visual_map->index_data + (320 * pic->mode->scaleFactor * titlebar_size * pic->mode->scaleFactor),
+	       0xff, pic->mode->scaleFactor * 320 * pic->mode->scaleFactor * (200 - titlebar_size)); // white
+	memset(pic->priority_map->index_data + (320 * pic->mode->scaleFactor * titlebar_size * pic->mode->scaleFactor),
+	       0x0, pic->mode->scaleFactor * 320 * pic->mode->scaleFactor * (200 - titlebar_size));
+	memset(pic->priority_map->index_data, 0x0a, titlebar_size * (pic->mode->scaleFactor * 320 * pic->mode->scaleFactor));
 	memset(pic->control_map->index_data, 0, GFXR_AUX_MAP_SIZE);
 	memset(pic->aux_map, 0, GFXR_AUX_MAP_SIZE);
 }
@@ -465,8 +465,8 @@
 	// yoffset 63680, offset 320, plot 1, color 34, brush_mode 0, randseed 432)*/
 	// Auxplot: Used by plot_aux_pattern to plot to visual and priority
 	int xc, yc;
-	int line_width = 320 * pic->mode->xfact;
-	int full_offset = (yoffset * pic->mode->yfact + offset) * pic->mode->xfact;
+	int line_width = 320 * pic->mode->scaleFactor;
+	int full_offset = (yoffset * pic->mode->scaleFactor + offset) * pic->mode->scaleFactor;
 
 	if (yoffset + offset >= 64000) {
 		error("_gfxr_auxplot_brush() failed. Breakpoint in %s, line %d", __FILE__, __LINE__);
@@ -475,27 +475,27 @@
 	switch (brush_mode) {
 	case GFX_BRUSH_MODE_SCALED:
 		if (plot)
-			for (yc = 0; yc < pic->mode->yfact; yc++) {
-				memset(buffer + full_offset, color, pic->mode->xfact);
+			for (yc = 0; yc < pic->mode->scaleFactor; yc++) {
+				memset(buffer + full_offset, color, pic->mode->scaleFactor);
 				full_offset += line_width;
 			}
 		break;
 
 	case GFX_BRUSH_MODE_ELLIPSES:
 		if (plot) {
-			int x = offset * pic->mode->xfact + ((pic->mode->xfact - 1) >> 1);
-			int y = (yoffset / 320) * pic->mode->yfact + ((pic->mode->yfact - 1) >> 1);
+			int x = offset * pic->mode->scaleFactor + ((pic->mode->scaleFactor - 1) >> 1);
+			int y = (yoffset / 320) * pic->mode->scaleFactor + ((pic->mode->scaleFactor - 1) >> 1);
 
-			_gfxr_fill_ellipse(pic, buffer, line_width, x, y, pic->mode->xfact >> 1, pic->mode->yfact >> 1, color, ELLIPSE_SOLID);
+			_gfxr_fill_ellipse(pic, buffer, line_width, x, y, pic->mode->scaleFactor >> 1, pic->mode->scaleFactor >> 1, color, ELLIPSE_SOLID);
 		}
 		break;
 
 	case GFX_BRUSH_MODE_RANDOM_ELLIPSES:
 		if (plot) {
-			int x = offset * pic->mode->xfact + ((pic->mode->xfact - 1) >> 1);
-			int y = (yoffset / 320) * pic->mode->yfact + ((pic->mode->yfact - 1) >> 1);
-			int sizex = pic->mode->xfact >> 1;
-			int sizey = pic->mode->yfact >> 1;
+			int x = offset * pic->mode->scaleFactor + ((pic->mode->scaleFactor - 1) >> 1);
+			int y = (yoffset / 320) * pic->mode->scaleFactor + ((pic->mode->scaleFactor - 1) >> 1);
+			int sizex = pic->mode->scaleFactor >> 1;
+			int sizey = pic->mode->scaleFactor >> 1;
 
 			srand(randseed);
 
@@ -506,7 +506,7 @@
 			sizex = (int)((sizex * rand() * 1.0) / (RAND_MAX + 1.0));
 			sizey = (int)((sizey * rand() * 1.0) / (RAND_MAX + 1.0));
 
-			_gfxr_fill_ellipse(pic, buffer, line_width, x, y, pic->mode->xfact >> 1, pic->mode->yfact >> 1,
+			_gfxr_fill_ellipse(pic, buffer, line_width, x, y, pic->mode->scaleFactor >> 1, pic->mode->scaleFactor >> 1,
 			                   color, ELLIPSE_SOLID);
 			srand(time(NULL)); // Make sure we don't accidently forget to re-init the random number generator
 		}
@@ -515,8 +515,8 @@
 	case GFX_BRUSH_MODE_MORERANDOM: {
 		int mask = plot ? 7 : 1;
 		srand(randseed);
-		for (yc = 0; yc < pic->mode->yfact; yc++) {
-			for (xc = 0; xc < pic->mode->xfact; xc++)
+		for (yc = 0; yc < pic->mode->scaleFactor; yc++) {
+			for (xc = 0; xc < pic->mode->scaleFactor; xc++)
 				if ((rand() & 7) < mask)
 					buffer[full_offset + xc] = color;
 			full_offset += line_width;
@@ -654,8 +654,8 @@
 
 static void _gfxr_draw_pattern(gfxr_pic_t *pic, int x, int y, int color, int priority, int control, int drawenable,
 	int pattern_code, int pattern_size, int pattern_nr, gfx_brush_mode_t brush_mode, int titlebar_size) {
-	int xsize = (pattern_size + 1) * pic->mode->xfact - 1;
-	int ysize = (pattern_size + 1) * pic->mode->yfact - 1;
+	int xsize = (pattern_size + 1) * pic->mode->scaleFactor - 1;
+	int ysize = (pattern_size + 1) * pic->mode->scaleFactor - 1;
 	int scaled_x, scaled_y;
 	rect_t boundaries;
 	int max_x = (pattern_code & PATTERN_FLAG_RECTANGLE) ? 318 : 319; // Rectangles' width is size+1
@@ -676,20 +676,20 @@
 	if (y + pattern_size > 199)
 		y = 199 - pattern_size;
 
-	scaled_x = x * pic->mode->xfact + ((pic->mode->xfact - 1) >> 1);
-	scaled_y = y * pic->mode->yfact + ((pic->mode->yfact - 1) >> 1);
+	scaled_x = x * pic->mode->scaleFactor + ((pic->mode->scaleFactor - 1) >> 1);
+	scaled_y = y * pic->mode->scaleFactor + ((pic->mode->scaleFactor - 1) >> 1);
 
 	if (scaled_x < xsize)
 		scaled_x = xsize;
 
-	if (scaled_y < ysize + titlebar_size * pic->mode->yfact)
-		scaled_y = ysize + titlebar_size * pic->mode->yfact;
+	if (scaled_y < ysize + titlebar_size * pic->mode->scaleFactor)
+		scaled_y = ysize + titlebar_size * pic->mode->scaleFactor;
 
-	if (scaled_x > (320 * pic->mode->xfact) - 1 - xsize)
-		scaled_x = (320 * pic->mode->xfact) - 1 - xsize;
+	if (scaled_x > (320 * pic->mode->scaleFactor) - 1 - xsize)
+		scaled_x = (320 * pic->mode->scaleFactor) - 1 - xsize;
 
-	if (scaled_y > (200 * pic->mode->yfact) - 1 - ysize)
-		scaled_y = (200 * pic->mode->yfact) - 1 - ysize;
+	if (scaled_y > (200 * pic->mode->scaleFactor) - 1 - ysize)
+		scaled_y = (200 * pic->mode->scaleFactor) - 1 - ysize;
 
 	if (pattern_code & PATTERN_FLAG_RECTANGLE) {
 		// Rectangle
@@ -723,7 +723,7 @@
 			_gfxr_plot_aux_pattern(pic, x, y, pattern_size, 1, PLOT_AUX_PATTERN_NO_RANDOM,
 			                       drawenable, 0, 0, control, GFX_BRUSH_MODE_SCALED, GFX_MASK_CONTROL);
 
-			if (pic->mode->xfact == 1 && pic->mode->yfact == 1) {
+			if (pic->mode->scaleFactor == 1 && pic->mode->scaleFactor == 1) {
 				if (drawenable & GFX_MASK_VISUAL)
 					_gfxr_plot_aux_pattern(pic, x, y, pattern_size, 1, PLOT_AUX_PATTERN_NO_RANDOM,
 					                       drawenable, 0, 0, color, GFX_BRUSH_MODE_SCALED, GFX_MASK_VISUAL);
@@ -733,11 +733,11 @@
 					                       drawenable, 0, 0, priority, GFX_BRUSH_MODE_SCALED, GFX_MASK_PRIORITY);
 			} else {
 				if (drawenable & GFX_MASK_VISUAL)
-					_gfxr_fill_ellipse(pic, pic->visual_map->index_data, 320 * pic->mode->xfact,
+					_gfxr_fill_ellipse(pic, pic->visual_map->index_data, 320 * pic->mode->scaleFactor,
 					                   scaled_x, scaled_y, xsize, ysize, color, ELLIPSE_SOLID);
 
 				if (drawenable & GFX_MASK_PRIORITY)
-					_gfxr_fill_ellipse(pic, pic->priority_map->index_data, 320 * pic->mode->xfact,
+					_gfxr_fill_ellipse(pic, pic->priority_map->index_data, 320 * pic->mode->scaleFactor,
 					                   scaled_x, scaled_y, xsize, ysize, priority, ELLIPSE_SOLID);
 			}
 		}
@@ -769,8 +769,8 @@
 
 static void _gfxr_draw_line(gfxr_pic_t *pic, int x, int y, int ex, int ey, int color,
 	int priority, int control, int drawenable, int line_mode, int cmd, int titlebar_size) {
-	int scale_x = pic->mode->xfact;
-	int scale_y = pic->mode->yfact;
+	int scale_x = pic->mode->scaleFactor;
+	int scale_y = pic->mode->scaleFactor;
 	int xc, yc;
 	rect_t line;
 	int mask;
@@ -886,12 +886,12 @@
 
 #define TEST_POINT(xx, yy) \
 	if (pic->aux_map[(yy) * 320 + (xx)] & FRESH_PAINT) { \
-		mpos = (((yy) * 320 * pic->mode->yfact) + (xx)) * pic->mode->xfact; \
-		for (iy = 0; iy < pic->mode->yfact; iy++) { \
-			for (ix = 0; ix < pic->mode->xfact; ix++) { \
+		mpos = (((yy) * 320 * pic->mode->scaleFactor) + (xx)) * pic->mode->scaleFactor; \
+		for (iy = 0; iy < pic->mode->scaleFactor; iy++) { \
+			for (ix = 0; ix < pic->mode->scaleFactor; ix++) { \
 				if (!IS_FILL_BOUNDARY(test_map[mpos + ix])) { \
-					*x = ix + (xx) * pic->mode->xfact; \
-					*y = iy + (yy) * pic->mode->yfact; \
+					*x = ix + (xx) * pic->mode->scaleFactor; \
+					*y = iy + (yy) * pic->mode->scaleFactor; \
 					return 0; \
 				} \
 				mpos += linewidth; \
@@ -902,7 +902,7 @@
 static int _gfxr_find_fill_point(gfxr_pic_t *pic, int min_x, int min_y, int max_x, int max_y, int x_320,
 	int y_200, int color, int drawenable, int *x, int *y) {
 	// returns -1 on failure, 0 on success
-	int linewidth = pic->mode->xfact * 320;
+	int linewidth = pic->mode->scaleFactor * 320;
 	int mpos, ix, iy;
 	int size_x = (max_x - min_x + 1) >> 1;
 	int size_y = (max_y - min_y + 1) >> 1;
@@ -913,8 +913,8 @@
 	int legalcolor;
 	int legalmask;
 	byte *test_map;
-	*x = x_320 * pic->mode->xfact;
-	*y = y_200 * pic->mode->yfact;
+	*x = x_320 * pic->mode->scaleFactor;
+	*y = y_200 * pic->mode->scaleFactor;
 
 	if (size_x < 0 || size_y < 0)
 		return 0;
@@ -1063,35 +1063,32 @@
 
 void gfxr_remove_artifacts_pic0(gfxr_pic_t *dest, gfxr_pic_t *src) {
 	int x_320, y_200;
-	int bound_x = dest->mode->xfact;
-	int bound_y = dest->mode->yfact;
-	int scaled_line_size = bound_x * 320;
+	int scaled_line_size = dest->mode->scaleFactor * 320;
 	int read_offset = 0;
 
-	assert(src->mode->xfact == 1);
-	assert(src->mode->yfact == 1);
+	assert(src->mode->scaleFactor == 1);
 
-	if (bound_x == 1 && bound_y == 1) {
+	if (dest->mode->scaleFactor == 1) {
 		warning("[GFX] attempt to remove artifacts from unscaled pic");
 		return;
 	}
 
 	for (y_200 = 0; y_200 < 200; y_200++) {
 		for (x_320 = 0; x_320 < 320; x_320++) {
-			int write_offset = (y_200 * bound_y * scaled_line_size) + (x_320 * bound_x);
+			int write_offset = (y_200 * dest->mode->scaleFactor * scaled_line_size) + (x_320 * dest->mode->scaleFactor);
 			int sub_x, sub_y;
 			byte *src_visualp = &(src->visual_map->index_data[read_offset]);
 			byte *src_priorityp = &(src->priority_map->index_data[read_offset]);
 
-			for (sub_y = 0; sub_y < bound_y; sub_y++) {
-				for (sub_x = 0; sub_x < bound_x; sub_x++) {
+			for (sub_y = 0; sub_y < dest->mode->scaleFactor; sub_y++) {
+				for (sub_x = 0; sub_x < dest->mode->scaleFactor; sub_x++) {
 					check_and_remove_artifact(dest->visual_map->index_data + write_offset, src_visualp, (int)0xff,
 					                          (byte)x_320, (byte)(x_320 < 319), (byte)(y_200 > 10), (byte)(y_200 < 199));
 					check_and_remove_artifact(dest->priority_map->index_data + write_offset, src_priorityp, 0,
 					                          (byte)x_320, (byte)(x_320 < 319), (byte)(y_200 > 10), (byte)(y_200 < 199));
 					++write_offset;
 				}
-				write_offset += scaled_line_size - bound_x;
+				write_offset += scaled_line_size - dest->mode->scaleFactor;
 			}
 			++read_offset;
 		}
@@ -1290,7 +1287,7 @@
 				debugC(2, kDebugLevelSci0Pic, "Abs coords %d,%d\n", x, y);
 				//fprintf(stderr,"C=(%d,%d)\n", x, y + titlebar_size);
 #ifdef WITH_PIC_SCALING
-				if (pic->mode->xfact > 1 || pic->mode->yfact > 1)
+				if (pic->mode->scaleFactor > 1)
 					_gfxr_fill_any(pic, x, y + titlebar_size, (flags & DRAWPIC01_FLAG_FILL_NORMALLY) ?
 					               color : 0, priority, control, drawenable, titlebar_size);
 
@@ -1627,8 +1624,6 @@
 void gfxr_dither_pic0(gfxr_pic_t *pic, DitherMode dmode) {
 	int xl = pic->visual_map->index_width;
 	int yl = pic->visual_map->index_height;
-	int xfrob_max = pic->mode->xfact;
-	int yfrob_max = pic->mode->yfact;
 	int xfrobc = 0, yfrobc = 0;
 	int selection = 0;
 	int x, y;
@@ -1663,13 +1658,13 @@
 
 			++data;
 
-			if (++xfrobc == xfrob_max) {
+			if (++xfrobc == pic->mode->scaleFactor) {
 				selection = !selection;
 				xfrobc = 0;
 			}
 		}
 
-		if (++yfrobc == yfrob_max) {
+		if (++yfrobc == pic->mode->scaleFactor) {
 			selection = !selection;
 			yfrobc = 0;
 		}


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