[Scummvm-cvs-logs] SF.net SVN: scummvm:[40103] scummvm/trunk/engines/sci

fingolfin at users.sourceforge.net fingolfin at users.sourceforge.net
Fri Apr 24 12:45:10 CEST 2009


Revision: 40103
          http://scummvm.svn.sourceforge.net/scummvm/?rev=40103&view=rev
Author:   fingolfin
Date:     2009-04-24 10:45:09 +0000 (Fri, 24 Apr 2009)

Log Message:
-----------
SCI: Started to C++ify the gfxw_widget_t codebase

Modified Paths:
--------------
    scummvm/trunk/engines/sci/engine/game.cpp
    scummvm/trunk/engines/sci/engine/kgraphics.cpp
    scummvm/trunk/engines/sci/engine/kmenu.cpp
    scummvm/trunk/engines/sci/engine/kpathing.cpp
    scummvm/trunk/engines/sci/engine/savegame.cpp
    scummvm/trunk/engines/sci/engine/scriptdebug.cpp
    scummvm/trunk/engines/sci/engine/state.h
    scummvm/trunk/engines/sci/gfx/gfx_gui.cpp
    scummvm/trunk/engines/sci/gfx/gfx_state_internal.h
    scummvm/trunk/engines/sci/gfx/gfx_widgets.cpp
    scummvm/trunk/engines/sci/gfx/gfx_widgets.h
    scummvm/trunk/engines/sci/gfx/menubar.cpp

Modified: scummvm/trunk/engines/sci/engine/game.cpp
===================================================================
--- scummvm/trunk/engines/sci/engine/game.cpp	2009-04-24 10:44:10 UTC (rev 40102)
+++ scummvm/trunk/engines/sci/engine/game.cpp	2009-04-24 10:45:09 UTC (rev 40103)
@@ -149,7 +149,7 @@
 	s->wm_port = gfxw_new_port(s->visual, NULL, s->gfx_state->pic_port_bounds, s->ega_colors[0], transparent);	
 
 	s->iconbar_port = gfxw_new_port(s->visual, NULL, gfx_rect(0, 0, 320, 200), s->ega_colors[0], transparent);
-	s->iconbar_port->flags |= GFXW_FLAG_NO_IMPLICIT_SWITCH;
+	s->iconbar_port->_flags |= GFXW_FLAG_NO_IMPLICIT_SWITCH;
 
 	if (s->resmgr->_sciVersion >= SCI_VERSION_01_VGA) {
 		// This bit sets the foreground and background colors in VGA SCI games
@@ -168,11 +168,11 @@
 	} else {
 		s->titlebar_port = gfxw_new_port(s->visual, NULL, gfx_rect(0, 0, 320, 10), s->ega_colors[0], s->ega_colors[15]);
 	}
-	s->titlebar_port->color.mask |= GFX_MASK_PRIORITY;
-	s->titlebar_port->color.priority = 11;
-	s->titlebar_port->bgcolor.mask |= GFX_MASK_PRIORITY;
-	s->titlebar_port->bgcolor.priority = 11;
-	s->titlebar_port->flags |= GFXW_FLAG_NO_IMPLICIT_SWITCH;
+	s->titlebar_port->_color.mask |= GFX_MASK_PRIORITY;
+	s->titlebar_port->_color.priority = 11;
+	s->titlebar_port->_bgcolor.mask |= GFX_MASK_PRIORITY;
+	s->titlebar_port->_bgcolor.priority = 11;
+	s->titlebar_port->_flags |= GFXW_FLAG_NO_IMPLICIT_SWITCH;
 
 	// but this is correct
 	s->picture_port = gfxw_new_port(s->visual, NULL, s->gfx_state->pic_port_bounds, s->ega_colors[0], transparent);
@@ -188,8 +188,8 @@
 	s->port = s->picture_port; // Currently using the picture port
 
 #if 0
-	s->titlebar_port->bgcolor.mask |= GFX_MASK_PRIORITY;
-	s->titlebar_port->bgcolor.priority = 11; // Standard priority for the titlebar port
+	s->titlebar_port->_bgcolor.mask |= GFX_MASK_PRIORITY;
+	s->titlebar_port->_bgcolor.priority = 11; // Standard priority for the titlebar port
 #endif
 
 	return 0;

Modified: scummvm/trunk/engines/sci/engine/kgraphics.cpp
===================================================================
--- scummvm/trunk/engines/sci/engine/kgraphics.cpp	2009-04-24 10:44:10 UTC (rev 40102)
+++ scummvm/trunk/engines/sci/engine/kgraphics.cpp	2009-04-24 10:45:09 UTC (rev 40103)
@@ -121,18 +121,18 @@
 
 static void assert_primary_widget_lists(EngineState *s) {
 	if (!s->dyn_views) {
-		rect_t bounds = s->picture_port->bounds;
+		rect_t bounds = s->picture_port->_bounds;
 
 		s->dyn_views = gfxw_new_list(bounds, GFXW_LIST_SORTED);
-		s->dyn_views->flags |= GFXW_FLAG_IMMUNE_TO_SNAPSHOTS;
+		s->dyn_views->_flags |= GFXW_FLAG_IMMUNE_TO_SNAPSHOTS;
 		ADD_TO_CURRENT_PICTURE_PORT(s->dyn_views);
 	}
 
 	if (!s->drop_views) {
-		rect_t bounds = s->picture_port->bounds;
+		rect_t bounds = s->picture_port->_bounds;
 
 		s->drop_views = gfxw_new_list(bounds, GFXW_LIST_SORTED);
-		s->drop_views->flags |= GFXW_FLAG_IMMUNE_TO_SNAPSHOTS;
+		s->drop_views->_flags |= GFXW_FLAG_IMMUNE_TO_SNAPSHOTS;
 		ADD_TO_CURRENT_PICTURE_PORT(s->drop_views);
 	}
 }
@@ -142,7 +142,7 @@
 		newport = s->picture_port;
 
 	if (s->dyn_views) {
-		gfxw_remove_widget_from_container(s->dyn_views->parent, GFXW(s->dyn_views));
+		gfxw_remove_widget_from_container(s->dyn_views->_parent, GFXW(s->dyn_views));
 
 		newport->add(GFXWC(newport), GFXW(s->dyn_views));
 	}
@@ -208,7 +208,7 @@
 
 void graph_restore_box(EngineState *s, reg_t handle) {
 	gfxw_snapshot_t **ptr;
-	int port_nr = s->port->ID;
+	int port_nr = s->port->_ID;
 
 	if (!handle.segment) {
 		warning("Attempt to restore box with zero handle");
@@ -222,20 +222,20 @@
 		return;
 	}
 
-	while (port_nr > 2 && !(s->port->flags & GFXW_FLAG_IMMUNE_TO_SNAPSHOTS) && (gfxw_widget_matches_snapshot(*ptr, GFXW(s->port)))) {
+	while (port_nr > 2 && !(s->port->_flags & GFXW_FLAG_IMMUNE_TO_SNAPSHOTS) && (gfxw_widget_matches_snapshot(*ptr, GFXW(s->port)))) {
 		// This shouldn't ever happen, actually, since windows (ports w/ ID > 2) should all be immune
 		gfxw_port_t *newport = gfxw_find_port(s->visual, port_nr);
-		SCIkwarn(SCIkERROR, "Port %d is not immune against snapshots!\n", s->port->ID);
+		SCIkwarn(SCIkERROR, "Port %d is not immune against snapshots!\n", s->port->_ID);
 		port_nr--;
 		if (newport)
 			s->port = newport;
 	}
 
-	if (s->dyn_views && gfxw_widget_matches_snapshot(*ptr, GFXW(s->dyn_views->parent))) {
-		gfxw_container_t *parent = s->dyn_views->parent;
+	if (s->dyn_views && gfxw_widget_matches_snapshot(*ptr, GFXW(s->dyn_views->_parent))) {
+		gfxw_container_t *parent = s->dyn_views->_parent;
 
 		do {
-			parent = parent->parent;
+			parent = parent->_parent;
 		} while (parent && (gfxw_widget_matches_snapshot(*ptr, GFXW(parent))));
 
 		if (!parent) {
@@ -353,7 +353,7 @@
 	GFX_ASSERT(gfxop_set_pointer_cursor(s->gfx_state, s->mouse_pointer_view));
 
 	if (argc > 2) {
-		Common::Point newpos = Common::Point(SKPV(2) + s->port->bounds.x, SKPV(3) + s->port->bounds.y);
+		Common::Point newpos = Common::Point(SKPV(2) + s->port->_bounds.x, SKPV(3) + s->port->_bounds.y);
 		GFX_ASSERT(gfxop_set_pointer_position(s->gfx_state, newpos));
 	}
 
@@ -457,21 +457,21 @@
 	gfxw_port_t *port = s->port;
 	gfxw_port_t *newport;
 
-	newport = sciw_new_window(s, port->zone, port->font_nr, port->color, newbgcolor,
+	newport = sciw_new_window(s, port->zone, port->font_nr, port->_color, newbgcolor,
 	                          s->titlebar_port->font_nr, s->ega_colors[15], s->ega_colors[8],
 	                          port->title_text, port->port_flags & ~kWindowTransparent);
 
 	if (s->dyn_views) {
 		int found = 0;
-		gfxw_container_t *parent = s->dyn_views->parent;
+		gfxw_container_t *parent = s->dyn_views->_parent;
 
 		while (parent && !(found |= (GFXW(parent) == GFXW(port))))
-			parent = parent->parent;
+			parent = parent->_parent;
 
 		s->dyn_views = NULL;
 	}
 
-	port->parent->add(GFXWC(port->parent), GFXW(newport));
+	port->_parent->add(GFXWC(port->_parent), GFXW(newport));
 	port->widfree(GFXW(port));
 }
 
@@ -532,7 +532,7 @@
 
 	case K_GRAPH_FILL_BOX_BACKGROUND:
 
-		_k_graph_rebuild_port_with_color(s, port->bgcolor);
+		_k_graph_rebuild_port_with_color(s, port->_bgcolor);
 		port = s->port;
 
 		redraw_port = 1;
@@ -540,7 +540,7 @@
 
 	case K_GRAPH_FILL_BOX_FOREGROUND:
 
-		_k_graph_rebuild_port_with_color(s, port->color);
+		_k_graph_rebuild_port_with_color(s, port->_color);
 		port = s->port;
 
 		redraw_port = 1;
@@ -582,7 +582,7 @@
 		area.x += s->port->zone.x;
 		area.y += s->port->zone.y;
 
-		if (s->dyn_views && s->dyn_views->parent == GFXWC(s->port))
+		if (s->dyn_views && s->dyn_views->_parent == GFXWC(s->port))
 			s->dyn_views->draw(GFXW(s->dyn_views), Common::Point(0, 0));
 
 		gfxop_update_box(s->gfx_state, area);
@@ -811,13 +811,13 @@
 		SCIkdebug(SCIkBRESEN, "Checking vs dynviews:\n");
 
 		while (widget) {
-			if (widget->ID && (widget->signal & _K_VIEW_SIG_FLAG_STOPUPD)
-			        && ((widget->ID != obj.segment) || (widget->subID != obj.offset))
-			        && is_object(s, make_reg(widget->ID, widget->subID)))
-				if (collides_with(s, abs_zone, make_reg(widget->ID, widget->subID), 1, GASEOUS_VIEW_MASK_ACTIVE, funct_nr, argc, argv))
+			if (widget->_ID && (widget->signal & _K_VIEW_SIG_FLAG_STOPUPD)
+			        && ((widget->_ID != obj.segment) || (widget->_subID != obj.offset))
+			        && is_object(s, make_reg(widget->_ID, widget->_subID)))
+				if (collides_with(s, abs_zone, make_reg(widget->_ID, widget->_subID), 1, GASEOUS_VIEW_MASK_ACTIVE, funct_nr, argc, argv))
 					return not_register(s, NULL_REG);
 
-			widget = (gfxw_dyn_view_t *) widget->next;
+			widget = (gfxw_dyn_view_t *) widget->_next;
 		}
 	}
 
@@ -987,7 +987,7 @@
 	int pic_nr = SKPV(0);
 	int add_to_pic = 1;
 	int palette = SKPV_OR_ALT(3, 0);
-	gfx_color_t transparent = s->wm_port->bgcolor;
+	gfx_color_t transparent = s->wm_port->_bgcolor;
 
 	CHECK_THIS_KERNEL_FUNCTION;
 
@@ -1037,7 +1037,7 @@
 	s->picture_port = gfxw_new_port(s->visual, NULL, s->gfx_state->pic_port_bounds, s->ega_colors[0], transparent);
 
 	s->iconbar_port = gfxw_new_port(s->visual, NULL, gfx_rect(0, 0, 320, 200), s->ega_colors[0], transparent);
-	s->iconbar_port->flags |= GFXW_FLAG_NO_IMPLICIT_SWITCH;
+	s->iconbar_port->_flags |= GFXW_FLAG_NO_IMPLICIT_SWITCH;
 
 	s->visual->add(GFXWC(s->visual), GFXW(s->picture_port));
 	s->visual->add(GFXWC(s->visual), GFXW(s->wm_port));
@@ -1716,13 +1716,13 @@
 }
 
 static void draw_obj_to_control_map(EngineState *s, gfxw_dyn_view_t *view) {
-	reg_t obj = make_reg(view->ID, view->subID);
+	reg_t obj = make_reg(view->_ID, view->_subID);
 
 	if (!is_object(s, obj))
-		warning("View %d does not contain valid object reference "PREG"", view->ID, PRINT_REG(obj));
+		warning("View %d does not contain valid object reference "PREG"", view->_ID, PRINT_REG(obj));
 
 	if (!(view->signalp && (((reg_t *)view->signalp)->offset & _K_VIEW_SIG_FLAG_IGNORE_ACTOR))) {
-		Common::Rect abs_zone = get_nsrect(s, make_reg(view->ID, view->subID), 1);
+		Common::Rect abs_zone = get_nsrect(s, make_reg(view->_ID, view->_subID), 1);
 		draw_rect_to_control_map(s, abs_zone);
 	}
 }
@@ -1731,7 +1731,7 @@
 	gfxw_dyn_view_t *widget = (gfxw_dyn_view_t *) list->contents;
 
 	while (widget) {
-		reg_t obj = make_reg(widget->ID, widget->subID);
+		reg_t obj = make_reg(widget->_ID, widget->_subID);
 
 		/*
 		 * this fixes a few problems, but doesn't match SSCI's logic.
@@ -1776,7 +1776,7 @@
 			*((reg_t *)(widget->signalp)) = make_reg(0, widget->signal & 0xffff); /* Write back signal */
 		}
 
-		widget = (gfxw_dyn_view_t *) widget->next;
+		widget = (gfxw_dyn_view_t *) widget->_next;
 	}
 }
 
@@ -1786,12 +1786,12 @@
 		gfxw_dyn_view_t *w = (gfxw_dyn_view_t *) s->dyn_views->contents;
 
 		while (w) {
-			if (w->ID == off.segment
-			        && w->subID == off.offset) {
+			if (w->_ID == off.segment
+			        && w->_subID == off.offset) {
 				w->under_bitsp = NULL;
 			}
 
-			w = (gfxw_dyn_view_t *) w->next;
+			w = (gfxw_dyn_view_t *) w->_next;
 		}
 	}
 }
@@ -1809,15 +1809,15 @@
 	if (widget) {
 		int retval;
 		// Recurse:
-		retval = _k_view_list_dispose_loop(s, list, (gfxw_dyn_view_t *) widget->next, funct_nr, argc, argv);
+		retval = _k_view_list_dispose_loop(s, list, (gfxw_dyn_view_t *) widget->_next, funct_nr, argc, argv);
 
 		if (retval == -1) // Bail out on annihilation, rely on re-start from Animate()
 			return -1;
 
-		if (GFXW_IS_DYN_VIEW(widget) && (widget->ID != GFXW_NO_ID)) {
+		if (GFXW_IS_DYN_VIEW(widget) && (widget->_ID != GFXW_NO_ID)) {
 			signal = ((reg_t *)widget->signalp)->offset;
 			if (signal & _K_VIEW_SIG_FLAG_DISPOSE_ME) {
-				reg_t obj = make_reg(widget->ID, widget->subID);
+				reg_t obj = make_reg(widget->_ID, widget->_subID);
 				reg_t under_bits = NULL_REG;
 
 				if (!is_object(s, obj)) {
@@ -1857,20 +1857,20 @@
 
 					if (!(signal & _K_VIEW_SIG_FLAG_HIDDEN)) {
 						SCIkdebug(SCIkGRAPHICS, "Adding view at "PREG" to background\n", PRINT_REG(obj));
-						if (!(gfxw_remove_id(widget->parent, widget->ID, widget->subID) == GFXW(widget))) {
-							SCIkwarn(SCIkERROR, "Attempt to remove view with ID %x:%x from list failed!\n", widget->ID, widget->subID);
+						if (!(gfxw_remove_id(widget->_parent, widget->_ID, widget->_subID) == GFXW(widget))) {
+							SCIkwarn(SCIkERROR, "Attempt to remove view with ID %x:%x from list failed!\n", widget->_ID, widget->_subID);
 							BREAKPOINT();
 						}
 
 						s->drop_views->add(GFXWC(s->drop_views), GFXW(gfxw_picviewize_dynview(widget)));
 
 						draw_obj_to_control_map(s, widget);
-						widget->draw_bounds.y += s->dyn_views->bounds.y - widget->parent->bounds.y;
-						widget->draw_bounds.x += s->dyn_views->bounds.x - widget->parent->bounds.x;
+						widget->draw_bounds.y += s->dyn_views->_bounds.y - widget->_parent->_bounds.y;
+						widget->draw_bounds.x += s->dyn_views->_bounds.x - widget->_parent->_bounds.x;
 						dropped = 1;
 					} else {
 						SCIkdebug(SCIkGRAPHICS, "Deleting view at "PREG"\n", PRINT_REG(obj));
-						widget->flags |= GFXW_FLAG_VISIBLE;
+						widget->_flags |= GFXW_FLAG_VISIBLE;
 						gfxw_annihilate(GFXW(widget));
 						return -1; // restart: Done in Animate()
 					}
@@ -1957,7 +1957,7 @@
 	if (widget) {
 		widget = (gfxw_dyn_view_t *) gfxw_set_id(GFXW(widget), obj.segment, obj.offset);
 		widget = gfxw_dyn_view_set_params(widget, under_bits.segment, under_bitsp, signal, signalp);
-		widget->flags |= GFXW_FLAG_IMMUNE_TO_SNAPSHOTS; // Only works the first time 'round'
+		widget->_flags |= GFXW_FLAG_IMMUNE_TO_SNAPSHOTS; // Only works the first time 'round'
 
 		return widget;
 	} else {
@@ -2023,20 +2023,20 @@
 		if (widget->signalp)
 			widget->signal = ((reg_t *)(widget->signalp))->offset;
 
-		widget = (gfxw_dyn_view_t *) widget->next;
+		widget = (gfxw_dyn_view_t *) widget->_next;
 	}
 }
 
 static void _k_prepare_view_list(EngineState *s, gfxw_list_t *list, int options) {
 	gfxw_dyn_view_t *view = (gfxw_dyn_view_t *) list->contents;
 	while (view) {
-		reg_t obj = make_reg(view->ID, view->subID);
+		reg_t obj = make_reg(view->_ID, view->_subID);
 		int priority, _priority;
-		int has_nsrect = (view->ID <= 0) ? 0 : lookup_selector(s, obj, s->selector_map.nsBottom, NULL, NULL) == kSelectorVariable;
+		int has_nsrect = (view->_ID <= 0) ? 0 : lookup_selector(s, obj, s->selector_map.nsBottom, NULL, NULL) == kSelectorVariable;
 		int oldsignal = view->signal;
 
 		_k_set_now_seen(s, obj);
-		_priority = /*GET_SELECTOR(obj, y); */((view->pos.y));
+		_priority = /*GET_SELECTOR(obj, y); */((view->_pos.y));
 		_priority = _find_view_priority(s, _priority - 1);
 
 		if (options & _K_MAKE_VIEW_LIST_DRAW_TO_CONTROL_MAP) { // Picview
@@ -2054,12 +2054,12 @@
 				priority = GET_SEL32SV(obj, priority);
 		}
 
-		view->color.priority = priority;
+		view->_color.priority = priority;
 
 		if (priority > -1)
-			view->color.mask |= GFX_MASK_PRIORITY;
+			view->_color.mask |= GFX_MASK_PRIORITY;
 		else
-			view->color.mask &= ~GFX_MASK_PRIORITY;
+			view->_color.mask &= ~GFX_MASK_PRIORITY;
 
 		// CR (from :Bob Heitman:) stopupdated views (like pic views) have
 		// their clipped nsRect drawn to the control map
@@ -2107,7 +2107,7 @@
 			fprintf(stderr, "Unsetting magic StopUpd for view "PREG"\n", PRINT_REG(obj));
 		} */
 
-		view = (gfxw_dyn_view_t *) view->next;
+		view = (gfxw_dyn_view_t *) view->_next;
 	}
 }
 
@@ -2125,16 +2125,16 @@
 		gfxw_dyn_view_t *new_widget = (gfxw_dyn_view_t *) new_list->contents;
 
 		while (new_widget
-		        && (new_widget->ID != old_widget->ID
-		            || new_widget->subID != old_widget->subID))
-			new_widget = (gfxw_dyn_view_t *) new_widget->next;
+		        && (new_widget->_ID != old_widget->_ID
+		            || new_widget->_subID != old_widget->_subID))
+			new_widget = (gfxw_dyn_view_t *) new_widget->_next;
 
 		if (new_widget) {
 			int carry = old_widget->signal & _K_VIEW_SIG_FLAG_STOPUPD;
 			// Transfer 'stopupd' flag
 
-			if ((new_widget->pos.x != old_widget->pos.x)
-			        || (new_widget->pos.y != old_widget->pos.y)
+			if ((new_widget->_pos.x != old_widget->_pos.x)
+			        || (new_widget->_pos.y != old_widget->_pos.y)
 					// No idea why this is supposed to be bad
 /*			        || (new_widget->z != old_widget->z)
 			        || (new_widget->view != old_widget->view)
@@ -2146,24 +2146,24 @@
 			old_widget->signal = new_widget->signal |= carry;
 		}
 
-		old_widget = (gfxw_dyn_view_t *) old_widget->next;
+		old_widget = (gfxw_dyn_view_t *) old_widget->_next;
 	}
 }
 
 static void _k_view_list_kryptonize(gfxw_widget_t *v) {
 	if (v) {
-		v->flags &= ~GFXW_FLAG_IMMUNE_TO_SNAPSHOTS;
-		_k_view_list_kryptonize(v->next);
+		v->_flags &= ~GFXW_FLAG_IMMUNE_TO_SNAPSHOTS;
+		_k_view_list_kryptonize(v->_next);
 	}
 }
 
 static void _k_raise_topmost_in_view_list(EngineState *s, gfxw_list_t *list, gfxw_dyn_view_t *view) {
 	if (view) {
-		gfxw_dyn_view_t *next = (gfxw_dyn_view_t *)view->next;
+		gfxw_dyn_view_t *next = (gfxw_dyn_view_t *)view->_next;
 
 		// step 11
 		if ((view->signal & (_K_VIEW_SIG_FLAG_NO_UPDATE | _K_VIEW_SIG_FLAG_HIDDEN | _K_VIEW_SIG_FLAG_ALWAYS_UPDATE)) == 0) {
-			SCIkdebug(SCIkGRAPHICS, "Forcing precedence 2 at ["PREG"] with %04x\n", PRINT_REG(make_reg(view->ID, view->subID)), view->signal);
+			SCIkdebug(SCIkGRAPHICS, "Forcing precedence 2 at ["PREG"] with %04x\n", PRINT_REG(make_reg(view->_ID, view->_subID)), view->signal);
 			view->force_precedence = 2;
 
 			if ((view->signal & (_K_VIEW_SIG_FLAG_REMOVE | _K_VIEW_SIG_FLAG_HIDDEN)) == _K_VIEW_SIG_FLAG_REMOVE) {
@@ -2171,7 +2171,7 @@
 			}
 		}
 
-		gfxw_remove_widget_from_container(view->parent, GFXW(view));
+		gfxw_remove_widget_from_container(view->_parent, GFXW(view));
 
 		if (view->signal & _K_VIEW_SIG_FLAG_HIDDEN)
 			gfxw_hide_widget(GFXW(view));
@@ -2188,7 +2188,7 @@
 	gfxw_dyn_view_t *view = (gfxw_dyn_view_t *) list->contents;
 	while (view) {
 
-		SCIkdebug(SCIkGRAPHICS, "  dv["PREG"]: signal %04x\n", make_reg(view->ID, view->subID), view->signal);
+		SCIkdebug(SCIkGRAPHICS, "  dv["PREG"]: signal %04x\n", make_reg(view->_ID, view->_subID), view->signal);
 
 		// step 1 of subalgorithm
 		if (view->signal & _K_VIEW_SIG_FLAG_NO_UPDATE) {
@@ -2221,7 +2221,7 @@
 
 		SCIkdebug(SCIkGRAPHICS, "    -> signal %04x\n", view->signal);
 
-		view = (gfxw_dyn_view_t *) view->next;
+		view = (gfxw_dyn_view_t *) view->_next;
 	}
 }
 
@@ -2239,14 +2239,14 @@
 	// Draws list_nr members of list to s->pic.
 	gfxw_dyn_view_t *widget = (gfxw_dyn_view_t *) list->contents;
 
-	if (GFXWC(s->port) != GFXWC(s->dyn_views->parent))
+	if (GFXWC(s->port) != GFXWC(s->dyn_views->_parent))
 		return; // Return if the pictures are meant for a different port
 
 	while (widget) {
 		if (flags & _K_DRAW_VIEW_LIST_PICVIEW)
 			widget = gfxw_picviewize_dynview(widget);
 
-		if (GFXW_IS_DYN_VIEW(widget) && widget->ID) {
+		if (GFXW_IS_DYN_VIEW(widget) && widget->_ID) {
 			uint16 signal = (flags & _K_DRAW_VIEW_LIST_USE_SIGNAL) ? ((reg_t *)(widget->signalp))->offset : 0;
 
 			if (signal & _K_VIEW_SIG_FLAG_HIDDEN)
@@ -2274,7 +2274,7 @@
 			  // disposeables and this one isn't disposeable
 		}
 
-		widget = (gfxw_dyn_view_t *) widget->next;
+		widget = (gfxw_dyn_view_t *) widget->_next;
 	} // while (widget)
 
 }
@@ -2303,7 +2303,7 @@
 		if (!widget) {
 			SCIkwarn(SCIkERROR, "Attempt to single-add invalid picview (%d/%d/%d)\n", view, loop, cel);
 		} else {
-			widget->ID = -1;
+			widget->_ID = -1;
 			if (control >= 0) {
 				Common::Rect abs_zone = nsrect_clip(s, y, calculate_nsrect(s, x, y, view, loop, cel), priority);
 				draw_rect_to_control_map(s, abs_zone);
@@ -2320,7 +2320,7 @@
 
 		list = LOOKUP_LIST(list_ref);
 
-		pic_views = gfxw_new_list(s->picture_port->bounds, 1);
+		pic_views = gfxw_new_list(s->picture_port->_bounds, 1);
 
 		SCIkdebug(SCIkGRAPHICS, "Preparing picview list...\n");
 		_k_make_view_list(s, &pic_views, list, 0, funct_nr, argc, argv);
@@ -2339,7 +2339,7 @@
 }
 
 reg_t kGetPort(EngineState *s, int funct_nr, int argc, reg_t *argv) {
-	return make_reg(0, s->port->ID);
+	return make_reg(0, s->port->_ID);
 }
 
 reg_t kSetPort(EngineState *s, int funct_nr, int argc, reg_t *argv) {
@@ -2360,7 +2360,7 @@
 		   official semantics) would cut off the lower part of the
 		   icons in an SCI1 icon bar. Instead we have an
 		   iconbar_port that does not exist in SSCI. */
-		if (port_nr == (unsigned int) - 1) port_nr = s->iconbar_port->ID;
+		if (port_nr == (unsigned int) - 1) port_nr = s->iconbar_port->_ID;
 
 		new_port = gfxw_find_port(s->visual, port_nr);
 
@@ -2445,11 +2445,11 @@
 		return s->r_acc;
 	}
 
-	if (s->dyn_views && GFXWC(s->dyn_views->parent) == GFXWC(goner)) {
-		reparentize_primary_widget_lists(s, (gfxw_port_t *) goner->parent);
+	if (s->dyn_views && GFXWC(s->dyn_views->_parent) == GFXWC(goner)) {
+		reparentize_primary_widget_lists(s, (gfxw_port_t *) goner->_parent);
 	}
 
-	if (s->drop_views && GFXWC(s->drop_views->parent) == GFXWC(goner))
+	if (s->drop_views && GFXWC(s->drop_views->_parent) == GFXWC(goner))
 		s->drop_views = NULL; // Kill it
 
 	pred = gfxw_remove_port(s->visual, goner);
@@ -2458,7 +2458,7 @@
 		s->port = pred;
 
 	// Find the last port that exists and that isn't marked no-switch
-	while ((!s->visual->port_refs[id] && id >= 0) || (s->visual->port_refs[id]->flags & GFXW_FLAG_NO_IMPLICIT_SWITCH))
+	while ((!s->visual->port_refs[id] && id >= 0) || (s->visual->port_refs[id]->_flags & GFXW_FLAG_NO_IMPLICIT_SWITCH))
 		id--;
 
 	sciprintf("Activating port %d after disposing window %d\n", id, goner_nr);
@@ -2487,7 +2487,7 @@
 	yl = SKPV(2) - y;
 	xl = SKPV(3) - x;
 
-	y += s->wm_port->bounds.y;
+	y += s->wm_port->_bounds.y;
 
 	if (x + xl > 319)
 		x -= ((x + xl) - 319);
@@ -2546,7 +2546,7 @@
 
 	s->port = window; // Set active port
 
-	return make_reg(0, window->ID);
+	return make_reg(0, window->_ID);
 }
 
 #define K_ANIMATE_CENTER_OPEN_H  0 // horizontally open from center
@@ -2993,12 +2993,12 @@
 	assert_primary_widget_lists(s);
 
 	if (!s->dyn_views->contents // Only reparentize empty dynview list
-	        && ((GFXWC(s->port) != GFXWC(s->dyn_views->parent)) // If dynviews are on other port...
-	            || (s->dyn_views->next))) // ... or not on top of the view list
+	        && ((GFXWC(s->port) != GFXWC(s->dyn_views->_parent)) // If dynviews are on other port...
+	            || (s->dyn_views->_next))) // ... or not on top of the view list
 		reparentize_primary_widget_lists(s, s->port);
 
 	if (cast_list) {
-		gfxw_list_t *templist = gfxw_new_list(s->dyn_views->bounds, 0);
+		gfxw_list_t *templist = gfxw_new_list(s->dyn_views->_bounds, 0);
 
 		_k_make_view_list(s, &(templist), cast_list, (cycle ? _K_MAKE_VIEW_LIST_CYCLE : 0)
 		                  | _K_MAKE_VIEW_LIST_CALC_PRIORITY, funct_nr, argc, argv);
@@ -3007,8 +3007,8 @@
 		assert_primary_widget_lists(s);
 
 		if (!s->dyn_views->contents // Only reparentize empty dynview list
-		        && ((GFXWC(s->port) != GFXWC(s->dyn_views->parent)) // If dynviews are on other port...
-		            || (s->dyn_views->next))) // ... or not on top of the view list
+		        && ((GFXWC(s->port) != GFXWC(s->dyn_views->_parent)) // If dynviews are on other port...
+		            || (s->dyn_views->_next))) // ... or not on top of the view list
 			reparentize_primary_widget_lists(s, s->port);
 		// End of doit() recovery code
 
@@ -3056,18 +3056,18 @@
 			reparentize = 1;
 
 		if (s->drop_views->contents) {
-			s->drop_views = gfxw_new_list(s->dyn_views->bounds, GFXW_LIST_SORTED);
-			s->drop_views->flags |= GFXW_FLAG_IMMUNE_TO_SNAPSHOTS;
+			s->drop_views = gfxw_new_list(s->dyn_views->_bounds, GFXW_LIST_SORTED);
+			s->drop_views->_flags |= GFXW_FLAG_IMMUNE_TO_SNAPSHOTS;
 			ADD_TO_CURRENT_PICTURE_PORT(s->drop_views);
 		} else {
 			assert(s->drop_views);
-			gfxw_remove_widget_from_container(s->drop_views->parent, GFXW(s->drop_views));
+			gfxw_remove_widget_from_container(s->drop_views->_parent, GFXW(s->drop_views));
 			ADD_TO_CURRENT_PICTURE_PORT(s->drop_views);
 		}
 
 		if ((reparentize | retval)
-		        && (GFXWC(s->port) == GFXWC(s->dyn_views->parent)) // If dynviews are on the same port...
-		        && (s->dyn_views->next)) // ... and not on top of the view list...
+		        && (GFXWC(s->port) == GFXWC(s->dyn_views->_parent)) // If dynviews are on the same port...
+		        && (s->dyn_views->_next)) // ... and not on top of the view list...
 			reparentize_primary_widget_lists(s, s->port); // ...then reparentize.
 
 		_k_view_list_kryptonize(s->dyn_views->contents);
@@ -3146,8 +3146,8 @@
 	int font_nr = port->font_nr;
 	gfxw_text_t *text_handle;
 
-	color0 = port->color;
-	bg_color = port->bgcolor;
+	color0 = port->_color;
+	bg_color = port->_bgcolor;
 	// TODO: in SCI1VGA the default colors for text and background are #0 (black)
 	// SCI0 case should be checked 
 	if (s->resmgr->_sciVersion >= SCI_VERSION_01_VGA) {
@@ -3299,12 +3299,12 @@
 	}
 
 	if (save_under) {    // Backup
-		rect_t save_area = text_handle->bounds;
-		save_area.x += port->bounds.x;
-		save_area.y += port->bounds.y;
+		rect_t save_area = text_handle->_bounds;
+		save_area.x += port->_bounds.x;
+		save_area.y += port->_bounds.y;
 
 		s->r_acc = graph_save_box(s, save_area);
-		text_handle->serial++; // This is evil!
+		text_handle->_serial++; // This is evil!
 
 		SCIkdebug(SCIkGRAPHICS, "Saving (%d, %d) size (%d, %d) as "PREG"\n", save_area.x, save_area.y, save_area.width, save_area.height, s->r_acc);
 	}

Modified: scummvm/trunk/engines/sci/engine/kmenu.cpp
===================================================================
--- scummvm/trunk/engines/sci/engine/kmenu.cpp	2009-04-24 10:44:10 UTC (rev 40102)
+++ scummvm/trunk/engines/sci/engine/kmenu.cpp	2009-04-24 10:45:09 UTC (rev 40103)
@@ -68,10 +68,10 @@
 	int fgcolor = SKPV_OR_ALT(1, s->status_bar_foreground);
 	int bgcolor = SKPV_OR_ALT(2, s->status_bar_background);
 
-	s->titlebar_port->color.visual = get_pic_color(s, fgcolor);
-	s->titlebar_port->color.mask = GFX_MASK_VISUAL;
-	s->titlebar_port->bgcolor.visual = get_pic_color(s, bgcolor);
-	s->titlebar_port->bgcolor.mask = GFX_MASK_VISUAL;
+	s->titlebar_port->_color.visual = get_pic_color(s, fgcolor);
+	s->titlebar_port->_color.mask = GFX_MASK_VISUAL;
+	s->titlebar_port->_bgcolor.visual = get_pic_color(s, bgcolor);
+	s->titlebar_port->_bgcolor.mask = GFX_MASK_VISUAL;
 
 	s->status_bar_foreground = fgcolor;
 	s->status_bar_background = bgcolor;

Modified: scummvm/trunk/engines/sci/engine/kpathing.cpp
===================================================================
--- scummvm/trunk/engines/sci/engine/kpathing.cpp	2009-04-24 10:44:10 UTC (rev 40102)
+++ scummvm/trunk/engines/sci/engine/kpathing.cpp	2009-04-24 10:45:09 UTC (rev 40103)
@@ -1543,7 +1543,7 @@
 
 		if (!port->decorations) {
 			port->decorations = gfxw_new_list(gfx_rect(0, 0, 320, 200), 0);
-			port->decorations->set_visual(GFXW(port->decorations), port->visual);
+			port->decorations->set_visual(GFXW(port->decorations), port->_visual);
 		} else {
 			port->decorations->free_contents(port->decorations);
 		}

Modified: scummvm/trunk/engines/sci/engine/savegame.cpp
===================================================================
--- scummvm/trunk/engines/sci/engine/savegame.cpp	2009-04-24 10:44:10 UTC (rev 40102)
+++ scummvm/trunk/engines/sci/engine/savegame.cpp	2009-04-24 10:45:09 UTC (rev 40103)
@@ -510,9 +510,9 @@
 	meta.savegame_time = ((curTime.tm_hour & 0xFF) << 16) | (((curTime.tm_min) & 0xFF) << 8) | ((curTime.tm_sec) & 0xFF);
 
 	s->savegame_version = CURRENT_SAVEGAME_VERSION;
-	s->dyn_views_list_serial = (s->dyn_views)? s->dyn_views->serial : -2;
-	s->drop_views_list_serial = (s->drop_views)? s->drop_views->serial : -2;
-	s->port_serial = (s->port)? s->port->serial : -2;
+	s->dyn_views_list_serial = (s->dyn_views)? s->dyn_views->_serial : -2;
+	s->drop_views_list_serial = (s->drop_views)? s->drop_views->_serial : -2;
+	s->port_serial = (s->port)? s->port->_serial : -2;
 
 	if (s->execution_stack_base) {
 		sciprintf("Cannot save from below kernel function\n");

Modified: scummvm/trunk/engines/sci/engine/scriptdebug.cpp
===================================================================
--- scummvm/trunk/engines/sci/engine/scriptdebug.cpp	2009-04-24 10:44:10 UTC (rev 40102)
+++ scummvm/trunk/engines/sci/engine/scriptdebug.cpp	2009-04-24 10:45:09 UTC (rev 40103)
@@ -1663,7 +1663,7 @@
 	if (!s->port)
 		sciprintf("none.\n");
 	else
-		sciprintf("%d\n", s->port->ID);
+		sciprintf("%d\n", s->port->_ID);
 
 	return 0;
 }
@@ -2767,8 +2767,8 @@
 		return 1;
 	}
 
-	s->titlebar_port->color = s->ega_colors[cmd_params[0].val];
-	s->titlebar_port->bgcolor = s->ega_colors[cmd_params[1].val];
+	s->titlebar_port->_color = s->ega_colors[cmd_params[0].val];
+	s->titlebar_port->_bgcolor = s->ega_colors[cmd_params[1].val];
 
 	s->status_bar_foreground = cmd_params[0].val;
 	s->status_bar_background = cmd_params[1].val;

Modified: scummvm/trunk/engines/sci/engine/state.h
===================================================================
--- scummvm/trunk/engines/sci/engine/state.h	2009-04-24 10:44:10 UTC (rev 40102)
+++ scummvm/trunk/engines/sci/engine/state.h	2009-04-24 10:45:09 UTC (rev 40103)
@@ -54,7 +54,7 @@
 struct gfxw_port_t;
 struct gfxw_visual_t;
 struct gfxw_container_t;	
-typedef gfxw_container_t gfxw_list_t;
+struct gfxw_list_t;
 
 
 class DirSeeker {

Modified: scummvm/trunk/engines/sci/gfx/gfx_gui.cpp
===================================================================
--- scummvm/trunk/engines/sci/gfx/gfx_gui.cpp	2009-04-24 10:44:10 UTC (rev 40102)
+++ scummvm/trunk/engines/sci/gfx/gfx_gui.cpp	2009-04-24 10:45:09 UTC (rev 40103)
@@ -47,13 +47,13 @@
 }
 
 static gfxw_list_t *make_titlebar_list(EngineState *s, rect_t bounds, gfxw_port_t *status_bar) {
-	gfx_color_t color = status_bar->bgcolor;
+	gfx_color_t color = status_bar->_bgcolor;
 	gfxw_list_t *list;
 	gfxw_box_t *bgbox;
 
 
-	list = gfxw_new_list(status_bar->bounds, 0);
-	bgbox = gfxw_new_box(s->gfx_state, gfx_rect(0, 0, status_bar->bounds.width, status_bar->bounds.height - 1),
+	list = gfxw_new_list(status_bar->_bounds, 0);
+	bgbox = gfxw_new_box(s->gfx_state, gfx_rect(0, 0, status_bar->_bounds.width, status_bar->_bounds.height - 1),
 	                     color, color, GFX_BOX_SHADE_FLAT);
 
 	list->add((gfxw_container_t *) list, (gfxw_widget_t *) bgbox);
@@ -65,7 +65,7 @@
 	gfx_color_t black = s->ega_colors[0];
 	gfxw_primitive_t *line;
 
-	line = gfxw_new_line(Common::Point(0, status_bar->bounds.height - 1), Common::Point(status_bar->bounds.width, status_bar->bounds.height - 1),
+	line = gfxw_new_line(Common::Point(0, status_bar->_bounds.height - 1), Common::Point(status_bar->_bounds.width, status_bar->_bounds.height - 1),
 	                     black, GFX_LINE_MODE_CORRECT, GFX_LINE_STYLE_NORMAL);
 	list->add((gfxw_container_t *)list, (gfxw_widget_t *)line);
 
@@ -75,16 +75,16 @@
 void sciw_set_status_bar(EngineState *s, gfxw_port_t *status_bar, const Common::String &text, int fgcolor, int bgcolor) {
 	gfx_state_t *state;
 	gfxw_list_t *list;
-	gfx_color_t bg = status_bar->bgcolor;
-	gfx_color_t fg = status_bar->color;
+	gfx_color_t bg = status_bar->_bgcolor;
+	gfx_color_t fg = status_bar->_color;
 	gfx_color_t black = s->ega_colors[0];
 
-	if (!status_bar->visual) {
+	if (!status_bar->_visual) {
 		GFXERROR("Attempt to change title bar without visual!\n");
 		return;
 	}
 
-	state = status_bar->visual->gfx_state;
+	state = status_bar->_visual->gfx_state;
 
 	if (!state) {
 		GFXERROR("Attempt to change title bar with stateless visual!\n");
@@ -94,19 +94,19 @@
 	clear_titlebar(status_bar);
 
 	if (!text.empty()) {
-		gfxw_text_t *textw = gfxw_new_text(state, gfx_rect(0, 0, status_bar->bounds.width, status_bar->bounds.height),
+		gfxw_text_t *textw = gfxw_new_text(state, gfx_rect(0, 0, status_bar->_bounds.width, status_bar->_bounds.height),
 		                                   status_bar->font_nr, text.c_str(), ALIGN_LEFT, ALIGN_CENTER,
 		                                   fg, fg, bg, kFontNoNewlines);
 
-		list = make_titlebar_list(s, status_bar->bounds, status_bar);
+		list = make_titlebar_list(s, status_bar->_bounds, status_bar);
 
 		list->add((gfxw_container_t *)list, (gfxw_widget_t *)textw);
 
 	} else {
-		gfxw_box_t *bgbox = gfxw_new_box(state, gfx_rect(0, 0, status_bar->bounds.width, status_bar->bounds.height - 1),
+		gfxw_box_t *bgbox = gfxw_new_box(state, gfx_rect(0, 0, status_bar->_bounds.width, status_bar->_bounds.height - 1),
 		                                 black, black, GFX_BOX_SHADE_FLAT);
 
-		list = gfxw_new_list(status_bar->bounds, 0);
+		list = gfxw_new_list(status_bar->_bounds, 0);
 
 		list->add((gfxw_container_t *)list, (gfxw_widget_t *)bgbox);
 	}
@@ -122,11 +122,11 @@
 	// This window is meant to cover the whole screen, so we allow it to go through.
 	if (rect->width == 319 && rect->height == 189) return;
 
-	if (rect->x + rect->width > parent->bounds.x + parent->bounds.width)
-		rect->x -= (rect->x + rect->width) - (parent->bounds.x + parent->bounds.width) + 2;
+	if (rect->x + rect->width > parent->_bounds.x + parent->_bounds.width)
+		rect->x -= (rect->x + rect->width) - (parent->_bounds.x + parent->_bounds.width) + 2;
 
-	if (rect->y + rect->height > parent->bounds.y + parent->bounds.height)
-		rect->y -= (rect->y + rect->height) - (parent->bounds.y + parent->bounds.height) + 2;
+	if (rect->y + rect->height > parent->_bounds.y + parent->_bounds.height)
+		rect->y -= (rect->y + rect->height) - (parent->_bounds.y + parent->_bounds.height) + 2;
 }
 
 gfxw_port_t *sciw_new_window(EngineState *s,
@@ -154,12 +154,12 @@
 	}
 
 	/*
-	if (area.y + area.height > visual->bounds.y + visual->bounds.height) {
-		area.y -= (area.y + area.height) - (visual->bounds.y + visual->bounds.height) + yextra;
+	if (area.y + area.height > visual->_bounds.y + visual->_bounds.height) {
+		area.y -= (area.y + area.height) - (visual->_bounds.y + visual->_bounds.height) + yextra;
 	}
 
-	if (area.x + area.width > visual->bounds.x + visual->bounds.width) {
-		area.x -= (area.x + area.width) - (visual->bounds.x + visual->bounds.width) + xextra;
+	if (area.x + area.width > visual->_bounds.x + visual->_bounds.width) {
+		area.x -= (area.x + area.width) - (visual->_bounds.x + visual->_bounds.width) + xextra;
 	}
 	*/
 
@@ -176,7 +176,7 @@
 	win->title_text = title;
 	win->port_flags = flags;
 
-	win->flags |= GFXW_FLAG_IMMUNE_TO_SNAPSHOTS;
+	win->_flags |= GFXW_FLAG_IMMUNE_TO_SNAPSHOTS;
 
 	if (flags & kWindowDontDraw)
 		flags = kWindowTransparent | kWindowNoFrame;
@@ -190,7 +190,7 @@
 		frame = gfx_rect(area.x - 1, area.y - 1, area.width + 2, area.height + 2);
 
 	// Set visible window boundaries
-	win->bounds = gfx_rect(frame.x, frame.y, frame.width + shadow_offset, frame.height + shadow_offset);
+	win->_bounds = gfx_rect(frame.x, frame.y, frame.width + shadow_offset, frame.height + shadow_offset);
 
 	decorations = gfxw_new_list(gfx_rect(frame.x, frame.y, frame.width + 1 + shadow_offset, frame.height + 1 + shadow_offset), 0);
 
@@ -199,7 +199,7 @@
 		win->port_bg = (gfxw_widget_t *)gfxw_new_box(state, gfx_rect(1, (flags & kWindowTitle) ? 10 : 1,
 		                        area.width, area.height), bgcolor, bgcolor, GFX_BOX_SHADE_FLAT);
 		decorations->add((gfxw_container_t *) decorations, win->port_bg);
-		win->flags |= GFXW_FLAG_OPAQUE;
+		win->_flags |= GFXW_FLAG_OPAQUE;
 	}
 
 	if (flags & kWindowTitle) {
@@ -254,7 +254,7 @@
 	}
 
 	win->decorations = decorations;
-	decorations->parent = GFXWC(win);
+	decorations->_parent = GFXWC(win);
 
 	return win;
 }
@@ -270,17 +270,17 @@
 	gfx_color_t *color1, *color2, *bgcolor;
 
 	if (inverse) {
-		color1 = color2 = &(port->bgcolor);
-		bgcolor = &(port->color);
+		color1 = color2 = &(port->_bgcolor);
+		bgcolor = &(port->_color);
 	} else if (gray_text) {
-		bgcolor = color1 = &(port->bgcolor);
-		color2 = &(port->color);
+		bgcolor = color1 = &(port->_bgcolor);
+		color2 = &(port->_color);
 	} else {
-		color1 = color2 = &(port->color);
-		bgcolor = &(port->bgcolor);
+		color1 = color2 = &(port->_color);
+		bgcolor = &(port->_bgcolor);
 	}
 
-	list->add(GFXWC(list), GFXW(gfxw_new_text(port->visual->gfx_state, zone, font, text, align, ALIGN_TOP,
+	list->add(GFXWC(list), GFXW(gfxw_new_text(port->_visual->gfx_state, zone, font, text, align, ALIGN_TOP,
 	                            *color1, *color2, *bgcolor, flags)));
 
 	zone.width--;
@@ -294,7 +294,7 @@
 }
 
 gfxw_list_t *sciw_new_button_control(gfxw_port_t *port, reg_t ID, rect_t zone, char *text, int font, char selected, char inverse, char grayed_out) {
-	gfx_color_t *frame_col = (inverse) ? &(port->bgcolor) : &(port->color);
+	gfx_color_t *frame_col = (inverse) ? &(port->_bgcolor) : &(port->_color);
 	gfxw_list_t *list;
 
 	zone.x--;
@@ -317,7 +317,7 @@
 		          GFXW(gfxw_new_rect(zone, *frame_col, GFX_LINE_MODE_CORRECT, GFX_LINE_STYLE_NORMAL)));
 	} else {
 		list->add(GFXWC(list), GFXW(gfxw_new_box(NULL, gfx_rect(zone.x, zone.y, zone.width + 1, zone.height + 1),
-		                            port->color, port->color, GFX_BOX_SHADE_FLAT)));
+		                            port->_color, port->_color, GFX_BOX_SHADE_FLAT)));
 
 		list = _sciw_add_text_to_list(list, port, gfx_rect(zone.x + 1, zone.y + 2, zone.width - 1, zone.height),
 		                              text, font, ALIGN_CENTER, 0, inverse, kFontIgnoreLF, grayed_out);
@@ -348,7 +348,7 @@
 	gfxw_text_t *text_handle;
 
 	gfxw_list_t *list;
-	int cursor_height = gfxop_get_font_height(port->visual->gfx_state, font);
+	int cursor_height = gfxop_get_font_height(port->_visual->gfx_state, font);
 
 	zone.x--;
 	zone.y--;
@@ -361,8 +361,8 @@
 	zone.y = 1;
 
 	if ((g_system->getMillis() % 1000) < 500) {
-		text_handle = gfxw_new_text(port->visual->gfx_state, zone, font, text, ALIGN_LEFT, ALIGN_TOP,
-		                            port->color, port->color, port->bgcolor, kFontNoNewlines);
+		text_handle = gfxw_new_text(port->_visual->gfx_state, zone, font, text, ALIGN_LEFT, ALIGN_TOP,
+		                            port->_color, port->_color, port->_bgcolor, kFontNoNewlines);
 
 		list->add(GFXWC(list), GFXW(text_handle));
 	} else {
@@ -374,8 +374,8 @@
 			textdup[cursor] = 0; // terminate
 
 		if (cursor > 0) {
-			text_handle = gfxw_new_text(port->visual->gfx_state, zone, font, textdup, ALIGN_LEFT, ALIGN_TOP,
-			                            port->color, port->color, port->bgcolor, kFontNoNewlines);
+			text_handle = gfxw_new_text(port->_visual->gfx_state, zone, font, textdup, ALIGN_LEFT, ALIGN_TOP,
+			                            port->_color, port->_color, port->_bgcolor, kFontNoNewlines);
 
 			list->add(GFXWC(list), GFXW(text_handle));
 			zone.x += text_handle->width;
@@ -384,28 +384,28 @@
 		if (cursor < strlen(text)) {
 			textdup[0] = text[cursor];
 			textdup[1] = 0;
-			text_handle =  gfxw_new_text(port->visual->gfx_state, zone, font, textdup, ALIGN_LEFT, ALIGN_TOP,
-			                             port->bgcolor, port->bgcolor, port->color, kFontNoNewlines);
+			text_handle =  gfxw_new_text(port->_visual->gfx_state, zone, font, textdup, ALIGN_LEFT, ALIGN_TOP,
+			                             port->_bgcolor, port->_bgcolor, port->_color, kFontNoNewlines);
 			list->add(GFXWC(list), GFXW(text_handle));
 			zone.x += text_handle->width;
 		};
 
 		if (cursor + 1 < strlen(text)) {
-			text_handle = gfxw_new_text(port->visual->gfx_state, zone, font, text + cursor + 1, ALIGN_LEFT, ALIGN_TOP,
-			                            port->color, port->color, port->bgcolor, kFontNoNewlines);
+			text_handle = gfxw_new_text(port->_visual->gfx_state, zone, font, text + cursor + 1, ALIGN_LEFT, ALIGN_TOP,
+			                            port->_color, port->_color, port->_bgcolor, kFontNoNewlines);
 			list->add(GFXWC(list), GFXW(text_handle));
 			zone.x += text_handle->width;
 		};
 
 		if (cursor == strlen(text))
 			list->add(GFXWC(list), GFXW(gfxw_new_line(Common::Point(zone.x, zone.y), Common::Point(zone.x, zone.y + cursor_height - 1),
-			                            port->color, GFX_LINE_MODE_FAST, GFX_LINE_STYLE_NORMAL)));
+			                            port->_color, GFX_LINE_MODE_FAST, GFX_LINE_STYLE_NORMAL)));
 		free(textdup);
 	}
 
 	zone.x = zone.y = 0;
 
-	list->add(GFXWC(list), GFXW(gfxw_new_rect(zone, port->color, GFX_LINE_MODE_CORRECT, GFX_LINE_STYLE_NORMAL)));
+	list->add(GFXWC(list), GFXW(gfxw_new_rect(zone, port->_color, GFX_LINE_MODE_CORRECT, GFX_LINE_STYLE_NORMAL)));
 
 	return list;
 }
@@ -416,7 +416,7 @@
 	gfxw_widget_t *icon;
 	gfxw_set_id(GFXW(list), ID.segment, ID.offset);
 
-	if (!port->visual) {
+	if (!port->_visual) {
 		GFXERROR("Attempting to create icon control for virtual port!\n");
 		return NULL;
 	}
@@ -424,7 +424,7 @@
 	zone.x = 0;
 	zone.y = 0;
 
-	icon = GFXW(gfxw_new_view(port->visual->gfx_state, Common::Point(zone.x, zone.y), view, loop, cel, 0, -1, -1,
+	icon = GFXW(gfxw_new_view(port->_visual->gfx_state, Common::Point(zone.x, zone.y), view, loop, cel, 0, -1, -1,
 	                          ALIGN_LEFT, ALIGN_TOP, GFXW_VIEW_FLAG_DONT_MODIFY_OFFSET));
 
 	if (!icon) {
@@ -432,7 +432,7 @@
 		return NULL;
 	}
 
-	list->flags |= GFXW_FLAG_MULTI_ID;
+	list->_flags |= GFXW_FLAG_MULTI_ID;
 
 	list->add(GFXWC(list), icon);
 
@@ -456,7 +456,7 @@
 
 	list = gfxw_new_list(_move_and_extend_rect(zone, Common::Point(port->zone.x, port->zone.y), 1), 0);
 
-	font_height = gfxop_get_font_height(port->visual->gfx_state, font_nr);
+	font_height = gfxop_get_font_height(port->_visual->gfx_state, font_nr);
 	columns = (zone.height - 20);
 
 	if (font_height <= 0) {
@@ -481,15 +481,15 @@
 	for (i = list_top; columns-- && i < entries_nr; i++) {
 		if (i != selection)
 			list->add(GFXWC(list),
-			          GFXW(gfxw_new_text(port->visual->gfx_state, gfx_rect(zone.x, zone.y, zone.width - 2, font_height),
+			          GFXW(gfxw_new_text(port->_visual->gfx_state, gfx_rect(zone.x, zone.y, zone.width - 2, font_height),
 			                             font_nr, entries_list[i], ALIGN_LEFT, ALIGN_TOP,
-			                             port->color, port->color, port->bgcolor, kFontNoNewlines)));
+			                             port->_color, port->_color, port->_bgcolor, kFontNoNewlines)));
 		else {
-			list->add(GFXWC(list), GFXW(gfxw_new_box(port->visual->gfx_state, gfx_rect(zone.x, zone.y, zone.width - 1, font_height),
-			                            port->color, port->color, GFX_BOX_SHADE_FLAT)));
-			list->add(GFXWC(list), GFXW(gfxw_new_text(port->visual->gfx_state, gfx_rect(zone.x, zone.y, zone.width - 2, font_height),
+			list->add(GFXWC(list), GFXW(gfxw_new_box(port->_visual->gfx_state, gfx_rect(zone.x, zone.y, zone.width - 1, font_height),
+			                            port->_color, port->_color, GFX_BOX_SHADE_FLAT)));
+			list->add(GFXWC(list), GFXW(gfxw_new_text(port->_visual->gfx_state, gfx_rect(zone.x, zone.y, zone.width - 2, font_height),
 			                             font_nr, entries_list[i], ALIGN_LEFT, ALIGN_TOP,
-			                             port->bgcolor, port->bgcolor, port->color, kFontNoNewlines)));
+			                             port->_bgcolor, port->_bgcolor, port->_color, kFontNoNewlines)));
 		}
 
 		zone.y += font_height;
@@ -501,33 +501,33 @@
 	zone.y = 0;
 
 	// Add up arrow
-	list->add(GFXWC(list), GFXW(gfxw_new_text(port->visual->gfx_state, gfx_rect(1, 0, zone.width - 2, 8),
+	list->add(GFXWC(list), GFXW(gfxw_new_text(port->_visual->gfx_state, gfx_rect(1, 0, zone.width - 2, 8),
 	                             port->font_nr, arr_up, ALIGN_CENTER, ALIGN_CENTER,
-	                             port->color, port->color, port->bgcolor, 0)));
+	                             port->_color, port->_color, port->_bgcolor, 0)));
 
 	// Add down arrow
-	list->add(GFXWC(list), GFXW(gfxw_new_text(port->visual->gfx_state, gfx_rect(1, zone.height - 9, zone.width - 2, 8),
+	list->add(GFXWC(list), GFXW(gfxw_new_text(port->_visual->gfx_state, gfx_rect(1, zone.height - 9, zone.width - 2, 8),
 	                             port->font_nr, arr_down, ALIGN_CENTER, ALIGN_CENTER,
-	                             port->color, port->color, port->bgcolor, 0)));
+	                             port->_color, port->_color, port->_bgcolor, 0)));
 
 	if (list_top & 1) { // Hack to work around aggressive caching
-		list->add(GFXWC(list), GFXW(gfxw_new_rect(zone, port->color, GFX_LINE_MODE_CORRECT, GFX_LINE_STYLE_NORMAL)));
+		list->add(GFXWC(list), GFXW(gfxw_new_rect(zone, port->_color, GFX_LINE_MODE_CORRECT, GFX_LINE_STYLE_NORMAL)));
 		list->add(GFXWC(list), GFXW(gfxw_new_rect(gfx_rect(zone.x, zone.y + 10, zone.width, zone.height - 20),
-		                             port->color, GFX_LINE_MODE_CORRECT, GFX_LINE_STYLE_NORMAL)));
+		                             port->_color, GFX_LINE_MODE_CORRECT, GFX_LINE_STYLE_NORMAL)));
 	} else {
 		list->add(GFXWC(list),
 		          GFXW(gfxw_new_rect(gfx_rect(zone.x, zone.y, zone.width, zone.height - 10),
-		                             port->color, GFX_LINE_MODE_CORRECT, GFX_LINE_STYLE_NORMAL)));
+		                             port->_color, GFX_LINE_MODE_CORRECT, GFX_LINE_STYLE_NORMAL)));
 		list->add(GFXWC(list),
 		          GFXW(gfxw_new_rect(gfx_rect(zone.x, zone.y + 10, zone.width, zone.height - 10),
-		                             port->color, GFX_LINE_MODE_CORRECT, GFX_LINE_STYLE_NORMAL)));
+		                             port->_color, GFX_LINE_MODE_CORRECT, GFX_LINE_STYLE_NORMAL)));
 	}
 
 	return list;
 }
 
 void sciw_set_menubar(EngineState *s, gfxw_port_t *status_bar, Menubar *menubar, int selection) {
-	gfxw_list_t *list = make_titlebar_list(s, status_bar->bounds, status_bar);
+	gfxw_list_t *list = make_titlebar_list(s, status_bar->_bounds, status_bar);
 	int offset = MENU_LEFT_BORDER;
 	int i;
 
@@ -538,15 +538,15 @@
 		int width = menu->_titleWidth + (MENU_BORDER_SIZE * 2);
 
 		if (i == selection) {
-			list->add(GFXWC(list), GFXW(gfxw_new_box(status_bar->visual->gfx_state, gfx_rect(offset, 0, width, MENU_BAR_HEIGHT),
-			                            status_bar->color, status_bar->color, GFX_BOX_SHADE_FLAT)));
+			list->add(GFXWC(list), GFXW(gfxw_new_box(status_bar->_visual->gfx_state, gfx_rect(offset, 0, width, MENU_BAR_HEIGHT),
+			                            status_bar->_color, status_bar->_color, GFX_BOX_SHADE_FLAT)));
 			list->add(GFXWC(list), GFXW(gfxw_new_text(s->gfx_state, gfx_rect(offset, 0, width, MENU_BAR_HEIGHT),
 			                             status_bar->font_nr, menu->_title.c_str(), ALIGN_CENTER, ALIGN_CENTER,
-			                             status_bar->bgcolor, status_bar->bgcolor, status_bar->color, kFontNoNewlines)));
+			                             status_bar->_bgcolor, status_bar->_bgcolor, status_bar->_color, kFontNoNewlines)));
 		} else
 			list->add(GFXWC(list), GFXW(gfxw_new_text(s->gfx_state, gfx_rect(offset, 0, width, MENU_BAR_HEIGHT),
 			                             status_bar->font_nr, menu->_title.c_str(), ALIGN_CENTER, ALIGN_CENTER,
-			                             status_bar->color, status_bar->color, status_bar->bgcolor, kFontNoNewlines)));
+			                             status_bar->_color, status_bar->_color, status_bar->_bgcolor, kFontNoNewlines)));
 		offset += width;
 	}
 
@@ -574,8 +574,8 @@
 	area.width = menu->_width - 1;
 	area.height = menu->_items.size() * 10;
 
-	retval = sciw_new_window(s, area, status_bar->font_nr, status_bar->color, status_bar->bgcolor,
-	                         0, status_bar->color, status_bar->bgcolor, NULL, kWindowNoDropShadow | kWindowTransparent);
+	retval = sciw_new_window(s, area, status_bar->font_nr, status_bar->_color, status_bar->_bgcolor,
+	                         0, status_bar->_color, status_bar->_bgcolor, NULL, kWindowNoDropShadow | kWindowTransparent);
 
 	retval->set_visual(GFXW(retval), s->visual);
 
@@ -605,13 +605,13 @@
 
 	xcolor = gray ? color : bgcolor;
 
-	list->add(GFXWC(list), GFXW(gfxw_new_box(port->visual->gfx_state, area, bgcolor, bgcolor, GFX_BOX_SHADE_FLAT)));
-	list->add(GFXWC(list), GFXW(gfxw_new_text(port->visual->gfx_state, area, port->font_nr, item->_text.c_str(), ALIGN_LEFT, ALIGN_CENTER,
+	list->add(GFXWC(list), GFXW(gfxw_new_box(port->_visual->gfx_state, area, bgcolor, bgcolor, GFX_BOX_SHADE_FLAT)));
+	list->add(GFXWC(list), GFXW(gfxw_new_text(port->_visual->gfx_state, area, port->font_nr, item->_text.c_str(), ALIGN_LEFT, ALIGN_CENTER,
 	                            color, xcolor, bgcolor, kFontNoNewlines)));
 
 	if (!item->_keytext.empty()) {
 		area.width -= MENU_BOX_RIGHT_PADDING;
-		list->add(GFXWC(list), GFXW(gfxw_new_text(port->visual->gfx_state, area, port->font_nr, item->_keytext.c_str(), ALIGN_RIGHT, ALIGN_CENTER,
+		list->add(GFXWC(list), GFXW(gfxw_new_text(port->_visual->gfx_state, area, port->font_nr, item->_keytext.c_str(), ALIGN_RIGHT, ALIGN_CENTER,
 		                            color, xcolor, bgcolor, kFontNoNewlines)));
 	}
 
@@ -626,7 +626,7 @@
 	color = un_prioritize(color);
 	bgcolor = un_prioritize(bgcolor);
 
-	list->add(GFXWC(list), GFXW(gfxw_new_box(port->visual->gfx_state, area, bgcolor, bgcolor, GFX_BOX_SHADE_FLAT)));
+	list->add(GFXWC(list), GFXW(gfxw_new_box(port->_visual->gfx_state, area, bgcolor, bgcolor, GFX_BOX_SHADE_FLAT)));
 	list->add(GFXWC(list), GFXW(gfxw_new_line(Common::Point(0, 5), Common::Point(width, 5), color,
 	                            GFX_LINE_MODE_FAST, GFX_LINE_STYLE_STIPPLED)));
 
@@ -637,8 +637,8 @@
 	if (selection < 0 || selection >= (int)menu->_items.size())
 		return menu_port;
 
-	gfx_color_t fgColor = !selected ? menu_port->color : menu_port->bgcolor;
-	gfx_color_t bgColor = !selected ? menu_port->bgcolor : menu_port->color;
+	gfx_color_t fgColor = !selected ? menu_port->_color : menu_port->_bgcolor;
+	gfx_color_t bgColor = !selected ? menu_port->_bgcolor : menu_port->_color;
 
 	MenuItem *item = &menu->_items[selection];
 

Modified: scummvm/trunk/engines/sci/gfx/gfx_state_internal.h
===================================================================
--- scummvm/trunk/engines/sci/gfx/gfx_state_internal.h	2009-04-24 10:44:10 UTC (rev 40102)
+++ scummvm/trunk/engines/sci/gfx/gfx_state_internal.h	2009-04-24 10:45:09 UTC (rev 40103)
@@ -67,7 +67,6 @@
 	GFXW_SORTED_LIST,
 	GFXW_VISUAL,
 	GFXW_PORT
-
 };
 
 
@@ -88,18 +87,21 @@
 typedef int gfxw_bin_op(gfxw_widget_t *, gfxw_widget_t *);
 
 struct gfxw_widget_t {
-	int magic; /* Extra check after typecasting */
-	int serial; /* Serial number */
-	int flags; /* Widget flags */
-	gfxw_widget_type_t type;
-	rect_t bounds; /* Boundaries */
-	gfxw_widget_t *next; /* Next widget in widget list */
-	int ID; /* Unique ID or GFXW_NO_ID */
-	int subID; /* A 'sub-ID', or GFXW_NO_ID */
-	gfxw_container_t *parent; /* The parent widget, or NULL if not owned */
-	gfxw_visual_t *visual; /* The owner visual */
-	int widget_priority; /* Drawing priority, or -1 */
-	gfxw_point_op *draw; /* Draw widget (if dirty) and anything else required for the display to be consistant */
+	int _magic; /* Extra check after typecasting */
+	int _serial; /* Serial number */
+	int _flags; /* Widget flags */
+	gfxw_widget_type_t _type;
+	rect_t _bounds; /* Boundaries */
+	gfxw_widget_t *_next; /* Next widget in widget list */
+	int _ID; /* Unique ID or GFXW_NO_ID */
+	int _subID; /* A 'sub-ID', or GFXW_NO_ID */
+	gfxw_container_t *_parent; /* The parent widget, or NULL if not owned */
+	gfxw_visual_t *_visual; /* The owner visual */
+	int _widgetPriority; /* Drawing priority, or -1 */
+
+public:
+	// TODO: Replace the following with virtual methods
+	gfxw_point_op *draw; /* Draw widget (if dirty) and anything else required for the display to be consistent */
 	gfxw_op *widfree; /* Remove widget (and any sub-widgets it may contain) */
 	gfxw_op *tag; /* Tag the specified widget */
 	gfxw_op_int *print; /* Prints the widget's contents, using sciprintf. Second parameter is indentation. */
@@ -108,57 +110,73 @@
 	gfxw_bin_op *should_replace; /* (only if a equals b) Whether b should replace a even though they are equivalent */
 	gfxw_bin_op *superarea_of; /* a superarea_of b <=> for each pixel of b there exists an opaque pixel in a at the same location */
 	gfxw_visual_op *set_visual; /* Sets the visual the widget belongs to */
+
+	gfxw_widget_t(gfxw_widget_type_t type);
 };
 
 
-#define GFXW_IS_BOX(widget) ((widget)->type == GFXW_BOX)
+#define GFXW_IS_BOX(widget) ((widget)->_type == GFXW_BOX)
 struct gfxw_box_t : public gfxw_widget_t {
-	gfx_color_t color1, color2;
-	gfx_box_shade_t shade_type;
+	gfx_color_t _color1, _color2;
+	gfx_box_shade_t _shadeType;
+
+	gfxw_box_t(gfx_state_t *state, rect_t area, gfx_color_t color1, gfx_color_t color2, gfx_box_shade_t shade_type);
 };
 
 
-#define GFXW_IS_PRIMITIVE(widget) ((widget)->type == GFXW_RECT || (widget)->type == GFXW_LINE)
+#define GFXW_IS_PRIMITIVE(widget) ((widget)->_type == GFXW_RECT || (widget)->_type == GFXW_LINE)
 struct gfxw_primitive_t : public gfxw_widget_t {
-	gfx_color_t color;
-	gfx_line_mode_t line_mode;
-	gfx_line_style_t line_style;
+	gfx_color_t _color;
+	gfx_line_mode_t _lineMode;
+	gfx_line_style_t _lineStyle;
+
+	gfxw_primitive_t(rect_t area, gfx_color_t color, gfx_line_mode_t mode,
+						gfx_line_style_t style, gfxw_widget_type_t type);
 };
 
 
 
-#define GFXW_IS_VIEW(widget) ((widget)->type == GFXW_VIEW || (widget)->type == GFXW_STATIC_VIEW \
-			      || (widget)->type == GFXW_DYN_VIEW || (widget)->type == GFXW_PIC_VIEW)
+#define GFXW_IS_VIEW(widget) ((widget)->_type == GFXW_VIEW || (widget)->_type == GFXW_STATIC_VIEW \
+			      || (widget)->_type == GFXW_DYN_VIEW || (widget)->_type == GFXW_PIC_VIEW)
 struct gfxw_view_t  : public gfxw_widget_t {
-	Common::Point pos; /* Implies the value of 'bounds' in gfxw_widget_t */
-	gfx_color_t color;
-	int view, loop, cel;
-	int palette;
+	Common::Point _pos; /* Implies the value of 'bounds' in gfxw_widget_t */
+	gfx_color_t _color;
+	int _view, _loop, _cel;
+	int _palette;
+
+	gfxw_view_t(gfx_state_t *state, Common::Point pos, int view_nr, int loop, int cel, int palette, int priority, int control,
+		gfx_alignment_t halign, gfx_alignment_t valign, int flags);
 };
 
-#define GFXW_IS_DYN_VIEW(widget) ((widget)->type == GFXW_DYN_VIEW || (widget)->type == GFXW_PIC_VIEW)
+#define GFXW_IS_DYN_VIEW(widget) ((widget)->_type == GFXW_DYN_VIEW || (widget)->_type == GFXW_PIC_VIEW)
 struct gfxw_dyn_view_t : public gfxw_view_t {
 	/* FIXME: This code is specific to SCI */
 	rect_t draw_bounds; /* The correct position to draw to */
 	void *under_bitsp, *signalp;
 	int under_bits, signal;
-	int z; /* The z coordinate: Added to y, but used for sorting */
+	int _z; /* The z coordinate: Added to y, but used for sorting */
 	int sequence; /* Sequence number: For sorting */
 	int force_precedence; /* Precedence enforcement variable for sorting- defaults to 0 */
+
+	gfxw_dyn_view_t(gfx_state_t *state, Common::Point pos, int z, int view, int loop, int cel, int palette, int priority, int control,
+		gfx_alignment_t halign, gfx_alignment_t valign, int sequence);
 };
 
 
 
-#define GFXW_IS_TEXT(widget) ((widget)->type == GFXW_TEXT)
+#define GFXW_IS_TEXT(widget) ((widget)->_type == GFXW_TEXT)
 struct gfxw_text_t : public gfxw_widget_t {
 	int font_nr;
 	int lines_nr, lineheight, lastline_width;
 	char *text;
 	gfx_alignment_t halign, valign;
-	gfx_color_t color1, color2, bgcolor;
+	gfx_color_t _color1, _color2, _bgcolor;
 	int text_flags;
 	int width, height; /* Real text width and height */
 	gfx_text_handle_t *text_handle;
+
+	gfxw_text_t(gfx_state_t *state, rect_t area, int font, const char *text, gfx_alignment_t halign,
+		gfx_alignment_t valign, gfx_color_t color1, gfx_color_t color2, gfx_color_t bgcolor, int text_flags);
 };
 
 
@@ -174,34 +192,44 @@
 	gfx_dirty_rect_t *dirty; /* List of dirty rectangles */
 	gfxw_widget_t *contents;
 	gfxw_widget_t **nextpp; /* Pointer to the 'next' pointer in the last entry in contents */
+
+public:
+	// TODO: Replace the following with virtual methods
 	gfxw_unary_container_op *free_tagged; /* Free all tagged contained widgets */
 	gfxw_unary_container_op *free_contents; /* Free all contained widgets */
 	gfxw_rect_op *add_dirty_abs; /* Add an absolute dirty rectangle */
 	gfxw_rect_op *add_dirty_rel; /* Add a relative dirty rectangle */
 	gfxw_container_op *add;  /* Append widget to an appropriate position (for view and control lists) */
+
+	gfxw_container_t(rect_t area, gfxw_widget_type_t type);
 };
 
 
-#define GFXW_IS_CONTAINER(widget) ((widget)->type == GFXW_PORT || (widget)->type == GFXW_VISUAL || \
-				   (widget)->type == GFXW_SORTED_LIST || (widget)->type == GFXW_LIST)
+#define GFXW_IS_CONTAINER(widget) ((widget)->_type == GFXW_PORT || (widget)->_type == GFXW_VISUAL || \
+				   (widget)->_type == GFXW_SORTED_LIST || (widget)->_type == GFXW_LIST)
 
-#define GFXW_IS_LIST(widget) ((widget)->type == GFXW_LIST || (widget)->type == GFXW_SORTED_LIST)
-#define GFXW_IS_SORTED_LIST(widget) ((widget)->type == GFXW_SORTED_LIST)
-typedef gfxw_container_t gfxw_list_t;
+#define GFXW_IS_LIST(widget) ((widget)->_type == GFXW_LIST || (widget)->_type == GFXW_SORTED_LIST)
+#define GFXW_IS_SORTED_LIST(widget) ((widget)->_type == GFXW_SORTED_LIST)
 
-#define GFXW_IS_VISUAL(widget) ((widget)->type == GFXW_VISUAL)
+struct gfxw_list_t : public gfxw_container_t {
+	gfxw_list_t(rect_t area, bool sorted);
+};
+
+#define GFXW_IS_VISUAL(widget) ((widget)->_type == GFXW_VISUAL)
 struct gfxw_visual_t : public gfxw_container_t {
 	gfxw_port_t **port_refs; /* References to ports */
 	int port_refs_nr;
 	int font_nr; /* Default font */
 	gfx_state_t *gfx_state;
+
+	gfxw_visual_t(gfx_state_t *state, int font);
 };
 
-#define GFXW_IS_PORT(widget) ((widget)->type == GFXW_PORT)
+#define GFXW_IS_PORT(widget) ((widget)->_type == GFXW_PORT)
 struct gfxw_port_t : public gfxw_container_t {
 	gfxw_list_t *decorations; /* optional window decorations- drawn before the contents */
 	gfxw_widget_t *port_bg; /* Port background widget or NULL */
-	gfx_color_t color, bgcolor;
+	gfx_color_t _color, _bgcolor;
 	int font_nr;
 	Common::Point draw_pos; /* Drawing position */
 	gfxw_snapshot_t *restore_snap; /* Snapshot to be restored automagically,
@@ -209,6 +237,8 @@
 	int port_flags; /* interpreter-dependant flags */
 	const char *title_text;
 	byte gray_text; /* Whether text is 'grayed out' (dithered) */
+
+	gfxw_port_t(gfxw_visual_t *visual, rect_t area, gfx_color_t fgcolor, gfx_color_t bgcolor);
 };
 
 } // End of namespace Sci

Modified: scummvm/trunk/engines/sci/gfx/gfx_widgets.cpp
===================================================================
--- scummvm/trunk/engines/sci/gfx/gfx_widgets.cpp	2009-04-24 10:44:10 UTC (rev 40102)
+++ scummvm/trunk/engines/sci/gfx/gfx_widgets.cpp	2009-04-24 10:45:09 UTC (rev 40103)
@@ -94,29 +94,29 @@
 
 	indent(indentation);
 
-	if (widget->magic == GFXW_MAGIC_VALID) {
-		if (widget->visual)
+	if (widget->_magic == GFXW_MAGIC_VALID) {
+		if (widget->_visual)
 			sciprintf("v ");
 		else
 			sciprintf("NoVis ");
-	} else if (widget->magic == GFXW_MAGIC_INVALID)
+	} else if (widget->_magic == GFXW_MAGIC_INVALID)
 		sciprintf("INVALID ");
 
-	sciprintf("S%08x", widget->serial);
+	sciprintf("S%08x", widget->_serial);
 
-	if (widget->ID != GFXW_NO_ID) {
-		sciprintf("#%x", widget->ID);
+	if (widget->_ID != GFXW_NO_ID) {
+		sciprintf("#%x", widget->_ID);
 
-		if (widget->subID != GFXW_NO_ID)
-			sciprintf(":%x ", widget->subID);
+		if (widget->_subID != GFXW_NO_ID)
+			sciprintf(":%x ", widget->_subID);
 		else
 			sciprintf(" ");
 	}
 
-	sciprintf("[(%d,%d)(%dx%d)]", widget->bounds.x, widget->bounds.y, widget->bounds.width, widget->bounds.height);
+	sciprintf("[(%d,%d)(%dx%d)]", widget->_bounds.x, widget->_bounds.y, widget->_bounds.width, widget->_bounds.height);
 
 	for (i = 0; i < strlen(flags_list); i++)
-		if (widget->flags & (1 << i))
+		if (widget->_flags & (1 << i))
 			sciprintf("%c", flags_list[i]);
 
 	sciprintf(" ");
@@ -124,41 +124,38 @@
 
 static int _gfxwop_print_empty(gfxw_widget_t *widget, int indentation) {
 	_gfxw_print_widget(widget, indentation);
-	sciprintf("<untyped #%d>", widget->type);
+	sciprintf("<untyped #%d>", widget->_type);
 
 	return 0;
 }
 
-gfxw_widget_t *_gfxw_new_widget(int size, gfxw_widget_type_t type) {
-	gfxw_widget_t *widget = (gfxw_widget_t*)sci_malloc(size);
-#ifdef SATISFY_PURIFY
-	memset(widget, 0, size);
-#endif
+gfxw_widget_t::gfxw_widget_t(gfxw_widget_type_t type_) {
+	_magic = GFXW_MAGIC_VALID;
 
-	widget->magic = GFXW_MAGIC_VALID;
-	widget->parent = NULL;
-	widget->visual = NULL;
-	widget->next = NULL;
-	widget->type = type;
-	widget->bounds = gfx_rect(0, 0, 0, 0);
-	widget->flags = GFXW_FLAG_DIRTY;
-	widget->ID = GFXW_NO_ID;
-	widget->subID = GFXW_NO_ID;
-	widget->serial = widget_serial_number_counter++;
-	widget->widget_priority = -1;
-
+	_serial = widget_serial_number_counter++;
 	widget_serial_number_counter &= MAX_SERIAL_NUMBER;
 
-	widget->draw = NULL;
-	widget->widfree = NULL;
-	widget->tag = NULL;
-	widget->print = _gfxwop_print_empty;
-	widget->should_replace = NULL;
-	widget->compare_to = widget->equals = widget->superarea_of = NULL;
+	_flags = GFXW_FLAG_DIRTY;
+	_type = type_;
+	_bounds = gfx_rect(0, 0, 0, 0);
+	_next = NULL;
+	_ID = GFXW_NO_ID;
+	_subID = GFXW_NO_ID;
+	_parent = NULL;
+	_visual = NULL;
+	_widgetPriority = -1;
 
-	_gfxw_debug_add_widget(widget);
+	draw = NULL;
+	widfree = NULL;
+	tag = NULL;
+	print = _gfxwop_print_empty;
+	compare_to = NULL;
+	equals = NULL;
+	should_replace = NULL;
+	superarea_of = NULL;
+	set_visual = NULL;
 
-	return widget;
+	_gfxw_debug_add_widget(this);
 }
 
 static int verify_widget(gfxw_widget_t *widget) {
@@ -168,8 +165,8 @@
 		BREAKPOINT();
 #endif
 		return 1;
-	} else if (widget->magic != GFXW_MAGIC_VALID) {
-		if (widget->magic == GFXW_MAGIC_INVALID) {
+	} else if (widget->_magic != GFXW_MAGIC_VALID) {
+		if (widget->_magic == GFXW_MAGIC_INVALID) {
 			GFXERROR("Attempt to use invalidated widget\n");
 		} else {
 			GFXERROR("Attempt to use non-widget\n");
@@ -200,8 +197,8 @@
 		}
 	}
 
-	widget->magic = GFXW_MAGIC_INVALID;
-	free(widget);
+	widget->_magic = GFXW_MAGIC_INVALID;
+	delete widget;
 	_gfxw_debug_remove_widget(widget);
 }
 
@@ -227,18 +224,18 @@
 		return 1; \
 	} \
 	if (!(widget)->print) { \
-		sciprintf("L%d: Widget of type %d does not have print function", __LINE__, (widget)->type); \
+		sciprintf("L%d: Widget of type %d does not have print function", __LINE__, (widget)->_type); \
 	} \
-	if ((widget)->type != (exp_type)) { \
-		sciprintf("L%d: Error in widget: Expected type " # exp_type "(%d) but got %d\n", __LINE__, exp_type, (widget)->type); \
+	if ((widget)->_type != (exp_type)) { \
+		sciprintf("L%d: Error in widget: Expected type " # exp_type "(%d) but got %d\n", __LINE__, exp_type, (widget)->_type); \
 		sciprintf("Erroneous widget: "); \
 		widget->print(widget, 4); \
 		sciprintf("\n"); \
 		return 1; \
 	} \
-	if (!(widget->flags & GFXW_FLAG_VISIBLE)) \
+	if (!(widget->_flags & GFXW_FLAG_VISIBLE)) \
 		return 0; \
-	if (!(widget->type == GFXW_VISUAL || widget->visual)) { \
+	if (!(widget->_type == GFXW_VISUAL || widget->_visual)) { \
 		sciprintf("L%d: Error while drawing widget: Widget has no visual\n", __LINE__); \
 		sciprintf("Erroneous widget: "); \
 		widget->print(widget, 1); \
@@ -246,6 +243,8 @@
 		return 1; \
 	}
 
+
+// TODO: Turn this into an operator==
 static int _color_equals(gfx_color_t a, gfx_color_t b) {
 	if (a.mask != b.mask)
 		return 0;
@@ -267,11 +266,11 @@
 }
 
 static int _gfxwop_basic_set_visual(gfxw_widget_t *widget, gfxw_visual_t *visual) {
-	widget->visual = visual;
+	widget->_visual = visual;
 
-	if (widget->parent) {
-		DDIRTY(stderr, "basic_set_visual: DOWNWARDS rel(%d,%d,%d,%d, 1)\n", GFX_PRINT_RECT(widget->bounds));
-		widget->parent->add_dirty_rel(widget->parent, widget->bounds, 1);
+	if (widget->_parent) {
+		DDIRTY(stderr, "basic_set_visual: DOWNWARDS rel(%d,%d,%d,%d, 1)\n", GFX_PRINT_RECT(widget->_bounds));
+		widget->_parent->add_dirty_rel(widget->_parent, widget->_bounds, 1);
 	}
 
 	return 0;
@@ -314,7 +313,7 @@
 	}
 
 	while (*seekerp && *seekerp != widget)
-		seekerp = &((*seekerp)->next);
+		seekerp = &((*seekerp)->_next);
 
 	if (!*seekerp) {
 		GFXERROR("Internal error: Attempt to remove widget from container it was not contained in!\n");
@@ -326,27 +325,27 @@
 		return;
 	}
 
-	if (container->nextpp == &(widget->next))
+	if (container->nextpp == &(widget->_next))
 		container->nextpp = seekerp;
 
-	*seekerp = widget->next; // Remove it
-	widget->parent = NULL;
-	widget->next = NULL;
+	*seekerp = widget->_next; // Remove it
+	widget->_parent = NULL;
+	widget->_next = NULL;
 }
 
 static int _gfxwop_basic_free(gfxw_widget_t *widget) {
-	gfxw_visual_t *visual = widget->visual;
+	gfxw_visual_t *visual = widget->_visual;
 	gfx_state_t *state = (visual) ? visual->gfx_state : NULL;
 
 	DDIRTY(stderr, "BASIC-FREE: SomeAddDirty\n");
 
-	if (widget->parent) {
+	if (widget->_parent) {
 		if (GFXW_IS_CONTAINER(widget))
-			widget->parent->add_dirty_abs(widget->parent, widget->bounds, 1);
+			widget->_parent->add_dirty_abs(widget->_parent, widget->_bounds, 1);
 		else
-			widget->parent->add_dirty_rel(widget->parent, widget->bounds, 1);
+			widget->_parent->add_dirty_rel(widget->_parent, widget->_bounds, 1);
 
-		gfxw_remove_widget_from_container(widget->parent, widget);
+		gfxw_remove_widget_from_container(widget->_parent, widget);
 	}
 
 	_gfxw_unallocate_widget(state, widget);
@@ -355,7 +354,7 @@
 }
 
 static int _gfxwop_basic_tag(gfxw_widget_t *widget) {
-	widget->flags |= GFXW_FLAG_TAGGED;
+	widget->_flags |= GFXW_FLAG_TAGGED;
 
 	return 0;
 }
@@ -392,7 +391,7 @@
 static int _gfxwop_box_draw(gfxw_widget_t *widget, Common::Point pos) {
 	gfxw_box_t *box = (gfxw_box_t *) widget;
 	DRAW_ASSERT(widget, GFXW_BOX);
-	GFX_ASSERT(gfxop_draw_box(box->visual->gfx_state, _move_rect(box->bounds, pos), box->color1, box->color2, box->shade_type));
+	GFX_ASSERT(gfxop_draw_box(box->_visual->gfx_state, _move_rect(box->_bounds, pos), box->_color1, box->_color2, box->_shadeType));
 
 	return 0;
 }
@@ -406,17 +405,17 @@
 static int _gfxwop_box_superarea_of(gfxw_widget_t *widget, gfxw_widget_t *other) {
 	gfxw_box_t *box = (gfxw_box_t *) widget;
 
-	if (box->color1.alpha)
+	if (box->_color1.alpha)
 		return 0;
 
-	if (box->shade_type != GFX_BOX_SHADE_FLAT && box->color2.alpha)
+	if (box->_shadeType != GFX_BOX_SHADE_FLAT && box->_color2.alpha)
 		return 0;
 
-	// Note: the check for box->bounds and other->bounds is NOT the same as contains()
+	// Note: the check for box->_bounds and other->_bounds is NOT the same as contains()
 	// in Common::Rect (this one includes equality too)
-	if (!(box->bounds.x <= other->bounds.x && box->bounds.y <= other->bounds.y &&
-		  box->bounds.x + box->bounds.width >= other->bounds.x + other->bounds.width && 
-		  box->bounds.y + box->bounds.height >= other->bounds.y + other->bounds.height))
+	if (!(box->_bounds.x <= other->_bounds.x && box->_bounds.y <= other->_bounds.y &&
+		  box->_bounds.x + box->_bounds.width >= other->_bounds.x + other->_bounds.width &&
+		  box->_bounds.y + box->_bounds.height >= other->_bounds.y + other->_bounds.height))
 		return 0;
 
 	return 1;
@@ -424,22 +423,22 @@
 
 static int _gfxwop_box_equals(gfxw_widget_t *widget, gfxw_widget_t *other) {
 	gfxw_box_t *wbox = (gfxw_box_t *)widget, *obox;
-	if (other->type != GFXW_BOX)
+	if (other->_type != GFXW_BOX)
 		return 0;
 
 	obox = (gfxw_box_t *) other;
 
-	if (!toCommonRect(wbox->bounds).equals(toCommonRect(obox->bounds)))
+	if (!toCommonRect(wbox->_bounds).equals(toCommonRect(obox->_bounds)))
 		return 0;
 
-	if (!_color_equals(wbox->color1, obox->color1))
+	if (!_color_equals(wbox->_color1, obox->_color1))
 		return 0;
 
-	if (wbox->shade_type != obox->shade_type)
+	if (wbox->_shadeType != obox->_shadeType)
 		return 0;
 
-	if (wbox->shade_type != GFX_BOX_SHADE_FLAT
-	        && _color_equals(wbox->color2, obox->color2))
+	if (wbox->_shadeType != GFX_BOX_SHADE_FLAT
+	        && _color_equals(wbox->_color2, obox->_color2))
 		return 0;
 
 	return 1;
@@ -455,60 +454,65 @@
 }
 
 gfxw_box_t *gfxw_new_box(gfx_state_t *state, rect_t area, gfx_color_t color1, gfx_color_t color2, gfx_box_shade_t shade_type) {
-	gfxw_box_t *widget = (gfxw_box_t *)_gfxw_new_widget(sizeof(gfxw_box_t), GFXW_BOX);
+	return new gfxw_box_t(state, area, color1, color2, shade_type);
+}
 
-	widget->widget_priority = _gfxw_color_get_priority(color1);
-	widget->bounds = area;
-	widget->color1 = color1;
-	widget->color2 = color2;
-	widget->shade_type = shade_type;
+gfxw_box_t::gfxw_box_t(gfx_state_t *state, rect_t area, gfx_color_t color1, gfx_color_t color2, gfx_box_shade_t shade_type)
+	: gfxw_widget_t(GFXW_BOX) {
 
-	widget->flags |= GFXW_FLAG_VISIBLE;
+	_widgetPriority = _gfxw_color_get_priority(color1);
+	_bounds = area;
+	_color1 = color1;
+	_color2 = color2;
+	_shadeType = shade_type;
 
-	if ((color1.mask & GFX_MASK_VISUAL) && ((state && (state->driver->mode->palette)) || (!color1.alpha && !color2.alpha)))
-		widget->flags |= GFXW_FLAG_OPAQUE;
+	_flags |= GFXW_FLAG_VISIBLE;
 
-	_gfxw_set_ops_BOX(GFXW(widget));
+	if ((_color1.mask & GFX_MASK_VISUAL) && ((state && (state->driver->mode->palette)) || (!_color1.alpha && !_color2.alpha)))
+		_flags |= GFXW_FLAG_OPAQUE;
 
-	return widget;
+	_gfxw_set_ops_BOX(this);
 }
 
-static gfxw_primitive_t *_gfxw_new_primitive(rect_t area, gfx_color_t color, gfx_line_mode_t mode,
-													gfx_line_style_t style, gfxw_widget_type_t type) {
-	gfxw_primitive_t *widget = (gfxw_primitive_t *)_gfxw_new_widget(sizeof(gfxw_primitive_t), type);
+gfxw_primitive_t::gfxw_primitive_t(rect_t area, gfx_color_t color_, gfx_line_mode_t mode,
+						gfx_line_style_t style, gfxw_widget_type_t type_)
+	: gfxw_widget_t(type_) {
 
-	widget->widget_priority = _gfxw_color_get_priority(color);
-	widget->bounds = area;
-	widget->color = color;
-	widget->line_mode = mode;
-	widget->line_style = style;
+	_widgetPriority = _gfxw_color_get_priority(color_);
+	_bounds = area;
+	_color = color_;
+	_lineMode = mode;
+	_lineStyle = style;
 
-	widget->flags |= GFXW_FLAG_VISIBLE;
-	return widget;
+	_flags |= GFXW_FLAG_VISIBLE;
 }
 
 //*** Rectangles ***
 
+struct gfxw_rect_t : public gfxw_primitive_t {
+	gfxw_rect_t(rect_t rect, gfx_color_t color, gfx_line_mode_t line_mode, gfx_line_style_t line_style);
+};
+
 static int _gfxwop_primitive_equals(gfxw_widget_t *widget, gfxw_widget_t *other) {
 	gfxw_primitive_t *wprim = (gfxw_primitive_t *) widget, *oprim;
-	if (widget->type != other->type)
+	if (widget->_type != other->_type)
 		return 0;
 
 	oprim = (gfxw_primitive_t *) other;
 
 	// Check if the two primitives are equal (note: the primitives aren't always rectangles, so
 	// the "width" and the "height" here could be negative)
-	if (wprim->bounds.x != oprim->bounds.x || wprim->bounds.y != oprim->bounds.y ||
-		wprim->bounds.width != oprim->bounds.width || wprim->bounds.height != oprim->bounds.height)
+	if (wprim->_bounds.x != oprim->_bounds.x || wprim->_bounds.y != oprim->_bounds.y ||
+		wprim->_bounds.width != oprim->_bounds.width || wprim->_bounds.height != oprim->_bounds.height)
 		return 0;
 
-	if (!_color_equals(wprim->color, oprim->color))
+	if (!_color_equals(wprim->_color, oprim->_color))
 		return 0;
 
-	if (wprim->line_mode != oprim->line_mode)
+	if (wprim->_lineMode != oprim->_lineMode)
 		return 0;
 
-	if (wprim->line_style != oprim->line_style)
+	if (wprim->_lineStyle != oprim->_lineStyle)
 		return 0;
 
 	return 1;
@@ -518,8 +522,8 @@
 	gfxw_primitive_t *rect = (gfxw_primitive_t *) widget;
 	DRAW_ASSERT(widget, GFXW_RECT);
 
-	GFX_ASSERT(gfxop_draw_rectangle(rect->visual->gfx_state, gfx_rect(rect->bounds.x + pos.x, rect->bounds.y + pos.y,
-	                                         rect->bounds.width - 1, rect->bounds.height - 1), rect->color, rect->line_mode, rect->line_style));
+	GFX_ASSERT(gfxop_draw_rectangle(rect->_visual->gfx_state, gfx_rect(rect->_bounds.x + pos.x, rect->_bounds.y + pos.y,
+	                                         rect->_bounds.width - 1, rect->_bounds.height - 1), rect->_color, rect->_lineMode, rect->_lineStyle));
 	return 0;
 }
 
@@ -536,20 +540,27 @@
 }
 
 gfxw_primitive_t *gfxw_new_rect(rect_t rect, gfx_color_t color, gfx_line_mode_t line_mode, gfx_line_style_t line_style) {
-	gfxw_primitive_t *prim = _gfxw_new_primitive(rect, color, line_mode, line_style, GFXW_RECT);
-	prim->bounds.width++;
-	prim->bounds.height++; // Since it is actually one pixel bigger in each direction
+	return new gfxw_rect_t(rect, color, line_mode, line_style);
+}
 
-	_gfxw_set_ops_RECT(GFXW(prim));
+gfxw_rect_t::gfxw_rect_t(rect_t rect, gfx_color_t color_, gfx_line_mode_t line_mode_, gfx_line_style_t line_style_)
+	: gfxw_primitive_t(rect, color_, line_mode_, line_style_, GFXW_RECT) {
 
-	return prim;
+	_bounds.width++;
+	_bounds.height++; // Since it is actually one pixel bigger in each direction
+
+	_gfxw_set_ops_RECT(this);
 }
 
 //*** Lines ***
 
+struct gfxw_line_t : public gfxw_primitive_t {
+	gfxw_line_t(Common::Point start, Common::Point end, gfx_color_t color, gfx_line_mode_t line_mode, gfx_line_style_t line_style);
+};
+
 static int _gfxwop_line_draw(gfxw_widget_t *widget, Common::Point pos) {
 	gfxw_primitive_t *line = (gfxw_primitive_t *)widget;
-	rect_t linepos = widget->bounds;
+	rect_t linepos = widget->_bounds;
 	Common::Point p1, p2;
 
 	linepos.width--;
@@ -558,7 +569,7 @@
 	DRAW_ASSERT(widget, GFXW_LINE);
 
 	_split_rect(_move_rect(linepos, pos), &p1, &p2);
-	GFX_ASSERT(gfxop_draw_line(line->visual->gfx_state, p1, p2, line->color, line->line_mode, line->line_style));
+	GFX_ASSERT(gfxop_draw_line(line->_visual->gfx_state, p1, p2, line->_color, line->_lineMode, line->_lineStyle));
 	return 0;
 }
 
@@ -574,75 +585,64 @@
 }
 
 gfxw_primitive_t *gfxw_new_line(Common::Point start, Common::Point end, gfx_color_t color, gfx_line_mode_t line_mode, gfx_line_style_t line_style) {
-	gfxw_primitive_t *prim;
+	return new gfxw_line_t(start, end, color, line_mode, line_style);
+}
 
-	// Encode into internal representation
-	rect_t line = gfx_rect(start.x, start.y, end.x - start.x, end.y - start.y);
-
-	line.width++;
-	line.height++;
-
-	prim = _gfxw_new_primitive(line, color, line_mode, line_style, GFXW_LINE);
-
-	_gfxw_set_ops_LINE(GFXW(prim));
-
-	return prim;
+gfxw_line_t::gfxw_line_t(Common::Point start, Common::Point end, gfx_color_t color_, gfx_line_mode_t line_mode_, gfx_line_style_t line_style_)
+	: gfxw_primitive_t(gfx_rect(start.x, start.y, end.x - start.x + 1, end.y - start.y + 1), color_, line_mode_, line_style_, GFXW_LINE) {
+	_gfxw_set_ops_LINE(this);
 }
 
 //*** Views and static views ***
 
-gfxw_view_t *_gfxw_new_simple_view(gfx_state_t *state, Common::Point pos, int view, int loop, int cel, int palette, int priority, int control,
-								   gfx_alignment_t halign, gfx_alignment_t valign, int size, gfxw_widget_type_t type) {
-	gfxw_view_t *widget;
+
+gfxw_view_t::gfxw_view_t(gfx_state_t *state, Common::Point pos_, int view_, int loop_, int cel_, int palette_, int priority, int control,
+	gfx_alignment_t halign, gfx_alignment_t valign, int flags_)
+	: gfxw_widget_t((flags_ & GFXW_VIEW_FLAG_STATIC) ? GFXW_STATIC_VIEW : GFXW_VIEW) {
+
 	int width, height;
 	Common::Point offset;
 
 	if (!state) {
-		GFXERROR("Attempt to create view widget with NULL state!\n");
-		return NULL;
+		error("Attempt to create view widget with NULL state");
 	}
 
-	if (gfxop_get_cel_parameters(state, view, loop, cel, &width, &height, &offset)) {
-		GFXERROR("Attempt to retrieve cel parameters for (%d/%d/%d) failed (Maybe the values weren't checked beforehand?)\n",
-		         view, cel, loop);
-		return NULL;
+	if (gfxop_get_cel_parameters(state, view_, loop_, cel_, &width, &height, &offset)) {
+		error("Attempt to retrieve cel parameters for (%d/%d/%d) failed (Maybe the values weren't checked beforehand?)",
+		         view_, cel_, loop_);
 	}
 
-	widget = (gfxw_view_t *)_gfxw_new_widget(size, type);
+	_pos = pos_;
+	_color.mask = ((priority < 0) ? 0 : GFX_MASK_PRIORITY) | ((control < 0) ? 0 : GFX_MASK_CONTROL);
+	_widgetPriority = priority;
+	_color.priority = priority;
+	_color.control = control;
+	_view = view_;
+	_loop = loop_;
+	_cel = cel_;
+	_palette = palette_;
 
-	widget->widget_priority = priority;
-	widget->pos = pos;
-	widget->color.mask = ((priority < 0) ? 0 : GFX_MASK_PRIORITY) | ((control < 0) ? 0 : GFX_MASK_CONTROL);
-	widget->color.priority = priority;
-	widget->color.control = control;
-	widget->view = view;
-	widget->loop = loop;
-	widget->cel = cel;
-	widget->palette = palette;
-
 	if (halign == ALIGN_CENTER)
-		widget->pos.x -= width >> 1;
+		_pos.x -= width >> 1;
 	else if (halign == ALIGN_RIGHT)
-		widget->pos.x -= width;
+		_pos.x -= width;
 
 	if (valign == ALIGN_CENTER)
-		widget->pos.y -= height >> 1;
+		_pos.y -= height >> 1;
 	else if (valign == ALIGN_BOTTOM)
-		widget->pos.y -= height;
+		_pos.y -= height;
 
-	widget->bounds = gfx_rect(widget->pos.x - offset.x, widget->pos.y - offset.y, width, height);
+	_bounds = gfx_rect(_pos.x - offset.x, _pos.y - offset.y, width, height);
 
-	widget->flags |= GFXW_FLAG_VISIBLE;
-
-	return widget;
+	_flags |= GFXW_FLAG_VISIBLE;
 }
 
 int _gfxwop_view_draw(gfxw_widget_t *widget, Common::Point pos) {
 	gfxw_view_t *view = (gfxw_view_t *)widget;
 	DRAW_ASSERT(widget, GFXW_VIEW);
 
-	GFX_ASSERT(gfxop_draw_cel(view->visual->gfx_state, view->view, view->loop, view->cel,
-				Common::Point(view->pos.x + pos.x, view->pos.y + pos.y), view->color, view->palette));
+	GFX_ASSERT(gfxop_draw_cel(view->_visual->gfx_state, view->_view, view->_loop, view->_cel,
+				Common::Point(view->_pos.x + pos.x, view->_pos.y + pos.y), view->_color, view->_palette));
 
 	return 0;
 }
@@ -651,8 +651,8 @@
 	gfxw_view_t *view = (gfxw_view_t *)widget;
 	DRAW_ASSERT(widget, GFXW_VIEW);
 
-	GFX_ASSERT(gfxop_draw_cel_static(view->visual->gfx_state, view->view, view->loop,
-	                                 view->cel, _move_point(view->bounds, pos), view->color, view->palette));
+	GFX_ASSERT(gfxop_draw_cel_static(view->_visual->gfx_state, view->_view, view->_loop,
+	                                 view->_cel, _move_point(view->_bounds, pos), view->_color, view->_palette));
 
 	return 0;
 }
@@ -662,9 +662,9 @@
 	_gfxw_print_widget(widget, indentation);
 
 	sciprintf("%s", name);
-	sciprintf("(%d/%d/%d)@(%d,%d)[p:%d,c:%d]", view->view, view->loop, view->cel, view->pos.x, view->pos.y,
-	          (view->color.mask & GFX_MASK_PRIORITY) ? view->color.priority : -1,
-	          (view->color.mask & GFX_MASK_CONTROL) ? view->color.control : -1);
+	sciprintf("(%d/%d/%d)@(%d,%d)[p:%d,c:%d]", view->_view, view->_loop, view->_cel, view->_pos.x, view->_pos.y,
+	          (view->_color.mask & GFX_MASK_PRIORITY) ? view->_color.priority : -1,
+	          (view->_color.mask & GFX_MASK_CONTROL) ? view->_color.control : -1);
 
 	return 0;
 }
@@ -695,10 +695,10 @@
 		pos.y += offset.y;
 	}
 
-	view = _gfxw_new_simple_view(state, pos, view_nr, loop, cel, palette, priority, control, halign, valign,
-	                             sizeof(gfxw_view_t), (flags & GFXW_VIEW_FLAG_STATIC) ? GFXW_STATIC_VIEW : GFXW_VIEW);
+	view = new gfxw_view_t(state, pos, view_nr, loop, cel, palette, priority, control, halign, valign,
+	                             (flags & GFXW_VIEW_FLAG_STATIC) ? GFXW_STATIC_VIEW : GFXW_VIEW);
 
-	_gfxw_set_ops_VIEW(GFXW(view), (char)(flags & GFXW_VIEW_FLAG_STATIC));
+	_gfxw_set_ops_VIEW(view, (char)(flags & GFXW_VIEW_FLAG_STATIC));
 
 	return view;
 }
@@ -709,8 +709,8 @@
 	gfxw_dyn_view_t *view = (gfxw_dyn_view_t *) widget;
 	DRAW_ASSERT(widget, GFXW_DYN_VIEW);
 
-	GFX_ASSERT(gfxop_draw_cel(view->visual->gfx_state, view->view, view->loop,
-	                          view->cel, _move_point(view->draw_bounds, pos), view->color, view->palette));
+	GFX_ASSERT(gfxop_draw_cel(view->_visual->gfx_state, view->_view, view->_loop,
+	                          view->_cel, _move_point(view->draw_bounds, pos), view->_color, view->_palette));
 
 	/*
 	  gfx_color_t red;
@@ -718,7 +718,7 @@
 	  red.visual.g = red.visual.b = 0;
 	  red.mask = GFX_MASK_VISUAL;
 	  GFX_ASSERT(gfxop_draw_rectangle(view->visual->gfx_state,
-	  gfx_rect(view->bounds.x + pos.x, view->bounds.y + pos.y, view->bounds.width - 1, view->bounds.height - 1), red, 0, 0));
+	  gfx_rect(view->_bounds.x + pos.x, view->_bounds.y + pos.y, view->_bounds.width - 1, view->_bounds.height - 1), red, 0, 0));
 	*/
 
 	return 0;
@@ -733,13 +733,13 @@
 	gfxw_dyn_view_t *view = (gfxw_dyn_view_t *) widget;
 	DRAW_ASSERT(widget, GFXW_PIC_VIEW);
 
-	GFX_ASSERT(gfxop_set_clip_zone(view->visual->gfx_state, view->parent->zone));
-	GFX_ASSERT(gfxop_draw_cel_static_clipped(view->visual->gfx_state, view->view, view->loop,
-	           view->cel, _move_point(view->draw_bounds, pos), view->color, view->palette));
+	GFX_ASSERT(gfxop_set_clip_zone(view->_visual->gfx_state, view->_parent->zone));
+	GFX_ASSERT(gfxop_draw_cel_static_clipped(view->_visual->gfx_state, view->_view, view->_loop,
+	           view->_cel, _move_point(view->draw_bounds, pos), view->_color, view->_palette));
 
 	// Draw again on the back buffer
-	GFX_ASSERT(gfxop_draw_cel(view->visual->gfx_state, view->view, view->loop, view->cel,
-	                          _move_point(view->draw_bounds, pos), view->color, view->palette));
+	GFX_ASSERT(gfxop_draw_cel(view->_visual->gfx_state, view->_view, view->_loop, view->_cel,
+	                          _move_point(view->draw_bounds, pos), view->_color, view->_palette));
 
 
 	widget->draw = _gfxwop_draw_nop; // No more drawing needs to be done
@@ -753,10 +753,10 @@
 	_gfxw_print_widget(widget, indentation);
 
 	sciprintf("%s", type_string);
-	sciprintf(" SORT=%d z=%d seq=%d (%d/%d/%d)@(%d,%d)[p:%d,c:%d]; sig[%04x@%p]", view->force_precedence, view->z,
-	          view->sequence, view->view, view->loop, view->cel, view->pos.x, view->pos.y,
-	          (view->color.mask & GFX_MASK_PRIORITY) ? view->color.priority : -1,
-	          (view->color.mask & GFX_MASK_CONTROL) ? view->color.control : -1, view->signal, view->signalp);
+	sciprintf(" SORT=%d z=%d seq=%d (%d/%d/%d)@(%d,%d)[p:%d,c:%d]; sig[%04x@%p]", view->force_precedence, view->_z,
+	          view->sequence, view->_view, view->_loop, view->_cel, view->_pos.x, view->_pos.y,
+	          (view->_color.mask & GFX_MASK_PRIORITY) ? view->_color.priority : -1,
+	          (view->_color.mask & GFX_MASK_CONTROL) ? view->_color.control : -1, view->signal, view->signalp);
 
 	return 0;
 }
@@ -776,16 +776,16 @@
 
 	oview = (gfxw_dyn_view_t *)other;
 
-	if (wview->pos.x != oview->pos.x || wview->pos.y != oview->pos.y || wview->z != oview->z)
+	if (wview->_pos.x != oview->_pos.x || wview->_pos.y != oview->_pos.y || wview->_z != oview->_z)
 		return 0;
 
-	if (wview->view != oview->view || wview->loop != oview->loop || wview->cel != oview->cel)
+	if (wview->_view != oview->_view || wview->_loop != oview->_loop || wview->_cel != oview->_cel)
 		return 0;
 
-	if (!_color_equals(wview->color, oview->color))
+	if (!_color_equals(wview->_color, oview->_color))
 		return 0;
 
-	if (wview->flags != oview->flags)
+	if (wview->_flags != oview->_flags)
 		return 0;
 
 	return 1;
@@ -803,11 +803,11 @@
 	if (retval)
 		return retval;
 
-	retval = wview->pos.y - oview->pos.y;
+	retval = wview->_pos.y - oview->_pos.y;
 	if (retval)
 		return retval;
 
-	retval = (wview->z - oview->z);
+	retval = (wview->_z - oview->_z);
 	if (retval)
 		return retval;
 
@@ -827,37 +827,40 @@
 
 gfxw_dyn_view_t *gfxw_new_dyn_view(gfx_state_t *state, Common::Point pos, int z, int view, int loop, int cel, int palette, int priority, int control,
 	gfx_alignment_t halign, gfx_alignment_t valign, int sequence) {
-	gfxw_dyn_view_t *widget;
+	
+	return new gfxw_dyn_view_t(state, pos, z, view, loop, cel, palette, priority, control, halign, valign, sequence);
+}
+
+gfxw_dyn_view_t::gfxw_dyn_view_t(gfx_state_t *state, Common::Point pos_, int z_, int view_, int loop_, int cel_, int palette_, int priority, int control,
+	gfx_alignment_t halign, gfx_alignment_t valign, int sequence_)
+	: gfxw_view_t(state, pos_, view_, loop_, cel_, palette_, priority, control, halign, valign, 0) {
 	int width, height;
 	int xalignmod, yalignmod;
 	Common::Point offset;
 
+	_type = GFXW_DYN_VIEW;
+
 	if (!state) {
-		GFXERROR("Attempt to create view widget with NULL state!\n");
-		return NULL;
+		error("Attempt to create view widget with NULL state!\n");
 	}
 
-	if (gfxop_get_cel_parameters(state, view, loop, cel, &width, &height, &offset)) {
-		GFXERROR("Attempt to retrieve cel parameters for (%d/%d/%d) failed (Maybe the values weren't checked beforehand?)\n",
-		         view, cel, loop);
-		return NULL;
+	if (gfxop_get_cel_parameters(state, view_, loop_, cel_, &width, &height, &offset)) {
+		error("Attempt to retrieve cel parameters for (%d/%d/%d) failed (Maybe the values weren't checked beforehand?)",
+		         view_, cel_, loop_);
 	}
 
-	widget = (gfxw_dyn_view_t *)_gfxw_new_widget(sizeof(gfxw_dyn_view_t), GFXW_DYN_VIEW);
+	_pos = pos_;
+	_color.mask = ((priority < 0) ? 0 : GFX_MASK_PRIORITY) | ((control < 0) ? 0 : GFX_MASK_CONTROL);
+	_widgetPriority = priority;
+	_color.priority = priority;
+	_color.control = control;
+	_view = view_;
+	_loop = loop_;
+	_cel = cel_;
+	_palette = palette_;
 
-	widget->pos = pos;
-	widget->color.mask = ((priority < 0) ? 0 : GFX_MASK_PRIORITY) | ((control < 0) ? 0 : GFX_MASK_CONTROL);
-	widget->widget_priority = priority;
-	widget->color.priority = priority;
-	widget->color.control = control;
-	widget->color.alpha = 0;
-	widget->color.visual = PaletteEntry(0,0,0); // FIXME: black!
-	widget->view = view;
-	widget->loop = loop;
-	widget->cel = cel;
-	widget->sequence = sequence;
-	widget->force_precedence = 0;
-	widget->palette = palette;
+	_color.alpha = 0;
+	_color.visual = PaletteEntry(0,0,0); // FIXME: black!
 
 	if (halign == ALIGN_CENTER)
 		xalignmod = width >> 1;
@@ -873,19 +876,20 @@
 	else
 		yalignmod = 0;
 
-	widget->z = z;
+	draw_bounds = gfx_rect(_pos.x - xalignmod, _pos.y - yalignmod - z_, width, height);
+	_bounds = gfx_rect(_pos.x - offset.x - xalignmod, _pos.y - offset.y - yalignmod - z_, width, height);
 
-	widget->draw_bounds = gfx_rect(widget->pos.x - xalignmod, widget->pos.y - yalignmod - z, width, height);
-	widget->bounds = gfx_rect(widget->pos.x - offset.x - xalignmod, widget->pos.y - offset.y - yalignmod - z, width, height);
+	under_bitsp = NULL;
+	under_bits = 0;
+	signalp = NULL;
+	signal = 0;
+	_z = z_;
+	sequence = sequence_;
+	force_precedence = 0;
 
-	widget->flags |= GFXW_FLAG_VISIBLE;
+	_flags |= GFXW_FLAG_VISIBLE;
 
-	_gfxw_set_ops_DYNVIEW(GFXW(widget));
-
-	widget->signalp = NULL;
-	widget->signal = 0;
-
-	return widget;
+	_gfxw_set_ops_DYNVIEW(this);
 }
 
 //*** Text ***
@@ -901,7 +905,7 @@
 	gfxw_text_t *text = (gfxw_text_t *)widget;
 	DRAW_ASSERT(widget, GFXW_TEXT);
 
-	GFX_ASSERT(gfxop_draw_text(text->visual->gfx_state, text->text_handle, _move_rect(text->bounds, pos)));
+	GFX_ASSERT(gfxop_draw_text(text->_visual->gfx_state, text->text_handle, _move_rect(text->_bounds, pos)));
 
 	return 0;
 }
@@ -910,8 +914,8 @@
 	gfxw_text_t *text = (gfxw_text_t *)widget;
 	DRAW_ASSERT(widget, GFXW_TEXT);
 
-	text->text_handle = gfxop_new_text(widget->visual->gfx_state, text->font_nr, text->text, text->bounds.width,
-	                   text->halign, text->valign, text->color1, text->color2, text->bgcolor, text->text_flags);
+	text->text_handle = gfxop_new_text(widget->_visual->gfx_state, text->font_nr, text->text, text->_bounds.width,
+	                   text->halign, text->valign, text->_color1, text->_color2, text->_bgcolor, text->text_flags);
 
 	text->draw = _gfxwop_text_draw;
 
@@ -927,12 +931,12 @@
 
 static int _gfxwop_text_equals(gfxw_widget_t *widget, gfxw_widget_t *other) {
 	gfxw_text_t *wtext = (gfxw_text_t *)widget, *otext;
-	if (other->type != GFXW_TEXT)
+	if (other->_type != GFXW_TEXT)
 		return 0;
 
 	otext = (gfxw_text_t *)other;
 
-	if ((wtext->bounds.x != otext->bounds.x) || (wtext->bounds.y != otext->bounds.y))
+	if ((wtext->_bounds.x != otext->_bounds.x) || (wtext->_bounds.y != otext->_bounds.y))
 		return 0;
 
 	if (wtext->halign != otext->halign || wtext->valign != otext->valign)
@@ -944,8 +948,8 @@
 	if (wtext->font_nr != otext->font_nr)
 		return 0;
 
-	/* if (!(_color_equals(wtext->color1, otext->color1) && _color_equals(wtext->color2, otext->color2)
-			&& _color_equals(wtext->bgcolor, otext->bgcolor)))
+	/* if (!(_color_equals(wtext->_color1, otext->_color1) && _color_equals(wtext->_color2, otext->_color2)
+			&& _color_equals(wtext->_bgcolor, otext->_bgcolor)))
 		return 0; */
 
 	return 1;
@@ -954,7 +958,7 @@
 static int _gfxwop_text_should_replace(gfxw_widget_t *widget, gfxw_widget_t *other) {
 	gfxw_text_t *wtext = (gfxw_text_t *)widget, *otext;
 
-	if (other->type != GFXW_TEXT)
+	if (other->_type != GFXW_TEXT)
 		return 0;
 
 	otext = (gfxw_text_t *)other;
@@ -975,41 +979,44 @@
 
 gfxw_text_t *gfxw_new_text(gfx_state_t *state, rect_t area, int font, const char *text, gfx_alignment_t halign,
 	gfx_alignment_t valign, gfx_color_t color1, gfx_color_t color2, gfx_color_t bgcolor, int text_flags) {
-	gfxw_text_t *widget = (gfxw_text_t *)_gfxw_new_widget(sizeof(gfxw_text_t), GFXW_TEXT);
+	return new gfxw_text_t(state, area, font, text, halign, valign, color1, color2, bgcolor, text_flags);
+}
 
-	widget->widget_priority = _gfxw_color_get_priority(color1);
-	widget->font_nr = font;
-	widget->text = (char *)sci_malloc(strlen(text) + 1);
-	widget->halign = halign;
-	widget->valign = valign;
-	widget->color1 = color1;
-	widget->color2 = color2;
-	widget->bgcolor = bgcolor;
-	widget->text_flags = text_flags;
-	widget->text_handle = NULL;
+gfxw_text_t::gfxw_text_t(gfx_state_t *state, rect_t area, int font, const char *text_, gfx_alignment_t halign_,
+	gfx_alignment_t valign_, gfx_color_t color1_, gfx_color_t color2_, gfx_color_t bgcolor_, int text_flags_)
+	: gfxw_widget_t(GFXW_TEXT) {
 
-	strcpy(widget->text, text);
+	_widgetPriority = _gfxw_color_get_priority(color1_);
+	font_nr = font;
+	text = (char *)sci_malloc(strlen(text_) + 1);
+	halign = halign_;
+	valign = valign_;
+	_color1 = color1_;
+	_color2 = color2_;
+	_bgcolor = bgcolor_;
+	text_flags = text_flags_;
+	text_handle = NULL;
 
-	gfxop_get_text_params(state, font, text, area.width, &(widget->width), &(widget->height), text_flags,
-	                      &(widget->lines_nr), &(widget->lineheight), &(widget->lastline_width));
+	strcpy(text, text_);
 
+	gfxop_get_text_params(state, font, text, area.width, &width, &height, text_flags,
+	                      &lines_nr, &lineheight, &lastline_width);
+
 	/* FIXME: Window is too big
-	area.x += _calc_needmove(halign, area.width, widget->width);
-	area.y += _calc_needmove(valign, area.height, widget->height);
+	area.x += _calc_needmove(halign, area.width, width);
+	area.y += _calc_needmove(valign, area.height, height);
 	*/
 
 	if (halign == ALIGN_LEFT)
-		area.width = widget->width;
+		area.width = width;
 	if (valign == ALIGN_TOP)
-		area.height = widget->height;
+		area.height = height;
 
-	widget->bounds = area;
+	_bounds = area;
 
-	widget->flags |= GFXW_FLAG_VISIBLE;
+	_flags |= GFXW_FLAG_VISIBLE;
 
-	_gfxw_set_ops_TEXT(GFXW(widget));
-
-	return widget;
+	_gfxw_set_ops_TEXT(this);
 }
 
 void gfxw_text_info(gfx_state_t *state, gfxw_text_t *text, int *lines, int *lineheight, int *offset) {
@@ -1053,7 +1060,7 @@
 	while (seeker) {
 		seeker->print(seeker, indentation + 1);
 		sciprintf("\n");
-		seeker = seeker->next;
+		seeker = seeker->_next;
 	}
 
 	return 0;
@@ -1063,7 +1070,7 @@
 	gfx_dirty_rect_t *dirty;
 	gfxw_container_t *container = (gfxw_container_t *)widget;
 	if (!GFXW_IS_CONTAINER(widget)) {
-		GFXERROR("_w_gfxwop_container_print() called on type %d widget\n", widget->type);
+		GFXERROR("_w_gfxwop_container_print() called on type %d widget\n", widget->_type);
 		return 1;
 	}
 
@@ -1085,17 +1092,21 @@
 	return 0;
 }
 
-gfxw_container_t *_gfxw_new_container_widget(rect_t area, int size, gfxw_widget_type_t type) {
-	gfxw_container_t *widget = (gfxw_container_t *)_gfxw_new_widget(size, type);
 
-	widget->bounds = widget->zone = area;
-	widget->contents = NULL;
-	widget->nextpp = &(widget->contents);
-	widget->dirty = NULL;
+gfxw_container_t::gfxw_container_t(rect_t area, gfxw_widget_type_t type_)
+	: gfxw_widget_t(type_) {
+	_bounds = zone = area;
+	contents = NULL;
+	nextpp = &contents;
+	dirty = NULL;
+	
+	free_tagged = NULL;
+	free_contents = NULL;
+	add_dirty_abs = NULL;
+	add_dirty_rel = NULL;
+	add = NULL;
 
-	widget->flags |= GFXW_FLAG_VISIBLE | GFXW_FLAG_CONTAINER;
-
-	return widget;
+	_flags |= GFXW_FLAG_VISIBLE | GFXW_FLAG_CONTAINER;
 }
 
 static void recursively_free_dirty_rects(gfx_dirty_rect_t *dirty) {
@@ -1105,8 +1116,6 @@
 	}
 }
 
-int ti = 0;
-
 static int _gfxw_dirty_rect_overlaps_normal_rect(rect_t port_zone, rect_t bounds, rect_t dirty) {
 	bounds.x += port_zone.x;
 	bounds.y += port_zone.y;
@@ -1117,7 +1126,7 @@
 static int _gfxwop_container_draw_contents(gfxw_widget_t *widget, gfxw_widget_t *contents) {
 	gfxw_container_t *container = (gfxw_container_t *)widget;
 	gfx_dirty_rect_t *dirty = container->dirty;
-	gfx_state_t *gfx_state = (widget->visual) ? widget->visual->gfx_state : ((gfxw_visual_t *) widget)->gfx_state;
+	gfx_state_t *gfx_state = (widget->_visual) ? widget->_visual->gfx_state : ((gfxw_visual_t *) widget)->gfx_state;
 	int draw_ports;
 	rect_t nullzone = {0, 0, 0, 0};
 
@@ -1130,17 +1139,17 @@
 		while (seeker) {
 			if (_gfxw_dirty_rect_overlaps_normal_rect(GFXW_IS_CONTAINER(seeker) ? nullzone : container->zone,
 			        // Containers have absolute coordinates, reflect this.
-			        seeker->bounds, dirty->rect)) {
+			        seeker->_bounds, dirty->rect)) {
 
 				if (GFXW_IS_CONTAINER(seeker)) {// Propagate dirty rectangles /upwards/
 					DDIRTY(stderr, "container_draw_contents: propagate upwards (%d,%d,%d,%d ,0)\n", GFX_PRINT_RECT(dirty->rect));
 					((gfxw_container_t *)seeker)->add_dirty_abs((gfxw_container_t *)seeker, dirty->rect, 0);
 				}
 
-				seeker->flags |= GFXW_FLAG_DIRTY;
+				seeker->_flags |= GFXW_FLAG_DIRTY;
 			}
 
-			seeker = seeker->next;
+			seeker = seeker->_next;
 		}
 
 		dirty = dirty->next;
@@ -1157,9 +1166,9 @@
 				byte draw_noncontainers;
 
 				memcpy(&small_rect, &(dirty->rect), sizeof(rect_t));
-				draw_noncontainers = !_gfxop_clip(&small_rect, container->bounds);
+				draw_noncontainers = !_gfxop_clip(&small_rect, container->_bounds);
 
-				if (seeker->flags & GFXW_FLAG_DIRTY) {
+				if (seeker->_flags & GFXW_FLAG_DIRTY) {
 
 					if (!GFXW_IS_CONTAINER(seeker) && draw_noncontainers) {
 						GFX_ASSERT(gfxop_set_clip_zone(gfx_state, small_rect));
@@ -1171,10 +1180,10 @@
 						seeker->draw(seeker, Common::Point(container->zone.x, container->zone.y));
 
 					if (!dirty->next)
-						seeker->flags &= ~GFXW_FLAG_DIRTY;
+						seeker->_flags &= ~GFXW_FLAG_DIRTY;
 				}
 
-				seeker = seeker->next;
+				seeker = seeker->_next;
 			}
 			dirty = dirty->next;
 		}
@@ -1189,7 +1198,7 @@
 	gfxw_widget_t *seeker = container->contents;
 
 	while (seeker) {
-		gfxw_widget_t *next = seeker->next;
+		gfxw_widget_t *next = seeker->_next;
 		seeker->widfree(seeker);
 		seeker = next;
 	}
@@ -1206,7 +1215,7 @@
 
 	while (seeker) {
 		seeker->tag(seeker);
-		seeker = seeker->next;
+		seeker = seeker->_next;
 	}
 
 	return 0;
@@ -1215,7 +1224,7 @@
 static int _w_gfxwop_container_set_visual_contents(gfxw_widget_t *contents, gfxw_visual_t *visual) {
 	while (contents) {
 		contents->set_visual(contents, visual);
-		contents = contents->next;
+		contents = contents->_next;
 	}
 	return 0;
 }
@@ -1223,11 +1232,11 @@
 static int _gfxwop_container_set_visual(gfxw_widget_t *widget, gfxw_visual_t *visual) {
 	gfxw_container_t *container = (gfxw_container_t *) widget;
 
-	container->visual = visual;
-	if (widget->parent) {
+	container->_visual = visual;
+	if (widget->_parent) {
 		if (!(GFXW_IS_LIST(widget) && !GFXWC(widget)->contents)) {
-			DDIRTY(stderr, "set_visual::DOWNWARDS abs(%d,%d,%d,%d, 1)\n", GFX_PRINT_RECT(widget->bounds));
-			widget->parent->add_dirty_abs(widget->parent, widget->bounds, 1);
+			DDIRTY(stderr, "set_visual::DOWNWARDS abs(%d,%d,%d,%d, 1)\n", GFX_PRINT_RECT(widget->_bounds));
+			widget->_parent->add_dirty_abs(widget->_parent, widget->_bounds, 1);
 		}
 	}
 
@@ -1240,11 +1249,11 @@
 	while (seekerp) {
 		gfxw_widget_t *redshirt = seekerp;
 
-		if (redshirt->flags & GFXW_FLAG_TAGGED) {
-			seekerp = (redshirt->next);
+		if (redshirt->_flags & GFXW_FLAG_TAGGED) {
+			seekerp = (redshirt->_next);
 			redshirt->widfree(redshirt);
 		} else
-			seekerp = (seekerp)->next;
+			seekerp = (seekerp)->_next;
 	}
 
 	return 0;
@@ -1254,7 +1263,7 @@
 	gfxw_widget_t *seeker = container->contents;
 
 	while (seeker) {
-		gfxw_widget_t *next = seeker->next;
+		gfxw_widget_t *next = seeker->_next;
 		seeker->widfree(seeker);
 		seeker = next;
 	}
@@ -1263,13 +1272,13 @@
 
 static void _gfxw_dirtify_container(gfxw_container_t *container, gfxw_widget_t *widget) {
 	if (GFXW_IS_CONTAINER(widget))
-		container->add_dirty_abs(GFXWC(container), widget->bounds, 1);
+		container->add_dirty_abs(GFXWC(container), widget->_bounds, 1);
 	else
-		container->add_dirty_rel(GFXWC(container), widget->bounds, 1);
+		container->add_dirty_rel(GFXWC(container), widget->_bounds, 1);
 }
 
 static int _parentize_widget(gfxw_container_t *container, gfxw_widget_t *widget) {
-	if (widget->parent) {
+	if (widget->_parent) {
 		GFXERROR("_gfxwop_container_add(): Attempt to give second parent node to widget!\nWidget:");
 		widget->print(GFXW(widget), 3);
 		sciprintf("\nContainer:");
@@ -1278,12 +1287,12 @@
 		return 1;
 	}
 
-	widget->parent = GFXWC(container);
+	widget->_parent = GFXWC(container);
 
 	if (GFXW_IS_VISUAL(container))
 		widget->set_visual(widget, (gfxw_visual_t *) container);
-	else if (container->visual)
-		widget->set_visual(widget, container->visual);
+	else if (container->_visual)
+		widget->set_visual(widget, container->_visual);
 
 	return 0;
 }
@@ -1294,21 +1303,21 @@
 	if (GFXW_IS_PORT(widget))
 		return 0;
 
-	if (widget->ID == GFXW_NO_ID)
+	if (widget->_ID == GFXW_NO_ID)
 		return 0;
 
-	while (*seekerp && ((*seekerp)->ID != widget->ID || (*seekerp)->subID != widget->subID))
-		seekerp = &((*seekerp)->next);
+	while (*seekerp && ((*seekerp)->_ID != widget->_ID || (*seekerp)->_subID != widget->_subID))
+		seekerp = &((*seekerp)->_next);
 
 	if (!*seekerp)
 		return 0;
 
 	if ((*seekerp)->equals(*seekerp, widget) && !(*seekerp)->should_replace(*seekerp, widget)) {
 		widget->widfree(widget);
-		(*seekerp)->flags &= ~GFXW_FLAG_TAGGED;
+		(*seekerp)->_flags &= ~GFXW_FLAG_TAGGED;
 		return 1;
 	} else {
-		if (!(widget->flags & GFXW_FLAG_MULTI_ID))
+		if (!(widget->_flags & GFXW_FLAG_MULTI_ID))
 			(*seekerp)->widfree(*seekerp);
 		return 0;
 	}
@@ -1318,11 +1327,11 @@
 #if 0
 	// This code has been disabled because containers may contain sub-containers with
 	// bounds greater than their own.
-	if (_gfxop_clip(&dirty, container->bounds))
+	if (_gfxop_clip(&dirty, container->_bounds))
 		return 0;
 #endif
 
-	DDIRTY(stderr, "Effectively adding dirty %d,%d,%d,%d %d to ID %d\n", GFX_PRINT_RECT(dirty), propagate, container->ID);
+	DDIRTY(stderr, "Effectively adding dirty %d,%d,%d,%d %d to ID %d\n", GFX_PRINT_RECT(dirty), propagate, container->_ID);
 	container->dirty = gfxdr_add_dirty(container->dirty, dirty, GFXW_DIRTY_STRATEGY);
 	return 0;
 }
@@ -1335,12 +1344,12 @@
 		return 1;
 
 	if (!(GFXW_IS_LIST(widget) && (!GFXWC(widget)->contents))) { // Don't dirtify self on empty lists
-		DDIRTY(stderr, "container_add: dirtify DOWNWARDS (%d,%d,%d,%d, 1)\n", GFX_PRINT_RECT(widget->bounds));
+		DDIRTY(stderr, "container_add: dirtify DOWNWARDS (%d,%d,%d,%d, 1)\n", GFX_PRINT_RECT(widget->_bounds));
 		_gfxw_dirtify_container(container, widget);
 	}
 
 	*(container->nextpp) = widget;
-	container->nextpp = &(widget->next);
+	container->nextpp = &(widget->_next);
 
 	return 0;
 }
@@ -1353,7 +1362,7 @@
 	_gfxwop_container_draw_contents(list, ((gfxw_list_t *)list)->contents);
 	recursively_free_dirty_rects(GFXWC(list)->dirty);
 	GFXWC(list)->dirty = NULL;
-	list->flags &= ~GFXW_FLAG_DIRTY;
+	list->_flags &= ~GFXW_FLAG_DIRTY;
 
 	return 0;
 }
@@ -1383,35 +1392,11 @@
 	return _w_gfxwop_list_print(list, "SORTED_LIST", indentation);
 }
 
-#if 0
-struct gfxw_widget_list {
-	gfxw_widget_t *widget;
-	struct gfxw_widget_list *next;
-};
-
-static struct gfxw_widtet_list *_gfxw_make_widget_list_recursive(gfxw_widget_t *widget) {
-	gfxw_widget_list *node;
-
-	if (!widget)
-		return NULL;
-
-	node = sci_malloc(sizeof(struct gfxw_widget_list));
-	node->widget = widget;
-	node->next = _gfxw_make_widget_list_recursive(widget->next);
-
-	return node;
-}
-
-static struct gfxw_widget_list *_gfxw_make_widget_list(gfxw_container_t *container) {
-	return _gfxw_make_widget_list_recursive(container->contents);
-}
-#endif
-
 static int _gfxwop_list_equals(gfxw_widget_t *widget, gfxw_widget_t *other) {
 	// Requires identical order of list elements.
 	gfxw_list_t *wlist, *olist;
 
-	if (widget->type != other->type)
+	if (widget->_type != other->_type)
 		return 0;
 
 	if (!GFXW_IS_LIST(widget)) {
@@ -1424,7 +1409,7 @@
 	wlist = (gfxw_list_t *)widget;
 	olist = (gfxw_list_t *)other;
 
-	if (memcmp(&(wlist->bounds), &(olist->bounds), sizeof(rect_t)))
+	if (memcmp(&(wlist->_bounds), &(olist->_bounds), sizeof(rect_t)))
 		return 0;
 
 	widget = wlist->contents;
@@ -1434,8 +1419,8 @@
 		if (!(widget->equals(widget, other) && !widget->should_replace(widget, other)))
 			return 0;
 
-		widget = widget->next;
-		other = other->next;
+		widget = widget->_next;
+		other = other->_next;
 	}
 
 	return (!widget && !other); // True if both are finished now
@@ -1444,13 +1429,13 @@
 static int _gfxwop_list_add_dirty(gfxw_container_t *container, rect_t dirty, int propagate) {
 	// Lists add dirty boxes to both themselves and their parenting port/visual
 
-	container->flags |= GFXW_FLAG_DIRTY;
+	container->_flags |= GFXW_FLAG_DIRTY;
 
 	DDIRTY(stderr, "list_add_dirty %d,%d,%d,%d %d\n", GFX_PRINT_RECT(dirty), propagate);
 	if (propagate)
-		if (container->parent) {
+		if (container->_parent) {
 			DDIRTY(stderr, "->PROPAGATING\n");
-			container->parent->add_dirty_abs(container->parent, dirty, 1);
+			container->_parent->add_dirty_abs(container->_parent, dirty, 1);
 		}
 
 	return _gfxwop_container_add_dirty(container, dirty, propagate);
@@ -1460,7 +1445,7 @@
 	// O(n)
 	gfxw_widget_t **seekerp = &(container->contents);
 
-	if (widget->next) {
+	if (widget->_next) {
 		GFXERROR("_gfxwop_sorted_list_add(): Attempt to add widget to two lists!\nWidget:");
 		widget->print(GFXW(widget), 3);
 		sciprintf("\nList:");
@@ -1477,14 +1462,14 @@
 
 		if (widget->equals(GFXW(widget), GFXW(*seekerp))) {
 			if (compare_all) {
-				if ((*seekerp)->visual)
+				if ((*seekerp)->_visual)
 					(*seekerp)->widfree(GFXW(*seekerp)); // If it's a fresh widget
 				else
 					gfxw_annihilate(GFXW(*seekerp));
 
 				return _gfxwop_ordered_add(container, widget, compare_all); // We might have destroyed the container's contents
 			} else {
-				widget->next = (*seekerp)->next;
+				widget->_next = (*seekerp)->_next;
 				(*seekerp)->widfree(GFXW(*seekerp));
 				*seekerp = widget;
 				return (_parentize_widget(container, widget));
@@ -1492,10 +1477,10 @@
 		}
 
 		if (*seekerp)
-			seekerp = &((*seekerp)->next);
+			seekerp = &((*seekerp)->_next);
 	}
 
-	widget->next = *seekerp;
+	widget->_next = *seekerp;
 	*seekerp = widget;
 
 	return _parentize_widget(container, widget);
@@ -1517,14 +1502,17 @@
 }
 
 gfxw_list_t *gfxw_new_list(rect_t area, int sorted) {
-	gfxw_list_t *list = (gfxw_list_t *) _gfxw_new_container_widget(area, sizeof(gfxw_list_t),
-	                    sorted ? GFXW_SORTED_LIST : GFXW_LIST);

@@ Diff output truncated at 100000 characters. @@

This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.




More information about the Scummvm-git-logs mailing list