|
|
| version 1.1, 2005/03/19 18:54:57 | version 1.2, 2005/04/01 15:35:48 |
|---|---|
| Line 3 | Line 3 |
| #include "textcnv.h" | #include "textcnv.h" |
| BRESULT textcnv_tooem(UINT code, TCTOOEM *tcto) { | UINT textcnv_getinfo(TCINF *inf, const UINT8 *hdr, UINT hdrsize) { |
| TCTOOEM fn; | UINT textcode; |
| TCINF info; | |
| textcode = TEXTCNV_DEFAULT; | |
| ZeroMemory(&info, sizeof(info)); | |
| if ((hdrsize >= 3) && | |
| (hdr[0] == 0xef) && (hdr[1] == 0xbb) && (hdr[2] == 0xbf)) { | |
| // UTF-8 | |
| textcode = TEXTCNV_UTF8; | |
| info.width = 1; | |
| info.hdrsize = 3; | |
| } | |
| else if ((hdrsize >= 2) && (hdr[0] == 0xff) && (hdr[1] == 0xfe)) { | |
| // UCSLE | |
| textcode = TEXTCNV_UCS2; | |
| #if defined(BYTESEX_BIG) | |
| info.xendian = 1; | |
| #endif | |
| info.width = 2; | |
| info.hdrsize = 2; | |
| } | |
| else if ((hdrsize >= 2) && (hdr[0] == 0xfe) && (hdr[1] == 0xff)) { | |
| // UCS2BE | |
| // UCSLE | |
| textcode = TEXTCNV_UCS2; | |
| #if defined(BYTESEX_LITTLE) | |
| info.xendian = 1; | |
| #endif | |
| info.width = 2; | |
| info.hdrsize = 2; | |
| } | |
| else { | |
| info.width = 1; | |
| } | |
| fn = NULL; | |
| #if defined(OSLANG_SJIS) | #if defined(OSLANG_SJIS) |
| switch(code) { | switch(textcode) { |
| case TEXTCNV_DEFAULT: | case TEXTCNV_DEFAULT: |
| case TEXTCNV_SJIS: | case TEXTCNV_SJIS: |
| info.caps = TEXTCNV_READ | TEXTCNV_WRITE; | |
| break; | break; |
| default: | |
| return(FAILURE); | |
| } | } |
| #elif defined(OSLANG_EUC) | #elif defined(OSLANG_EUC) |
| switch(code) { | switch(textcode) { |
| case TEXTCNV_DEFAULT: | case TEXTCNV_DEFAULT: |
| case TEXTCNV_EUC: | case TEXTCNV_EUC: |
| info.caps = TEXTCNV_READ | TEXTCNV_WRITE; | |
| break; | break; |
| default: | |
| return(FAILURE); | |
| } | } |
| #elif defined(OSLANG_UTF8) | #elif defined(OSLANG_UTF8) |
| switch(code) { | switch(textcode) { |
| case TEXTCNV_UTF8: | case TEXTCNV_UTF8: |
| info.caps = TEXTCNV_READ | TEXTCNV_WRITE; | |
| break; | break; |
| case TEXTCNV_UCS2: | case TEXTCNV_UCS2: |
| fn = (TCTOOEM)codecnv_ucs2toutf8; | info.caps = TEXTCNV_READ | TEXTCNV_WRITE; |
| info.tooem = (TCTOOEM)codecnv_ucs2toutf8; | |
| info.fromoem = (TCFROMOEM)codecnv_utf8toucs2; | |
| break; | break; |
| default: | |
| return(FAILURE); | |
| } | } |
| #elif defined(OSLANG_UCS2) | #elif defined(OSLANG_UCS2) |
| switch(code) { | switch(textcode) { |
| case TEXTCNV_UTF8: | case TEXTCNV_UTF8: |
| fn = (TCTOOEM)codecnv_utf8toucs2; | info.caps = TEXTCNV_READ | TEXTCNV_WRITE; |
| info.tooem = (TCTOOEM)codecnv_utf8toucs2; | |
| info.fromoem = (TCFROMOEM)codecnv_ucs2toutf8; | |
| break; | break; |
| case TEXTCNV_UCS2: | case TEXTCNV_UCS2: |
| info.caps = TEXTCNV_READ | TEXTCNV_WRITE; | |
| break; | break; |
| default: | |
| return(FAILURE); | |
| } | } |
| #else | #else // defined(OSLANG_*) |
| switch(code) { | switch(textcode) { |
| case TEXTCNV_DEFAULT: | case TEXTCNV_DEFAULT: |
| info.caps = TEXTCNV_READ | TEXTCNV_WRITE; | |
| break; | break; |
| default: | |
| return(FAILURE); | |
| } | } |
| #endif | #endif // defined(OSLANG_*) |
| if (tcto) { | if (inf) { |
| *tcto = fn; | *inf = info; |
| } | } |
| return(SUCCESS); | return(info.caps); |
| } | |
| BRESULT textcnv_fromoem(UINT code, TCFROMOEM *tcfo) { | |
| return(FAILURE); | |
| } | } |