aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMax Horn2009-05-08 16:02:22 +0000
committerMax Horn2009-05-08 16:02:22 +0000
commitde114d3d52d485a69ce972cfc3e4f051975aaef1 (patch)
treeee7313d12dd777e03a51a011f97121368f705153
parent527463dea2ee7ad30a030df0598ecf7a44853b57 (diff)
downloadscummvm-rg350-de114d3d52d485a69ce972cfc3e4f051975aaef1.tar.gz
scummvm-rg350-de114d3d52d485a69ce972cfc3e4f051975aaef1.tar.bz2
scummvm-rg350-de114d3d52d485a69ce972cfc3e4f051975aaef1.zip
SCI: Got rid of code for endian adjusting pixmaps
svn-id: r40387
-rw-r--r--engines/sci/gfx/gfx_resmgr.cpp23
-rw-r--r--engines/sci/gfx/gfx_resource.cpp135
-rw-r--r--engines/sci/gfx/gfx_resource.h10
-rw-r--r--engines/sci/gfx/gfx_system.h3
-rw-r--r--engines/sci/gfx/operations.cpp1
5 files changed, 5 insertions, 167 deletions
diff --git a/engines/sci/gfx/gfx_resmgr.cpp b/engines/sci/gfx/gfx_resmgr.cpp
index aa7832c493..6866f32be6 100644
--- a/engines/sci/gfx/gfx_resmgr.cpp
+++ b/engines/sci/gfx/gfx_resmgr.cpp
@@ -300,15 +300,12 @@ void GfxResManager::setStaticPalette(Palette *newPalette)
}
static gfxr_pic_t *gfxr_pic_xlate_common(gfx_resource_t *res, int maps, int scaled, int force, gfx_mode_t *mode,
- gfx_xlate_filter_t filter, int endianize, gfx_options_t *options) {
+ gfx_xlate_filter_t filter, gfx_options_t *options) {
XLATE_AS_APPROPRIATE(GFX_MASK_VISUAL, visual_map);
XLATE_AS_APPROPRIATE(GFX_MASK_PRIORITY, priority_map);
XLATE_AS_APPROPRIATE(GFX_MASK_CONTROL, control_map);
- if (endianize && (maps & GFX_MASK_VISUAL) && res->scaled_data.pic->visual_map)
- gfxr_endianness_adjust(res->scaled_data.pic->visual_map, mode);
-
return scaled ? res->scaled_data.pic : res->unscaled_data.pic;
}
#undef XLATE_AS_APPROPRIATE
@@ -319,7 +316,6 @@ gfxr_pic_t *GfxResManager::getPic(int num, int maps, int flags, int default_pale
IntResMap &resMap = _resourceMaps[GFX_RESOURCE_TYPE_PIC];
gfx_resource_t *res = NULL;
int hash = getOptionsHash(GFX_RESOURCE_TYPE_PIC);
- int must_post_process_pic = 0;
int need_unscaled = (_driver->mode->xfact != 1 || _driver->mode->yfact != 1);
hash |= (flags << 20) | ((default_palette & 0x7) << 28);
@@ -388,22 +384,15 @@ gfxr_pic_t *GfxResManager::getPic(int num, int maps, int flags, int default_pale
#endif
}
- must_post_process_pic = res->scaled_data.pic->visual_map->data == NULL;
- // If the pic was only just drawn, we'll have to endianness-adjust it now
-
#ifdef CUSTOM_GRAPHICS_OPTIONS
npic = gfxr_pic_xlate_common(res, maps, scaled || _options->pic0_unscaled, 0, _driver->mode,
- _options->pic_xlate_filter, 0, _options);
+ _options->pic_xlate_filter, _options);
#else
npic = gfxr_pic_xlate_common(res, maps, 1, 0, _driver->mode,
- GFX_XLATE_FILTER_NONE, 0, _options);
+ GFX_XLATE_FILTER_NONE, _options);
#endif
- if (must_post_process_pic) {
- gfxr_endianness_adjust(npic->visual_map, _driver->mode);
- }
-
return npic;
}
@@ -503,9 +492,9 @@ gfxr_pic_t *GfxResManager::addToPic(int old_nr, int new_nr, int flags, int old_d
int old_ID = get_pic_id(res);
set_pic_id(res, GFXR_RES_ID(GFX_RESOURCE_TYPE_PIC, new_nr)); // To ensure that our graphical translation options work properly
#ifdef CUSTOM_GRAPHICS_OPTIONS
- pic = gfxr_pic_xlate_common(res, GFX_MASK_VISUAL, 1, 1, _driver->mode, _options->pic_xlate_filter, 1, _options);
+ pic = gfxr_pic_xlate_common(res, GFX_MASK_VISUAL, 1, 1, _driver->mode, _options->pic_xlate_filter, _options);
#else
- pic = gfxr_pic_xlate_common(res, GFX_MASK_VISUAL, 1, 1, _driver->mode, GFX_XLATE_FILTER_NONE, 1, _options);
+ pic = gfxr_pic_xlate_common(res, GFX_MASK_VISUAL, 1, 1, _driver->mode, GFX_XLATE_FILTER_NONE, _options);
#endif
set_pic_id(res, old_ID);
}
@@ -610,7 +599,6 @@ gfxr_view_t *GfxResManager::getView(int nr, int *loop, int *cel, int palette) {
#else
gfx_xlate_pixmap(cel_data, _driver->mode, GFX_XLATE_FILTER_NONE);
#endif
- gfxr_endianness_adjust(cel_data, _driver->mode);
}
return view;
@@ -692,7 +680,6 @@ gfx_pixmap_t *GfxResManager::getCursor(int num) {
#else
gfx_xlate_pixmap(cursor, _driver->mode, GFX_XLATE_FILTER_NONE);
#endif
- gfxr_endianness_adjust(cursor, _driver->mode);
res->unscaled_data.pointer = cursor;
diff --git a/engines/sci/gfx/gfx_resource.cpp b/engines/sci/gfx/gfx_resource.cpp
index 0335a3ea21..59170ec4fa 100644
--- a/engines/sci/gfx/gfx_resource.cpp
+++ b/engines/sci/gfx/gfx_resource.cpp
@@ -67,141 +67,6 @@ void gfxr_free_view(gfxr_view_t *view) {
free(view);
}
-static void pixmap_endianness_reverse_2_simple(byte *data, int area) {
- int c;
-
- for (c = 0; c < area; c++) {
- byte val = *data;
- *data = data[1];
- data[1] = val;
-
- data += 2;
- }
-}
-
-static void pixmap_endianness_reverse_2(byte *data, int area) {
- int c;
- int sl = sizeof(unsigned long);
-
- for (c = 0; c < (area & ~(sl - 1)); c += (sl >> 1)) {
- unsigned long temp;
-
- memcpy(&temp, data, sl);
-
- // The next line will give warnings on 32 bit archs, but that's OK.
-#if SIZEOF_LONG < 8
- temp = 0;
-#else
- temp = ((temp & 0xff00ff00ff00ff00l) >> 8)
- | ((temp & 0x00ff00ff00ff00ffl) << 8);
-#endif
-
- memcpy(data, &temp, sl);
-
- data += sl;
- }
-
- pixmap_endianness_reverse_2_simple(data, area & (sl - 1));
-}
-
-static void pixmap_endianness_reverse_3_simple(byte *data, int area) {
- int c;
-
- for (c = 0; c < area; c++) {
- byte val0 = data[0];
-
- data[0] = data[2];
- data[2] = val0;
-
- data += 3;
- }
-}
-
-static void pixmap_endianness_reverse_4_simple(byte *data, int area) {
- int c;
-
- for (c = 0; c < area; c++) {
- byte val0 = data[0];
- byte val1 = data[1];
-
- data[0] = data[3];
- data[3] = val0;
-
- data[1] = data[2];
- data[2] = val1;
-
- data += 4;
- }
-}
-
-static void pixmap_endianness_reverse_4(byte *data, int area) {
- int c;
- int sl = sizeof(unsigned long);
-
- for (c = 0; c < (area & ~(sl - 1)); c += (sl >> 2)) {
- unsigned long temp;
-
- memcpy(&temp, data, sl);
-
- // The next lines will give warnings on 32 bit archs, but that's OK.
-#if SIZEOF_LONG < 8
- temp = 0l;
-#else
- temp = ((temp & 0xffff0000ffff0000l) >> 16)
- | ((temp & 0x0000ffff0000ffffl) << 16);
- temp = ((temp & 0xff00ff00ff00ff00l) >> 8)
- | ((temp & 0x00ff00ff00ff00ffl) << 8);
-#endif
-
- memcpy(data, &temp, sl);
-
- data += sl;
- }
-
- pixmap_endianness_reverse_4_simple(data, area & (sl - 1));
-}
-
-gfx_pixmap_t *gfxr_endianness_adjust(gfx_pixmap_t *pixmap, gfx_mode_t *mode) {
- int bytespp;
- byte *data;
-
- if (!pixmap || !pixmap->data || !mode) {
- GFXERROR("gfxr_endianness_adjust(): Invoked with invalid values\n");
- BREAKPOINT();
- return NULL;
- }
-
- if (!(mode->flags & GFX_MODE_FLAG_REVERSE_ENDIAN))
- return pixmap;
-
- bytespp = mode->bytespp;
-
- data = pixmap->data;
-
- switch (bytespp) {
- case 1:
- break;
-
- case 2:
- pixmap_endianness_reverse_2(data, pixmap->width * pixmap->height);
- break;
-
- case 3:
- pixmap_endianness_reverse_3_simple(data, pixmap->width * pixmap->height);
- break;
-
- case 4:
- pixmap_endianness_reverse_4(data, pixmap->width * pixmap->height);
- break;
-
- default:
- fprintf(stderr, "gfxr_endianness_adjust(): Cannot adjust endianness for %d bytespp!\n", bytespp);
- return NULL;
- }
-
- return pixmap;
-}
-
void gfxr_free_pic(gfxr_pic_t *pic) {
gfx_free_pixmap(pic->visual_map);
gfx_free_pixmap(pic->priority_map);
diff --git a/engines/sci/gfx/gfx_resource.h b/engines/sci/gfx/gfx_resource.h
index 44ae01828e..51e1e2b75a 100644
--- a/engines/sci/gfx/gfx_resource.h
+++ b/engines/sci/gfx/gfx_resource.h
@@ -292,16 +292,6 @@ gfxr_view_t *gfxr_draw_view1(int id, byte *resource, int size, Palette *static_p
gfx_pixmap_t *gfxr_draw_cel1(int id, int loop, int cel, int mirrored, byte *resource, byte *cel_base, int size, gfxr_view_t *view, bool isAmiga, bool isSci11);
-gfx_pixmap_t *gfxr_endianness_adjust(gfx_pixmap_t *pixmap, gfx_mode_t *mode);
-/* Endianness-adjusts a pixmap, if neccessary
-** Parameters: (gfx_pixmap_t *) pixmap: The pixmap to adjust
-** (gfx_mode_t *) mode: The mode to adjust it for
-** Returns : (gfx_pixmap_t *) pixmap, or NULL on error
-** The pixmap is adjusted iff the mode signals that this is
-** required (by means of setting the appropriate flag), and
-** the mode has a byte depth of more than 1.
-*/
-
} // End of namespace Sci
#endif // SCI_GFX_GFX_RESOURCE_H
diff --git a/engines/sci/gfx/gfx_system.h b/engines/sci/gfx/gfx_system.h
index bfbc7299ff..a698c77f22 100644
--- a/engines/sci/gfx/gfx_system.h
+++ b/engines/sci/gfx/gfx_system.h
@@ -53,9 +53,6 @@ namespace Sci {
#define GFX_MODE_IS_UNSCALED(mode) (((mode)->xfact == 1) && ((mode)->yfact == 1))
-/* Reverse-endian: Target display has non-native endianness
-** (BE if local is LE or the other way 'round */
-#define GFX_MODE_FLAG_REVERSE_ENDIAN (1<<0)
/* Reverse Alpha: Alpha values 0 mean "transparent" if this is
** enabled */
#define GFX_MODE_FLAG_REVERSE_ALPHA (1<<1)
diff --git a/engines/sci/gfx/operations.cpp b/engines/sci/gfx/operations.cpp
index 1cf1f19590..e9e3b6ee24 100644
--- a/engines/sci/gfx/operations.cpp
+++ b/engines/sci/gfx/operations.cpp
@@ -2063,7 +2063,6 @@ int gfxop_draw_text(GfxState *state, TextHandle *handle, rect_t zone) {
#else
gfx_xlate_pixmap(pxm, state->driver->mode, GFX_XLATE_FILTER_NONE);
#endif
- gfxr_endianness_adjust(pxm, state->driver->mode); // FIXME: resmgr layer!
}
if (!pxm) {
GFXERROR("Could not find text pixmap %d/%d\n", i, handle->lines.size());