gates_of_skeldal/cztable.cpp
2025-01-24 18:27:22 +01:00

84 lines
No EOL
1.4 KiB
C++
Raw Blame History

#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++];
}
}