sync with sylpheed 0.7.0cvs22
[claws.git] / libkcc / sjis.c
1 #include "libkcc.h"
2
3 void Kcc_sjiskanji(char **ddd, register int c1, register int c2);
4
5 extern bool nogaiji;
6
7 /*---------------------------------------------------------------------
8     NAME
9         sjisgaiji
10     DESCRIPTION
11         Characters are mapped as follows:
12             0x2121 to 0x3a7e --> 0xf040 to 0xfcfc
13             0x3b21 to 0x7e7e --> 0xfcfc
14  ---------------------------------------------------------------------*/
15 void Kcc_sjisgaiji(ddd, c1, c2)
16     register int c1, c2;
17     char **ddd;
18 {
19     if (nogaiji)
20         Kcc_sjiskanji(ddd, ZENPAD >> 8, ZENPAD & 0xff);
21     else {
22       **ddd = c1 < 0x3b ? ((c1 - 1) >> 1) + 0xe0 : 0xfc; (*ddd)++;
23       **ddd = c1 < 0x3b ? c2 +
24                 (c1 & 1 ? (c2 < 0x60 ? 0x1f : 0x20) : 0x7e) : 0xfc; (*ddd)++;
25     }
26 }
27
28 /*---------------------------------------------------------------------
29     NAME
30         sjiskana
31  ---------------------------------------------------------------------*/
32 void Kcc_sjiskana(ddd, c)
33     register int c;
34     char **ddd;
35 {
36     **ddd = 0x20 < c && c < 0x60 ? c | 0x80 : HANPAD | 0x80; (*ddd)++;
37 }
38
39 /*---------------------------------------------------------------------
40     NAME
41         sjiskanji
42  ---------------------------------------------------------------------*/
43 void Kcc_sjiskanji(ddd, c1, c2)
44     register int c1, c2;
45     char **ddd;
46 {
47     **ddd = ((c1 - 1) >> 1) + (c1 <= 0x5e ? 0x71 : 0xb1); (*ddd)++;
48     **ddd = c2 + (c1 & 1 ? (c2 < 0x60 ? 0x1f : 0x20) : 0x7e); (*ddd)++;
49 }
50