diff options
| author | dreammaster | 2018-11-10 05:42:22 +0000 | 
|---|---|---|
| committer | Paul Gilbert | 2018-12-08 19:05:59 -0800 | 
| commit | a8e656a5de01e18697fa4f0086215d11d9143197 (patch) | |
| tree | 95387943edd3e57d8db031534dc4105de05e525c | |
| parent | 5ddf55da6cb9ba283229d2a06014ab5b88f6bfb4 (diff) | |
| download | scummvm-rg350-a8e656a5de01e18697fa4f0086215d11d9143197.tar.gz scummvm-rg350-a8e656a5de01e18697fa4f0086215d11d9143197.tar.bz2 scummvm-rg350-a8e656a5de01e18697fa4f0086215d11d9143197.zip  | |
GLK: astyle formatting
31 files changed, 5058 insertions, 4897 deletions
diff --git a/engines/gargoyle/conf.cpp b/engines/gargoyle/conf.cpp index 7add133cba..9a0d6482aa 100644 --- a/engines/gargoyle/conf.cpp +++ b/engines/gargoyle/conf.cpp @@ -35,31 +35,31 @@ const byte SCROLL_BG[3] = { 0xb0, 0xb0, 0xb0 };  const byte SCROLL_FG[3] = { 0x80, 0x80, 0x80 };  WindowStyle T_STYLES[style_NUMSTYLES] = { -	{ PROPR,{ 0xff,0xff,0xff },{ 0x00,0x00,0x00 }, 0 }, ///< Normal -	{ PROPI,{ 0xff,0xff,0xff },{ 0x00,0x00,0x00 }, 0 }, ///< Emphasized -	{ MONOR,{ 0xff,0xff,0xff },{ 0x00,0x00,0x00 }, 0 }, ///< Preformatted -	{ PROPB,{ 0xff,0xff,0xff },{ 0x00,0x00,0x00 }, 0 }, ///< Header -	{ PROPB,{ 0xff,0xff,0xff },{ 0x00,0x00,0x00 }, 0 }, ///< Subheader -	{ PROPZ,{ 0xff,0xff,0xff },{ 0x00,0x00,0x00 }, 0 }, ///< Alert -	{ PROPR,{ 0xff,0xff,0xff },{ 0x00,0x00,0x00 }, 0 }, ///< Note -	{ PROPR,{ 0xff,0xff,0xff },{ 0x00,0x00,0x00 }, 0 }, ///< BlockQuote -	{ PROPB,{ 0xff,0xff,0xff },{ 0x00,0x60,0x00 }, 0 }, ///< Input -	{ MONOR,{ 0xff,0xff,0xff },{ 0x00,0x00,0x00 }, 0 }, ///< User1 -	{ MONOR,{ 0xff,0xff,0xff },{ 0x00,0x00,0x00 }, 0 }, ///< User2 +	{ PROPR, { 0xff, 0xff, 0xff }, { 0x00, 0x00, 0x00 }, 0 }, ///< Normal +	{ PROPI, { 0xff, 0xff, 0xff }, { 0x00, 0x00, 0x00 }, 0 }, ///< Emphasized +	{ MONOR, { 0xff, 0xff, 0xff }, { 0x00, 0x00, 0x00 }, 0 }, ///< Preformatted +	{ PROPB, { 0xff, 0xff, 0xff }, { 0x00, 0x00, 0x00 }, 0 }, ///< Header +	{ PROPB, { 0xff, 0xff, 0xff }, { 0x00, 0x00, 0x00 }, 0 }, ///< Subheader +	{ PROPZ, { 0xff, 0xff, 0xff }, { 0x00, 0x00, 0x00 }, 0 }, ///< Alert +	{ PROPR, { 0xff, 0xff, 0xff }, { 0x00, 0x00, 0x00 }, 0 }, ///< Note +	{ PROPR, { 0xff, 0xff, 0xff }, { 0x00, 0x00, 0x00 }, 0 }, ///< BlockQuote +	{ PROPB, { 0xff, 0xff, 0xff }, { 0x00, 0x60, 0x00 }, 0 }, ///< Input +	{ MONOR, { 0xff, 0xff, 0xff }, { 0x00, 0x00, 0x00 }, 0 }, ///< User1 +	{ MONOR, { 0xff, 0xff, 0xff }, { 0x00, 0x00, 0x00 }, 0 }, ///< User2  };  WindowStyle G_STYLES[style_NUMSTYLES] = { -	{ MONOR,{ 0xff,0xff,0xff },{ 0x60,0x60,0x60 }, 0 }, ///< Normal -	{ MONOI,{ 0xff,0xff,0xff },{ 0x60,0x60,0x60 }, 0 }, ///< Emphasized -	{ MONOR,{ 0xff,0xff,0xff },{ 0x60,0x60,0x60 }, 0 }, ///< Preformatted -	{ MONOB,{ 0xff,0xff,0xff },{ 0x60,0x60,0x60 }, 0 }, ///< Header -	{ MONOB,{ 0xff,0xff,0xff },{ 0x60,0x60,0x60 }, 0 }, ///< Subheader -	{ MONOR,{ 0xff,0xff,0xff },{ 0x60,0x60,0x60 }, 0 }, ///< Alert -	{ MONOR,{ 0xff,0xff,0xff },{ 0x60,0x60,0x60 }, 0 }, ///< Note -	{ MONOR,{ 0xff,0xff,0xff },{ 0x60,0x60,0x60 }, 0 }, ///< BlockQuote -	{ MONOR,{ 0xff,0xff,0xff },{ 0x60,0x60,0x60 }, 0 }, ///< Input -	{ MONOR,{ 0xff,0xff,0xff },{ 0x60,0x60,0x60 }, 0 }, ///< User1 -	{ MONOR,{ 0xff,0xff,0xff },{ 0x60,0x60,0x60 }, 0 }, ///< User2 +	{ MONOR, { 0xff, 0xff, 0xff }, { 0x60, 0x60, 0x60 }, 0 }, ///< Normal +	{ MONOI, { 0xff, 0xff, 0xff }, { 0x60, 0x60, 0x60 }, 0 }, ///< Emphasized +	{ MONOR, { 0xff, 0xff, 0xff }, { 0x60, 0x60, 0x60 }, 0 }, ///< Preformatted +	{ MONOB, { 0xff, 0xff, 0xff }, { 0x60, 0x60, 0x60 }, 0 }, ///< Header +	{ MONOB, { 0xff, 0xff, 0xff }, { 0x60, 0x60, 0x60 }, 0 }, ///< Subheader +	{ MONOR, { 0xff, 0xff, 0xff }, { 0x60, 0x60, 0x60 }, 0 }, ///< Alert +	{ MONOR, { 0xff, 0xff, 0xff }, { 0x60, 0x60, 0x60 }, 0 }, ///< Note +	{ MONOR, { 0xff, 0xff, 0xff }, { 0x60, 0x60, 0x60 }, 0 }, ///< BlockQuote +	{ MONOR, { 0xff, 0xff, 0xff }, { 0x60, 0x60, 0x60 }, 0 }, ///< Input +	{ MONOR, { 0xff, 0xff, 0xff }, { 0x60, 0x60, 0x60 }, 0 }, ///< User1 +	{ MONOR, { 0xff, 0xff, 0xff }, { 0x60, 0x60, 0x60 }, 0 }, ///< User2  };  Conf *g_conf; @@ -122,7 +122,7 @@ Conf::Conf() {  	get("tmarginx", _tMarginX, 7);  	get("tmarginy", _tMarginY, 7);  	get("gamma", _gamma, 1.0); -	 +  	get("caretcolor", _caretColor);  	get("caretcolor", _caretSave);  	get("linkcolor", _linkColor, BLUE); @@ -235,9 +235,15 @@ void Conf::parseColor(const Common::String &str, byte *color) {  	char r[3], g[3], b[3];  	if (str.size() == 6) { -		r[0] = str[0]; r[1] = str[1]; r[2] = 0; -		g[0] = str[2]; g[1] = str[3]; g[2] = 0; -		b[0] = str[4]; b[1] = str[5]; b[2] = 0; +		r[0] = str[0]; +		r[1] = str[1]; +		r[2] = 0; +		g[0] = str[2]; +		g[1] = str[3]; +		g[2] = 0; +		b[0] = str[4]; +		b[1] = str[5]; +		b[2] = 0;  		color[0] = strtol(r, nullptr, 16);  		color[1] = strtol(g, nullptr, 16); diff --git a/engines/gargoyle/detection.cpp b/engines/gargoyle/detection.cpp index af7cfc6b34..4363c4607c 100644 --- a/engines/gargoyle/detection.cpp +++ b/engines/gargoyle/detection.cpp @@ -125,20 +125,20 @@ public:  bool GargoyleMetaEngine::hasFeature(MetaEngineFeature f) const {  	return -		(f == kSupportsListSaves) || -		(f == kSupportsLoadingDuringStartup) || -		(f == kSupportsDeleteSave) || -		(f == kSavesSupportMetaInfo) || -		(f == kSavesSupportCreationDate) || -		(f == kSavesSupportPlayTime) || -		(f == kSimpleSavesNames); +	    (f == kSupportsListSaves) || +	    (f == kSupportsLoadingDuringStartup) || +	    (f == kSupportsDeleteSave) || +	    (f == kSavesSupportMetaInfo) || +	    (f == kSavesSupportCreationDate) || +	    (f == kSavesSupportPlayTime) || +	    (f == kSimpleSavesNames);  }  bool Gargoyle::GargoyleEngine::hasFeature(EngineFeature f) const {  	return -		(f == kSupportsRTL) || -		(f == kSupportsLoadingDuringRuntime) || -		(f == kSupportsSavingDuringRuntime); +	    (f == kSupportsRTL) || +	    (f == kSupportsLoadingDuringRuntime) || +	    (f == kSupportsSavingDuringRuntime);  }  bool GargoyleMetaEngine::createInstance(OSystem *syst, Engine **engine, const ADGameDescription *desc) const { @@ -255,7 +255,7 @@ ADDetectedGames GargoyleMetaEngine::detectGame(const Common::FSNode &parent, con  }  #if PLUGIN_ENABLED_DYNAMIC(GARGOYLE) -	REGISTER_PLUGIN_DYNAMIC(Gargoyle, PLUGIN_TYPE_ENGINE, GargoyleMetaEngine); +REGISTER_PLUGIN_DYNAMIC(Gargoyle, PLUGIN_TYPE_ENGINE, GargoyleMetaEngine);  #else -	REGISTER_PLUGIN_STATIC(GARGOYLE, PLUGIN_TYPE_ENGINE, GargoyleMetaEngine); +REGISTER_PLUGIN_STATIC(GARGOYLE, PLUGIN_TYPE_ENGINE, GargoyleMetaEngine);  #endif diff --git a/engines/gargoyle/detection_tables.h b/engines/gargoyle/detection_tables.h index 780cfe284d..777d4db96b 100644 --- a/engines/gargoyle/detection_tables.h +++ b/engines/gargoyle/detection_tables.h @@ -21,7 +21,7 @@   */  namespace Gargoyle { -	 +  static const GargoyleGameDescription gameDescriptions[] = {  	{  		{ diff --git a/engines/gargoyle/events.cpp b/engines/gargoyle/events.cpp index 520b6f22e5..6c0cd71985 100644 --- a/engines/gargoyle/events.cpp +++ b/engines/gargoyle/events.cpp @@ -54,7 +54,7 @@ const byte ARROW[] = {  };  Events::Events() : _forceClick(false), _currentEvent(nullptr), _cursorId(CURSOR_NONE), -		_timerMilli(0), _timerTimeExpiry(0), _priorFrameTime(0), _frameCounter(0) { +	_timerMilli(0), _timerTimeExpiry(0), _priorFrameTime(0), _frameCounter(0) {  	initializeCursors();  } @@ -239,34 +239,85 @@ void Events::handleKeyDown(const Common::KeyState &ks) {  		return;  	switch (ks.keycode) { -	case Common::KEYCODE_RETURN: windows.inputHandleKey(keycode_Return); break; -	case Common::KEYCODE_BACKSPACE: windows.inputHandleKey(keycode_Delete); break; -	case Common::KEYCODE_DELETE: windows.inputHandleKey(keycode_Erase); break; -	case Common::KEYCODE_TAB: windows.inputHandleKey(keycode_Tab); break; -	case Common::KEYCODE_PAGEUP: windows.inputHandleKey(keycode_PageUp); break; -	case Common::KEYCODE_PAGEDOWN: windows.inputHandleKey(keycode_PageDown); break; -	case Common::KEYCODE_HOME: windows.inputHandleKey(keycode_Home); break; -	case Common::KEYCODE_END: windows.inputHandleKey(keycode_End); break; -	case Common::KEYCODE_LEFT: windows.inputHandleKey(keycode_Left); break; -	case Common::KEYCODE_RIGHT: windows.inputHandleKey(keycode_Right); break; -	case Common::KEYCODE_UP: windows.inputHandleKey(keycode_Up); break; -	case Common::KEYCODE_DOWN: windows.inputHandleKey(keycode_Down); break; -	case Common::KEYCODE_ESCAPE: windows.inputHandleKey(keycode_Escape); break; -	case Common::KEYCODE_F1: windows.inputHandleKey(keycode_Func1); break; -	case Common::KEYCODE_F2: windows.inputHandleKey(keycode_Func2); break; -	case Common::KEYCODE_F3: windows.inputHandleKey(keycode_Func3); break; -	case Common::KEYCODE_F4: windows.inputHandleKey(keycode_Func4); break; -	case Common::KEYCODE_F5: windows.inputHandleKey(keycode_Func5); break; -	case Common::KEYCODE_F6: windows.inputHandleKey(keycode_Func6); break; -	case Common::KEYCODE_F7: windows.inputHandleKey(keycode_Func7); break; -	case Common::KEYCODE_F8: windows.inputHandleKey(keycode_Func8); break; -	case Common::KEYCODE_F9: windows.inputHandleKey(keycode_Func9); break; -	case Common::KEYCODE_F10: windows.inputHandleKey(keycode_Func10); break; -	case Common::KEYCODE_F11: windows.inputHandleKey(keycode_Func11); break; -	case Common::KEYCODE_F12: windows.inputHandleKey(keycode_Func12); break; +	case Common::KEYCODE_RETURN: +		windows.inputHandleKey(keycode_Return); +		break; +	case Common::KEYCODE_BACKSPACE: +		windows.inputHandleKey(keycode_Delete); +		break; +	case Common::KEYCODE_DELETE: +		windows.inputHandleKey(keycode_Erase); +		break; +	case Common::KEYCODE_TAB: +		windows.inputHandleKey(keycode_Tab); +		break; +	case Common::KEYCODE_PAGEUP: +		windows.inputHandleKey(keycode_PageUp); +		break; +	case Common::KEYCODE_PAGEDOWN: +		windows.inputHandleKey(keycode_PageDown); +		break; +	case Common::KEYCODE_HOME: +		windows.inputHandleKey(keycode_Home); +		break; +	case Common::KEYCODE_END: +		windows.inputHandleKey(keycode_End); +		break; +	case Common::KEYCODE_LEFT: +		windows.inputHandleKey(keycode_Left); +		break; +	case Common::KEYCODE_RIGHT: +		windows.inputHandleKey(keycode_Right); +		break; +	case Common::KEYCODE_UP: +		windows.inputHandleKey(keycode_Up); +		break; +	case Common::KEYCODE_DOWN: +		windows.inputHandleKey(keycode_Down); +		break; +	case Common::KEYCODE_ESCAPE: +		windows.inputHandleKey(keycode_Escape); +		break; +	case Common::KEYCODE_F1: +		windows.inputHandleKey(keycode_Func1); +		break; +	case Common::KEYCODE_F2: +		windows.inputHandleKey(keycode_Func2); +		break; +	case Common::KEYCODE_F3: +		windows.inputHandleKey(keycode_Func3); +		break; +	case Common::KEYCODE_F4: +		windows.inputHandleKey(keycode_Func4); +		break; +	case Common::KEYCODE_F5: +		windows.inputHandleKey(keycode_Func5); +		break; +	case Common::KEYCODE_F6: +		windows.inputHandleKey(keycode_Func6); +		break; +	case Common::KEYCODE_F7: +		windows.inputHandleKey(keycode_Func7); +		break; +	case Common::KEYCODE_F8: +		windows.inputHandleKey(keycode_Func8); +		break; +	case Common::KEYCODE_F9: +		windows.inputHandleKey(keycode_Func9); +		break; +	case Common::KEYCODE_F10: +		windows.inputHandleKey(keycode_Func10); +		break; +	case Common::KEYCODE_F11: +		windows.inputHandleKey(keycode_Func11); +		break; +	case Common::KEYCODE_F12: +		windows.inputHandleKey(keycode_Func12); +		break;  	default: -		windows.inputHandleKey(ks.ascii); break; -	break; +		windows.inputHandleKey(ks.ascii); +		break; +		break;  	}  } @@ -317,8 +368,8 @@ void Events::waitForPress() {  		g_system->delayMillis(10);  		checkForNextFrameCounter();  	} while (!g_vm->shouldQuit() && e.type != Common::EVENT_KEYDOWN && -		e.type != Common::EVENT_LBUTTONDOWN && e.type != Common::EVENT_RBUTTONDOWN && -		e.type != Common::EVENT_MBUTTONDOWN); +	         e.type != Common::EVENT_LBUTTONDOWN && e.type != Common::EVENT_RBUTTONDOWN && +	         e.type != Common::EVENT_MBUTTONDOWN);  }  void Events::setCursor(CursorId cursorId) { diff --git a/engines/gargoyle/events.h b/engines/gargoyle/events.h index f91c91b242..b69cd04c34 100644 --- a/engines/gargoyle/events.h +++ b/engines/gargoyle/events.h @@ -50,7 +50,7 @@ enum EvType {  	evtype_VolumeNotify = 9,  	// ScummVM custom events -	evtype_Quit			= 99 +	evtype_Quit         = 99  };  /** @@ -115,7 +115,9 @@ struct Event {  	/**  	 * Constructor  	 */ -	Event() { clear(); } +	Event() { +		clear(); +	}  	/**  	 * Constructor @@ -139,7 +141,9 @@ struct Event {  	/**  	 * Boolean cast to allow checking whether event is filled out  	 */ -	operator bool() const { return type != evtype_None; } +	operator bool() const { +		return type != evtype_None; +	}  };  typedef Event event_t; @@ -161,16 +165,16 @@ class Events {  		Common::Point _hotspot;  	};  private: -	EventQueue _eventsPolled;		///< User generated events -	EventQueue _eventsLogged;		///< Custom events generated by game code -	Event *_currentEvent;			///< Event pointer passed during event retrieval -	uint32 _priorFrameTime;			///< Time of prior game frame -	uint32 _frameCounter;			///< Frame counter -	bool _redraw;					///< Screen needed redrawing -	CursorId _cursorId;				///< Current cursor Id -	Surface _cursors[4];			///< Cursor pixel data -	uint _timerMilli;				///< Time in milliseconds between timer events -	uint _timerTimeExpiry;			///< When to trigger next timer event +	EventQueue _eventsPolled;       ///< User generated events +	EventQueue _eventsLogged;       ///< Custom events generated by game code +	Event *_currentEvent;           ///< Event pointer passed during event retrieval +	uint32 _priorFrameTime;         ///< Time of prior game frame +	uint32 _frameCounter;           ///< Frame counter +	bool _redraw;                   ///< Screen needed redrawing +	CursorId _cursorId;             ///< Current cursor Id +	Surface _cursors[4];            ///< Cursor pixel data +	uint _timerMilli;               ///< Time in milliseconds between timer events +	uint _timerTimeExpiry;          ///< When to trigger next timer event  private:  	/**  	 * Initialize the cursor graphics @@ -247,17 +251,23 @@ public:  	/**  	 * Get the total number of frames played  	 */ -	uint32 getTotalPlayTicks() const { return _frameCounter; } +	uint32 getTotalPlayTicks() const { +		return _frameCounter; +	}  	/**  	 * Set the total number of frames played  	 */ -	void Events::setTotalPlayTicks(uint frames) { _frameCounter = frames; } +	void Events::setTotalPlayTicks(uint frames) { +		_frameCounter = frames; +	}  	/**  	 * Flags the screen for redrawing  	 */ -	void redraw() { _redraw = true; } +	void redraw() { +		_redraw = true; +	}  	/**  	 * Sets the current cursor @@ -266,7 +276,7 @@ public:  	/**  	 * Set a timer interval -	 * @param	milli		Time in millieseconds for intervals, or 0 for off +	 * @param   milli       Time in millieseconds for intervals, or 0 for off  	 */  	void setTimerInterval(uint milli); diff --git a/engines/gargoyle/fonts.h b/engines/gargoyle/fonts.h index 1437bd8152..737618e41d 100644 --- a/engines/gargoyle/fonts.h +++ b/engines/gargoyle/fonts.h @@ -76,39 +76,39 @@ public:  	/**  	 * Draws a string using the specified font at the given co-ordinates -	 * @param pos		Position for the bottom-left corner the text will be drawn with -	 * @param fontIdx	Which font to use -	 * @param rgb		RGB tuplet specifying the text color -	 * @param text		The text to draw -	 * @param spw		?? +	 * @param pos       Position for the bottom-left corner the text will be drawn with +	 * @param fontIdx   Which font to use +	 * @param rgb       RGB tuplet specifying the text color +	 * @param text      The text to draw +	 * @param spw       ??  	 */  	int drawString(const Point &pos, int fontIdx, const byte *rgb, const Common::String &text, int spw = 0);  	/**  	 * Draws a unicode string using the specified font at the given co-ordinates -	 * @param pos		Position for the bottom-left corner the text will be drawn with -	 * @param fontIdx	Which font to use -	 * @param rgb		RGB tuplet specifying the text color -	 * @param text		The text to draw -	 * @param spw		?? +	 * @param pos       Position for the bottom-left corner the text will be drawn with +	 * @param fontIdx   Which font to use +	 * @param rgb       RGB tuplet specifying the text color +	 * @param text      The text to draw +	 * @param spw       ??  	 */  	int drawStringUni(const Point &pos, int fontIdx, const byte *rgb, const Common::U32String &text, int spw = 0);  	/**  	 * Get the width in pixels of a string  	 * @param fontIdx   Which font to use -	 * @param text		Text to get the width of -	 * @param spw		Delta X -	 * @returns			Width of string multiplied by GLI_SUBPIX +	 * @param text      Text to get the width of +	 * @param spw       Delta X +	 * @returns         Width of string multiplied by GLI_SUBPIX  	 */  	size_t stringWidth(int fontIdx, const Common::String &text, int spw = 0);  	/**  	 * Get the width in pixels of a unicode string  	 * @param fontIdx   Which font to use -	 * @param text		Text to get the width of -	 * @param spw		Delta X -	 * @returns			Width of string multiplied by GLI_SUBPIX +	 * @param text      Text to get the width of +	 * @param spw       Delta X +	 * @returns         Width of string multiplied by GLI_SUBPIX  	 */  	size_t stringWidthUni(int fontIdx, const Common::U32String &text, int spw = 0);  }; diff --git a/engines/gargoyle/gargoyle.cpp b/engines/gargoyle/gargoyle.cpp index 9c00937185..021323cd6a 100644 --- a/engines/gargoyle/gargoyle.cpp +++ b/engines/gargoyle/gargoyle.cpp @@ -42,10 +42,10 @@ namespace Gargoyle {  GargoyleEngine *g_vm;  GargoyleEngine::GargoyleEngine(OSystem *syst, const GargoyleGameDescription *gameDesc) : -		_gameDescription(gameDesc), Engine(syst), _random("Gargoyle"), _clipboard(nullptr), -		_conf(nullptr), _events(nullptr), _picList(nullptr), _screen(nullptr), -		_selection(nullptr), _windows(nullptr), _copySelect(false), _terminated(false), -		gli_unregister_obj(nullptr), gli_register_arr(nullptr), gli_unregister_arr(nullptr) { +	_gameDescription(gameDesc), Engine(syst), _random("Gargoyle"), _clipboard(nullptr), +	_conf(nullptr), _events(nullptr), _picList(nullptr), _screen(nullptr), +	_selection(nullptr), _windows(nullptr), _copySelect(false), _terminated(false), +	gli_unregister_obj(nullptr), gli_register_arr(nullptr), gli_unregister_arr(nullptr) {  	g_vm = this;  } diff --git a/engines/gargoyle/gargoyle.h b/engines/gargoyle/gargoyle.h index 793a353d08..e131be17d2 100644 --- a/engines/gargoyle/gargoyle.h +++ b/engines/gargoyle/gargoyle.h @@ -62,8 +62,8 @@ enum InterpreterType {  enum GargoyleDebugChannels {  	kDebugCore      = 1 << 0, -	kDebugScripts	= 1 << 1, -	kDebugGraphics	= 1 << 2, +	kDebugScripts   = 1 << 1, +	kDebugGraphics  = 1 << 2,  	kDebugSound     = 1 << 3  }; @@ -125,12 +125,16 @@ public:  	/**  	 * Returns true if a savegame can be loaded  	 */ -	virtual bool canLoadGameStateCurrently() override { return true; } +	virtual bool canLoadGameStateCurrently() override { +		return true; +	}  	/**  	 * Returns true if the game can be saved  	 */ -	virtual bool canSaveGameStateCurrently() override { return true; } +	virtual bool canSaveGameStateCurrently() override { +		return true; +	}  	/**  	 * Returns the bitset of game features @@ -165,7 +169,9 @@ public:  	/**  	 * Return the game engine's target name  	 */ -	const Common::String &getTargetName() const { return _targetName; } +	const Common::String &getTargetName() const { +		return _targetName; +	}  	/**  	 * Display a message in a GUI dialog diff --git a/engines/gargoyle/glk.cpp b/engines/gargoyle/glk.cpp index 25ce3cc45e..58293f7902 100644 --- a/engines/gargoyle/glk.cpp +++ b/engines/gargoyle/glk.cpp @@ -34,8 +34,8 @@  namespace Gargoyle { -Glk::Glk(OSystem *syst, const GargoyleGameDescription *gameDesc) :  -		GargoyleEngine(syst, gameDesc), _gliFirstEvent(false) { +Glk::Glk(OSystem *syst, const GargoyleGameDescription *gameDesc) : +	GargoyleEngine(syst, gameDesc), _gliFirstEvent(false) {  	// Set uppercase/lowercase tables  	int ix, res;  	for (ix = 0; ix < 256; ix++) { @@ -59,7 +59,7 @@ Glk::Glk(OSystem *syst, const GargoyleGameDescription *gameDesc) :  }  void Glk::glk_exit(void) { - 	glk_put_string("[ press any key to exit ]"); +	glk_put_string("[ press any key to exit ]");  	_events->waitForPress();  	quitGame(); @@ -194,7 +194,7 @@ void Glk::glk_window_set_arrangement(winid_t win, glui32 method, glui32 size, wi  }  void Glk::glk_window_get_arrangement(winid_t win, glui32 *method, -		glui32 *size, winid_t *keyWin) { +                                     glui32 *size, winid_t *keyWin) {  	if (win) {  		win->getArrangement(method, size, keyWin);  	} else { @@ -586,30 +586,30 @@ bool Glk::glk_style_measure(winid_t win, glui32 style, glui32 hint, glui32 *resu  	case stylehint_Weight:  		*result = -			(styles[style].font == PROPB || styles[style].font == PROPZ || -				styles[style].font == MONOB || styles[style].font == MONOZ); +		    (styles[style].font == PROPB || styles[style].font == PROPZ || +		     styles[style].font == MONOB || styles[style].font == MONOZ);  		break;  	case stylehint_Oblique:  		*result = -			(styles[style].font == PROPI || styles[style].font == PROPZ || -				styles[style].font == MONOI || styles[style].font == MONOZ); +		    (styles[style].font == PROPI || styles[style].font == PROPZ || +		     styles[style].font == MONOI || styles[style].font == MONOZ);  		break;  	case stylehint_Proportional:  		*result = -			(styles[style].font == PROPR || styles[style].font == PROPI || -				styles[style].font == PROPB || styles[style].font == PROPZ); +		    (styles[style].font == PROPR || styles[style].font == PROPI || +		     styles[style].font == PROPB || styles[style].font == PROPZ);  		break;  	case stylehint_TextColor:  		*result = -			(styles[style].fg[0] << 16) | (styles[style].fg[1] << 8) | (styles[style].fg[2]); +		    (styles[style].fg[0] << 16) | (styles[style].fg[1] << 8) | (styles[style].fg[2]);  		break;  	case stylehint_BackColor:  		*result = -			(styles[style].bg[0] << 16) | (styles[style].bg[1] << 8) | (styles[style].bg[2]); +		    (styles[style].bg[0] << 16) | (styles[style].bg[1] << 8) | (styles[style].bg[2]);  		break;  	case stylehint_ReverseColor: @@ -681,7 +681,7 @@ void Glk::glk_select(event_t *event) {  		_windows->inputGuessFocus();  		_gliFirstEvent = true;  	} -	 +  	_events->getEvent(event, false);  } @@ -702,7 +702,7 @@ void Glk::glk_request_line_event(winid_t win, char *buf, glui32 maxlen, glui32 i  	if (!win) {  		warning("request_line_event: invalid ref");  	} else if (win->_charRequest || win->_lineRequest || win->_charRequestUni -			|| win->_lineRequestUni) { +	           || win->_lineRequestUni) {  		warning("request_line_event: window already has keyboard request");  	} else {  		win->requestLineEvent(buf, maxlen, initlen); @@ -713,7 +713,7 @@ void Glk::glk_request_char_event(winid_t win) {  	if (!win) {  		warning("request_char_event: invalid ref");  	} else if (win->_charRequest || win->_lineRequest || win->_charRequestUni -			|| win->_lineRequestUni) { +	           || win->_lineRequestUni) {  		warning("request_char_event: window already has keyboard request");  	} else {  		win->requestCharEvent(); @@ -777,7 +777,7 @@ glui32 Glk::glk_buffer_to_upper_case_uni(glui32 *buf, glui32 len, glui32 numchar  }  glui32 Glk::glk_buffer_to_title_case_uni(glui32 *buf, glui32 len, -	glui32 numchars, glui32 lowerrest) { +        glui32 numchars, glui32 lowerrest) {  	return bufferChangeCase(buf, len, numchars, CASE_TITLE, COND_LINESTART, lowerrest);  } @@ -840,7 +840,7 @@ glui32 Glk::glk_get_line_stream_uni(strid_t str, glui32 *buf, glui32 len) {  		return str->getLineUni(buf, len);  	} else  {  		warning("get_line_stream_uni: invalid ref"); -		return (glui32 )-1; +		return (glui32) - 1;  	}  } @@ -856,7 +856,7 @@ void Glk::glk_request_char_event_uni(winid_t win) {  	if (!win) {  		warning("request_char_event_uni: invalid ref");  	} else if (win->_charRequest || win->_lineRequest || win->_charRequestUni -			|| win->_lineRequestUni) { +	           || win->_lineRequestUni) {  		warning("request_char_event_uni: window already has keyboard request");  	} else {  		win->requestCharEvent(); @@ -867,7 +867,7 @@ void Glk::glk_request_line_event_uni(winid_t win, glui32 *buf, glui32 maxlen, gl  	if (!win) {  		warning("request_line_event_uni: invalid ref");  	} else if (win->_charRequest || win->_lineRequest || win->_charRequestUni -			|| win->_lineRequestUni) { +	           || win->_lineRequestUni) {  		warning("request_line_event_uni: window already has keyboard request");  	} else {  		win->requestLineEventUni(buf, maxlen, initlen); @@ -875,7 +875,7 @@ void Glk::glk_request_line_event_uni(winid_t win, glui32 *buf, glui32 maxlen, gl  }  glui32 Glk::glk_buffer_canon_decompose_uni(glui32 *buf, glui32 len, -	glui32 numchars) { +        glui32 numchars) {  	// TODO  	return 0;  } @@ -901,7 +901,7 @@ glui32 Glk::glk_image_draw(winid_t win, glui32 image, glsi32 val1, glsi32 val2)  }  glui32 Glk::glk_image_draw_scaled(winid_t win, glui32 image, glsi32 val1, glsi32 val2, -		glui32 width, glui32 height) { +                                  glui32 width, glui32 height) {  	if (!win) {  		warning("image_draw_scaled: invalid ref");  	} else if (g_conf->_graphics) { @@ -950,7 +950,7 @@ void Glk::glk_window_erase_rect(winid_t win, glsi32 left, glsi32 top, glui32 wid  }  void Glk::glk_window_fill_rect(winid_t win, glui32 color, glsi32 left, glsi32 top, -		glui32 width, glui32 height) { +                               glui32 width, glui32 height) {  	if (!win) {  		warning("window_fill_rect: invalid ref");  	} else { @@ -1013,7 +1013,7 @@ schanid_t Glk::glk_schannel_create_ext(glui32 rock, glui32 volume) {  }  glui32 Glk::glk_schannel_play_multi(schanid_t *chanarray, glui32 chancount, -	glui32 *sndarray, glui32 soundcount, glui32 notify) { +                                    glui32 *sndarray, glui32 soundcount, glui32 notify) {  	// TODO  	return 0;  } @@ -1027,7 +1027,7 @@ void Glk::glk_schannel_unpause(schanid_t chan) {  }  void Glk::glk_schannel_set_volume_ext(schanid_t chan, glui32 vol, -	glui32 duration, glui32 notify) { +                                      glui32 duration, glui32 notify) {  	// TODO  } diff --git a/engines/gargoyle/glk.h b/engines/gargoyle/glk.h index eb3e68d9a6..b14546c684 100644 --- a/engines/gargoyle/glk.h +++ b/engines/gargoyle/glk.h @@ -63,14 +63,14 @@ public:  	 * Open a new window  	 */  	winid_t glk_window_open(winid_t split, glui32 method, glui32 size, -		glui32 wintype, glui32 rock = 0) const; +	                        glui32 wintype, glui32 rock = 0) const;  	void glk_window_close(winid_t win, stream_result_t *result);  	void glk_window_get_size(winid_t win, glui32 *width, glui32 *height);  	void glk_window_set_arrangement(winid_t win, glui32 method, -		glui32 size, winid_t keyWin); +	                                glui32 size, winid_t keyWin);  	void glk_window_get_arrangement(winid_t win, glui32 *method, -		glui32 *size, winid_t *keyWin); +	                                glui32 *size, winid_t *keyWin);  	winid_t glk_window_iterate(winid_t win, glui32 *rock);  	glui32 glk_window_get_rock(winid_t win);  	glui32 glk_window_get_type(winid_t win); @@ -108,7 +108,7 @@ public:  	glui32 glk_get_buffer_stream(strid_t str, char *buf, glui32 len);  	void glk_stylehint_set(glui32 wintype, glui32 styl, glui32 hint, -		glsi32 val); +	                       glsi32 val);  	void glk_stylehint_clear(glui32 wintype, glui32 style, glui32 hint);  	glui32 glk_style_distinguish(winid_t win, glui32 style1, glui32 style2);  	bool glk_style_measure(winid_t win, glui32 style, glui32 hint, glui32 *result); @@ -129,7 +129,7 @@ public:  	void glk_request_timer_events(glui32 millisecs);  	void glk_request_line_event(winid_t win, char *buf, glui32 maxlen, -		glui32 initlen); +	                            glui32 initlen);  	void glk_request_char_event(winid_t win);  	void glk_request_mouse_event(winid_t win); @@ -143,19 +143,19 @@ public:  #ifdef GLK_MODULE_LINE_TERMINATORS  	void glk_set_terminators_line_event(winid_t win, glui32 *keycodes, -		glui32 count); +	                                    glui32 count);  #endif /* GLK_MODULE_LINE_TERMINATORS */ -	/** \addtogroup Unicode  +	/** \addtogroup Unicode  	 *  @{  	 */  	glui32 glk_buffer_to_lower_case_uni(glui32 *buf, glui32 len, -		glui32 numchars); +	                                    glui32 numchars);  	glui32 glk_buffer_to_upper_case_uni(glui32 *buf, glui32 len, -		glui32 numchars); +	                                    glui32 numchars);  	glui32 glk_buffer_to_title_case_uni(glui32 *buf, glui32 len, -		glui32 numchars, glui32 lowerrest); +	                                    glui32 numchars, glui32 lowerrest);  	void glk_put_char_uni(glui32 ch);  	void glk_put_string_uni(glui32 *s); @@ -173,16 +173,16 @@ public:  	void glk_request_char_event_uni(winid_t win);  	void glk_request_line_event_uni(winid_t win, glui32 *buf, -		glui32 maxlen, glui32 initlen); +	                                glui32 maxlen, glui32 initlen);  	/** @}*/  #ifdef GLK_MODULE_UNICODE_NORM  	glui32 glk_buffer_canon_decompose_uni(glui32 *buf, glui32 len, -		glui32 numchars); +	                                      glui32 numchars);  	glui32 glk_buffer_canon_normalize_uni(glui32 *buf, glui32 len, -		glui32 numchars); +	                                      glui32 numchars);  #endif /* GLK_MODULE_UNICODE_NORM */ @@ -190,15 +190,15 @@ public:  	glui32 glk_image_draw(winid_t win, glui32 image, glsi32 val1, glsi32 val2);  	glui32 glk_image_draw_scaled(winid_t win, glui32 image, -		glsi32 val1, glsi32 val2, glui32 width, glui32 height); +	                             glsi32 val1, glsi32 val2, glui32 width, glui32 height);  	glui32 glk_image_get_info(glui32 image, glui32 *width, glui32 *height);  	void glk_window_flow_break(winid_t win);  	void glk_window_erase_rect(winid_t win, -		glsi32 left, glsi32 top, glui32 width, glui32 height); +	                           glsi32 left, glsi32 top, glui32 width, glui32 height);  	void glk_window_fill_rect(winid_t win, glui32 color, -		glsi32 left, glsi32 top, glui32 width, glui32 height); +	                          glsi32 left, glsi32 top, glui32 width, glui32 height);  	void glk_window_set_background_color(winid_t win, glui32 color);  #endif /* GLK_MODULE_IMAGE */ @@ -212,7 +212,7 @@ public:  	glui32 glk_schannel_play(schanid_t chan, glui32 snd);  	glui32 glk_schannel_play_ext(schanid_t chan, glui32 snd, glui32 repeats, -		glui32 notify); +	                             glui32 notify);  	void glk_schannel_stop(schanid_t chan);  	void glk_schannel_set_volume(schanid_t chan, glui32 vol); @@ -224,11 +224,11 @@ public:  	schanid_t glk_schannel_create_ext(glui32 rock, glui32 volume);  	glui32 glk_schannel_play_multi(schanid_t *chanarray, glui32 chancount, -		glui32 *sndarray, glui32 soundcount, glui32 notify); +	                               glui32 *sndarray, glui32 soundcount, glui32 notify);  	void glk_schannel_pause(schanid_t chan);  	void glk_schannel_unpause(schanid_t chan);  	void glk_schannel_set_volume_ext(schanid_t chan, glui32 vol, -		glui32 duration, glui32 notify); +	                                 glui32 duration, glui32 notify);  #endif /* GLK_MODULE_SOUND2 */  #endif /* GLK_MODULE_SOUND */ @@ -258,7 +258,7 @@ public:  #endif /* GLK_MODULE_DATETIME */  	/* XXX non-official Glk functions that may or may not exist */ -	#define GARGLK 1 +#define GARGLK 1  	const char *garglk_fileref_get_name(frefid_t fref) const; diff --git a/engines/gargoyle/glk_types.h b/engines/gargoyle/glk_types.h index 6dd8504326..7258e693c4 100644 --- a/engines/gargoyle/glk_types.h +++ b/engines/gargoyle/glk_types.h @@ -169,7 +169,7 @@ enum StyleHint {   * These constants define the classes of opaque objects. It's a bit ugly to put   * them in this header file, since more classes may be added in the future.   * But if you find yourself stuck with an obsolete version of this file, - * adding new class definitions will be easy enough -- they will be numbered  + * adding new class definitions will be easy enough -- they will be numbered   * sequentially, and the numeric constants can be found in the Glk specification.   */  enum giDisp { @@ -180,10 +180,10 @@ enum giDisp {  };  enum zcolor { -	zcolor_Transparent = (uint32)-4, -	zcolor_Cursor      = (uint32)-3, -	zcolor_Current     = (uint32)-2, -	zcolor_Default     = (uint32)-1 +	zcolor_Transparent = (uint32) - 4, +	zcolor_Cursor      = (uint32) - 3, +	zcolor_Current     = (uint32) - 2, +	zcolor_Default     = (uint32) - 1  };  #ifdef GLK_MODULE_IMAGE diff --git a/engines/gargoyle/scott/scott.cpp b/engines/gargoyle/scott/scott.cpp index 8728cdb46d..329cfb334e 100644 --- a/engines/gargoyle/scott/scott.cpp +++ b/engines/gargoyle/scott/scott.cpp @@ -27,9 +27,9 @@ namespace Gargoyle {  namespace Scott {  Scott::Scott(OSystem *syst, const GargoyleGameDescription *gameDesc) : Glk(syst, gameDesc), -		Items(nullptr), Rooms(nullptr), Verbs(nullptr), Nouns(nullptr), Messages(nullptr), -		Actions(nullptr), CurrentCounter(0), SavedRoom(0), Options(0), Width(0), TopHeight(0), -		split_screen(true), Bottom(0), Top(0), BitFlags(0) { +	Items(nullptr), Rooms(nullptr), Verbs(nullptr), Nouns(nullptr), Messages(nullptr), +	Actions(nullptr), CurrentCounter(0), SavedRoom(0), Options(0), Width(0), TopHeight(0), +	split_screen(true), Bottom(0), Top(0), BitFlags(0) {  	Common::fill(&NounText[0], &NounText[16], '\0');  	Common::fill(&Counters[0], &Counters[16], 0);  	Common::fill(&RoomSaved[0], &RoomSaved[16], 0); @@ -107,19 +107,19 @@ Distributed under the GNU software license\n\n");  			if (GameHeader.LightTime < 1) {  				BitFlags |= (1 << LIGHTOUTBIT);  				if (Items[LIGHT_SOURCE].Location == CARRIED || -					Items[LIGHT_SOURCE].Location == MyLoc) { -					if (Options&SCOTTLIGHT) +				        Items[LIGHT_SOURCE].Location == MyLoc) { +					if (Options & SCOTTLIGHT)  						output("Light has run out! ");  					else  						output("Your light has run out. ");  				} -				if (Options&PREHISTORIC_LAMP) +				if (Options & PREHISTORIC_LAMP)  					Items[LIGHT_SOURCE].Location = DESTROYED;  			} else if (GameHeader.LightTime < 25) {  				if (Items[LIGHT_SOURCE].Location == CARRIED || -					Items[LIGHT_SOURCE].Location == MyLoc) { +				        Items[LIGHT_SOURCE].Location == MyLoc) { -					if (Options&SCOTTLIGHT) { +					if (Options & SCOTTLIGHT) {  						output("Light runs out in ");  						outputNumber(GameHeader.LightTime);  						output(" turns. "); @@ -208,7 +208,7 @@ int Scott::countCarried(void) {  const char *Scott::mapSynonym(const char *word) {  	int n = 1;  	const char *tp; -	static char lastword[16];	// Last non synonym +	static char lastword[16];   // Last non synonym  	while (n <= GameHeader.NumWords) {  		tp = Nouns[n];  		if (*tp == '*') @@ -231,7 +231,7 @@ int Scott::matchUpItem(const char *text, int loc) {  	while (ct <= GameHeader.NumItems) {  		if (Items[ct].AutoGet && Items[ct].Location == loc && -			xstrncasecmp(Items[ct].AutoGet, word, GameHeader.WordLength) == 0) +		        xstrncasecmp(Items[ct].AutoGet, word, GameHeader.WordLength) == 0)  			return ct;  		ct++;  	} @@ -293,27 +293,27 @@ void Scott::loadDatabase(Common::SeekableReadStream *f, bool loud) {  	Action *ap;  	Room *rp;  	Item *ip; -	 +  	// Load the header  	readInts(f, 12, &unused, &ni, &na, &nw, &nr, &mc, &pr, &tr, &wl, <, &mn, &trm);  	GameHeader.NumItems = ni; -	Items = (Item *)memAlloc(sizeof(Item)*(ni + 1)); +	Items = (Item *)memAlloc(sizeof(Item) * (ni + 1));  	GameHeader.NumActions = na; -	Actions = (Action *)memAlloc(sizeof(Action)*(na + 1)); +	Actions = (Action *)memAlloc(sizeof(Action) * (na + 1));  	GameHeader.NumWords = nw;  	GameHeader.WordLength = wl; -	Verbs = (const char **)memAlloc(sizeof(char *)*(nw + 1)); -	Nouns = (const char **)memAlloc(sizeof(char *)*(nw + 1)); +	Verbs = (const char **)memAlloc(sizeof(char *) * (nw + 1)); +	Nouns = (const char **)memAlloc(sizeof(char *) * (nw + 1));  	GameHeader.NumRooms = nr; -	Rooms = (Room *)memAlloc(sizeof(Room)*(nr + 1)); +	Rooms = (Room *)memAlloc(sizeof(Room) * (nr + 1));  	GameHeader.MaxCarry = mc;  	GameHeader.PlayerRoom = pr;  	GameHeader.Treasures = tr;  	GameHeader.LightTime = lt;  	LightRefill = lt;  	GameHeader.NumMessages = mn; -	Messages = (const char **)memAlloc(sizeof(char *)*(mn + 1)); +	Messages = (const char **)memAlloc(sizeof(char *) * (mn + 1));  	GameHeader.TreasureRoom = trm;  	// Load the actions @@ -323,14 +323,14 @@ void Scott::loadDatabase(Common::SeekableReadStream *f, bool loud) {  		debug("Reading %d actions.", na);  	while (ct < na + 1) {  		readInts(f, 8, -			&ap->Vocab, -			&ap->Condition[0], -			&ap->Condition[1], -			&ap->Condition[2], -			&ap->Condition[3], -			&ap->Condition[4], -			&ap->action[0], -			&ap->action[1]); +		         &ap->Vocab, +		         &ap->Condition[0], +		         &ap->Condition[1], +		         &ap->Condition[2], +		         &ap->Condition[3], +		         &ap->Condition[4], +		         &ap->action[0], +		         &ap->action[1]);  		ap++;  		ct++;  	} @@ -338,7 +338,7 @@ void Scott::loadDatabase(Common::SeekableReadStream *f, bool loud) {  	ct = 0;  	if (loud)  		debug("Reading %d word pairs.", nw); -	while (ct<nw + 1) { +	while (ct < nw + 1) {  		Verbs[ct] = readString(f);  		Nouns[ct] = readString(f);  		ct++; @@ -347,11 +347,11 @@ void Scott::loadDatabase(Common::SeekableReadStream *f, bool loud) {  	rp = Rooms;  	if (loud)  		debug("Reading %d rooms.", nr); -	while (ct<nr + 1) { +	while (ct < nr + 1) {  		readInts(f, 6, -				&rp->Exits[0], &rp->Exits[1], &rp->Exits[2], -				&rp->Exits[3], &rp->Exits[4], &rp->Exits[5]); -	 +		         &rp->Exits[0], &rp->Exits[1], &rp->Exits[2], +		         &rp->Exits[3], &rp->Exits[4], &rp->Exits[5]); +  		rp->Text = readString(f);  		ct++;  		rp++; @@ -360,7 +360,7 @@ void Scott::loadDatabase(Common::SeekableReadStream *f, bool loud) {  	ct = 0;  	if (loud)  		debug("Reading %d messages.", mn); -	while (ct<mn + 1) { +	while (ct < mn + 1) {  		Messages[ct] = readString(f);  		ct++;  	} @@ -389,7 +389,7 @@ void Scott::loadDatabase(Common::SeekableReadStream *f, bool loud) {  	}  	ct = 0;  	// Discard Comment Strings -	while (ct<na + 1) { +	while (ct < na + 1) {  		free(readString(f));  		ct++;  	} @@ -420,9 +420,9 @@ void Scott::look(void) {  	if (split_screen)  		glk_window_clear(Top); -	if ((BitFlags&(1 << DARKBIT)) && Items[LIGHT_SOURCE].Location != CARRIED -		&& Items[LIGHT_SOURCE].Location != MyLoc) { -		if (Options&YOUARE) +	if ((BitFlags & (1 << DARKBIT)) && Items[LIGHT_SOURCE].Location != CARRIED +	        && Items[LIGHT_SOURCE].Location != MyLoc) { +		if (Options & YOUARE)  			display(Top, "You can't see. It is too dark!\n");  		else  			display(Top, "I can't see. It is too dark!\n"); @@ -434,7 +434,7 @@ void Scott::look(void) {  	if (*r->Text == '*')  		display(Top, "%s\n", r->Text + 1);  	else { -		if (Options&YOUARE) +		if (Options & YOUARE)  			display(Top, "You are in a %s\n", r->Text);  		else  			display(Top, "I'm in a %s\n", r->Text); @@ -443,9 +443,8 @@ void Scott::look(void) {  	ct = 0;  	f = 0;  	display(Top, "\nObvious exits: "); -	while (ct<6) { -		if (r->Exits[ct] != 0) -		{ +	while (ct < 6) { +		if (r->Exits[ct] != 0) {  			if (f == 0)  				f = 1;  			else @@ -532,7 +531,7 @@ void Scott::lineInput(char *buf, size_t n) {  void Scott::saveGame(void) {  	frefid_t ref = glk_fileref_create_by_prompt(fileusage_TextMode | fileusage_SavedGame, -		filemode_Write, 0); +	               filemode_Write, 0);  	if (ref == nullptr)  		return; @@ -557,8 +556,8 @@ Common::Error Scott::saveGameState(int slot, const Common::String &desc) {  	}  	msg = Common::String::format("%lu %d %hd %d %d %hd\n", -		BitFlags, (BitFlags&(1 << DARKBIT)) ? 1 : 0, -		MyLoc, CurrentCounter, SavedRoom, GameHeader.LightTime); +	                             BitFlags, (BitFlags & (1 << DARKBIT)) ? 1 : 0, +	                             MyLoc, CurrentCounter, SavedRoom, GameHeader.LightTime);  	glk_put_string_stream(file, msg.c_str());  	for (int ct = 0; ct <= GameHeader.NumItems; ct++) { @@ -574,7 +573,7 @@ Common::Error Scott::saveGameState(int slot, const Common::String &desc) {  void Scott::loadGame(void) {  	frefid_t ref = glk_fileref_create_by_prompt(fileusage_TextMode | fileusage_SavedGame, -		filemode_Read, 0); +	               filemode_Read, 0);  	if (ref == nullptr)  		return; @@ -597,15 +596,15 @@ Common::Error Scott::loadGameState(int slot) {  	if (file == nullptr)  		return Common::kReadingFailed; -	for (ct = 0; ct<16; ct++) { +	for (ct = 0; ct < 16; ct++) {  		glk_get_line_stream(file, buf, sizeof buf);  		sscanf(buf, "%d %d", &Counters[ct], &RoomSaved[ct]);  	}  	glk_get_line_stream(file, buf, sizeof buf);  	sscanf(buf, "%ld %hd %d %d %d %d\n", -		&BitFlags, &darkFlag, &MyLoc, &CurrentCounter, &SavedRoom, -		&GameHeader.LightTime); +	       &BitFlags, &darkFlag, &MyLoc, &CurrentCounter, &SavedRoom, +	       &GameHeader.LightTime);  	// Backward compatibility  	if (darkFlag) @@ -634,7 +633,7 @@ int Scott::getInput(int *vb, int *no) {  			num = sscanf(buf, "%9s %9s", verb, noun);  		} while (num == 0 || *buf == '\n'); -		 +  		if (xstrcasecmp(verb, "restore") == 0) {  			loadGame();  			return -1; @@ -643,14 +642,28 @@ int Scott::getInput(int *vb, int *no) {  			*noun = 0;  		if (*noun == 0 && strlen(verb) == 1) {  			switch (Common::isUpper((unsigned char)*verb) ? tolower((unsigned char)*verb) : *verb) { -			case 'n':strcpy(verb, "NORTH"); break; -			case 'e':strcpy(verb, "EAST"); break; -			case 's':strcpy(verb, "SOUTH"); break; -			case 'w':strcpy(verb, "WEST"); break; -			case 'u':strcpy(verb, "UP"); break; -			case 'd':strcpy(verb, "DOWN"); break; +			case 'n': +				strcpy(verb, "NORTH"); +				break; +			case 'e': +				strcpy(verb, "EAST"); +				break; +			case 's': +				strcpy(verb, "SOUTH"); +				break; +			case 'w': +				strcpy(verb, "WEST"); +				break; +			case 'u': +				strcpy(verb, "UP"); +				break; +			case 'd': +				strcpy(verb, "DOWN"); +				break;  			// Brian Howarth interpreter also supports this -			case 'i':strcpy(verb, "INVENTORY"); break; +			case 'i': +				strcpy(verb, "INVENTORY"); +				break;  			}  		}  		nc = whichWord(verb, Nouns); @@ -668,7 +681,7 @@ int Scott::getInput(int *vb, int *no) {  		}  	} while (vc == -1); -	strcpy(NounText, noun);	// Needed by GET/DROP hack +	strcpy(NounText, noun); // Needed by GET/DROP hack  	return 0;  } @@ -678,7 +691,7 @@ int Scott::performLine(int ct) {  	int act[4];  	int cc = 0; -	while (cc<5) { +	while (cc < 5) {  		int cv, dv;  		cv = Actions[ct].Condition[cc];  		dv = cv / 20; @@ -696,8 +709,8 @@ int Scott::performLine(int ct) {  				return 0;  			break;  		case 3: -			if (Items[dv].Location != CARRIED&& -				Items[dv].Location != MyLoc) +			if (Items[dv].Location != CARRIED && +			        Items[dv].Location != MyLoc)  				return 0;  			break;  		case 4: @@ -717,11 +730,11 @@ int Scott::performLine(int ct) {  				return 0;  			break;  		case 8: -			if ((BitFlags&(1 << dv)) == 0) +			if ((BitFlags & (1 << dv)) == 0)  				return 0;  			break;  		case 9: -			if (BitFlags&(1 << dv)) +			if (BitFlags & (1 << dv))  				return 0;  			break;  		case 10: @@ -745,7 +758,7 @@ int Scott::performLine(int ct) {  				return 0;  			break;  		case 15: -			if (CurrentCounter>dv) +			if (CurrentCounter > dv)  				return 0;  			break;  		case 16: @@ -778,8 +791,7 @@ int Scott::performLine(int ct) {  	act[2] /= 150;  	cc = 0;  	pptr = 0; -	while (cc<4) -	{ +	while (cc < 4) {  		if (act[cc] >= 1 && act[cc] < 52) {  			output(Messages[act[cc]]);  			output("\n"); @@ -825,7 +837,7 @@ int Scott::performLine(int ct) {  				BitFlags &= ~(1 << param[pptr++]);  				break;  			case 61: -				if (Options&YOUARE) +				if (Options & YOUARE)  					output("You are dead.\n");  				else  					output("I am dead.\n"); @@ -850,11 +862,11 @@ doneit:  				int n = 0;  				while (i <= GameHeader.NumItems) {  					if (Items[i].Location == GameHeader.TreasureRoom && -						*Items[i].Text == '*') +					        *Items[i].Text == '*')  						n++;  					i++;  				} -				if (Options&YOUARE) +				if (Options & YOUARE)  					output("You have stored ");  				else  					output("I've stored "); @@ -871,7 +883,7 @@ doneit:  			case 66: {  				int i = 0;  				int f = 0; -				if (Options&YOUARE) +				if (Options & YOUARE)  					output("You are carrying:\n");  				else  					output("I'm carrying:\n"); @@ -999,7 +1011,7 @@ doneit:  				break;  			default:  				error("Unknown action %d [Param begins %d %d]\n", -					act[cc], param[pptr], param[pptr + 1]); +				      act[cc], param[pptr], param[pptr + 1]);  				break;  			}  		} @@ -1011,8 +1023,8 @@ doneit:  }  int Scott::performActions(int vb, int no) { -	static int disable_sysfunc = 0;	// Recursion lock -	int d = BitFlags&(1 << DARKBIT); +	static int disable_sysfunc = 0; // Recursion lock +	int d = BitFlags & (1 << DARKBIT);  	int ct = 0;  	int fl; @@ -1024,7 +1036,7 @@ int Scott::performActions(int vb, int no) {  	if (vb == 1 && no >= 1 && no <= 6) {  		int nl;  		if (Items[LIGHT_SOURCE].Location == MyLoc || -			Items[LIGHT_SOURCE].Location == CARRIED) +		        Items[LIGHT_SOURCE].Location == CARRIED)  			d = 0;  		if (d)  			output("Dangerous to move in the dark! "); @@ -1034,13 +1046,13 @@ int Scott::performActions(int vb, int no) {  			return 0;  		}  		if (d) { -			if (Options&YOUARE) +			if (Options & YOUARE)  				output("You fell down and broke your neck. ");  			else  				output("I fell down and broke my neck. ");  			glk_exit();  		} -		if (Options&YOUARE) +		if (Options & YOUARE)  			output("You can't go in that direction. ");  		else  			output("I can't go in that direction. "); @@ -1053,16 +1065,16 @@ int Scott::performActions(int vb, int no) {  		vv = Actions[ct].Vocab;  		// Think this is now right. If a line we run has an action73  		// run all following lines with vocab of 0,0 -		if (vb != 0 && (doagain&&vv != 0)) +		if (vb != 0 && (doagain && vv != 0))  			break;  		// Oops.. added this minor cockup fix 1.11  		if (vb != 0 && !doagain && fl == 0)  			break;  		nv = vv % 150;  		vv /= 150; -		if ((vv == vb) || (doagain&&Actions[ct].Vocab == 0)) { +		if ((vv == vb) || (doagain && Actions[ct].Vocab == 0)) {  			if ((vv == 0 && randomPercent(nv)) || doagain || -					(vv != 0 && (nv == no || nv == 0))) { +			        (vv != 0 && (nv == no || nv == 0))) {  				int f2;  				if (fl == -1)  					fl = -2; @@ -1088,7 +1100,7 @@ int Scott::performActions(int vb, int no) {  	if (fl != 0 && disable_sysfunc == 0) {  		int item;  		if (Items[LIGHT_SOURCE].Location == MyLoc || -			Items[LIGHT_SOURCE].Location == CARRIED) +		        Items[LIGHT_SOURCE].Location == CARRIED)  			d = 0;  		if (vb == 10 || vb == 18) {  			// Yes they really _are_ hardcoded values @@ -1104,11 +1116,11 @@ int Scott::performActions(int vb, int no) {  					while (i <= GameHeader.NumItems) {  						if (Items[i].Location == MyLoc && Items[i].AutoGet != nullptr && Items[i].AutoGet[0] != '*') {  							no = whichWord(Items[i].AutoGet, Nouns); -							disable_sysfunc = 1;	// Don't recurse into auto get ! -							performActions(vb, no);	// Recursively check each items table code +							disable_sysfunc = 1;    // Don't recurse into auto get ! +							performActions(vb, no); // Recursively check each items table code  							disable_sysfunc = 0;  							if (countCarried() == GameHeader.MaxCarry) { -								if (Options&YOUARE) +								if (Options & YOUARE)  									output("You are carrying too much. ");  								else  									output("I've too much to carry. "); @@ -1130,7 +1142,7 @@ int Scott::performActions(int vb, int no) {  					return 0;  				}  				if (countCarried() == GameHeader.MaxCarry) { -					if (Options&YOUARE) +					if (Options & YOUARE)  						output("You are carrying too much. ");  					else  						output("I've too much to carry. "); @@ -1138,7 +1150,7 @@ int Scott::performActions(int vb, int no) {  				}  				item = matchUpItem(NounText, MyLoc);  				if (item == -1) { -					if (Options&YOUARE) +					if (Options & YOUARE)  						output("It is beyond your power to do that. ");  					else  						output("It's beyond my power to do that. "); @@ -1175,7 +1187,7 @@ int Scott::performActions(int vb, int no) {  				}  				item = matchUpItem(NounText, CARRIED);  				if (item == -1) { -					if (Options&YOUARE) +					if (Options & YOUARE)  						output("It's beyond your power to do that.\n");  					else  						output("It's beyond my power to do that.\n"); @@ -1193,8 +1205,8 @@ int Scott::performActions(int vb, int no) {  int Scott::xstrcasecmp(const char *s1, const char *s2) {  	const unsigned char -		*us1 = (const unsigned char *)s1, -		*us2 = (const unsigned char *)s2; +	*us1 = (const unsigned char *)s1, +	 *us2 = (const unsigned char *)s2;  	while (tolower(*us1) == tolower(*us2++))  		if (*us1++ == '\0') @@ -1205,8 +1217,8 @@ int Scott::xstrcasecmp(const char *s1, const char *s2) {  int Scott::xstrncasecmp(const char *s1, const char *s2, size_t n) {  	if (n != 0) {  		const unsigned char -			*us1 = (const unsigned char *)s1, -			*us2 = (const unsigned char *)s2; +		*us1 = (const unsigned char *)s1, +		 *us2 = (const unsigned char *)s2;  		do {  			if (tolower(*us1) != tolower(*us2++)) diff --git a/engines/gargoyle/scott/scott.h b/engines/gargoyle/scott/scott.h index 81847cce3f..0ff8d3318b 100644 --- a/engines/gargoyle/scott/scott.h +++ b/engines/gargoyle/scott/scott.h @@ -24,7 +24,7 @@  #define GARGOYLE_SCOTT  /* - *	Controlling block + *  Controlling block   */  #include "common/scummsys.h" @@ -33,28 +33,28 @@  namespace Gargoyle {  namespace Scott { -#define LIGHT_SOURCE	9	// Always 9 how odd -#define CARRIED		255		// Carried -#define DESTROYED	0		// Destroyed -#define DARKBIT		15 -#define LIGHTOUTBIT	16		// Light gone out +#define LIGHT_SOURCE    9   // Always 9 how odd +#define CARRIED     255     // Carried +#define DESTROYED   0       // Destroyed +#define DARKBIT     15 +#define LIGHTOUTBIT 16      // Light gone out  enum GameOption { -	YOUARE      = 1,		///< You are not I am -	SCOTTLIGHT  = 2,		///< Authentic Scott Adams light messages -	DEBUGGING   = 4,		///< Info from database load -	TRS80_STYLE = 8,		///< Display in style used on TRS-80 -	PREHISTORIC_LAMP = 16	///< Destroy the lamp (very old databases) +	YOUARE      = 1,        ///< You are not I am +	SCOTTLIGHT  = 2,        ///< Authentic Scott Adams light messages +	DEBUGGING   = 4,        ///< Info from database load +	TRS80_STYLE = 8,        ///< Display in style used on TRS-80 +	PREHISTORIC_LAMP = 16   ///< Destroy the lamp (very old databases)  }; -#define TRS80_LINE	"\n<------------------------------------------------------------>\n" -#define MyLoc	(GameHeader.PlayerRoom) +#define TRS80_LINE  "\n<------------------------------------------------------------>\n" +#define MyLoc   (GameHeader.PlayerRoom)  struct Header { - 	int Unknown; +	int Unknown;  	int NumItems;  	int NumActions; -	int NumWords;			///< Smaller of verb/noun is padded to same size +	int NumWords;           ///< Smaller of verb/noun is padded to same size  	int NumRooms;  	int MaxCarry;  	int PlayerRoom; @@ -90,7 +90,7 @@ struct Room {  };  struct Item { -	char *Text;		// PORTABILITY WARNING: THESE TWO MUST BE 8 BIT VALUES. +	char *Text;     // PORTABILITY WARNING: THESE TWO MUST BE 8 BIT VALUES.  	byte Location;  	byte InitialLoc;  	char *AutoGet; @@ -125,7 +125,7 @@ private:  	int SavedRoom;  	int RoomSaved[16];  ///< Range unknown  	int Options;        ///< Option flags set -	int Width;		    ///< Terminal width +	int Width;          ///< Terminal width  	int TopHeight;      ///< Height of top window  	bool split_screen; diff --git a/engines/gargoyle/screen.h b/engines/gargoyle/screen.h index d7631efccf..aa43b1bfdb 100644 --- a/engines/gargoyle/screen.h +++ b/engines/gargoyle/screen.h @@ -54,8 +54,8 @@ public:  	/**  	 * Draws the text input caret at the given position -	 * @remarks		The position specifies the caret's bottom-left corner, -	 *		and the X position is in multiples of GLI_SUBPIX +	 * @remarks     The position specifies the caret's bottom-left corner, +	 *      and the X position is in multiples of GLI_SUBPIX  	 */  	void drawCaret(const Point &pos);  }; diff --git a/engines/gargoyle/selection.cpp b/engines/gargoyle/selection.cpp index 8ad3b76716..27cfbe7083 100644 --- a/engines/gargoyle/selection.cpp +++ b/engines/gargoyle/selection.cpp @@ -112,9 +112,9 @@ void WindowMask::putHyperlink(glui32 linkval, uint x0, uint y0, uint x1, uint y1  	}  	if (tx0 >= _hor -		|| tx1 >= _hor -		|| ty0 >= _ver || ty1 >= _ver -		|| !_links[tx0] || !_links[tx1]) { +	        || tx1 >= _hor +	        || ty0 >= _ver || ty1 >= _ver +	        || !_links[tx0] || !_links[tx1]) {  		warning("putHyperlink: invalid range given");  		return;  	} @@ -190,7 +190,7 @@ void Selection::clearSelection() {  bool Selection::checkSelection(const Rect &r) const {  	Rect select(MIN(_select.left, _select.right), MAX(_select.left, _select.right), -		MIN(_select.top, _select.bottom), MAX(_select.top, _select.bottom)); +	            MIN(_select.top, _select.bottom), MAX(_select.top, _select.bottom));  	if (select.isEmpty())  		return false; @@ -218,7 +218,7 @@ bool Selection::getSelection(const Rect &r, int *rx0, int *rx1) const {  	row_selected = false;  	if ((cy0 >= upper && cy0 <= lower) -		|| (cy1 >= upper && cy1 <= lower)) +	        || (cy1 >= upper && cy1 <= lower))  		row_selected = true;  	if (row >= cy0 && row <= cy1) diff --git a/engines/gargoyle/selection.h b/engines/gargoyle/selection.h index 2d3a208ee4..a82af6d2a0 100644 --- a/engines/gargoyle/selection.h +++ b/engines/gargoyle/selection.h @@ -92,13 +92,13 @@ class Selection : public Clipboard, public WindowMask {  public:  	/**  	 * Start selecting an area of the screen -	 * @param pos		Position to start selection area at +	 * @param pos       Position to start selection area at  	 */  	void startSelection(const Point &pos);  	/**  	 * Move the end point of the selection area -	 * @param pos		Position to end selection area at +	 * @param pos       Position to end selection area at  	 */  	void moveSelection(const Point &pos); diff --git a/engines/gargoyle/streams.cpp b/engines/gargoyle/streams.cpp index b3012720d5..75fb205591 100644 --- a/engines/gargoyle/streams.cpp +++ b/engines/gargoyle/streams.cpp @@ -33,8 +33,8 @@  namespace Gargoyle {  Stream::Stream(Streams *streams, bool readable, bool writable, uint32 rock, bool unicode) : -		_streams(streams), _readable(readable), _writable(writable), _readCount(0), -		_writeCount(0), _prev(nullptr), _next(nullptr), _rock(0) { +	_streams(streams), _readable(readable), _writable(writable), _readCount(0), +	_writeCount(0), _prev(nullptr), _next(nullptr), _rock(0) {  }  Stream::~Stream() { @@ -174,7 +174,7 @@ void WindowStream::unputBuffer(const char *buf, size_t len) {  		}  	} -	for (lx = 0, cx = buf + len - 1; lx<len; lx++, cx--) { +	for (lx = 0, cx = buf + len - 1; lx < len; lx++, cx--) {  		if (!_window->unputCharUni(*cx))  			break;  		_writeCount--; @@ -200,7 +200,7 @@ void WindowStream::unputBufferUni(const glui32 *buf, size_t len) {  		}  	} -	for (lx = 0, cx = buf + len - 1; lx<len; lx++, cx--) { +	for (lx = 0, cx = buf + len - 1; lx < len; lx++, cx--) {  		if (!_window->unputCharUni(*cx))  			break;  		_writeCount--; @@ -245,7 +245,7 @@ void WindowStream::setZColors(glui32 fg, glui32 bg) {  			_window->_attr.fgcolor = 0;  			Windows::_overrideFgSet = false;  			Windows::_overrideFgVal = 0; -			 +  			Common::copy(g_conf->_moreSave, g_conf->_moreSave + 3, g_conf->_moreColor);  			Common::copy(g_conf->_caretSave, g_conf->_caretSave + 3, g_conf->_caretColor);  			Common::copy(g_conf->_linkSave, g_conf->_linkSave + 3, g_conf->_linkColor); @@ -254,7 +254,7 @@ void WindowStream::setZColors(glui32 fg, glui32 bg) {  			_window->_attr.fgcolor = fg;  			Windows::_overrideFgSet = true;  			Windows::_overrideFgVal = fg; -			 +  			Common::copy(fore, fore + 3, g_conf->_moreColor);  			Common::copy(fore, fore + 3, g_conf->_caretColor);  			Common::copy(fore, fore + 3, g_conf->_linkColor); @@ -302,8 +302,8 @@ void WindowStream::setReverseVideo(bool reverse) {  /*--------------------------------------------------------------------------*/  MemoryStream::MemoryStream(Streams *streams, void *buf, size_t buflen, FileMode mode, uint32 rock, bool unicode) : -		Stream(streams, mode != filemode_Write, mode != filemode_Read, rock, unicode), -		_buf(buf), _bufLen(buflen), _bufPtr(buf) { +	Stream(streams, mode != filemode_Write, mode != filemode_Read, rock, unicode), +	_buf(buf), _bufLen(buflen), _bufPtr(buf) {  	assert(_buf && _bufLen);  	assert(mode == filemode_Read || mode == filemode_Write || mode == filemode_ReadWrite); @@ -363,8 +363,7 @@ void MemoryStream::putBuffer(const char *buf, size_t len) {  	} else {  		if (!_unicode) {  			unsigned char *bp = (unsigned char *)_bufPtr; -			if (bp + len > (unsigned char *)_bufEnd) -			{ +			if (bp + len > (unsigned char *)_bufEnd) {  				lx = (bp + len) - (unsigned char *)_bufEnd;  				if (lx < len)  					len -= lx; @@ -374,7 +373,7 @@ void MemoryStream::putBuffer(const char *buf, size_t len) {  			if (len) {  				memmove(bp, buf, len);  				bp += len; -				if (bp >(unsigned char *)_bufEof) +				if (bp > (unsigned char *)_bufEof)  					_bufEof = bp;  			}  			_bufPtr = bp; @@ -392,7 +391,7 @@ void MemoryStream::putBuffer(const char *buf, size_t len) {  				for (i = 0; i < len; i++)  					bp[i] = buf[i];  				bp += len; -				if (bp >(glui32 *)_bufEof) +				if (bp > (glui32 *)_bufEof)  					_bufEof = bp;  			}  			_bufPtr = bp; @@ -444,7 +443,7 @@ void MemoryStream::putBufferUni(const uint32 *buf, size_t len) {  			if (len) {  				memmove(bp, buf, len * 4);  				bp += len; -				if (bp >(glui32 *)_bufEof) +				if (bp > (glui32 *)_bufEof)  					_bufEof = bp;  			}  			_bufPtr = bp; @@ -460,8 +459,7 @@ glui32 MemoryStream::getPosition() const {  }  void MemoryStream::setPosition(glui32 pos, glui32 seekMode) { -	if (!_unicode) -	{ +	if (!_unicode) {  		if (seekMode == seekmode_Current)  			pos = ((unsigned char *)_bufPtr - (unsigned char *)_buf) + pos;  		else if (seekMode == seekmode_End) @@ -556,7 +554,7 @@ glui32 MemoryStream::getBuffer(char *buf, glui32 len) {  			if (len) {  				memcpy(buf, bp, len);  				bp += len; -				if (bp >(unsigned char *)_bufEof) +				if (bp > (unsigned char *)_bufEof)  					_bufEof = bp;  			} @@ -601,8 +599,7 @@ glui32 MemoryStream::getBufferUni(glui32 *buf, glui32 len) {  	} else {  		if (!_unicode) {  			unsigned char *bp = (unsigned char *)_bufPtr; -			if (bp + len > (unsigned char *)_bufEnd) -			{ +			if (bp + len > (unsigned char *)_bufEnd) {  				glui32 lx;  				lx = (bp + len) - (unsigned char *)_bufEnd;  				if (lx < len) @@ -615,7 +612,7 @@ glui32 MemoryStream::getBufferUni(glui32 *buf, glui32 len) {  				for (i = 0; i < len; i++)  					buf[i] = bp[i];  				bp += len; -				if (bp >(unsigned char *)_bufEof) +				if (bp > (unsigned char *)_bufEof)  					_bufEof = bp;  			}  			_readCount += len; @@ -633,7 +630,7 @@ glui32 MemoryStream::getBufferUni(glui32 *buf, glui32 len) {  			if (len) {  				memcpy(buf, bp, len * 4);  				bp += len; -				if (bp >(glui32 *)_bufEof) +				if (bp > (glui32 *)_bufEof)  					_bufEof = bp;  			}  			_readCount += len; @@ -761,8 +758,8 @@ glui32 MemoryStream::getLineUni(glui32 *ubuf, glui32 len) {  /*--------------------------------------------------------------------------*/  FileStream::FileStream(Streams *streams, frefid_t fref, glui32 fmode, glui32 rock, bool unicode) : -		Stream(streams, fmode == filemode_Read, fmode != filemode_Read, rock, unicode),  _lastOp(0), -		_textFile(fref->_textMode), _inFile(nullptr), _outFile(nullptr), _inStream(nullptr) { +	Stream(streams, fmode == filemode_Read, fmode != filemode_Read, rock, unicode),  _lastOp(0), +	_textFile(fref->_textMode), _inFile(nullptr), _outFile(nullptr), _inStream(nullptr) {  	Common::String fname = fref->_slotNumber == -1 ? fref->_filename : fref->getSaveName();  	if (fmode == filemode_Write || fmode == filemode_ReadWrite || fmode == filemode_WriteAppend) { @@ -789,7 +786,7 @@ FileStream::FileStream(Streams *streams, frefid_t fref, glui32 fmode, glui32 roc  			if (!readSavegameHeader(_inStream, header))  				error("Invalid savegame");  			if (header._interpType != g_vm->getInterpreterType() || header._language != g_vm->getLanguage() -				|| header._md5 != g_vm->getGameMD5()) +			        || header._md5 != g_vm->getGameMD5())  				error("Savegame is for a different game");  			g_vm->_events->setTotalPlayTicks(header._totalFrames); @@ -873,7 +870,7 @@ void FileStream::putBufferUni(const uint32 *buf, size_t len) {  	ensureOp(filemode_Write); -	for (size_t lx = 0; lx<len; lx++) { +	for (size_t lx = 0; lx < len; lx++) {  		glui32 ch = buf[lx];  		if (!_unicode) {  			if (ch >= 0x100) @@ -1005,7 +1002,7 @@ void FileStream::setPosition(glui32 pos, glui32 seekMode) {  	_lastOp = 0;  	if (_unicode)  		pos *= 4; -	 +  	if (_inStream) {  		_inStream->seek(pos, SEEK_SET);  	} else { @@ -1100,7 +1097,7 @@ glui32 FileStream::getBuffer(char *buf, glui32 len) {  		return res;  	} else if (_textFile) {  		glui32 lx; -		for (lx = 0; lx<len; lx++) { +		for (lx = 0; lx < len; lx++) {  			glui32 ch;  			ch = getCharUtf8();  			if (ch == -1) @@ -1148,7 +1145,7 @@ glui32 FileStream::getBufferUni(glui32 *buf, glui32 len) {  	ensureOp(filemode_Read);  	if (!_unicode) {  		glui32 lx; -		for (lx = 0; lx<len; lx++) { +		for (lx = 0; lx < len; lx++) {  			int res;  			glui32 ch;  			res = _inStream->readByte(); @@ -1161,7 +1158,7 @@ glui32 FileStream::getBufferUni(glui32 *buf, glui32 len) {  		return lx;  	} else if (_textFile) {  		glui32 lx; -		for (lx = 0; lx<len; lx++) { +		for (lx = 0; lx < len; lx++) {  			glui32 ch;  			ch = getCharUtf8();  			if (ch == -1) @@ -1172,8 +1169,7 @@ glui32 FileStream::getBufferUni(glui32 *buf, glui32 len) {  		return lx;  	} else {  		glui32 lx; -		for (lx = 0; lx<len; lx++) -		{ +		for (lx = 0; lx < len; lx++) {  			int res;  			glui32 ch;  			res = _inStream->readByte(); @@ -1477,8 +1473,7 @@ frefid_t Streams::createByPrompt(glui32 usage, FileMode fmode, glui32 rock) {  				Common::String desc = dialog->getResultString();  				return createRef(slot, desc, usage, rock);  			} -		} -		else if (fmode == filemode_Read) { +		} else if (fmode == filemode_Read) {  			// Load a savegame slot  			GUI::SaveLoadChooser *dialog = new GUI::SaveLoadChooser(_("Restore game:"), _("Restore"), false); @@ -1486,8 +1481,7 @@ frefid_t Streams::createByPrompt(glui32 usage, FileMode fmode, glui32 rock) {  			if (slot >= 0) {  				return createRef(slot, "", usage, rock);  			} -		} -		else { +		} else {  			error("Unsupport file mode");  		}  		break; @@ -1527,7 +1521,7 @@ frefid_t Streams::createRef(const Common::String &filename, glui32 usage, glui32  frefid_t Streams::createTemp(glui32 usage, glui32 rock) {  	return createRef(Common::String::format("%s.tmp", g_vm->getTargetName().c_str()), -		usage, rock); +	                 usage, rock);  }  frefid_t Streams::createFromRef(frefid_t fref, glui32 usage, glui32 rock) { @@ -1579,8 +1573,7 @@ bool FileReference::exists() const {  		if (Common::File::exists(_filename))  			return true;  		filename = _filename; -	} -	else { +	} else {  		filename = getSaveName();  	} diff --git a/engines/gargoyle/streams.h b/engines/gargoyle/streams.h index c8b69631a0..8a497e08cb 100644 --- a/engines/gargoyle/streams.h +++ b/engines/gargoyle/streams.h @@ -159,7 +159,9 @@ public:  	/**  	 * Get the rock value for the stream  	 */ -	uint32 getRock() const { return _rock; } +	uint32 getRock() const { +		return _rock; +	}  	/**  	 * Fill out the total amount read and/or written @@ -217,7 +219,9 @@ public:  		putCharUni('\n');  	} -	virtual glui32 getPosition() const { return 0; } +	virtual glui32 getPosition() const { +		return 0; +	}  	virtual void setPosition(glui32 pos, glui32 seekMode) {} @@ -226,32 +230,44 @@ public:  	/**  	 * Get a character from the stream  	 */ -	virtual glsi32 getChar() { return -1; } +	virtual glsi32 getChar() { +		return -1; +	}  	/**  	 * Get a unicode character from the stream  	 */ -	virtual glsi32 getCharUni() { return -1; } +	virtual glsi32 getCharUni() { +		return -1; +	}  	/**  	 * Get a buffer  	 */ -	virtual glui32 getBuffer(char *buf, glui32 len) { return 0; } +	virtual glui32 getBuffer(char *buf, glui32 len) { +		return 0; +	}  	/**  	 * Get a unicode buffer  	 */ -	virtual glui32 getBufferUni(glui32 *buf, glui32 len) { return 0; } +	virtual glui32 getBufferUni(glui32 *buf, glui32 len) { +		return 0; +	}  	/**  	 * Get a line  	 */ -	virtual glui32 getLine(char *buf, glui32 len) { return 0; } +	virtual glui32 getLine(char *buf, glui32 len) { +		return 0; +	}  	/**  	 * Get a unicode line  	 */ -	virtual glui32 getLineUni(glui32 *ubuf, glui32 len) { return 0; } +	virtual glui32 getLineUni(glui32 *ubuf, glui32 len) { +		return 0; +	}  	/**  	 * Set a hyperlink @@ -341,11 +357,11 @@ public:   */  class MemoryStream : public Stream {  private: -	void *_buf;		///< unsigned char* for latin1, glui32* for unicode +	void *_buf;     ///< unsigned char* for latin1, glui32* for unicode  	void *_bufPtr;  	void *_bufEnd;  	void *_bufEof; -	size_t _bufLen;	///< # of bytes for latin1, # of 4-byte words for unicode +	size_t _bufLen; ///< # of bytes for latin1, # of 4-byte words for unicode  public:  	/**  	 * Constructor @@ -416,7 +432,7 @@ private:  	Common::OutSaveFile *_outFile;  	Common::InSaveFile *_inFile;  	Common::SeekableReadStream *_inStream; -	uint32 _lastOp;					///< 0, filemode_Write, or filemode_Read +	uint32 _lastOp;                 ///< 0, filemode_Write, or filemode_Read  	bool _textFile;  private:  	/** @@ -577,7 +593,9 @@ public:  	/**  	 * Gets the current output stream  	 */ -	Stream *getCurrent() const { return _currentStream; } +	Stream *getCurrent() const { +		return _currentStream; +	}  	/**  	 * Prompt for a savegame to load or save, and populate a file reference from the result diff --git a/engines/gargoyle/unicode.cpp b/engines/gargoyle/unicode.cpp index c783915cde..f32093b2f5 100644 --- a/engines/gargoyle/unicode.cpp +++ b/engines/gargoyle/unicode.cpp @@ -34,7 +34,7 @@ size_t strlen_uni(const uint32 *s) {  }  glui32 bufferChangeCase(glui32 *buf, glui32 len, glui32 numchars, BufferChangeCase destcase, -		BufferChangeCond cond, int changerest) { +                        BufferChangeCond cond, int changerest) {  	glui32 ix, jx;  	glui32 *outbuf;  	glui32 *newoutbuf; @@ -92,8 +92,7 @@ glui32 bufferChangeCase(glui32 *buf, glui32 len, glui32 numchars, BufferChangeCa  				res = block[ch & 0xFF][target];  		} -		if (res != 0xFFFFFFFF || res == ch) -		{ +		if (res != 0xFFFFFFFF || res == ch) {  			/* simple case */  			if (outcount < len)  				outbuf[outcount] = res; @@ -130,7 +129,7 @@ glui32 bufferChangeCase(glui32 *buf, glui32 len, glui32 numchars, BufferChangeCa  			outbuf = newoutbuf;  		} -		for (jx = 0; jx<speccount; jx++) { +		for (jx = 0; jx < speccount; jx++) {  			if (outcount < len)  				outbuf[outcount] = ptr[jx];  			outcount++; diff --git a/engines/gargoyle/unicode.h b/engines/gargoyle/unicode.h index 2392c1afa1..e9fa9280d9 100644 --- a/engines/gargoyle/unicode.h +++ b/engines/gargoyle/unicode.h @@ -44,7 +44,7 @@ size_t strlen_uni(const uint32 *s);   *converted string should have contained.   */  extern glui32 bufferChangeCase(glui32 *buf, glui32 len, -	glui32 numchars, BufferChangeCase destcase, BufferChangeCond cond, int changerest); +                               glui32 numchars, BufferChangeCase destcase, BufferChangeCond cond, int changerest);  } // End of namespace Gargoyle diff --git a/engines/gargoyle/unicode_gen.cpp b/engines/gargoyle/unicode_gen.cpp index c9ad57097f..56e44c350f 100644 --- a/engines/gargoyle/unicode_gen.cpp +++ b/engines/gargoyle/unicode_gen.cpp @@ -3861,3325 +3861,3325 @@ gli_case_special_t unigen_special_0xfb16 = { 857, 860, 862 };  gli_case_special_t unigen_special_0xfb17 = { 865, 868, 870 };  #define RETURN_COMBINING_CLASS(ch)  \ -switch ((glui32)(ch) >> 8) {  \ -case 3:  \ -switch (ch) {  \ -    case 820:  \ -    case 821:  \ -    case 822:  \ -    case 823:  \ -    case 824:  \ -    return 1;  \ -    case 801:  \ -    case 802:  \ -    case 807:  \ -    case 808:  \ -    return 202;  \ -    case 795:  \ -    return 216;  \ -    case 790:  \ -    case 791:  \ -    case 792:  \ -    case 793:  \ -    case 796:  \ -    case 797:  \ -    case 798:  \ -    case 799:  \ -    case 800:  \ -    case 803:  \ -    case 804:  \ -    case 805:  \ -    case 806:  \ -    case 809:  \ -    case 810:  \ -    case 811:  \ -    case 812:  \ -    case 813:  \ -    case 814:  \ -    case 815:  \ -    case 816:  \ -    case 817:  \ -    case 818:  \ -    case 819:  \ -    case 825:  \ -    case 826:  \ -    case 827:  \ -    case 828:  \ -    case 839:  \ -    case 840:  \ -    case 841:  \ -    case 845:  \ -    case 846:  \ -    case 851:  \ -    case 852:  \ -    case 853:  \ -    case 854:  \ -    return 220;  \ -    case 768:  \ -    case 769:  \ -    case 770:  \ -    case 771:  \ -    case 772:  \ -    case 773:  \ -    case 774:  \ -    case 775:  \ -    case 776:  \ -    case 777:  \ -    case 778:  \ -    case 779:  \ -    case 780:  \ -    case 781:  \ -    case 782:  \ -    case 783:  \ -    case 784:  \ -    case 785:  \ -    case 786:  \ -    case 787:  \ -    case 788:  \ -    case 829:  \ -    case 830:  \ -    case 831:  \ -    case 832:  \ -    case 833:  \ -    case 834:  \ -    case 835:  \ -    case 836:  \ -    case 838:  \ -    case 842:  \ -    case 843:  \ -    case 844:  \ -    case 848:  \ -    case 849:  \ -    case 850:  \ -    case 855:  \ -    case 867:  \ -    case 868:  \ -    case 869:  \ -    case 870:  \ -    case 871:  \ -    case 872:  \ -    case 873:  \ -    case 874:  \ -    case 875:  \ -    case 876:  \ -    case 877:  \ -    case 878:  \ -    case 879:  \ -    return 230;  \ -    case 789:  \ -    case 794:  \ -    return 232;  \ -    case 863:  \ -    case 866:  \ -    return 233;  \ -    case 861:  \ -    case 862:  \ -    case 864:  \ -    case 865:  \ -    return 234;  \ -    case 837:  \ -    return 240;  \ -}  \ -return 0;  \ -case 4:  \ -switch (ch) {  \ -    case 1155:  \ -    case 1156:  \ -    case 1157:  \ -    case 1158:  \ -    return 230;  \ -}  \ -return 0;  \ -case 5:  \ -switch (ch) {  \ -    case 1456:  \ -    return 10;  \ -    case 1457:  \ -    return 11;  \ -    case 1458:  \ -    return 12;  \ -    case 1459:  \ -    return 13;  \ -    case 1460:  \ -    return 14;  \ -    case 1461:  \ -    return 15;  \ -    case 1462:  \ -    return 16;  \ -    case 1463:  \ -    return 17;  \ -    case 1464:  \ -    return 18;  \ -    case 1465:  \ -    return 19;  \ -    case 1467:  \ -    return 20;  \ -    case 1468:  \ -    return 21;  \ -    case 1469:  \ -    return 22;  \ -    case 1471:  \ -    return 23;  \ -    case 1473:  \ -    return 24;  \ -    case 1474:  \ -    return 25;  \ -    case 1425:  \ -    case 1430:  \ -    case 1435:  \ -    case 1443:  \ -    case 1444:  \ -    case 1445:  \ -    case 1446:  \ -    case 1447:  \ -    case 1450:  \ -    return 220;  \ -    case 1434:  \ -    case 1453:  \ -    return 222;  \ -    case 1454:  \ -    return 228;  \ -    case 1426:  \ -    case 1427:  \ -    case 1428:  \ -    case 1429:  \ -    case 1431:  \ -    case 1432:  \ -    case 1433:  \ -    case 1436:  \ -    case 1437:  \ -    case 1438:  \ -    case 1439:  \ -    case 1440:  \ -    case 1441:  \ -    case 1448:  \ -    case 1449:  \ -    case 1451:  \ -    case 1452:  \ -    case 1455:  \ -    case 1476:  \ -    return 230;  \ -}  \ -return 0;  \ -case 6:  \ -switch (ch) {  \ -    case 1611:  \ -    return 27;  \ -    case 1612:  \ -    return 28;  \ -    case 1613:  \ -    return 29;  \ -    case 1614:  \ -    return 30;  \ -    case 1615:  \ -    return 31;  \ -    case 1616:  \ -    return 32;  \ -    case 1617:  \ -    return 33;  \ -    case 1618:  \ -    return 34;  \ -    case 1648:  \ -    return 35;  \ -    case 1621:  \ -    case 1622:  \ -    case 1763:  \ -    case 1770:  \ -    case 1773:  \ -    return 220;  \ -    case 1552:  \ -    case 1553:  \ -    case 1554:  \ -    case 1555:  \ -    case 1556:  \ -    case 1557:  \ -    case 1619:  \ -    case 1620:  \ -    case 1623:  \ -    case 1624:  \ -    case 1750:  \ -    case 1751:  \ -    case 1752:  \ -    case 1753:  \ -    case 1754:  \ -    case 1755:  \ -    case 1756:  \ -    case 1759:  \ -    case 1760:  \ -    case 1761:  \ -    case 1762:  \ -    case 1764:  \ -    case 1767:  \ -    case 1768:  \ -    case 1771:  \ -    case 1772:  \ -    return 230;  \ -}  \ -return 0;  \ -case 7:  \ -switch (ch) {  \ -    case 1809:  \ -    return 36;  \ -    case 1841:  \ -    case 1844:  \ -    case 1847:  \ -    case 1848:  \ -    case 1849:  \ -    case 1851:  \ -    case 1852:  \ -    case 1854:  \ -    case 1858:  \ -    case 1860:  \ -    case 1862:  \ -    case 1864:  \ -    return 220;  \ -    case 1840:  \ -    case 1842:  \ -    case 1843:  \ -    case 1845:  \ -    case 1846:  \ -    case 1850:  \ -    case 1853:  \ -    case 1855:  \ -    case 1856:  \ -    case 1857:  \ -    case 1859:  \ -    case 1861:  \ -    case 1863:  \ -    case 1865:  \ -    case 1866:  \ -    return 230;  \ -}  \ -return 0;  \ -case 9:  \ -switch (ch) {  \ -    case 2364:  \ -    case 2492:  \ -    return 7;  \ -    case 2381:  \ -    case 2509:  \ -    return 9;  \ -    case 2386:  \ -    return 220;  \ -    case 2385:  \ -    case 2387:  \ -    case 2388:  \ -    return 230;  \ -}  \ -return 0;  \ -case 10:  \ -switch (ch) {  \ -    case 2620:  \ -    case 2748:  \ -    return 7;  \ -    case 2637:  \ -    case 2765:  \ -    return 9;  \ -}  \ -return 0;  \ -case 11:  \ -switch (ch) {  \ -    case 2876:  \ -    return 7;  \ -    case 2893:  \ -    case 3021:  \ -    return 9;  \ -}  \ -return 0;  \ -case 12:  \ -switch (ch) {  \ -    case 3260:  \ -    return 7;  \ -    case 3149:  \ -    case 3277:  \ -    return 9;  \ -    case 3157:  \ -    return 84;  \ -    case 3158:  \ -    return 91;  \ -}  \ -return 0;  \ -case 13:  \ -switch (ch) {  \ -    case 3405:  \ -    case 3530:  \ -    return 9;  \ -}  \ -return 0;  \ -case 14:  \ -switch (ch) {  \ -    case 3642:  \ -    return 9;  \ -    case 3640:  \ -    case 3641:  \ -    return 103;  \ -    case 3656:  \ -    case 3657:  \ -    case 3658:  \ -    case 3659:  \ -    return 107;  \ -    case 3768:  \ -    case 3769:  \ -    return 118;  \ -    case 3784:  \ -    case 3785:  \ -    case 3786:  \ -    case 3787:  \ -    return 122;  \ -}  \ -return 0;  \ -case 15:  \ -switch (ch) {  \ -    case 3972:  \ -    return 9;  \ -    case 3953:  \ -    return 129;  \ -    case 3954:  \ -    case 3962:  \ -    case 3963:  \ -    case 3964:  \ -    case 3965:  \ -    case 3968:  \ -    return 130;  \ -    case 3956:  \ -    return 132;  \ -    case 3897:  \ -    return 216;  \ -    case 3864:  \ -    case 3865:  \ -    case 3893:  \ -    case 3895:  \ -    case 4038:  \ -    return 220;  \ -    case 3970:  \ -    case 3971:  \ -    case 3974:  \ -    case 3975:  \ -    return 230;  \ -}  \ -return 0;  \ -case 16:  \ -switch (ch) {  \ -    case 4151:  \ -    return 7;  \ -    case 4153:  \ -    return 9;  \ -}  \ -return 0;  \ -case 23:  \ -switch (ch) {  \ -    case 5908:  \ -    case 5940:  \ -    case 6098:  \ -    return 9;  \ -    case 6109:  \ -    return 230;  \ -}  \ -return 0;  \ -case 24:  \ -switch (ch) {  \ -    case 6313:  \ -    return 228;  \ -}  \ -return 0;  \ -case 25:  \ -switch (ch) {  \ -    case 6459:  \ -    return 220;  \ -    case 6457:  \ -    return 222;  \ -    case 6458:  \ -    return 230;  \ -}  \ -return 0;  \ -case 32:  \ -switch (ch) {  \ -    case 8402:  \ -    case 8403:  \ -    case 8408:  \ -    case 8409:  \ -    case 8410:  \ -    case 8421:  \ -    case 8422:  \ -    case 8426:  \ -    return 1;  \ -    case 8424:  \ -    return 220;  \ -    case 8400:  \ -    case 8401:  \ -    case 8404:  \ -    case 8405:  \ -    case 8406:  \ -    case 8407:  \ -    case 8411:  \ -    case 8412:  \ -    case 8417:  \ -    case 8423:  \ -    case 8425:  \ -    return 230;  \ -}  \ -return 0;  \ -case 48:  \ -switch (ch) {  \ -    case 12441:  \ -    case 12442:  \ -    return 8;  \ -    case 12330:  \ -    return 218;  \ -    case 12333:  \ -    return 222;  \ -    case 12334:  \ -    case 12335:  \ -    return 224;  \ -    case 12331:  \ -    return 228;  \ -    case 12332:  \ -    return 232;  \ -}  \ -return 0;  \ -case 251:  \ -switch (ch) {  \ -    case 64286:  \ -    return 26;  \ -}  \ -return 0;  \ -case 254:  \ -switch (ch) {  \ -    case 65056:  \ -    case 65057:  \ -    case 65058:  \ -    case 65059:  \ -    return 230;  \ -}  \ -return 0;  \ -case 465:  \ -switch (ch) {  \ -    case 119143:  \ -    case 119144:  \ -    case 119145:  \ -    return 1;  \ -    case 119141:  \ -    case 119142:  \ -    case 119150:  \ -    case 119151:  \ -    case 119152:  \ -    case 119153:  \ -    case 119154:  \ -    return 216;  \ -    case 119163:  \ -    case 119164:  \ -    case 119165:  \ -    case 119166:  \ -    case 119167:  \ -    case 119168:  \ -    case 119169:  \ -    case 119170:  \ -    case 119178:  \ -    case 119179:  \ -    return 220;  \ -    case 119149:  \ -    return 226;  \ -    case 119173:  \ -    case 119174:  \ -    case 119175:  \ -    case 119176:  \ -    case 119177:  \ -    case 119210:  \ -    case 119211:  \ -    case 119212:  \ -    case 119213:  \ -    return 230;  \ -}  \ -return 0;  \ -}  \ -return 0; +	switch ((glui32)(ch) >> 8) {  \ +	case 3:  \ +		switch (ch) {  \ +		case 820:  \ +		case 821:  \ +		case 822:  \ +		case 823:  \ +		case 824:  \ +			return 1;  \ +		case 801:  \ +		case 802:  \ +		case 807:  \ +		case 808:  \ +			return 202;  \ +		case 795:  \ +			return 216;  \ +		case 790:  \ +		case 791:  \ +		case 792:  \ +		case 793:  \ +		case 796:  \ +		case 797:  \ +		case 798:  \ +		case 799:  \ +		case 800:  \ +		case 803:  \ +		case 804:  \ +		case 805:  \ +		case 806:  \ +		case 809:  \ +		case 810:  \ +		case 811:  \ +		case 812:  \ +		case 813:  \ +		case 814:  \ +		case 815:  \ +		case 816:  \ +		case 817:  \ +		case 818:  \ +		case 819:  \ +		case 825:  \ +		case 826:  \ +		case 827:  \ +		case 828:  \ +		case 839:  \ +		case 840:  \ +		case 841:  \ +		case 845:  \ +		case 846:  \ +		case 851:  \ +		case 852:  \ +		case 853:  \ +		case 854:  \ +			return 220;  \ +		case 768:  \ +		case 769:  \ +		case 770:  \ +		case 771:  \ +		case 772:  \ +		case 773:  \ +		case 774:  \ +		case 775:  \ +		case 776:  \ +		case 777:  \ +		case 778:  \ +		case 779:  \ +		case 780:  \ +		case 781:  \ +		case 782:  \ +		case 783:  \ +		case 784:  \ +		case 785:  \ +		case 786:  \ +		case 787:  \ +		case 788:  \ +		case 829:  \ +		case 830:  \ +		case 831:  \ +		case 832:  \ +		case 833:  \ +		case 834:  \ +		case 835:  \ +		case 836:  \ +		case 838:  \ +		case 842:  \ +		case 843:  \ +		case 844:  \ +		case 848:  \ +		case 849:  \ +		case 850:  \ +		case 855:  \ +		case 867:  \ +		case 868:  \ +		case 869:  \ +		case 870:  \ +		case 871:  \ +		case 872:  \ +		case 873:  \ +		case 874:  \ +		case 875:  \ +		case 876:  \ +		case 877:  \ +		case 878:  \ +		case 879:  \ +			return 230;  \ +		case 789:  \ +		case 794:  \ +			return 232;  \ +		case 863:  \ +		case 866:  \ +			return 233;  \ +		case 861:  \ +		case 862:  \ +		case 864:  \ +		case 865:  \ +			return 234;  \ +		case 837:  \ +			return 240;  \ +		}  \ +		return 0;  \ +	case 4:  \ +		switch (ch) {  \ +		case 1155:  \ +		case 1156:  \ +		case 1157:  \ +		case 1158:  \ +			return 230;  \ +		}  \ +		return 0;  \ +	case 5:  \ +		switch (ch) {  \ +		case 1456:  \ +			return 10;  \ +		case 1457:  \ +			return 11;  \ +		case 1458:  \ +			return 12;  \ +		case 1459:  \ +			return 13;  \ +		case 1460:  \ +			return 14;  \ +		case 1461:  \ +			return 15;  \ +		case 1462:  \ +			return 16;  \ +		case 1463:  \ +			return 17;  \ +		case 1464:  \ +			return 18;  \ +		case 1465:  \ +			return 19;  \ +		case 1467:  \ +			return 20;  \ +		case 1468:  \ +			return 21;  \ +		case 1469:  \ +			return 22;  \ +		case 1471:  \ +			return 23;  \ +		case 1473:  \ +			return 24;  \ +		case 1474:  \ +			return 25;  \ +		case 1425:  \ +		case 1430:  \ +		case 1435:  \ +		case 1443:  \ +		case 1444:  \ +		case 1445:  \ +		case 1446:  \ +		case 1447:  \ +		case 1450:  \ +			return 220;  \ +		case 1434:  \ +		case 1453:  \ +			return 222;  \ +		case 1454:  \ +			return 228;  \ +		case 1426:  \ +		case 1427:  \ +		case 1428:  \ +		case 1429:  \ +		case 1431:  \ +		case 1432:  \ +		case 1433:  \ +		case 1436:  \ +		case 1437:  \ +		case 1438:  \ +		case 1439:  \ +		case 1440:  \ +		case 1441:  \ +		case 1448:  \ +		case 1449:  \ +		case 1451:  \ +		case 1452:  \ +		case 1455:  \ +		case 1476:  \ +			return 230;  \ +		}  \ +		return 0;  \ +	case 6:  \ +		switch (ch) {  \ +		case 1611:  \ +			return 27;  \ +		case 1612:  \ +			return 28;  \ +		case 1613:  \ +			return 29;  \ +		case 1614:  \ +			return 30;  \ +		case 1615:  \ +			return 31;  \ +		case 1616:  \ +			return 32;  \ +		case 1617:  \ +			return 33;  \ +		case 1618:  \ +			return 34;  \ +		case 1648:  \ +			return 35;  \ +		case 1621:  \ +		case 1622:  \ +		case 1763:  \ +		case 1770:  \ +		case 1773:  \ +			return 220;  \ +		case 1552:  \ +		case 1553:  \ +		case 1554:  \ +		case 1555:  \ +		case 1556:  \ +		case 1557:  \ +		case 1619:  \ +		case 1620:  \ +		case 1623:  \ +		case 1624:  \ +		case 1750:  \ +		case 1751:  \ +		case 1752:  \ +		case 1753:  \ +		case 1754:  \ +		case 1755:  \ +		case 1756:  \ +		case 1759:  \ +		case 1760:  \ +		case 1761:  \ +		case 1762:  \ +		case 1764:  \ +		case 1767:  \ +		case 1768:  \ +		case 1771:  \ +		case 1772:  \ +			return 230;  \ +		}  \ +		return 0;  \ +	case 7:  \ +		switch (ch) {  \ +		case 1809:  \ +			return 36;  \ +		case 1841:  \ +		case 1844:  \ +		case 1847:  \ +		case 1848:  \ +		case 1849:  \ +		case 1851:  \ +		case 1852:  \ +		case 1854:  \ +		case 1858:  \ +		case 1860:  \ +		case 1862:  \ +		case 1864:  \ +			return 220;  \ +		case 1840:  \ +		case 1842:  \ +		case 1843:  \ +		case 1845:  \ +		case 1846:  \ +		case 1850:  \ +		case 1853:  \ +		case 1855:  \ +		case 1856:  \ +		case 1857:  \ +		case 1859:  \ +		case 1861:  \ +		case 1863:  \ +		case 1865:  \ +		case 1866:  \ +			return 230;  \ +		}  \ +		return 0;  \ +	case 9:  \ +		switch (ch) {  \ +		case 2364:  \ +		case 2492:  \ +			return 7;  \ +		case 2381:  \ +		case 2509:  \ +			return 9;  \ +		case 2386:  \ +			return 220;  \ +		case 2385:  \ +		case 2387:  \ +		case 2388:  \ +			return 230;  \ +		}  \ +		return 0;  \ +	case 10:  \ +		switch (ch) {  \ +		case 2620:  \ +		case 2748:  \ +			return 7;  \ +		case 2637:  \ +		case 2765:  \ +			return 9;  \ +		}  \ +		return 0;  \ +	case 11:  \ +		switch (ch) {  \ +		case 2876:  \ +			return 7;  \ +		case 2893:  \ +		case 3021:  \ +			return 9;  \ +		}  \ +		return 0;  \ +	case 12:  \ +		switch (ch) {  \ +		case 3260:  \ +			return 7;  \ +		case 3149:  \ +		case 3277:  \ +			return 9;  \ +		case 3157:  \ +			return 84;  \ +		case 3158:  \ +			return 91;  \ +		}  \ +		return 0;  \ +	case 13:  \ +		switch (ch) {  \ +		case 3405:  \ +		case 3530:  \ +			return 9;  \ +		}  \ +		return 0;  \ +	case 14:  \ +		switch (ch) {  \ +		case 3642:  \ +			return 9;  \ +		case 3640:  \ +		case 3641:  \ +			return 103;  \ +		case 3656:  \ +		case 3657:  \ +		case 3658:  \ +		case 3659:  \ +			return 107;  \ +		case 3768:  \ +		case 3769:  \ +			return 118;  \ +		case 3784:  \ +		case 3785:  \ +		case 3786:  \ +		case 3787:  \ +			return 122;  \ +		}  \ +		return 0;  \ +	case 15:  \ +		switch (ch) {  \ +		case 3972:  \ +			return 9;  \ +		case 3953:  \ +			return 129;  \ +		case 3954:  \ +		case 3962:  \ +		case 3963:  \ +		case 3964:  \ +		case 3965:  \ +		case 3968:  \ +			return 130;  \ +		case 3956:  \ +			return 132;  \ +		case 3897:  \ +			return 216;  \ +		case 3864:  \ +		case 3865:  \ +		case 3893:  \ +		case 3895:  \ +		case 4038:  \ +			return 220;  \ +		case 3970:  \ +		case 3971:  \ +		case 3974:  \ +		case 3975:  \ +			return 230;  \ +		}  \ +		return 0;  \ +	case 16:  \ +		switch (ch) {  \ +		case 4151:  \ +			return 7;  \ +		case 4153:  \ +			return 9;  \ +		}  \ +		return 0;  \ +	case 23:  \ +		switch (ch) {  \ +		case 5908:  \ +		case 5940:  \ +		case 6098:  \ +			return 9;  \ +		case 6109:  \ +			return 230;  \ +		}  \ +		return 0;  \ +	case 24:  \ +		switch (ch) {  \ +		case 6313:  \ +			return 228;  \ +		}  \ +		return 0;  \ +	case 25:  \ +		switch (ch) {  \ +		case 6459:  \ +			return 220;  \ +		case 6457:  \ +			return 222;  \ +		case 6458:  \ +			return 230;  \ +		}  \ +		return 0;  \ +	case 32:  \ +		switch (ch) {  \ +		case 8402:  \ +		case 8403:  \ +		case 8408:  \ +		case 8409:  \ +		case 8410:  \ +		case 8421:  \ +		case 8422:  \ +		case 8426:  \ +			return 1;  \ +		case 8424:  \ +			return 220;  \ +		case 8400:  \ +		case 8401:  \ +		case 8404:  \ +		case 8405:  \ +		case 8406:  \ +		case 8407:  \ +		case 8411:  \ +		case 8412:  \ +		case 8417:  \ +		case 8423:  \ +		case 8425:  \ +			return 230;  \ +		}  \ +		return 0;  \ +	case 48:  \ +		switch (ch) {  \ +		case 12441:  \ +		case 12442:  \ +			return 8;  \ +		case 12330:  \ +			return 218;  \ +		case 12333:  \ +			return 222;  \ +		case 12334:  \ +		case 12335:  \ +			return 224;  \ +		case 12331:  \ +			return 228;  \ +		case 12332:  \ +			return 232;  \ +		}  \ +		return 0;  \ +	case 251:  \ +		switch (ch) {  \ +		case 64286:  \ +			return 26;  \ +		}  \ +		return 0;  \ +	case 254:  \ +		switch (ch) {  \ +		case 65056:  \ +		case 65057:  \ +		case 65058:  \ +		case 65059:  \ +			return 230;  \ +		}  \ +		return 0;  \ +	case 465:  \ +		switch (ch) {  \ +		case 119143:  \ +		case 119144:  \ +		case 119145:  \ +			return 1;  \ +		case 119141:  \ +		case 119142:  \ +		case 119150:  \ +		case 119151:  \ +		case 119152:  \ +		case 119153:  \ +		case 119154:  \ +			return 216;  \ +		case 119163:  \ +		case 119164:  \ +		case 119165:  \ +		case 119166:  \ +		case 119167:  \ +		case 119168:  \ +		case 119169:  \ +		case 119170:  \ +		case 119178:  \ +		case 119179:  \ +			return 220;  \ +		case 119149:  \ +			return 226;  \ +		case 119173:  \ +		case 119174:  \ +		case 119175:  \ +		case 119176:  \ +		case 119177:  \ +		case 119210:  \ +		case 119211:  \ +		case 119212:  \ +		case 119213:  \ +			return 230;  \ +		}  \ +		return 0;  \ +	}  \ +	return 0;  #define RETURN_COMPOSITION(ch1, ch2)  \ -switch ((glui32)(ch1) >> 8) {  \ -case 0:  \ -switch (ch1) {  \ -    case 60:  \ -    switch (ch2) {  \ -        case 824: return 8814;  \ -    }  \ -    return 0;  \ -    case 61:  \ -    switch (ch2) {  \ -        case 824: return 8800;  \ -    }  \ -    return 0;  \ -    case 62:  \ -    switch (ch2) {  \ -        case 824: return 8815;  \ -    }  \ -    return 0;  \ -    case 65:  \ -    switch (ch2) {  \ -        case 768: return 192;  \ -        case 769: return 193;  \ -        case 770: return 194;  \ -        case 771: return 195;  \ -        case 772: return 256;  \ -        case 774: return 258;  \ -        case 775: return 550;  \ -        case 776: return 196;  \ -        case 777: return 7842;  \ -        case 778: return 197;  \ -        case 780: return 461;  \ -        case 783: return 512;  \ -        case 785: return 514;  \ -        case 803: return 7840;  \ -        case 805: return 7680;  \ -        case 808: return 260;  \ -    }  \ -    return 0;  \ -    case 66:  \ -    switch (ch2) {  \ -        case 775: return 7682;  \ -        case 803: return 7684;  \ -        case 817: return 7686;  \ -    }  \ -    return 0;  \ -    case 67:  \ -    switch (ch2) {  \ -        case 769: return 262;  \ -        case 770: return 264;  \ -        case 775: return 266;  \ -        case 780: return 268;  \ -        case 807: return 199;  \ -    }  \ -    return 0;  \ -    case 68:  \ -    switch (ch2) {  \ -        case 775: return 7690;  \ -        case 780: return 270;  \ -        case 803: return 7692;  \ -        case 807: return 7696;  \ -        case 813: return 7698;  \ -        case 817: return 7694;  \ -    }  \ -    return 0;  \ -    case 69:  \ -    switch (ch2) {  \ -        case 768: return 200;  \ -        case 769: return 201;  \ -        case 770: return 202;  \ -        case 771: return 7868;  \ -        case 772: return 274;  \ -        case 774: return 276;  \ -        case 775: return 278;  \ -        case 776: return 203;  \ -        case 777: return 7866;  \ -        case 780: return 282;  \ -        case 783: return 516;  \ -        case 785: return 518;  \ -        case 803: return 7864;  \ -        case 807: return 552;  \ -        case 808: return 280;  \ -        case 813: return 7704;  \ -        case 816: return 7706;  \ -    }  \ -    return 0;  \ -    case 70:  \ -    switch (ch2) {  \ -        case 775: return 7710;  \ -    }  \ -    return 0;  \ -    case 71:  \ -    switch (ch2) {  \ -        case 769: return 500;  \ -        case 770: return 284;  \ -        case 772: return 7712;  \ -        case 774: return 286;  \ -        case 775: return 288;  \ -        case 780: return 486;  \ -        case 807: return 290;  \ -    }  \ -    return 0;  \ -    case 72:  \ -    switch (ch2) {  \ -        case 770: return 292;  \ -        case 775: return 7714;  \ -        case 776: return 7718;  \ -        case 780: return 542;  \ -        case 803: return 7716;  \ -        case 807: return 7720;  \ -        case 814: return 7722;  \ -    }  \ -    return 0;  \ -    case 73:  \ -    switch (ch2) {  \ -        case 768: return 204;  \ -        case 769: return 205;  \ -        case 770: return 206;  \ -        case 771: return 296;  \ -        case 772: return 298;  \ -        case 774: return 300;  \ -        case 775: return 304;  \ -        case 776: return 207;  \ -        case 777: return 7880;  \ -        case 780: return 463;  \ -        case 783: return 520;  \ -        case 785: return 522;  \ -        case 803: return 7882;  \ -        case 808: return 302;  \ -        case 816: return 7724;  \ -    }  \ -    return 0;  \ -    case 74:  \ -    switch (ch2) {  \ -        case 770: return 308;  \ -    }  \ -    return 0;  \ -    case 75:  \ -    switch (ch2) {  \ -        case 769: return 7728;  \ -        case 780: return 488;  \ -        case 803: return 7730;  \ -        case 807: return 310;  \ -        case 817: return 7732;  \ -    }  \ -    return 0;  \ -    case 76:  \ -    switch (ch2) {  \ -        case 769: return 313;  \ -        case 780: return 317;  \ -        case 803: return 7734;  \ -        case 807: return 315;  \ -        case 813: return 7740;  \ -        case 817: return 7738;  \ -    }  \ -    return 0;  \ -    case 77:  \ -    switch (ch2) {  \ -        case 769: return 7742;  \ -        case 775: return 7744;  \ -        case 803: return 7746;  \ -    }  \ -    return 0;  \ -    case 78:  \ -    switch (ch2) {  \ -        case 768: return 504;  \ -        case 769: return 323;  \ -        case 771: return 209;  \ -        case 775: return 7748;  \ -        case 780: return 327;  \ -        case 803: return 7750;  \ -        case 807: return 325;  \ -        case 813: return 7754;  \ -        case 817: return 7752;  \ -    }  \ -    return 0;  \ -    case 79:  \ -    switch (ch2) {  \ -        case 768: return 210;  \ -        case 769: return 211;  \ -        case 770: return 212;  \ -        case 771: return 213;  \ -        case 772: return 332;  \ -        case 774: return 334;  \ -        case 775: return 558;  \ -        case 776: return 214;  \ -        case 777: return 7886;  \ -        case 779: return 336;  \ -        case 780: return 465;  \ -        case 783: return 524;  \ -        case 785: return 526;  \ -        case 795: return 416;  \ -        case 803: return 7884;  \ -        case 808: return 490;  \ -    }  \ -    return 0;  \ -    case 80:  \ -    switch (ch2) {  \ -        case 769: return 7764;  \ -        case 775: return 7766;  \ -    }  \ -    return 0;  \ -    case 82:  \ -    switch (ch2) {  \ -        case 769: return 340;  \ -        case 775: return 7768;  \ -        case 780: return 344;  \ -        case 783: return 528;  \ -        case 785: return 530;  \ -        case 803: return 7770;  \ -        case 807: return 342;  \ -        case 817: return 7774;  \ -    }  \ -    return 0;  \ -    case 83:  \ -    switch (ch2) {  \ -        case 769: return 346;  \ -        case 770: return 348;  \ -        case 775: return 7776;  \ -        case 780: return 352;  \ -        case 803: return 7778;  \ -        case 806: return 536;  \ -        case 807: return 350;  \ -    }  \ -    return 0;  \ -    case 84:  \ -    switch (ch2) {  \ -        case 775: return 7786;  \ -        case 780: return 356;  \ -        case 803: return 7788;  \ -        case 806: return 538;  \ -        case 807: return 354;  \ -        case 813: return 7792;  \ -        case 817: return 7790;  \ -    }  \ -    return 0;  \ -    case 85:  \ -    switch (ch2) {  \ -        case 768: return 217;  \ -        case 769: return 218;  \ -        case 770: return 219;  \ -        case 771: return 360;  \ -        case 772: return 362;  \ -        case 774: return 364;  \ -        case 776: return 220;  \ -        case 777: return 7910;  \ -        case 778: return 366;  \ -        case 779: return 368;  \ -        case 780: return 467;  \ -        case 783: return 532;  \ -        case 785: return 534;  \ -        case 795: return 431;  \ -        case 803: return 7908;  \ -        case 804: return 7794;  \ -        case 808: return 370;  \ -        case 813: return 7798;  \ -        case 816: return 7796;  \ -    }  \ -    return 0;  \ -    case 86:  \ -    switch (ch2) {  \ -        case 771: return 7804;  \ -        case 803: return 7806;  \ -    }  \ -    return 0;  \ -    case 87:  \ -    switch (ch2) {  \ -        case 768: return 7808;  \ -        case 769: return 7810;  \ -        case 770: return 372;  \ -        case 775: return 7814;  \ -        case 776: return 7812;  \ -        case 803: return 7816;  \ -    }  \ -    return 0;  \ -    case 88:  \ -    switch (ch2) {  \ -        case 775: return 7818;  \ -        case 776: return 7820;  \ -    }  \ -    return 0;  \ -    case 89:  \ -    switch (ch2) {  \ -        case 768: return 7922;  \ -        case 769: return 221;  \ -        case 770: return 374;  \ -        case 771: return 7928;  \ -        case 772: return 562;  \ -        case 775: return 7822;  \ -        case 776: return 376;  \ -        case 777: return 7926;  \ -        case 803: return 7924;  \ -    }  \ -    return 0;  \ -    case 90:  \ -    switch (ch2) {  \ -        case 769: return 377;  \ -        case 770: return 7824;  \ -        case 775: return 379;  \ -        case 780: return 381;  \ -        case 803: return 7826;  \ -        case 817: return 7828;  \ -    }  \ -    return 0;  \ -    case 97:  \ -    switch (ch2) {  \ -        case 768: return 224;  \ -        case 769: return 225;  \ -        case 770: return 226;  \ -        case 771: return 227;  \ -        case 772: return 257;  \ -        case 774: return 259;  \ -        case 775: return 551;  \ -        case 776: return 228;  \ -        case 777: return 7843;  \ -        case 778: return 229;  \ -        case 780: return 462;  \ -        case 783: return 513;  \ -        case 785: return 515;  \ -        case 803: return 7841;  \ -        case 805: return 7681;  \ -        case 808: return 261;  \ -    }  \ -    return 0;  \ -    case 98:  \ -    switch (ch2) {  \ -        case 775: return 7683;  \ -        case 803: return 7685;  \ -        case 817: return 7687;  \ -    }  \ -    return 0;  \ -    case 99:  \ -    switch (ch2) {  \ -        case 769: return 263;  \ -        case 770: return 265;  \ -        case 775: return 267;  \ -        case 780: return 269;  \ -        case 807: return 231;  \ -    }  \ -    return 0;  \ -    case 100:  \ -    switch (ch2) {  \ -        case 775: return 7691;  \ -        case 780: return 271;  \ -        case 803: return 7693;  \ -        case 807: return 7697;  \ -        case 813: return 7699;  \ -        case 817: return 7695;  \ -    }  \ -    return 0;  \ -    case 101:  \ -    switch (ch2) {  \ -        case 768: return 232;  \ -        case 769: return 233;  \ -        case 770: return 234;  \ -        case 771: return 7869;  \ -        case 772: return 275;  \ -        case 774: return 277;  \ -        case 775: return 279;  \ -        case 776: return 235;  \ -        case 777: return 7867;  \ -        case 780: return 283;  \ -        case 783: return 517;  \ -        case 785: return 519;  \ -        case 803: return 7865;  \ -        case 807: return 553;  \ -        case 808: return 281;  \ -        case 813: return 7705;  \ -        case 816: return 7707;  \ -    }  \ -    return 0;  \ -    case 102:  \ -    switch (ch2) {  \ -        case 775: return 7711;  \ -    }  \ -    return 0;  \ -    case 103:  \ -    switch (ch2) {  \ -        case 769: return 501;  \ -        case 770: return 285;  \ -        case 772: return 7713;  \ -        case 774: return 287;  \ -        case 775: return 289;  \ -        case 780: return 487;  \ -        case 807: return 291;  \ -    }  \ -    return 0;  \ -    case 104:  \ -    switch (ch2) {  \ -        case 770: return 293;  \ -        case 775: return 7715;  \ -        case 776: return 7719;  \ -        case 780: return 543;  \ -        case 803: return 7717;  \ -        case 807: return 7721;  \ -        case 814: return 7723;  \ -        case 817: return 7830;  \ -    }  \ -    return 0;  \ -    case 105:  \ -    switch (ch2) {  \ -        case 768: return 236;  \ -        case 769: return 237;  \ -        case 770: return 238;  \ -        case 771: return 297;  \ -        case 772: return 299;  \ -        case 774: return 301;  \ -        case 776: return 239;  \ -        case 777: return 7881;  \ -        case 780: return 464;  \ -        case 783: return 521;  \ -        case 785: return 523;  \ -        case 803: return 7883;  \ -        case 808: return 303;  \ -        case 816: return 7725;  \ -    }  \ -    return 0;  \ -    case 106:  \ -    switch (ch2) {  \ -        case 770: return 309;  \ -        case 780: return 496;  \ -    }  \ -    return 0;  \ -    case 107:  \ -    switch (ch2) {  \ -        case 769: return 7729;  \ -        case 780: return 489;  \ -        case 803: return 7731;  \ -        case 807: return 311;  \ -        case 817: return 7733;  \ -    }  \ -    return 0;  \ -    case 108:  \ -    switch (ch2) {  \ -        case 769: return 314;  \ -        case 780: return 318;  \ -        case 803: return 7735;  \ -        case 807: return 316;  \ -        case 813: return 7741;  \ -        case 817: return 7739;  \ -    }  \ -    return 0;  \ -    case 109:  \ -    switch (ch2) {  \ -        case 769: return 7743;  \ -        case 775: return 7745;  \ -        case 803: return 7747;  \ -    }  \ -    return 0;  \ -    case 110:  \ -    switch (ch2) {  \ -        case 768: return 505;  \ -        case 769: return 324;  \ -        case 771: return 241;  \ -        case 775: return 7749;  \ -        case 780: return 328;  \ -        case 803: return 7751;  \ -        case 807: return 326;  \ -        case 813: return 7755;  \ -        case 817: return 7753;  \ -    }  \ -    return 0;  \ -    case 111:  \ -    switch (ch2) {  \ -        case 768: return 242;  \ -        case 769: return 243;  \ -        case 770: return 244;  \ -        case 771: return 245;  \ -        case 772: return 333;  \ -        case 774: return 335;  \ -        case 775: return 559;  \ -        case 776: return 246;  \ -        case 777: return 7887;  \ -        case 779: return 337;  \ -        case 780: return 466;  \ -        case 783: return 525;  \ -        case 785: return 527;  \ -        case 795: return 417;  \ -        case 803: return 7885;  \ -        case 808: return 491;  \ -    }  \ -    return 0;  \ -    case 112:  \ -    switch (ch2) {  \ -        case 769: return 7765;  \ -        case 775: return 7767;  \ -    }  \ -    return 0;  \ -    case 114:  \ -    switch (ch2) {  \ -        case 769: return 341;  \ -        case 775: return 7769;  \ -        case 780: return 345;  \ -        case 783: return 529;  \ -        case 785: return 531;  \ -        case 803: return 7771;  \ -        case 807: return 343;  \ -        case 817: return 7775;  \ -    }  \ -    return 0;  \ -    case 115:  \ -    switch (ch2) {  \ -        case 769: return 347;  \ -        case 770: return 349;  \ -        case 775: return 7777;  \ -        case 780: return 353;  \ -        case 803: return 7779;  \ -        case 806: return 537;  \ -        case 807: return 351;  \ -    }  \ -    return 0;  \ -    case 116:  \ -    switch (ch2) {  \ -        case 775: return 7787;  \ -        case 776: return 7831;  \ -        case 780: return 357;  \ -        case 803: return 7789;  \ -        case 806: return 539;  \ -        case 807: return 355;  \ -        case 813: return 7793;  \ -        case 817: return 7791;  \ -    }  \ -    return 0;  \ -    case 117:  \ -    switch (ch2) {  \ -        case 768: return 249;  \ -        case 769: return 250;  \ -        case 770: return 251;  \ -        case 771: return 361;  \ -        case 772: return 363;  \ -        case 774: return 365;  \ -        case 776: return 252;  \ -        case 777: return 7911;  \ -        case 778: return 367;  \ -        case 779: return 369;  \ -        case 780: return 468;  \ -        case 783: return 533;  \ -        case 785: return 535;  \ -        case 795: return 432;  \ -        case 803: return 7909;  \ -        case 804: return 7795;  \ -        case 808: return 371;  \ -        case 813: return 7799;  \ -        case 816: return 7797;  \ -    }  \ -    return 0;  \ -    case 118:  \ -    switch (ch2) {  \ -        case 771: return 7805;  \ -        case 803: return 7807;  \ -    }  \ -    return 0;  \ -    case 119:  \ -    switch (ch2) {  \ -        case 768: return 7809;  \ -        case 769: return 7811;  \ -        case 770: return 373;  \ -        case 775: return 7815;  \ -        case 776: return 7813;  \ -        case 778: return 7832;  \ -        case 803: return 7817;  \ -    }  \ -    return 0;  \ -    case 120:  \ -    switch (ch2) {  \ -        case 775: return 7819;  \ -        case 776: return 7821;  \ -    }  \ -    return 0;  \ -    case 121:  \ -    switch (ch2) {  \ -        case 768: return 7923;  \ -        case 769: return 253;  \ -        case 770: return 375;  \ -        case 771: return 7929;  \ -        case 772: return 563;  \ -        case 775: return 7823;  \ -        case 776: return 255;  \ -        case 777: return 7927;  \ -        case 778: return 7833;  \ -        case 803: return 7925;  \ -    }  \ -    return 0;  \ -    case 122:  \ -    switch (ch2) {  \ -        case 769: return 378;  \ -        case 770: return 7825;  \ -        case 775: return 380;  \ -        case 780: return 382;  \ -        case 803: return 7827;  \ -        case 817: return 7829;  \ -    }  \ -    return 0;  \ -    case 168:  \ -    switch (ch2) {  \ -        case 768: return 8173;  \ -        case 769: return 901;  \ -        case 834: return 8129;  \ -    }  \ -    return 0;  \ -    case 194:  \ -    switch (ch2) {  \ -        case 768: return 7846;  \ -        case 769: return 7844;  \ -        case 771: return 7850;  \ -        case 777: return 7848;  \ -    }  \ -    return 0;  \ -    case 196:  \ -    switch (ch2) {  \ -        case 772: return 478;  \ -    }  \ -    return 0;  \ -    case 197:  \ -    switch (ch2) {  \ -        case 769: return 506;  \ -    }  \ -    return 0;  \ -    case 198:  \ -    switch (ch2) {  \ -        case 769: return 508;  \ -        case 772: return 482;  \ -    }  \ -    return 0;  \ -    case 199:  \ -    switch (ch2) {  \ -        case 769: return 7688;  \ -    }  \ -    return 0;  \ -    case 202:  \ -    switch (ch2) {  \ -        case 768: return 7872;  \ -        case 769: return 7870;  \ -        case 771: return 7876;  \ -        case 777: return 7874;  \ -    }  \ -    return 0;  \ -    case 207:  \ -    switch (ch2) {  \ -        case 769: return 7726;  \ -    }  \ -    return 0;  \ -    case 212:  \ -    switch (ch2) {  \ -        case 768: return 7890;  \ -        case 769: return 7888;  \ -        case 771: return 7894;  \ -        case 777: return 7892;  \ -    }  \ -    return 0;  \ -    case 213:  \ -    switch (ch2) {  \ -        case 769: return 7756;  \ -        case 772: return 556;  \ -        case 776: return 7758;  \ -    }  \ -    return 0;  \ -    case 214:  \ -    switch (ch2) {  \ -        case 772: return 554;  \ -    }  \ -    return 0;  \ -    case 216:  \ -    switch (ch2) {  \ -        case 769: return 510;  \ -    }  \ -    return 0;  \ -    case 220:  \ -    switch (ch2) {  \ -        case 768: return 475;  \ -        case 769: return 471;  \ -        case 772: return 469;  \ -        case 780: return 473;  \ -    }  \ -    return 0;  \ -    case 226:  \ -    switch (ch2) {  \ -        case 768: return 7847;  \ -        case 769: return 7845;  \ -        case 771: return 7851;  \ -        case 777: return 7849;  \ -    }  \ -    return 0;  \ -    case 228:  \ -    switch (ch2) {  \ -        case 772: return 479;  \ -    }  \ -    return 0;  \ -    case 229:  \ -    switch (ch2) {  \ -        case 769: return 507;  \ -    }  \ -    return 0;  \ -    case 230:  \ -    switch (ch2) {  \ -        case 769: return 509;  \ -        case 772: return 483;  \ -    }  \ -    return 0;  \ -    case 231:  \ -    switch (ch2) {  \ -        case 769: return 7689;  \ -    }  \ -    return 0;  \ -    case 234:  \ -    switch (ch2) {  \ -        case 768: return 7873;  \ -        case 769: return 7871;  \ -        case 771: return 7877;  \ -        case 777: return 7875;  \ -    }  \ -    return 0;  \ -    case 239:  \ -    switch (ch2) {  \ -        case 769: return 7727;  \ -    }  \ -    return 0;  \ -    case 244:  \ -    switch (ch2) {  \ -        case 768: return 7891;  \ -        case 769: return 7889;  \ -        case 771: return 7895;  \ -        case 777: return 7893;  \ -    }  \ -    return 0;  \ -    case 245:  \ -    switch (ch2) {  \ -        case 769: return 7757;  \ -        case 772: return 557;  \ -        case 776: return 7759;  \ -    }  \ -    return 0;  \ -    case 246:  \ -    switch (ch2) {  \ -        case 772: return 555;  \ -    }  \ -    return 0;  \ -    case 248:  \ -    switch (ch2) {  \ -        case 769: return 511;  \ -    }  \ -    return 0;  \ -    case 252:  \ -    switch (ch2) {  \ -        case 768: return 476;  \ -        case 769: return 472;  \ -        case 772: return 470;  \ -        case 780: return 474;  \ -    }  \ -    return 0;  \ -}  \ -return 0;  \ -case 1:  \ -switch (ch1) {  \ -    case 258:  \ -    switch (ch2) {  \ -        case 768: return 7856;  \ -        case 769: return 7854;  \ -        case 771: return 7860;  \ -        case 777: return 7858;  \ -    }  \ -    return 0;  \ -    case 259:  \ -    switch (ch2) {  \ -        case 768: return 7857;  \ -        case 769: return 7855;  \ -        case 771: return 7861;  \ -        case 777: return 7859;  \ -    }  \ -    return 0;  \ -    case 274:  \ -    switch (ch2) {  \ -        case 768: return 7700;  \ -        case 769: return 7702;  \ -    }  \ -    return 0;  \ -    case 275:  \ -    switch (ch2) {  \ -        case 768: return 7701;  \ -        case 769: return 7703;  \ -    }  \ -    return 0;  \ -    case 332:  \ -    switch (ch2) {  \ -        case 768: return 7760;  \ -        case 769: return 7762;  \ -    }  \ -    return 0;  \ -    case 333:  \ -    switch (ch2) {  \ -        case 768: return 7761;  \ -        case 769: return 7763;  \ -    }  \ -    return 0;  \ -    case 346:  \ -    switch (ch2) {  \ -        case 775: return 7780;  \ -    }  \ -    return 0;  \ -    case 347:  \ -    switch (ch2) {  \ -        case 775: return 7781;  \ -    }  \ -    return 0;  \ -    case 352:  \ -    switch (ch2) {  \ -        case 775: return 7782;  \ -    }  \ -    return 0;  \ -    case 353:  \ -    switch (ch2) {  \ -        case 775: return 7783;  \ -    }  \ -    return 0;  \ -    case 360:  \ -    switch (ch2) {  \ -        case 769: return 7800;  \ -    }  \ -    return 0;  \ -    case 361:  \ -    switch (ch2) {  \ -        case 769: return 7801;  \ -    }  \ -    return 0;  \ -    case 362:  \ -    switch (ch2) {  \ -        case 776: return 7802;  \ -    }  \ -    return 0;  \ -    case 363:  \ -    switch (ch2) {  \ -        case 776: return 7803;  \ -    }  \ -    return 0;  \ -    case 383:  \ -    switch (ch2) {  \ -        case 775: return 7835;  \ -    }  \ -    return 0;  \ -    case 416:  \ -    switch (ch2) {  \ -        case 768: return 7900;  \ -        case 769: return 7898;  \ -        case 771: return 7904;  \ -        case 777: return 7902;  \ -        case 803: return 7906;  \ -    }  \ -    return 0;  \ -    case 417:  \ -    switch (ch2) {  \ -        case 768: return 7901;  \ -        case 769: return 7899;  \ -        case 771: return 7905;  \ -        case 777: return 7903;  \ -        case 803: return 7907;  \ -    }  \ -    return 0;  \ -    case 431:  \ -    switch (ch2) {  \ -        case 768: return 7914;  \ -        case 769: return 7912;  \ -        case 771: return 7918;  \ -        case 777: return 7916;  \ -        case 803: return 7920;  \ -    }  \ -    return 0;  \ -    case 432:  \ -    switch (ch2) {  \ -        case 768: return 7915;  \ -        case 769: return 7913;  \ -        case 771: return 7919;  \ -        case 777: return 7917;  \ -        case 803: return 7921;  \ -    }  \ -    return 0;  \ -    case 439:  \ -    switch (ch2) {  \ -        case 780: return 494;  \ -    }  \ -    return 0;  \ -    case 490:  \ -    switch (ch2) {  \ -        case 772: return 492;  \ -    }  \ -    return 0;  \ -    case 491:  \ -    switch (ch2) {  \ -        case 772: return 493;  \ -    }  \ -    return 0;  \ -}  \ -return 0;  \ -case 2:  \ -switch (ch1) {  \ -    case 550:  \ -    switch (ch2) {  \ -        case 772: return 480;  \ -    }  \ -    return 0;  \ -    case 551:  \ -    switch (ch2) {  \ -        case 772: return 481;  \ -    }  \ -    return 0;  \ -    case 552:  \ -    switch (ch2) {  \ -        case 774: return 7708;  \ -    }  \ -    return 0;  \ -    case 553:  \ -    switch (ch2) {  \ -        case 774: return 7709;  \ -    }  \ -    return 0;  \ -    case 558:  \ -    switch (ch2) {  \ -        case 772: return 560;  \ -    }  \ -    return 0;  \ -    case 559:  \ -    switch (ch2) {  \ -        case 772: return 561;  \ -    }  \ -    return 0;  \ -    case 658:  \ -    switch (ch2) {  \ -        case 780: return 495;  \ -    }  \ -    return 0;  \ -}  \ -return 0;  \ -case 3:  \ -switch (ch1) {  \ -    case 776:  \ -    switch (ch2) {  \ -        case 769: return 836;  \ -    }  \ -    return 0;  \ -    case 913:  \ -    switch (ch2) {  \ -        case 768: return 8122;  \ -        case 769: return 902;  \ -        case 772: return 8121;  \ -        case 774: return 8120;  \ -        case 787: return 7944;  \ -        case 788: return 7945;  \ -        case 837: return 8124;  \ -    }  \ -    return 0;  \ -    case 917:  \ -    switch (ch2) {  \ -        case 768: return 8136;  \ -        case 769: return 904;  \ -        case 787: return 7960;  \ -        case 788: return 7961;  \ -    }  \ -    return 0;  \ -    case 919:  \ -    switch (ch2) {  \ -        case 768: return 8138;  \ -        case 769: return 905;  \ -        case 787: return 7976;  \ -        case 788: return 7977;  \ -        case 837: return 8140;  \ -    }  \ -    return 0;  \ -    case 921:  \ -    switch (ch2) {  \ -        case 768: return 8154;  \ -        case 769: return 906;  \ -        case 772: return 8153;  \ -        case 774: return 8152;  \ -        case 776: return 938;  \ -        case 787: return 7992;  \ -        case 788: return 7993;  \ -    }  \ -    return 0;  \ -    case 927:  \ -    switch (ch2) {  \ -        case 768: return 8184;  \ -        case 769: return 908;  \ -        case 787: return 8008;  \ -        case 788: return 8009;  \ -    }  \ -    return 0;  \ -    case 929:  \ -    switch (ch2) {  \ -        case 788: return 8172;  \ -    }  \ -    return 0;  \ -    case 933:  \ -    switch (ch2) {  \ -        case 768: return 8170;  \ -        case 769: return 910;  \ -        case 772: return 8169;  \ -        case 774: return 8168;  \ -        case 776: return 939;  \ -        case 788: return 8025;  \ -    }  \ -    return 0;  \ -    case 937:  \ -    switch (ch2) {  \ -        case 768: return 8186;  \ -        case 769: return 911;  \ -        case 787: return 8040;  \ -        case 788: return 8041;  \ -        case 837: return 8188;  \ -    }  \ -    return 0;  \ -    case 940:  \ -    switch (ch2) {  \ -        case 837: return 8116;  \ -    }  \ -    return 0;  \ -    case 942:  \ -    switch (ch2) {  \ -        case 837: return 8132;  \ -    }  \ -    return 0;  \ -    case 945:  \ -    switch (ch2) {  \ -        case 768: return 8048;  \ -        case 769: return 940;  \ -        case 772: return 8113;  \ -        case 774: return 8112;  \ -        case 787: return 7936;  \ -        case 788: return 7937;  \ -        case 834: return 8118;  \ -        case 837: return 8115;  \ -    }  \ -    return 0;  \ -    case 949:  \ -    switch (ch2) {  \ -        case 768: return 8050;  \ -        case 769: return 941;  \ -        case 787: return 7952;  \ -        case 788: return 7953;  \ -    }  \ -    return 0;  \ -    case 951:  \ -    switch (ch2) {  \ -        case 768: return 8052;  \ -        case 769: return 942;  \ -        case 787: return 7968;  \ -        case 788: return 7969;  \ -        case 834: return 8134;  \ -        case 837: return 8131;  \ -    }  \ -    return 0;  \ -    case 953:  \ -    switch (ch2) {  \ -        case 768: return 8054;  \ -        case 769: return 943;  \ -        case 772: return 8145;  \ -        case 774: return 8144;  \ -        case 776: return 970;  \ -        case 787: return 7984;  \ -        case 788: return 7985;  \ -        case 834: return 8150;  \ -    }  \ -    return 0;  \ -    case 959:  \ -    switch (ch2) {  \ -        case 768: return 8056;  \ -        case 769: return 972;  \ -        case 787: return 8000;  \ -        case 788: return 8001;  \ -    }  \ -    return 0;  \ -    case 961:  \ -    switch (ch2) {  \ -        case 787: return 8164;  \ -        case 788: return 8165;  \ -    }  \ -    return 0;  \ -    case 965:  \ -    switch (ch2) {  \ -        case 768: return 8058;  \ -        case 769: return 973;  \ -        case 772: return 8161;  \ -        case 774: return 8160;  \ -        case 776: return 971;  \ -        case 787: return 8016;  \ -        case 788: return 8017;  \ -        case 834: return 8166;  \ -    }  \ -    return 0;  \ -    case 969:  \ -    switch (ch2) {  \ -        case 768: return 8060;  \ -        case 769: return 974;  \ -        case 787: return 8032;  \ -        case 788: return 8033;  \ -        case 834: return 8182;  \ -        case 837: return 8179;  \ -    }  \ -    return 0;  \ -    case 970:  \ -    switch (ch2) {  \ -        case 768: return 8146;  \ -        case 769: return 912;  \ -        case 834: return 8151;  \ -    }  \ -    return 0;  \ -    case 971:  \ -    switch (ch2) {  \ -        case 768: return 8162;  \ -        case 769: return 944;  \ -        case 834: return 8167;  \ -    }  \ -    return 0;  \ -    case 974:  \ -    switch (ch2) {  \ -        case 837: return 8180;  \ -    }  \ -    return 0;  \ -    case 978:  \ -    switch (ch2) {  \ -        case 769: return 979;  \ -        case 776: return 980;  \ -    }  \ -    return 0;  \ -}  \ -return 0;  \ -case 4:  \ -switch (ch1) {  \ -    case 1030:  \ -    switch (ch2) {  \ -        case 776: return 1031;  \ -    }  \ -    return 0;  \ -    case 1040:  \ -    switch (ch2) {  \ -        case 774: return 1232;  \ -        case 776: return 1234;  \ -    }  \ -    return 0;  \ -    case 1043:  \ -    switch (ch2) {  \ -        case 769: return 1027;  \ -    }  \ -    return 0;  \ -    case 1045:  \ -    switch (ch2) {  \ -        case 768: return 1024;  \ -        case 774: return 1238;  \ -        case 776: return 1025;  \ -    }  \ -    return 0;  \ -    case 1046:  \ -    switch (ch2) {  \ -        case 774: return 1217;  \ -        case 776: return 1244;  \ -    }  \ -    return 0;  \ -    case 1047:  \ -    switch (ch2) {  \ -        case 776: return 1246;  \ -    }  \ -    return 0;  \ -    case 1048:  \ -    switch (ch2) {  \ -        case 768: return 1037;  \ -        case 772: return 1250;  \ -        case 774: return 1049;  \ -        case 776: return 1252;  \ -    }  \ -    return 0;  \ -    case 1050:  \ -    switch (ch2) {  \ -        case 769: return 1036;  \ -    }  \ -    return 0;  \ -    case 1054:  \ -    switch (ch2) {  \ -        case 776: return 1254;  \ -    }  \ -    return 0;  \ -    case 1059:  \ -    switch (ch2) {  \ -        case 772: return 1262;  \ -        case 774: return 1038;  \ -        case 776: return 1264;  \ -        case 779: return 1266;  \ -    }  \ -    return 0;  \ -    case 1063:  \ -    switch (ch2) {  \ -        case 776: return 1268;  \ -    }  \ -    return 0;  \ -    case 1067:  \ -    switch (ch2) {  \ -        case 776: return 1272;  \ -    }  \ -    return 0;  \ -    case 1069:  \ -    switch (ch2) {  \ -        case 776: return 1260;  \ -    }  \ -    return 0;  \ -    case 1072:  \ -    switch (ch2) {  \ -        case 774: return 1233;  \ -        case 776: return 1235;  \ -    }  \ -    return 0;  \ -    case 1075:  \ -    switch (ch2) {  \ -        case 769: return 1107;  \ -    }  \ -    return 0;  \ -    case 1077:  \ -    switch (ch2) {  \ -        case 768: return 1104;  \ -        case 774: return 1239;  \ -        case 776: return 1105;  \ -    }  \ -    return 0;  \ -    case 1078:  \ -    switch (ch2) {  \ -        case 774: return 1218;  \ -        case 776: return 1245;  \ -    }  \ -    return 0;  \ -    case 1079:  \ -    switch (ch2) {  \ -        case 776: return 1247;  \ -    }  \ -    return 0;  \ -    case 1080:  \ -    switch (ch2) {  \ -        case 768: return 1117;  \ -        case 772: return 1251;  \ -        case 774: return 1081;  \ -        case 776: return 1253;  \ -    }  \ -    return 0;  \ -    case 1082:  \ -    switch (ch2) {  \ -        case 769: return 1116;  \ -    }  \ -    return 0;  \ -    case 1086:  \ -    switch (ch2) {  \ -        case 776: return 1255;  \ -    }  \ -    return 0;  \ -    case 1091:  \ -    switch (ch2) {  \ -        case 772: return 1263;  \ -        case 774: return 1118;  \ -        case 776: return 1265;  \ -        case 779: return 1267;  \ -    }  \ -    return 0;  \ -    case 1095:  \ -    switch (ch2) {  \ -        case 776: return 1269;  \ -    }  \ -    return 0;  \ -    case 1099:  \ -    switch (ch2) {  \ -        case 776: return 1273;  \ -    }  \ -    return 0;  \ -    case 1101:  \ -    switch (ch2) {  \ -        case 776: return 1261;  \ -    }  \ -    return 0;  \ -    case 1110:  \ -    switch (ch2) {  \ -        case 776: return 1111;  \ -    }  \ -    return 0;  \ -    case 1140:  \ -    switch (ch2) {  \ -        case 783: return 1142;  \ -    }  \ -    return 0;  \ -    case 1141:  \ -    switch (ch2) {  \ -        case 783: return 1143;  \ -    }  \ -    return 0;  \ -    case 1240:  \ -    switch (ch2) {  \ -        case 776: return 1242;  \ -    }  \ -    return 0;  \ -    case 1241:  \ -    switch (ch2) {  \ -        case 776: return 1243;  \ -    }  \ -    return 0;  \ -    case 1256:  \ -    switch (ch2) {  \ -        case 776: return 1258;  \ -    }  \ -    return 0;  \ -    case 1257:  \ -    switch (ch2) {  \ -        case 776: return 1259;  \ -    }  \ -    return 0;  \ -}  \ -return 0;  \ -case 5:  \ -switch (ch1) {  \ -    case 1488:  \ -    switch (ch2) {  \ -        case 1463: return 64302;  \ -        case 1464: return 64303;  \ -        case 1468: return 64304;  \ -    }  \ -    return 0;  \ -    case 1489:  \ -    switch (ch2) {  \ -        case 1468: return 64305;  \ -        case 1471: return 64332;  \ -    }  \ -    return 0;  \ -    case 1490:  \ -    switch (ch2) {  \ -        case 1468: return 64306;  \ -    }  \ -    return 0;  \ -    case 1491:  \ -    switch (ch2) {  \ -        case 1468: return 64307;  \ -    }  \ -    return 0;  \ -    case 1492:  \ -    switch (ch2) {  \ -        case 1468: return 64308;  \ -    }  \ -    return 0;  \ -    case 1493:  \ -    switch (ch2) {  \ -        case 1465: return 64331;  \ -        case 1468: return 64309;  \ -    }  \ -    return 0;  \ -    case 1494:  \ -    switch (ch2) {  \ -        case 1468: return 64310;  \ -    }  \ -    return 0;  \ -    case 1496:  \ -    switch (ch2) {  \ -        case 1468: return 64312;  \ -    }  \ -    return 0;  \ -    case 1497:  \ -    switch (ch2) {  \ -        case 1460: return 64285;  \ -        case 1468: return 64313;  \ -    }  \ -    return 0;  \ -    case 1498:  \ -    switch (ch2) {  \ -        case 1468: return 64314;  \ -    }  \ -    return 0;  \ -    case 1499:  \ -    switch (ch2) {  \ -        case 1468: return 64315;  \ -        case 1471: return 64333;  \ -    }  \ -    return 0;  \ -    case 1500:  \ -    switch (ch2) {  \ -        case 1468: return 64316;  \ -    }  \ -    return 0;  \ -    case 1502:  \ -    switch (ch2) {  \ -        case 1468: return 64318;  \ -    }  \ -    return 0;  \ -    case 1504:  \ -    switch (ch2) {  \ -        case 1468: return 64320;  \ -    }  \ -    return 0;  \ -    case 1505:  \ -    switch (ch2) {  \ -        case 1468: return 64321;  \ -    }  \ -    return 0;  \ -    case 1507:  \ -    switch (ch2) {  \ -        case 1468: return 64323;  \ -    }  \ -    return 0;  \ -    case 1508:  \ -    switch (ch2) {  \ -        case 1468: return 64324;  \ -        case 1471: return 64334;  \ -    }  \ -    return 0;  \ -    case 1510:  \ -    switch (ch2) {  \ -        case 1468: return 64326;  \ -    }  \ -    return 0;  \ -    case 1511:  \ -    switch (ch2) {  \ -        case 1468: return 64327;  \ -    }  \ -    return 0;  \ -    case 1512:  \ -    switch (ch2) {  \ -        case 1468: return 64328;  \ -    }  \ -    return 0;  \ -    case 1513:  \ -    switch (ch2) {  \ -        case 1468: return 64329;  \ -        case 1473: return 64298;  \ -        case 1474: return 64299;  \ -    }  \ -    return 0;  \ -    case 1514:  \ -    switch (ch2) {  \ -        case 1468: return 64330;  \ -    }  \ -    return 0;  \ -    case 1522:  \ -    switch (ch2) {  \ -        case 1463: return 64287;  \ -    }  \ -    return 0;  \ -}  \ -return 0;  \ -case 6:  \ -switch (ch1) {  \ -    case 1575:  \ -    switch (ch2) {  \ -        case 1619: return 1570;  \ -        case 1620: return 1571;  \ -        case 1621: return 1573;  \ -    }  \ -    return 0;  \ -    case 1608:  \ -    switch (ch2) {  \ -        case 1620: return 1572;  \ -    }  \ -    return 0;  \ -    case 1610:  \ -    switch (ch2) {  \ -        case 1620: return 1574;  \ -    }  \ -    return 0;  \ -    case 1729:  \ -    switch (ch2) {  \ -        case 1620: return 1730;  \ -    }  \ -    return 0;  \ -    case 1746:  \ -    switch (ch2) {  \ -        case 1620: return 1747;  \ -    }  \ -    return 0;  \ -    case 1749:  \ -    switch (ch2) {  \ -        case 1620: return 1728;  \ -    }  \ -    return 0;  \ -}  \ -return 0;  \ -case 9:  \ -switch (ch1) {  \ -    case 2325:  \ -    switch (ch2) {  \ -        case 2364: return 2392;  \ -    }  \ -    return 0;  \ -    case 2326:  \ -    switch (ch2) {  \ -        case 2364: return 2393;  \ -    }  \ -    return 0;  \ -    case 2327:  \ -    switch (ch2) {  \ -        case 2364: return 2394;  \ -    }  \ -    return 0;  \ -    case 2332:  \ -    switch (ch2) {  \ -        case 2364: return 2395;  \ -    }  \ -    return 0;  \ -    case 2337:  \ -    switch (ch2) {  \ -        case 2364: return 2396;  \ -    }  \ -    return 0;  \ -    case 2338:  \ -    switch (ch2) {  \ -        case 2364: return 2397;  \ -    }  \ -    return 0;  \ -    case 2344:  \ -    switch (ch2) {  \ -        case 2364: return 2345;  \ -    }  \ -    return 0;  \ -    case 2347:  \ -    switch (ch2) {  \ -        case 2364: return 2398;  \ -    }  \ -    return 0;  \ -    case 2351:  \ -    switch (ch2) {  \ -        case 2364: return 2399;  \ -    }  \ -    return 0;  \ -    case 2352:  \ -    switch (ch2) {  \ -        case 2364: return 2353;  \ -    }  \ -    return 0;  \ -    case 2355:  \ -    switch (ch2) {  \ -        case 2364: return 2356;  \ -    }  \ -    return 0;  \ -    case 2465:  \ -    switch (ch2) {  \ -        case 2492: return 2524;  \ -    }  \ -    return 0;  \ -    case 2466:  \ -    switch (ch2) {  \ -        case 2492: return 2525;  \ -    }  \ -    return 0;  \ -    case 2479:  \ -    switch (ch2) {  \ -        case 2492: return 2527;  \ -    }  \ -    return 0;  \ -    case 2503:  \ -    switch (ch2) {  \ -        case 2494: return 2507;  \ -        case 2519: return 2508;  \ -    }  \ -    return 0;  \ -}  \ -return 0;  \ -case 10:  \ -switch (ch1) {  \ -    case 2582:  \ -    switch (ch2) {  \ -        case 2620: return 2649;  \ -    }  \ -    return 0;  \ -    case 2583:  \ -    switch (ch2) {  \ -        case 2620: return 2650;  \ -    }  \ -    return 0;  \ -    case 2588:  \ -    switch (ch2) {  \ -        case 2620: return 2651;  \ -    }  \ -    return 0;  \ -    case 2603:  \ -    switch (ch2) {  \ -        case 2620: return 2654;  \ -    }  \ -    return 0;  \ -    case 2610:  \ -    switch (ch2) {  \ -        case 2620: return 2611;  \ -    }  \ -    return 0;  \ -    case 2616:  \ -    switch (ch2) {  \ -        case 2620: return 2614;  \ -    }  \ -    return 0;  \ -}  \ -return 0;  \ -case 11:  \ -switch (ch1) {  \ -    case 2849:  \ -    switch (ch2) {  \ -        case 2876: return 2908;  \ -    }  \ -    return 0;  \ -    case 2850:  \ -    switch (ch2) {  \ -        case 2876: return 2909;  \ -    }  \ -    return 0;  \ -    case 2887:  \ -    switch (ch2) {  \ -        case 2878: return 2891;  \ -        case 2902: return 2888;  \ -        case 2903: return 2892;  \ -    }  \ -    return 0;  \ -    case 2962:  \ -    switch (ch2) {  \ -        case 3031: return 2964;  \ -    }  \ -    return 0;  \ -    case 3014:  \ -    switch (ch2) {  \ -        case 3006: return 3018;  \ -        case 3031: return 3020;  \ -    }  \ -    return 0;  \ -    case 3015:  \ -    switch (ch2) {  \ -        case 3006: return 3019;  \ -    }  \ -    return 0;  \ -}  \ -return 0;  \ -case 12:  \ -switch (ch1) {  \ -    case 3142:  \ -    switch (ch2) {  \ -        case 3158: return 3144;  \ -    }  \ -    return 0;  \ -    case 3263:  \ -    switch (ch2) {  \ -        case 3285: return 3264;  \ -    }  \ -    return 0;  \ -    case 3270:  \ -    switch (ch2) {  \ -        case 3266: return 3274;  \ -        case 3285: return 3271;  \ -        case 3286: return 3272;  \ -    }  \ -    return 0;  \ -    case 3274:  \ -    switch (ch2) {  \ -        case 3285: return 3275;  \ -    }  \ -    return 0;  \ -}  \ -return 0;  \ -case 13:  \ -switch (ch1) {  \ -    case 3398:  \ -    switch (ch2) {  \ -        case 3390: return 3402;  \ -        case 3415: return 3404;  \ -    }  \ -    return 0;  \ -    case 3399:  \ -    switch (ch2) {  \ -        case 3390: return 3403;  \ -    }  \ -    return 0;  \ -    case 3545:  \ -    switch (ch2) {  \ -        case 3530: return 3546;  \ -        case 3535: return 3548;  \ -        case 3551: return 3550;  \ -    }  \ -    return 0;  \ -    case 3548:  \ -    switch (ch2) {  \ -        case 3530: return 3549;  \ -    }  \ -    return 0;  \ -}  \ -return 0;  \ -case 15:  \ -switch (ch1) {  \ -    case 3904:  \ -    switch (ch2) {  \ -        case 4021: return 3945;  \ -    }  \ -    return 0;  \ -    case 3906:  \ -    switch (ch2) {  \ -        case 4023: return 3907;  \ -    }  \ -    return 0;  \ -    case 3916:  \ -    switch (ch2) {  \ -        case 4023: return 3917;  \ -    }  \ -    return 0;  \ -    case 3921:  \ -    switch (ch2) {  \ -        case 4023: return 3922;  \ -    }  \ -    return 0;  \ -    case 3926:  \ -    switch (ch2) {  \ -        case 4023: return 3927;  \ -    }  \ -    return 0;  \ -    case 3931:  \ -    switch (ch2) {  \ -        case 4023: return 3932;  \ -    }  \ -    return 0;  \ -    case 3953:  \ -    switch (ch2) {  \ -        case 3954: return 3955;  \ -        case 3956: return 3957;  \ -        case 3968: return 3969;  \ -    }  \ -    return 0;  \ -    case 3984:  \ -    switch (ch2) {  \ -        case 4021: return 4025;  \ -    }  \ -    return 0;  \ -    case 3986:  \ -    switch (ch2) {  \ -        case 4023: return 3987;  \ -    }  \ -    return 0;  \ -    case 3996:  \ -    switch (ch2) {  \ -        case 4023: return 3997;  \ -    }  \ -    return 0;  \ -    case 4001:  \ -    switch (ch2) {  \ -        case 4023: return 4002;  \ -    }  \ -    return 0;  \ -    case 4006:  \ -    switch (ch2) {  \ -        case 4023: return 4007;  \ -    }  \ -    return 0;  \ -    case 4011:  \ -    switch (ch2) {  \ -        case 4023: return 4012;  \ -    }  \ -    return 0;  \ -    case 4018:  \ -    switch (ch2) {  \ -        case 3968: return 3958;  \ -    }  \ -    return 0;  \ -    case 4019:  \ -    switch (ch2) {  \ -        case 3968: return 3960;  \ -    }  \ -    return 0;  \ -}  \ -return 0;  \ -case 16:  \ -switch (ch1) {  \ -    case 4133:  \ -    switch (ch2) {  \ -        case 4142: return 4134;  \ -    }  \ -    return 0;  \ -}  \ -return 0;  \ -case 30:  \ -switch (ch1) {  \ -    case 7734:  \ -    switch (ch2) {  \ -        case 772: return 7736;  \ -    }  \ -    return 0;  \ -    case 7735:  \ -    switch (ch2) {  \ -        case 772: return 7737;  \ -    }  \ -    return 0;  \ -    case 7770:  \ -    switch (ch2) {  \ -        case 772: return 7772;  \ -    }  \ -    return 0;  \ -    case 7771:  \ -    switch (ch2) {  \ -        case 772: return 7773;  \ -    }  \ -    return 0;  \ -    case 7778:  \ -    switch (ch2) {  \ -        case 775: return 7784;  \ -    }  \ -    return 0;  \ -    case 7779:  \ -    switch (ch2) {  \ -        case 775: return 7785;  \ -    }  \ -    return 0;  \ -    case 7840:  \ -    switch (ch2) {  \ -        case 770: return 7852;  \ -        case 774: return 7862;  \ -    }  \ -    return 0;  \ -    case 7841:  \ -    switch (ch2) {  \ -        case 770: return 7853;  \ -        case 774: return 7863;  \ -    }  \ -    return 0;  \ -    case 7864:  \ -    switch (ch2) {  \ -        case 770: return 7878;  \ -    }  \ -    return 0;  \ -    case 7865:  \ -    switch (ch2) {  \ -        case 770: return 7879;  \ -    }  \ -    return 0;  \ -    case 7884:  \ -    switch (ch2) {  \ -        case 770: return 7896;  \ -    }  \ -    return 0;  \ -    case 7885:  \ -    switch (ch2) {  \ -        case 770: return 7897;  \ -    }  \ -    return 0;  \ -}  \ -return 0;  \ -case 31:  \ -switch (ch1) {  \ -    case 7936:  \ -    switch (ch2) {  \ -        case 768: return 7938;  \ -        case 769: return 7940;  \ -        case 834: return 7942;  \ -        case 837: return 8064;  \ -    }  \ -    return 0;  \ -    case 7937:  \ -    switch (ch2) {  \ -        case 768: return 7939;  \ -        case 769: return 7941;  \ -        case 834: return 7943;  \ -        case 837: return 8065;  \ -    }  \ -    return 0;  \ -    case 7938:  \ -    switch (ch2) {  \ -        case 837: return 8066;  \ -    }  \ -    return 0;  \ -    case 7939:  \ -    switch (ch2) {  \ -        case 837: return 8067;  \ -    }  \ -    return 0;  \ -    case 7940:  \ -    switch (ch2) {  \ -        case 837: return 8068;  \ -    }  \ -    return 0;  \ -    case 7941:  \ -    switch (ch2) {  \ -        case 837: return 8069;  \ -    }  \ -    return 0;  \ -    case 7942:  \ -    switch (ch2) {  \ -        case 837: return 8070;  \ -    }  \ -    return 0;  \ -    case 7943:  \ -    switch (ch2) {  \ -        case 837: return 8071;  \ -    }  \ -    return 0;  \ -    case 7944:  \ -    switch (ch2) {  \ -        case 768: return 7946;  \ -        case 769: return 7948;  \ -        case 834: return 7950;  \ -        case 837: return 8072;  \ -    }  \ -    return 0;  \ -    case 7945:  \ -    switch (ch2) {  \ -        case 768: return 7947;  \ -        case 769: return 7949;  \ -        case 834: return 7951;  \ -        case 837: return 8073;  \ -    }  \ -    return 0;  \ -    case 7946:  \ -    switch (ch2) {  \ -        case 837: return 8074;  \ -    }  \ -    return 0;  \ -    case 7947:  \ -    switch (ch2) {  \ -        case 837: return 8075;  \ -    }  \ -    return 0;  \ -    case 7948:  \ -    switch (ch2) {  \ -        case 837: return 8076;  \ -    }  \ -    return 0;  \ -    case 7949:  \ -    switch (ch2) {  \ -        case 837: return 8077;  \ -    }  \ -    return 0;  \ -    case 7950:  \ -    switch (ch2) {  \ -        case 837: return 8078;  \ -    }  \ -    return 0;  \ -    case 7951:  \ -    switch (ch2) {  \ -        case 837: return 8079;  \ -    }  \ -    return 0;  \ -    case 7952:  \ -    switch (ch2) {  \ -        case 768: return 7954;  \ -        case 769: return 7956;  \ -    }  \ -    return 0;  \ -    case 7953:  \ -    switch (ch2) {  \ -        case 768: return 7955;  \ -        case 769: return 7957;  \ -    }  \ -    return 0;  \ -    case 7960:  \ -    switch (ch2) {  \ -        case 768: return 7962;  \ -        case 769: return 7964;  \ -    }  \ -    return 0;  \ -    case 7961:  \ -    switch (ch2) {  \ -        case 768: return 7963;  \ -        case 769: return 7965;  \ -    }  \ -    return 0;  \ -    case 7968:  \ -    switch (ch2) {  \ -        case 768: return 7970;  \ -        case 769: return 7972;  \ -        case 834: return 7974;  \ -        case 837: return 8080;  \ -    }  \ -    return 0;  \ -    case 7969:  \ -    switch (ch2) {  \ -        case 768: return 7971;  \ -        case 769: return 7973;  \ -        case 834: return 7975;  \ -        case 837: return 8081;  \ -    }  \ -    return 0;  \ -    case 7970:  \ -    switch (ch2) {  \ -        case 837: return 8082;  \ -    }  \ -    return 0;  \ -    case 7971:  \ -    switch (ch2) {  \ -        case 837: return 8083;  \ -    }  \ -    return 0;  \ -    case 7972:  \ -    switch (ch2) {  \ -        case 837: return 8084;  \ -    }  \ -    return 0;  \ -    case 7973:  \ -    switch (ch2) {  \ -        case 837: return 8085;  \ -    }  \ -    return 0;  \ -    case 7974:  \ -    switch (ch2) {  \ -        case 837: return 8086;  \ -    }  \ -    return 0;  \ -    case 7975:  \ -    switch (ch2) {  \ -        case 837: return 8087;  \ -    }  \ -    return 0;  \ -    case 7976:  \ -    switch (ch2) {  \ -        case 768: return 7978;  \ -        case 769: return 7980;  \ -        case 834: return 7982;  \ -        case 837: return 8088;  \ -    }  \ -    return 0;  \ -    case 7977:  \ -    switch (ch2) {  \ -        case 768: return 7979;  \ -        case 769: return 7981;  \ -        case 834: return 7983;  \ -        case 837: return 8089;  \ -    }  \ -    return 0;  \ -    case 7978:  \ -    switch (ch2) {  \ -        case 837: return 8090;  \ -    }  \ -    return 0;  \ -    case 7979:  \ -    switch (ch2) {  \ -        case 837: return 8091;  \ -    }  \ -    return 0;  \ -    case 7980:  \ -    switch (ch2) {  \ -        case 837: return 8092;  \ -    }  \ -    return 0;  \ -    case 7981:  \ -    switch (ch2) {  \ -        case 837: return 8093;  \ -    }  \ -    return 0;  \ -    case 7982:  \ -    switch (ch2) {  \ -        case 837: return 8094;  \ -    }  \ -    return 0;  \ -    case 7983:  \ -    switch (ch2) {  \ -        case 837: return 8095;  \ -    }  \ -    return 0;  \ -    case 7984:  \ -    switch (ch2) {  \ -        case 768: return 7986;  \ -        case 769: return 7988;  \ -        case 834: return 7990;  \ -    }  \ -    return 0;  \ -    case 7985:  \ -    switch (ch2) {  \ -        case 768: return 7987;  \ -        case 769: return 7989;  \ -        case 834: return 7991;  \ -    }  \ -    return 0;  \ -    case 7992:  \ -    switch (ch2) {  \ -        case 768: return 7994;  \ -        case 769: return 7996;  \ -        case 834: return 7998;  \ -    }  \ -    return 0;  \ -    case 7993:  \ -    switch (ch2) {  \ -        case 768: return 7995;  \ -        case 769: return 7997;  \ -        case 834: return 7999;  \ -    }  \ -    return 0;  \ -    case 8000:  \ -    switch (ch2) {  \ -        case 768: return 8002;  \ -        case 769: return 8004;  \ -    }  \ -    return 0;  \ -    case 8001:  \ -    switch (ch2) {  \ -        case 768: return 8003;  \ -        case 769: return 8005;  \ -    }  \ -    return 0;  \ -    case 8008:  \ -    switch (ch2) {  \ -        case 768: return 8010;  \ -        case 769: return 8012;  \ -    }  \ -    return 0;  \ -    case 8009:  \ -    switch (ch2) {  \ -        case 768: return 8011;  \ -        case 769: return 8013;  \ -    }  \ -    return 0;  \ -    case 8016:  \ -    switch (ch2) {  \ -        case 768: return 8018;  \ -        case 769: return 8020;  \ -        case 834: return 8022;  \ -    }  \ -    return 0;  \ -    case 8017:  \ -    switch (ch2) {  \ -        case 768: return 8019;  \ -        case 769: return 8021;  \ -        case 834: return 8023;  \ -    }  \ -    return 0;  \ -    case 8025:  \ -    switch (ch2) {  \ -        case 768: return 8027;  \ -        case 769: return 8029;  \ -        case 834: return 8031;  \ -    }  \ -    return 0;  \ -    case 8032:  \ -    switch (ch2) {  \ -        case 768: return 8034;  \ -        case 769: return 8036;  \ -        case 834: return 8038;  \ -        case 837: return 8096;  \ -    }  \ -    return 0;  \ -    case 8033:  \ -    switch (ch2) {  \ -        case 768: return 8035;  \ -        case 769: return 8037;  \ -        case 834: return 8039;  \ -        case 837: return 8097;  \ -    }  \ -    return 0;  \ -    case 8034:  \ -    switch (ch2) {  \ -        case 837: return 8098;  \ -    }  \ -    return 0;  \ -    case 8035:  \ -    switch (ch2) {  \ -        case 837: return 8099;  \ -    }  \ -    return 0;  \ -    case 8036:  \ -    switch (ch2) {  \ -        case 837: return 8100;  \ -    }  \ -    return 0;  \ -    case 8037:  \ -    switch (ch2) {  \ -        case 837: return 8101;  \ -    }  \ -    return 0;  \ -    case 8038:  \ -    switch (ch2) {  \ -        case 837: return 8102;  \ -    }  \ -    return 0;  \ -    case 8039:  \ -    switch (ch2) {  \ -        case 837: return 8103;  \ -    }  \ -    return 0;  \ -    case 8040:  \ -    switch (ch2) {  \ -        case 768: return 8042;  \ -        case 769: return 8044;  \ -        case 834: return 8046;  \ -        case 837: return 8104;  \ -    }  \ -    return 0;  \ -    case 8041:  \ -    switch (ch2) {  \ -        case 768: return 8043;  \ -        case 769: return 8045;  \ -        case 834: return 8047;  \ -        case 837: return 8105;  \ -    }  \ -    return 0;  \ -    case 8042:  \ -    switch (ch2) {  \ -        case 837: return 8106;  \ -    }  \ -    return 0;  \ -    case 8043:  \ -    switch (ch2) {  \ -        case 837: return 8107;  \ -    }  \ -    return 0;  \ -    case 8044:  \ -    switch (ch2) {  \ -        case 837: return 8108;  \ -    }  \ -    return 0;  \ -    case 8045:  \ -    switch (ch2) {  \ -        case 837: return 8109;  \ -    }  \ -    return 0;  \ -    case 8046:  \ -    switch (ch2) {  \ -        case 837: return 8110;  \ -    }  \ -    return 0;  \ -    case 8047:  \ -    switch (ch2) {  \ -        case 837: return 8111;  \ -    }  \ -    return 0;  \ -    case 8048:  \ -    switch (ch2) {  \ -        case 837: return 8114;  \ -    }  \ -    return 0;  \ -    case 8052:  \ -    switch (ch2) {  \ -        case 837: return 8130;  \ -    }  \ -    return 0;  \ -    case 8060:  \ -    switch (ch2) {  \ -        case 837: return 8178;  \ -    }  \ -    return 0;  \ -    case 8118:  \ -    switch (ch2) {  \ -        case 837: return 8119;  \ -    }  \ -    return 0;  \ -    case 8127:  \ -    switch (ch2) {  \ -        case 768: return 8141;  \ -        case 769: return 8142;  \ -        case 834: return 8143;  \ -    }  \ -    return 0;  \ -    case 8134:  \ -    switch (ch2) {  \ -        case 837: return 8135;  \ -    }  \ -    return 0;  \ -    case 8182:  \ -    switch (ch2) {  \ -        case 837: return 8183;  \ -    }  \ -    return 0;  \ -    case 8190:  \ -    switch (ch2) {  \ -        case 768: return 8157;  \ -        case 769: return 8158;  \ -        case 834: return 8159;  \ -    }  \ -    return 0;  \ -}  \ -return 0;  \ -case 33:  \ -switch (ch1) {  \ -    case 8592:  \ -    switch (ch2) {  \ -        case 824: return 8602;  \ -    }  \ -    return 0;  \ -    case 8594:  \ -    switch (ch2) {  \ -        case 824: return 8603;  \ -    }  \ -    return 0;  \ -    case 8596:  \ -    switch (ch2) {  \ -        case 824: return 8622;  \ -    }  \ -    return 0;  \ -    case 8656:  \ -    switch (ch2) {  \ -        case 824: return 8653;  \ -    }  \ -    return 0;  \ -    case 8658:  \ -    switch (ch2) {  \ -        case 824: return 8655;  \ -    }  \ -    return 0;  \ -    case 8660:  \ -    switch (ch2) {  \ -        case 824: return 8654;  \ -    }  \ -    return 0;  \ -}  \ -return 0;  \ -case 34:  \ -switch (ch1) {  \ -    case 8707:  \ -    switch (ch2) {  \ -        case 824: return 8708;  \ -    }  \ -    return 0;  \ -    case 8712:  \ -    switch (ch2) {  \ -        case 824: return 8713;  \ -    }  \ -    return 0;  \ -    case 8715:  \ -    switch (ch2) {  \ -        case 824: return 8716;  \ -    }  \ -    return 0;  \ -    case 8739:  \ -    switch (ch2) {  \ -        case 824: return 8740;  \ -    }  \ -    return 0;  \ -    case 8741:  \ -    switch (ch2) {  \ -        case 824: return 8742;  \ -    }  \ -    return 0;  \ -    case 8764:  \ -    switch (ch2) {  \ -        case 824: return 8769;  \ -    }  \ -    return 0;  \ -    case 8771:  \ -    switch (ch2) {  \ -        case 824: return 8772;  \ -    }  \ -    return 0;  \ -    case 8773:  \ -    switch (ch2) {  \ -        case 824: return 8775;  \ -    }  \ -    return 0;  \ -    case 8776:  \ -    switch (ch2) {  \ -        case 824: return 8777;  \ -    }  \ -    return 0;  \ -    case 8781:  \ -    switch (ch2) {  \ -        case 824: return 8813;  \ -    }  \ -    return 0;  \ -    case 8801:  \ -    switch (ch2) {  \ -        case 824: return 8802;  \ -    }  \ -    return 0;  \ -    case 8804:  \ -    switch (ch2) {  \ -        case 824: return 8816;  \ -    }  \ -    return 0;  \ -    case 8805:  \ -    switch (ch2) {  \ -        case 824: return 8817;  \ -    }  \ -    return 0;  \ -    case 8818:  \ -    switch (ch2) {  \ -        case 824: return 8820;  \ -    }  \ -    return 0;  \ -    case 8819:  \ -    switch (ch2) {  \ -        case 824: return 8821;  \ -    }  \ -    return 0;  \ -    case 8822:  \ -    switch (ch2) {  \ -        case 824: return 8824;  \ -    }  \ -    return 0;  \ -    case 8823:  \ -    switch (ch2) {  \ -        case 824: return 8825;  \ -    }  \ -    return 0;  \ -    case 8826:  \ -    switch (ch2) {  \ -        case 824: return 8832;  \ -    }  \ -    return 0;  \ -    case 8827:  \ -    switch (ch2) {  \ -        case 824: return 8833;  \ -    }  \ -    return 0;  \ -    case 8828:  \ -    switch (ch2) {  \ -        case 824: return 8928;  \ -    }  \ -    return 0;  \ -    case 8829:  \ -    switch (ch2) {  \ -        case 824: return 8929;  \ -    }  \ -    return 0;  \ -    case 8834:  \ -    switch (ch2) {  \ -        case 824: return 8836;  \ -    }  \ -    return 0;  \ -    case 8835:  \ -    switch (ch2) {  \ -        case 824: return 8837;  \ -    }  \ -    return 0;  \ -    case 8838:  \ -    switch (ch2) {  \ -        case 824: return 8840;  \ -    }  \ -    return 0;  \ -    case 8839:  \ -    switch (ch2) {  \ -        case 824: return 8841;  \ -    }  \ -    return 0;  \ -    case 8849:  \ -    switch (ch2) {  \ -        case 824: return 8930;  \ -    }  \ -    return 0;  \ -    case 8850:  \ -    switch (ch2) {  \ -        case 824: return 8931;  \ -    }  \ -    return 0;  \ -    case 8866:  \ -    switch (ch2) {  \ -        case 824: return 8876;  \ -    }  \ -    return 0;  \ -    case 8872:  \ -    switch (ch2) {  \ -        case 824: return 8877;  \ -    }  \ -    return 0;  \ -    case 8873:  \ -    switch (ch2) {  \ -        case 824: return 8878;  \ -    }  \ -    return 0;  \ -    case 8875:  \ -    switch (ch2) {  \ -        case 824: return 8879;  \ -    }  \ -    return 0;  \ -    case 8882:  \ -    switch (ch2) {  \ -        case 824: return 8938;  \ -    }  \ -    return 0;  \ -    case 8883:  \ -    switch (ch2) {  \ -        case 824: return 8939;  \ -    }  \ -    return 0;  \ -    case 8884:  \ -    switch (ch2) {  \ -        case 824: return 8940;  \ -    }  \ -    return 0;  \ -    case 8885:  \ -    switch (ch2) {  \ -        case 824: return 8941;  \ -    }  \ -    return 0;  \ -}  \ -return 0;  \ -case 42:  \ -switch (ch1) {  \ -    case 10973:  \ -    switch (ch2) {  \ -        case 824: return 10972;  \ -    }  \ -    return 0;  \ -}  \ -return 0;  \ -case 48:  \ -switch (ch1) {  \ -    case 12358:  \ -    switch (ch2) {  \ -        case 12441: return 12436;  \ -    }  \ -    return 0;  \ -    case 12363:  \ -    switch (ch2) {  \ -        case 12441: return 12364;  \ -    }  \ -    return 0;  \ -    case 12365:  \ -    switch (ch2) {  \ -        case 12441: return 12366;  \ -    }  \ -    return 0;  \ -    case 12367:  \ -    switch (ch2) {  \ -        case 12441: return 12368;  \ -    }  \ -    return 0;  \ -    case 12369:  \ -    switch (ch2) {  \ -        case 12441: return 12370;  \ -    }  \ -    return 0;  \ -    case 12371:  \ -    switch (ch2) {  \ -        case 12441: return 12372;  \ -    }  \ -    return 0;  \ -    case 12373:  \ -    switch (ch2) {  \ -        case 12441: return 12374;  \ -    }  \ -    return 0;  \ -    case 12375:  \ -    switch (ch2) {  \ -        case 12441: return 12376;  \ -    }  \ -    return 0;  \ -    case 12377:  \ -    switch (ch2) {  \ -        case 12441: return 12378;  \ -    }  \ -    return 0;  \ -    case 12379:  \ -    switch (ch2) {  \ -        case 12441: return 12380;  \ -    }  \ -    return 0;  \ -    case 12381:  \ -    switch (ch2) {  \ -        case 12441: return 12382;  \ -    }  \ -    return 0;  \ -    case 12383:  \ -    switch (ch2) {  \ -        case 12441: return 12384;  \ -    }  \ -    return 0;  \ -    case 12385:  \ -    switch (ch2) {  \ -        case 12441: return 12386;  \ -    }  \ -    return 0;  \ -    case 12388:  \ -    switch (ch2) {  \ -        case 12441: return 12389;  \ -    }  \ -    return 0;  \ -    case 12390:  \ -    switch (ch2) {  \ -        case 12441: return 12391;  \ -    }  \ -    return 0;  \ -    case 12392:  \ -    switch (ch2) {  \ -        case 12441: return 12393;  \ -    }  \ -    return 0;  \ -    case 12399:  \ -    switch (ch2) {  \ -        case 12441: return 12400;  \ -        case 12442: return 12401;  \ -    }  \ -    return 0;  \ -    case 12402:  \ -    switch (ch2) {  \ -        case 12441: return 12403;  \ -        case 12442: return 12404;  \ -    }  \ -    return 0;  \ -    case 12405:  \ -    switch (ch2) {  \ -        case 12441: return 12406;  \ -        case 12442: return 12407;  \ -    }  \ -    return 0;  \ -    case 12408:  \ -    switch (ch2) {  \ -        case 12441: return 12409;  \ -        case 12442: return 12410;  \ -    }  \ -    return 0;  \ -    case 12411:  \ -    switch (ch2) {  \ -        case 12441: return 12412;  \ -        case 12442: return 12413;  \ -    }  \ -    return 0;  \ -    case 12445:  \ -    switch (ch2) {  \ -        case 12441: return 12446;  \ -    }  \ -    return 0;  \ -    case 12454:  \ -    switch (ch2) {  \ -        case 12441: return 12532;  \ -    }  \ -    return 0;  \ -    case 12459:  \ -    switch (ch2) {  \ -        case 12441: return 12460;  \ -    }  \ -    return 0;  \ -    case 12461:  \ -    switch (ch2) {  \ -        case 12441: return 12462;  \ -    }  \ -    return 0;  \ -    case 12463:  \ -    switch (ch2) {  \ -        case 12441: return 12464;  \ -    }  \ -    return 0;  \ -    case 12465:  \ -    switch (ch2) {  \ -        case 12441: return 12466;  \ -    }  \ -    return 0;  \ -    case 12467:  \ -    switch (ch2) {  \ -        case 12441: return 12468;  \ -    }  \ -    return 0;  \ -    case 12469:  \ -    switch (ch2) {  \ -        case 12441: return 12470;  \ -    }  \ -    return 0;  \ -    case 12471:  \ -    switch (ch2) {  \ -        case 12441: return 12472;  \ -    }  \ -    return 0;  \ -    case 12473:  \ -    switch (ch2) {  \ -        case 12441: return 12474;  \ -    }  \ -    return 0;  \ -    case 12475:  \ -    switch (ch2) {  \ -        case 12441: return 12476;  \ -    }  \ -    return 0;  \ -    case 12477:  \ -    switch (ch2) {  \ -        case 12441: return 12478;  \ -    }  \ -    return 0;  \ -    case 12479:  \ -    switch (ch2) {  \ -        case 12441: return 12480;  \ -    }  \ -    return 0;  \ -    case 12481:  \ -    switch (ch2) {  \ -        case 12441: return 12482;  \ -    }  \ -    return 0;  \ -    case 12484:  \ -    switch (ch2) {  \ -        case 12441: return 12485;  \ -    }  \ -    return 0;  \ -    case 12486:  \ -    switch (ch2) {  \ -        case 12441: return 12487;  \ -    }  \ -    return 0;  \ -    case 12488:  \ -    switch (ch2) {  \ -        case 12441: return 12489;  \ -    }  \ -    return 0;  \ -    case 12495:  \ -    switch (ch2) {  \ -        case 12441: return 12496;  \ -        case 12442: return 12497;  \ -    }  \ -    return 0;  \ -    case 12498:  \ -    switch (ch2) {  \ -        case 12441: return 12499;  \ -        case 12442: return 12500;  \ -    }  \ -    return 0;  \ -    case 12501:  \ -    switch (ch2) {  \ -        case 12441: return 12502;  \ -        case 12442: return 12503;  \ -    }  \ -    return 0;  \ -    case 12504:  \ -    switch (ch2) {  \ -        case 12441: return 12505;  \ -        case 12442: return 12506;  \ -    }  \ -    return 0;  \ -    case 12507:  \ -    switch (ch2) {  \ -        case 12441: return 12508;  \ -        case 12442: return 12509;  \ -    }  \ -    return 0;  \ -    case 12527:  \ -    switch (ch2) {  \ -        case 12441: return 12535;  \ -    }  \ -    return 0;  \ -    case 12528:  \ -    switch (ch2) {  \ -        case 12441: return 12536;  \ -    }  \ -    return 0;  \ -    case 12529:  \ -    switch (ch2) {  \ -        case 12441: return 12537;  \ -    }  \ -    return 0;  \ -    case 12530:  \ -    switch (ch2) {  \ -        case 12441: return 12538;  \ -    }  \ -    return 0;  \ -    case 12541:  \ -    switch (ch2) {  \ -        case 12441: return 12542;  \ -    }  \ -    return 0;  \ -}  \ -return 0;  \ -case 251:  \ -switch (ch1) {  \ -    case 64329:  \ -    switch (ch2) {  \ -        case 1473: return 64300;  \ -        case 1474: return 64301;  \ -    }  \ -    return 0;  \ -}  \ -return 0;  \ -case 465:  \ -switch (ch1) {  \ -    case 119127:  \ -    switch (ch2) {  \ -        case 119141: return 119134;  \ -    }  \ -    return 0;  \ -    case 119128:  \ -    switch (ch2) {  \ -        case 119141: return 119135;  \ -    }  \ -    return 0;  \ -    case 119135:  \ -    switch (ch2) {  \ -        case 119150: return 119136;  \ -        case 119151: return 119137;  \ -        case 119152: return 119138;  \ -        case 119153: return 119139;  \ -        case 119154: return 119140;  \ -    }  \ -    return 0;  \ -    case 119225:  \ -    switch (ch2) {  \ -        case 119141: return 119227;  \ -    }  \ -    return 0;  \ -    case 119226:  \ -    switch (ch2) {  \ -        case 119141: return 119228;  \ -    }  \ -    return 0;  \ -    case 119227:  \ -    switch (ch2) {  \ -        case 119150: return 119229;  \ -        case 119151: return 119231;  \ -    }  \ -    return 0;  \ -    case 119228:  \ -    switch (ch2) {  \ -        case 119150: return 119230;  \ -        case 119151: return 119232;  \ -    }  \ -    return 0;  \ -}  \ -return 0;  \ -}  \ -return 0; +	switch ((glui32)(ch1) >> 8) {  \ +	case 0:  \ +		switch (ch1) {  \ +		case 60:  \ +			switch (ch2) {  \ +			case 824: return 8814;  \ +			}  \ +			return 0;  \ +		case 61:  \ +			switch (ch2) {  \ +			case 824: return 8800;  \ +			}  \ +			return 0;  \ +		case 62:  \ +			switch (ch2) {  \ +			case 824: return 8815;  \ +			}  \ +			return 0;  \ +		case 65:  \ +			switch (ch2) {  \ +			case 768: return 192;  \ +			case 769: return 193;  \ +			case 770: return 194;  \ +			case 771: return 195;  \ +			case 772: return 256;  \ +			case 774: return 258;  \ +			case 775: return 550;  \ +			case 776: return 196;  \ +			case 777: return 7842;  \ +			case 778: return 197;  \ +			case 780: return 461;  \ +			case 783: return 512;  \ +			case 785: return 514;  \ +			case 803: return 7840;  \ +			case 805: return 7680;  \ +			case 808: return 260;  \ +			}  \ +			return 0;  \ +		case 66:  \ +			switch (ch2) {  \ +			case 775: return 7682;  \ +			case 803: return 7684;  \ +			case 817: return 7686;  \ +			}  \ +			return 0;  \ +		case 67:  \ +			switch (ch2) {  \ +			case 769: return 262;  \ +			case 770: return 264;  \ +			case 775: return 266;  \ +			case 780: return 268;  \ +			case 807: return 199;  \ +			}  \ +			return 0;  \ +		case 68:  \ +			switch (ch2) {  \ +			case 775: return 7690;  \ +			case 780: return 270;  \ +			case 803: return 7692;  \ +			case 807: return 7696;  \ +			case 813: return 7698;  \ +			case 817: return 7694;  \ +			}  \ +			return 0;  \ +		case 69:  \ +			switch (ch2) {  \ +			case 768: return 200;  \ +			case 769: return 201;  \ +			case 770: return 202;  \ +			case 771: return 7868;  \ +			case 772: return 274;  \ +			case 774: return 276;  \ +			case 775: return 278;  \ +			case 776: return 203;  \ +			case 777: return 7866;  \ +			case 780: return 282;  \ +			case 783: return 516;  \ +			case 785: return 518;  \ +			case 803: return 7864;  \ +			case 807: return 552;  \ +			case 808: return 280;  \ +			case 813: return 7704;  \ +			case 816: return 7706;  \ +			}  \ +			return 0;  \ +		case 70:  \ +			switch (ch2) {  \ +			case 775: return 7710;  \ +			}  \ +			return 0;  \ +		case 71:  \ +			switch (ch2) {  \ +			case 769: return 500;  \ +			case 770: return 284;  \ +			case 772: return 7712;  \ +			case 774: return 286;  \ +			case 775: return 288;  \ +			case 780: return 486;  \ +			case 807: return 290;  \ +			}  \ +			return 0;  \ +		case 72:  \ +			switch (ch2) {  \ +			case 770: return 292;  \ +			case 775: return 7714;  \ +			case 776: return 7718;  \ +			case 780: return 542;  \ +			case 803: return 7716;  \ +			case 807: return 7720;  \ +			case 814: return 7722;  \ +			}  \ +			return 0;  \ +		case 73:  \ +			switch (ch2) {  \ +			case 768: return 204;  \ +			case 769: return 205;  \ +			case 770: return 206;  \ +			case 771: return 296;  \ +			case 772: return 298;  \ +			case 774: return 300;  \ +			case 775: return 304;  \ +			case 776: return 207;  \ +			case 777: return 7880;  \ +			case 780: return 463;  \ +			case 783: return 520;  \ +			case 785: return 522;  \ +			case 803: return 7882;  \ +			case 808: return 302;  \ +			case 816: return 7724;  \ +			}  \ +			return 0;  \ +		case 74:  \ +			switch (ch2) {  \ +			case 770: return 308;  \ +			}  \ +			return 0;  \ +		case 75:  \ +			switch (ch2) {  \ +			case 769: return 7728;  \ +			case 780: return 488;  \ +			case 803: return 7730;  \ +			case 807: return 310;  \ +			case 817: return 7732;  \ +			}  \ +			return 0;  \ +		case 76:  \ +			switch (ch2) {  \ +			case 769: return 313;  \ +			case 780: return 317;  \ +			case 803: return 7734;  \ +			case 807: return 315;  \ +			case 813: return 7740;  \ +			case 817: return 7738;  \ +			}  \ +			return 0;  \ +		case 77:  \ +			switch (ch2) {  \ +			case 769: return 7742;  \ +			case 775: return 7744;  \ +			case 803: return 7746;  \ +			}  \ +			return 0;  \ +		case 78:  \ +			switch (ch2) {  \ +			case 768: return 504;  \ +			case 769: return 323;  \ +			case 771: return 209;  \ +			case 775: return 7748;  \ +			case 780: return 327;  \ +			case 803: return 7750;  \ +			case 807: return 325;  \ +			case 813: return 7754;  \ +			case 817: return 7752;  \ +			}  \ +			return 0;  \ +		case 79:  \ +			switch (ch2) {  \ +			case 768: return 210;  \ +			case 769: return 211;  \ +			case 770: return 212;  \ +			case 771: return 213;  \ +			case 772: return 332;  \ +			case 774: return 334;  \ +			case 775: return 558;  \ +			case 776: return 214;  \ +			case 777: return 7886;  \ +			case 779: return 336;  \ +			case 780: return 465;  \ +			case 783: return 524;  \ +			case 785: return 526;  \ +			case 795: return 416;  \ +			case 803: return 7884;  \ +			case 808: return 490;  \ +			}  \ +			return 0;  \ +		case 80:  \ +			switch (ch2) {  \ +			case 769: return 7764;  \ +			case 775: return 7766;  \ +			}  \ +			return 0;  \ +		case 82:  \ +			switch (ch2) {  \ +			case 769: return 340;  \ +			case 775: return 7768;  \ +			case 780: return 344;  \ +			case 783: return 528;  \ +			case 785: return 530;  \ +			case 803: return 7770;  \ +			case 807: return 342;  \ +			case 817: return 7774;  \ +			}  \ +			return 0;  \ +		case 83:  \ +			switch (ch2) {  \ +			case 769: return 346;  \ +			case 770: return 348;  \ +			case 775: return 7776;  \ +			case 780: return 352;  \ +			case 803: return 7778;  \ +			case 806: return 536;  \ +			case 807: return 350;  \ +			}  \ +			return 0;  \ +		case 84:  \ +			switch (ch2) {  \ +			case 775: return 7786;  \ +			case 780: return 356;  \ +			case 803: return 7788;  \ +			case 806: return 538;  \ +			case 807: return 354;  \ +			case 813: return 7792;  \ +			case 817: return 7790;  \ +			}  \ +			return 0;  \ +		case 85:  \ +			switch (ch2) {  \ +			case 768: return 217;  \ +			case 769: return 218;  \ +			case 770: return 219;  \ +			case 771: return 360;  \ +			case 772: return 362;  \ +			case 774: return 364;  \ +			case 776: return 220;  \ +			case 777: return 7910;  \ +			case 778: return 366;  \ +			case 779: return 368;  \ +			case 780: return 467;  \ +			case 783: return 532;  \ +			case 785: return 534;  \ +			case 795: return 431;  \ +			case 803: return 7908;  \ +			case 804: return 7794;  \ +			case 808: return 370;  \ +			case 813: return 7798;  \ +			case 816: return 7796;  \ +			}  \ +			return 0;  \ +		case 86:  \ +			switch (ch2) {  \ +			case 771: return 7804;  \ +			case 803: return 7806;  \ +			}  \ +			return 0;  \ +		case 87:  \ +			switch (ch2) {  \ +			case 768: return 7808;  \ +			case 769: return 7810;  \ +			case 770: return 372;  \ +			case 775: return 7814;  \ +			case 776: return 7812;  \ +			case 803: return 7816;  \ +			}  \ +			return 0;  \ +		case 88:  \ +			switch (ch2) {  \ +			case 775: return 7818;  \ +			case 776: return 7820;  \ +			}  \ +			return 0;  \ +		case 89:  \ +			switch (ch2) {  \ +			case 768: return 7922;  \ +			case 769: return 221;  \ +			case 770: return 374;  \ +			case 771: return 7928;  \ +			case 772: return 562;  \ +			case 775: return 7822;  \ +			case 776: return 376;  \ +			case 777: return 7926;  \ +			case 803: return 7924;  \ +			}  \ +			return 0;  \ +		case 90:  \ +			switch (ch2) {  \ +			case 769: return 377;  \ +			case 770: return 7824;  \ +			case 775: return 379;  \ +			case 780: return 381;  \ +			case 803: return 7826;  \ +			case 817: return 7828;  \ +			}  \ +			return 0;  \ +		case 97:  \ +			switch (ch2) {  \ +			case 768: return 224;  \ +			case 769: return 225;  \ +			case 770: return 226;  \ +			case 771: return 227;  \ +			case 772: return 257;  \ +			case 774: return 259;  \ +			case 775: return 551;  \ +			case 776: return 228;  \ +			case 777: return 7843;  \ +			case 778: return 229;  \ +			case 780: return 462;  \ +			case 783: return 513;  \ +			case 785: return 515;  \ +			case 803: return 7841;  \ +			case 805: return 7681;  \ +			case 808: return 261;  \ +			}  \ +			return 0;  \ +		case 98:  \ +			switch (ch2) {  \ +			case 775: return 7683;  \ +			case 803: return 7685;  \ +			case 817: return 7687;  \ +			}  \ +			return 0;  \ +		case 99:  \ +			switch (ch2) {  \ +			case 769: return 263;  \ +			case 770: return 265;  \ +			case 775: return 267;  \ +			case 780: return 269;  \ +			case 807: return 231;  \ +			}  \ +			return 0;  \ +		case 100:  \ +			switch (ch2) {  \ +			case 775: return 7691;  \ +			case 780: return 271;  \ +			case 803: return 7693;  \ +			case 807: return 7697;  \ +			case 813: return 7699;  \ +			case 817: return 7695;  \ +			}  \ +			return 0;  \ +		case 101:  \ +			switch (ch2) {  \ +			case 768: return 232;  \ +			case 769: return 233;  \ +			case 770: return 234;  \ +			case 771: return 7869;  \ +			case 772: return 275;  \ +			case 774: return 277;  \ +			case 775: return 279;  \ +			case 776: return 235;  \ +			case 777: return 7867;  \ +			case 780: return 283;  \ +			case 783: return 517;  \ +			case 785: return 519;  \ +			case 803: return 7865;  \ +			case 807: return 553;  \ +			case 808: return 281;  \ +			case 813: return 7705;  \ +			case 816: return 7707;  \ +			}  \ +			return 0;  \ +		case 102:  \ +			switch (ch2) {  \ +			case 775: return 7711;  \ +			}  \ +			return 0;  \ +		case 103:  \ +			switch (ch2) {  \ +			case 769: return 501;  \ +			case 770: return 285;  \ +			case 772: return 7713;  \ +			case 774: return 287;  \ +			case 775: return 289;  \ +			case 780: return 487;  \ +			case 807: return 291;  \ +			}  \ +			return 0;  \ +		case 104:  \ +			switch (ch2) {  \ +			case 770: return 293;  \ +			case 775: return 7715;  \ +			case 776: return 7719;  \ +			case 780: return 543;  \ +			case 803: return 7717;  \ +			case 807: return 7721;  \ +			case 814: return 7723;  \ +			case 817: return 7830;  \ +			}  \ +			return 0;  \ +		case 105:  \ +			switch (ch2) {  \ +			case 768: return 236;  \ +			case 769: return 237;  \ +			case 770: return 238;  \ +			case 771: return 297;  \ +			case 772: return 299;  \ +			case 774: return 301;  \ +			case 776: return 239;  \ +			case 777: return 7881;  \ +			case 780: return 464;  \ +			case 783: return 521;  \ +			case 785: return 523;  \ +			case 803: return 7883;  \ +			case 808: return 303;  \ +			case 816: return 7725;  \ +			}  \ +			return 0;  \ +		case 106:  \ +			switch (ch2) {  \ +			case 770: return 309;  \ +			case 780: return 496;  \ +			}  \ +			return 0;  \ +		case 107:  \ +			switch (ch2) {  \ +			case 769: return 7729;  \ +			case 780: return 489;  \ +			case 803: return 7731;  \ +			case 807: return 311;  \ +			case 817: return 7733;  \ +			}  \ +			return 0;  \ +		case 108:  \ +			switch (ch2) {  \ +			case 769: return 314;  \ +			case 780: return 318;  \ +			case 803: return 7735;  \ +			case 807: return 316;  \ +			case 813: return 7741;  \ +			case 817: return 7739;  \ +			}  \ +			return 0;  \ +		case 109:  \ +			switch (ch2) {  \ +			case 769: return 7743;  \ +			case 775: return 7745;  \ +			case 803: return 7747;  \ +			}  \ +			return 0;  \ +		case 110:  \ +			switch (ch2) {  \ +			case 768: return 505;  \ +			case 769: return 324;  \ +			case 771: return 241;  \ +			case 775: return 7749;  \ +			case 780: return 328;  \ +			case 803: return 7751;  \ +			case 807: return 326;  \ +			case 813: return 7755;  \ +			case 817: return 7753;  \ +			}  \ +			return 0;  \ +		case 111:  \ +			switch (ch2) {  \ +			case 768: return 242;  \ +			case 769: return 243;  \ +			case 770: return 244;  \ +			case 771: return 245;  \ +			case 772: return 333;  \ +			case 774: return 335;  \ +			case 775: return 559;  \ +			case 776: return 246;  \ +			case 777: return 7887;  \ +			case 779: return 337;  \ +			case 780: return 466;  \ +			case 783: return 525;  \ +			case 785: return 527;  \ +			case 795: return 417;  \ +			case 803: return 7885;  \ +			case 808: return 491;  \ +			}  \ +			return 0;  \ +		case 112:  \ +			switch (ch2) {  \ +			case 769: return 7765;  \ +			case 775: return 7767;  \ +			}  \ +			return 0;  \ +		case 114:  \ +			switch (ch2) {  \ +			case 769: return 341;  \ +			case 775: return 7769;  \ +			case 780: return 345;  \ +			case 783: return 529;  \ +			case 785: return 531;  \ +			case 803: return 7771;  \ +			case 807: return 343;  \ +			case 817: return 7775;  \ +			}  \ +			return 0;  \ +		case 115:  \ +			switch (ch2) {  \ +			case 769: return 347;  \ +			case 770: return 349;  \ +			case 775: return 7777;  \ +			case 780: return 353;  \ +			case 803: return 7779;  \ +			case 806: return 537;  \ +			case 807: return 351;  \ +			}  \ +			return 0;  \ +		case 116:  \ +			switch (ch2) {  \ +			case 775: return 7787;  \ +			case 776: return 7831;  \ +			case 780: return 357;  \ +			case 803: return 7789;  \ +			case 806: return 539;  \ +			case 807: return 355;  \ +			case 813: return 7793;  \ +			case 817: return 7791;  \ +			}  \ +			return 0;  \ +		case 117:  \ +			switch (ch2) {  \ +			case 768: return 249;  \ +			case 769: return 250;  \ +			case 770: return 251;  \ +			case 771: return 361;  \ +			case 772: return 363;  \ +			case 774: return 365;  \ +			case 776: return 252;  \ +			case 777: return 7911;  \ +			case 778: return 367;  \ +			case 779: return 369;  \ +			case 780: return 468;  \ +			case 783: return 533;  \ +			case 785: return 535;  \ +			case 795: return 432;  \ +			case 803: return 7909;  \ +			case 804: return 7795;  \ +			case 808: return 371;  \ +			case 813: return 7799;  \ +			case 816: return 7797;  \ +			}  \ +			return 0;  \ +		case 118:  \ +			switch (ch2) {  \ +			case 771: return 7805;  \ +			case 803: return 7807;  \ +			}  \ +			return 0;  \ +		case 119:  \ +			switch (ch2) {  \ +			case 768: return 7809;  \ +			case 769: return 7811;  \ +			case 770: return 373;  \ +			case 775: return 7815;  \ +			case 776: return 7813;  \ +			case 778: return 7832;  \ +			case 803: return 7817;  \ +			}  \ +			return 0;  \ +		case 120:  \ +			switch (ch2) {  \ +			case 775: return 7819;  \ +			case 776: return 7821;  \ +			}  \ +			return 0;  \ +		case 121:  \ +			switch (ch2) {  \ +			case 768: return 7923;  \ +			case 769: return 253;  \ +			case 770: return 375;  \ +			case 771: return 7929;  \ +			case 772: return 563;  \ +			case 775: return 7823;  \ +			case 776: return 255;  \ +			case 777: return 7927;  \ +			case 778: return 7833;  \ +			case 803: return 7925;  \ +			}  \ +			return 0;  \ +		case 122:  \ +			switch (ch2) {  \ +			case 769: return 378;  \ +			case 770: return 7825;  \ +			case 775: return 380;  \ +			case 780: return 382;  \ +			case 803: return 7827;  \ +			case 817: return 7829;  \ +			}  \ +			return 0;  \ +		case 168:  \ +			switch (ch2) {  \ +			case 768: return 8173;  \ +			case 769: return 901;  \ +			case 834: return 8129;  \ +			}  \ +			return 0;  \ +		case 194:  \ +			switch (ch2) {  \ +			case 768: return 7846;  \ +			case 769: return 7844;  \ +			case 771: return 7850;  \ +			case 777: return 7848;  \ +			}  \ +			return 0;  \ +		case 196:  \ +			switch (ch2) {  \ +			case 772: return 478;  \ +			}  \ +			return 0;  \ +		case 197:  \ +			switch (ch2) {  \ +			case 769: return 506;  \ +			}  \ +			return 0;  \ +		case 198:  \ +			switch (ch2) {  \ +			case 769: return 508;  \ +			case 772: return 482;  \ +			}  \ +			return 0;  \ +		case 199:  \ +			switch (ch2) {  \ +			case 769: return 7688;  \ +			}  \ +			return 0;  \ +		case 202:  \ +			switch (ch2) {  \ +			case 768: return 7872;  \ +			case 769: return 7870;  \ +			case 771: return 7876;  \ +			case 777: return 7874;  \ +			}  \ +			return 0;  \ +		case 207:  \ +			switch (ch2) {  \ +			case 769: return 7726;  \ +			}  \ +			return 0;  \ +		case 212:  \ +			switch (ch2) {  \ +			case 768: return 7890;  \ +			case 769: return 7888;  \ +			case 771: return 7894;  \ +			case 777: return 7892;  \ +			}  \ +			return 0;  \ +		case 213:  \ +			switch (ch2) {  \ +			case 769: return 7756;  \ +			case 772: return 556;  \ +			case 776: return 7758;  \ +			}  \ +			return 0;  \ +		case 214:  \ +			switch (ch2) {  \ +			case 772: return 554;  \ +			}  \ +			return 0;  \ +		case 216:  \ +			switch (ch2) {  \ +			case 769: return 510;  \ +			}  \ +			return 0;  \ +		case 220:  \ +			switch (ch2) {  \ +			case 768: return 475;  \ +			case 769: return 471;  \ +			case 772: return 469;  \ +			case 780: return 473;  \ +			}  \ +			return 0;  \ +		case 226:  \ +			switch (ch2) {  \ +			case 768: return 7847;  \ +			case 769: return 7845;  \ +			case 771: return 7851;  \ +			case 777: return 7849;  \ +			}  \ +			return 0;  \ +		case 228:  \ +			switch (ch2) {  \ +			case 772: return 479;  \ +			}  \ +			return 0;  \ +		case 229:  \ +			switch (ch2) {  \ +			case 769: return 507;  \ +			}  \ +			return 0;  \ +		case 230:  \ +			switch (ch2) {  \ +			case 769: return 509;  \ +			case 772: return 483;  \ +			}  \ +			return 0;  \ +		case 231:  \ +			switch (ch2) {  \ +			case 769: return 7689;  \ +			}  \ +			return 0;  \ +		case 234:  \ +			switch (ch2) {  \ +			case 768: return 7873;  \ +			case 769: return 7871;  \ +			case 771: return 7877;  \ +			case 777: return 7875;  \ +			}  \ +			return 0;  \ +		case 239:  \ +			switch (ch2) {  \ +			case 769: return 7727;  \ +			}  \ +			return 0;  \ +		case 244:  \ +			switch (ch2) {  \ +			case 768: return 7891;  \ +			case 769: return 7889;  \ +			case 771: return 7895;  \ +			case 777: return 7893;  \ +			}  \ +			return 0;  \ +		case 245:  \ +			switch (ch2) {  \ +			case 769: return 7757;  \ +			case 772: return 557;  \ +			case 776: return 7759;  \ +			}  \ +			return 0;  \ +		case 246:  \ +			switch (ch2) {  \ +			case 772: return 555;  \ +			}  \ +			return 0;  \ +		case 248:  \ +			switch (ch2) {  \ +			case 769: return 511;  \ +			}  \ +			return 0;  \ +		case 252:  \ +			switch (ch2) {  \ +			case 768: return 476;  \ +			case 769: return 472;  \ +			case 772: return 470;  \ +			case 780: return 474;  \ +			}  \ +			return 0;  \ +		}  \ +		return 0;  \ +	case 1:  \ +		switch (ch1) {  \ +		case 258:  \ +			switch (ch2) {  \ +			case 768: return 7856;  \ +			case 769: return 7854;  \ +			case 771: return 7860;  \ +			case 777: return 7858;  \ +			}  \ +			return 0;  \ +		case 259:  \ +			switch (ch2) {  \ +			case 768: return 7857;  \ +			case 769: return 7855;  \ +			case 771: return 7861;  \ +			case 777: return 7859;  \ +			}  \ +			return 0;  \ +		case 274:  \ +			switch (ch2) {  \ +			case 768: return 7700;  \ +			case 769: return 7702;  \ +			}  \ +			return 0;  \ +		case 275:  \ +			switch (ch2) {  \ +			case 768: return 7701;  \ +			case 769: return 7703;  \ +			}  \ +			return 0;  \ +		case 332:  \ +			switch (ch2) {  \ +			case 768: return 7760;  \ +			case 769: return 7762;  \ +			}  \ +			return 0;  \ +		case 333:  \ +			switch (ch2) {  \ +			case 768: return 7761;  \ +			case 769: return 7763;  \ +			}  \ +			return 0;  \ +		case 346:  \ +			switch (ch2) {  \ +			case 775: return 7780;  \ +			}  \ +			return 0;  \ +		case 347:  \ +			switch (ch2) {  \ +			case 775: return 7781;  \ +			}  \ +			return 0;  \ +		case 352:  \ +			switch (ch2) {  \ +			case 775: return 7782;  \ +			}  \ +			return 0;  \ +		case 353:  \ +			switch (ch2) {  \ +			case 775: return 7783;  \ +			}  \ +			return 0;  \ +		case 360:  \ +			switch (ch2) {  \ +			case 769: return 7800;  \ +			}  \ +			return 0;  \ +		case 361:  \ +			switch (ch2) {  \ +			case 769: return 7801;  \ +			}  \ +			return 0;  \ +		case 362:  \ +			switch (ch2) {  \ +			case 776: return 7802;  \ +			}  \ +			return 0;  \ +		case 363:  \ +			switch (ch2) {  \ +			case 776: return 7803;  \ +			}  \ +			return 0;  \ +		case 383:  \ +			switch (ch2) {  \ +			case 775: return 7835;  \ +			}  \ +			return 0;  \ +		case 416:  \ +			switch (ch2) {  \ +			case 768: return 7900;  \ +			case 769: return 7898;  \ +			case 771: return 7904;  \ +			case 777: return 7902;  \ +			case 803: return 7906;  \ +			}  \ +			return 0;  \ +		case 417:  \ +			switch (ch2) {  \ +			case 768: return 7901;  \ +			case 769: return 7899;  \ +			case 771: return 7905;  \ +			case 777: return 7903;  \ +			case 803: return 7907;  \ +			}  \ +			return 0;  \ +		case 431:  \ +			switch (ch2) {  \ +			case 768: return 7914;  \ +			case 769: return 7912;  \ +			case 771: return 7918;  \ +			case 777: return 7916;  \ +			case 803: return 7920;  \ +			}  \ +			return 0;  \ +		case 432:  \ +			switch (ch2) {  \ +			case 768: return 7915;  \ +			case 769: return 7913;  \ +			case 771: return 7919;  \ +			case 777: return 7917;  \ +			case 803: return 7921;  \ +			}  \ +			return 0;  \ +		case 439:  \ +			switch (ch2) {  \ +			case 780: return 494;  \ +			}  \ +			return 0;  \ +		case 490:  \ +			switch (ch2) {  \ +			case 772: return 492;  \ +			}  \ +			return 0;  \ +		case 491:  \ +			switch (ch2) {  \ +			case 772: return 493;  \ +			}  \ +			return 0;  \ +		}  \ +		return 0;  \ +	case 2:  \ +		switch (ch1) {  \ +		case 550:  \ +			switch (ch2) {  \ +			case 772: return 480;  \ +			}  \ +			return 0;  \ +		case 551:  \ +			switch (ch2) {  \ +			case 772: return 481;  \ +			}  \ +			return 0;  \ +		case 552:  \ +			switch (ch2) {  \ +			case 774: return 7708;  \ +			}  \ +			return 0;  \ +		case 553:  \ +			switch (ch2) {  \ +			case 774: return 7709;  \ +			}  \ +			return 0;  \ +		case 558:  \ +			switch (ch2) {  \ +			case 772: return 560;  \ +			}  \ +			return 0;  \ +		case 559:  \ +			switch (ch2) {  \ +			case 772: return 561;  \ +			}  \ +			return 0;  \ +		case 658:  \ +			switch (ch2) {  \ +			case 780: return 495;  \ +			}  \ +			return 0;  \ +		}  \ +		return 0;  \ +	case 3:  \ +		switch (ch1) {  \ +		case 776:  \ +			switch (ch2) {  \ +			case 769: return 836;  \ +			}  \ +			return 0;  \ +		case 913:  \ +			switch (ch2) {  \ +			case 768: return 8122;  \ +			case 769: return 902;  \ +			case 772: return 8121;  \ +			case 774: return 8120;  \ +			case 787: return 7944;  \ +			case 788: return 7945;  \ +			case 837: return 8124;  \ +			}  \ +			return 0;  \ +		case 917:  \ +			switch (ch2) {  \ +			case 768: return 8136;  \ +			case 769: return 904;  \ +			case 787: return 7960;  \ +			case 788: return 7961;  \ +			}  \ +			return 0;  \ +		case 919:  \ +			switch (ch2) {  \ +			case 768: return 8138;  \ +			case 769: return 905;  \ +			case 787: return 7976;  \ +			case 788: return 7977;  \ +			case 837: return 8140;  \ +			}  \ +			return 0;  \ +		case 921:  \ +			switch (ch2) {  \ +			case 768: return 8154;  \ +			case 769: return 906;  \ +			case 772: return 8153;  \ +			case 774: return 8152;  \ +			case 776: return 938;  \ +			case 787: return 7992;  \ +			case 788: return 7993;  \ +			}  \ +			return 0;  \ +		case 927:  \ +			switch (ch2) {  \ +			case 768: return 8184;  \ +			case 769: return 908;  \ +			case 787: return 8008;  \ +			case 788: return 8009;  \ +			}  \ +			return 0;  \ +		case 929:  \ +			switch (ch2) {  \ +			case 788: return 8172;  \ +			}  \ +			return 0;  \ +		case 933:  \ +			switch (ch2) {  \ +			case 768: return 8170;  \ +			case 769: return 910;  \ +			case 772: return 8169;  \ +			case 774: return 8168;  \ +			case 776: return 939;  \ +			case 788: return 8025;  \ +			}  \ +			return 0;  \ +		case 937:  \ +			switch (ch2) {  \ +			case 768: return 8186;  \ +			case 769: return 911;  \ +			case 787: return 8040;  \ +			case 788: return 8041;  \ +			case 837: return 8188;  \ +			}  \ +			return 0;  \ +		case 940:  \ +			switch (ch2) {  \ +			case 837: return 8116;  \ +			}  \ +			return 0;  \ +		case 942:  \ +			switch (ch2) {  \ +			case 837: return 8132;  \ +			}  \ +			return 0;  \ +		case 945:  \ +			switch (ch2) {  \ +			case 768: return 8048;  \ +			case 769: return 940;  \ +			case 772: return 8113;  \ +			case 774: return 8112;  \ +			case 787: return 7936;  \ +			case 788: return 7937;  \ +			case 834: return 8118;  \ +			case 837: return 8115;  \ +			}  \ +			return 0;  \ +		case 949:  \ +			switch (ch2) {  \ +			case 768: return 8050;  \ +			case 769: return 941;  \ +			case 787: return 7952;  \ +			case 788: return 7953;  \ +			}  \ +			return 0;  \ +		case 951:  \ +			switch (ch2) {  \ +			case 768: return 8052;  \ +			case 769: return 942;  \ +			case 787: return 7968;  \ +			case 788: return 7969;  \ +			case 834: return 8134;  \ +			case 837: return 8131;  \ +			}  \ +			return 0;  \ +		case 953:  \ +			switch (ch2) {  \ +			case 768: return 8054;  \ +			case 769: return 943;  \ +			case 772: return 8145;  \ +			case 774: return 8144;  \ +			case 776: return 970;  \ +			case 787: return 7984;  \ +			case 788: return 7985;  \ +			case 834: return 8150;  \ +			}  \ +			return 0;  \ +		case 959:  \ +			switch (ch2) {  \ +			case 768: return 8056;  \ +			case 769: return 972;  \ +			case 787: return 8000;  \ +			case 788: return 8001;  \ +			}  \ +			return 0;  \ +		case 961:  \ +			switch (ch2) {  \ +			case 787: return 8164;  \ +			case 788: return 8165;  \ +			}  \ +			return 0;  \ +		case 965:  \ +			switch (ch2) {  \ +			case 768: return 8058;  \ +			case 769: return 973;  \ +			case 772: return 8161;  \ +			case 774: return 8160;  \ +			case 776: return 971;  \ +			case 787: return 8016;  \ +			case 788: return 8017;  \ +			case 834: return 8166;  \ +			}  \ +			return 0;  \ +		case 969:  \ +			switch (ch2) {  \ +			case 768: return 8060;  \ +			case 769: return 974;  \ +			case 787: return 8032;  \ +			case 788: return 8033;  \ +			case 834: return 8182;  \ +			case 837: return 8179;  \ +			}  \ +			return 0;  \ +		case 970:  \ +			switch (ch2) {  \ +			case 768: return 8146;  \ +			case 769: return 912;  \ +			case 834: return 8151;  \ +			}  \ +			return 0;  \ +		case 971:  \ +			switch (ch2) {  \ +			case 768: return 8162;  \ +			case 769: return 944;  \ +			case 834: return 8167;  \ +			}  \ +			return 0;  \ +		case 974:  \ +			switch (ch2) {  \ +			case 837: return 8180;  \ +			}  \ +			return 0;  \ +		case 978:  \ +			switch (ch2) {  \ +			case 769: return 979;  \ +			case 776: return 980;  \ +			}  \ +			return 0;  \ +		}  \ +		return 0;  \ +	case 4:  \ +		switch (ch1) {  \ +		case 1030:  \ +			switch (ch2) {  \ +			case 776: return 1031;  \ +			}  \ +			return 0;  \ +		case 1040:  \ +			switch (ch2) {  \ +			case 774: return 1232;  \ +			case 776: return 1234;  \ +			}  \ +			return 0;  \ +		case 1043:  \ +			switch (ch2) {  \ +			case 769: return 1027;  \ +			}  \ +			return 0;  \ +		case 1045:  \ +			switch (ch2) {  \ +			case 768: return 1024;  \ +			case 774: return 1238;  \ +			case 776: return 1025;  \ +			}  \ +			return 0;  \ +		case 1046:  \ +			switch (ch2) {  \ +			case 774: return 1217;  \ +			case 776: return 1244;  \ +			}  \ +			return 0;  \ +		case 1047:  \ +			switch (ch2) {  \ +			case 776: return 1246;  \ +			}  \ +			return 0;  \ +		case 1048:  \ +			switch (ch2) {  \ +			case 768: return 1037;  \ +			case 772: return 1250;  \ +			case 774: return 1049;  \ +			case 776: return 1252;  \ +			}  \ +			return 0;  \ +		case 1050:  \ +			switch (ch2) {  \ +			case 769: return 1036;  \ +			}  \ +			return 0;  \ +		case 1054:  \ +			switch (ch2) {  \ +			case 776: return 1254;  \ +			}  \ +			return 0;  \ +		case 1059:  \ +			switch (ch2) {  \ +			case 772: return 1262;  \ +			case 774: return 1038;  \ +			case 776: return 1264;  \ +			case 779: return 1266;  \ +			}  \ +			return 0;  \ +		case 1063:  \ +			switch (ch2) {  \ +			case 776: return 1268;  \ +			}  \ +			return 0;  \ +		case 1067:  \ +			switch (ch2) {  \ +			case 776: return 1272;  \ +			}  \ +			return 0;  \ +		case 1069:  \ +			switch (ch2) {  \ +			case 776: return 1260;  \ +			}  \ +			return 0;  \ +		case 1072:  \ +			switch (ch2) {  \ +			case 774: return 1233;  \ +			case 776: return 1235;  \ +			}  \ +			return 0;  \ +		case 1075:  \ +			switch (ch2) {  \ +			case 769: return 1107;  \ +			}  \ +			return 0;  \ +		case 1077:  \ +			switch (ch2) {  \ +			case 768: return 1104;  \ +			case 774: return 1239;  \ +			case 776: return 1105;  \ +			}  \ +			return 0;  \ +		case 1078:  \ +			switch (ch2) {  \ +			case 774: return 1218;  \ +			case 776: return 1245;  \ +			}  \ +			return 0;  \ +		case 1079:  \ +			switch (ch2) {  \ +			case 776: return 1247;  \ +			}  \ +			return 0;  \ +		case 1080:  \ +			switch (ch2) {  \ +			case 768: return 1117;  \ +			case 772: return 1251;  \ +			case 774: return 1081;  \ +			case 776: return 1253;  \ +			}  \ +			return 0;  \ +		case 1082:  \ +			switch (ch2) {  \ +			case 769: return 1116;  \ +			}  \ +			return 0;  \ +		case 1086:  \ +			switch (ch2) {  \ +			case 776: return 1255;  \ +			}  \ +			return 0;  \ +		case 1091:  \ +			switch (ch2) {  \ +			case 772: return 1263;  \ +			case 774: return 1118;  \ +			case 776: return 1265;  \ +			case 779: return 1267;  \ +			}  \ +			return 0;  \ +		case 1095:  \ +			switch (ch2) {  \ +			case 776: return 1269;  \ +			}  \ +			return 0;  \ +		case 1099:  \ +			switch (ch2) {  \ +			case 776: return 1273;  \ +			}  \ +			return 0;  \ +		case 1101:  \ +			switch (ch2) {  \ +			case 776: return 1261;  \ +			}  \ +			return 0;  \ +		case 1110:  \ +			switch (ch2) {  \ +			case 776: return 1111;  \ +			}  \ +			return 0;  \ +		case 1140:  \ +			switch (ch2) {  \ +			case 783: return 1142;  \ +			}  \ +			return 0;  \ +		case 1141:  \ +			switch (ch2) {  \ +			case 783: return 1143;  \ +			}  \ +			return 0;  \ +		case 1240:  \ +			switch (ch2) {  \ +			case 776: return 1242;  \ +			}  \ +			return 0;  \ +		case 1241:  \ +			switch (ch2) {  \ +			case 776: return 1243;  \ +			}  \ +			return 0;  \ +		case 1256:  \ +			switch (ch2) {  \ +			case 776: return 1258;  \ +			}  \ +			return 0;  \ +		case 1257:  \ +			switch (ch2) {  \ +			case 776: return 1259;  \ +			}  \ +			return 0;  \ +		}  \ +		return 0;  \ +	case 5:  \ +		switch (ch1) {  \ +		case 1488:  \ +			switch (ch2) {  \ +			case 1463: return 64302;  \ +			case 1464: return 64303;  \ +			case 1468: return 64304;  \ +			}  \ +			return 0;  \ +		case 1489:  \ +			switch (ch2) {  \ +			case 1468: return 64305;  \ +			case 1471: return 64332;  \ +			}  \ +			return 0;  \ +		case 1490:  \ +			switch (ch2) {  \ +			case 1468: return 64306;  \ +			}  \ +			return 0;  \ +		case 1491:  \ +			switch (ch2) {  \ +			case 1468: return 64307;  \ +			}  \ +			return 0;  \ +		case 1492:  \ +			switch (ch2) {  \ +			case 1468: return 64308;  \ +			}  \ +			return 0;  \ +		case 1493:  \ +			switch (ch2) {  \ +			case 1465: return 64331;  \ +			case 1468: return 64309;  \ +			}  \ +			return 0;  \ +		case 1494:  \ +			switch (ch2) {  \ +			case 1468: return 64310;  \ +			}  \ +			return 0;  \ +		case 1496:  \ +			switch (ch2) {  \ +			case 1468: return 64312;  \ +			}  \ +			return 0;  \ +		case 1497:  \ +			switch (ch2) {  \ +			case 1460: return 64285;  \ +			case 1468: return 64313;  \ +			}  \ +			return 0;  \ +		case 1498:  \ +			switch (ch2) {  \ +			case 1468: return 64314;  \ +			}  \ +			return 0;  \ +		case 1499:  \ +			switch (ch2) {  \ +			case 1468: return 64315;  \ +			case 1471: return 64333;  \ +			}  \ +			return 0;  \ +		case 1500:  \ +			switch (ch2) {  \ +			case 1468: return 64316;  \ +			}  \ +			return 0;  \ +		case 1502:  \ +			switch (ch2) {  \ +			case 1468: return 64318;  \ +			}  \ +			return 0;  \ +		case 1504:  \ +			switch (ch2) {  \ +			case 1468: return 64320;  \ +			}  \ +			return 0;  \ +		case 1505:  \ +			switch (ch2) {  \ +			case 1468: return 64321;  \ +			}  \ +			return 0;  \ +		case 1507:  \ +			switch (ch2) {  \ +			case 1468: return 64323;  \ +			}  \ +			return 0;  \ +		case 1508:  \ +			switch (ch2) {  \ +			case 1468: return 64324;  \ +			case 1471: return 64334;  \ +			}  \ +			return 0;  \ +		case 1510:  \ +			switch (ch2) {  \ +			case 1468: return 64326;  \ +			}  \ +			return 0;  \ +		case 1511:  \ +			switch (ch2) {  \ +			case 1468: return 64327;  \ +			}  \ +			return 0;  \ +		case 1512:  \ +			switch (ch2) {  \ +			case 1468: return 64328;  \ +			}  \ +			return 0;  \ +		case 1513:  \ +			switch (ch2) {  \ +			case 1468: return 64329;  \ +			case 1473: return 64298;  \ +			case 1474: return 64299;  \ +			}  \ +			return 0;  \ +		case 1514:  \ +			switch (ch2) {  \ +			case 1468: return 64330;  \ +			}  \ +			return 0;  \ +		case 1522:  \ +			switch (ch2) {  \ +			case 1463: return 64287;  \ +			}  \ +			return 0;  \ +		}  \ +		return 0;  \ +	case 6:  \ +		switch (ch1) {  \ +		case 1575:  \ +			switch (ch2) {  \ +			case 1619: return 1570;  \ +			case 1620: return 1571;  \ +			case 1621: return 1573;  \ +			}  \ +			return 0;  \ +		case 1608:  \ +			switch (ch2) {  \ +			case 1620: return 1572;  \ +			}  \ +			return 0;  \ +		case 1610:  \ +			switch (ch2) {  \ +			case 1620: return 1574;  \ +			}  \ +			return 0;  \ +		case 1729:  \ +			switch (ch2) {  \ +			case 1620: return 1730;  \ +			}  \ +			return 0;  \ +		case 1746:  \ +			switch (ch2) {  \ +			case 1620: return 1747;  \ +			}  \ +			return 0;  \ +		case 1749:  \ +			switch (ch2) {  \ +			case 1620: return 1728;  \ +			}  \ +			return 0;  \ +		}  \ +		return 0;  \ +	case 9:  \ +		switch (ch1) {  \ +		case 2325:  \ +			switch (ch2) {  \ +			case 2364: return 2392;  \ +			}  \ +			return 0;  \ +		case 2326:  \ +			switch (ch2) {  \ +			case 2364: return 2393;  \ +			}  \ +			return 0;  \ +		case 2327:  \ +			switch (ch2) {  \ +			case 2364: return 2394;  \ +			}  \ +			return 0;  \ +		case 2332:  \ +			switch (ch2) {  \ +			case 2364: return 2395;  \ +			}  \ +			return 0;  \ +		case 2337:  \ +			switch (ch2) {  \ +			case 2364: return 2396;  \ +			}  \ +			return 0;  \ +		case 2338:  \ +			switch (ch2) {  \ +			case 2364: return 2397;  \ +			}  \ +			return 0;  \ +		case 2344:  \ +			switch (ch2) {  \ +			case 2364: return 2345;  \ +			}  \ +			return 0;  \ +		case 2347:  \ +			switch (ch2) {  \ +			case 2364: return 2398;  \ +			}  \ +			return 0;  \ +		case 2351:  \ +			switch (ch2) {  \ +			case 2364: return 2399;  \ +			}  \ +			return 0;  \ +		case 2352:  \ +			switch (ch2) {  \ +			case 2364: return 2353;  \ +			}  \ +			return 0;  \ +		case 2355:  \ +			switch (ch2) {  \ +			case 2364: return 2356;  \ +			}  \ +			return 0;  \ +		case 2465:  \ +			switch (ch2) {  \ +			case 2492: return 2524;  \ +			}  \ +			return 0;  \ +		case 2466:  \ +			switch (ch2) {  \ +			case 2492: return 2525;  \ +			}  \ +			return 0;  \ +		case 2479:  \ +			switch (ch2) {  \ +			case 2492: return 2527;  \ +			}  \ +			return 0;  \ +		case 2503:  \ +			switch (ch2) {  \ +			case 2494: return 2507;  \ +			case 2519: return 2508;  \ +			}  \ +			return 0;  \ +		}  \ +		return 0;  \ +	case 10:  \ +		switch (ch1) {  \ +		case 2582:  \ +			switch (ch2) {  \ +			case 2620: return 2649;  \ +			}  \ +			return 0;  \ +		case 2583:  \ +			switch (ch2) {  \ +			case 2620: return 2650;  \ +			}  \ +			return 0;  \ +		case 2588:  \ +			switch (ch2) {  \ +			case 2620: return 2651;  \ +			}  \ +			return 0;  \ +		case 2603:  \ +			switch (ch2) {  \ +			case 2620: return 2654;  \ +			}  \ +			return 0;  \ +		case 2610:  \ +			switch (ch2) {  \ +			case 2620: return 2611;  \ +			}  \ +			return 0;  \ +		case 2616:  \ +			switch (ch2) {  \ +			case 2620: return 2614;  \ +			}  \ +			return 0;  \ +		}  \ +		return 0;  \ +	case 11:  \ +		switch (ch1) {  \ +		case 2849:  \ +			switch (ch2) {  \ +			case 2876: return 2908;  \ +			}  \ +			return 0;  \ +		case 2850:  \ +			switch (ch2) {  \ +			case 2876: return 2909;  \ +			}  \ +			return 0;  \ +		case 2887:  \ +			switch (ch2) {  \ +			case 2878: return 2891;  \ +			case 2902: return 2888;  \ +			case 2903: return 2892;  \ +			}  \ +			return 0;  \ +		case 2962:  \ +			switch (ch2) {  \ +			case 3031: return 2964;  \ +			}  \ +			return 0;  \ +		case 3014:  \ +			switch (ch2) {  \ +			case 3006: return 3018;  \ +			case 3031: return 3020;  \ +			}  \ +			return 0;  \ +		case 3015:  \ +			switch (ch2) {  \ +			case 3006: return 3019;  \ +			}  \ +			return 0;  \ +		}  \ +		return 0;  \ +	case 12:  \ +		switch (ch1) {  \ +		case 3142:  \ +			switch (ch2) {  \ +			case 3158: return 3144;  \ +			}  \ +			return 0;  \ +		case 3263:  \ +			switch (ch2) {  \ +			case 3285: return 3264;  \ +			}  \ +			return 0;  \ +		case 3270:  \ +			switch (ch2) {  \ +			case 3266: return 3274;  \ +			case 3285: return 3271;  \ +			case 3286: return 3272;  \ +			}  \ +			return 0;  \ +		case 3274:  \ +			switch (ch2) {  \ +			case 3285: return 3275;  \ +			}  \ +			return 0;  \ +		}  \ +		return 0;  \ +	case 13:  \ +		switch (ch1) {  \ +		case 3398:  \ +			switch (ch2) {  \ +			case 3390: return 3402;  \ +			case 3415: return 3404;  \ +			}  \ +			return 0;  \ +		case 3399:  \ +			switch (ch2) {  \ +			case 3390: return 3403;  \ +			}  \ +			return 0;  \ +		case 3545:  \ +			switch (ch2) {  \ +			case 3530: return 3546;  \ +			case 3535: return 3548;  \ +			case 3551: return 3550;  \ +			}  \ +			return 0;  \ +		case 3548:  \ +			switch (ch2) {  \ +			case 3530: return 3549;  \ +			}  \ +			return 0;  \ +		}  \ +		return 0;  \ +	case 15:  \ +		switch (ch1) {  \ +		case 3904:  \ +			switch (ch2) {  \ +			case 4021: return 3945;  \ +			}  \ +			return 0;  \ +		case 3906:  \ +			switch (ch2) {  \ +			case 4023: return 3907;  \ +			}  \ +			return 0;  \ +		case 3916:  \ +			switch (ch2) {  \ +			case 4023: return 3917;  \ +			}  \ +			return 0;  \ +		case 3921:  \ +			switch (ch2) {  \ +			case 4023: return 3922;  \ +			}  \ +			return 0;  \ +		case 3926:  \ +			switch (ch2) {  \ +			case 4023: return 3927;  \ +			}  \ +			return 0;  \ +		case 3931:  \ +			switch (ch2) {  \ +			case 4023: return 3932;  \ +			}  \ +			return 0;  \ +		case 3953:  \ +			switch (ch2) {  \ +			case 3954: return 3955;  \ +			case 3956: return 3957;  \ +			case 3968: return 3969;  \ +			}  \ +			return 0;  \ +		case 3984:  \ +			switch (ch2) {  \ +			case 4021: return 4025;  \ +			}  \ +			return 0;  \ +		case 3986:  \ +			switch (ch2) {  \ +			case 4023: return 3987;  \ +			}  \ +			return 0;  \ +		case 3996:  \ +			switch (ch2) {  \ +			case 4023: return 3997;  \ +			}  \ +			return 0;  \ +		case 4001:  \ +			switch (ch2) {  \ +			case 4023: return 4002;  \ +			}  \ +			return 0;  \ +		case 4006:  \ +			switch (ch2) {  \ +			case 4023: return 4007;  \ +			}  \ +			return 0;  \ +		case 4011:  \ +			switch (ch2) {  \ +			case 4023: return 4012;  \ +			}  \ +			return 0;  \ +		case 4018:  \ +			switch (ch2) {  \ +			case 3968: return 3958;  \ +			}  \ +			return 0;  \ +		case 4019:  \ +			switch (ch2) {  \ +			case 3968: return 3960;  \ +			}  \ +			return 0;  \ +		}  \ +		return 0;  \ +	case 16:  \ +		switch (ch1) {  \ +		case 4133:  \ +			switch (ch2) {  \ +			case 4142: return 4134;  \ +			}  \ +			return 0;  \ +		}  \ +		return 0;  \ +	case 30:  \ +		switch (ch1) {  \ +		case 7734:  \ +			switch (ch2) {  \ +			case 772: return 7736;  \ +			}  \ +			return 0;  \ +		case 7735:  \ +			switch (ch2) {  \ +			case 772: return 7737;  \ +			}  \ +			return 0;  \ +		case 7770:  \ +			switch (ch2) {  \ +			case 772: return 7772;  \ +			}  \ +			return 0;  \ +		case 7771:  \ +			switch (ch2) {  \ +			case 772: return 7773;  \ +			}  \ +			return 0;  \ +		case 7778:  \ +			switch (ch2) {  \ +			case 775: return 7784;  \ +			}  \ +			return 0;  \ +		case 7779:  \ +			switch (ch2) {  \ +			case 775: return 7785;  \ +			}  \ +			return 0;  \ +		case 7840:  \ +			switch (ch2) {  \ +			case 770: return 7852;  \ +			case 774: return 7862;  \ +			}  \ +			return 0;  \ +		case 7841:  \ +			switch (ch2) {  \ +			case 770: return 7853;  \ +			case 774: return 7863;  \ +			}  \ +			return 0;  \ +		case 7864:  \ +			switch (ch2) {  \ +			case 770: return 7878;  \ +			}  \ +			return 0;  \ +		case 7865:  \ +			switch (ch2) {  \ +			case 770: return 7879;  \ +			}  \ +			return 0;  \ +		case 7884:  \ +			switch (ch2) {  \ +			case 770: return 7896;  \ +			}  \ +			return 0;  \ +		case 7885:  \ +			switch (ch2) {  \ +			case 770: return 7897;  \ +			}  \ +			return 0;  \ +		}  \ +		return 0;  \ +	case 31:  \ +		switch (ch1) {  \ +		case 7936:  \ +			switch (ch2) {  \ +			case 768: return 7938;  \ +			case 769: return 7940;  \ +			case 834: return 7942;  \ +			case 837: return 8064;  \ +			}  \ +			return 0;  \ +		case 7937:  \ +			switch (ch2) {  \ +			case 768: return 7939;  \ +			case 769: return 7941;  \ +			case 834: return 7943;  \ +			case 837: return 8065;  \ +			}  \ +			return 0;  \ +		case 7938:  \ +			switch (ch2) {  \ +			case 837: return 8066;  \ +			}  \ +			return 0;  \ +		case 7939:  \ +			switch (ch2) {  \ +			case 837: return 8067;  \ +			}  \ +			return 0;  \ +		case 7940:  \ +			switch (ch2) {  \ +			case 837: return 8068;  \ +			}  \ +			return 0;  \ +		case 7941:  \ +			switch (ch2) {  \ +			case 837: return 8069;  \ +			}  \ +			return 0;  \ +		case 7942:  \ +			switch (ch2) {  \ +			case 837: return 8070;  \ +			}  \ +			return 0;  \ +		case 7943:  \ +			switch (ch2) {  \ +			case 837: return 8071;  \ +			}  \ +			return 0;  \ +		case 7944:  \ +			switch (ch2) {  \ +			case 768: return 7946;  \ +			case 769: return 7948;  \ +			case 834: return 7950;  \ +			case 837: return 8072;  \ +			}  \ +			return 0;  \ +		case 7945:  \ +			switch (ch2) {  \ +			case 768: return 7947;  \ +			case 769: return 7949;  \ +			case 834: return 7951;  \ +			case 837: return 8073;  \ +			}  \ +			return 0;  \ +		case 7946:  \ +			switch (ch2) {  \ +			case 837: return 8074;  \ +			}  \ +			return 0;  \ +		case 7947:  \ +			switch (ch2) {  \ +			case 837: return 8075;  \ +			}  \ +			return 0;  \ +		case 7948:  \ +			switch (ch2) {  \ +			case 837: return 8076;  \ +			}  \ +			return 0;  \ +		case 7949:  \ +			switch (ch2) {  \ +			case 837: return 8077;  \ +			}  \ +			return 0;  \ +		case 7950:  \ +			switch (ch2) {  \ +			case 837: return 8078;  \ +			}  \ +			return 0;  \ +		case 7951:  \ +			switch (ch2) {  \ +			case 837: return 8079;  \ +			}  \ +			return 0;  \ +		case 7952:  \ +			switch (ch2) {  \ +			case 768: return 7954;  \ +			case 769: return 7956;  \ +			}  \ +			return 0;  \ +		case 7953:  \ +			switch (ch2) {  \ +			case 768: return 7955;  \ +			case 769: return 7957;  \ +			}  \ +			return 0;  \ +		case 7960:  \ +			switch (ch2) {  \ +			case 768: return 7962;  \ +			case 769: return 7964;  \ +			}  \ +			return 0;  \ +		case 7961:  \ +			switch (ch2) {  \ +			case 768: return 7963;  \ +			case 769: return 7965;  \ +			}  \ +			return 0;  \ +		case 7968:  \ +			switch (ch2) {  \ +			case 768: return 7970;  \ +			case 769: return 7972;  \ +			case 834: return 7974;  \ +			case 837: return 8080;  \ +			}  \ +			return 0;  \ +		case 7969:  \ +			switch (ch2) {  \ +			case 768: return 7971;  \ +			case 769: return 7973;  \ +			case 834: return 7975;  \ +			case 837: return 8081;  \ +			}  \ +			return 0;  \ +		case 7970:  \ +			switch (ch2) {  \ +			case 837: return 8082;  \ +			}  \ +			return 0;  \ +		case 7971:  \ +			switch (ch2) {  \ +			case 837: return 8083;  \ +			}  \ +			return 0;  \ +		case 7972:  \ +			switch (ch2) {  \ +			case 837: return 8084;  \ +			}  \ +			return 0;  \ +		case 7973:  \ +			switch (ch2) {  \ +			case 837: return 8085;  \ +			}  \ +			return 0;  \ +		case 7974:  \ +			switch (ch2) {  \ +			case 837: return 8086;  \ +			}  \ +			return 0;  \ +		case 7975:  \ +			switch (ch2) {  \ +			case 837: return 8087;  \ +			}  \ +			return 0;  \ +		case 7976:  \ +			switch (ch2) {  \ +			case 768: return 7978;  \ +			case 769: return 7980;  \ +			case 834: return 7982;  \ +			case 837: return 8088;  \ +			}  \ +			return 0;  \ +		case 7977:  \ +			switch (ch2) {  \ +			case 768: return 7979;  \ +			case 769: return 7981;  \ +			case 834: return 7983;  \ +			case 837: return 8089;  \ +			}  \ +			return 0;  \ +		case 7978:  \ +			switch (ch2) {  \ +			case 837: return 8090;  \ +			}  \ +			return 0;  \ +		case 7979:  \ +			switch (ch2) {  \ +			case 837: return 8091;  \ +			}  \ +			return 0;  \ +		case 7980:  \ +			switch (ch2) {  \ +			case 837: return 8092;  \ +			}  \ +			return 0;  \ +		case 7981:  \ +			switch (ch2) {  \ +			case 837: return 8093;  \ +			}  \ +			return 0;  \ +		case 7982:  \ +			switch (ch2) {  \ +			case 837: return 8094;  \ +			}  \ +			return 0;  \ +		case 7983:  \ +			switch (ch2) {  \ +			case 837: return 8095;  \ +			}  \ +			return 0;  \ +		case 7984:  \ +			switch (ch2) {  \ +			case 768: return 7986;  \ +			case 769: return 7988;  \ +			case 834: return 7990;  \ +			}  \ +			return 0;  \ +		case 7985:  \ +			switch (ch2) {  \ +			case 768: return 7987;  \ +			case 769: return 7989;  \ +			case 834: return 7991;  \ +			}  \ +			return 0;  \ +		case 7992:  \ +			switch (ch2) {  \ +			case 768: return 7994;  \ +			case 769: return 7996;  \ +			case 834: return 7998;  \ +			}  \ +			return 0;  \ +		case 7993:  \ +			switch (ch2) {  \ +			case 768: return 7995;  \ +			case 769: return 7997;  \ +			case 834: return 7999;  \ +			}  \ +			return 0;  \ +		case 8000:  \ +			switch (ch2) {  \ +			case 768: return 8002;  \ +			case 769: return 8004;  \ +			}  \ +			return 0;  \ +		case 8001:  \ +			switch (ch2) {  \ +			case 768: return 8003;  \ +			case 769: return 8005;  \ +			}  \ +			return 0;  \ +		case 8008:  \ +			switch (ch2) {  \ +			case 768: return 8010;  \ +			case 769: return 8012;  \ +			}  \ +			return 0;  \ +		case 8009:  \ +			switch (ch2) {  \ +			case 768: return 8011;  \ +			case 769: return 8013;  \ +			}  \ +			return 0;  \ +		case 8016:  \ +			switch (ch2) {  \ +			case 768: return 8018;  \ +			case 769: return 8020;  \ +			case 834: return 8022;  \ +			}  \ +			return 0;  \ +		case 8017:  \ +			switch (ch2) {  \ +			case 768: return 8019;  \ +			case 769: return 8021;  \ +			case 834: return 8023;  \ +			}  \ +			return 0;  \ +		case 8025:  \ +			switch (ch2) {  \ +			case 768: return 8027;  \ +			case 769: return 8029;  \ +			case 834: return 8031;  \ +			}  \ +			return 0;  \ +		case 8032:  \ +			switch (ch2) {  \ +			case 768: return 8034;  \ +			case 769: return 8036;  \ +			case 834: return 8038;  \ +			case 837: return 8096;  \ +			}  \ +			return 0;  \ +		case 8033:  \ +			switch (ch2) {  \ +			case 768: return 8035;  \ +			case 769: return 8037;  \ +			case 834: return 8039;  \ +			case 837: return 8097;  \ +			}  \ +			return 0;  \ +		case 8034:  \ +			switch (ch2) {  \ +			case 837: return 8098;  \ +			}  \ +			return 0;  \ +		case 8035:  \ +			switch (ch2) {  \ +			case 837: return 8099;  \ +			}  \ +			return 0;  \ +		case 8036:  \ +			switch (ch2) {  \ +			case 837: return 8100;  \ +			}  \ +			return 0;  \ +		case 8037:  \ +			switch (ch2) {  \ +			case 837: return 8101;  \ +			}  \ +			return 0;  \ +		case 8038:  \ +			switch (ch2) {  \ +			case 837: return 8102;  \ +			}  \ +			return 0;  \ +		case 8039:  \ +			switch (ch2) {  \ +			case 837: return 8103;  \ +			}  \ +			return 0;  \ +		case 8040:  \ +			switch (ch2) {  \ +			case 768: return 8042;  \ +			case 769: return 8044;  \ +			case 834: return 8046;  \ +			case 837: return 8104;  \ +			}  \ +			return 0;  \ +		case 8041:  \ +			switch (ch2) {  \ +			case 768: return 8043;  \ +			case 769: return 8045;  \ +			case 834: return 8047;  \ +			case 837: return 8105;  \ +			}  \ +			return 0;  \ +		case 8042:  \ +			switch (ch2) {  \ +			case 837: return 8106;  \ +			}  \ +			return 0;  \ +		case 8043:  \ +			switch (ch2) {  \ +			case 837: return 8107;  \ +			}  \ +			return 0;  \ +		case 8044:  \ +			switch (ch2) {  \ +			case 837: return 8108;  \ +			}  \ +			return 0;  \ +		case 8045:  \ +			switch (ch2) {  \ +			case 837: return 8109;  \ +			}  \ +			return 0;  \ +		case 8046:  \ +			switch (ch2) {  \ +			case 837: return 8110;  \ +			}  \ +			return 0;  \ +		case 8047:  \ +			switch (ch2) {  \ +			case 837: return 8111;  \ +			}  \ +			return 0;  \ +		case 8048:  \ +			switch (ch2) {  \ +			case 837: return 8114;  \ +			}  \ +			return 0;  \ +		case 8052:  \ +			switch (ch2) {  \ +			case 837: return 8130;  \ +			}  \ +			return 0;  \ +		case 8060:  \ +			switch (ch2) {  \ +			case 837: return 8178;  \ +			}  \ +			return 0;  \ +		case 8118:  \ +			switch (ch2) {  \ +			case 837: return 8119;  \ +			}  \ +			return 0;  \ +		case 8127:  \ +			switch (ch2) {  \ +			case 768: return 8141;  \ +			case 769: return 8142;  \ +			case 834: return 8143;  \ +			}  \ +			return 0;  \ +		case 8134:  \ +			switch (ch2) {  \ +			case 837: return 8135;  \ +			}  \ +			return 0;  \ +		case 8182:  \ +			switch (ch2) {  \ +			case 837: return 8183;  \ +			}  \ +			return 0;  \ +		case 8190:  \ +			switch (ch2) {  \ +			case 768: return 8157;  \ +			case 769: return 8158;  \ +			case 834: return 8159;  \ +			}  \ +			return 0;  \ +		}  \ +		return 0;  \ +	case 33:  \ +		switch (ch1) {  \ +		case 8592:  \ +			switch (ch2) {  \ +			case 824: return 8602;  \ +			}  \ +			return 0;  \ +		case 8594:  \ +			switch (ch2) {  \ +			case 824: return 8603;  \ +			}  \ +			return 0;  \ +		case 8596:  \ +			switch (ch2) {  \ +			case 824: return 8622;  \ +			}  \ +			return 0;  \ +		case 8656:  \ +			switch (ch2) {  \ +			case 824: return 8653;  \ +			}  \ +			return 0;  \ +		case 8658:  \ +			switch (ch2) {  \ +			case 824: return 8655;  \ +			}  \ +			return 0;  \ +		case 8660:  \ +			switch (ch2) {  \ +			case 824: return 8654;  \ +			}  \ +			return 0;  \ +		}  \ +		return 0;  \ +	case 34:  \ +		switch (ch1) {  \ +		case 8707:  \ +			switch (ch2) {  \ +			case 824: return 8708;  \ +			}  \ +			return 0;  \ +		case 8712:  \ +			switch (ch2) {  \ +			case 824: return 8713;  \ +			}  \ +			return 0;  \ +		case 8715:  \ +			switch (ch2) {  \ +			case 824: return 8716;  \ +			}  \ +			return 0;  \ +		case 8739:  \ +			switch (ch2) {  \ +			case 824: return 8740;  \ +			}  \ +			return 0;  \ +		case 8741:  \ +			switch (ch2) {  \ +			case 824: return 8742;  \ +			}  \ +			return 0;  \ +		case 8764:  \ +			switch (ch2) {  \ +			case 824: return 8769;  \ +			}  \ +			return 0;  \ +		case 8771:  \ +			switch (ch2) {  \ +			case 824: return 8772;  \ +			}  \ +			return 0;  \ +		case 8773:  \ +			switch (ch2) {  \ +			case 824: return 8775;  \ +			}  \ +			return 0;  \ +		case 8776:  \ +			switch (ch2) {  \ +			case 824: return 8777;  \ +			}  \ +			return 0;  \ +		case 8781:  \ +			switch (ch2) {  \ +			case 824: return 8813;  \ +			}  \ +			return 0;  \ +		case 8801:  \ +			switch (ch2) {  \ +			case 824: return 8802;  \ +			}  \ +			return 0;  \ +		case 8804:  \ +			switch (ch2) {  \ +			case 824: return 8816;  \ +			}  \ +			return 0;  \ +		case 8805:  \ +			switch (ch2) {  \ +			case 824: return 8817;  \ +			}  \ +			return 0;  \ +		case 8818:  \ +			switch (ch2) {  \ +			case 824: return 8820;  \ +			}  \ +			return 0;  \ +		case 8819:  \ +			switch (ch2) {  \ +			case 824: return 8821;  \ +			}  \ +			return 0;  \ +		case 8822:  \ +			switch (ch2) {  \ +			case 824: return 8824;  \ +			}  \ +			return 0;  \ +		case 8823:  \ +			switch (ch2) {  \ +			case 824: return 8825;  \ +			}  \ +			return 0;  \ +		case 8826:  \ +			switch (ch2) {  \ +			case 824: return 8832;  \ +			}  \ +			return 0;  \ +		case 8827:  \ +			switch (ch2) {  \ +			case 824: return 8833;  \ +			}  \ +			return 0;  \ +		case 8828:  \ +			switch (ch2) {  \ +			case 824: return 8928;  \ +			}  \ +			return 0;  \ +		case 8829:  \ +			switch (ch2) {  \ +			case 824: return 8929;  \ +			}  \ +			return 0;  \ +		case 8834:  \ +			switch (ch2) {  \ +			case 824: return 8836;  \ +			}  \ +			return 0;  \ +		case 8835:  \ +			switch (ch2) {  \ +			case 824: return 8837;  \ +			}  \ +			return 0;  \ +		case 8838:  \ +			switch (ch2) {  \ +			case 824: return 8840;  \ +			}  \ +			return 0;  \ +		case 8839:  \ +			switch (ch2) {  \ +			case 824: return 8841;  \ +			}  \ +			return 0;  \ +		case 8849:  \ +			switch (ch2) {  \ +			case 824: return 8930;  \ +			}  \ +			return 0;  \ +		case 8850:  \ +			switch (ch2) {  \ +			case 824: return 8931;  \ +			}  \ +			return 0;  \ +		case 8866:  \ +			switch (ch2) {  \ +			case 824: return 8876;  \ +			}  \ +			return 0;  \ +		case 8872:  \ +			switch (ch2) {  \ +			case 824: return 8877;  \ +			}  \ +			return 0;  \ +		case 8873:  \ +			switch (ch2) {  \ +			case 824: return 8878;  \ +			}  \ +			return 0;  \ +		case 8875:  \ +			switch (ch2) {  \ +			case 824: return 8879;  \ +			}  \ +			return 0;  \ +		case 8882:  \ +			switch (ch2) {  \ +			case 824: return 8938;  \ +			}  \ +			return 0;  \ +		case 8883:  \ +			switch (ch2) {  \ +			case 824: return 8939;  \ +			}  \ +			return 0;  \ +		case 8884:  \ +			switch (ch2) {  \ +			case 824: return 8940;  \ +			}  \ +			return 0;  \ +		case 8885:  \ +			switch (ch2) {  \ +			case 824: return 8941;  \ +			}  \ +			return 0;  \ +		}  \ +		return 0;  \ +	case 42:  \ +		switch (ch1) {  \ +		case 10973:  \ +			switch (ch2) {  \ +			case 824: return 10972;  \ +			}  \ +			return 0;  \ +		}  \ +		return 0;  \ +	case 48:  \ +		switch (ch1) {  \ +		case 12358:  \ +			switch (ch2) {  \ +			case 12441: return 12436;  \ +			}  \ +			return 0;  \ +		case 12363:  \ +			switch (ch2) {  \ +			case 12441: return 12364;  \ +			}  \ +			return 0;  \ +		case 12365:  \ +			switch (ch2) {  \ +			case 12441: return 12366;  \ +			}  \ +			return 0;  \ +		case 12367:  \ +			switch (ch2) {  \ +			case 12441: return 12368;  \ +			}  \ +			return 0;  \ +		case 12369:  \ +			switch (ch2) {  \ +			case 12441: return 12370;  \ +			}  \ +			return 0;  \ +		case 12371:  \ +			switch (ch2) {  \ +			case 12441: return 12372;  \ +			}  \ +			return 0;  \ +		case 12373:  \ +			switch (ch2) {  \ +			case 12441: return 12374;  \ +			}  \ +			return 0;  \ +		case 12375:  \ +			switch (ch2) {  \ +			case 12441: return 12376;  \ +			}  \ +			return 0;  \ +		case 12377:  \ +			switch (ch2) {  \ +			case 12441: return 12378;  \ +			}  \ +			return 0;  \ +		case 12379:  \ +			switch (ch2) {  \ +			case 12441: return 12380;  \ +			}  \ +			return 0;  \ +		case 12381:  \ +			switch (ch2) {  \ +			case 12441: return 12382;  \ +			}  \ +			return 0;  \ +		case 12383:  \ +			switch (ch2) {  \ +			case 12441: return 12384;  \ +			}  \ +			return 0;  \ +		case 12385:  \ +			switch (ch2) {  \ +			case 12441: return 12386;  \ +			}  \ +			return 0;  \ +		case 12388:  \ +			switch (ch2) {  \ +			case 12441: return 12389;  \ +			}  \ +			return 0;  \ +		case 12390:  \ +			switch (ch2) {  \ +			case 12441: return 12391;  \ +			}  \ +			return 0;  \ +		case 12392:  \ +			switch (ch2) {  \ +			case 12441: return 12393;  \ +			}  \ +			return 0;  \ +		case 12399:  \ +			switch (ch2) {  \ +			case 12441: return 12400;  \ +			case 12442: return 12401;  \ +			}  \ +			return 0;  \ +		case 12402:  \ +			switch (ch2) {  \ +			case 12441: return 12403;  \ +			case 12442: return 12404;  \ +			}  \ +			return 0;  \ +		case 12405:  \ +			switch (ch2) {  \ +			case 12441: return 12406;  \ +			case 12442: return 12407;  \ +			}  \ +			return 0;  \ +		case 12408:  \ +			switch (ch2) {  \ +			case 12441: return 12409;  \ +			case 12442: return 12410;  \ +			}  \ +			return 0;  \ +		case 12411:  \ +			switch (ch2) {  \ +			case 12441: return 12412;  \ +			case 12442: return 12413;  \ +			}  \ +			return 0;  \ +		case 12445:  \ +			switch (ch2) {  \ +			case 12441: return 12446;  \ +			}  \ +			return 0;  \ +		case 12454:  \ +			switch (ch2) {  \ +			case 12441: return 12532;  \ +			}  \ +			return 0;  \ +		case 12459:  \ +			switch (ch2) {  \ +			case 12441: return 12460;  \ +			}  \ +			return 0;  \ +		case 12461:  \ +			switch (ch2) {  \ +			case 12441: return 12462;  \ +			}  \ +			return 0;  \ +		case 12463:  \ +			switch (ch2) {  \ +			case 12441: return 12464;  \ +			}  \ +			return 0;  \ +		case 12465:  \ +			switch (ch2) {  \ +			case 12441: return 12466;  \ +			}  \ +			return 0;  \ +		case 12467:  \ +			switch (ch2) {  \ +			case 12441: return 12468;  \ +			}  \ +			return 0;  \ +		case 12469:  \ +			switch (ch2) {  \ +			case 12441: return 12470;  \ +			}  \ +			return 0;  \ +		case 12471:  \ +			switch (ch2) {  \ +			case 12441: return 12472;  \ +			}  \ +			return 0;  \ +		case 12473:  \ +			switch (ch2) {  \ +			case 12441: return 12474;  \ +			}  \ +			return 0;  \ +		case 12475:  \ +			switch (ch2) {  \ +			case 12441: return 12476;  \ +			}  \ +			return 0;  \ +		case 12477:  \ +			switch (ch2) {  \ +			case 12441: return 12478;  \ +			}  \ +			return 0;  \ +		case 12479:  \ +			switch (ch2) {  \ +			case 12441: return 12480;  \ +			}  \ +			return 0;  \ +		case 12481:  \ +			switch (ch2) {  \ +			case 12441: return 12482;  \ +			}  \ +			return 0;  \ +		case 12484:  \ +			switch (ch2) {  \ +			case 12441: return 12485;  \ +			}  \ +			return 0;  \ +		case 12486:  \ +			switch (ch2) {  \ +			case 12441: return 12487;  \ +			}  \ +			return 0;  \ +		case 12488:  \ +			switch (ch2) {  \ +			case 12441: return 12489;  \ +			}  \ +			return 0;  \ +		case 12495:  \ +			switch (ch2) {  \ +			case 12441: return 12496;  \ +			case 12442: return 12497;  \ +			}  \ +			return 0;  \ +		case 12498:  \ +			switch (ch2) {  \ +			case 12441: return 12499;  \ +			case 12442: return 12500;  \ +			}  \ +			return 0;  \ +		case 12501:  \ +			switch (ch2) {  \ +			case 12441: return 12502;  \ +			case 12442: return 12503;  \ +			}  \ +			return 0;  \ +		case 12504:  \ +			switch (ch2) {  \ +			case 12441: return 12505;  \ +			case 12442: return 12506;  \ +			}  \ +			return 0;  \ +		case 12507:  \ +			switch (ch2) {  \ +			case 12441: return 12508;  \ +			case 12442: return 12509;  \ +			}  \ +			return 0;  \ +		case 12527:  \ +			switch (ch2) {  \ +			case 12441: return 12535;  \ +			}  \ +			return 0;  \ +		case 12528:  \ +			switch (ch2) {  \ +			case 12441: return 12536;  \ +			}  \ +			return 0;  \ +		case 12529:  \ +			switch (ch2) {  \ +			case 12441: return 12537;  \ +			}  \ +			return 0;  \ +		case 12530:  \ +			switch (ch2) {  \ +			case 12441: return 12538;  \ +			}  \ +			return 0;  \ +		case 12541:  \ +			switch (ch2) {  \ +			case 12441: return 12542;  \ +			}  \ +			return 0;  \ +		}  \ +		return 0;  \ +	case 251:  \ +		switch (ch1) {  \ +		case 64329:  \ +			switch (ch2) {  \ +			case 1473: return 64300;  \ +			case 1474: return 64301;  \ +			}  \ +			return 0;  \ +		}  \ +		return 0;  \ +	case 465:  \ +		switch (ch1) {  \ +		case 119127:  \ +			switch (ch2) {  \ +			case 119141: return 119134;  \ +			}  \ +			return 0;  \ +		case 119128:  \ +			switch (ch2) {  \ +			case 119141: return 119135;  \ +			}  \ +			return 0;  \ +		case 119135:  \ +			switch (ch2) {  \ +			case 119150: return 119136;  \ +			case 119151: return 119137;  \ +			case 119152: return 119138;  \ +			case 119153: return 119139;  \ +			case 119154: return 119140;  \ +			}  \ +			return 0;  \ +		case 119225:  \ +			switch (ch2) {  \ +			case 119141: return 119227;  \ +			}  \ +			return 0;  \ +		case 119226:  \ +			switch (ch2) {  \ +			case 119141: return 119228;  \ +			}  \ +			return 0;  \ +		case 119227:  \ +			switch (ch2) {  \ +			case 119150: return 119229;  \ +			case 119151: return 119231;  \ +			}  \ +			return 0;  \ +		case 119228:  \ +			switch (ch2) {  \ +			case 119150: return 119230;  \ +			case 119151: return 119232;  \ +			}  \ +			return 0;  \ +		}  \ +		return 0;  \ +	}  \ +	return 0;  glui32 unigen_decomp_data[3247] = {  	0x41, 0x300, 0x41, 0x301, 0x41, 0x302, 0x41, 0x303, @@ -7587,7 +7587,8 @@ glui32 unigen_decomp_data[3247] = {  	0x980b, 0x9829, 0x295b6, 0x98e2, 0x4b33, 0x9929, 0x99a7, 0x99c2,  	0x99fe, 0x4bce, 0x29b30, 0x9b12, 0x9c40, 0x9cfd, 0x4cce, 0x4ced,  	0x9d67, 0x2a0ce, 0x4cf8, 0x2a105, 0x2a20e, 0x2a291, 0x9ebb, 0x4d56, -	0x9ef9, 0x9efe, 0x9f05, 0x9f0f, 0x9f16, 0x9f3b, 0x2a600, }; +	0x9ef9, 0x9efe, 0x9f05, 0x9f0f, 0x9f16, 0x9f3b, 0x2a600, +};  gli_decomp_block_t unigen_decomp_block_0x0[256] = {  	{ 0, 0 }, @@ -11475,351 +11476,351 @@ gli_decomp_block_t unigen_decomp_block_0x2fa[256] = {  };  #define GET_DECOMP_BLOCK(ch, blockptr)  \ -switch ((glui32)(ch) >> 8) {  \ -    case 0x0:  \ -        *blockptr = unigen_decomp_block_0x0;  \ -        break;  \ -    case 0x1:  \ -        *blockptr = unigen_decomp_block_0x1;  \ -        break;  \ -    case 0x2:  \ -        *blockptr = unigen_decomp_block_0x2;  \ -        break;  \ -    case 0x3:  \ -        *blockptr = unigen_decomp_block_0x3;  \ -        break;  \ -    case 0x4:  \ -        *blockptr = unigen_decomp_block_0x4;  \ -        break;  \ -    case 0x1e:  \ -        *blockptr = unigen_decomp_block_0x1e;  \ -        break;  \ -    case 0x1f:  \ -        *blockptr = unigen_decomp_block_0x1f;  \ -        break;  \ -    case 0x22:  \ -        *blockptr = unigen_decomp_block_0x22;  \ -        break;  \ -    case 0x30:  \ -        *blockptr = unigen_decomp_block_0x30;  \ -        break;  \ -    case 0xf9:  \ -        *blockptr = unigen_decomp_block_0xf9;  \ -        break;  \ -    case 0xfa:  \ -        *blockptr = unigen_decomp_block_0xfa;  \ -        break;  \ -    case 0xfb:  \ -        *blockptr = unigen_decomp_block_0xfb;  \ -        break;  \ -    case 0x2f8:  \ -        *blockptr = unigen_decomp_block_0x2f8;  \ -        break;  \ -    case 0x2f9:  \ -        *blockptr = unigen_decomp_block_0x2f9;  \ -        break;  \ -    case 0x2fa:  \ -        *blockptr = unigen_decomp_block_0x2fa;  \ -        break;  \ -    default:  \ -        *blockptr = nullptr;  \ -} +	switch ((glui32)(ch) >> 8) {  \ +	case 0x0:  \ +		*blockptr = unigen_decomp_block_0x0;  \ +		break;  \ +	case 0x1:  \ +		*blockptr = unigen_decomp_block_0x1;  \ +		break;  \ +	case 0x2:  \ +		*blockptr = unigen_decomp_block_0x2;  \ +		break;  \ +	case 0x3:  \ +		*blockptr = unigen_decomp_block_0x3;  \ +		break;  \ +	case 0x4:  \ +		*blockptr = unigen_decomp_block_0x4;  \ +		break;  \ +	case 0x1e:  \ +		*blockptr = unigen_decomp_block_0x1e;  \ +		break;  \ +	case 0x1f:  \ +		*blockptr = unigen_decomp_block_0x1f;  \ +		break;  \ +	case 0x22:  \ +		*blockptr = unigen_decomp_block_0x22;  \ +		break;  \ +	case 0x30:  \ +		*blockptr = unigen_decomp_block_0x30;  \ +		break;  \ +	case 0xf9:  \ +		*blockptr = unigen_decomp_block_0xf9;  \ +		break;  \ +	case 0xfa:  \ +		*blockptr = unigen_decomp_block_0xfa;  \ +		break;  \ +	case 0xfb:  \ +		*blockptr = unigen_decomp_block_0xfb;  \ +		break;  \ +	case 0x2f8:  \ +		*blockptr = unigen_decomp_block_0x2f8;  \ +		break;  \ +	case 0x2f9:  \ +		*blockptr = unigen_decomp_block_0x2f9;  \ +		break;  \ +	case 0x2fa:  \ +		*blockptr = unigen_decomp_block_0x2fa;  \ +		break;  \ +	default:  \ +		*blockptr = nullptr;  \ +	}  #define GET_DECOMP_SPECIAL(ch, countptr, posptr)  \ -switch (ch) {  \ -    case 0x622:  \ -        *countptr = 2; *posptr = 686;  \ -        break;  \ -    case 0x623:  \ -        *countptr = 2; *posptr = 688;  \ -        break;  \ -    case 0x624:  \ -        *countptr = 2; *posptr = 690;  \ -        break;  \ -    case 0x625:  \ -        *countptr = 2; *posptr = 692;  \ -        break;  \ -    case 0x626:  \ -        *countptr = 2; *posptr = 694;  \ -        break;  \ -    case 0x6c0:  \ -        *countptr = 2; *posptr = 696;  \ -        break;  \ -    case 0x6c2:  \ -        *countptr = 2; *posptr = 698;  \ -        break;  \ -    case 0x6d3:  \ -        *countptr = 2; *posptr = 700;  \ -        break;  \ -    case 0x929:  \ -        *countptr = 2; *posptr = 702;  \ -        break;  \ -    case 0x931:  \ -        *countptr = 2; *posptr = 704;  \ -        break;  \ -    case 0x934:  \ -        *countptr = 2; *posptr = 706;  \ -        break;  \ -    case 0x958:  \ -        *countptr = 2; *posptr = 708;  \ -        break;  \ -    case 0x959:  \ -        *countptr = 2; *posptr = 710;  \ -        break;  \ -    case 0x95a:  \ -        *countptr = 2; *posptr = 712;  \ -        break;  \ -    case 0x95b:  \ -        *countptr = 2; *posptr = 714;  \ -        break;  \ -    case 0x95c:  \ -        *countptr = 2; *posptr = 716;  \ -        break;  \ -    case 0x95d:  \ -        *countptr = 2; *posptr = 718;  \ -        break;  \ -    case 0x95e:  \ -        *countptr = 2; *posptr = 720;  \ -        break;  \ -    case 0x95f:  \ -        *countptr = 2; *posptr = 722;  \ -        break;  \ -    case 0x9cb:  \ -        *countptr = 2; *posptr = 724;  \ -        break;  \ -    case 0x9cc:  \ -        *countptr = 2; *posptr = 726;  \ -        break;  \ -    case 0x9dc:  \ -        *countptr = 2; *posptr = 728;  \ -        break;  \ -    case 0x9dd:  \ -        *countptr = 2; *posptr = 730;  \ -        break;  \ -    case 0x9df:  \ -        *countptr = 2; *posptr = 732;  \ -        break;  \ -    case 0xa33:  \ -        *countptr = 2; *posptr = 734;  \ -        break;  \ -    case 0xa36:  \ -        *countptr = 2; *posptr = 736;  \ -        break;  \ -    case 0xa59:  \ -        *countptr = 2; *posptr = 738;  \ -        break;  \ -    case 0xa5a:  \ -        *countptr = 2; *posptr = 740;  \ -        break;  \ -    case 0xa5b:  \ -        *countptr = 2; *posptr = 742;  \ -        break;  \ -    case 0xa5e:  \ -        *countptr = 2; *posptr = 744;  \ -        break;  \ -    case 0xb48:  \ -        *countptr = 2; *posptr = 746;  \ -        break;  \ -    case 0xb4b:  \ -        *countptr = 2; *posptr = 748;  \ -        break;  \ -    case 0xb4c:  \ -        *countptr = 2; *posptr = 750;  \ -        break;  \ -    case 0xb5c:  \ -        *countptr = 2; *posptr = 752;  \ -        break;  \ -    case 0xb5d:  \ -        *countptr = 2; *posptr = 754;  \ -        break;  \ -    case 0xb94:  \ -        *countptr = 2; *posptr = 756;  \ -        break;  \ -    case 0xbca:  \ -        *countptr = 2; *posptr = 758;  \ -        break;  \ -    case 0xbcb:  \ -        *countptr = 2; *posptr = 760;  \ -        break;  \ -    case 0xbcc:  \ -        *countptr = 2; *posptr = 762;  \ -        break;  \ -    case 0xc48:  \ -        *countptr = 2; *posptr = 764;  \ -        break;  \ -    case 0xcc0:  \ -        *countptr = 2; *posptr = 766;  \ -        break;  \ -    case 0xcc7:  \ -        *countptr = 2; *posptr = 768;  \ -        break;  \ -    case 0xcc8:  \ -        *countptr = 2; *posptr = 770;  \ -        break;  \ -    case 0xcca:  \ -        *countptr = 2; *posptr = 772;  \ -        break;  \ -    case 0xccb:  \ -        *countptr = 3; *posptr = 774;  \ -        break;  \ -    case 0xd4a:  \ -        *countptr = 2; *posptr = 777;  \ -        break;  \ -    case 0xd4b:  \ -        *countptr = 2; *posptr = 779;  \ -        break;  \ -    case 0xd4c:  \ -        *countptr = 2; *posptr = 781;  \ -        break;  \ -    case 0xdda:  \ -        *countptr = 2; *posptr = 783;  \ -        break;  \ -    case 0xddc:  \ -        *countptr = 2; *posptr = 785;  \ -        break;  \ -    case 0xddd:  \ -        *countptr = 3; *posptr = 787;  \ -        break;  \ -    case 0xdde:  \ -        *countptr = 2; *posptr = 790;  \ -        break;  \ -    case 0xf43:  \ -        *countptr = 2; *posptr = 792;  \ -        break;  \ -    case 0xf4d:  \ -        *countptr = 2; *posptr = 794;  \ -        break;  \ -    case 0xf52:  \ -        *countptr = 2; *posptr = 796;  \ -        break;  \ -    case 0xf57:  \ -        *countptr = 2; *posptr = 798;  \ -        break;  \ -    case 0xf5c:  \ -        *countptr = 2; *posptr = 800;  \ -        break;  \ -    case 0xf69:  \ -        *countptr = 2; *posptr = 802;  \ -        break;  \ -    case 0xf73:  \ -        *countptr = 2; *posptr = 804;  \ -        break;  \ -    case 0xf75:  \ -        *countptr = 2; *posptr = 806;  \ -        break;  \ -    case 0xf76:  \ -        *countptr = 2; *posptr = 808;  \ -        break;  \ -    case 0xf78:  \ -        *countptr = 2; *posptr = 810;  \ -        break;  \ -    case 0xf81:  \ -        *countptr = 2; *posptr = 812;  \ -        break;  \ -    case 0xf93:  \ -        *countptr = 2; *posptr = 814;  \ -        break;  \ -    case 0xf9d:  \ -        *countptr = 2; *posptr = 816;  \ -        break;  \ -    case 0xfa2:  \ -        *countptr = 2; *posptr = 818;  \ -        break;  \ -    case 0xfa7:  \ -        *countptr = 2; *posptr = 820;  \ -        break;  \ -    case 0xfac:  \ -        *countptr = 2; *posptr = 822;  \ -        break;  \ -    case 0xfb9:  \ -        *countptr = 2; *posptr = 824;  \ -        break;  \ -    case 0x1026:  \ -        *countptr = 2; *posptr = 826;  \ -        break;  \ -    case 0x2000:  \ -        *countptr = 1; *posptr = 2037;  \ -        break;  \ -    case 0x2001:  \ -        *countptr = 1; *posptr = 2038;  \ -        break;  \ -    case 0x2126:  \ -        *countptr = 1; *posptr = 2039;  \ -        break;  \ -    case 0x212a:  \ -        *countptr = 1; *posptr = 2040;  \ -        break;  \ -    case 0x212b:  \ -        *countptr = 2; *posptr = 2041;  \ -        break;  \ -    case 0x219a:  \ -        *countptr = 2; *posptr = 2043;  \ -        break;  \ -    case 0x219b:  \ -        *countptr = 2; *posptr = 2045;  \ -        break;  \ -    case 0x21ae:  \ -        *countptr = 2; *posptr = 2047;  \ -        break;  \ -    case 0x21cd:  \ -        *countptr = 2; *posptr = 2049;  \ -        break;  \ -    case 0x21ce:  \ -        *countptr = 2; *posptr = 2051;  \ -        break;  \ -    case 0x21cf:  \ -        *countptr = 2; *posptr = 2053;  \ -        break;  \ -    case 0x2329:  \ -        *countptr = 1; *posptr = 2131;  \ -        break;  \ -    case 0x232a:  \ -        *countptr = 1; *posptr = 2132;  \ -        break;  \ -    case 0x2adc:  \ -        *countptr = 2; *posptr = 2133;  \ -        break;  \ -    case 0x1d15e:  \ -        *countptr = 2; *posptr = 2670;  \ -        break;  \ -    case 0x1d15f:  \ -        *countptr = 2; *posptr = 2672;  \ -        break;  \ -    case 0x1d160:  \ -        *countptr = 3; *posptr = 2674;  \ -        break;  \ -    case 0x1d161:  \ -        *countptr = 3; *posptr = 2677;  \ -        break;  \ -    case 0x1d162:  \ -        *countptr = 3; *posptr = 2680;  \ -        break;  \ -    case 0x1d163:  \ -        *countptr = 3; *posptr = 2683;  \ -        break;  \ -    case 0x1d164:  \ -        *countptr = 3; *posptr = 2686;  \ -        break;  \ -    case 0x1d1bb:  \ -        *countptr = 2; *posptr = 2689;  \ -        break;  \ -    case 0x1d1bc:  \ -        *countptr = 2; *posptr = 2691;  \ -        break;  \ -    case 0x1d1bd:  \ -        *countptr = 3; *posptr = 2693;  \ -        break;  \ -    case 0x1d1be:  \ -        *countptr = 3; *posptr = 2696;  \ -        break;  \ -    case 0x1d1bf:  \ -        *countptr = 3; *posptr = 2699;  \ -        break;  \ -    case 0x1d1c0:  \ -        *countptr = 3; *posptr = 2702;  \ -        break;  \ -    default:  \ -        *countptr = 0;  \ -} +	switch (ch) {  \ +	case 0x622:  \ +		*countptr = 2; *posptr = 686;  \ +		break;  \ +	case 0x623:  \ +		*countptr = 2; *posptr = 688;  \ +		break;  \ +	case 0x624:  \ +		*countptr = 2; *posptr = 690;  \ +		break;  \ +	case 0x625:  \ +		*countptr = 2; *posptr = 692;  \ +		break;  \ +	case 0x626:  \ +		*countptr = 2; *posptr = 694;  \ +		break;  \ +	case 0x6c0:  \ +		*countptr = 2; *posptr = 696;  \ +		break;  \ +	case 0x6c2:  \ +		*countptr = 2; *posptr = 698;  \ +		break;  \ +	case 0x6d3:  \ +		*countptr = 2; *posptr = 700;  \ +		break;  \ +	case 0x929:  \ +		*countptr = 2; *posptr = 702;  \ +		break;  \ +	case 0x931:  \ +		*countptr = 2; *posptr = 704;  \ +		break;  \ +	case 0x934:  \ +		*countptr = 2; *posptr = 706;  \ +		break;  \ +	case 0x958:  \ +		*countptr = 2; *posptr = 708;  \ +		break;  \ +	case 0x959:  \ +		*countptr = 2; *posptr = 710;  \ +		break;  \ +	case 0x95a:  \ +		*countptr = 2; *posptr = 712;  \ +		break;  \ +	case 0x95b:  \ +		*countptr = 2; *posptr = 714;  \ +		break;  \ +	case 0x95c:  \ +		*countptr = 2; *posptr = 716;  \ +		break;  \ +	case 0x95d:  \ +		*countptr = 2; *posptr = 718;  \ +		break;  \ +	case 0x95e:  \ +		*countptr = 2; *posptr = 720;  \ +		break;  \ +	case 0x95f:  \ +		*countptr = 2; *posptr = 722;  \ +		break;  \ +	case 0x9cb:  \ +		*countptr = 2; *posptr = 724;  \ +		break;  \ +	case 0x9cc:  \ +		*countptr = 2; *posptr = 726;  \ +		break;  \ +	case 0x9dc:  \ +		*countptr = 2; *posptr = 728;  \ +		break;  \ +	case 0x9dd:  \ +		*countptr = 2; *posptr = 730;  \ +		break;  \ +	case 0x9df:  \ +		*countptr = 2; *posptr = 732;  \ +		break;  \ +	case 0xa33:  \ +		*countptr = 2; *posptr = 734;  \ +		break;  \ +	case 0xa36:  \ +		*countptr = 2; *posptr = 736;  \ +		break;  \ +	case 0xa59:  \ +		*countptr = 2; *posptr = 738;  \ +		break;  \ +	case 0xa5a:  \ +		*countptr = 2; *posptr = 740;  \ +		break;  \ +	case 0xa5b:  \ +		*countptr = 2; *posptr = 742;  \ +		break;  \ +	case 0xa5e:  \ +		*countptr = 2; *posptr = 744;  \ +		break;  \ +	case 0xb48:  \ +		*countptr = 2; *posptr = 746;  \ +		break;  \ +	case 0xb4b:  \ +		*countptr = 2; *posptr = 748;  \ +		break;  \ +	case 0xb4c:  \ +		*countptr = 2; *posptr = 750;  \ +		break;  \ +	case 0xb5c:  \ +		*countptr = 2; *posptr = 752;  \ +		break;  \ +	case 0xb5d:  \ +		*countptr = 2; *posptr = 754;  \ +		break;  \ +	case 0xb94:  \ +		*countptr = 2; *posptr = 756;  \ +		break;  \ +	case 0xbca:  \ +		*countptr = 2; *posptr = 758;  \ +		break;  \ +	case 0xbcb:  \ +		*countptr = 2; *posptr = 760;  \ +		break;  \ +	case 0xbcc:  \ +		*countptr = 2; *posptr = 762;  \ +		break;  \ +	case 0xc48:  \ +		*countptr = 2; *posptr = 764;  \ +		break;  \ +	case 0xcc0:  \ +		*countptr = 2; *posptr = 766;  \ +		break;  \ +	case 0xcc7:  \ +		*countptr = 2; *posptr = 768;  \ +		break;  \ +	case 0xcc8:  \ +		*countptr = 2; *posptr = 770;  \ +		break;  \ +	case 0xcca:  \ +		*countptr = 2; *posptr = 772;  \ +		break;  \ +	case 0xccb:  \ +		*countptr = 3; *posptr = 774;  \ +		break;  \ +	case 0xd4a:  \ +		*countptr = 2; *posptr = 777;  \ +		break;  \ +	case 0xd4b:  \ +		*countptr = 2; *posptr = 779;  \ +		break;  \ +	case 0xd4c:  \ +		*countptr = 2; *posptr = 781;  \ +		break;  \ +	case 0xdda:  \ +		*countptr = 2; *posptr = 783;  \ +		break;  \ +	case 0xddc:  \ +		*countptr = 2; *posptr = 785;  \ +		break;  \ +	case 0xddd:  \ +		*countptr = 3; *posptr = 787;  \ +		break;  \ +	case 0xdde:  \ +		*countptr = 2; *posptr = 790;  \ +		break;  \ +	case 0xf43:  \ +		*countptr = 2; *posptr = 792;  \ +		break;  \ +	case 0xf4d:  \ +		*countptr = 2; *posptr = 794;  \ +		break;  \ +	case 0xf52:  \ +		*countptr = 2; *posptr = 796;  \ +		break;  \ +	case 0xf57:  \ +		*countptr = 2; *posptr = 798;  \ +		break;  \ +	case 0xf5c:  \ +		*countptr = 2; *posptr = 800;  \ +		break;  \ +	case 0xf69:  \ +		*countptr = 2; *posptr = 802;  \ +		break;  \ +	case 0xf73:  \ +		*countptr = 2; *posptr = 804;  \ +		break;  \ +	case 0xf75:  \ +		*countptr = 2; *posptr = 806;  \ +		break;  \ +	case 0xf76:  \ +		*countptr = 2; *posptr = 808;  \ +		break;  \ +	case 0xf78:  \ +		*countptr = 2; *posptr = 810;  \ +		break;  \ +	case 0xf81:  \ +		*countptr = 2; *posptr = 812;  \ +		break;  \ +	case 0xf93:  \ +		*countptr = 2; *posptr = 814;  \ +		break;  \ +	case 0xf9d:  \ +		*countptr = 2; *posptr = 816;  \ +		break;  \ +	case 0xfa2:  \ +		*countptr = 2; *posptr = 818;  \ +		break;  \ +	case 0xfa7:  \ +		*countptr = 2; *posptr = 820;  \ +		break;  \ +	case 0xfac:  \ +		*countptr = 2; *posptr = 822;  \ +		break;  \ +	case 0xfb9:  \ +		*countptr = 2; *posptr = 824;  \ +		break;  \ +	case 0x1026:  \ +		*countptr = 2; *posptr = 826;  \ +		break;  \ +	case 0x2000:  \ +		*countptr = 1; *posptr = 2037;  \ +		break;  \ +	case 0x2001:  \ +		*countptr = 1; *posptr = 2038;  \ +		break;  \ +	case 0x2126:  \ +		*countptr = 1; *posptr = 2039;  \ +		break;  \ +	case 0x212a:  \ +		*countptr = 1; *posptr = 2040;  \ +		break;  \ +	case 0x212b:  \ +		*countptr = 2; *posptr = 2041;  \ +		break;  \ +	case 0x219a:  \ +		*countptr = 2; *posptr = 2043;  \ +		break;  \ +	case 0x219b:  \ +		*countptr = 2; *posptr = 2045;  \ +		break;  \ +	case 0x21ae:  \ +		*countptr = 2; *posptr = 2047;  \ +		break;  \ +	case 0x21cd:  \ +		*countptr = 2; *posptr = 2049;  \ +		break;  \ +	case 0x21ce:  \ +		*countptr = 2; *posptr = 2051;  \ +		break;  \ +	case 0x21cf:  \ +		*countptr = 2; *posptr = 2053;  \ +		break;  \ +	case 0x2329:  \ +		*countptr = 1; *posptr = 2131;  \ +		break;  \ +	case 0x232a:  \ +		*countptr = 1; *posptr = 2132;  \ +		break;  \ +	case 0x2adc:  \ +		*countptr = 2; *posptr = 2133;  \ +		break;  \ +	case 0x1d15e:  \ +		*countptr = 2; *posptr = 2670;  \ +		break;  \ +	case 0x1d15f:  \ +		*countptr = 2; *posptr = 2672;  \ +		break;  \ +	case 0x1d160:  \ +		*countptr = 3; *posptr = 2674;  \ +		break;  \ +	case 0x1d161:  \ +		*countptr = 3; *posptr = 2677;  \ +		break;  \ +	case 0x1d162:  \ +		*countptr = 3; *posptr = 2680;  \ +		break;  \ +	case 0x1d163:  \ +		*countptr = 3; *posptr = 2683;  \ +		break;  \ +	case 0x1d164:  \ +		*countptr = 3; *posptr = 2686;  \ +		break;  \ +	case 0x1d1bb:  \ +		*countptr = 2; *posptr = 2689;  \ +		break;  \ +	case 0x1d1bc:  \ +		*countptr = 2; *posptr = 2691;  \ +		break;  \ +	case 0x1d1bd:  \ +		*countptr = 3; *posptr = 2693;  \ +		break;  \ +	case 0x1d1be:  \ +		*countptr = 3; *posptr = 2696;  \ +		break;  \ +	case 0x1d1bf:  \ +		*countptr = 3; *posptr = 2699;  \ +		break;  \ +	case 0x1d1c0:  \ +		*countptr = 3; *posptr = 2702;  \ +		break;  \ +	default:  \ +		*countptr = 0;  \ +	}  } // End of namespace Gargoyle diff --git a/engines/gargoyle/unicode_gen.h b/engines/gargoyle/unicode_gen.h index 1539ec49cd..7c86e9b39f 100644 --- a/engines/gargoyle/unicode_gen.h +++ b/engines/gargoyle/unicode_gen.h @@ -28,400 +28,400 @@  namespace Gargoyle {  #define GET_CASE_BLOCK(ch, blockptr)  \ -switch ((glui32)(ch) >> 8) {  \ -case 0x0:  \ -    *blockptr = unigen_case_block_0x0;  \ -    break;  \ -case 0x1:  \ -    *blockptr = unigen_case_block_0x1;  \ -    break;  \ -case 0x2:  \ -    *blockptr = unigen_case_block_0x2;  \ -    break;  \ -case 0x3:  \ -    *blockptr = unigen_case_block_0x3;  \ -    break;  \ -case 0x4:  \ -    *blockptr = unigen_case_block_0x4;  \ -    break;  \ -case 0x5:  \ -    *blockptr = unigen_case_block_0x5;  \ -    break;  \ -case 0x1e:  \ -    *blockptr = unigen_case_block_0x1e;  \ -    break;  \ -case 0x1f:  \ -    *blockptr = unigen_case_block_0x1f;  \ -    break;  \ -case 0x21:  \ -    *blockptr = unigen_case_block_0x21;  \ -    break;  \ -case 0x24:  \ -    *blockptr = unigen_case_block_0x24;  \ -    break;  \ -case 0xfb:  \ -    *blockptr = unigen_case_block_0xfb;  \ -    break;  \ -case 0xff:  \ -    *blockptr = unigen_case_block_0xff;  \ -    break;  \ -case 0x104:  \ -    *blockptr = unigen_case_block_0x104;  \ -    break;  \ -default:  \ -    *blockptr = nullptr;  \ -} +	switch ((glui32)(ch) >> 8) {  \ +	case 0x0:  \ +		*blockptr = unigen_case_block_0x0;  \ +		break;  \ +	case 0x1:  \ +		*blockptr = unigen_case_block_0x1;  \ +		break;  \ +	case 0x2:  \ +		*blockptr = unigen_case_block_0x2;  \ +		break;  \ +	case 0x3:  \ +		*blockptr = unigen_case_block_0x3;  \ +		break;  \ +	case 0x4:  \ +		*blockptr = unigen_case_block_0x4;  \ +		break;  \ +	case 0x5:  \ +		*blockptr = unigen_case_block_0x5;  \ +		break;  \ +	case 0x1e:  \ +		*blockptr = unigen_case_block_0x1e;  \ +		break;  \ +	case 0x1f:  \ +		*blockptr = unigen_case_block_0x1f;  \ +		break;  \ +	case 0x21:  \ +		*blockptr = unigen_case_block_0x21;  \ +		break;  \ +	case 0x24:  \ +		*blockptr = unigen_case_block_0x24;  \ +		break;  \ +	case 0xfb:  \ +		*blockptr = unigen_case_block_0xfb;  \ +		break;  \ +	case 0xff:  \ +		*blockptr = unigen_case_block_0xff;  \ +		break;  \ +	case 0x104:  \ +		*blockptr = unigen_case_block_0x104;  \ +		break;  \ +	default:  \ +		*blockptr = nullptr;  \ +	}  #define GET_CASE_SPECIAL(ch, specptr)  \ -switch (ch) {  \ -case 0xdf:  \ -    *specptr = unigen_special_0xdf;  \ -    break;  \ -case 0x130:  \ -    *specptr = unigen_special_0x130;  \ -    break;  \ -case 0x149:  \ -    *specptr = unigen_special_0x149;  \ -    break;  \ -case 0x1c4:  \ -    *specptr = unigen_special_0x1c4;  \ -    break;  \ -case 0x1c5:  \ -    *specptr = unigen_special_0x1c5;  \ -    break;  \ -case 0x1c6:  \ -    *specptr = unigen_special_0x1c6;  \ -    break;  \ -case 0x1c7:  \ -    *specptr = unigen_special_0x1c7;  \ -    break;  \ -case 0x1c8:  \ -    *specptr = unigen_special_0x1c8;  \ -    break;  \ -case 0x1c9:  \ -    *specptr = unigen_special_0x1c9;  \ -    break;  \ -case 0x1ca:  \ -    *specptr = unigen_special_0x1ca;  \ -    break;  \ -case 0x1cb:  \ -    *specptr = unigen_special_0x1cb;  \ -    break;  \ -case 0x1cc:  \ -    *specptr = unigen_special_0x1cc;  \ -    break;  \ -case 0x1f0:  \ -    *specptr = unigen_special_0x1f0;  \ -    break;  \ -case 0x1f1:  \ -    *specptr = unigen_special_0x1f1;  \ -    break;  \ -case 0x1f2:  \ -    *specptr = unigen_special_0x1f2;  \ -    break;  \ -case 0x1f3:  \ -    *specptr = unigen_special_0x1f3;  \ -    break;  \ -case 0x390:  \ -    *specptr = unigen_special_0x390;  \ -    break;  \ -case 0x3b0:  \ -    *specptr = unigen_special_0x3b0;  \ -    break;  \ -case 0x587:  \ -    *specptr = unigen_special_0x587;  \ -    break;  \ -case 0x1e96:  \ -    *specptr = unigen_special_0x1e96;  \ -    break;  \ -case 0x1e97:  \ -    *specptr = unigen_special_0x1e97;  \ -    break;  \ -case 0x1e98:  \ -    *specptr = unigen_special_0x1e98;  \ -    break;  \ -case 0x1e99:  \ -    *specptr = unigen_special_0x1e99;  \ -    break;  \ -case 0x1e9a:  \ -    *specptr = unigen_special_0x1e9a;  \ -    break;  \ -case 0x1f50:  \ -    *specptr = unigen_special_0x1f50;  \ -    break;  \ -case 0x1f52:  \ -    *specptr = unigen_special_0x1f52;  \ -    break;  \ -case 0x1f54:  \ -    *specptr = unigen_special_0x1f54;  \ -    break;  \ -case 0x1f56:  \ -    *specptr = unigen_special_0x1f56;  \ -    break;  \ -case 0x1f80:  \ -    *specptr = unigen_special_0x1f80;  \ -    break;  \ -case 0x1f81:  \ -    *specptr = unigen_special_0x1f81;  \ -    break;  \ -case 0x1f82:  \ -    *specptr = unigen_special_0x1f82;  \ -    break;  \ -case 0x1f83:  \ -    *specptr = unigen_special_0x1f83;  \ -    break;  \ -case 0x1f84:  \ -    *specptr = unigen_special_0x1f84;  \ -    break;  \ -case 0x1f85:  \ -    *specptr = unigen_special_0x1f85;  \ -    break;  \ -case 0x1f86:  \ -    *specptr = unigen_special_0x1f86;  \ -    break;  \ -case 0x1f87:  \ -    *specptr = unigen_special_0x1f87;  \ -    break;  \ -case 0x1f88:  \ -    *specptr = unigen_special_0x1f88;  \ -    break;  \ -case 0x1f89:  \ -    *specptr = unigen_special_0x1f89;  \ -    break;  \ -case 0x1f8a:  \ -    *specptr = unigen_special_0x1f8a;  \ -    break;  \ -case 0x1f8b:  \ -    *specptr = unigen_special_0x1f8b;  \ -    break;  \ -case 0x1f8c:  \ -    *specptr = unigen_special_0x1f8c;  \ -    break;  \ -case 0x1f8d:  \ -    *specptr = unigen_special_0x1f8d;  \ -    break;  \ -case 0x1f8e:  \ -    *specptr = unigen_special_0x1f8e;  \ -    break;  \ -case 0x1f8f:  \ -    *specptr = unigen_special_0x1f8f;  \ -    break;  \ -case 0x1f90:  \ -    *specptr = unigen_special_0x1f90;  \ -    break;  \ -case 0x1f91:  \ -    *specptr = unigen_special_0x1f91;  \ -    break;  \ -case 0x1f92:  \ -    *specptr = unigen_special_0x1f92;  \ -    break;  \ -case 0x1f93:  \ -    *specptr = unigen_special_0x1f93;  \ -    break;  \ -case 0x1f94:  \ -    *specptr = unigen_special_0x1f94;  \ -    break;  \ -case 0x1f95:  \ -    *specptr = unigen_special_0x1f95;  \ -    break;  \ -case 0x1f96:  \ -    *specptr = unigen_special_0x1f96;  \ -    break;  \ -case 0x1f97:  \ -    *specptr = unigen_special_0x1f97;  \ -    break;  \ -case 0x1f98:  \ -    *specptr = unigen_special_0x1f98;  \ -    break;  \ -case 0x1f99:  \ -    *specptr = unigen_special_0x1f99;  \ -    break;  \ -case 0x1f9a:  \ -    *specptr = unigen_special_0x1f9a;  \ -    break;  \ -case 0x1f9b:  \ -    *specptr = unigen_special_0x1f9b;  \ -    break;  \ -case 0x1f9c:  \ -    *specptr = unigen_special_0x1f9c;  \ -    break;  \ -case 0x1f9d:  \ -    *specptr = unigen_special_0x1f9d;  \ -    break;  \ -case 0x1f9e:  \ -    *specptr = unigen_special_0x1f9e;  \ -    break;  \ -case 0x1f9f:  \ -    *specptr = unigen_special_0x1f9f;  \ -    break;  \ -case 0x1fa0:  \ -    *specptr = unigen_special_0x1fa0;  \ -    break;  \ -case 0x1fa1:  \ -    *specptr = unigen_special_0x1fa1;  \ -    break;  \ -case 0x1fa2:  \ -    *specptr = unigen_special_0x1fa2;  \ -    break;  \ -case 0x1fa3:  \ -    *specptr = unigen_special_0x1fa3;  \ -    break;  \ -case 0x1fa4:  \ -    *specptr = unigen_special_0x1fa4;  \ -    break;  \ -case 0x1fa5:  \ -    *specptr = unigen_special_0x1fa5;  \ -    break;  \ -case 0x1fa6:  \ -    *specptr = unigen_special_0x1fa6;  \ -    break;  \ -case 0x1fa7:  \ -    *specptr = unigen_special_0x1fa7;  \ -    break;  \ -case 0x1fa8:  \ -    *specptr = unigen_special_0x1fa8;  \ -    break;  \ -case 0x1fa9:  \ -    *specptr = unigen_special_0x1fa9;  \ -    break;  \ -case 0x1faa:  \ -    *specptr = unigen_special_0x1faa;  \ -    break;  \ -case 0x1fab:  \ -    *specptr = unigen_special_0x1fab;  \ -    break;  \ -case 0x1fac:  \ -    *specptr = unigen_special_0x1fac;  \ -    break;  \ -case 0x1fad:  \ -    *specptr = unigen_special_0x1fad;  \ -    break;  \ -case 0x1fae:  \ -    *specptr = unigen_special_0x1fae;  \ -    break;  \ -case 0x1faf:  \ -    *specptr = unigen_special_0x1faf;  \ -    break;  \ -case 0x1fb2:  \ -    *specptr = unigen_special_0x1fb2;  \ -    break;  \ -case 0x1fb3:  \ -    *specptr = unigen_special_0x1fb3;  \ -    break;  \ -case 0x1fb4:  \ -    *specptr = unigen_special_0x1fb4;  \ -    break;  \ -case 0x1fb6:  \ -    *specptr = unigen_special_0x1fb6;  \ -    break;  \ -case 0x1fb7:  \ -    *specptr = unigen_special_0x1fb7;  \ -    break;  \ -case 0x1fbc:  \ -    *specptr = unigen_special_0x1fbc;  \ -    break;  \ -case 0x1fc2:  \ -    *specptr = unigen_special_0x1fc2;  \ -    break;  \ -case 0x1fc3:  \ -    *specptr = unigen_special_0x1fc3;  \ -    break;  \ -case 0x1fc4:  \ -    *specptr = unigen_special_0x1fc4;  \ -    break;  \ -case 0x1fc6:  \ -    *specptr = unigen_special_0x1fc6;  \ -    break;  \ -case 0x1fc7:  \ -    *specptr = unigen_special_0x1fc7;  \ -    break;  \ -case 0x1fcc:  \ -    *specptr = unigen_special_0x1fcc;  \ -    break;  \ -case 0x1fd2:  \ -    *specptr = unigen_special_0x1fd2;  \ -    break;  \ -case 0x1fd3:  \ -    *specptr = unigen_special_0x1fd3;  \ -    break;  \ -case 0x1fd6:  \ -    *specptr = unigen_special_0x1fd6;  \ -    break;  \ -case 0x1fd7:  \ -    *specptr = unigen_special_0x1fd7;  \ -    break;  \ -case 0x1fe2:  \ -    *specptr = unigen_special_0x1fe2;  \ -    break;  \ -case 0x1fe3:  \ -    *specptr = unigen_special_0x1fe3;  \ -    break;  \ -case 0x1fe4:  \ -    *specptr = unigen_special_0x1fe4;  \ -    break;  \ -case 0x1fe6:  \ -    *specptr = unigen_special_0x1fe6;  \ -    break;  \ -case 0x1fe7:  \ -    *specptr = unigen_special_0x1fe7;  \ -    break;  \ -case 0x1ff2:  \ -    *specptr = unigen_special_0x1ff2;  \ -    break;  \ -case 0x1ff3:  \ -    *specptr = unigen_special_0x1ff3;  \ -    break;  \ -case 0x1ff4:  \ -    *specptr = unigen_special_0x1ff4;  \ -    break;  \ -case 0x1ff6:  \ -    *specptr = unigen_special_0x1ff6;  \ -    break;  \ -case 0x1ff7:  \ -    *specptr = unigen_special_0x1ff7;  \ -    break;  \ -case 0x1ffc:  \ -    *specptr = unigen_special_0x1ffc;  \ -    break;  \ -case 0xfb00:  \ -    *specptr = unigen_special_0xfb00;  \ -    break;  \ -case 0xfb01:  \ -    *specptr = unigen_special_0xfb01;  \ -    break;  \ -case 0xfb02:  \ -    *specptr = unigen_special_0xfb02;  \ -    break;  \ -case 0xfb03:  \ -    *specptr = unigen_special_0xfb03;  \ -    break;  \ -case 0xfb04:  \ -    *specptr = unigen_special_0xfb04;  \ -    break;  \ -case 0xfb05:  \ -    *specptr = unigen_special_0xfb05;  \ -    break;  \ -case 0xfb06:  \ -    *specptr = unigen_special_0xfb06;  \ -    break;  \ -case 0xfb13:  \ -    *specptr = unigen_special_0xfb13;  \ -    break;  \ -case 0xfb14:  \ -    *specptr = unigen_special_0xfb14;  \ -    break;  \ -case 0xfb15:  \ -    *specptr = unigen_special_0xfb15;  \ -    break;  \ -case 0xfb16:  \ -    *specptr = unigen_special_0xfb16;  \ -    break;  \ -case 0xfb17:  \ -    *specptr = unigen_special_0xfb17;  \ -    break;  \ -default:  \ -    *specptr = nullptr;  \ -} +	switch (ch) {  \ +	case 0xdf:  \ +		*specptr = unigen_special_0xdf;  \ +		break;  \ +	case 0x130:  \ +		*specptr = unigen_special_0x130;  \ +		break;  \ +	case 0x149:  \ +		*specptr = unigen_special_0x149;  \ +		break;  \ +	case 0x1c4:  \ +		*specptr = unigen_special_0x1c4;  \ +		break;  \ +	case 0x1c5:  \ +		*specptr = unigen_special_0x1c5;  \ +		break;  \ +	case 0x1c6:  \ +		*specptr = unigen_special_0x1c6;  \ +		break;  \ +	case 0x1c7:  \ +		*specptr = unigen_special_0x1c7;  \ +		break;  \ +	case 0x1c8:  \ +		*specptr = unigen_special_0x1c8;  \ +		break;  \ +	case 0x1c9:  \ +		*specptr = unigen_special_0x1c9;  \ +		break;  \ +	case 0x1ca:  \ +		*specptr = unigen_special_0x1ca;  \ +		break;  \ +	case 0x1cb:  \ +		*specptr = unigen_special_0x1cb;  \ +		break;  \ +	case 0x1cc:  \ +		*specptr = unigen_special_0x1cc;  \ +		break;  \ +	case 0x1f0:  \ +		*specptr = unigen_special_0x1f0;  \ +		break;  \ +	case 0x1f1:  \ +		*specptr = unigen_special_0x1f1;  \ +		break;  \ +	case 0x1f2:  \ +		*specptr = unigen_special_0x1f2;  \ +		break;  \ +	case 0x1f3:  \ +		*specptr = unigen_special_0x1f3;  \ +		break;  \ +	case 0x390:  \ +		*specptr = unigen_special_0x390;  \ +		break;  \ +	case 0x3b0:  \ +		*specptr = unigen_special_0x3b0;  \ +		break;  \ +	case 0x587:  \ +		*specptr = unigen_special_0x587;  \ +		break;  \ +	case 0x1e96:  \ +		*specptr = unigen_special_0x1e96;  \ +		break;  \ +	case 0x1e97:  \ +		*specptr = unigen_special_0x1e97;  \ +		break;  \ +	case 0x1e98:  \ +		*specptr = unigen_special_0x1e98;  \ +		break;  \ +	case 0x1e99:  \ +		*specptr = unigen_special_0x1e99;  \ +		break;  \ +	case 0x1e9a:  \ +		*specptr = unigen_special_0x1e9a;  \ +		break;  \ +	case 0x1f50:  \ +		*specptr = unigen_special_0x1f50;  \ +		break;  \ +	case 0x1f52:  \ +		*specptr = unigen_special_0x1f52;  \ +		break;  \ +	case 0x1f54:  \ +		*specptr = unigen_special_0x1f54;  \ +		break;  \ +	case 0x1f56:  \ +		*specptr = unigen_special_0x1f56;  \ +		break;  \ +	case 0x1f80:  \ +		*specptr = unigen_special_0x1f80;  \ +		break;  \ +	case 0x1f81:  \ +		*specptr = unigen_special_0x1f81;  \ +		break;  \ +	case 0x1f82:  \ +		*specptr = unigen_special_0x1f82;  \ +		break;  \ +	case 0x1f83:  \ +		*specptr = unigen_special_0x1f83;  \ +		break;  \ +	case 0x1f84:  \ +		*specptr = unigen_special_0x1f84;  \ +		break;  \ +	case 0x1f85:  \ +		*specptr = unigen_special_0x1f85;  \ +		break;  \ +	case 0x1f86:  \ +		*specptr = unigen_special_0x1f86;  \ +		break;  \ +	case 0x1f87:  \ +		*specptr = unigen_special_0x1f87;  \ +		break;  \ +	case 0x1f88:  \ +		*specptr = unigen_special_0x1f88;  \ +		break;  \ +	case 0x1f89:  \ +		*specptr = unigen_special_0x1f89;  \ +		break;  \ +	case 0x1f8a:  \ +		*specptr = unigen_special_0x1f8a;  \ +		break;  \ +	case 0x1f8b:  \ +		*specptr = unigen_special_0x1f8b;  \ +		break;  \ +	case 0x1f8c:  \ +		*specptr = unigen_special_0x1f8c;  \ +		break;  \ +	case 0x1f8d:  \ +		*specptr = unigen_special_0x1f8d;  \ +		break;  \ +	case 0x1f8e:  \ +		*specptr = unigen_special_0x1f8e;  \ +		break;  \ +	case 0x1f8f:  \ +		*specptr = unigen_special_0x1f8f;  \ +		break;  \ +	case 0x1f90:  \ +		*specptr = unigen_special_0x1f90;  \ +		break;  \ +	case 0x1f91:  \ +		*specptr = unigen_special_0x1f91;  \ +		break;  \ +	case 0x1f92:  \ +		*specptr = unigen_special_0x1f92;  \ +		break;  \ +	case 0x1f93:  \ +		*specptr = unigen_special_0x1f93;  \ +		break;  \ +	case 0x1f94:  \ +		*specptr = unigen_special_0x1f94;  \ +		break;  \ +	case 0x1f95:  \ +		*specptr = unigen_special_0x1f95;  \ +		break;  \ +	case 0x1f96:  \ +		*specptr = unigen_special_0x1f96;  \ +		break;  \ +	case 0x1f97:  \ +		*specptr = unigen_special_0x1f97;  \ +		break;  \ +	case 0x1f98:  \ +		*specptr = unigen_special_0x1f98;  \ +		break;  \ +	case 0x1f99:  \ +		*specptr = unigen_special_0x1f99;  \ +		break;  \ +	case 0x1f9a:  \ +		*specptr = unigen_special_0x1f9a;  \ +		break;  \ +	case 0x1f9b:  \ +		*specptr = unigen_special_0x1f9b;  \ +		break;  \ +	case 0x1f9c:  \ +		*specptr = unigen_special_0x1f9c;  \ +		break;  \ +	case 0x1f9d:  \ +		*specptr = unigen_special_0x1f9d;  \ +		break;  \ +	case 0x1f9e:  \ +		*specptr = unigen_special_0x1f9e;  \ +		break;  \ +	case 0x1f9f:  \ +		*specptr = unigen_special_0x1f9f;  \ +		break;  \ +	case 0x1fa0:  \ +		*specptr = unigen_special_0x1fa0;  \ +		break;  \ +	case 0x1fa1:  \ +		*specptr = unigen_special_0x1fa1;  \ +		break;  \ +	case 0x1fa2:  \ +		*specptr = unigen_special_0x1fa2;  \ +		break;  \ +	case 0x1fa3:  \ +		*specptr = unigen_special_0x1fa3;  \ +		break;  \ +	case 0x1fa4:  \ +		*specptr = unigen_special_0x1fa4;  \ +		break;  \ +	case 0x1fa5:  \ +		*specptr = unigen_special_0x1fa5;  \ +		break;  \ +	case 0x1fa6:  \ +		*specptr = unigen_special_0x1fa6;  \ +		break;  \ +	case 0x1fa7:  \ +		*specptr = unigen_special_0x1fa7;  \ +		break;  \ +	case 0x1fa8:  \ +		*specptr = unigen_special_0x1fa8;  \ +		break;  \ +	case 0x1fa9:  \ +		*specptr = unigen_special_0x1fa9;  \ +		break;  \ +	case 0x1faa:  \ +		*specptr = unigen_special_0x1faa;  \ +		break;  \ +	case 0x1fab:  \ +		*specptr = unigen_special_0x1fab;  \ +		break;  \ +	case 0x1fac:  \ +		*specptr = unigen_special_0x1fac;  \ +		break;  \ +	case 0x1fad:  \ +		*specptr = unigen_special_0x1fad;  \ +		break;  \ +	case 0x1fae:  \ +		*specptr = unigen_special_0x1fae;  \ +		break;  \ +	case 0x1faf:  \ +		*specptr = unigen_special_0x1faf;  \ +		break;  \ +	case 0x1fb2:  \ +		*specptr = unigen_special_0x1fb2;  \ +		break;  \ +	case 0x1fb3:  \ +		*specptr = unigen_special_0x1fb3;  \ +		break;  \ +	case 0x1fb4:  \ +		*specptr = unigen_special_0x1fb4;  \ +		break;  \ +	case 0x1fb6:  \ +		*specptr = unigen_special_0x1fb6;  \ +		break;  \ +	case 0x1fb7:  \ +		*specptr = unigen_special_0x1fb7;  \ +		break;  \ +	case 0x1fbc:  \ +		*specptr = unigen_special_0x1fbc;  \ +		break;  \ +	case 0x1fc2:  \ +		*specptr = unigen_special_0x1fc2;  \ +		break;  \ +	case 0x1fc3:  \ +		*specptr = unigen_special_0x1fc3;  \ +		break;  \ +	case 0x1fc4:  \ +		*specptr = unigen_special_0x1fc4;  \ +		break;  \ +	case 0x1fc6:  \ +		*specptr = unigen_special_0x1fc6;  \ +		break;  \ +	case 0x1fc7:  \ +		*specptr = unigen_special_0x1fc7;  \ +		break;  \ +	case 0x1fcc:  \ +		*specptr = unigen_special_0x1fcc;  \ +		break;  \ +	case 0x1fd2:  \ +		*specptr = unigen_special_0x1fd2;  \ +		break;  \ +	case 0x1fd3:  \ +		*specptr = unigen_special_0x1fd3;  \ +		break;  \ +	case 0x1fd6:  \ +		*specptr = unigen_special_0x1fd6;  \ +		break;  \ +	case 0x1fd7:  \ +		*specptr = unigen_special_0x1fd7;  \ +		break;  \ +	case 0x1fe2:  \ +		*specptr = unigen_special_0x1fe2;  \ +		break;  \ +	case 0x1fe3:  \ +		*specptr = unigen_special_0x1fe3;  \ +		break;  \ +	case 0x1fe4:  \ +		*specptr = unigen_special_0x1fe4;  \ +		break;  \ +	case 0x1fe6:  \ +		*specptr = unigen_special_0x1fe6;  \ +		break;  \ +	case 0x1fe7:  \ +		*specptr = unigen_special_0x1fe7;  \ +		break;  \ +	case 0x1ff2:  \ +		*specptr = unigen_special_0x1ff2;  \ +		break;  \ +	case 0x1ff3:  \ +		*specptr = unigen_special_0x1ff3;  \ +		break;  \ +	case 0x1ff4:  \ +		*specptr = unigen_special_0x1ff4;  \ +		break;  \ +	case 0x1ff6:  \ +		*specptr = unigen_special_0x1ff6;  \ +		break;  \ +	case 0x1ff7:  \ +		*specptr = unigen_special_0x1ff7;  \ +		break;  \ +	case 0x1ffc:  \ +		*specptr = unigen_special_0x1ffc;  \ +		break;  \ +	case 0xfb00:  \ +		*specptr = unigen_special_0xfb00;  \ +		break;  \ +	case 0xfb01:  \ +		*specptr = unigen_special_0xfb01;  \ +		break;  \ +	case 0xfb02:  \ +		*specptr = unigen_special_0xfb02;  \ +		break;  \ +	case 0xfb03:  \ +		*specptr = unigen_special_0xfb03;  \ +		break;  \ +	case 0xfb04:  \ +		*specptr = unigen_special_0xfb04;  \ +		break;  \ +	case 0xfb05:  \ +		*specptr = unigen_special_0xfb05;  \ +		break;  \ +	case 0xfb06:  \ +		*specptr = unigen_special_0xfb06;  \ +		break;  \ +	case 0xfb13:  \ +		*specptr = unigen_special_0xfb13;  \ +		break;  \ +	case 0xfb14:  \ +		*specptr = unigen_special_0xfb14;  \ +		break;  \ +	case 0xfb15:  \ +		*specptr = unigen_special_0xfb15;  \ +		break;  \ +	case 0xfb16:  \ +		*specptr = unigen_special_0xfb16;  \ +		break;  \ +	case 0xfb17:  \ +		*specptr = unigen_special_0xfb17;  \ +		break;  \ +	default:  \ +		*specptr = nullptr;  \ +	}  typedef glui32 gli_case_block_t[2];   ///< upper, lower  typedef glui32 gli_case_special_t[3]; ///< upper, lower, title diff --git a/engines/gargoyle/window_graphics.cpp b/engines/gargoyle/window_graphics.cpp index a0d8b6ddba..322d642a1b 100644 --- a/engines/gargoyle/window_graphics.cpp +++ b/engines/gargoyle/window_graphics.cpp @@ -28,7 +28,7 @@  namespace Gargoyle {  GraphicsWindow::GraphicsWindow(Windows *windows, uint32 rock) : Window(windows, rock), -_w(0), _h(0), _dirty(false), _surface(nullptr) { +	_w(0), _h(0), _dirty(false), _surface(nullptr) {  	_type = wintype_Graphics;  	Common::copy(&_bgColor[0], &_bgColor[3], _bgnd);  } @@ -66,7 +66,7 @@ void GraphicsWindow::rearrange(const Rect &box) {  		bothhgt = newhgt;  	newSurface = new Graphics::ManagedSurface(newwid, newhgt, -		Graphics::PixelFormat(3, 8, 8, 8, 0, 16, 8, 0, 0)); +	        Graphics::PixelFormat(3, 8, 8, 8, 0, 16, 8, 0, 0));  	// If the new surface is equal or bigger than the old one, copy it over  	if (_surface && bothwid && bothhgt) @@ -98,7 +98,7 @@ void GraphicsWindow::redraw() {  }  glui32 GraphicsWindow::drawPicture(glui32 image, glsi32 xpos, glsi32 ypos, int scale, -		glui32 imagewidth, glui32 imageheight) { +                                   glui32 imagewidth, glui32 imageheight) {  	Picture *pic = Picture::load(image);  	glui32 hyperlink = _attr.hyper; diff --git a/engines/gargoyle/window_graphics.h b/engines/gargoyle/window_graphics.h index ebcf45b195..67963bc9a1 100644 --- a/engines/gargoyle/window_graphics.h +++ b/engines/gargoyle/window_graphics.h @@ -53,7 +53,7 @@ public:  	virtual ~GraphicsWindow();  	glui32 drawPicture(glui32 image, glsi32 xpos, glsi32 ypos, int scale, -		glui32 imagewidth, glui32 imageheight); +	                   glui32 imagewidth, glui32 imageheight);  	/**  	 * Rearranges the window @@ -75,16 +75,24 @@ public:  	/**  	 * Cancel a mouse event  	 */ -	virtual void cancelMouseEvent() override { _mouseRequest = false; } +	virtual void cancelMouseEvent() override { +		_mouseRequest = false; +	}  	/**  	 * Cancel a hyperlink event  	 */ -	virtual void cancelHyperlinkEvent() override { _hyperRequest = false; } +	virtual void cancelHyperlinkEvent() override { +		_hyperRequest = false; +	} -	virtual void requestMouseEvent() override { _mouseRequest = true; } +	virtual void requestMouseEvent() override { +		_mouseRequest = true; +	} -	virtual void requestHyperlinkEvent() override { _hyperRequest = true; } +	virtual void requestHyperlinkEvent() override { +		_hyperRequest = true; +	}  	/**  	 * Redraw the window diff --git a/engines/gargoyle/window_pair.cpp b/engines/gargoyle/window_pair.cpp index 33914c5fe7..9bd562ddb9 100644 --- a/engines/gargoyle/window_pair.cpp +++ b/engines/gargoyle/window_pair.cpp @@ -28,13 +28,13 @@  namespace Gargoyle {  PairWindow::PairWindow(Windows *windows, glui32 method, Window *key, glui32 size) : -		Window(windows, 0), -		_dir(method & winmethod_DirMask), -		_division(method & winmethod_DivisionMask), -		_wBorder((method & winmethod_BorderMask) == winmethod_Border), -		_vertical(_dir == winmethod_Left || _dir == winmethod_Right), -		_backward(_dir == winmethod_Left || _dir == winmethod_Above), -		_key(key), _size(size), _keyDamage(0), _child1(nullptr), _child2(nullptr) { +	Window(windows, 0), +	_dir(method & winmethod_DirMask), +	_division(method & winmethod_DivisionMask), +	_wBorder((method & winmethod_BorderMask) == winmethod_Border), +	_vertical(_dir == winmethod_Left || _dir == winmethod_Right), +	_backward(_dir == winmethod_Left || _dir == winmethod_Above), +	_key(key), _size(size), _keyDamage(0), _child1(nullptr), _child2(nullptr) {  	_type = wintype_Pair;  } @@ -128,19 +128,19 @@ void PairWindow::redraw() {  	Window *child = !_backward ? _child1 : _child2;  	Rect box(child->_bbox.left, child->_yAdj ? child->_bbox.top - child->_yAdj : child->_bbox.top, -		child->_bbox.right, child->_bbox.bottom); +	         child->_bbox.right, child->_bbox.bottom);  	if (_vertical) {  		int xBord = _wBorder ? g_conf->_wBorderX : 0;  		int xPad = (g_conf->_wPaddingX - xBord) / 2; -		 +  		g_vm->_screen->fillRect(Rect(box.right + xPad, box.top, box.right + xPad + xBord, box.bottom), -			g_conf->_borderColor); +		                        g_conf->_borderColor);  	} else {  		int yBord = _wBorder ? g_conf->_wBorderY : 0;  		int yPad = (g_conf->_wPaddingY - yBord) / 2;  		g_vm->_screen->fillRect(Rect(box.left, box.bottom + yPad, box.right, box.bottom + yPad + yBord), -			g_conf->_borderColor); +		                        g_conf->_borderColor);  	}  } @@ -200,7 +200,7 @@ void PairWindow::setArrangement(glui32 method, glui32 size, Window *keyWin) {  	}  	if (keyWin && dynamic_cast<BlankWindow *>(keyWin) -			&& (method & winmethod_DivisionMask) == winmethod_Fixed) { +	        && (method & winmethod_DivisionMask) == winmethod_Fixed) {  		warning("setArrangement: a Blank window cannot have a fixed size");  		return;  	} diff --git a/engines/gargoyle/window_text_buffer.cpp b/engines/gargoyle/window_text_buffer.cpp index 7e65059169..ca891672ab 100644 --- a/engines/gargoyle/window_text_buffer.cpp +++ b/engines/gargoyle/window_text_buffer.cpp @@ -37,11 +37,11 @@ namespace Gargoyle {  TextBufferWindow::TextBufferWindow(Windows *windows, uint32 rock) : Window(windows, rock), -		_historyPos(0), _historyFirst(0), _historyPresent(0), _lastSeen(0), _scrollPos(0), -		_scrollMax(0), _scrollBack(SCROLLBACK), _width(-1), _height(-1), _inBuf(nullptr), -		_lineTerminators(nullptr), _echoLineInput(true), _ladjw(0), _radjw(0), _ladjn(0), -		_radjn(0), _numChars(0), _chars(nullptr), _attrs(nullptr), -		_spaced(0), _dashed(0), _copyBuf(0), _copyPos(0) { +	_historyPos(0), _historyFirst(0), _historyPresent(0), _lastSeen(0), _scrollPos(0), +	_scrollMax(0), _scrollBack(SCROLLBACK), _width(-1), _height(-1), _inBuf(nullptr), +	_lineTerminators(nullptr), _echoLineInput(true), _ladjw(0), _radjw(0), _ladjn(0), +	_radjn(0), _numChars(0), _chars(nullptr), _attrs(nullptr), +	_spaced(0), _dashed(0), _copyBuf(0), _copyPos(0) {  	_type = wintype_TextBuffer;  	Common::fill(&_history[0], &_history[HISTORYLEN], nullptr); @@ -306,11 +306,11 @@ void TextBufferWindow::putText(const char *buf, int len, int pos, int oldlen) {  	if (diff != 0 && pos + oldlen < _numChars) {  		memmove(_chars + pos + len, -			_chars + pos + oldlen, -			(_numChars - (pos + oldlen)) * 4); +		        _chars + pos + oldlen, +		        (_numChars - (pos + oldlen)) * 4);  		memmove(_attrs + pos + len, -			_attrs + pos + oldlen, -			(_numChars - (pos + oldlen)) * sizeof(Attributes)); +		        _attrs + pos + oldlen, +		        (_numChars - (pos + oldlen)) * sizeof(Attributes));  	}  	if (len > 0) {  		for (int i = 0; i < len; i++) { @@ -338,11 +338,11 @@ void TextBufferWindow::putTextUni(const glui32 *buf, int len, int pos, int oldle  	if (diff != 0 && pos + oldlen < _numChars) {  		memmove(_chars + pos + len, -			_chars + pos + oldlen, -			(_numChars - (pos + oldlen)) * 4); +		        _chars + pos + oldlen, +		        (_numChars - (pos + oldlen)) * 4);  		memmove(_attrs + pos + len, -			_attrs + pos + oldlen, -			(_numChars - (pos + oldlen)) * sizeof(Attributes)); +		        _attrs + pos + oldlen, +		        (_numChars - (pos + oldlen)) * sizeof(Attributes));  	}  	if (len > 0) {  		int i; @@ -442,8 +442,8 @@ void TextBufferWindow::putCharUni(glui32 ch) {  	}  	if (g_conf->_spaces && _attr.style != style_Preformatted -		&& _styles[_attr.style].bg == color -		&& !_styles[_attr.style].reverse) { +	        && _styles[_attr.style].bg == color +	        && !_styles[_attr.style].reverse) {  		// turn (period space space) into (period space)  		if (g_conf->_spaces == 1) {  			if (ch == '.') @@ -480,8 +480,8 @@ void TextBufferWindow::putCharUni(glui32 ch) {  	// kill spaces at the end for line width calculation  	linelen = _numChars;  	while (linelen > 1 && _chars[linelen - 1] == ' ' -		&& _styles[_attrs[linelen - 1].style].bg == color -		&& !_styles[_attrs[linelen - 1].style].reverse) +	        && _styles[_attrs[linelen - 1].style].bg == color +	        && !_styles[_attrs[linelen - 1].style].reverse)  		linelen--;  	if (calcWidth(_chars, _attrs, 0, linelen, -1) >= pw) { @@ -567,8 +567,8 @@ void TextBufferWindow::click(const Point &newPos) {  	int gs = false;  	if (_lineRequest || _charRequest -		|| _lineRequestUni || _charRequestUni -		|| _moreRequest || _scrollRequest) +	        || _lineRequestUni || _charRequestUni +	        || _moreRequest || _scrollRequest)  		_windows->setFocus(this);  	if (_hyperRequest) { @@ -743,14 +743,14 @@ void TextBufferWindow::cancelLineEvent(Event *ev) {  		len = inmax;  	if (!unicode) { -		for (ix = 0; ix<len; ix++) { +		for (ix = 0; ix < len; ix++) {  			glui32 ch = _chars[_inFence + ix];  			if (ch > 0xff)  				ch = '?';  			((char *)inbuf)[ix] = (char)ch;  		}  	} else { -		for (ix = 0; ix<len; ix++) +		for (ix = 0; ix < len; ix++)  			((glui32 *)inbuf)[ix] = _chars[_inFence + ix];  	} @@ -782,379 +782,379 @@ void TextBufferWindow::cancelLineEvent(Event *ev) {  }  void TextBufferWindow::redraw() { -    TextBufferRow *ln; -    int linelen; -    int nsp, spw, pw; -    int x0, y0, x1, y1; -    int x, y, w; -    int a, b; -    glui32 link; -    int font; -    unsigned char *color; -    int i; -    int hx0, hx1, hy0, hy1; -    int selrow, selchar, sx0, sx1, selleft, selright; +	TextBufferRow *ln; +	int linelen; +	int nsp, spw, pw; +	int x0, y0, x1, y1; +	int x, y, w; +	int a, b; +	glui32 link; +	int font; +	unsigned char *color; +	int i; +	int hx0, hx1, hy0, hy1; +	int selrow, selchar, sx0, sx1, selleft, selright;  	bool selBuf; -    int tx, tsc, tsw, lsc, rsc; +	int tx, tsc, tsw, lsc, rsc;  	Screen &screen = *g_vm->_screen;  	Window::redraw(); -    _lines[0]._len = _numChars; +	_lines[0]._len = _numChars;  	sx0 = sx1 = selleft = selright = 0;  	ln = new TextBufferRow(); -    if (!ln) -        return; - -    x0 = (_bbox.left + g_conf->_tMarginX) * GLI_SUBPIX; -    x1 = (_bbox.right - g_conf->_tMarginX - g_conf->_scrollWidth) * GLI_SUBPIX; -    y0 = _bbox.top + g_conf->_tMarginY; -    y1 = _bbox.bottom - g_conf->_tMarginY; - -    pw = x1 - x0 - 2 * GLI_SUBPIX; - -    // check if any part of buffer is selected -    selBuf = g_vm->_selection->checkSelection(Rect(x0 / GLI_SUBPIX, y0, x1 / GLI_SUBPIX, y1)); - -    for (i = _scrollPos + _height - 1; i >= _scrollPos; i--) { -        // top of line -        y = y0 + (_height - (i - _scrollPos) - 1) * g_conf->_leading; - -        // check if part of line is selected -        if (selBuf) { -            selrow = g_vm->_selection->getSelection(Rect(x0 / GLI_SUBPIX, y, -				x1 / GLI_SUBPIX, y + g_conf->_leading), &sx0, &sx1); -            selleft = (sx0 == x0/GLI_SUBPIX); -            selright = (sx1 == x1/GLI_SUBPIX); -        } else { -            selrow = false; -        } - -        // mark selected line dirty -        if (selrow) -            _lines[i]._dirty = true; - -        memcpy(ln, &_lines[i], sizeof(TextBufferRow)); - -        // skip if we can -        if (!ln->_dirty && !ln->_repaint && !Windows::_forceRedraw && _scrollPos == 0) -            continue; - -        // repaint previously selected lines if needed -        if (ln->_repaint && !Windows::_forceRedraw) -            _windows->redrawRect(Rect(x0 / GLI_SUBPIX, y, -				x1/GLI_SUBPIX, y + g_conf->_leading)); - -        // keep selected line dirty and flag for repaint -        if (!selrow) { -            _lines[i]._dirty = false; -            _lines[i]._repaint = false; -        } else { -            _lines[i]._repaint = true; -        } - -        // leave bottom line blank for [more] prompt -        if (i == _scrollPos && i > 0) -            continue; - -        linelen = ln->_len; - -        // kill spaces at the end unless they're a different color -        color = Windows::_overrideBgSet ? g_conf->_windowColor : _bgColor; -        while (i > 0 && linelen > 1 && ln->_chars[linelen-1] == ' '  -            && _styles[ln->_attrs[linelen-1].style].bg == color  -            && !_styles[ln->_attrs[linelen-1].style].reverse) -                linelen --; - -        // kill characters that would overwrite the scroll bar -        while (linelen > 1 && calcWidth(ln->_chars, ln->_attrs, 0, linelen, -1) >= pw) -            linelen --; - -        /* -         * count spaces and width for justification -         */ -        if (g_conf->_justify && !ln->_newLine && i > 0) { -            for (a = 0, nsp = 0; a < linelen; a++) -                if (ln->_chars[a] == ' ') -                    nsp ++; -            w = calcWidth(ln->_chars, ln->_attrs, 0, linelen, 0); -            if (nsp) -                spw = (x1 - x0 - ln->_lm - ln->_rm - 2 * SLOP - w) / nsp; -            else -                spw = 0; -        } else { -            spw = -1; -        } - -        // find and highlight selected characters -        if (selrow && !Windows::_claimSelect) { -            lsc = 0; -            rsc = 0; -            selchar = false; -            // optimized case for all chars selected -            if (selleft && selright) { -                rsc = linelen > 0 ? linelen - 1 : 0; -                selchar = calcWidth(ln->_chars, ln->_attrs, lsc, rsc, spw)/GLI_SUBPIX; -            } else { -                // optimized case for leftmost char selected -                if (selleft) { -                    tsc = linelen > 0 ? linelen - 1 : 0; -                    selchar = calcWidth(ln->_chars, ln->_attrs, lsc, tsc, spw)/GLI_SUBPIX; -                } else { -                    // find the substring contained by the selection -                    tx = (x0 + SLOP + ln->_lm)/GLI_SUBPIX; -                    // measure string widths until we find left char -                    for (tsc = 0; tsc < linelen; tsc++) { -                        tsw = calcWidth(ln->_chars, ln->_attrs, 0, tsc, spw)/GLI_SUBPIX; -                        if (tsw + tx >= sx0 || -                                tsw + tx + GLI_SUBPIX >= sx0 && ln->_chars[tsc] != ' ') { -                            lsc = tsc; -                            selchar = true; -                            break; -                        } -                    } -                } -                if (selchar) { -                    // optimized case for rightmost char selected -                    if (selright) { -                        rsc = linelen > 0 ? linelen - 1 : 0; -                    } else { -                    // measure string widths until we find right char -                        for (tsc = lsc; tsc < linelen; tsc++) { -                            tsw = calcWidth(ln->_chars, ln->_attrs, lsc, tsc, spw)/GLI_SUBPIX; -                            if (tsw + sx0 < sx1) -                                rsc = tsc; -                        } -                        if (lsc && !rsc) -                            rsc = lsc; -                    } -                } -            } -            // reverse colors for selected chars -            if (selchar) { -                for (tsc = lsc; tsc <= rsc; tsc++) { -                    ln->_attrs[tsc].reverse = !ln->_attrs[tsc].reverse; -                    _copyBuf[_copyPos] = ln->_chars[tsc]; -                    _copyPos++; -                } -            } -            // add newline if we reach the end of the line -            if (ln->_len == 0 || ln->_len == (rsc+1)) { -                _copyBuf[_copyPos] = '\n'; -                _copyPos++; -            } -        } - -        // clear any stored hyperlink coordinates -        g_vm->_selection->putHyperlink(0, x0/GLI_SUBPIX, y, -                x1/GLI_SUBPIX, y + g_conf->_leading); - -        /* -         * fill in background colors -         */ -        color = Windows::_overrideBgSet ? g_conf->_windowColor : _bgColor; -        screen.fillRect(Rect::fromXYWH(x0 / GLI_SUBPIX, y, (x1-x0) / GLI_SUBPIX, g_conf->_leading), -                color); - -        x = x0 + SLOP + ln->_lm; -        a = 0; -        for (b = 0; b < linelen; b++) { -            if (ln->_attrs[a] != ln->_attrs[b]) { -                link = ln->_attrs[a].hyper; -                font = ln->_attrs[a].attrFont(_styles); -                color = ln->_attrs[a].attrBg(_styles); -                w = screen.stringWidthUni(font, Common::U32String(ln->_chars + a, b - a), spw); -                screen.fillRect(Rect::fromXYWH(x / GLI_SUBPIX, y, w / GLI_SUBPIX, g_conf->_leading), -                        color); -                if (link) { -                    screen.fillRect(Rect::fromXYWH(x / GLI_SUBPIX + 1, y + g_conf->_baseLine + 1, -						w / GLI_SUBPIX + 1, g_conf->_linkStyle), g_conf->_linkColor); -                    g_vm->_selection->putHyperlink(link, x/GLI_SUBPIX, y, -                            x/GLI_SUBPIX + w/GLI_SUBPIX, -                            y + g_conf->_leading); -                } -                x += w; -                a = b; -            } -        } -        link = ln->_attrs[a].hyper; -        font = ln->_attrs[a].attrFont(_styles); -        color = ln->_attrs[a].attrBg(_styles); -        w = screen.stringWidthUni(font, Common::U32String(ln->_chars + a, b - a), spw); -        screen.fillRect(Rect::fromXYWH(x / GLI_SUBPIX, y, w / GLI_SUBPIX, g_conf->_leading), color); -        if (link) { -            screen.fillRect(Rect::fromXYWH(x / GLI_SUBPIX + 1, y + g_conf->_baseLine + 1, -                    w/GLI_SUBPIX + 1, g_conf->_linkStyle), g_conf->_linkColor); -            g_vm->_selection->putHyperlink(link, x / GLI_SUBPIX, y, -                    x / GLI_SUBPIX + w / GLI_SUBPIX, -                    y + g_conf->_leading); -        } -        x += w; - -        color = Windows::_overrideBgSet ? g_conf->_windowColor : _bgColor; -        screen.fillRect(Rect::fromXYWH(x / GLI_SUBPIX, y, x1/GLI_SUBPIX - x/GLI_SUBPIX, g_conf->_leading), color); - -        /* -         * draw caret -         */ - -        if (_windows->getFocusWindow() == this && i == 0 && (_lineRequest || _lineRequestUni)) { -            w = calcWidth(_chars, _attrs, 0, _inCurs, spw); -            if (w < pw - g_conf->_caretShape * 2 * GLI_SUBPIX) -                screen.drawCaret(Point(x0 + SLOP + ln->_lm + w, y + g_conf->_baseLine)); -        } - -        /* -         * draw text -         */ - -        x = x0 + SLOP + ln->_lm; -        a = 0; -        for (b = 0; b < linelen; b++) { -            if (ln->_attrs[a] != ln->_attrs[b]) { -                link = ln->_attrs[a].hyper; -                font = ln->_attrs[a].attrFont(_styles); -                color = link ? g_conf->_linkColor : ln->_attrs[a].attrFg(_styles); -                x = screen.drawStringUni(Point(x, y + g_conf->_baseLine), -                        font, color, Common::U32String(ln->_chars + a, b - a), spw); -                a = b; -            } -        } -        link = ln->_attrs[a].hyper; -        font = ln->_attrs[a].attrFont(_styles); -        color = link ? g_conf->_linkColor : ln->_attrs[a].attrFg(_styles); -        screen.drawStringUni(Point(x, y + g_conf->_baseLine), font, color, Common::U32String(ln->_chars + a, linelen - a), spw); -    } - -    /* -     * draw more prompt -     */ -    if (_scrollPos && _height > 1) { -        x = x0 + SLOP; -        y = y0 + (_height - 1) * g_conf->_leading; - -        g_vm->_selection->putHyperlink(0, x0/GLI_SUBPIX, y, -                x1/GLI_SUBPIX, y + g_conf->_leading); - -        color = Windows::_overrideBgSet ? g_conf->_windowColor : _bgColor; -        screen.fillRect(Rect::fromXYWH(x / GLI_SUBPIX, y, x1 / GLI_SUBPIX - x / GLI_SUBPIX, g_conf->_leading), color); - -        w = screen.stringWidth(g_conf->_moreFont, g_conf->_morePrompt); - -        if (g_conf->_moreAlign == 1) +	if (!ln) +		return; + +	x0 = (_bbox.left + g_conf->_tMarginX) * GLI_SUBPIX; +	x1 = (_bbox.right - g_conf->_tMarginX - g_conf->_scrollWidth) * GLI_SUBPIX; +	y0 = _bbox.top + g_conf->_tMarginY; +	y1 = _bbox.bottom - g_conf->_tMarginY; + +	pw = x1 - x0 - 2 * GLI_SUBPIX; + +	// check if any part of buffer is selected +	selBuf = g_vm->_selection->checkSelection(Rect(x0 / GLI_SUBPIX, y0, x1 / GLI_SUBPIX, y1)); + +	for (i = _scrollPos + _height - 1; i >= _scrollPos; i--) { +		// top of line +		y = y0 + (_height - (i - _scrollPos) - 1) * g_conf->_leading; + +		// check if part of line is selected +		if (selBuf) { +			selrow = g_vm->_selection->getSelection(Rect(x0 / GLI_SUBPIX, y, +			                                        x1 / GLI_SUBPIX, y + g_conf->_leading), &sx0, &sx1); +			selleft = (sx0 == x0 / GLI_SUBPIX); +			selright = (sx1 == x1 / GLI_SUBPIX); +		} else { +			selrow = false; +		} + +		// mark selected line dirty +		if (selrow) +			_lines[i]._dirty = true; + +		memcpy(ln, &_lines[i], sizeof(TextBufferRow)); + +		// skip if we can +		if (!ln->_dirty && !ln->_repaint && !Windows::_forceRedraw && _scrollPos == 0) +			continue; + +		// repaint previously selected lines if needed +		if (ln->_repaint && !Windows::_forceRedraw) +			_windows->redrawRect(Rect(x0 / GLI_SUBPIX, y, +			                          x1 / GLI_SUBPIX, y + g_conf->_leading)); + +		// keep selected line dirty and flag for repaint +		if (!selrow) { +			_lines[i]._dirty = false; +			_lines[i]._repaint = false; +		} else { +			_lines[i]._repaint = true; +		} + +		// leave bottom line blank for [more] prompt +		if (i == _scrollPos && i > 0) +			continue; + +		linelen = ln->_len; + +		// kill spaces at the end unless they're a different color +		color = Windows::_overrideBgSet ? g_conf->_windowColor : _bgColor; +		while (i > 0 && linelen > 1 && ln->_chars[linelen - 1] == ' ' +		        && _styles[ln->_attrs[linelen - 1].style].bg == color +		        && !_styles[ln->_attrs[linelen - 1].style].reverse) +			linelen --; + +		// kill characters that would overwrite the scroll bar +		while (linelen > 1 && calcWidth(ln->_chars, ln->_attrs, 0, linelen, -1) >= pw) +			linelen --; + +		/* +		 * count spaces and width for justification +		 */ +		if (g_conf->_justify && !ln->_newLine && i > 0) { +			for (a = 0, nsp = 0; a < linelen; a++) +				if (ln->_chars[a] == ' ') +					nsp ++; +			w = calcWidth(ln->_chars, ln->_attrs, 0, linelen, 0); +			if (nsp) +				spw = (x1 - x0 - ln->_lm - ln->_rm - 2 * SLOP - w) / nsp; +			else +				spw = 0; +		} else { +			spw = -1; +		} + +		// find and highlight selected characters +		if (selrow && !Windows::_claimSelect) { +			lsc = 0; +			rsc = 0; +			selchar = false; +			// optimized case for all chars selected +			if (selleft && selright) { +				rsc = linelen > 0 ? linelen - 1 : 0; +				selchar = calcWidth(ln->_chars, ln->_attrs, lsc, rsc, spw) / GLI_SUBPIX; +			} else { +				// optimized case for leftmost char selected +				if (selleft) { +					tsc = linelen > 0 ? linelen - 1 : 0; +					selchar = calcWidth(ln->_chars, ln->_attrs, lsc, tsc, spw) / GLI_SUBPIX; +				} else { +					// find the substring contained by the selection +					tx = (x0 + SLOP + ln->_lm) / GLI_SUBPIX; +					// measure string widths until we find left char +					for (tsc = 0; tsc < linelen; tsc++) { +						tsw = calcWidth(ln->_chars, ln->_attrs, 0, tsc, spw) / GLI_SUBPIX; +						if (tsw + tx >= sx0 || +						        tsw + tx + GLI_SUBPIX >= sx0 && ln->_chars[tsc] != ' ') { +							lsc = tsc; +							selchar = true; +							break; +						} +					} +				} +				if (selchar) { +					// optimized case for rightmost char selected +					if (selright) { +						rsc = linelen > 0 ? linelen - 1 : 0; +					} else { +						// measure string widths until we find right char +						for (tsc = lsc; tsc < linelen; tsc++) { +							tsw = calcWidth(ln->_chars, ln->_attrs, lsc, tsc, spw) / GLI_SUBPIX; +							if (tsw + sx0 < sx1) +								rsc = tsc; +						} +						if (lsc && !rsc) +							rsc = lsc; +					} +				} +			} +			// reverse colors for selected chars +			if (selchar) { +				for (tsc = lsc; tsc <= rsc; tsc++) { +					ln->_attrs[tsc].reverse = !ln->_attrs[tsc].reverse; +					_copyBuf[_copyPos] = ln->_chars[tsc]; +					_copyPos++; +				} +			} +			// add newline if we reach the end of the line +			if (ln->_len == 0 || ln->_len == (rsc + 1)) { +				_copyBuf[_copyPos] = '\n'; +				_copyPos++; +			} +		} + +		// clear any stored hyperlink coordinates +		g_vm->_selection->putHyperlink(0, x0 / GLI_SUBPIX, y, +		                               x1 / GLI_SUBPIX, y + g_conf->_leading); + +		/* +		 * fill in background colors +		 */ +		color = Windows::_overrideBgSet ? g_conf->_windowColor : _bgColor; +		screen.fillRect(Rect::fromXYWH(x0 / GLI_SUBPIX, y, (x1 - x0) / GLI_SUBPIX, g_conf->_leading), +		                color); + +		x = x0 + SLOP + ln->_lm; +		a = 0; +		for (b = 0; b < linelen; b++) { +			if (ln->_attrs[a] != ln->_attrs[b]) { +				link = ln->_attrs[a].hyper; +				font = ln->_attrs[a].attrFont(_styles); +				color = ln->_attrs[a].attrBg(_styles); +				w = screen.stringWidthUni(font, Common::U32String(ln->_chars + a, b - a), spw); +				screen.fillRect(Rect::fromXYWH(x / GLI_SUBPIX, y, w / GLI_SUBPIX, g_conf->_leading), +				                color); +				if (link) { +					screen.fillRect(Rect::fromXYWH(x / GLI_SUBPIX + 1, y + g_conf->_baseLine + 1, +					                               w / GLI_SUBPIX + 1, g_conf->_linkStyle), g_conf->_linkColor); +					g_vm->_selection->putHyperlink(link, x / GLI_SUBPIX, y, +					                               x / GLI_SUBPIX + w / GLI_SUBPIX, +					                               y + g_conf->_leading); +				} +				x += w; +				a = b; +			} +		} +		link = ln->_attrs[a].hyper; +		font = ln->_attrs[a].attrFont(_styles); +		color = ln->_attrs[a].attrBg(_styles); +		w = screen.stringWidthUni(font, Common::U32String(ln->_chars + a, b - a), spw); +		screen.fillRect(Rect::fromXYWH(x / GLI_SUBPIX, y, w / GLI_SUBPIX, g_conf->_leading), color); +		if (link) { +			screen.fillRect(Rect::fromXYWH(x / GLI_SUBPIX + 1, y + g_conf->_baseLine + 1, +			                               w / GLI_SUBPIX + 1, g_conf->_linkStyle), g_conf->_linkColor); +			g_vm->_selection->putHyperlink(link, x / GLI_SUBPIX, y, +			                               x / GLI_SUBPIX + w / GLI_SUBPIX, +			                               y + g_conf->_leading); +		} +		x += w; + +		color = Windows::_overrideBgSet ? g_conf->_windowColor : _bgColor; +		screen.fillRect(Rect::fromXYWH(x / GLI_SUBPIX, y, x1 / GLI_SUBPIX - x / GLI_SUBPIX, g_conf->_leading), color); + +		/* +		 * draw caret +		 */ + +		if (_windows->getFocusWindow() == this && i == 0 && (_lineRequest || _lineRequestUni)) { +			w = calcWidth(_chars, _attrs, 0, _inCurs, spw); +			if (w < pw - g_conf->_caretShape * 2 * GLI_SUBPIX) +				screen.drawCaret(Point(x0 + SLOP + ln->_lm + w, y + g_conf->_baseLine)); +		} + +		/* +		 * draw text +		 */ + +		x = x0 + SLOP + ln->_lm; +		a = 0; +		for (b = 0; b < linelen; b++) { +			if (ln->_attrs[a] != ln->_attrs[b]) { +				link = ln->_attrs[a].hyper; +				font = ln->_attrs[a].attrFont(_styles); +				color = link ? g_conf->_linkColor : ln->_attrs[a].attrFg(_styles); +				x = screen.drawStringUni(Point(x, y + g_conf->_baseLine), +				                         font, color, Common::U32String(ln->_chars + a, b - a), spw); +				a = b; +			} +		} +		link = ln->_attrs[a].hyper; +		font = ln->_attrs[a].attrFont(_styles); +		color = link ? g_conf->_linkColor : ln->_attrs[a].attrFg(_styles); +		screen.drawStringUni(Point(x, y + g_conf->_baseLine), font, color, Common::U32String(ln->_chars + a, linelen - a), spw); +	} + +	/* +	 * draw more prompt +	 */ +	if (_scrollPos && _height > 1) { +		x = x0 + SLOP; +		y = y0 + (_height - 1) * g_conf->_leading; + +		g_vm->_selection->putHyperlink(0, x0 / GLI_SUBPIX, y, +		                               x1 / GLI_SUBPIX, y + g_conf->_leading); + +		color = Windows::_overrideBgSet ? g_conf->_windowColor : _bgColor; +		screen.fillRect(Rect::fromXYWH(x / GLI_SUBPIX, y, x1 / GLI_SUBPIX - x / GLI_SUBPIX, g_conf->_leading), color); + +		w = screen.stringWidth(g_conf->_moreFont, g_conf->_morePrompt); + +		if (g_conf->_moreAlign == 1)  			// center -            x = x0 + SLOP + (x1 - x0 - w - SLOP * 2) / 2; -        if (g_conf->_moreAlign == 2) +			x = x0 + SLOP + (x1 - x0 - w - SLOP * 2) / 2; +		if (g_conf->_moreAlign == 2)  			// right -            x = x1 - SLOP - w; +			x = x1 - SLOP - w; -        color = Windows::_overrideFgSet ? g_conf->_moreColor : _fgColor; +		color = Windows::_overrideFgSet ? g_conf->_moreColor : _fgColor;  		screen.drawString(Point(x, y + g_conf->_baseLine), -                g_conf->_moreFont, color, g_conf->_morePrompt); -        y1 = y; // don't want pictures overdrawing "[more]" - -        // try to claim the focus -        _moreRequest = true; -        Windows::_moreFocus = true; -    } else { -        _moreRequest = false; -        y1 = y0 + _height * g_conf->_leading; -    } - -    /* -     * draw the images -     */ -    for (i = 0; i < _scrollBack; i++) { -        memcpy(ln, &_lines[i], sizeof(TextBufferRow)); - -        y = y0 + (_height - (i - _scrollPos) - 1) * g_conf->_leading; - -        if (ln->_lPic) { -            if (y < y1 && y + ln->_lPic->h > y0) { -				ln->_lPic->drawPicture(x0/GLI_SUBPIX, y, x0/GLI_SUBPIX, y0, x1/GLI_SUBPIX, y1); -                link = ln->_lHyper; -                hy0 = y > y0 ? y : y0; -                hy1 = y + ln->_lPic->h < y1 ? y + ln->_lPic->h : y1; -                hx0 = x0/GLI_SUBPIX; -                hx1 = x0/GLI_SUBPIX + ln->_lPic->w < x1/GLI_SUBPIX -                            ? x0/GLI_SUBPIX + ln->_lPic->w -                            : x1/GLI_SUBPIX; -                g_vm->_selection->putHyperlink(link, hx0, hy0, hx1, hy1); -            } -        } - -        if (ln->_rPic) { -            if (y < y1 && y + ln->_rPic->h > y0) { -				ln->_rPic->drawPicture(x1/GLI_SUBPIX - ln->_rPic->w, y, -					x0/GLI_SUBPIX, y0, x1/GLI_SUBPIX, y1); -                link = ln->_rHyper; -                hy0 = y > y0 ? y : y0; -                hy1 = y + ln->_rPic->h < y1 ? y + ln->_rPic->h : y1; -                hx0 = x1/GLI_SUBPIX - ln->_rPic->w > x0/GLI_SUBPIX -                            ? x1/GLI_SUBPIX - ln->_rPic->w -                            : x0/GLI_SUBPIX; -                hx1 = x1/GLI_SUBPIX; -                g_vm->_selection->putHyperlink(link, hx0, hy0, hx1, hy1); -            } -        } -    } - -    /* -     * Draw the scrollbar -     */ - -    // try to claim scroll keys -    _scrollRequest = _scrollMax > _height; - -    if (_scrollRequest && g_conf->_scrollWidth) { -        int t0, t1; -        x0 = _bbox.right - g_conf->_scrollWidth; -        x1 = _bbox.right; -        y0 = _bbox.top + g_conf->_tMarginY; -        y1 = _bbox.bottom - g_conf->_tMarginY; - -        g_vm->_selection->putHyperlink(0, x0, y0, x1, y1); - -        y0 += g_conf->_scrollWidth / 2; -        y1 -= g_conf->_scrollWidth / 2; - -        // pos = thbot, pos - ht = thtop, max = wtop, 0 = wbot -        t0 = (_scrollMax - _scrollPos) - (_height - 1); -        t1 = (_scrollMax - _scrollPos); -        if (_scrollMax > _height) { -            t0 = t0 * (y1 - y0) / _scrollMax + y0; -            t1 = t1 * (y1 - y0) / _scrollMax + y0; -        } else { -            t0 = t1 = y0; -        } - -        screen.fillRect(Rect::fromXYWH(x0 + 1, y0, x1-x0 - 2, y1 - y0), g_conf->_scrollBg); -        screen.fillRect(Rect::fromXYWH(x0 + 1, t0, x1-x0 - 2, t1 - t0), g_conf->_scrollFg); - -        for (i = 0; i < g_conf->_scrollWidth / 2 + 1; i++) { -            screen.fillRect(Rect::fromXYWH(x0 + g_conf->_scrollWidth / 2 - i, -				y0 - g_conf->_scrollWidth/2 + i, i * 2, 1), g_conf->_scrollFg); -            screen.fillRect(Rect::fromXYWH(x0 + g_conf->_scrollWidth / 2 - i, -                    y1 + g_conf->_scrollWidth / 2 - i, i * 2, 1), g_conf->_scrollFg); -        } -    } - -    // Keep track of selected text to be ready when user copies it to the clipboard -    if (selBuf && _copyPos) { -        Windows::_claimSelect = true; +		                  g_conf->_moreFont, color, g_conf->_morePrompt); +		y1 = y; // don't want pictures overdrawing "[more]" + +		// try to claim the focus +		_moreRequest = true; +		Windows::_moreFocus = true; +	} else { +		_moreRequest = false; +		y1 = y0 + _height * g_conf->_leading; +	} + +	/* +	 * draw the images +	 */ +	for (i = 0; i < _scrollBack; i++) { +		memcpy(ln, &_lines[i], sizeof(TextBufferRow)); + +		y = y0 + (_height - (i - _scrollPos) - 1) * g_conf->_leading; + +		if (ln->_lPic) { +			if (y < y1 && y + ln->_lPic->h > y0) { +				ln->_lPic->drawPicture(x0 / GLI_SUBPIX, y, x0 / GLI_SUBPIX, y0, x1 / GLI_SUBPIX, y1); +				link = ln->_lHyper; +				hy0 = y > y0 ? y : y0; +				hy1 = y + ln->_lPic->h < y1 ? y + ln->_lPic->h : y1; +				hx0 = x0 / GLI_SUBPIX; +				hx1 = x0 / GLI_SUBPIX + ln->_lPic->w < x1 / GLI_SUBPIX +				      ? x0 / GLI_SUBPIX + ln->_lPic->w +				      : x1 / GLI_SUBPIX; +				g_vm->_selection->putHyperlink(link, hx0, hy0, hx1, hy1); +			} +		} + +		if (ln->_rPic) { +			if (y < y1 && y + ln->_rPic->h > y0) { +				ln->_rPic->drawPicture(x1 / GLI_SUBPIX - ln->_rPic->w, y, +				                       x0 / GLI_SUBPIX, y0, x1 / GLI_SUBPIX, y1); +				link = ln->_rHyper; +				hy0 = y > y0 ? y : y0; +				hy1 = y + ln->_rPic->h < y1 ? y + ln->_rPic->h : y1; +				hx0 = x1 / GLI_SUBPIX - ln->_rPic->w > x0 / GLI_SUBPIX +				      ? x1 / GLI_SUBPIX - ln->_rPic->w +				      : x0 / GLI_SUBPIX; +				hx1 = x1 / GLI_SUBPIX; +				g_vm->_selection->putHyperlink(link, hx0, hy0, hx1, hy1); +			} +		} +	} + +	/* +	 * Draw the scrollbar +	 */ + +	// try to claim scroll keys +	_scrollRequest = _scrollMax > _height; + +	if (_scrollRequest && g_conf->_scrollWidth) { +		int t0, t1; +		x0 = _bbox.right - g_conf->_scrollWidth; +		x1 = _bbox.right; +		y0 = _bbox.top + g_conf->_tMarginY; +		y1 = _bbox.bottom - g_conf->_tMarginY; + +		g_vm->_selection->putHyperlink(0, x0, y0, x1, y1); + +		y0 += g_conf->_scrollWidth / 2; +		y1 -= g_conf->_scrollWidth / 2; + +		// pos = thbot, pos - ht = thtop, max = wtop, 0 = wbot +		t0 = (_scrollMax - _scrollPos) - (_height - 1); +		t1 = (_scrollMax - _scrollPos); +		if (_scrollMax > _height) { +			t0 = t0 * (y1 - y0) / _scrollMax + y0; +			t1 = t1 * (y1 - y0) / _scrollMax + y0; +		} else { +			t0 = t1 = y0; +		} + +		screen.fillRect(Rect::fromXYWH(x0 + 1, y0, x1 - x0 - 2, y1 - y0), g_conf->_scrollBg); +		screen.fillRect(Rect::fromXYWH(x0 + 1, t0, x1 - x0 - 2, t1 - t0), g_conf->_scrollFg); + +		for (i = 0; i < g_conf->_scrollWidth / 2 + 1; i++) { +			screen.fillRect(Rect::fromXYWH(x0 + g_conf->_scrollWidth / 2 - i, +			                               y0 - g_conf->_scrollWidth / 2 + i, i * 2, 1), g_conf->_scrollFg); +			screen.fillRect(Rect::fromXYWH(x0 + g_conf->_scrollWidth / 2 - i, +			                               y1 + g_conf->_scrollWidth / 2 - i, i * 2, 1), g_conf->_scrollFg); +		} +	} + +	// Keep track of selected text to be ready when user copies it to the clipboard +	if (selBuf && _copyPos) { +		Windows::_claimSelect = true;  		g_vm->_clipboard->clipboardStore(Common::U32String(_copyBuf, _copyPos)); -        for (i = 0; i < _copyPos; i++) -            _copyBuf[i] = 0; -        _copyPos = 0; -    } +		for (i = 0; i < _copyPos; i++) +			_copyBuf[i] = 0; +		_copyPos = 0; +	} -    // no more prompt means all text has been seen -    if (!_moreRequest) -        _lastSeen = 0; +	// no more prompt means all text has been seen +	if (!_moreRequest) +		_lastSeen = 0; -    delete ln; +	delete ln;  }  int TextBufferWindow::acceptScroll(glui32 arg) { @@ -1209,8 +1209,8 @@ void TextBufferWindow::acceptReadChar(glui32 arg) {  		_scrollPos = 0;  	if (_scrollPos -		|| arg == keycode_PageUp -		|| arg == keycode_MouseWheelUp) { +	        || arg == keycode_PageUp +	        || arg == keycode_MouseWheelUp) {  		acceptScroll(arg);  		return;  	} @@ -1286,7 +1286,7 @@ void TextBufferWindow::acceptReadLine(glui32 arg) {  			_historyPos += HISTORYLEN;  		cx = _history[_historyPos];  		putTextUni(cx, cx ? strlen_uni(cx) : 0, _inFence, -			_numChars - _inFence); +		           _numChars - _inFence);  		break;  	case keycode_Down: @@ -1297,7 +1297,7 @@ void TextBufferWindow::acceptReadLine(glui32 arg) {  			_historyPos -= HISTORYLEN;  		cx = _history[_historyPos];  		putTextUni(cx, cx ? strlen_uni(cx) : 0, _inFence, -			_numChars - _inFence); +		           _numChars - _inFence);  		break;  	// Cursor movement keys, during line input. @@ -1441,14 +1441,14 @@ void TextBufferWindow::acceptLine(glui32 keycode) {  		len = inmax;  	if (!unicode) { -		for (ix = 0; ix<len; ix++) { +		for (ix = 0; ix < len; ix++) {  			glui32 ch = _chars[_inFence + ix];  			if (ch > 0xff)  				ch = '?';  			((char *)inbuf)[ix] = (char)ch;  		}  	} else { -		for (ix = 0; ix<len; ix++) +		for (ix = 0; ix < len; ix++)  			((glui32 *)inbuf)[ix] = _chars[_inFence + ix];  	} @@ -1483,13 +1483,26 @@ void TextBufferWindow::acceptLine(glui32 keycode) {  bool TextBufferWindow::leftquote(glui32 c) {  	switch (c) { -	case '(': case '[': +	case '(': +	case '[':  	// The following are Unicode characters in the "Separator, Space" category. -	case 0x0020: case 0x00a0: case 0x1680: case 0x2000: -	case 0x2001: case 0x2002: case 0x2003: case 0x2004: -	case 0x2005: case 0x2006: case 0x2007: case 0x2008: -	case 0x2009: case 0x200a: case 0x202f: case 0x205f: +	case 0x0020: +	case 0x00a0: +	case 0x1680: +	case 0x2000: +	case 0x2001: +	case 0x2002: +	case 0x2003: +	case 0x2004: +	case 0x2005: +	case 0x2006: +	case 0x2007: +	case 0x2008: +	case 0x2009: +	case 0x200a: +	case 0x202f: +	case 0x205f:  	case 0x3000:  		return true;  	default: @@ -1502,7 +1515,7 @@ void TextBufferWindow::scrollOneLine(bool forced) {  	_scrollMax++;  	if (_scrollMax > _scrollBack - 1 -		|| _lastSeen > _scrollBack - 1) +	        || _lastSeen > _scrollBack - 1)  		scrollResize();  	if (_lastSeen >= _height) @@ -1581,7 +1594,7 @@ void TextBufferWindow::scrollResize() {  }  int TextBufferWindow::calcWidth(glui32 *chars, Attributes *attrs, int startchar, -		int numChars, int spw) { +                                int numChars, int spw) {  	Screen &screen = *g_vm->_screen;  	int w = 0;  	int a, b; @@ -1590,7 +1603,7 @@ int TextBufferWindow::calcWidth(glui32 *chars, Attributes *attrs, int startchar,  	for (b = startchar; b < numChars; b++) {  		if (attrs[a] != attrs[b]) {  			w += screen.stringWidthUni(attrs[a].attrFont(_styles), -				Common::U32String(chars + a, b - a), spw); +			                           Common::U32String(chars + a, b - a), spw);  			a = b;  		}  	} @@ -1615,8 +1628,8 @@ void TextBufferWindow::flowBreak() {  /*--------------------------------------------------------------------------*/  TextBufferWindow::TextBufferRow::TextBufferRow() : _len(0), _newLine(0), _dirty(false), -		_repaint(false), _lPic(nullptr), _rPic(nullptr), _lHyper(0), _rHyper(0), -		_lm(0), _rm(0) { +	_repaint(false), _lPic(nullptr), _rPic(nullptr), _lHyper(0), _rHyper(0), +	_lm(0), _rm(0) {  	Common::fill(&_chars[0], &_chars[TBLINELEN], 0);  } diff --git a/engines/gargoyle/window_text_buffer.h b/engines/gargoyle/window_text_buffer.h index 9f0e20c0c1..199aeb42f6 100644 --- a/engines/gargoyle/window_text_buffer.h +++ b/engines/gargoyle/window_text_buffer.h @@ -99,7 +99,7 @@ public:  	glui32 *_chars;       ///< alias to lines[0].chars  	Attributes *_attrs;  ///< alias to lines[0].attrs -    ///< adjust margins temporarily for images +	///< adjust margins temporarily for images  	int _ladjw;  	int _ladjn;  	int _radjw; @@ -195,7 +195,9 @@ public:  	/**  	 * Cancel a hyperlink event  	 */ -	virtual void cancelHyperlinkEvent() override { _hyperRequest = false; } +	virtual void cancelHyperlinkEvent() override { +		_hyperRequest = false; +	}  	/**  	 * Redraw the window @@ -208,22 +210,34 @@ public:  	virtual void getSize(glui32 *width, glui32 *height) const override; -	virtual void requestCharEvent() override { _charRequest = true; } +	virtual void requestCharEvent() override { +		_charRequest = true; +	} -	virtual void requestCharEventUni() override { _charRequestUni = true; } +	virtual void requestCharEventUni() override { +		_charRequestUni = true; +	} -	virtual void setEchoLineEvent(glui32 val) override { _echoLineInput = val != 0; } +	virtual void setEchoLineEvent(glui32 val) override { +		_echoLineInput = val != 0; +	} -	virtual void requestHyperlinkEvent() override { _hyperRequest = true; } +	virtual void requestHyperlinkEvent() override { +		_hyperRequest = true; +	} -	virtual void cancelCharEvent() override { _charRequest = _charRequestUni = false; } +	virtual void cancelCharEvent() override { +		_charRequest = _charRequestUni = false; +	}  	virtual void flowBreak() override;  	/**  	 * Returns a pointer to the styles for the window  	 */ -	virtual const WindowStyle *getStyles() const override { return _styles; } +	virtual const WindowStyle *getStyles() const override { +		return _styles; +	}  };  } // End of namespace Gargoyle diff --git a/engines/gargoyle/window_text_grid.cpp b/engines/gargoyle/window_text_grid.cpp index 1e5e41dd53..c232fb11da 100644 --- a/engines/gargoyle/window_text_grid.cpp +++ b/engines/gargoyle/window_text_grid.cpp @@ -193,7 +193,7 @@ void TextGridWindow::click(const Point &newPos) {  	int y = newPos.y - _bbox.top;  	if (_lineRequest || _charRequest || _lineRequestUni || _charRequestUni -			|| _moreRequest || _scrollRequest) +	        || _moreRequest || _scrollRequest)  		_windows->setFocus(this);  	if (_mouseRequest) { @@ -205,8 +205,7 @@ void TextGridWindow::click(const Point &newPos) {  	if (_hyperRequest) {  		glui32 linkval = g_vm->_selection->getHyperlink(newPos); -		if (linkval) -		{ +		if (linkval) {  			g_vm->_events->store(evtype_Hyperlink, this, linkval, 0);  			_hyperRequest = false;  			if (g_conf->_safeClicks) @@ -216,8 +215,7 @@ void TextGridWindow::click(const Point &newPos) {  }  void TextGridWindow::requestLineEvent(char *buf, glui32 maxlen, glui32 initlen) { -	if (_charRequest || _lineRequest || _charRequestUni || _lineRequestUni) -	{ +	if (_charRequest || _lineRequest || _charRequestUni || _lineRequestUni) {  		warning("request_line_event: window already has keyboard request");  		return;  	} @@ -292,7 +290,7 @@ void TextGridWindow::requestLineEventUni(glui32 *buf, glui32 maxlen, glui32 init  	if (initlen) {  		TextGridRow *ln = &(_lines[_inOrgY]); -		for (glui32 ix = 0; ix<initlen; ix++) { +		for (glui32 ix = 0; ix < initlen; ix++) {  			ln->_attrs[_inOrgX + ix].set(style_Input);  			ln->_chars[_inOrgX + ix] = buf[ix];  		} @@ -304,7 +302,7 @@ void TextGridWindow::requestLineEventUni(glui32 *buf, glui32 maxlen, glui32 init  		touch(_inOrgY);  	} -	 +  	if (_lineTerminatorsBase && _termCt) {  		_lineTerminators = new glui32[_termCt + 1]; @@ -341,8 +339,7 @@ void TextGridWindow::cancelLineEvent(Event *ev) {  	inarrayrock = _inArrayRock;  	if (!unicode) { -		for (ix = 0; ix<_inLen; ix++) -		{ +		for (ix = 0; ix < _inLen; ix++) {  			glui32 ch = ln->_chars[_inOrgX + ix];  			if (ch > 0xff)  				ch = '?'; @@ -351,7 +348,7 @@ void TextGridWindow::cancelLineEvent(Event *ev) {  		if (_echoStream)  			_echoStream->echoLine((char *)_inBuf, _inLen);  	} else { -		for (ix = 0; ix<_inLen; ix++) +		for (ix = 0; ix < _inLen; ix++)  			((glui32 *)inbuf)[ix] = ln->_chars[_inOrgX + ix];  		if (_echoStream)  			_echoStream->echoLineUni((glui32 *)inbuf, _inLen); @@ -386,8 +383,7 @@ void TextGridWindow::cancelLineEvent(Event *ev) {  void TextGridWindow::acceptReadChar(glui32 arg) {  	glui32 key; -	switch (arg) -	{ +	switch (arg) {  	case keycode_Erase:  		key = keycode_Delete;  		break; @@ -398,8 +394,7 @@ void TextGridWindow::acceptReadChar(glui32 arg) {  		key = arg;  	} -	if (key > 0xff && key < (0xffffffff - keycode_MAXVAL + 1)) -	{ +	if (key > 0xff && key < (0xffffffff - keycode_MAXVAL + 1)) {  		if (!(_charRequestUni) || key > 0x10ffff)  			key = keycode_Unknown;  	} @@ -425,12 +420,12 @@ void TextGridWindow::acceptLine(glui32 keycode) {  	inarrayrock = _inArrayRock;  	if (!unicode) { -		for (ix = 0; ix<_inLen; ix++) +		for (ix = 0; ix < _inLen; ix++)  			((char *)inbuf)[ix] = (char)ln->_chars[_inOrgX + ix];  		if (_echoStream)  			_echoStream->echoLine((char *)inbuf, _inLen);  	} else { -		for (ix = 0; ix<_inLen; ix++) +		for (ix = 0; ix < _inLen; ix++)  			((glui32 *)inbuf)[ix] = ln->_chars[_inOrgX + ix];  		if (_echoStream)  			_echoStream->echoLineUni((glui32 *)inbuf, _inLen); @@ -440,8 +435,7 @@ void TextGridWindow::acceptLine(glui32 keycode) {  	_curX = 0;  	_attr = _origAttr; -	if (_lineTerminators) -	{ +	if (_lineTerminators) {  		glui32 val2 = keycode;  		if (val2 == keycode_Return)  			val2 = 0; @@ -487,7 +481,7 @@ void TextGridWindow::acceptReadLine(glui32 arg) {  			return;  		if (_inCurs <= 0)  			return; -		for (ix = _inCurs; ix<_inLen; ix++) +		for (ix = _inCurs; ix < _inLen; ix++)  			ln->_chars[_inOrgX + ix - 1] = ln->_chars[_inOrgX + ix];  		ln->_chars[_inOrgX + _inLen - 1] = ' ';  		_inCurs--; @@ -499,7 +493,7 @@ void TextGridWindow::acceptReadLine(glui32 arg) {  			return;  		if (_inCurs >= _inLen)  			return; -		for (ix = _inCurs; ix<_inLen - 1; ix++) +		for (ix = _inCurs; ix < _inLen - 1; ix++)  			ln->_chars[_inOrgX + ix] = ln->_chars[_inOrgX + ix + 1];  		ln->_chars[_inOrgX + _inLen - 1] = ' ';  		_inLen--; @@ -508,7 +502,7 @@ void TextGridWindow::acceptReadLine(glui32 arg) {  	case keycode_Escape:  		if (_inLen <= 0)  			return; -		for (ix = 0; ix<_inLen; ix++) +		for (ix = 0; ix < _inLen; ix++)  			ln->_chars[_inOrgX + ix] = ' ';  		_inLen = 0;  		_inCurs = 0; @@ -553,7 +547,7 @@ void TextGridWindow::acceptReadLine(glui32 arg) {  		if (g_conf->_caps && (arg > 0x60 && arg < 0x7b))  			arg -= 0x20; -		for (ix = _inLen; ix>_inCurs; ix--) +		for (ix = _inLen; ix > _inCurs; ix--)  			ln->_chars[_inOrgX + ix] = ln->_chars[_inOrgX + ix - 1];  		ln->_attrs[_inOrgX + _inLen].set(style_Input);  		ln->_chars[_inOrgX + _inCurs] = arg; @@ -607,11 +601,11 @@ void TextGridWindow::redraw() {  					for (k = a, o = x; k < b; k++, o += g_conf->_cellW) {  						screen.drawStringUni(Point(o * GLI_SUBPIX, y + g_conf->_baseLine), font, -							fgcolor, Common::U32String(&ln->_chars[k], 1), -1); +						                     fgcolor, Common::U32String(&ln->_chars[k], 1), -1);  					}  					if (link) {  						screen.fillRect(Rect::fromXYWH(x, y + g_conf->_baseLine + 1, w, -							g_conf->_linkStyle), g_conf->_linkColor); +						                               g_conf->_linkStyle), g_conf->_linkColor);  						g_vm->_selection->putHyperlink(link, x, y, x + w, y + g_conf->_leading);  					} @@ -629,11 +623,11 @@ void TextGridWindow::redraw() {  			for (k = a, o = x; k < b; k++, o += g_conf->_cellW) {  				screen.drawStringUni(Point(o * GLI_SUBPIX, y + g_conf->_baseLine), font, -					fgcolor, Common::U32String(&ln->_chars[k], 1)); +				                     fgcolor, Common::U32String(&ln->_chars[k], 1));  			}  			if (link) {  				screen.fillRect(Rect::fromXYWH(x, y + g_conf->_baseLine + 1, w, g_conf->_linkStyle), -					g_conf->_linkColor); +				                g_conf->_linkColor);  				g_vm->_selection->putHyperlink(link, x, y, x + w, y + g_conf->_leading);  			}  		} diff --git a/engines/gargoyle/window_text_grid.h b/engines/gargoyle/window_text_grid.h index 8470c36fd2..fa9fe8b18b 100644 --- a/engines/gargoyle/window_text_grid.h +++ b/engines/gargoyle/window_text_grid.h @@ -57,7 +57,7 @@ private:  	void touch(int line);  	/** -	 * Return or enter, during line input. Ends line input.  +	 * Return or enter, during line input. Ends line input.  	 */  	void acceptLine(glui32 keycode);  public: @@ -66,7 +66,7 @@ public:  	int _curX, _curY;    ///< the window cursor position -						 ///< for line input +	///< for line input  	void *_inBuf;        ///< unsigned char* for latin1, glui32* for unicode  	int _inOrgX, _inOrgY;  	int _inMax; @@ -125,7 +125,9 @@ public:  	/**  	 * Cancel a hyperlink event  	 */ -	virtual void cancelHyperlinkEvent() override { _hyperRequest = false; } +	virtual void cancelHyperlinkEvent() override { +		_hyperRequest = false; +	}  	/**  	 * Redraw the window @@ -138,7 +140,9 @@ public:  	virtual void getSize(glui32 *width, glui32 *height) const override; -	virtual void requestCharEvent() override { _charRequest = true; } +	virtual void requestCharEvent() override { +		_charRequest = true; +	}  	/**  	 * Prepare for inputing a line @@ -158,20 +162,32 @@ public:  	/**  	 * Cancel a mouse event  	 */ -	virtual void cancelMouseEvent() override { _mouseRequest = false; } +	virtual void cancelMouseEvent() override { +		_mouseRequest = false; +	} -	virtual void requestCharEventUni() override { _charRequestUni = true; } +	virtual void requestCharEventUni() override { +		_charRequestUni = true; +	} -	virtual void requestMouseEvent() override { _mouseRequest = true; } +	virtual void requestMouseEvent() override { +		_mouseRequest = true; +	} -	virtual void requestHyperlinkEvent() override { _hyperRequest = true; } +	virtual void requestHyperlinkEvent() override { +		_hyperRequest = true; +	} -	virtual void cancelCharEvent() override { _charRequest = _charRequestUni = false; } +	virtual void cancelCharEvent() override { +		_charRequest = _charRequestUni = false; +	}  	/**  	 * Returns a pointer to the styles for the window  	 */ -	virtual const WindowStyle *getStyles() const override { return _styles; } +	virtual const WindowStyle *getStyles() const override { +		return _styles; +	}  };  } // End of namespace Gargoyle diff --git a/engines/gargoyle/windows.cpp b/engines/gargoyle/windows.cpp index 5bf2b3eac9..883e3d6da4 100644 --- a/engines/gargoyle/windows.cpp +++ b/engines/gargoyle/windows.cpp @@ -52,7 +52,7 @@ byte Windows::_zcolor_Bright[3];  /*--------------------------------------------------------------------------*/  Windows::Windows(Graphics::Screen *screen) : _screen(screen), _windowList(nullptr), -		_rootWin(nullptr), _focusWin(nullptr) { +	_rootWin(nullptr), _focusWin(nullptr) {  	_overrideReverse = false;  	_overrideFgSet = false;  	_overrideBgSet = false; @@ -71,7 +71,7 @@ Windows::Windows(Graphics::Screen *screen) : _screen(screen), _windowList(nullpt  }  Window *Windows::windowOpen(Window *splitwin, glui32 method, glui32 size, -		glui32 wintype, glui32 rock) { +                            glui32 wintype, glui32 rock) {  	Window *newwin, *oldparent;  	PairWindow *pairWin;  	glui32 val; @@ -93,23 +93,20 @@ Window *Windows::windowOpen(Window *splitwin, glui32 method, glui32 size,  		}  		val = (method & winmethod_DivisionMask); -		if (val != winmethod_Fixed && val != winmethod_Proportional) -		{ +		if (val != winmethod_Fixed && val != winmethod_Proportional) {  			warning("window_open: invalid method (not fixed or proportional)");  			return nullptr;  		}  		val = (method & winmethod_DirMask);  		if (val != winmethod_Above && val != winmethod_Below -			&& val != winmethod_Left && val != winmethod_Right) -		{ +		        && val != winmethod_Left && val != winmethod_Right) {  			warning("window_open: invalid method (bad direction)");  			return nullptr;  		}  		oldparent = splitwin->_parent; -		if (oldparent && oldparent->_type != wintype_Pair) -		{ +		if (oldparent && oldparent->_type != wintype_Pair) {  			warning("window_open: parent window is not Pair");  			return nullptr;  		} @@ -283,8 +280,8 @@ void Windows::inputGuessFocus() {  	do {  		if (altWin -			&& (altWin->_lineRequest || altWin->_charRequest || -				altWin->_lineRequestUni || altWin->_charRequestUni)) +		        && (altWin->_lineRequest || altWin->_charRequest || +		            altWin->_lineRequestUni || altWin->_charRequestUni))  			break;  		altWin = iterateTreeOrder(altWin);  	} while (altWin != _focusWin); @@ -311,12 +308,11 @@ void Windows::inputMoreFocus() {  void Windows::inputNextFocus() {  	Window *altWin = _focusWin; -	do -	{ +	do {  		altWin = iterateTreeOrder(altWin);  		if (altWin -			&& (altWin->_lineRequest || altWin->_charRequest || -				altWin->_lineRequestUni || altWin->_charRequestUni)) +		        && (altWin->_lineRequest || altWin->_charRequest || +		            altWin->_lineRequestUni || altWin->_charRequestUni))  			break;  	} while (altWin != _focusWin); @@ -485,10 +481,10 @@ Window *Windows::iterateTreeOrder(Window *win) {  /*--------------------------------------------------------------------------*/  Window::Window(Windows *windows, glui32 rock) : _windows(windows), _rock(rock), -		_type(0), _parent(nullptr), _next(nullptr), _prev(nullptr), _yAdj(0), -		_lineRequest(0), _lineRequestUni(0), _charRequest(0), _charRequestUni(0), -		_mouseRequest(0), _hyperRequest(0), _moreRequest(0), _scrollRequest(0), _imageLoaded(0), -		_echoLineInputBase(true), _lineTerminatorsBase(nullptr), _termCt(0), _echoStream(nullptr) { +	_type(0), _parent(nullptr), _next(nullptr), _prev(nullptr), _yAdj(0), +	_lineRequest(0), _lineRequestUni(0), _charRequest(0), _charRequestUni(0), +	_mouseRequest(0), _hyperRequest(0), _moreRequest(0), _scrollRequest(0), _imageLoaded(0), +	_echoLineInputBase(true), _lineTerminatorsBase(nullptr), _termCt(0), _echoStream(nullptr) {  	_attr.fgset = 0;  	_attr.bgset = 0;  	_attr.reverse = 0; @@ -509,7 +505,7 @@ Window::~Window() {  	if (g_vm->gli_unregister_obj)  		(*g_vm->gli_unregister_obj)(this, gidisp_Class_Window, _dispRock); -	 +  	_echoStream = nullptr;  	delete _stream; @@ -704,14 +700,14 @@ byte *Attributes::attrBg(WindowStyle *styles) {  	if (zfset && zfore != Windows::_zcolor_fg) {  		Windows::_zcolor_Foreground[0] = (zfore >> 16) & 0xff;  		Windows::_zcolor_Foreground[1] = (zfore >> 8) & 0xff; -		Windows::_zcolor_Foreground[2] = (zfore)& 0xff; +		Windows::_zcolor_Foreground[2] = (zfore) & 0xff;  		Windows::_zcolor_fg = zfore;  	}  	if (zbset && zback != Windows::_zcolor_bg) {  		Windows::_zcolor_Background[0] = (zback >> 16) & 0xff;  		Windows::_zcolor_Background[1] = (zback >> 8) & 0xff; -		Windows::_zcolor_Background[2] = (zback)& 0xff; +		Windows::_zcolor_Background[2] = (zback) & 0xff;  		Windows::_zcolor_bg = zback;  	} @@ -726,11 +722,10 @@ byte *Attributes::attrBg(WindowStyle *styles) {  				return Windows::rgbShift(Windows::_zcolor_Foreground);  			else  				return Windows::_zcolor_Foreground; +		else if (zbset && !memcmp(styles[style].fg, Windows::_zcolor_Background, 3)) +			return Windows::_zcolor_LightGrey;  		else -			if (zbset && !memcmp(styles[style].fg, Windows::_zcolor_Background, 3)) -				return Windows::_zcolor_LightGrey; -			else -				return styles[style].fg; +			return styles[style].fg;  	}  } @@ -746,14 +741,14 @@ byte *Attributes::attrFg(WindowStyle *styles) {  	if (zfset && zfore != Windows::_zcolor_fg) {  		Windows::_zcolor_Foreground[0] = (zfore >> 16) & 0xff;  		Windows::_zcolor_Foreground[1] = (zfore >> 8) & 0xff; -		Windows::_zcolor_Foreground[2] = (zfore)& 0xff; +		Windows::_zcolor_Foreground[2] = (zfore) & 0xff;  		Windows::_zcolor_fg = zfore;  	}  	if (zbset && zback != Windows::_zcolor_bg) {  		Windows::_zcolor_Background[0] = (zback >> 16) & 0xff;  		Windows::_zcolor_Background[1] = (zback >> 8) & 0xff; -		Windows::_zcolor_Background[2] = (zback)& 0xff; +		Windows::_zcolor_Background[2] = (zback) & 0xff;  		Windows::_zcolor_bg = zback;  	} @@ -763,11 +758,10 @@ byte *Attributes::attrFg(WindowStyle *styles) {  				return Windows::rgbShift(Windows::_zcolor_Foreground);  			else  				return Windows::_zcolor_Foreground; +		else if (zbset && !memcmp(styles[style].fg, Windows::_zcolor_Background, 3)) +			return Windows::_zcolor_LightGrey;  		else -			if (zbset && !memcmp(styles[style].fg, Windows::_zcolor_Background, 3)) -				return Windows::_zcolor_LightGrey; -			else -				return styles[style].fg; +			return styles[style].fg;  	} else {  		if (zbset)  			return Windows::_zcolor_Background; diff --git a/engines/gargoyle/windows.h b/engines/gargoyle/windows.h index 0e4020bb76..4838d7b245 100644 --- a/engines/gargoyle/windows.h +++ b/engines/gargoyle/windows.h @@ -63,7 +63,9 @@ public:  		/**  		 * Dereference  		 */ -		Window *operator*() const { return _current; } +		Window *operator*() const { +			return _current; +		}  		/**  		 * Move to next @@ -73,17 +75,21 @@ public:  		/**  		 * Equality test  		 */ -		bool operator==(const iterator &i) { return _current == i._current; } +		bool operator==(const iterator &i) { +			return _current == i._current; +		}  		/**  		 * Inequality test  		 */ -		bool operator!=(const iterator &i) { return _current != i._current; } +		bool operator!=(const iterator &i) { +			return _current != i._current; +		}  	};  	friend class iterator;  private:  	Graphics::Screen *_screen; -	Window * _windowList;      ///< List of all windows +	Window *_windowList;       ///< List of all windows  	Window *_rootWin;          ///< The topmost window  	Window *_focusWin;         ///< The window selected by the player  	bool _drawSelect; @@ -149,7 +155,7 @@ public:  	 * Open a new window  	 */  	Window *windowOpen(Window *splitwin, glui32 method, glui32 size, -		glui32 wintype, glui32 rock); +	                   glui32 wintype, glui32 rock);  	/**  	 * Close an existing window @@ -159,17 +165,23 @@ public:  	/**  	 * Return the root window  	 */ -	Window *getRoot() const { return _rootWin; } +	Window *getRoot() const { +		return _rootWin; +	}  	/**  	 * Gets the focused window  	 */ -	Window *getFocusWindow() const { return _focusWin; } +	Window *getFocusWindow() const { +		return _focusWin; +	}  	/**  	 * Setst the focused window  	 */ -	void setFocus(Window *win) { _focusWin = win; } +	void setFocus(Window *win) { +		_focusWin = win; +	}  	/**  	 * Pick first window which might want input. This is called after every keystroke. @@ -188,7 +200,9 @@ public:  	void selectionChanged(); -	void clearClaimSelect() { _claimSelect = false; } +	void clearClaimSelect() { +		_claimSelect = false; +	}  	/**  	 * Rearrange windows @@ -207,12 +221,16 @@ public:  	/**  	 * Get an iterator that will move over the tree  	 */ -	iterator begin() { return iterator(this, _windowList); } +	iterator begin() { +		return iterator(this, _windowList); +	}  	/**  	 * Returns the end point of window iteration  	 */ -	iterator end() { return iterator(this, nullptr); } +	iterator end() { +		return iterator(this, nullptr); +	}  };  /** @@ -272,14 +290,14 @@ struct WindowStyle {   * Window attributes   */  struct Attributes { -    unsigned fgset   : 1; -    unsigned bgset   : 1; -    unsigned reverse : 1; -    unsigned         : 1; -    unsigned style   : 4; -    unsigned fgcolor : 24; -    unsigned bgcolor : 24; -    unsigned hyper   : 32; +	unsigned fgset   : 1; +	unsigned bgset   : 1; +	unsigned reverse : 1; +	unsigned         : 1; +	unsigned style   : 4; +	unsigned fgcolor : 24; +	unsigned bgcolor : 24; +	unsigned hyper   : 32;  	/**  	 * Constructor @@ -306,16 +324,16 @@ struct Attributes {  	 */  	bool operator==(const Attributes &src) {  		return fgset == src.fgset && bgset == src.bgset && reverse == src.reverse -			&& style == src.style && fgcolor == src.fgcolor && bgcolor == src.bgcolor -			&& hyper == src.hyper; +		       && style == src.style && fgcolor == src.fgcolor && bgcolor == src.bgcolor +		       && hyper == src.hyper;  	}  	/**  	 * Inequality comparison  	 */  	bool operator!=(const Attributes &src) {  		return fgset != src.fgset || bgset != src.bgset || reverse != src.reverse -			|| style != src.style || fgcolor != src.fgcolor || bgcolor != src.bgcolor -			|| hyper != src.hyper; +		       || style != src.style || fgcolor != src.fgcolor || bgcolor != src.bgcolor +		       || hyper != src.hyper;  	}  	/** @@ -331,7 +349,9 @@ struct Attributes {  	/**  	 * Get the font for the current font style  	 */ -	FACES attrFont(WindowStyle *styles) const { return styles[style].font; } +	FACES attrFont(WindowStyle *styles) const { +		return styles[style].font; +	}  };  /** @@ -391,12 +411,16 @@ public:  	/**  	 * Rearranges the window  	 */ -	virtual void rearrange(const Rect &box) { _bbox = box; } +	virtual void rearrange(const Rect &box) { +		_bbox = box; +	}  	/**  	 * Get window split size within parent pair window  	 */ -	virtual glui32 getSplit(glui32 size, bool vertical) const { return 0; } +	virtual glui32 getSplit(glui32 size, bool vertical) const { +		return 0; +	}  	/**  	 * Write a character @@ -406,7 +430,9 @@ public:  	/**  	 * Unput a unicode character  	 */ -	virtual bool unputCharUni(uint32 ch) { return false; } +	virtual bool unputCharUni(uint32 ch) { +		return false; +	}  	/**  	 * Move the cursor  | 
