aboutsummaryrefslogtreecommitdiff
path: root/engines/sci/gfx/gfx_pixmap_scale.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'engines/sci/gfx/gfx_pixmap_scale.cpp')
-rw-r--r--engines/sci/gfx/gfx_pixmap_scale.cpp133
1 files changed, 0 insertions, 133 deletions
diff --git a/engines/sci/gfx/gfx_pixmap_scale.cpp b/engines/sci/gfx/gfx_pixmap_scale.cpp
deleted file mode 100644
index d542683cee..0000000000
--- a/engines/sci/gfx/gfx_pixmap_scale.cpp
+++ /dev/null
@@ -1,133 +0,0 @@
-/* ScummVM - Graphic Adventure Engine
- *
- * ScummVM is the legal property of its developers, whose names
- * are too numerous to list here. Please refer to the COPYRIGHT
- * file distributed with this source distribution.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
-
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
-
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- * $URL$
- * $Id$
- *
- */
-
-#include "sci/sci.h" // for INCLUDE_OLDGFX
-#ifdef INCLUDE_OLDGFX
-
-/* Required defines:
-** FUNCNAME: Function name
-** SIZETYPE: Type used for each pixel
-*/
-
-#include "sci/gfx/gfx_system.h"
-#include "sci/gfx/gfx_resource.h"
-#include "sci/gfx/gfx_tools.h"
-
-namespace Sci {
-
-
-// TODO: Replace this code with our common scalers (/graphics/scaler.h)
-
-
-static void _gfx_xlate_pixmap_unfiltered(gfx_mode_t *mode, gfx_pixmap_t *pxm, int scale) {
- byte result_colors[GFX_PIC_COLORS];
- int scaleFactor = (scale) ? mode->scaleFactor : 1;
- int widthc, heightc; // Width duplication counter
- int line_width = scaleFactor * pxm->index_width;
- int x, y;
- int i;
- byte byte_transparent = 0;
- byte byte_opaque = 255;
- byte *src = pxm->index_data;
- byte *dest = pxm->data;
- byte *alpha_dest = pxm->alpha_map;
- int using_alpha = pxm->color_key != GFX_PIXMAP_COLOR_KEY_NONE;
- int separate_alpha_map = using_alpha;
-
- if (separate_alpha_map && !alpha_dest)
- 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++)
- result_colors[i] = pxm->palette->getColor(i).getParentIndex();
-
- if (!separate_alpha_map && pxm->color_key != GFX_PIXMAP_COLOR_KEY_NONE)
- result_colors[pxm->color_key] = 0;
-
- src = pxm->index_data; // Workaround for gcc 4.2.3 bug on EMT64
- for (y = 0; y < pxm->index_height; y++) {
- byte *prev_dest = dest;
- byte *prev_alpha_dest = alpha_dest;
-
- for (x = 0; x < pxm->index_width; x++) {
- int isalpha;
- byte col = result_colors[isalpha = *src++];
- isalpha = (isalpha == pxm->color_key) && using_alpha;
-
- // 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 < scaleFactor; widthc++) {
- memcpy(dest, &col, 1);
- dest++;
- }
-
- if (separate_alpha_map) { // Set separate alpha map
- 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 < scaleFactor; heightc++) {
- memcpy(dest, prev_dest, line_width);
- dest += line_width;
- if (separate_alpha_map) {
- memcpy(alpha_dest, prev_alpha_dest, line_width);
- alpha_dest += line_width;
- }
- }
- }
-
- pxm->width = pxm->index_width;
- pxm->height = pxm->index_height;
-}
-
-
-void gfx_xlate_pixmap(gfx_pixmap_t *pxm, gfx_mode_t *mode) {
- if (pxm->palette && pxm->palette != mode->palette)
- pxm->palette->mergeInto(mode->palette);
-
- if (!pxm->data) {
- 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->scaleFactor * mode->scaleFactor * pxm->index_width * pxm->index_height + 1);
- }
-
- _gfx_xlate_pixmap_unfiltered(mode, pxm, false);
-
- if (pxm->palette)
- pxm->palette_revision = pxm->palette->getRevision();
-}
-
-
-} // End of namespace Sci
-
-#endif