aboutsummaryrefslogtreecommitdiff
path: root/engines/sci/gfx/gfx_driver.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'engines/sci/gfx/gfx_driver.cpp')
-rw-r--r--engines/sci/gfx/gfx_driver.cpp127
1 files changed, 59 insertions, 68 deletions
diff --git a/engines/sci/gfx/gfx_driver.cpp b/engines/sci/gfx/gfx_driver.cpp
index a528673f6b..65acbe9cc8 100644
--- a/engines/sci/gfx/gfx_driver.cpp
+++ b/engines/sci/gfx/gfx_driver.cpp
@@ -18,8 +18,7 @@ struct _scummvm_driver_state {
#define S ((struct _scummvm_driver_state *)(drv->state))
static int
-scummvm_init_specific(struct _gfx_driver *drv, int xfact, int yfact, int bytespp)
-{
+scummvm_init_specific(struct _gfx_driver *drv, int xfact, int yfact, int bytespp) {
int i;
if (!drv->state) // = S
@@ -38,7 +37,7 @@ scummvm_init_specific(struct _gfx_driver *drv, int xfact, int yfact, int bytespp
S->priority[i] = gfx_pixmap_alloc_index_data(gfx_new_pixmap(S->xsize, S->ysize, GFX_RESID_NONE, -i, -777));
if (!S->priority[i]) {
printf("Out of memory: Could not allocate priority maps! (%dx%d)\n",
- S->xsize, S->ysize);
+ S->xsize, S->ysize);
return GFX_FATAL;
}
}
@@ -48,28 +47,26 @@ scummvm_init_specific(struct _gfx_driver *drv, int xfact, int yfact, int bytespp
S->visual[i] = new byte[S->xsize * S->ysize];
if (!S->visual[i]) {
printf("Out of memory: Could not allocate visual buffers! (%dx%d)\n",
- S->xsize, S->ysize);
+ S->xsize, S->ysize);
return GFX_FATAL;
}
memset(S->visual[i], 0, S->xsize * S->ysize);
}
drv->mode = gfx_new_mode(xfact, yfact, bytespp,
- 0, 0, 0, 0,
- 0, 0, 0, 0, 256, 0);
+ 0, 0, 0, 0,
+ 0, 0, 0, 0, 256, 0);
return GFX_OK;
}
static int
-scummvm_init(struct _gfx_driver *drv)
-{
+scummvm_init(struct _gfx_driver *drv) {
return scummvm_init_specific(drv, 1, 1, GFX_COLOR_MODE_INDEX);
}
static void
-scummvm_exit(struct _gfx_driver *drv)
-{
+scummvm_exit(struct _gfx_driver *drv) {
int i;
if (S) {
for (i = 0; i < 2; i++) {
@@ -97,12 +94,11 @@ scummvm_exit(struct _gfx_driver *drv)
/* This code shamelessly lifted from the SDL_gfxPrimitives package */
static void
-lineColor2(byte *dst, int16 x1, int16 y1, int16 x2, int16 y2, uint32 color)
-{
+lineColor2(byte *dst, int16 x1, int16 y1, int16 x2, int16 y2, uint32 color) {
int pixx, pixy;
- int x,y;
- int dx,dy;
- int sx,sy;
+ int x, y;
+ int dx, dy;
+ int sx, sy;
int swaptmp;
uint8 *pixel;
@@ -119,27 +115,31 @@ lineColor2(byte *dst, int16 x1, int16 y1, int16 x2, int16 y2, uint32 color)
pixx *= sx;
pixy *= sy;
if (dx < dy) {
- swaptmp = dx; dx = dy; dy = swaptmp;
- swaptmp = pixx; pixx = pixy; pixy = swaptmp;
+ swaptmp = dx;
+ dx = dy;
+ dy = swaptmp;
+ swaptmp = pixx;
+ pixx = pixy;
+ pixy = swaptmp;
}
/* Draw */
- x=0;
- y=0;
- for(; x < dx; x++, pixel += pixx) {
+ x = 0;
+ y = 0;
+ for (; x < dx; x++, pixel += pixx) {
*pixel = color;
y += dy;
if (y >= dx) {
- y -= dx; pixel += pixy;
+ y -= dx;
+ pixel += pixy;
}
}
}
static int
scummvm_draw_line(struct _gfx_driver *drv, point_t start, point_t end,
- gfx_color_t color,
- gfx_line_mode_t line_mode, gfx_line_style_t line_style)
-{
+ gfx_color_t color,
+ gfx_line_mode_t line_mode, gfx_line_style_t line_style) {
uint32 scolor = color.visual.global_index;
int xsize = S->xsize;
int ysize = S->ysize;
@@ -163,18 +163,18 @@ scummvm_draw_line(struct _gfx_driver *drv, point_t start, point_t end,
if (nstart.x > xsize)
nstart.x = xsize;
if (nend.x >= xsize)
- nend.x = xsize -1;
+ nend.x = xsize - 1;
if (nstart.y > ysize)
nstart.y = ysize;
if (nend.y >= ysize)
- nend.y = ysize -1;
+ nend.y = ysize - 1;
lineColor2(S->visual[1], (int16)nstart.x, (int16)nstart.y,
- (int16)nend.x, (int16)nend.y, scolor);
+ (int16)nend.x, (int16)nend.y, scolor);
if (color.mask & GFX_MASK_PRIORITY) {
gfx_draw_line_pixmap_i(S->priority[0], nstart, nend,
- color.priority);
+ color.priority);
}
}
@@ -183,9 +183,8 @@ scummvm_draw_line(struct _gfx_driver *drv, point_t start, point_t end,
static int
scummvm_draw_filled_rect(struct _gfx_driver *drv, rect_t rect,
- gfx_color_t color1, gfx_color_t color2,
- gfx_rectangle_fill_t shade_mode)
-{
+ gfx_color_t color1, gfx_color_t color2,
+ gfx_rectangle_fill_t shade_mode) {
if (color1.mask & GFX_MASK_VISUAL) {
for (int i = rect.y; i < rect.y + rect.yl; i++) {
memset(S->visual[1] + i * S->xsize + rect.x, color1.visual.global_index, rect.xl);
@@ -203,29 +202,27 @@ scummvm_draw_filled_rect(struct _gfx_driver *drv, rect_t rect,
static int
scummvm_draw_pixmap(struct _gfx_driver *drv, gfx_pixmap_t *pxm, int priority,
- rect_t src, rect_t dest, gfx_buffer_t buffer)
-{
- int bufnr = (buffer == GFX_BUFFER_STATIC)? 2:1;
- int pribufnr = bufnr -1;
+ rect_t src, rect_t dest, gfx_buffer_t buffer) {
+ int bufnr = (buffer == GFX_BUFFER_STATIC) ? 2 : 1;
+ int pribufnr = bufnr - 1;
if (dest.xl != src.xl || dest.yl != src.yl) {
printf("Attempt to scale pixmap (%dx%d)->(%dx%d): Not supported\n",
- src.xl, src.yl, dest.xl, dest.yl);
+ src.xl, src.yl, dest.xl, dest.yl);
return GFX_ERROR;
}
gfx_crossblit_pixmap(drv->mode, pxm, priority, src, dest,
- S->visual[bufnr], S->xsize,
- S->priority[pribufnr]->index_data,
- S->priority[pribufnr]->index_xl, 1, 0);
+ S->visual[bufnr], S->xsize,
+ S->priority[pribufnr]->index_data,
+ S->priority[pribufnr]->index_xl, 1, 0);
return GFX_OK;
}
static int
scummvm_grab_pixmap(struct _gfx_driver *drv, rect_t src, gfx_pixmap_t *pxm,
- gfx_map_mask_t map)
-{
+ gfx_map_mask_t map) {
if (src.x < 0 || src.y < 0) {
printf("Attempt to grab pixmap from invalid coordinates (%d,%d)\n", src.x, src.y);
return GFX_ERROR;
@@ -262,10 +259,9 @@ scummvm_grab_pixmap(struct _gfx_driver *drv, rect_t src, gfx_pixmap_t *pxm,
// Buffer operations
static int
-scummvm_update(struct _gfx_driver *drv, rect_t src, point_t dest, gfx_buffer_t buffer)
-{
+scummvm_update(struct _gfx_driver *drv, rect_t src, point_t dest, gfx_buffer_t buffer) {
//TODO
- int data_source = (buffer == GFX_BUFFER_BACK)? 2 : 1;
+ int data_source = (buffer == GFX_BUFFER_BACK) ? 2 : 1;
int data_dest = data_source - 1;
/*
@@ -283,7 +279,7 @@ scummvm_update(struct _gfx_driver *drv, rect_t src, point_t dest, gfx_buffer_t b
// S->xsize * S->ysize);
for (int i = 0; i < src.yl; i++) {
memcpy(S->visual[data_dest] + (dest.y + i) * S->xsize + dest.x,
- S->visual[data_source] + (src.y + i) * S->xsize + src.x, src.xl);
+ S->visual[data_source] + (src.y + i) * S->xsize + src.x, src.xl);
}
if ((src.x == dest.x) && (src.y == dest.y))
@@ -291,10 +287,10 @@ scummvm_update(struct _gfx_driver *drv, rect_t src, point_t dest, gfx_buffer_t b
break;
case GFX_BUFFER_FRONT:
memcpy(S->visual[data_dest], S->visual[data_source],
- S->xsize * S->ysize);
+ S->xsize * S->ysize);
g_system->copyRectToScreen(S->visual[data_dest] + src.x + src.y * S->xsize,
- S->xsize, dest.x, dest.y, src.xl, src.yl);
+ S->xsize, dest.x, dest.y, src.xl, src.yl);
/*
g_system->copyRectToScreen(S->visual[data_dest],
S->xsize, 0, 0, S->xsize, S->ysize);
@@ -311,8 +307,7 @@ scummvm_update(struct _gfx_driver *drv, rect_t src, point_t dest, gfx_buffer_t b
}
static int
-scummvm_set_static_buffer(struct _gfx_driver *drv, gfx_pixmap_t *pic, gfx_pixmap_t *priority)
-{
+scummvm_set_static_buffer(struct _gfx_driver *drv, gfx_pixmap_t *pic, gfx_pixmap_t *priority) {
memcpy(S->visual[2], pic->data, S->xsize * S->ysize);
/*gfx_crossblit_pixmap(drv->mode, pic, 0, rect, rect,
S->visual[2], S->xsize,
@@ -328,8 +323,7 @@ scummvm_set_static_buffer(struct _gfx_driver *drv, gfx_pixmap_t *pic, gfx_pixmap
// Mouse pointer operations
static int
-scummvm_set_pointer(struct _gfx_driver *drv, gfx_pixmap_t *pointer)
-{
+scummvm_set_pointer(struct _gfx_driver *drv, gfx_pixmap_t *pointer) {
if (pointer == NULL) {
g_system->showMouse(false);
} else {
@@ -346,8 +340,7 @@ scummvm_set_pointer(struct _gfx_driver *drv, gfx_pixmap_t *pointer)
// Palette operations
static int
-scummvm_set_palette(struct _gfx_driver *drv, int index, byte red, byte green, byte blue)
-{
+scummvm_set_palette(struct _gfx_driver *drv, int index, byte red, byte green, byte blue) {
byte color[] = {red, green, blue, 255};
g_system->setPalette(color, index, 1);
return GFX_OK;
@@ -357,8 +350,7 @@ scummvm_set_palette(struct _gfx_driver *drv, int index, byte red, byte green, by
// Event management
static sci_event_t
-scummvm_get_event(struct _gfx_driver *drv)
-{
+scummvm_get_event(struct _gfx_driver *drv) {
sci_event_t input;
input.type = SCI_EVT_NONE;
@@ -394,13 +386,13 @@ scummvm_get_event(struct _gfx_driver *drv)
modifiers = em->getModifierState();
input.buckybits =
- ((modifiers & Common::KBD_ALT) ? SCI_EVM_ALT : 0) |
- ((modifiers & Common::KBD_CTRL) ? SCI_EVM_CTRL : 0) |
- ((modifiers & Common::KBD_SHIFT) ? SCI_EVM_LSHIFT | SCI_EVM_RSHIFT : 0);
- //TODO: SCI_EVM_SCRLOCK SCI_EVM_NUMLOCK SCI_EVM_CAPSLOCK SCI_EVM_INSERT
+ ((modifiers & Common::KBD_ALT) ? SCI_EVM_ALT : 0) |
+ ((modifiers & Common::KBD_CTRL) ? SCI_EVM_CTRL : 0) |
+ ((modifiers & Common::KBD_SHIFT) ? SCI_EVM_LSHIFT | SCI_EVM_RSHIFT : 0);
+ //TODO: SCI_EVM_SCRLOCK SCI_EVM_NUMLOCK SCI_EVM_CAPSLOCK SCI_EVM_INSERT
switch (ev.type) {
- // Keyboard events
+ // Keyboard events
case Common::EVENT_KEYDOWN:
input.data = ev.kbd.keycode;
input.character = ev.kbd.ascii;
@@ -414,7 +406,7 @@ scummvm_get_event(struct _gfx_driver *drv)
input.data = SCI_K_TAB;
if (input.buckybits & (SCI_EVM_LSHIFT | SCI_EVM_RSHIFT))
input.character = SCI_K_SHIFT_TAB;
- else
+ else
input.character = SCI_K_TAB;
}
} else if ((input.data >= Common::KEYCODE_F1) && input.data <= Common::KEYCODE_F10) {
@@ -425,7 +417,7 @@ scummvm_get_event(struct _gfx_driver *drv)
input.data = (input.data - Common::KEYCODE_F1 + SCI_K_F1) << 8;
if (input.buckybits & (SCI_EVM_LSHIFT | SCI_EVM_RSHIFT))
input.character = input.data + ((SCI_K_SHIFT_F1 - SCI_K_F1) << 8);
- else
+ else
input.character = input.data;
} else {
// Special keys that need conversion
@@ -461,7 +453,7 @@ scummvm_get_event(struct _gfx_driver *drv)
case Common::KEYCODE_DELETE:
input.data = SCI_K_DELETE;
break;
- //TODO: SCI_K_CENTER
+ //TODO: SCI_K_CENTER
default:
input.type = SCI_EVT_NONE;
break;
@@ -470,7 +462,7 @@ scummvm_get_event(struct _gfx_driver *drv)
}
break;
- // Mouse events
+ // Mouse events
case Common::EVENT_LBUTTONDOWN:
input.type = SCI_EVT_MOUSE_PRESS;
input.data = 1;
@@ -496,7 +488,7 @@ scummvm_get_event(struct _gfx_driver *drv)
drv->pointer_y = p.y;
break;
- // Misc events
+ // Misc events
case Common::EVENT_QUIT:
input.type = SCI_EVT_QUIT;
break;
@@ -510,9 +502,8 @@ scummvm_get_event(struct _gfx_driver *drv)
}
static int
-scummvm_usec_sleep(struct _gfx_driver *drv, long usecs)
-{
- g_system->delayMillis(usecs/1000);
+scummvm_usec_sleep(struct _gfx_driver *drv, long usecs) {
+ g_system->delayMillis(usecs / 1000);
return GFX_OK;
}