1 /*
2  * $Id: chkpsset.c,v 1.2 2001/06/14 18:16:11 ura Exp $
3  */
4 
5 /*
6  * FreeWnn is a network-extensible Kana-to-Kanji conversion system.
7  * This file is part of FreeWnn.
8  *
9  * Copyright OMRON Corporation. 1987, 1988, 1989, 1990, 1991, 1992, 1999
10  *
11  * Author: OMRON SOFTWARE Co., Ltd. <freewnn@rd.kyoto.omronsoft.co.jp>
12  *
13  * This program is free software; you can redistribute it and/or modify
14  * it under the terms of the GNU General Public License as published by
15  * the Free Software Foundation; either version 2, or (at your option)
16  * any later version.
17  *
18  * This program is distributed in the hope that it will be useful,
19  * but WITHOUT ANY WARRANTY; without even the implied warranty of
20  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
21  * GNU General Public License for more details.
22  *
23  * You should have received a copy of the GNU General Public License
24  * along with GNU Emacs; see the file COPYING.  If not, write to the
25  * Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
26  *
27  * Commentary:
28  *
29  * Change log:
30  *
31  * Last modified date: 8,Feb.1999
32  *
33  * Code:
34  *
35  */
36 
37 /*
38  * X11R5 Input Method Test Program
39  * chkpsset.c v 1.0   Wed Mar 13 11:16:00 JST 1991
40  */
41 
42 /*
43  *      Author: Takashi Inoue    OMRON Corporation
44  *                               takashi@ari.ncl.omron.co.jp
45  */
46 
47 #include <stdio.h>
48 
49 #include "exvalue.h"
50 #include "func.h"
51 
52 /* *INDENT-OFF* */
53 FLAG
sarea(ic,mode)54 sarea (ic, mode)           /* Set AREA */
55      XIC  ic;
56      FLAG mode;
57 /* *INDENT-ON* */
58 {
59   XRectangle *gparea, *gsarea;
60   VALUABLE *area[CHKAREA];
61   XVaNestedList spe_nelist, sst_nelist;
62   XVaNestedList gpe_nelist, gst_nelist;
63   int cnt, sum;
64 
65   if ((mode == ONSP) || (mode == ROOTW))
66     {
67       prerrfunc ();
68       return (COMP);
69     }
70   else
71     {
72       cls (prdisp);             /* clear screen */
73       /* create nestedlist for set values */
74       prstatus ("Creating NestedList for set values \"Area\"...");
75       if (usta.area.width == ST_WIDTH)
76         {
77           usta.area.width += WIN_ITV;
78         }
79       else
80         {
81           usta.area.width -= WIN_ITV;
82         }
83       if (mode == OVERSP)
84         {
85           upea.area.width = (upea.area.width == WPOVER1) ? WPOVER2 : WPOVER1;
86         }
87       else if (mode == OFFSP)
88         {
89           upea.area.x = usta.area.width + 2 * WIN_ITV;
90         }
91       spe_nelist = XVaCreateNestedList (DUMMY, XNArea, &upea.area, NULL);
92       sst_nelist = XVaCreateNestedList (DUMMY, XNArea, &usta.area, NULL);
93       prstatus ("done.");
94       /* test of XSetICValues */
95       prstatus ("Test of XSetICValues() for change \"Area\"...");
96       XSetICValues (ic, XNPreeditAttributes, spe_nelist, XNStatusAttributes, sst_nelist, NULL);
97       prstatus ("done.");
98       /* create nestedlist for get values */
99       prstatus ("Creating NestedList for get values \"Area\" ...");
100       gpe_nelist = XVaCreateNestedList (DUMMY, XNArea, &gparea, NULL);
101       gst_nelist = XVaCreateNestedList (DUMMY, XNArea, &gsarea, NULL);
102       prstatus ("done.");
103       /* test of XGetICValues */
104       prstatus ("Test of XGetICValues() \"Area\"...");
105       XGetICValues (ic, XNPreeditAttributes, gpe_nelist, XNStatusAttributes, gst_nelist, NULL);
106       prstatus ("done.");
107       /* verify values */
108       sum = 0;
109       area[0] = mkstruct (PAX, DEC, upea.area.x, gparea->x);
110       area[1] = mkstruct (PAY, DEC, upea.area.y, gparea->y);
111       area[2] = mkstruct (PAW, DEC, upea.area.width, gparea->width);
112       area[3] = mkstruct (PAH, DEC, upea.area.height, gparea->height);
113       area[4] = mkstruct (SAX, DEC, usta.area.x, gsarea->x);
114       area[5] = mkstruct (SAY, DEC, usta.area.y, gsarea->y);
115       area[6] = mkstruct (SAW, DEC, usta.area.width, gsarea->width);
116       area[7] = mkstruct (SAH, DEC, usta.area.height, gsarea->height);
117       for (cnt = 0; cnt < CHKAREA; cnt++)
118         {
119           sum += verval (area[cnt]);
120         }
121       /* output of results */
122       cls (prdisp);
123       prveres (sum);
124       if (sum != NOERR)
125         {
126           prprint ("Test of XSetICValues() \"Preedit/Status Area\" is failed.\n");
127           prprint ("Preedit/Status Area has not changed.\n\n");
128           prprint ("I will destroy IC and continue test.\n");
129           prprint ("Check log file after this test.\n\n");
130           fprintf (icfp, "...Test of XSetICValues() \"Preedit/Status Area\" is failed.\n\n");
131           XFree ((char *) spe_nelist);
132           XFree ((char *) sst_nelist);
133           XFree ((char *) gpe_nelist);
134           XFree ((char *) gst_nelist);
135           XFree ((XRectangle *) gparea);
136           XFree ((XRectangle *) gsarea);
137           prpng ();
138           return (DIC);
139         }
140       prprint ("Test of XSetICValues() \"Preedit/Status Area\" is succeeded.\n");
141       prprint ("Preedit/Status Area has changed.\n\n");
142       prprint ("Check on your own eyes and move next test.\n");
143       fprintf (icfp, "...Test of XSetICValues() \"Preedit/Status Area\" is succeeded.\n\n");
144       XFree ((char *) spe_nelist);
145       XFree ((char *) sst_nelist);
146       XFree ((char *) gpe_nelist);
147       XFree ((char *) gst_nelist);
148       XFree ((XRectangle *) gparea);
149       XFree ((XRectangle *) gsarea);
150       prpok ();
151       return (COMP);
152     }
153 }
154 
155 /* *INDENT-OFF* */
156 FLAG
sneeded(ic,mode)157 sneeded (ic, mode)         /* Set areaNEEDED */
158      XIC  ic;
159      FLAG mode;
160 /* *INDENT-ON* */
161 
162 {
163   XRectangle *gpneeded, *gsneeded;
164   XRectangle wparea, wsarea, *gparea, *gsarea;
165   VALUABLE *needed[CHKNEEDED];
166   VALUABLE *area[CHKAREA];
167   XVaNestedList spe_nelist, sst_nelist;
168   XVaNestedList gpe_nelist, gst_nelist;
169   int cnt, sum;
170 
171   if (mode != OFFSP)
172     {
173       prerrfunc ();
174       return (COMP);
175     }
176   else
177     {
178       cls (prdisp);             /* clear screen */
179       /* create nestedlist for set values */
180       prstatus ("Creating NestedList for set values \"AreaNeeded\"...");
181       upea.needed.width = 100;
182       upea.needed.height = 100;
183       usta.needed.width = 100;
184       usta.needed.height = 100;
185       spe_nelist = XVaCreateNestedList (DUMMY, XNAreaNeeded, &upea.needed, NULL);
186       sst_nelist = XVaCreateNestedList (DUMMY, XNAreaNeeded, &upea.needed, NULL);
187       prstatus ("done.");
188       /* test of XSetICValues */
189       prstatus ("Test of XSetICValues() for change \"AreaNeeded\"...");
190       XSetICValues (ic, XNPreeditAttributes, spe_nelist, XNStatusAttributes, sst_nelist, NULL);
191       prstatus ("done.");
192       /* create nestedlist for get values */
193       prstatus ("Creating NestedList for get values \"AreaNeeded\" ...");
194       gpe_nelist = XVaCreateNestedList (DUMMY, XNAreaNeeded, &gpneeded, NULL);
195       gst_nelist = XVaCreateNestedList (DUMMY, XNAreaNeeded, &gsneeded, NULL);
196       prstatus ("done.");
197       /* test of XGetICValues */
198       prstatus ("Test of XGetICValues() \"AreaNeeded\"...");
199       XGetICValues (ic, XNPreeditAttributes, gpe_nelist, XNStatusAttributes, gst_nelist, NULL);
200       prstatus ("done.");
201       /* verify values */
202       needed[0] = mkstruct (PNW, DEC, upea.needed.width, gpneeded->width);
203       needed[1] = mkstruct (PNH, DEC, upea.needed.height, gpneeded->height);
204       needed[2] = mkstruct (SNW, DEC, usta.needed.width, gsneeded->width);
205       needed[3] = mkstruct (SNH, DEC, usta.needed.height, gsneeded->height);
206       for (cnt = 0; cnt < CHKNEEDED; cnt++)
207         {
208           verval (needed[cnt]);
209         }
210       wparea = upea.area;
211       wsarea = usta.area;
212       upea.area.width = gpneeded->width;
213       upea.area.height = gpneeded->height;
214       usta.area.width = gsneeded->width;
215       usta.area.height = gsneeded->height;
216       spe_nelist = XVaCreateNestedList (DUMMY, XNArea, &upea.area, NULL);
217       sst_nelist = XVaCreateNestedList (DUMMY, XNArea, &usta.area, NULL);
218       prstatus ("done.");
219       /* test of XSetICValues */
220       prstatus ("Test of XSetICValues() for change \"Area\"...");
221       XSetICValues (ic, XNPreeditAttributes, spe_nelist, XNStatusAttributes, sst_nelist, NULL);
222       prstatus ("done.");
223       /* create nestedlist for get values */
224       prstatus ("Creating NestedList for get values \"Area\" ...");
225       gpe_nelist = XVaCreateNestedList (DUMMY, XNArea, &gparea, NULL);
226       gst_nelist = XVaCreateNestedList (DUMMY, XNArea, &gsarea, NULL);
227       prstatus ("done.");
228       /* test of XGetICValues */
229       prstatus ("Test of XGetICValues() \"Area\"...");
230       XGetICValues (ic, XNPreeditAttributes, gpe_nelist, XNStatusAttributes, gst_nelist, NULL);
231       prstatus ("done.");
232       /* verify values */
233       sum = 0;
234       area[0] = mkstruct (PAX, DEC, upea.area.x, gparea->x);
235       area[1] = mkstruct (PAY, DEC, upea.area.y, gparea->y);
236       area[2] = mkstruct (PAW, DEC, upea.area.width, gparea->width);
237       area[3] = mkstruct (PAH, DEC, upea.area.height, gparea->height);
238       area[4] = mkstruct (SAX, DEC, usta.area.x, gsarea->x);
239       area[5] = mkstruct (SAY, DEC, usta.area.y, gsarea->y);
240       area[6] = mkstruct (SAW, DEC, usta.area.width, gsarea->width);
241       area[7] = mkstruct (SAH, DEC, usta.area.height, gsarea->height);
242       for (cnt = 0; cnt < CHKAREA; cnt++)
243         {
244           sum += verval (area[cnt]);
245         }
246       /* output of results */
247       cls (prdisp);
248       prveres (sum);
249       if (sum != NOERR)
250         {
251           prprint ("Test of XSetICValues() \"Preedit/Status AreaNeeded\" is failed.\n");
252           prprint ("Preedit/Status Area has not changed, ");
253           prprint ("but I will continue test.\n\n");
254           prprint ("Check log file after this test.\n\n");
255           fprintf (icfp, "...Test of XSetICValues() \"Preedit/Status AreaNeeded\" is failed.\n\n");
256         }
257       else
258         {
259           prprint ("Test of XSetICValues() \"Preedit/Status AreaNeeded\" is succeeded.\n");
260           prprint ("Preedit/Status Area has changed.\n\n");
261           prprint ("Check on your own eyes and move next test.\n");
262           prprint ("Check log file after this test.\n\n");
263           fprintf (icfp, "...Test of XSetICValues() \"Preedit/Status AreaNeeded\" is succeeded.\n\n");
264         }
265       upea.area = wparea;
266       usta.area = wsarea;
267       spe_nelist = XVaCreateNestedList (DUMMY, XNArea, &upea.area, NULL);
268       sst_nelist = XVaCreateNestedList (DUMMY, XNArea, &usta.area, NULL);
269       prstatus ("done.");
270       /* test of XSetICValues */
271       prstatus ("Test of XSetICValues() for change \"Area\"...");
272       XSetICValues (ic, XNPreeditAttributes, spe_nelist, XNStatusAttributes, sst_nelist, NULL);
273       prstatus ("done.");
274       XFree ((char *) spe_nelist);
275       XFree ((char *) sst_nelist);
276       XFree ((char *) gpe_nelist);
277       XFree ((char *) gst_nelist);
278       XFree ((XRectangle *) gparea);
279       XFree ((XRectangle *) gsarea);
280       XFree ((XRectangle *) gpneeded);
281       XFree ((XRectangle *) gsneeded);
282       prpok ();
283       return (COMP);
284     }
285 }
286 
287 /* *INDENT-OFF* */
288 FLAG
sspot(ic,mode)289 sspot (ic, mode)           /* Set SPOTlocation */
290      XIC  ic;
291      FLAG mode;
292 /* *INDENT-ON* */
293 
294 {
295   XPoint *gspot;
296   VALUABLE *spot[CHKSPOT];
297   XVaNestedList spe_nelist;
298   XVaNestedList gpe_nelist;
299   int cnt, sum;
300 
301   if (mode != OVERSP)
302     {
303       prerrfunc ();
304       return (COMP);
305     }
306   else
307     {
308       cls (prdisp);             /* clear screen */
309       /* create nestedlist for set values */
310       prstatus ("Creating NestedList for set values \"SpotLocation\"...");
311       upea.spot.x = (upea.spot.x == XPSL1) ? XPSL2 : XPSL1;
312       upea.spot.y = YPSL;
313       spe_nelist = XVaCreateNestedList (DUMMY, XNSpotLocation, &upea.spot, NULL);
314       prstatus ("done.");
315       /* test of XSetICValues */
316       prstatus ("Test of XSetICValues() for change \"SpotLocation\"...");
317       XSetICValues (ic, XNPreeditAttributes, spe_nelist, NULL);
318       prstatus ("done.");
319       /* create nestedlist for get values */
320       prstatus ("Creating NestedList for get values \"SpotLocation\" ...");
321       gpe_nelist = XVaCreateNestedList (DUMMY, XNSpotLocation, &gspot, NULL);
322       prstatus ("done.");
323       /* test of XGetICValues */
324       prstatus ("Test of XGetICValues() \"SpotLocation\"...");
325       XGetICValues (ic, XNPreeditAttributes, gpe_nelist, NULL);
326       prstatus ("done.");
327       /* verify values */
328       sum = 0;
329       spot[0] = mkstruct (PSLX, DEC, upea.spot.x, gspot->x);
330       spot[1] = mkstruct (PSLY, DEC, upea.spot.y, gspot->y);
331       for (cnt = 0; cnt < CHKSPOT; cnt++)
332         {
333           sum += verval (spot[cnt]);
334         }
335       /* output of results */
336       cls (prdisp);
337       prveres (sum);
338       if (sum != NOERR)
339         {
340           prprint ("Test of XSetICValues() \"Preedit SpotLocation\" is failed.\n");
341           prprint ("Preedit SpotLocation has not changed.\n\n");
342           prprint ("I will destroy IC and continue test.\n");
343           prprint ("Check log file after this test.\n\n");
344           fprintf (icfp, "...Test of XSetICValues() \"Preedit SpotLocation\" is failed.\n\n");
345           XFree ((char *) spe_nelist);
346           XFree ((char *) gpe_nelist);
347           prpng ();
348           return (DIC);
349         }
350       prprint ("Test of XSetICValues() \"Preedit SpotLocation\" is succeeded.\n");
351       prprint ("Preedit SpotLocation has changed.\n\n");
352       prprint ("Check on your own eyes and move next test.\n");
353       fprintf (icfp, "...Test of XSetICValues() \"Preedit SpotLocation\" is succeeded.\n\n");
354       XFree ((char *) spe_nelist);
355       XFree ((char *) gpe_nelist);
356       XFree ((XPoint *) gspot);
357       prpok ();
358       return (COMP);
359     }
360 }
361 
362 
363 /* *INDENT-OFF* */
364 FLAG
scmap(ic,mode)365 scmap (ic, mode)           /* Set ColorMAP */
366      XIC  ic;
367      FLAG mode;
368 /* *INDENT-ON* */
369 
370 {
371   Colormap gpcmap, gscmap;
372   VALUABLE *colormap[CHKCMAP];
373   XVaNestedList spe_nelist, sst_nelist;
374   XVaNestedList gpe_nelist, gst_nelist;
375   int cnt, sum;
376 
377   if (mode == ONSP)
378     {
379       prerrfunc ();
380       return (COMP);
381     }
382   else
383     {
384       cls (prdisp);             /* clear screen */
385       /* create nestedlist for get values */
386       prstatus ("Creating NestedList for set values \"Colormap\"...");
387       cmflag = (cmflag == 1) ? 0 : 1;
388       XSetWindowColormap (dpy, window1.win, cmap[cmflag]);
389       XSetWindowColormap (dpy, window2.win, cmap[cmflag]);
390       XSetWindowColormap (dpy, window3.win, cmap[cmflag]);
391       XSetWindowColormap (dpy, mroot, cmap[cmflag]);
392       upea.cmap = usta.cmap = cmap[cmflag];
393       spe_nelist = XVaCreateNestedList (DUMMY, XNColormap, upea.cmap, NULL);
394       sst_nelist = XVaCreateNestedList (DUMMY, XNColormap, usta.cmap, NULL);
395       prstatus ("done.");
396       /* test of XSetICValues */
397       prstatus ("Test of XSetICValues() for change \"Colormap\"...");
398       XSetICValues (ic, XNPreeditAttributes, spe_nelist, XNStatusAttributes, sst_nelist, NULL);
399       prstatus ("done.");
400       /* create nestedlist for get values */
401       prstatus ("Creating NestedList for get values \"Colormap\" ...");
402       gpe_nelist = XVaCreateNestedList (DUMMY, XNColormap, &gpcmap, NULL);
403       gst_nelist = XVaCreateNestedList (DUMMY, XNColormap, &gscmap, NULL);
404       prstatus ("done.");
405       /* test of XGetICValues */
406       prstatus ("Test of XGetICValues() \"Colormap\"...");
407       XGetICValues (ic, XNPreeditAttributes, gpe_nelist, XNStatusAttributes, gst_nelist, NULL);
408       prstatus ("done.");
409       /* verify values */
410       sum = 0;
411       colormap[0] = mkstruct (PCM, HEX, upea.cmap, gpcmap);
412       colormap[1] = mkstruct (SCM, HEX, usta.cmap, gscmap);
413       for (cnt = 0; cnt < CHKCMAP; cnt++)
414         {
415           sum += verval (colormap[cnt]);
416         }
417       /* output of results */
418       cls (prdisp);
419       prveres (sum);
420       if (sum != NOERR)
421         {
422           prprint ("Test of XSetICValues() for change \"Preedit/Status Colormap\" is failed.\n");
423           prprint ("Preedit/Status Colormap has not changed.\n\n");
424           prprint ("I will destroy IC and continue test.\n");
425           prprint ("Check log file after this test.\n\n");
426           fprintf (icfp, "...Test of XSetICValues() for change \"Preedit/Status Cmap\" is failed.\n\n");
427           XFree ((char *) spe_nelist);
428           XFree ((char *) sst_nelist);
429           XFree ((char *) gpe_nelist);
430           XFree ((char *) gst_nelist);
431           prpng ();
432           return (DIC);
433         }
434       prprint ("Test of XSetICValues() for change \"Preedit/Status Colormap\" is succeeded.\n");
435       prprint ("Preedit/Status Colormap has changed.\n\n");
436       prprint ("Check on your own eyes and move next test.\n");
437       prprint ("Check log file after this test.\n\n");
438       fprintf (icfp, "...Test of XSetICValues() for change \"Preedit/Status Colormap\" is succeeded.\n\n");
439       XFree ((char *) spe_nelist);
440       XFree ((char *) sst_nelist);
441       XFree ((char *) gpe_nelist);
442       XFree ((char *) gst_nelist);
443       prpok ();
444       return (COMP);
445     }
446 }
447 
448 /* *INDENT-OFF* */
449 FLAG
sground(ic,mode)450 sground (ic, mode)         /* Set fore/backGROUND */
451      XIC  ic;
452      FLAG mode;
453 /* *INDENT-ON* */
454 
455 {
456   u_long gpfg, gpbg, gsfg, gsbg;
457   VALUABLE *ground[CHKFBGND];
458   XVaNestedList spe_nelist, sst_nelist;
459   XVaNestedList gpe_nelist, gst_nelist;
460   int cnt, sum;
461   static int i = 0, j = PIX_MAX - 1;
462 
463   if (mode == ONSP)
464     {
465       prerrfunc ();
466       return (COMP);
467     }
468   else
469     {
470       cls (prdisp);             /* clear screen */
471       i++, j--;
472       if (i == PIX_MAX)
473         {
474           i = 0;
475         }
476       if (j == -1)
477         {
478           j = PIX_MAX - 1;
479         }
480       upea.fg = pixel[cmflag][j];
481       upea.bg = pixel[cmflag][i];
482       usta.fg = pixel[cmflag][i];
483       usta.bg = pixel[cmflag][j];
484       /* Create nestedlist for set values */
485       prstatus ("Creating NestedList for set values \"Fg/Bg\"...");
486       spe_nelist = XVaCreateNestedList (DUMMY, XNForeground, upea.fg, XNBackground, upea.bg, NULL);
487       sst_nelist = XVaCreateNestedList (DUMMY, XNForeground, usta.fg, XNBackground, usta.bg, NULL);
488       prstatus ("done.");
489       /* test of XSetICValues */
490       prstatus ("Using XSetICValues() for change \"Fg/Bg\"...");
491       XSetICValues (ic, XNPreeditAttributes, spe_nelist, XNStatusAttributes, sst_nelist, NULL);
492       prstatus ("done.");
493       /* create nestedlist for get values */
494       prstatus ("Creating NestedList for get values \"Fg/Bg\" ...");
495       gpe_nelist = XVaCreateNestedList (DUMMY, XNForeground, &gpfg, XNBackground, &gpbg, NULL);
496       gst_nelist = XVaCreateNestedList (DUMMY, XNForeground, &gsfg, XNBackground, &gsbg, NULL);
497       prstatus ("done.");
498       /* test of XGetICValues */
499       prstatus ("Test of XGetICValues() \"Fg/Bg\"...");
500       XGetICValues (ic, XNPreeditAttributes, gpe_nelist, XNStatusAttributes, gst_nelist, NULL);
501       prstatus ("done.");
502       /* verify values */
503       sum = 0;
504       ground[0] = mkstruct (PFG, HEX, upea.fg, gpfg);
505       ground[1] = mkstruct (PBG, HEX, upea.bg, gpbg);
506       ground[2] = mkstruct (SFG, HEX, usta.fg, gsfg);
507       ground[3] = mkstruct (SBG, HEX, usta.bg, gsbg);
508       for (cnt = 0; cnt < CHKFBGND; cnt++)
509         {
510           sum += verval (ground[cnt]);
511         }
512       /* output of results */
513       cls (prdisp);
514       prveres (sum);
515       if (sum != NOERR)
516         {
517           prprint ("Test of XSetICValues() for change \"Preedit/Status Fg/Bg\" is failed.\n");
518           prprint ("Preedit/Status Fg/Bg has not changed.\n\n");
519           prprint ("I will destroy IC and continue test.\n");
520           prprint ("Check log file after this test.\n\n");
521           fprintf (icfp, "...Test of XSetICValues() for change \"Preedit/Status Fg/Bg\" is failed.\n\n");
522           XFree ((char *) spe_nelist);
523           XFree ((char *) sst_nelist);
524           XFree ((char *) gpe_nelist);
525           XFree ((char *) gst_nelist);
526           prpng ();
527           return (DIC);
528         }
529       prprint ("Test of XSetICValues() for change \"Preedit/Status Fg/Bg\" is succeeded.\n");
530       prprint ("Preedit/Status Fg/Bg has changed.\n\n");
531       prprint ("Check on your own eyes and move next test.\n");
532       prprint ("Check log file after this test.\n\n");
533       fprintf (icfp, "...Test of XSetICValues() for change \"Preedit/Status Fg/Bg\" is succeeded.\n\n");
534       XFree ((char *) spe_nelist);
535       XFree ((char *) sst_nelist);
536       XFree ((char *) gpe_nelist);
537       XFree ((char *) gst_nelist);
538       prpok ();
539       return (COMP);
540     }
541 }
542 
543 /* *INDENT-OFF* */
544 FLAG
spixmap(ic,mode)545 spixmap (ic, mode)         /* Set bg/ PIXMAP */
546      XIC   ic;
547      FLAG  mode;
548 /* *INDENT-ON* */
549 
550 {
551   Pixmap gppix, gspix;
552   VALUABLE *pixmap[CHKPIX];
553   XVaNestedList spe_nelist, sst_nelist;
554   XVaNestedList gpe_nelist, gst_nelist;
555   int cnt, sum;
556 
557   if (mode == ONSP)
558     {
559       prerrfunc ();
560       return (COMP);
561     }
562   else
563     {
564       cls (prdisp);             /* clear screen */
565       /* create nestedlist for get values */
566       prstatus ("Creating NestedList for set values \"Bg/ Pixmap\"...");
567       upea.bgpm = (upea.bgpm == pix[0]) ? pix[1] : pix[0];
568       usta.bgpm = (usta.bgpm == pix[0]) ? pix[1] : pix[0];
569       spe_nelist = XVaCreateNestedList (DUMMY, XNBackgroundPixmap, upea.bgpm, NULL);
570       sst_nelist = XVaCreateNestedList (DUMMY, XNBackgroundPixmap, usta.bgpm, NULL);
571       prstatus ("done.");
572       /* test of XSetICValues */
573       prstatus ("Test of XSetICValues() \"Bg/ Pixmap\"...");
574       XSetICValues (ic, XNPreeditAttributes, spe_nelist, XNStatusAttributes, sst_nelist, NULL);
575       prstatus ("done.");
576       /* create nestedlist for get values */
577       prstatus ("Creating NestedList for get values \"Bg/ Pixmap\" again...");
578       gpe_nelist = XVaCreateNestedList (DUMMY, XNBackgroundPixmap, &gppix, NULL);
579       gst_nelist = XVaCreateNestedList (DUMMY, XNBackgroundPixmap, &gspix, NULL);
580       prstatus ("done.");
581       /* test of XGetICValues */
582       prstatus ("Test of XGetICValues() \"Bg/ Pixmap\"...");
583       XGetICValues (ic, XNPreeditAttributes, gpe_nelist, XNStatusAttributes, gst_nelist, NULL);
584       prstatus ("done.");
585       /* verify values */
586       sum = 0;
587       pixmap[0] = mkstruct (PBP, HEX, upea.bgpm, gppix);
588       pixmap[1] = mkstruct (SBP, HEX, usta.bgpm, gspix);
589       for (cnt = 0; cnt < CHKPIX; cnt++)
590         {
591           sum += verval (pixmap[cnt]);
592         }
593       /* output of results */
594       cls (prdisp);
595       prveres (sum);
596       if (sum != NOERR)
597         {
598           prprint ("Test of XSetICValues() for change \"Preedit/Status Bg/ Pixmap\" is failed.\n");
599           prprint ("Preedit/Status Bg/ Pixmap has not changed. ");
600           prprint ("but I will continue test.\n");
601           prprint ("Check log file after this test.\n\n");
602           fprintf (icfp, "...Test of XSetICValues() for change \"Preedit/Status Bg/ Pixmap\" is failed.\n\n");
603         }
604       else
605         {
606           prprint ("Test of XSetICValues() for change \"Preedit/Status Bg/ Pixmap\" is succeeded.\n");
607           prprint ("Preedit/Status Bg/ Pixmap has changed.\n\n");
608           prprint ("Check on your own eyes and move next test.\n");
609           prprint ("Check log file after this test.\n\n");
610           fprintf (icfp, "...Test of XSetICValues() for change \"Preedit/Status Bg/ Pixmap\" is succeeded.\n\n");
611         }
612       XFree ((char *) spe_nelist);
613       XFree ((char *) sst_nelist);
614       XFree ((char *) gpe_nelist);
615       XFree ((char *) gst_nelist);
616       prpok ();
617       return (COMP);
618     }
619 }
620 
621 /* *INDENT-OFF* */
622 FLAG
sfontset(ic,mode)623 sfontset (ic, mode)        /* Set FONTSET */
624      XIC  ic;
625      FLAG mode;
626 /* *INDENT-ON* */
627 
628 {
629   XFontSet gpfont, gsfont;
630   VALUABLE *font[CHKFONT];
631   XVaNestedList spe_nelist, sst_nelist;
632   XVaNestedList gpe_nelist, gst_nelist;
633   int cnt, sum;
634 
635   if (mode == ONSP)
636     {
637       prerrfunc ();
638       return (COMP);
639     }
640   else
641     {
642       cls (prdisp);             /* clear screen */
643       /* create nestedlist for get values */
644       prstatus ("Creating NestedList for set values \"FontSet\"...");
645       upea.fset = (upea.fset == fontset[0]) ? fontset[1] : fontset[0];
646       usta.fset = (usta.fset == fontset[0]) ? fontset[1] : fontset[0];
647       spe_nelist = XVaCreateNestedList (DUMMY, XNFontSet, upea.fset, NULL);
648       sst_nelist = XVaCreateNestedList (DUMMY, XNFontSet, usta.fset, NULL);
649       prstatus ("done.");
650       /* test of XSetICValues */
651       prstatus ("Test of XSetICValues() for change \"FontSet\"...");
652       XSetICValues (ic, XNPreeditAttributes, spe_nelist, XNStatusAttributes, sst_nelist, NULL);
653       prstatus ("done.");
654       /* create nestedlist for get values */
655       prstatus ("Creating NestedList for get values \"FontSet\" ...");
656       gpe_nelist = XVaCreateNestedList (DUMMY, XNFontSet, &gpfont, NULL);
657       gst_nelist = XVaCreateNestedList (DUMMY, XNFontSet, &gsfont, NULL);
658       prstatus ("done.");
659       /* test of XGetICValues */
660       prstatus ("Test of XGetICValues() \"FontSet\"...");
661       XGetICValues (ic, XNPreeditAttributes, gpe_nelist, XNStatusAttributes, gst_nelist, NULL);
662       prstatus ("done.");
663       /* verify values */
664       sum = 0;
665       font[0] = mkstruct (PFS, HEX, upea.fset, gpfont);
666       font[1] = mkstruct (SFS, HEX, usta.fset, gsfont);
667       for (cnt = 0; cnt < CHKFONT; cnt++)
668         {
669           sum += verval (font[cnt]);
670         }
671       /* output of results */
672       cls (prdisp);
673       prveres (sum);
674       if (sum != NOERR)
675         {
676           prprint ("Test of XSetICValues() for change \"Preedit/Status FontSet\" is failed.\n");
677           prprint ("Preedit/Status FontSet has not changed.\n\n");
678           prprint ("I will destroy IC and continue test.\n");
679           prprint ("Check log file after this test.\n\n");
680           fprintf (icfp, "...Test of XSetICValues() for change \"Preedit/Status FontSet\" is failed.\n\n");
681           XFree ((char *) spe_nelist);
682           XFree ((char *) sst_nelist);
683           XFree ((char *) gpe_nelist);
684           XFree ((char *) gst_nelist);
685           prpng ();
686           return (DIC);
687         }
688       prprint ("Test of XSetICValues() for change \"Preedit/Status FontSet\" is succeeded.\n");
689       prprint ("Preedit/Status FontSet has changed.\n\n");
690       prprint ("Check on your own eyes and move next test.\n");
691       prprint ("Check log file after this test.\n\n");
692       fprintf (icfp, "...Test of XSetICValues() for change \"Preedit/Status FontSet\" is succeeded.\n\n");
693       XFree ((char *) spe_nelist);
694       XFree ((char *) sst_nelist);
695       XFree ((char *) gpe_nelist);
696       XFree ((char *) gst_nelist);
697       prpok ();
698       return (COMP);
699     }
700 }
701 
702 /* *INDENT-OFF* */
703 FLAG
slinespc(ic,mode)704 slinespc (ic, mode)        /* Set LINESPaCing */
705      XIC   ic;
706      FLAG  mode;
707 /* *INDENT-ON* */
708 
709 {
710   XRectangle *gplspc;
711   VALUABLE *plspc;
712   XVaNestedList spe_nelist;
713   XVaNestedList gpe_nelist;
714   int sum;
715 
716   if (mode != OVERSP)
717     {
718       prerrfunc ();
719       return (COMP);
720     }
721   else
722     {
723       cls (prdisp);             /* clear screen */
724       /* create nestedlist for set values */
725       prstatus ("Creating NestedList for set values \"LineSpacing\"...");
726       upea.lspc = (upea.lspc == LSPC1) ? LSPC2 : LSPC1;
727       spe_nelist = XVaCreateNestedList (DUMMY, XNLineSpace, upea.lspc, NULL);
728       prstatus ("done.");
729       /* test of XSetICValues */
730       prstatus ("Test of XSetICValues() for change \"LineSpacing\"...");
731       XSetICValues (ic, XNPreeditAttributes, spe_nelist, NULL);
732       prstatus ("done.");
733       /* create nestedlist for get values */
734       prstatus ("Creating NestedList for get values \"LineSpacing\" ...");
735       gpe_nelist = XVaCreateNestedList (DUMMY, XNLineSpace, &gplspc, NULL);
736       prstatus ("done.");
737       /* test of XGetICValues */
738       prstatus ("Test of XGetICValues() \"LineSpacing\"...");
739       XGetICValues (ic, XNPreeditAttributes, gpe_nelist, NULL);
740       prstatus ("done.");
741       /* verify values */
742       sum = 0;
743       plspc = mkstruct (PLS, DEC, upea.lspc, gplspc);
744       sum += verval (plspc);
745       /* output of results */
746       cls (prdisp);
747       prveres (sum);
748       if (sum != NOERR)
749         {
750           prprint ("Test of XSetICValues() for change \"Preedit LineSpacing\" is failed.\n");
751           prprint ("Preedit LineSpacing has not changed.\n\n");
752           prprint ("I will destroy IC and continue test.\n");
753           prprint ("Check log file after this test.\n\n");
754           fprintf (icfp, "...Test of XSetICValues() for change \"Preedit LineSpacing\" is faled.\n\n");
755           XFree ((char *) spe_nelist);
756           XFree ((char *) gpe_nelist);
757           prpng ();
758           return (DIC);
759         }
760       prprint ("Test of XSetICValues() for change \"Preedit LineSpacing\" is succeeded.\n");
761       prprint ("Status LineSpacing has changed.\n\n");
762       prprint ("Check on your own eyes and move next test.\n");
763       prprint ("Check log file after this test.\n\n");
764       fprintf (icfp, "...Test of XSetICValues() for change \"Preedit LineSpacing\" is succeeded.\n\n");
765       XFree ((char *) spe_nelist);
766       XFree ((char *) gpe_nelist);
767       prpok ();
768       return (COMP);
769     }
770 }
771 
772 /* *INDENT-OFF* */
773 FLAG
scursor(ic,mode)774 scursor (ic, mode)         /* Set CURSOR */
775      XIC  ic;
776      FLAG mode;
777 /* *INDENT-ON* */
778 
779 {
780   Cursor gpcursor, gscursor;
781   VALUABLE *cur[CHKCUR];
782   XVaNestedList spe_nelist, sst_nelist;
783   XVaNestedList gpe_nelist, gst_nelist;
784   int cnt, sum;
785 
786   if (mode == ONSP)
787     {
788       prerrfunc ();
789       return (COMP);
790     }
791   else
792     {
793       cls (prdisp);             /* clear screen */
794       /* create nestedlist for get values */
795       prstatus ("Creating NestedList for set values \"Cursor\"...");
796       upea.cursor = (upea.cursor == cursor[0]) ? cursor[1] : cursor[0];
797       usta.cursor = (usta.cursor == cursor[0]) ? cursor[1] : cursor[0];
798       spe_nelist = XVaCreateNestedList (DUMMY, XNCursor, upea.cursor, NULL);
799       sst_nelist = XVaCreateNestedList (DUMMY, XNCursor, usta.cursor, NULL);
800       prstatus ("done.");
801       /* test of XSetICValues */
802       prstatus ("Test of XSetICValues() for change \"Cursor\"...");
803       XSetICValues (ic, XNPreeditAttributes, spe_nelist, XNStatusAttributes, sst_nelist, NULL);
804       prstatus ("done.");
805       /* create nestedlist for get values */
806       prstatus ("Creating NestedList for get values \"Cursor\" ...");
807       gpe_nelist = XVaCreateNestedList (DUMMY, XNCursor, &gpcursor, NULL);
808       gst_nelist = XVaCreateNestedList (DUMMY, XNCursor, &gscursor, NULL);
809       prstatus ("done.");
810       /* test of XGetICValues */
811       prstatus ("Test of XGetICValues() \"Cursor\"...");
812       XGetICValues (ic, XNPreeditAttributes, gpe_nelist, XNStatusAttributes, gst_nelist, NULL);
813       prstatus ("done.");
814       /* verify values */
815       sum = 0;
816       cur[0] = mkstruct (PCU, HEX, upea.cursor, gpcursor);
817       cur[1] = mkstruct (SCU, HEX, usta.cursor, gscursor);
818       for (cnt = 0; cnt < CHKCUR; cnt++)
819         {
820           sum += verval (cur[cnt]);
821         }
822       /* output of results */
823       cls (prdisp);
824       prveres (sum);
825       if (sum != NOERR)
826         {
827           prprint ("Test of XSetICValues() for change \"Preedit/Status Cursor\" is failed.\n");
828           prprint ("Preedit/Status Cursor has not changed, ");
829           prprint ("but I will continue test.\n\n");
830           prprint ("Check log file after this test.\n\n");
831           fprintf (icfp, "...Test of XSetICValues() for change \"Preedit/Status Cursor\" is failed.\n\n");
832         }
833       else
834         {
835           prprint ("Test of XSetICValues() for change \"Preedit/Status Cursor\" is succeeded.\n");
836           prprint ("Preedit/Status Cursor has changed.\n\n");
837           prprint ("Check on your own eyes and move next test.\n");
838           prprint ("Check log file after this test.\n\n");
839           fprintf (icfp, "...Test of XSetICValues() for change \"Preedit/Status Cursor\" is succeeded.\n\n");
840         }
841       XFree ((char *) spe_nelist);
842       XFree ((char *) sst_nelist);
843       XFree ((char *) gpe_nelist);
844       XFree ((char *) gst_nelist);
845       prpok ();
846       return (COMP);
847     }
848 }
849