|
From: <dv...@us...> - 2008-05-27 16:35:57
|
Revision: 275
http://dunelegacy.svn.sourceforge.net/dunelegacy/?rev=275&view=rev
Author: dvalin
Date: 2008-05-27 09:34:45 -0700 (Tue, 27 May 2008)
Log Message:
-----------
renamed to Stringfile.cpp
Removed Paths:
-------------
branches/dunks/src/pakfile/StringFile.cpp
Deleted: branches/dunks/src/pakfile/StringFile.cpp
===================================================================
--- branches/dunks/src/pakfile/StringFile.cpp 2008-05-04 19:26:33 UTC (rev 274)
+++ branches/dunks/src/pakfile/StringFile.cpp 2008-05-27 16:34:45 UTC (rev 275)
@@ -1,261 +0,0 @@
-#include "pakfile/StringFile.h"
-#include "ResMan.h"
-#include <SDL_endian.h>
-#include <SDL.h>
-#include <SDL_rwops.h>
-#include <iostream>
-#include <string>
-
-StringFile::StringFile(std::string stringFileName) {
- int bufsize;
- unsigned char* bufFiledata = ResMan::Instance()->readFile(stringFileName.c_str(), &bufsize);
- Uint16* index;
- SDL_RWops* RWop = SDL_RWFromMem(bufFiledata, bufsize);
-
- if(RWop == NULL) {
- fprintf(stderr, "StringFile: RWop == NULL!\n");
- exit(EXIT_FAILURE);
- }
-
- if(bufsize <= 0) {
- fprintf(stderr,"StringFile: Cannot determine size!\n");
- exit(EXIT_FAILURE);
- }
-
- if(bufsize < 2) {
- fprintf(stderr, "StringFile: Invalid string file: File too small!\n");
- exit(EXIT_FAILURE);
- }
-
- if(SDL_RWseek(RWop,0,SEEK_SET) != 0) {
- fprintf(stderr,"StringFile: Seeking string file failed!\n");
- exit(EXIT_FAILURE);
- }
-
- if( (bufFiledata = (unsigned char*) malloc(bufsize)) == NULL) {
- fprintf(stderr,"StringFile: Allocating memory failed!\n");
- exit(EXIT_FAILURE);
- }
-
- if(SDL_RWread(RWop, bufFiledata, bufsize, 1) != 1) {
- fprintf(stderr,"StringFile: Reading string file failed!\n");
- exit(EXIT_FAILURE);
- }
-
- numStrings = ((int)SDL_SwapLE16(((Uint16*) bufFiledata)[0]))/2 - 1;
- index = (Uint16*) bufFiledata;
- for(int i=0; i <= numStrings; i++) {
- index[i] = SDL_SwapLE16(index[i]);
- }
-
- stringArray = new std::string[numStrings];
-
- for(int i=0; i < numStrings;i++) {
- std::string tmp = (const char*) (bufFiledata+index[i]);
- stringArray[i] = decodeString(tmp);
- }
-
- free(bufFiledata);
- SDL_RWclose(RWop);
-}
-
-StringFile::~StringFile() {
- delete [] stringArray;
-}
-
-/// This methode decodes a string to ANSI Code
-/**
- The parameter text is decoded to ANSI Code and returned
- \param text Text to decode
- \return The decoded text
-*/
-std::string StringFile::decodeString(std::string text) {
- std::string out = "";
- unsigned char databyte;
-
- for(unsigned int i = 0; i < text.length(); i++) {
- databyte = text[i];
-
- switch(databyte) {
- case 0x00: break;
- case 0x0C: out += "\n"; break;
- case 0x0D: out += "\n"; break;
-
- case 0x80: out += " t"; break;
- case 0x81: out += " a"; break;
- case 0x82: out += " s"; break;
- case 0x83: out += " i"; break;
- case 0x84: out += " o"; break;
- case 0x85: out += " "; break; // maybe something else
- case 0x86: out += " w"; break;
- case 0x87: out += " b"; break;
- case 0x88: out += "e "; break;
- case 0x89: out += "er"; break;
- case 0x8A: out += "en"; break;
- case 0x8B: out += "es"; break;
- case 0x8C: out += "ed"; break;
- case 0x8D: out += "ea"; break;
- case 0x8E: out += "el"; break;
- case 0x8F: out += "em"; break;
-
- case 0x90: out += "th"; break;
- case 0x91: out += "t "; break;
- case 0x92: out += "ti"; break;
- case 0x93: out += "te"; break;
- case 0x94: out += "to"; break;
- case 0x95: out += "tr"; break;
- case 0x96: out += "ta"; break;
- case 0x97: out += "ts"; break;
- case 0x98: out += "an"; break;
- case 0x99: out += "ar"; break;
- case 0x9A: out += "at"; break;
- case 0x9B: out += "al"; break;
- case 0x9C: out += "ac"; break;
- case 0x9D: out += "a "; break;
- case 0x9E: out += "as"; break;
- case 0x9F: out += "ay"; break;
-
- case 0xA0: out += "in"; break;
- case 0xA1: out += "is"; break;
- case 0xA2: out += "it"; break;
- case 0xA3: out += "ic"; break;
- case 0xA4: out += "il"; break;
- case 0xA5: out += "io"; break;
- case 0xA6: out += "ie"; break;
- case 0xA7: out += "ir"; break;
- case 0xA8: out += "n "; break;
- case 0xA9: out += "nd"; break;
- case 0xAA: out += "nt"; break;
- case 0xAB: out += "ng"; break;
- case 0xAC: out += "ne"; break;
- case 0xAD: out += "ns"; break;
- case 0xAE: out += "ni"; break;
- case 0xAF: out += "no"; break;
-
- case 0xB0: out += "on"; break;
- case 0xB1: out += "or"; break;
- case 0xB2: out += "o "; break;
- case 0xB3: out += "ou"; break;
- case 0xB4: out += "of"; break;
- case 0xB5: out += "om"; break;
- case 0xB6: out += "os"; break;
- case 0xB7: out += "ow"; break;
- case 0xB8: out += "s "; break;
- case 0xB9: out += "st"; break;
- case 0xBA: out += "se"; break;
- case 0xBB: out += "sp"; break;
- case 0xBC: out += "s."; break;
- case 0xBD: out += "si"; break;
- case 0xBE: out += "sc"; break;
- case 0xBF: out += "sa"; break;
-
- case 0xC0: out += "re"; break;
- case 0xC1: out += "r "; break;
- case 0xC2: out += "ro"; break;
- case 0xC3: out += "ri"; break;
- case 0xC4: out += "ra"; break;
- case 0xC5: out += "rd"; break;
- case 0xC6: out += "ru"; break;
- case 0xC7: out += "rr"; break;
- case 0xC8: out += "l "; break;
- case 0xC9: out += "ll"; break;
- case 0xCA: out += "la"; break;
- case 0xCB: out += "le"; break;
- case 0xCC: out += "li"; break;
- case 0xCD: out += "le"; break;
- case 0xCE: out += "lo"; break;
- case 0xCF: out += "ld"; break;
-
- case 0xD0: out += "he"; break;
- case 0xD1: out += "hi"; break;
- case 0xD2: out += "ha"; break;
- case 0xD3: out += "h "; break;
- case 0xD4: out += "ho"; break;
- case 0xD5: out += "ht"; break;
- case 0xD6: out += "hr"; break;
- case 0xD7: out += "hu"; break;
- case 0xD8: out += "ce"; break;
- case 0xD9: out += "ct"; break;
- case 0xDA: out += "co"; break;
- case 0xDB: out += "ca"; break;
- case 0xDC: out += "ck"; break;
- case 0xDD: out += "ch"; break;
- case 0xDE: out += "cl"; break;
- case 0xDF: out += "cr"; break;
-
- case 0xE0: out += "d "; break;
- case 0xE1: out += "de"; break;
- case 0xE2: out += "di"; break;
- case 0xE3: out += "du"; break;
- case 0xE4: out += "d,"; break;
- case 0xE5: out += "d."; break;
- case 0xE6: out += "do"; break;
- case 0xE7: out += "da"; break;
- case 0xE8: out += "un"; break;
- case 0xE9: out += "us"; break;
- case 0xEA: out += "ur"; break;
- case 0xEB: out += "uc"; break;
- case 0xEC: out += "ut"; break;
- case 0xED: out += "ul"; break;
- case 0xEE: out += "ua"; break;
- case 0xEF: out += "ui"; break;
-
- case 0xF0: out += "pl"; break;
- case 0xF1: out += "pe"; break;
- case 0xF2: out += "po"; break;
- case 0xF3: out += "pi"; break;
- case 0xF4: out += "pr"; break;
- case 0xF5: out += "pa"; break;
- case 0xF6: out += "pt"; break;
- case 0xF7: out += "pp"; break;
- case 0xF8: out += "me"; break;
- case 0xF9: out += "ma"; break;
- case 0xFA: out += "mo"; break;
- case 0xFB: out += "mi"; break;
- case 0xFC: out += "mp"; break;
- case 0xFD: out += "m "; break;
- case 0xFE: out += "mb"; break;
- case 0xFF: out += "mm"; break;
-
- case 0x1B: {
- // special character
- i++;
- if(i == text.length()) {
- fprintf(stderr,"StringFile:decodeString: Special character escape sequence at end of string!\n");
- exit(EXIT_FAILURE);
- }
-
- unsigned char special = text[i];
- switch(special) {
- // e.g. german "umlaute"
- case 0x02: out += (unsigned char) 252 /*"ue"*/; break;
- case 0x05: out += (unsigned char) 228 /*"ae"*/; break;
- case 0x0F: out += (unsigned char) 197 /*"Ae"*/; break;
- case 0x15: out += (unsigned char) 246 /*"oe"*/; break;
- case 0x1B: out += (unsigned char) 220 /*"Ue"*/; break;
- case 0x62: out += (unsigned char) 223 /*"ss"*/; break;
- default: {
- char tmp[20];
- sprintf(tmp,"---Unknown char:%X---",special);
- out += tmp;
- } break;
- };
-
- } break;
-
- case 0x1F: out += "."; break;
-
- default: {
- if((databyte & 0x80) == 0x80) {
- char tmp[20];
- sprintf(tmp,"---Unknown char:%X---",databyte);
- out += tmp;
- } else {
- out += databyte;
- }
- } break;
- }
- }
-
- return out;
-}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|