aboutsummaryrefslogtreecommitdiff
path: root/engines/sci/gfx/gfx_support.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'engines/sci/gfx/gfx_support.cpp')
-rw-r--r--engines/sci/gfx/gfx_support.cpp180
1 files changed, 87 insertions, 93 deletions
diff --git a/engines/sci/gfx/gfx_support.cpp b/engines/sci/gfx/gfx_support.cpp
index 5f6037a4e8..05cf5b7d76 100644
--- a/engines/sci/gfx/gfx_support.cpp
+++ b/engines/sci/gfx/gfx_support.cpp
@@ -62,8 +62,7 @@ int gfx_crossblit_alpha_threshold = 128;
#undef DRAWLINE_FUNC
inline void
-gfx_draw_line_buffer(byte *buffer, int linewidth, int pixelwidth, point_t start, point_t end, unsigned int color)
-{
+gfx_draw_line_buffer(byte *buffer, int linewidth, int pixelwidth, point_t start, point_t end, unsigned int color) {
switch (pixelwidth) {
case 1:
@@ -93,8 +92,7 @@ gfx_draw_line_buffer(byte *buffer, int linewidth, int pixelwidth, point_t start,
void
-gfx_draw_line_pixmap_i(gfx_pixmap_t *pxm, point_t start, point_t end, int color)
-{
+gfx_draw_line_pixmap_i(gfx_pixmap_t *pxm, point_t start, point_t end, int color) {
gfx_draw_line_buffer(pxm->index_data, pxm->index_xl, 1, start, end, color);
}
@@ -102,27 +100,25 @@ gfx_draw_line_pixmap_i(gfx_pixmap_t *pxm, point_t start, point_t end, int color)
void
-gfx_draw_box_buffer(byte *buffer, int linewidth, rect_t zone, int color)
-{
- byte *dest = buffer + zone.x + (linewidth * zone.y);
- int i;
-
- if (zone.xl <= 0 || zone.yl <= 0)
- return;
-
- for (i = 0; i < zone.yl; i++) {
- memset(dest, color, zone.xl);
- dest += linewidth;
- }
+gfx_draw_box_buffer(byte *buffer, int linewidth, rect_t zone, int color) {
+ byte *dest = buffer + zone.x + (linewidth * zone.y);
+ int i;
+
+ if (zone.xl <= 0 || zone.yl <= 0)
+ return;
+
+ for (i = 0; i < zone.yl; i++) {
+ memset(dest, color, zone.xl);
+ dest += linewidth;
+ }
}
void
-gfx_draw_box_pixmap_i(gfx_pixmap_t *pxm, rect_t box, int color)
-{
- gfx_clip_box_basic(&box, pxm->index_xl - 1, pxm->index_yl - 1);
+gfx_draw_box_pixmap_i(gfx_pixmap_t *pxm, rect_t box, int color) {
+ gfx_clip_box_basic(&box, pxm->index_xl - 1, pxm->index_yl - 1);
- gfx_draw_box_buffer(pxm->index_data, pxm->index_xl, box, color);
+ gfx_draw_box_buffer(pxm->index_data, pxm->index_xl, box, color);
}
@@ -243,39 +239,38 @@ gfx_draw_box_pixmap_i(gfx_pixmap_t *pxm, rect_t box, int color)
#undef BYTESPP
#undef REVERSE_ALPHA
-static void (*crossblit_fns[5])(byte *, byte *, int, int, int, int, byte *, int, int, unsigned int, unsigned int) =
-{ NULL,
- _gfx_crossblit_8,
- _gfx_crossblit_16,
- _gfx_crossblit_24,
- _gfx_crossblit_32 };
-
-static void (*crossblit_fns_P[5])(byte *, byte *, int, int, int, int, byte *, int, int, unsigned int, unsigned int, byte *, int, int, int) =
-{ NULL,
- _gfx_crossblit_8_P,
- _gfx_crossblit_16_P,
- _gfx_crossblit_24_P,
- _gfx_crossblit_32_P };
-
-static void (*crossblit_fns_RA[5])(byte *, byte *, int, int, int, int, byte *, int, int, unsigned int, unsigned int) =
-{ NULL,
- _gfx_crossblit_8_RA,
- _gfx_crossblit_16_RA,
- _gfx_crossblit_24_RA,
- _gfx_crossblit_32_RA };
-
-static void (*crossblit_fns_P_RA[5])(byte *, byte *, int, int, int, int, byte *, int, int, unsigned int, unsigned int, byte *, int, int, int) =
-{ NULL,
- _gfx_crossblit_8_P_RA,
- _gfx_crossblit_16_P_RA,
- _gfx_crossblit_24_P_RA,
- _gfx_crossblit_32_P_RA };
-
+static void (*crossblit_fns[5])(byte *, byte *, int, int, int, int, byte *, int, int, unsigned int, unsigned int) = { NULL,
+ _gfx_crossblit_8,
+ _gfx_crossblit_16,
+ _gfx_crossblit_24,
+ _gfx_crossblit_32
+ };
+
+static void (*crossblit_fns_P[5])(byte *, byte *, int, int, int, int, byte *, int, int, unsigned int, unsigned int, byte *, int, int, int) = { NULL,
+ _gfx_crossblit_8_P,
+ _gfx_crossblit_16_P,
+ _gfx_crossblit_24_P,
+ _gfx_crossblit_32_P
+ };
+
+static void (*crossblit_fns_RA[5])(byte *, byte *, int, int, int, int, byte *, int, int, unsigned int, unsigned int) = { NULL,
+ _gfx_crossblit_8_RA,
+ _gfx_crossblit_16_RA,
+ _gfx_crossblit_24_RA,
+ _gfx_crossblit_32_RA
+ };
+
+static void (*crossblit_fns_P_RA[5])(byte *, byte *, int, int, int, int, byte *, int, int, unsigned int, unsigned int, byte *, int, int, int) = { NULL,
+ _gfx_crossblit_8_P_RA,
+ _gfx_crossblit_16_P_RA,
+ _gfx_crossblit_24_P_RA,
+ _gfx_crossblit_32_P_RA
+ };
+
void
-_gfx_crossblit_simple(byte *dest, byte *src, int dest_line_width, int src_line_width,
- int xl, int yl, int bpp)
-{
+_gfx_crossblit_simple(byte *dest, byte *src, int dest_line_width, int src_line_width,
+ int xl, int yl, int bpp) {
int line_width = xl * bpp;
int i;
@@ -288,23 +283,22 @@ _gfx_crossblit_simple(byte *dest, byte *src, int dest_line_width, int src_line_w
int
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)
-{
+ 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;
byte *src = pxm->data;
- byte *alpha = pxm->alpha_map? pxm->alpha_map : pxm->data;
+ byte *alpha = pxm->alpha_map ? pxm->alpha_map : pxm->data;
byte *priority_pos = priority_dest;
unsigned int alpha_mask, alpha_min;
int bpp = mode->bytespp;
- int bytes_per_alpha_pixel = pxm->alpha_map? 1 : bpp;
+ int bytes_per_alpha_pixel = pxm->alpha_map ? 1 : bpp;
int bytes_per_alpha_line = bytes_per_alpha_pixel * pxm->xl;
int xl = pxm->xl, yl = pxm->yl;
- int xoffset = (dest_coords.x < 0)? - dest_coords.x : 0;
- int yoffset = (dest_coords.y < 0)? - dest_coords.y : 0;
+ int xoffset = (dest_coords.x < 0) ? - dest_coords.x : 0;
+ int yoffset = (dest_coords.y < 0) ? - dest_coords.y : 0;
int revalpha = mode->flags & GFX_MODE_FLAG_REVERSE_ALPHA;
if (src_coords.x + src_coords.xl > xl)
@@ -313,12 +307,12 @@ gfx_crossblit_pixmap(gfx_mode_t *mode, gfx_pixmap_t *pxm, int priority,
if (src_coords.y + src_coords.yl > yl)
src_coords.yl = yl - src_coords.y;
-/** --???-- **/
+ /** --???-- **/
if (src_coords.y > yl)
return GFX_OK;
if (src_coords.x > xl)
return GFX_OK;
-/** --???-- **/
+ /** --???-- **/
if (dest_coords.x + xl >= maxx)
xl = maxx - dest_coords.x;
@@ -337,26 +331,26 @@ gfx_crossblit_pixmap(gfx_mode_t *mode, gfx_pixmap_t *pxm, int priority,
/* Set destination offsets */
/* Set x offsets */
- if (!(flags & GFX_CROSSBLIT_FLAG_DATA_IS_HOMED))
- dest += dest_coords.x * bpp;
+ if (!(flags & GFX_CROSSBLIT_FLAG_DATA_IS_HOMED))
+ dest += dest_coords.x * bpp;
priority_pos += dest_coords.x * priority_skip;
/* Set y offsets */
- if (!(flags & GFX_CROSSBLIT_FLAG_DATA_IS_HOMED))
- dest += dest_coords.y * dest_line_width;
+ if (!(flags & GFX_CROSSBLIT_FLAG_DATA_IS_HOMED))
+ dest += dest_coords.y * dest_line_width;
priority_pos += dest_coords.y * priority_line_width;
/* Set source offsets */
if (xoffset += src_coords.x) {
dest_coords.x = 0;
- src += xoffset * bpp;
+ src += xoffset * bpp;
alpha += xoffset * bytes_per_alpha_pixel;
}
if (yoffset += src_coords.y) {
dest_coords.y = 0;
- src += yoffset * bpp * pxm->xl;
+ src += yoffset * bpp * pxm->xl;
alpha += yoffset * bytes_per_alpha_line;
}
@@ -397,11 +391,11 @@ gfx_crossblit_pixmap(gfx_mode_t *mode, gfx_pixmap_t *pxm, int priority,
if (mode->alpha_mask && axp_have_mvi && bpp == 4) {
if (priority == GFX_NO_PRIORITY)
alpha_mvi_crossblit_32(dest, src, dest_line_width, pxm->xl * bpp,
- xl, yl, NULL, 0, 0, mode->alpha_mask, 24 - mode->alpha_shift);
+ xl, yl, NULL, 0, 0, mode->alpha_mask, 24 - mode->alpha_shift);
else
alpha_mvi_crossblit_32_P(dest, src, dest_line_width, pxm->xl * bpp,
- xl, yl, NULL, 0, 0, mode->alpha_mask, 24 - mode->alpha_shift,
- priority_pos, priority_line_width, priority_skip, priority);
+ xl, yl, NULL, 0, 0, mode->alpha_mask, 24 - mode->alpha_shift,
+ priority_pos, priority_line_width, priority_skip, priority);
} else {
#endif
@@ -412,32 +406,32 @@ gfx_crossblit_pixmap(gfx_mode_t *mode, gfx_pixmap_t *pxm, int priority,
if (revalpha)
alpha_min = 255 - alpha_min; /* Since we use it for the reverse effect */
-
+
if (!alpha_mask)
- _gfx_crossblit_simple(dest, src, dest_line_width, pxm->xl * bpp,
- xl, yl, bpp);
+ _gfx_crossblit_simple(dest, src, dest_line_width, pxm->xl * bpp,
+ xl, yl, bpp);
else
- if (priority == GFX_NO_PRIORITY) {
- if (bpp > 0 && bpp < 5)
- ((revalpha) ? crossblit_fns_RA : crossblit_fns)[bpp](dest, src, dest_line_width, pxm->xl * bpp,
- xl, yl, alpha, bytes_per_alpha_line, bytes_per_alpha_pixel,
- alpha_mask, alpha_min);
- else {
- GFXERROR("Invalid mode->bytespp: %d\n", mode->bytespp);
- return GFX_ERROR;
+ if (priority == GFX_NO_PRIORITY) {
+ if (bpp > 0 && bpp < 5)
+ ((revalpha) ? crossblit_fns_RA : crossblit_fns)[bpp](dest, src, dest_line_width, pxm->xl * bpp,
+ xl, yl, alpha, bytes_per_alpha_line, bytes_per_alpha_pixel,
+ alpha_mask, alpha_min);
+ else {
+ GFXERROR("Invalid mode->bytespp: %d\n", mode->bytespp);
+ return GFX_ERROR;
+ }
+ } else { /* priority */
+ if (bpp > 0 && bpp < 5)
+ ((revalpha) ? crossblit_fns_P_RA : crossblit_fns_P)[bpp](dest, src, dest_line_width, pxm->xl * bpp,
+ xl, yl, alpha, bytes_per_alpha_line, bytes_per_alpha_pixel,
+ alpha_mask, alpha_min, priority_pos,
+ priority_line_width, priority_skip, priority);
+ else {
+ GFXERROR("Invalid mode->bytespp: %d\n", mode->bytespp);
+ return GFX_ERROR;
+ }
}
- } else { /* priority */
- if (bpp > 0 && bpp < 5)
- ((revalpha) ? crossblit_fns_P_RA : crossblit_fns_P)[bpp](dest, src, dest_line_width, pxm->xl * bpp,
- xl, yl, alpha, bytes_per_alpha_line, bytes_per_alpha_pixel,
- alpha_mask, alpha_min, priority_pos,
- priority_line_width, priority_skip, priority);
- else {
- GFXERROR("Invalid mode->bytespp: %d\n", mode->bytespp);
- return GFX_ERROR;
- }
- }
#ifdef HAVE_ALPHA_EV6_SUPPORT
}
#endif