sync with sylpheed 0.6.1cvs2
[claws.git] / libkcc / jis.c
1 #include "libkcc.h"
2
3 extern enum mode outmode;
4 extern char shiftout[], shiftin[];
5 extern bool nogaiji;
6 /*---------------------------------------------------------------------
7     NAME
8         jisascii
9  ---------------------------------------------------------------------*/
10 void Kcc_jisascii(ddd, c)
11     register int c;
12     char **ddd;
13 {
14   int i;
15
16     switch (outmode) {
17     case M_ASCII:
18         break;
19     case M_SO:
20         **ddd = SI; (*ddd)++;
21         outmode = M_ASCII;
22         break;
23     default:
24         for (i=0; i< strlen(shiftout); i++) { **ddd = shiftout[i]; (*ddd)++; }
25         outmode = M_ASCII;
26         break;
27     }
28     **ddd = c; (*ddd)++;
29 }
30
31 /*---------------------------------------------------------------------
32     NAME
33         jisgaiji
34  ---------------------------------------------------------------------*/
35 void Kcc_jisgaiji(ddd, c1, c2)
36     register int c1, c2;
37     char **ddd;
38 {
39
40     if (nogaiji)
41         Kcc_jiskanji(ddd, ZENPAD >> 8, ZENPAD & 0xff);
42     else {
43         if (outmode != M_GAIJI) {
44           if (outmode == M_SO)  { **ddd = SI; (*ddd)++; }
45           **ddd = '\033'; (*ddd)++;
46           **ddd = '$'; (*ddd)++;
47           **ddd = '('; (*ddd)++;
48           **ddd = 'D'; (*ddd)++;
49           outmode = M_GAIJI;
50         }
51         **ddd = c1;
52         **ddd = c2;
53     }
54 }
55
56 /*---------------------------------------------------------------------
57     NAME
58         jiskana
59  ---------------------------------------------------------------------*/
60 void Kcc_jiskana(ddd, c)
61     register int c;
62     char **ddd;
63 {
64   int i;
65
66     if (outmode != M_SO) {
67       if (outmode != M_ASCII) {
68         for (i=0; i< strlen(shiftout); i++) {**ddd = shiftout[i]; (*ddd)++; }
69       }
70       **ddd = SO; (*ddd)++;
71       outmode = M_SO;
72     }
73     **ddd = !nogaiji || (0x20 < c && c < 0x60) ? c : HANPAD; (*ddd)++;
74 }
75
76 /*---------------------------------------------------------------------
77     NAME
78         jiskana8
79  ---------------------------------------------------------------------*/
80 void Kcc_jiskana8(ddd, c)
81     register int c;
82     char **ddd;
83 {
84   int i;
85
86     if (outmode != M_ASCII) {
87         for (i=0; i< strlen(shiftout); i++) {**ddd = shiftout[i]; (*ddd)++; }
88         outmode = M_ASCII;
89     }
90     **ddd = (!nogaiji || (0x20 < c && c < 0x60) ? c : HANPAD) | 0x80; (*ddd)++;
91 }
92
93 /*---------------------------------------------------------------------
94     NAME
95         jiskanak
96  ---------------------------------------------------------------------*/
97 void Kcc_jiskanak(ddd, c)
98     register int c;
99     char **ddd;
100 {
101
102     if (outmode != M_ESCI) {
103         **ddd = '\033'; (*ddd)++;
104         **ddd = '('; (*ddd)++;
105         **ddd = 'I'; (*ddd)++;
106         outmode = M_ESCI;
107     }
108     **ddd = !nogaiji || (0x20 < c && c < 0x60) ? c : HANPAD; (*ddd)++;
109 }
110
111 /*---------------------------------------------------------------------
112     NAME
113         jiskanji
114  ---------------------------------------------------------------------*/
115 void Kcc_jiskanji(ddd, c1, c2)
116     register int c1, c2;
117     char **ddd;
118 {
119   int i;
120
121     if (outmode != M_KANJI) {
122         if (outmode == M_SO)
123           { **ddd = SI; (*ddd)++; }
124         for (i=0; i< strlen(shiftin); i++) {**ddd = shiftin[i]; (*ddd)++; }
125         outmode = M_KANJI;
126     }
127     **ddd = c1; (*ddd)++;
128     **ddd = c2; (*ddd)++;
129 }
130