aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--engines/sci/engine/kgraphics.cpp30
1 files changed, 14 insertions, 16 deletions
diff --git a/engines/sci/engine/kgraphics.cpp b/engines/sci/engine/kgraphics.cpp
index b96c91fd4b..d67dbd9434 100644
--- a/engines/sci/engine/kgraphics.cpp
+++ b/engines/sci/engine/kgraphics.cpp
@@ -76,21 +76,17 @@ namespace Sci {
#define ADD_TO_WINDOW_PORT(widget) \
s->wm_port->add(GFXWC(s->wm_port), GFXW(widget));
-#define ADD_TO_CURRENT_FG_WIDGETS(widget) \
- ADD_TO_CURRENT_PICTURE_PORT(widget)
-
-#define ADD_TO_CURRENT_BG_WIDGETS(widget) \
- ADD_TO_CURRENT_PICTURE_PORT(widget)
-
#define FULL_REDRAW()\
if (s->visual) \
s->visual->draw(GFXW(s->visual), gfxw_point_zero); \
gfxop_update(s->gfx_state);
+#if 0
+// Used for debugging
#define FULL_INSPECTION()\
if (s->visual) \
s->visual->print(GFXW(s->visual), 0);
-
+#endif
#define GFX_ASSERT(x) { \
int val = !!(x); \
@@ -508,7 +504,7 @@ reg_t kGraph(EngineState *s, int funct_nr, int argc, reg_t *argv) {
// have negative width/height). The actual dirty rectangle is constructed in gfxdr_add_dirty().
// FIXME/TODO: We need to change the semantics of this call, so that no fake rectangles are used. As it is, it's
// not possible change rect_t to Common::Rect, as we assume that Common::Rect forms a *valid* rectangle.
- ADD_TO_CURRENT_BG_WIDGETS(GFXW(gfxw_new_line(Common::Point(SKPV(2), SKPV(1)), Common::Point(SKPV(4), SKPV(3)),
+ ADD_TO_CURRENT_PICTURE_PORT(GFXW(gfxw_new_line(Common::Point(SKPV(2), SKPV(1)), Common::Point(SKPV(4), SKPV(3)),
gfxcolor, GFX_LINE_MODE_CORRECT, GFX_LINE_STYLE_NORMAL)));
}
@@ -554,7 +550,9 @@ reg_t kGraph(EngineState *s, int funct_nr, int argc, reg_t *argv) {
SCIkdebug(SCIkGRAPHICS, "fill_box_any((%d, %d), (%d, %d), col=%d, p=%d, c=%d, mask=%d)\n",
SKPV(2), SKPV(1), SKPV(4), SKPV(3), SKPV(6), SKPV_OR_ALT(7, -1), SKPV_OR_ALT(8, -1), UKPV(5));
- ADD_TO_CURRENT_BG_WIDGETS(gfxw_new_box(s->gfx_state, area, color, color, GFX_BOX_SHADE_FLAT));
+ // FIXME/TODO: this is not right, as some of the dialogs are drawn *behind* some widgets. But at least it works for now
+ //ADD_TO_CURRENT_PICTURE_PORT(gfxw_new_box(s->gfx_state, area, color, color, GFX_BOX_SHADE_FLAT)); // old code
+ s->picture_port->add(GFXWC(s->picture_port), GFXW(gfxw_new_box(s->gfx_state, area, color, color, GFX_BOX_SHADE_FLAT)));
}
break;
@@ -1604,7 +1602,7 @@ static void _k_draw_control(EngineState *s, reg_t obj, int inverse) {
switch (type) {
case K_CONTROL_BUTTON:
SCIkdebug(SCIkGRAPHICS, "drawing button "PREG" to %d,%d\n", PRINT_REG(obj), x, y);
- ADD_TO_CURRENT_BG_WIDGETS(sciw_new_button_control(s->port, obj, area, text, font_nr,
+ ADD_TO_CURRENT_PICTURE_PORT(sciw_new_button_control(s->port, obj, area, text, font_nr,
(int8)(state & kControlStateFramed), (int8)inverse, (int8)(state & kControlStateDisabled)));
break;
@@ -1613,7 +1611,7 @@ static void _k_draw_control(EngineState *s, reg_t obj, int inverse) {
SCIkdebug(SCIkGRAPHICS, "drawing text "PREG" to %d,%d, mode=%d\n", PRINT_REG(obj), x, y, mode);
- ADD_TO_CURRENT_BG_WIDGETS(sciw_new_text_control(s->port, obj, area, text, font_nr, mode,
+ ADD_TO_CURRENT_PICTURE_PORT(sciw_new_text_control(s->port, obj, area, text, font_nr, mode,
(int8)(!!(state & kControlStateDitherFramed)), (int8)inverse));
break;
@@ -1630,14 +1628,14 @@ static void _k_draw_control(EngineState *s, reg_t obj, int inverse) {
update_cursor_limits(&s->save_dir_edit_offset, &cursor, max);
update_cursor_limits(&s->save_dir_edit_offset, &cursor, max);
- ADD_TO_CURRENT_BG_WIDGETS(sciw_new_edit_control(s->port, obj, area, text, font_nr, (unsigned)cursor, (int8)inverse));
+ ADD_TO_CURRENT_PICTURE_PORT(sciw_new_edit_control(s->port, obj, area, text, font_nr, (unsigned)cursor, (int8)inverse));
break;
case K_CONTROL_ICON:
SCIkdebug(SCIkGRAPHICS, "drawing icon control "PREG" to %d,%d\n", PRINT_REG(obj), x, y - 1);
- ADD_TO_CURRENT_BG_WIDGETS(sciw_new_icon_control(s->port, obj, area, view, loop, cel,
+ ADD_TO_CURRENT_PICTURE_PORT(sciw_new_icon_control(s->port, obj, area, view, loop, cel,
(int8)(state & kControlStateFramed), (int8)inverse));
break;
@@ -1675,7 +1673,7 @@ static void _k_draw_control(EngineState *s, reg_t obj, int inverse) {
}
}
- ADD_TO_CURRENT_BG_WIDGETS(sciw_new_list_control(s->port, obj, area, font_nr, entries_list, entries_nr,
+ ADD_TO_CURRENT_PICTURE_PORT(sciw_new_list_control(s->port, obj, area, font_nr, entries_list, entries_nr,
list_top, selection, (int8)inverse));
if (entries_nr)
free(entries_list);
@@ -3308,9 +3306,9 @@ reg_t kDisplay(EngineState *s, int funct_nr, int argc, reg_t *argv) {
SCIkdebug(SCIkGRAPHICS, "Display: Commiting text '%s'\n", text);
- //ADD_TO_CURRENT_FG_WIDGETS(text_handle);
+ //ADD_TO_CURRENT_PICTURE_PORT(text_handle);
- ADD_TO_CURRENT_FG_WIDGETS(GFXW(text_handle));
+ ADD_TO_CURRENT_PICTURE_PORT(GFXW(text_handle));
if ((!s->pic_not_valid) && update_immediately) { // Refresh if drawn to valid picture
FULL_REDRAW();
SCIkdebug(SCIkGRAPHICS, "Refreshing display...\n");