[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Eliot-dev] eliot dic/encoding.cpp dic/encoding.h test/dupl...
From: |
Olivier Teulière |
Subject: |
[Eliot-dev] eliot dic/encoding.cpp dic/encoding.h test/dupl... |
Date: |
Tue, 23 Jun 2009 21:36:34 +0000 |
CVSROOT: /cvsroot/eliot
Module name: eliot
Changes by: Olivier Teulière <ipkiss> 09/06/23 21:36:33
Modified files:
dic : encoding.cpp encoding.h
test : duplicate_1_player.ref duplicate_2_ai.ref
duplicate_explosive_variant.ref
duplicate_humans_ai.ref
duplicate_joker_variant.ref
duplicate_navigation.ref duplicate_no_point.ref
freegame_3_ai.ref
freegame_explosive_variant.ref
freegame_joker_variant.ref
freegame_navigation.ref freegame_play.ref
load_game.ref load_saved_game.ref
training_cross.ref training_cross2.ref
training_explosive_variant.ref
training_joker.ref training_joker2.ref
training_joker_variant.ref
training_navigation.ref training_play.ref
training_rosace.ref
utils : game_io.cpp
Log message:
Center correctly multi-chars letters in the text interface
CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/eliot/dic/encoding.cpp?cvsroot=eliot&r1=1.7&r2=1.8
http://cvs.savannah.gnu.org/viewcvs/eliot/dic/encoding.h?cvsroot=eliot&r1=1.3&r2=1.4
http://cvs.savannah.gnu.org/viewcvs/eliot/test/duplicate_1_player.ref?cvsroot=eliot&r1=1.1&r2=1.2
http://cvs.savannah.gnu.org/viewcvs/eliot/test/duplicate_2_ai.ref?cvsroot=eliot&r1=1.7&r2=1.8
http://cvs.savannah.gnu.org/viewcvs/eliot/test/duplicate_explosive_variant.ref?cvsroot=eliot&r1=1.2&r2=1.3
http://cvs.savannah.gnu.org/viewcvs/eliot/test/duplicate_humans_ai.ref?cvsroot=eliot&r1=1.6&r2=1.7
http://cvs.savannah.gnu.org/viewcvs/eliot/test/duplicate_joker_variant.ref?cvsroot=eliot&r1=1.1&r2=1.2
http://cvs.savannah.gnu.org/viewcvs/eliot/test/duplicate_navigation.ref?cvsroot=eliot&r1=1.1&r2=1.2
http://cvs.savannah.gnu.org/viewcvs/eliot/test/duplicate_no_point.ref?cvsroot=eliot&r1=1.1&r2=1.2
http://cvs.savannah.gnu.org/viewcvs/eliot/test/freegame_3_ai.ref?cvsroot=eliot&r1=1.6&r2=1.7
http://cvs.savannah.gnu.org/viewcvs/eliot/test/freegame_explosive_variant.ref?cvsroot=eliot&r1=1.2&r2=1.3
http://cvs.savannah.gnu.org/viewcvs/eliot/test/freegame_joker_variant.ref?cvsroot=eliot&r1=1.1&r2=1.2
http://cvs.savannah.gnu.org/viewcvs/eliot/test/freegame_navigation.ref?cvsroot=eliot&r1=1.1&r2=1.2
http://cvs.savannah.gnu.org/viewcvs/eliot/test/freegame_play.ref?cvsroot=eliot&r1=1.2&r2=1.3
http://cvs.savannah.gnu.org/viewcvs/eliot/test/load_game.ref?cvsroot=eliot&r1=1.3&r2=1.4
http://cvs.savannah.gnu.org/viewcvs/eliot/test/load_saved_game.ref?cvsroot=eliot&r1=1.6&r2=1.7
http://cvs.savannah.gnu.org/viewcvs/eliot/test/training_cross.ref?cvsroot=eliot&r1=1.6&r2=1.7
http://cvs.savannah.gnu.org/viewcvs/eliot/test/training_cross2.ref?cvsroot=eliot&r1=1.8&r2=1.9
http://cvs.savannah.gnu.org/viewcvs/eliot/test/training_explosive_variant.ref?cvsroot=eliot&r1=1.2&r2=1.3
http://cvs.savannah.gnu.org/viewcvs/eliot/test/training_joker.ref?cvsroot=eliot&r1=1.2&r2=1.3
http://cvs.savannah.gnu.org/viewcvs/eliot/test/training_joker2.ref?cvsroot=eliot&r1=1.8&r2=1.9
http://cvs.savannah.gnu.org/viewcvs/eliot/test/training_joker_variant.ref?cvsroot=eliot&r1=1.1&r2=1.2
http://cvs.savannah.gnu.org/viewcvs/eliot/test/training_navigation.ref?cvsroot=eliot&r1=1.1&r2=1.2
http://cvs.savannah.gnu.org/viewcvs/eliot/test/training_play.ref?cvsroot=eliot&r1=1.10&r2=1.11
http://cvs.savannah.gnu.org/viewcvs/eliot/test/training_rosace.ref?cvsroot=eliot&r1=1.7&r2=1.8
http://cvs.savannah.gnu.org/viewcvs/eliot/utils/game_io.cpp?cvsroot=eliot&r1=1.18&r2=1.19
Patches:
Index: dic/encoding.cpp
===================================================================
RCS file: /cvsroot/eliot/eliot/dic/encoding.cpp,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -b -r1.7 -r1.8
--- dic/encoding.cpp 28 Feb 2009 09:23:07 -0000 1.7
+++ dic/encoding.cpp 23 Jun 2009 21:36:33 -0000 1.8
@@ -279,6 +279,40 @@
}
+string centerAndConvert(const wstring &iWstr, unsigned int iLength, char c)
+{
+ int width = 0;
+ for (unsigned int i = 0; i < iWstr.size(); ++i)
+ {
+ int n = wcwidth(iWstr[i]);
+ if (n == -1)
+ {
+ ostringstream ss;
+ ss << "padAndConvert: non printable character: " << iWstr[i];
+ // XXX: Should we throw an exception instead? Just ignore the
problem?
+ cerr << ss.str() << endl;;
+ //throw DicException(ss.str());
+ return convertToMb(iWstr);
+ }
+ width += n;
+ }
+
+ if ((unsigned int)width >= iLength)
+ return convertToMb(iWstr);
+ else
+ {
+ // Padding is needed
+ string s((iLength - width) / 2, c);
+ string res = s + convertToMb(iWstr) + s;
+ // If the string cannot be centered perfectly, pad again on the right
+ // (arbitrary; if needed, we could take the iLeftPad argument)
+ if (res.size() != iLength)
+ s.append(1, c);
+ return res;
+ }
+}
+
+
unsigned int readFromUTF8(wchar_t *oString, unsigned int iWideSize,
const char *iBuffer, unsigned int iBufSize,
const string &iContext)
Index: dic/encoding.h
===================================================================
RCS file: /cvsroot/eliot/eliot/dic/encoding.h,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -b -r1.3 -r1.4
--- dic/encoding.h 22 Nov 2008 13:09:28 -0000 1.3
+++ dic/encoding.h 23 Jun 2009 21:36:33 -0000 1.4
@@ -75,6 +75,15 @@
bool iLeftPad = true, char c = ' ');
/**
+ * Convert the given string into a multi-byte one. If the number of columns
+ * needed to display the resulting string is less than iLength, pad it with
+ * the given character (defaulting to space) on both left and right, trying
+ * to keep the string centered
+ */
+string centerAndConvert(const wstring &iWstr, unsigned int iLength,
+ char c = ' ');
+
+/**
* Utility function to convert a char* buffer encoded in UTF-8 into a
* wchar_t* string
* @param oString: where to write the converted string
Index: test/duplicate_1_player.ref
===================================================================
RCS file: /cvsroot/eliot/eliot/test/duplicate_1_player.ref,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
Index: test/duplicate_2_ai.ref
===================================================================
RCS file: /cvsroot/eliot/eliot/test/duplicate_2_ai.ref,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -b -r1.7 -r1.8
Index: test/duplicate_explosive_variant.ref
===================================================================
RCS file: /cvsroot/eliot/eliot/test/duplicate_explosive_variant.ref,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -b -r1.2 -r1.3
Index: test/duplicate_humans_ai.ref
===================================================================
RCS file: /cvsroot/eliot/eliot/test/duplicate_humans_ai.ref,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -b -r1.6 -r1.7
Index: test/duplicate_joker_variant.ref
===================================================================
RCS file: /cvsroot/eliot/eliot/test/duplicate_joker_variant.ref,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
Index: test/duplicate_navigation.ref
===================================================================
RCS file: /cvsroot/eliot/eliot/test/duplicate_navigation.ref,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
Index: test/duplicate_no_point.ref
===================================================================
RCS file: /cvsroot/eliot/eliot/test/duplicate_no_point.ref,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
Index: test/freegame_3_ai.ref
===================================================================
RCS file: /cvsroot/eliot/eliot/test/freegame_3_ai.ref,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -b -r1.6 -r1.7
Index: test/freegame_explosive_variant.ref
===================================================================
RCS file: /cvsroot/eliot/eliot/test/freegame_explosive_variant.ref,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -b -r1.2 -r1.3
Index: test/freegame_joker_variant.ref
===================================================================
RCS file: /cvsroot/eliot/eliot/test/freegame_joker_variant.ref,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
Index: test/freegame_navigation.ref
===================================================================
RCS file: /cvsroot/eliot/eliot/test/freegame_navigation.ref,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
Index: test/freegame_play.ref
===================================================================
RCS file: /cvsroot/eliot/eliot/test/freegame_play.ref,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -b -r1.2 -r1.3
Index: test/load_game.ref
===================================================================
RCS file: /cvsroot/eliot/eliot/test/load_game.ref,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -b -r1.3 -r1.4
Index: test/load_saved_game.ref
===================================================================
RCS file: /cvsroot/eliot/eliot/test/load_saved_game.ref,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -b -r1.6 -r1.7
Index: test/training_cross.ref
===================================================================
RCS file: /cvsroot/eliot/eliot/test/training_cross.ref,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -b -r1.6 -r1.7
Index: test/training_cross2.ref
===================================================================
RCS file: /cvsroot/eliot/eliot/test/training_cross2.ref,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -b -r1.8 -r1.9
Index: test/training_explosive_variant.ref
===================================================================
RCS file: /cvsroot/eliot/eliot/test/training_explosive_variant.ref,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -b -r1.2 -r1.3
Index: test/training_joker.ref
===================================================================
RCS file: /cvsroot/eliot/eliot/test/training_joker.ref,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -b -r1.2 -r1.3
Index: test/training_joker2.ref
===================================================================
RCS file: /cvsroot/eliot/eliot/test/training_joker2.ref,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -b -r1.8 -r1.9
Index: test/training_joker_variant.ref
===================================================================
RCS file: /cvsroot/eliot/eliot/test/training_joker_variant.ref,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
Index: test/training_navigation.ref
===================================================================
RCS file: /cvsroot/eliot/eliot/test/training_navigation.ref,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
Index: test/training_play.ref
===================================================================
RCS file: /cvsroot/eliot/eliot/test/training_play.ref,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -b -r1.10 -r1.11
Index: test/training_rosace.ref
===================================================================
RCS file: /cvsroot/eliot/eliot/test/training_rosace.ref,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -b -r1.7 -r1.8
Index: utils/game_io.cpp
===================================================================
RCS file: /cvsroot/eliot/eliot/utils/game_io.cpp,v
retrieving revision 1.18
retrieving revision 1.19
diff -u -b -r1.18 -r1.19
--- utils/game_io.cpp 23 Jun 2009 13:21:20 -0000 1.18
+++ utils/game_io.cpp 23 Jun 2009 21:36:33 -0000 1.19
@@ -51,9 +51,9 @@
for (col = BOARD_MIN; col <= BOARD_MAX; col++)
{
if (iGame.getBoard().isVacant(row, col))
- out << " -";
+ out << " - ";
else
- out << padAndConvert(iGame.getBoard().getDisplayStr(row, col),
3);
+ out << centerAndConvert(iGame.getBoard().getDisplayStr(row,
col), 3);
}
out << endl;
}
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Eliot-dev] eliot dic/encoding.cpp dic/encoding.h test/dupl...,
Olivier Teulière <=