[Scummvm-git-logs] scummvm master -> 7a13a6067805fdc15b76646ed052d7394f182b16

dreammaster paulfgilbert at gmail.com
Wed Mar 13 05:10:07 CET 2019


This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .

Summary:
7a13a60678 GLK: FROTZ: Move remainder of font/style logic into Window


Commit: 7a13a6067805fdc15b76646ed052d7394f182b16
    https://github.com/scummvm/scummvm/commit/7a13a6067805fdc15b76646ed052d7394f182b16
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2019-03-12T21:09:53-07:00

Commit Message:
GLK: FROTZ: Move remainder of font/style logic into Window

Changed paths:
    engines/glk/frotz/glk_interface.cpp
    engines/glk/frotz/glk_interface.h
    engines/glk/frotz/processor.cpp
    engines/glk/frotz/processor.h
    engines/glk/frotz/processor_screen.cpp
    engines/glk/frotz/windows.cpp
    engines/glk/frotz/windows.h


diff --git a/engines/glk/frotz/glk_interface.cpp b/engines/glk/frotz/glk_interface.cpp
index 4d60fe7..f6e01db 100644
--- a/engines/glk/frotz/glk_interface.cpp
+++ b/engines/glk/frotz/glk_interface.cpp
@@ -32,12 +32,11 @@ namespace Glk {
 namespace Frotz {
 
 GlkInterface::GlkInterface(OSystem *syst, const GlkGameDescription &gameDesc) :
-		GlkAPI(syst, gameDesc),
-		_pics(nullptr), oldstyle(0), curstyle(0), curr_font(1), prev_font(1), temp_font(0),
-		curr_status_ht(0), mach_status_ht(0), gos_status(nullptr), gos_linepending(0), gos_linebuf(nullptr),
-		gos_linewin(nullptr), gos_channel(nullptr), mwin(0), mouse_x(0), mouse_y(0), fixforced(0), menu_selected(0),
-		enable_wrapping(false), enable_scripting(false), enable_scrolling(false), enable_buffering(false),
-		next_sample(0), next_volume(0), _soundLocked(false), _soundPlaying(false), _reverseVideo(false) {
+		GlkAPI(syst, gameDesc), _pics(nullptr), curr_status_ht(0), mach_status_ht(0), gos_status(nullptr),
+		gos_linepending(0), gos_linebuf(nullptr), gos_linewin(nullptr), gos_channel(nullptr), mwin(0),
+		mouse_x(0), mouse_y(0), fixforced(0), menu_selected(0), enable_wrapping(false), enable_scripting(false),
+		enable_scrolling(false), enable_buffering(false), next_sample(0), next_volume(0), _soundLocked(false),
+		_soundPlaying(false), _reverseVideo(false) {
 	Common::fill(&statusline[0], &statusline[256], '\0');
 	Common::fill(&zcolors[0], &zcolors[zcolor_NUMCOLORS], 0);
 }
diff --git a/engines/glk/frotz/glk_interface.h b/engines/glk/frotz/glk_interface.h
index 5d47308..df176af 100644
--- a/engines/glk/frotz/glk_interface.h
+++ b/engines/glk/frotz/glk_interface.h
@@ -62,14 +62,8 @@ public:
 	Pics *_pics;
 	zchar statusline[256];
 	uint zcolors[zcolor_NUMCOLORS];
-	int oldstyle;
-	int curstyle;
 	int fixforced;
 
-	int curr_font;
-	int prev_font;
-	int temp_font;
-
 	int curr_status_ht;
 	int mach_status_ht;
 
diff --git a/engines/glk/frotz/processor.cpp b/engines/glk/frotz/processor.cpp
index fdfafaa..b253510 100644
--- a/engines/glk/frotz/processor.cpp
+++ b/engines/glk/frotz/processor.cpp
@@ -198,11 +198,6 @@ void Processor::initialize() {
 		op0_opcodes[9] = &Processor::z_catch;
 		op1_opcodes[15] = &Processor::z_call_n;
 	}
-
-	PropFontInfo &pi = g_conf->_propInfo;
-	_quotes = pi._quotes;
-	_dashes = pi._quotes;
-	_spaces = pi._spaces;
 }
 
 void Processor::load_operand(zbyte type) {
diff --git a/engines/glk/frotz/processor.h b/engines/glk/frotz/processor.h
index 15b8c51..dddcc76 100644
--- a/engines/glk/frotz/processor.h
+++ b/engines/glk/frotz/processor.h
@@ -95,10 +95,6 @@ private:
 	bool istream_replay;
 	bool message;
 	Common::FixedStack<Redirect, MAX_NESTING> _redirect;
-
-	int _quotes;
-	int _dashes;
-	int _spaces;
 protected:
 	/**
 	 * \defgroup General support methods
diff --git a/engines/glk/frotz/processor_screen.cpp b/engines/glk/frotz/processor_screen.cpp
index a3134d3..1ce0f91 100644
--- a/engines/glk/frotz/processor_screen.cpp
+++ b/engines/glk/frotz/processor_screen.cpp
@@ -29,20 +29,22 @@ namespace Glk {
 namespace Frotz {
 
 void Processor::screen_mssg_on() {
-	if (_wp.currWin() == _wp._lower) {
-		oldstyle = curstyle;
+	Window &w = _wp.currWin();
+
+	if (w == _wp._lower) {
+		w._oldStyle = w._currStyle;
 		glk_set_style(style_Preformatted);
 		glk_put_string("\n    ");
 	}
 }
 
 void Processor::screen_mssg_off() {
-	if (_wp.currWin() == _wp._lower) {
+	Window &w = _wp.currWin();
+
+	if (w == _wp._lower) {
 		glk_put_char('\n');
-		zargs[0] = 0;
-		z_set_text_style();
-		zargs[0] = oldstyle;
-		z_set_text_style();
+		w.setStyle(0);
+		w.setStyle(w._oldStyle);
 	}
 }
 
@@ -101,7 +103,8 @@ uint32 Processor::zchar_to_unicode_rune(zchar c) {
 }
 
 void Processor::screen_char(zchar c) {
-	if (gos_linepending && (_wp.currWin() == gos_linewin)) {
+	Window &w = _wp.currWin();
+	if (gos_linepending && (w == gos_linewin)) {
 		gos_cancel_pending_line();
 		if (_wp.currWin() == _wp._upper) {
 			_wp._upper.setCursor(Point(1, _wp._upper[Y_CURSOR] + 1));
@@ -112,14 +115,12 @@ void Processor::screen_char(zchar c) {
 
 	// check fixed flag in header, game can change it at whim
 	int forcefix = ((h_flags & FIXED_FONT_FLAG) != 0);
-	int curfix = ((curstyle & FIXED_WIDTH_STYLE) != 0);
+	int curfix = ((w._currStyle & FIXED_WIDTH_STYLE) != 0);
 	if (forcefix && !curfix) {
-		zargs[0] = 0xf000;	// tickle tickle!
-		z_set_text_style();
+		w.setStyle();
 		fixforced = true;
 	} else if (!forcefix && fixforced) {
-		zargs[0] = 0xf000;	// tickle tickle!
-		z_set_text_style();
+		w.setStyle();
 		fixforced = false;
 	}
 
@@ -156,11 +157,11 @@ void Processor::screen_char(zchar c) {
 				curx++;
 			}
 		}
-	} else if (_wp.currWin() == _wp._lower) {
+	} else if (w == _wp._lower) {
 		if (c == ZC_RETURN)
 			glk_put_char('\n');
 		else {
-			if (curr_font == GRAPHICS_FONT) {
+			if (w._currFont == GRAPHICS_FONT) {
 				uint32 runic_char = zchar_to_unicode_rune(c);
 				if (runic_char != 0) {
 					glk_set_style(style_User2);
@@ -365,46 +366,7 @@ void Processor::z_set_colour() {
 void Processor::z_set_font() {
 	zword font = zargs[0];
 
-	switch (font) {
-	case PREVIOUS_FONT:
-		// previous font
-		temp_font = curr_font;
-		curr_font = prev_font;
-		prev_font = temp_font;
-		zargs[0] = 0xf000;	// tickle tickle!
-		z_set_text_style();
-		store(curr_font);
-		break;
-
-	case TEXT_FONT:
-	case GRAPHICS_FONT:
-	case FIXED_WIDTH_FONT:
-		prev_font = curr_font;
-		curr_font = font;
-		zargs[0] = 0xf000;	// tickle tickle!
-		z_set_text_style();
-		store(prev_font);
-		break;
-
-	case PICTURE_FONT: // picture font, undefined per 1.1
-	default:           // unavailable
-		store(0);
-		break;
-	}
-
-	PropFontInfo &pi = g_conf->_propInfo;
-	if (curr_font == GRAPHICS_FONT) {
-		_quotes = pi._quotes;
-		_dashes = pi._dashes;
-		_spaces = pi._spaces;
-		pi._quotes = 0;
-		pi._dashes = 0;
-		pi._spaces = 0;
-	} else {
-		pi._quotes = _quotes;
-		pi._dashes = _dashes;
-		pi._spaces = _spaces;
-	}
+	store(_wp.currWin().setFont(font));
 }
 
 void Processor::z_set_cursor() {
@@ -424,23 +386,7 @@ void Processor::z_set_cursor() {
 }
 
 void Processor::z_set_text_style() {
-	int style;
-
-	if (zargs[0] == 0)
-		curstyle = 0;
-	else if (zargs[0] != 0xf000)
-		// not tickle time
-		curstyle |= zargs[0];
-
-	if (h_flags & FIXED_FONT_FLAG || curr_font == FIXED_WIDTH_FONT || curr_font == GRAPHICS_FONT)
-		style = curstyle | FIXED_WIDTH_STYLE;
-	else
-		style = curstyle;
-
-	if (gos_linepending && _wp.currWin() == gos_linewin)
-		return;
-
-	_wp[_wp._cwin].setStyle(style);
+	_wp[_wp._cwin].setStyle(zargs[0]);
 }
 
 void Processor::z_set_window() {
diff --git a/engines/glk/frotz/windows.cpp b/engines/glk/frotz/windows.cpp
index 0ff92bc..bacd6e3 100644
--- a/engines/glk/frotz/windows.cpp
+++ b/engines/glk/frotz/windows.cpp
@@ -75,6 +75,12 @@ void Windows::setup(bool isVersion6) {
 		w._index = idx;
 		w[FONT_NUMBER] = TEXT_FONT;
 		w[FONT_SIZE] = (mi._cellH << 8) | mi._cellW;
+
+
+		PropFontInfo &pi = g_conf->_propInfo;
+		w._quotes = pi._quotes;
+		w._dashes = pi._quotes;
+		w._spaces = pi._spaces;
 	}
 }
 
@@ -87,7 +93,8 @@ void Windows::setWindow(int win) {
 
 /*--------------------------------------------------------------------------*/
 
-Window::Window() : _windows(nullptr), _win(nullptr) {
+Window::Window() : _windows(nullptr), _win(nullptr), _quotes(0), _dashes(0), _spaces(0),
+		_currFont(TEXT_FONT), _prevFont(TEXT_FONT), _tempFont(TEXT_FONT), _currStyle(0), _oldStyle(0) {
 	Common::fill(_properties, _properties + TRUE_BG_COLOR + 1, 0);
 	_properties[Y_POS] = _properties[X_POS] = 1;
 	_properties[Y_CURSOR] = _properties[X_CURSOR] = 1;
@@ -184,7 +191,72 @@ void Window::updateColors(uint fore, uint back) {
 	updateColors();
 }
 
-void Window::setStyle(uint style) {
+uint Window::setFont(uint font) {
+	int result = 0;
+
+	switch (font) {
+	case PREVIOUS_FONT:
+		// previous font
+		_tempFont = _currFont;
+		_currFont = _prevFont;
+		_prevFont = _tempFont;
+		setStyle();
+		result = _currFont;
+		break;
+
+	case TEXT_FONT:
+	case GRAPHICS_FONT:
+	case FIXED_WIDTH_FONT:
+		_prevFont = _currFont;
+		_currFont = font;
+		setStyle();
+		result = _prevFont;
+		break;
+
+	case PICTURE_FONT: // picture font, undefined per 1.1
+	default:           // unavailable
+		result = 0;
+		break;
+	}
+
+	PropFontInfo &pi = g_conf->_propInfo;
+	if (_currFont == GRAPHICS_FONT) {
+		_quotes = pi._quotes;
+		_dashes = pi._dashes;
+		_spaces = pi._spaces;
+		pi._quotes = 0;
+		pi._dashes = 0;
+		pi._spaces = 0;
+	} else {
+		pi._quotes = _quotes;
+		pi._dashes = _dashes;
+		pi._spaces = _spaces;
+	}
+
+	return result;
+}
+
+void Window::setStyle(int style) {
+	if (style == 0)
+		_currStyle = 0;
+	else if (style != -1)
+		// not tickle time
+		_currStyle |= style;
+
+	if (g_vm->h_flags & FIXED_FONT_FLAG || _currFont == FIXED_WIDTH_FONT || _currFont == GRAPHICS_FONT)
+		style = _currStyle | FIXED_WIDTH_STYLE;
+	else
+		style = _currStyle;
+
+	if (g_vm->gos_linepending && _windows->currWin() == g_vm->gos_linewin)
+		return;
+
+	updateStyle();
+}
+
+void Window::updateStyle() {
+	uint style = _currStyle;
+
 	/*
 	if (style & REVERSE_STYLE) {
 		os_set_reverse_video(true);
@@ -194,7 +266,7 @@ void Window::setStyle(uint style) {
 		createGlkWindow();
 
 	if (style & FIXED_WIDTH_STYLE) {
-		if (g_vm->curr_font == GRAPHICS_FONT)
+		if (_currFont == GRAPHICS_FONT)
 			_win->_stream->setStyle(style_User1);			// character graphics
 		else if (style & BOLDFACE_STYLE && style & EMPHASIS_STYLE)
 			_win->_stream->setStyle(style_BlockQuote);	// monoz
@@ -216,7 +288,7 @@ void Window::setStyle(uint style) {
 	}
 
 	/*
-	if (curstyle == 0) {
+	if (_currStyle == 0) {
 		os_set_reverse_video(false);
 	}
 	*/
diff --git a/engines/glk/frotz/windows.h b/engines/glk/frotz/windows.h
index 0f2bdff..8b971cc 100644
--- a/engines/glk/frotz/windows.h
+++ b/engines/glk/frotz/windows.h
@@ -105,6 +105,20 @@ private:
 	 * Creates a new Glk window to attach to the window
 	 */
 	void createGlkWindow();
+
+	/**
+	 * Updates the current font/style
+	 */
+	void updateStyle();
+public:
+	int _currFont;
+	int _prevFont;
+	int _tempFont;
+	int _currStyle;
+	int _oldStyle;
+	int _quotes;
+	int _dashes;
+	int _spaces;
 public:
 	/**
 	 * Constructor
@@ -170,9 +184,14 @@ public:
 	void updateColors(uint fore, uint back);
 
 	/**
+	 * Set the font
+	 */
+	uint setFont(uint font);
+
+	/**
 	 * Set the textstyle
 	 */
-	void setStyle(uint style);
+	void setStyle(int style = -1);
 };
 
 /**





More information about the Scummvm-git-logs mailing list