mirror of
https://github.com/ondra-novak/gates_of_skeldal.git
synced 2025-07-05 14:10:27 -04:00
84 lines
No EOL
1.4 KiB
C++
84 lines
No EOL
1.4 KiB
C++
#include <string.h>
|
||
|
||
struct czxlat
|
||
{
|
||
unsigned char kamenik;
|
||
unsigned char windows;
|
||
};
|
||
|
||
|
||
static czxlat czxlattab[]=
|
||
{
|
||
{0xA0,'á'},
|
||
{0x87,'è'},
|
||
{0x83,'ï'},
|
||
{0x82,'é'},
|
||
{0x88,'ì'},
|
||
{0xA1,'í'},
|
||
{0x8D,'å'},
|
||
{0x8C,'¾'},
|
||
{0xA4,'ò'},
|
||
{0xA2,'ó'},
|
||
{0xAA,'à'},
|
||
{0xA9,'ø'},
|
||
{0xA8,'š'},
|
||
{0x9f,'<EFBFBD>'},
|
||
{0xA3,'ú'},
|
||
{0x96,'ù'},
|
||
{0x98,'ý'},
|
||
{0x91,'ž'},
|
||
|
||
{0x8F,'Á'},
|
||
{0x80,'È'},
|
||
{0x85,'Ï'},
|
||
{0x90,'É'},
|
||
{0x89,'Ì'},
|
||
{0x8B,'Í'},
|
||
{0x8A,'Å'},
|
||
{0x9C,'¼'},
|
||
{0xA5,'Ò'},
|
||
{0x95,'Ó'},
|
||
{0xAB,'À'},
|
||
{0x9E,'Ø'},
|
||
{0x9B,'Š'},
|
||
{0x86,'<EFBFBD>'},
|
||
{0x97,'Ú'},
|
||
{0xA6,'Ù'},
|
||
{0x9D,'Ý'},
|
||
{0x92,'Ž'},
|
||
};
|
||
|
||
static char xlatkm2win[256];
|
||
static char xlatwin2km[256];
|
||
static char prepare=1;
|
||
|
||
static void PrepareTabs()
|
||
{
|
||
int i;
|
||
for (i=0;i<256;i++) {xlatkm2win[i]=i;xlatwin2km[i]=i;}
|
||
for (i=0;i<sizeof(czxlattab)/sizeof(czxlattab[0]);i++)
|
||
{
|
||
xlatkm2win[czxlattab[i].kamenik]=czxlattab[i].windows;
|
||
xlatwin2km[czxlattab[i].windows]=czxlattab[i].kamenik;
|
||
}
|
||
prepare=0;
|
||
}
|
||
|
||
extern "C"
|
||
{
|
||
|
||
void windows2kamenik(const char *src, int size, char *trg)
|
||
{
|
||
if (prepare) PrepareTabs();
|
||
if (size<0) size=strlen(src)+1;
|
||
for (int i=0;i<size;i++) *trg++=xlatwin2km[(unsigned char)*src++];
|
||
}
|
||
|
||
void kamenik2windows(const char *src, int size, char *trg)
|
||
{
|
||
if (prepare) PrepareTabs();
|
||
if (size<0) size=strlen(src)+1;
|
||
for (int i=0;i<size;i++) *trg++=xlatkm2win[(unsigned char)*src++];
|
||
}
|
||
|
||
} |