[Scummvm-git-logs] scummvm master -> 4b6bda08310c5c71cbdffa44312af49eca903d38

phcoder phcoder at gmail.com
Tue Nov 10 16:19:28 UTC 2020


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

Summary:
4b6bda0831 SLUDGE: Remove UTF8 code (#2592)


Commit: 4b6bda08310c5c71cbdffa44312af49eca903d38
    https://github.com/scummvm/scummvm/commit/4b6bda08310c5c71cbdffa44312af49eca903d38
Author: Vladimir Serbinenko (phcoder at google.com)
Date: 2020-11-10T17:19:23+01:00

Commit Message:
SLUDGE: Remove UTF8 code (#2592)

This is basically a duplicate of UTF8 from common.
So just use common code instead

Changed paths:
  R engines/sludge/utf8.cpp
  R engines/sludge/utf8.h
    engines/sludge/builtin.cpp
    engines/sludge/fonttext.cpp
    engines/sludge/fonttext.h
    engines/sludge/loadsave.cpp
    engines/sludge/module.mk


diff --git a/engines/sludge/builtin.cpp b/engines/sludge/builtin.cpp
index 1e07a873f2..88f58d1b12 100644
--- a/engines/sludge/builtin.cpp
+++ b/engines/sludge/builtin.cpp
@@ -51,7 +51,6 @@
 #include "sludge/sprites.h"
 #include "sludge/statusba.h"
 #include "sludge/sludge.h"
-#include "sludge/utf8.h"
 #include "sludge/zbuffer.h"
 
 namespace Sludge {
@@ -471,9 +470,7 @@ builtIn(substring) {
 	wholeString = fun->stack->thisVar.getTextFromAnyVar();
 	trimStack(fun->stack);
 
-	UTF8Converter convert;
-	convert.setUTF8String(wholeString);
-	Common::U32String str32 = convert.getU32String();
+	Common::U32String str32 = wholeString.decode(Common::kUtf8);
 
 	if ((int)str32.size() < start + length) {
 		length = str32.size() - start;
@@ -485,10 +482,7 @@ builtIn(substring) {
 		length = 0;
 	}
 
-	int startoffset = convert.getOriginOffset(start);
-	int endoffset = convert.getOriginOffset(start + length);
-
-	Common::String newString(wholeString.begin() + startoffset, wholeString.begin() + endoffset);
+	Common::String newString = str32.substr(start, length).encode(Common::kUtf8);
 
 	fun->reg.makeTextVar(newString);
 	return BR_CONTINUE;
diff --git a/engines/sludge/fonttext.cpp b/engines/sludge/fonttext.cpp
index 6163c445ac..33ac2aa03d 100644
--- a/engines/sludge/fonttext.cpp
+++ b/engines/sludge/fonttext.cpp
@@ -63,7 +63,7 @@ bool TextManager::isInFont(const Common::String &theText) {
 	if (theText.empty())
 		return 0;
 
-	Common::U32String str32 = UTF8Converter::convertUtf8ToUtf32(theText);
+	Common::U32String str32 = theText.decode(Common::kUtf8);
 
 	// We don't want to compare strings. Only single characters allowed!
 	if (str32.size() > 1)
@@ -72,11 +72,11 @@ bool TextManager::isInFont(const Common::String &theText) {
 	uint32 c = str32[0];
 
 	// check if font order contains the utf8 char
-	return _fontOrder.getU32String().contains(c);
+	return _fontOrder.contains(c);
 }
 
 int TextManager::stringLength(const Common::String &theText) {
-	Common::U32String str32 = UTF8Converter::convertUtf8ToUtf32(theText);
+	Common::U32String str32 = theText.decode(Common::kUtf8);
 	return str32.size();
 }
 
@@ -86,7 +86,7 @@ int TextManager::stringWidth(const Common::String &theText) {
 	if (_fontTable.empty())
 		return 0;
 
-	Common::U32String str32 = UTF8Converter::convertUtf8ToUtf32(theText);
+	Common::U32String str32 = theText.decode(Common::kUtf8);
 
 	for (uint i = 0; i < str32.size(); ++i) {
 		uint32 c = str32[i];
@@ -102,7 +102,7 @@ void TextManager::pasteString(const Common::String &theText, int xOff, int y, Sp
 
 	xOff += (int)((float)(_fontSpace >> 1) / g_sludge->_gfxMan->getCamZoom());
 
-	Common::U32String str32 = UTF8Converter::convertUtf8ToUtf32(theText);
+	Common::U32String str32 = theText.decode(Common::kUtf8);
 
 	for (uint32 i = 0; i < str32.size(); ++i) {
 		uint32 c = str32[i];
@@ -116,7 +116,7 @@ void TextManager::pasteStringToBackdrop(const Common::String &theText, int xOff,
 	if (_fontTable.empty())
 		return;
 
-	Common::U32String str32 = UTF8Converter::convertUtf8ToUtf32(theText);
+	Common::U32String str32 = theText.decode(Common::kUtf8);
 
 	xOff += _fontSpace >> 1;
 	for (uint32 i = 0; i < str32.size(); ++i) {
@@ -131,7 +131,7 @@ void TextManager::burnStringToBackdrop(const Common::String &theText, int xOff,
 	if (_fontTable.empty())
 		return;
 
-	Common::U32String str32 = UTF8Converter::convertUtf8ToUtf32(theText);
+	Common::U32String str32 = theText.decode(Common::kUtf8);
 
 	xOff += _fontSpace >> 1;
 	for (uint i = 0; i < str32.size(); ++i) {
@@ -143,14 +143,14 @@ void TextManager::burnStringToBackdrop(const Common::String &theText, int xOff,
 }
 
 bool TextManager::loadFont(int filenum, const Common::String &charOrder, int h) {
-	_fontOrder.setUTF8String(charOrder);
+	_fontOrder = charOrder.decode(Common::kUtf8);
 
 	g_sludge->_gfxMan->forgetSpriteBank(_theFont);
 
 	_loadedFontNum = filenum;
 
 	// get max value among all utf8 chars
-	Common::U32String fontOrderString = _fontOrder.getU32String();
+	Common::U32String fontOrderString = _fontOrder;
 
 	// create an index table from utf8 char to the index
 	if (!_fontTable.empty()) {
@@ -178,7 +178,7 @@ void TextManager::saveFont(Common::WriteStream *stream) {
 	if (!_fontTable.empty()) {
 		stream->writeUint16BE(_loadedFontNum);
 		stream->writeUint16BE(_fontHeight);
-		writeString(_fontOrder.getUTF8String(), stream);
+		writeString(_fontOrder.encode(Common::kUtf8), stream);
 	}
 	stream->writeSint16LE(_fontSpace);
 }
diff --git a/engines/sludge/fonttext.h b/engines/sludge/fonttext.h
index 7018c75213..260dd3248c 100644
--- a/engines/sludge/fonttext.h
+++ b/engines/sludge/fonttext.h
@@ -26,7 +26,6 @@
 #include "common/ustr.h"
 
 #include "sludge/sprites.h"
-#include "sludge/utf8.h"
 
 namespace Sludge {
 
@@ -62,7 +61,7 @@ public:
 private:
 	SpriteBank _theFont;
 	int _fontHeight, _numFontColours, _loadedFontNum;
-	UTF8Converter _fontOrder;
+	Common::U32String _fontOrder;
 	int16 _fontSpace;
 	SpritePalette _pastePalette;
 
diff --git a/engines/sludge/loadsave.cpp b/engines/sludge/loadsave.cpp
index 453e78f3e5..684e565525 100644
--- a/engines/sludge/loadsave.cpp
+++ b/engines/sludge/loadsave.cpp
@@ -45,7 +45,6 @@
 #include "sludge/sprites.h"
 #include "sludge/statusba.h"
 #include "sludge/speech.h"
-#include "sludge/utf8.h"
 #include "sludge/variable.h"
 #include "sludge/version.h"
 #include "sludge/zbuffer.h"
diff --git a/engines/sludge/module.mk b/engines/sludge/module.mk
index 19435b559d..ef346f590e 100644
--- a/engines/sludge/module.mk
+++ b/engines/sludge/module.mk
@@ -36,7 +36,6 @@ MODULE_OBJS := \
 	thumbnail.o \
 	timing.o \
 	transition.o \
-	utf8.o \
 	variable.o \
 	zbuffer.o \
  
diff --git a/engines/sludge/utf8.cpp b/engines/sludge/utf8.cpp
deleted file mode 100644
index bfcaec5ab9..0000000000
--- a/engines/sludge/utf8.cpp
+++ /dev/null
@@ -1,103 +0,0 @@
-/* ScummVM - Graphic Adventure Engine
- *
- * ScummVM is the legal property of its developers, whose names
- * are too numerous to list here. Please refer to the COPYRIGHT
- * file distributed with this source distribution.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- */
-/*
- Basic UTF-8 manipulation routines
- by Jeff Bezanson
- placed in the public domain Fall 2005
-
- This code is designed to provide the utilities you need to manipulate
- UTF-8 as an internal string encoding. These functions do not perform the
- error checking normally needed when handling UTF-8 data, so if you happen
- to be from the Unicode Consortium you will want to flay me alive.
- I do this because error checking can be performed at the boundaries (I/O),
- with these routines reserved for higher performance on data known to be
- valid.
- */
-
-#include "common/debug.h"
-
-#include "sludge/utf8.h"
-
-namespace Sludge {
-
-const uint32 UTF8Converter::offsetsFromUTF8[6] = {
-		0x00000000UL, 0x00003080UL,
-		0x000E2080UL, 0x03C82080UL,
-		0xFA082080UL, 0x82082080UL };
-
-/* reads the next utf-8 sequence out of a string, updating an index */
-uint32 UTF8Converter::nextchar(const char *s, int *i) {
-	uint32 ch = 0;
-	int sz = 0;
-
-	do {
-		ch <<= 6;
-		ch += (byte)s[(*i)++];
-		sz++;
-	} while (s[*i] && !isutf(s[*i]));
-	ch -= offsetsFromUTF8[sz - 1];
-
-	return ch;
-}
-
-Common::U32String UTF8Converter::convertUtf8ToUtf32(const Common::String &str) {
-	// we assume one character in a Common::String is one byte
-	// but in this case it's actually an UTF-8 string
-	// with up to 4 bytes per character. To work around this,
-	// convert it to an U32String before any further operation
-	Common::U32String u32str;
-	int i = 0;
-	while (i < (int)str.size()) {
-		uint32 chr = nextchar(str.c_str(), &i);
-		u32str += chr;
-	}
-	return u32str;
-}
-
-/* utf32 index => original byte offset */
-int UTF8Converter::getOriginOffset(int origIdx) {
-	uint offs = 0;
-	while (origIdx > 0 && offs < _str.size()) {
-		// increment if it's not the start of a utf8 sequence
-		(void)(	(++offs < _str.size() && isutf(_str[offs])) ||
-				(++offs < _str.size() && isutf(_str[offs])) ||
-				(++offs < _str.size() && isutf(_str[offs])) ||
-				++offs);
-		origIdx--;
-	}
-	return offs;
-}
-
-/** Construct a UTF8String with original char array to convert */
-UTF8Converter::UTF8Converter(const char *str) {
-	setUTF8String(str);
-}
-
-/** set a utf8 string to convert */
-void UTF8Converter::setUTF8String(Common::String str) {
-	_str32.clear();
-	_str32 = convertUtf8ToUtf32(str);
-	_str.clear();
-	_str = str;
-}
-
-} // End of namespace Sludge
diff --git a/engines/sludge/utf8.h b/engines/sludge/utf8.h
deleted file mode 100644
index 26a2542afc..0000000000
--- a/engines/sludge/utf8.h
+++ /dev/null
@@ -1,87 +0,0 @@
-/* ScummVM - Graphic Adventure Engine
- *
- * ScummVM is the legal property of its developers, whose names
- * are too numerous to list here. Please refer to the COPYRIGHT
- * file distributed with this source distribution.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- */
-#ifndef SLUDGE_UTF8_H
-#define SLUDGE_UTF8_H
-
-#include "common/system.h"
-#include "common/ustr.h"
-
-namespace Sludge {
-
-class UTF8Converter {
-private:
-	static const uint32 offsetsFromUTF8[6];
-
-	/**
-	 * we assume one character in a Common::String is one byte
-	 * but in this case it's actually an UTF-8 string
-	 */
-	Common::String _str;
-
-	/**
-	 * wrap a converted U32String
-	 */
-	Common::U32String _str32;
-
-	/** A tool function for string conversion
-	 * return next character, updating an index variable
-	 */
-	static uint32 nextchar(const char *s, int *i);
-
-	/** A tool function for string conversion
-	 * is this byte the start of a utf8 sequence?
-	 */
-	static inline bool isutf(char c) { return (((c)&0xC0)!=0x80); }
-
-public:
-	/** Construct a new empty string. */
-	UTF8Converter() {};
-
-	/** Construct a UTF8String with original char array to convert */
-	UTF8Converter(const char *data);
-
-	/** U32 character index to origin char offset */
-	int getOriginOffset(int origIdx);
-
-	/**
-	 * set a char array to this UTF8String
-	 */
-	void setUTF8String(Common::String str);
-
-	/**
-	 * get converted U32String
-	 */
-	Common::U32String getU32String() const { return _str32; };
-
-	/**
-	 * get origin UTF8String
-	 */
-	Common::String getUTF8String() const { return _str; };
-
-	/** Convert UTF8 String to UTF32 String
-	 */
-	static Common::U32String convertUtf8ToUtf32(const Common::String &str);
-};
-
-} // End of namespace Sludge
-
-#endif




More information about the Scummvm-git-logs mailing list