dcbbbb14fc9c28b8a1191c95cabad8960e482ad2
[scilab.git] / scilab / modules / graphics / sci_gateway / c / sci_xset.c
1 /*
2 * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
3 * Copyright (C) 2006 - INRIA - Fabrice Leray
4 * Copyright (C) 2006 - INRIA - Jean-Baptiste Silvy
5 * Copyright (C) 2012 - Scilab Enterprises - Bruno JOFRET
6 *
7 * This file must be used under the terms of the CeCILL.
8 * This source file is licensed as described in the file COPYING, which
9 * you should have received as part of this distribution.  The terms
10 * are also available at
11 * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
12 *
13 */
14
15 /*------------------------------------------------------------------------*/
16 /* file: sci_xset.c                                                       */
17 /* desc : interface for xset routine                                      */
18 /*------------------------------------------------------------------------*/
19 #include <stdio.h>
20 #include "gw_graphics.h"
21 #include "api_scilab.h"
22 #include "GetProperty.h"
23 #include "SetProperty.h"
24 #include "DrawObjects.h"
25 #include "InitObjects.h"
26 #include "XsetXgetParameters.h"
27 #include "Format.h"
28 #include "msgs.h"
29 #include "localization.h"
30 #include "Scierror.h"
31 #include "HandleManagement.h"
32
33 #include "BuildObjects.h"
34 #include "graphicObjectProperties.h"
35 #include "setGraphicObjectProperty.h"
36 #include "FigureList.h"
37 #include "CurrentFigure.h"
38 #include "CurrentSubwin.h"
39 #include "AxesModel.h"
40 #include "getGraphicObjectProperty.h"
41 #include "deleteGraphicObject.h"
42 #include "warningmode.h"
43 #include "sciprint.h"
44
45 /*--------------------------------------------------------------------------*/
46 int xsetg(char * str, char * str1, int lx0, int lx1);
47 /*--------------------------------------------------------------------------*/
48 int sci_xset(char *fname, unsigned long fname_len)
49 {
50     SciErr sciErr;
51
52     int* piAddrl1 = NULL;
53     char* l1 = NULL;
54     int* piAddrl2 = NULL;
55     char* l2 = NULL;
56     int* piAddrlr = NULL;
57     double* lr = NULL;
58
59     int m1 = 0, m2 = 0, xm[5], xn[5], x[5] = {0, 0, 0, 0, 0}, i = 0, v = 0;
60     double  xx[5] = {0.0, 0.0, 0.0, 0.0, 0.0};
61     char * subwinUID = NULL;
62     BOOL keyFound = FALSE;
63
64     if (nbInputArgument(pvApiCtx) <= 0)
65     {
66         sci_demo(fname, fname_len);
67         return 0;
68     }
69
70     CheckInputArgument(pvApiCtx, 1, 6);
71     CheckOutputArgument(pvApiCtx, 0, 1);
72
73     sciErr = getVarAddressFromPosition(pvApiCtx, 1, &piAddrl1);
74     if (sciErr.iErr)
75     {
76         printError(&sciErr, 0);
77         return 1;
78     }
79
80     // Retrieve a matrix of double at position 1.
81     if (getAllocatedSingleString(pvApiCtx, piAddrl1, &l1))
82     {
83         Scierror(202, _("%s: Wrong type for argument #%d: A string expected.\n"), fname, 1);
84         return 1;
85     }
86
87
88     for (i = 0 ; i < NUMSETFONC ; i++)
89     {
90         if (strcmp(l1, KeyTab_[i]) == 0)
91         {
92             keyFound = TRUE;
93             break;
94         }
95     }
96
97     if (!keyFound)
98     {
99         Scierror(999, _("%s: Unrecognized input argument: '%s'.\n"), fname, (l1));
100         return 0;
101     }
102
103     /* Allan CORNET Avril 2004 */
104     /* Bloque la commande xset('window') sans numero de fenetre */
105     if (nbInputArgument(pvApiCtx) == 1 && (strcmp((l1), "window") == 0))
106     {
107         Scierror(999, _("%s : '%s' must be set\n"), fname, "window-number");
108         return 0;
109     }
110
111     if (nbInputArgument(pvApiCtx) == 2 && (!checkInputArgumentType(pvApiCtx, 2, sci_matrix)))
112     {
113         /* second argument is not a scalar it must be a string */
114         sciErr = getVarAddressFromPosition(pvApiCtx, 2, &piAddrl2);
115         if (sciErr.iErr)
116         {
117             printError(&sciErr, 0);
118             return 1;
119         }
120
121         // Retrieve a matrix of double at position 2.
122         if (getAllocatedSingleString(pvApiCtx, piAddrl2, &l2))
123         {
124             Scierror(202, _("%s: Wrong type for argument #%d: A string expected.\n"), fname, 2);
125             return 1;
126         }
127
128         xsetg(l1, l2, m1, m2);
129         AssignOutputVariable(pvApiCtx, 1) = 0;
130         ReturnArguments(pvApiCtx);
131         return 0;
132     }
133
134     if (nbInputArgument(pvApiCtx) == 1 && strcmp((l1), "default") == 0)
135     {
136         /* first treatment for xsetg : then we continue */
137         xsetg((l1), "void", m1, 4L);
138     }
139
140     for (i = 2 ; i <= nbInputArgument(pvApiCtx) ; i++)
141     {
142         sciErr = getVarAddressFromPosition(pvApiCtx, i, &piAddrlr);
143         if (sciErr.iErr)
144         {
145             printError(&sciErr, 0);
146             return 1;
147         }
148
149         // Retrieve a matrix of double at position i.
150         sciErr = getMatrixOfDouble(pvApiCtx, piAddrlr, &xm[i - 2], &xn[i - 2], &lr);
151         if (sciErr.iErr)
152         {
153             printError(&sciErr, 0);
154             Scierror(202, _("%s: Wrong type for argument %d: A real expected.\n"), fname, i);
155             return 1;
156         }
157
158         x[i - 2] = (int)lr[0];
159         xx[i - 2] = lr[0];
160     }
161
162     if (strcmp((l1), "wdim") == 0 || strcmp((l1), "wpdim") == 0)
163     {
164         /* Xwindows limits dimensions to 2^16 */
165         if ((x[0] > 65535) || (x[1] > 65535))
166         {
167             x[0] = Min(x[0], 65535);
168             x[1] = Min(x[1], 65535);
169             i = 106;
170             v = 0;
171             C2F(msgs)(&i, &v);
172         }
173     }
174
175     if (strcmp((l1), "clipping") == 0)
176     {
177         int clipState = 2;
178         if (nbInputArgument(pvApiCtx) != 5 && nbInputArgument(pvApiCtx) != 2)
179         {
180             Scierror(999, _("%s: Wrong number of input arguments: %d or %d expected.\n"), fname, 2, 5);
181             return 1;
182         }
183
184         if (nbInputArgument(pvApiCtx) == 2)
185         {
186             int i = 0;
187             int iRows = 0;
188             int iCols = 0;
189
190             sciErr = getVarAddressFromPosition(pvApiCtx, 2, &piAddrlr);
191             if (sciErr.iErr)
192             {
193                 printError(&sciErr, 0);
194                 return 1;
195             }
196
197             // Retrieve a matrix of double at position 2.
198             sciErr = getMatrixOfDouble(pvApiCtx, piAddrlr, &iRows, &iCols, &lr);
199             if (sciErr.iErr)
200             {
201                 printError(&sciErr, 0);
202                 Scierror(202, _("%s: Wrong type for argument %d: A real expected.\n"), fname, 2);
203                 return 1;
204             }
205
206
207             if (iRows * iCols != 4)
208             {
209                 Scierror(999, _("%s: Wrong size for input argument #%d: A %d-element vector expected.\n"), fname, 2, 4);
210                 return 1;
211             }
212
213             for (i = 0; i < 4 ; i++)
214             {
215                 xx[i] = lr[i];
216             }
217         }
218         subwinUID = (char*)getOrCreateDefaultSubwin();
219         setGraphicObjectProperty(subwinUID, __GO_CLIP_BOX__, xx, jni_double_vector, 4);
220         setGraphicObjectProperty(subwinUID, __GO_CLIP_STATE__, &clipState, jni_int, 1);
221     }
222     else if (strcmp((l1), "colormap") == 0)
223     {
224         char *pFigureUID = NULL;
225         getOrCreateDefaultSubwin();
226         pFigureUID = (char*)getCurrentFigure();
227         setGraphicObjectProperty(pFigureUID, __GO_COLORMAP__, (lr), jni_double_vector, *xm * (*xn));
228     }
229     else if (strcmp((l1), "mark size") == 0)
230     {
231         int markSize = (int) xx[0];
232         int markSizeUnit = 1; /* force switch to tabulated mode : old syntax / 0 : point, 1 : tabulated */
233         char *subwinUID = (char*)getOrCreateDefaultSubwin();
234
235         setGraphicObjectProperty(subwinUID, __GO_MARK_SIZE_UNIT__, &markSizeUnit, jni_int, 1);
236         setGraphicObjectProperty(subwinUID, __GO_MARK_SIZE__, &markSize, jni_int, 1);
237     }
238     else if (strcmp((l1), "mark") == 0)
239     {
240         int markStyle = (int) xx[0];
241         int markSize = (int) xx[1];
242         int markSizeUnit = 1; /* force switch to tabulated mode : old syntax / 0 : point, 1 : tabulated */
243         char *subwinUID = NULL;
244         if (nbInputArgument(pvApiCtx) != 3)
245         {
246             Scierror(999, _("%s: Wrong number of input arguments: %d expected.\n"), fname, 3);
247             return -1;
248         }
249
250         subwinUID = (char*)getOrCreateDefaultSubwin();
251         setGraphicObjectProperty(subwinUID, __GO_MARK_SIZE_UNIT__, &markSizeUnit, jni_int, 1); /* force switch to tabulated mode : old syntax */
252         setGraphicObjectProperty(subwinUID, __GO_MARK_STYLE__, &markStyle, jni_int, 1);
253         setGraphicObjectProperty(subwinUID, __GO_MARK_SIZE__, &markSize, jni_int, 1);
254     }
255     else if (strcmp((l1), "font size") == 0)
256     {
257         double fontSize = xx[0];
258
259         setGraphicObjectProperty(getOrCreateDefaultSubwin(), __GO_FONT_SIZE__, &fontSize, jni_double, 1);
260     }
261     else if (strcmp((l1), "default") == 0)
262     {
263         // default color map
264         unsigned short defcolors[] =
265         {
266             0, 0, 0,                    /* Black: DEFAULTBLACK */
267             0, 0, 255,                  /* Blue */
268             0, 255, 0,                  /* Green */
269             0, 255, 255,                /* Cyan */
270             255, 0, 0,                  /* Red */
271             255, 0, 255,                /* Magenta */
272             255, 255, 0,                /* Yellow */
273             255, 255, 255,              /* White: DEFAULTWHITE */
274             0, 0, 144,                  /* Blue4 */
275             0, 0, 176,                  /* Blue3 */
276             0, 0, 208,                  /* Blue2 */
277             135, 206, 255,              /* LtBlue */
278             0, 144, 0,                  /* Green4 */
279             0, 176, 0,                  /* Green3 */
280             0, 208, 0,                  /* Green2 */
281             0, 144, 144,                /* Cyan4 */
282             0, 176, 176,                /* Cyan3 */
283             0, 208, 208,                /* Cyan2 */
284             144, 0, 0,                  /* Red4 */
285             176, 0, 0,                  /* Red3 */
286             208, 0, 0,                  /* Red2 */
287             144, 0, 144,                /* Magenta4 */
288             176, 0, 176,                /* Magenta3 */
289             208, 0, 208,                /* Magenta2 */
290             128, 48, 0,                 /* Brown4 */
291             160, 64, 0,                 /* Brown3 */
292             192, 96, 0,                 /* Brown2 */
293             255, 128, 128,              /* Pink4 */
294             255, 160, 160,              /* Pink3 */
295             255, 192, 192,              /* Pink2 */
296             255, 224, 224,              /* Pink */
297             255, 215, 0                 /* Gold */
298         };
299
300         int piFigurePosition[2] = {200, 200};
301         int piFigureSize[2]     = {500, 500};
302         int piAxesSize[2]       = {498, 366};
303         int piViewPort[2]       = {0, 0};
304         int piEmptyMatrix[4]    = {1, 0, 0, 0};
305
306         // Create new axes and set it in current figure
307         char* pSubWinUID = (char*)getCurrentSubWin();
308
309         // init variables
310         int iZero   = 0;
311         BOOL bTrue  = TRUE;
312         BOOL bFalse = FALSE;
313         int m       = NUMCOLORS_SCI;
314         int i       = 0;
315         int iCopy   = 3;
316
317         int defaultBackground = -2;
318         char error_message[70];
319
320         double* pdblColorMap = (double*)malloc(m * 3 * sizeof(double));
321
322         // Create figure if it not exist.
323         char* pFigureUID = (char*)getCurrentFigure();
324         if (pFigureUID == NULL)
325         {
326             pFigureUID = createNewFigureWithAxes();
327             setCurrentFigure(pFigureUID);
328             AssignOutputVariable(pvApiCtx, 1) = 0;
329             ReturnArguments(pvApiCtx);
330             free(pdblColorMap);
331             return 0;
332         }
333
334         if (pdblColorMap == NULL)
335         {
336             sprintf(error_message, _("%s: No more memory.\n"), "xset");
337             return 0;
338         }
339
340         if (pSubWinUID != NULL)
341         {
342             int iChildrenCount  = 0;
343             int* childrencount  = &iChildrenCount;
344             char** childrenUID  = NULL;
345             int iHidden         = 0;
346             int *piHidden       = &iHidden;
347
348             getGraphicObjectProperty(pFigureUID, __GO_CHILDREN_COUNT__, jni_int, (void **)&childrencount);
349             getGraphicObjectProperty(pFigureUID, __GO_CHILDREN__, jni_string_vector, (void **)&childrenUID);
350
351             for (i = 0; i < childrencount[0]; ++i)
352             {
353                 getGraphicObjectProperty(childrenUID[i], __GO_HIDDEN__, jni_bool, (void **)&piHidden);
354                 if (iHidden == 0)
355                 {
356                     deleteGraphicObject(childrenUID[i]);
357                 }
358             }
359         }
360
361         cloneAxesModel(pFigureUID);
362
363         // Set default figure properties
364         setGraphicObjectProperty(pFigureUID, __GO_POSITION__, piFigurePosition, jni_int_vector, 2);
365         setGraphicObjectProperty(pFigureUID, __GO_SIZE__, piFigureSize, jni_int_vector, 2);
366         setGraphicObjectProperty(pFigureUID, __GO_AXES_SIZE__, piAxesSize, jni_int_vector, 2);
367         setGraphicObjectProperty(pFigureUID, __GO_AUTORESIZE__, &bTrue, jni_bool, 1);
368         setGraphicObjectProperty(pFigureUID, __GO_VIEWPORT__, piViewPort, jni_int_vector, 2);
369         setGraphicObjectProperty(pFigureUID, __GO_NAME__, _("Figure n°%d"), jni_string, 1);
370         setGraphicObjectProperty(pFigureUID, __GO_INFO_MESSAGE__, "", jni_string, 1);
371         setGraphicObjectProperty(pFigureUID, __GO_PIXMAP__, &bFalse, jni_bool, 1);
372         setGraphicObjectProperty(pFigureUID, __GO_PIXEL_DRAWING_MODE__, &iCopy, jni_int, 1);
373         setGraphicObjectProperty(pFigureUID, __GO_ANTIALIASING__, &iZero, jni_int, 1);
374         setGraphicObjectProperty(pFigureUID, __GO_IMMEDIATE_DRAWING__, &bTrue, jni_bool, 1);
375         setGraphicObjectProperty(pFigureUID, __GO_BACKGROUND__, &defaultBackground, jni_int, 1);
376         setGraphicObjectProperty(pFigureUID, __GO_VISIBLE__, &bTrue, jni_bool, 1);
377         setGraphicObjectProperty(pFigureUID, __GO_ROTATION_TYPE__, &iZero, jni_int, 1);
378         setGraphicObjectProperty(pFigureUID, __GO_EVENTHANDLER__, "", jni_string, 1);
379         setGraphicObjectProperty(pFigureUID, __GO_EVENTHANDLER_ENABLE__, &bFalse, jni_bool, 1);
380         setGraphicObjectProperty(pFigureUID, __GO_USER_DATA__, piEmptyMatrix, jni_int_vector, 4);
381         setGraphicObjectProperty(pFigureUID, __GO_RESIZEFCN__, "", jni_string, 1);
382         setGraphicObjectProperty(pFigureUID, __GO_TAG__, "", jni_string, 1);
383
384         for (i = 0; i < m; i++)
385         {
386             pdblColorMap[i]         = (double)(defcolors[3 * i] / 255.0);
387             pdblColorMap[i + m]     = (double)(defcolors[3 * i + 1] / 255.0);
388             pdblColorMap[i + 2 * m] = (double)(defcolors[3 * i + 2] / 255.0);
389         }
390
391         setGraphicObjectProperty(pFigureUID, __GO_COLORMAP__, pdblColorMap, jni_double_vector, 3 * m);
392         setGraphicObjectProperty(pFigureUID, __GO_PARENT__, "", jni_string, 1);
393
394     }
395     else if (strcmp((l1), "clipgrf") == 0)
396     {
397         int clipState = 1;
398         /* special treatement for xset("cligrf") */
399         setGraphicObjectProperty(getOrCreateDefaultSubwin(), __GO_CLIP_STATE__, &clipState, jni_int, 1);
400     }
401     else if (strcmp((l1), "clipoff") == 0)
402     {
403         int clipState = 0;
404         /* special treatement for xset("clipoff") */
405         setGraphicObjectProperty(getOrCreateDefaultSubwin(), __GO_CLIP_STATE__, &clipState, jni_int, 1);
406     }
407     else if (strcmp((l1), "hidden3d") == 0)
408     {
409         /* special treatement for xset("hidden3d") */
410         int hiddenColor = (int) x[0];
411
412         setGraphicObjectProperty(getOrCreateDefaultSubwin(), __GO_HIDDEN_COLOR__, &hiddenColor, jni_int, 1);
413     }
414     else if (strcmp((l1), "font") == 0)
415     {
416         int fontStyle = (int) xx[0];
417         double fontSize = xx[1];
418         if (nbInputArgument(pvApiCtx) != 3)
419         {
420             Scierror(999, _("%s: Wrong number of input arguments: %d expected.\n"), fname, 3);
421             return -1;
422         }
423
424         setGraphicObjectProperty(getOrCreateDefaultSubwin(), __GO_FONT_SIZE__, &fontSize, jni_double, 1);
425         setGraphicObjectProperty(getOrCreateDefaultSubwin(), __GO_FONT_STYLE__, &fontStyle, jni_int, 1);
426     }
427     else if (strcmp((l1), "window") == 0 || strcmp((l1), "figure") == 0)
428     {
429         // Find if window already exists, if not create a new one
430         int iID = x[0];
431         char *pFigureUID = (char*)getFigureFromIndex(iID);
432         if (pFigureUID == NULL)
433         {
434             pFigureUID = createNewFigureWithAxes();
435             setGraphicObjectProperty(pFigureUID, __GO_ID__, &iID, jni_int, 1);
436             setCurrentFigure(pFigureUID);
437         }
438         setCurrentFigure(pFigureUID);
439     }
440     else if ((strcmp((l1), "foreground") == 0) || (strcmp((l1), "color") == 0) || (strcmp((l1), "pattern") == 0))
441     {
442         int iColor = (int) x[0];
443
444         setGraphicObjectProperty(getOrCreateDefaultSubwin(), __GO_LINE_COLOR__, &iColor, jni_int, 1);
445     }
446     else if (strcmp((l1), "background") == 0)
447     {
448         int iColor = (int) x[0];
449
450         setGraphicObjectProperty(getOrCreateDefaultSubwin(), __GO_BACKGROUND__, &iColor, jni_int, 1);
451     }
452     else if (strcmp((l1), "thickness") == 0)
453     {
454         sciSetLineWidth((char*)getOrCreateDefaultSubwin(), x[0]);
455     }
456     else if (strcmp((l1), "line style") == 0)
457     {
458         int lineStyle = (int) x[0];
459         setGraphicObjectProperty(getOrCreateDefaultSubwin(), __GO_LINE_STYLE__, &lineStyle, jni_int, 1);
460     }
461     else if (strcmp((l1), "mark") == 0)
462     {
463         int markMode = 1;
464
465         setGraphicObjectProperty(getOrCreateDefaultSubwin(), __GO_MARK_MODE__, &markMode, jni_bool, 1);
466         setGraphicObjectProperty(getOrCreateDefaultSubwin(), __GO_MARK_STYLE__, x, jni_int, 1);
467     }
468     else if (strcmp((l1), "colormap") == 0)
469     {
470         getOrCreateDefaultSubwin();
471         setGraphicObjectProperty(getCurrentFigure(), __GO_COLORMAP__, (lr), jni_double_vector, xm[0] * xn[0]);
472     }
473     else if (strcmp((l1), "dashes") == 0)
474     {
475         int lineStyle = (int) x[0];
476         setGraphicObjectProperty(getOrCreateDefaultSubwin(), __GO_LINE_STYLE__, &lineStyle, jni_int, 1);
477     }
478     else if (strcmp((l1), "wresize") == 0)
479     {
480         int iAutoResizeMode = x[0];
481
482         setGraphicObjectProperty(getOrCreateDefaultSubwin(), __GO_AUTORESIZE__, &iAutoResizeMode, jni_bool, 1);
483     }
484     else if (strcmp((l1), "wpos") == 0)
485     {
486         int figurePosition[2];
487         if (nbInputArgument(pvApiCtx) != 2)
488         {
489             Scierror(999, _("%s: Wrong number of input arguments: %d expected.\n"), fname, 2);
490             return -1;
491         }
492         getOrCreateDefaultSubwin();
493
494         figurePosition[0] = x[0];
495         figurePosition[1] = x[1];
496         setGraphicObjectProperty(getCurrentFigure(), __GO_POSITION__, figurePosition, jni_int_vector, 2);
497     }
498     else if (strcmp((l1), "wpdim") == 0 || strcmp((l1), "wdim") == 0)
499     {
500         int figureSize[2];
501         if (nbInputArgument(pvApiCtx) != 2 && nbInputArgument(pvApiCtx) != 3)
502         {
503             Scierror(999, _("%s: Wrong number of input arguments: %d or %d expected.\n"), fname, 2, 3);
504             return -1;
505         }
506         getOrCreateDefaultSubwin();
507
508         figureSize[0] = x[0];
509         figureSize[1] = x[1];
510         setGraphicObjectProperty(getCurrentFigure(), __GO_SIZE__, figureSize, jni_int_vector, 2);
511     } /*Ajout A.Djalel le 10/11/03 */
512     else if (strcmp((l1), "pixmap") == 0)
513     {
514         int iPixmapMode = x[0];
515         getOrCreateDefaultSubwin();
516
517         setGraphicObjectProperty(getCurrentFigure(), __GO_PIXMAP__, &iPixmapMode, jni_bool, 1);
518     }
519     else if (strcmp((l1), "wshow") == 0)
520     {
521         if (getWarningMode())
522         {
523             sciprint(_("WARNING: %s\n"), _("xset(\"wshow\") is obsolete."));
524             sciprint(_("WARNING: %s\n"), _("It will be removed after Scilab 5.4.0."));
525             sciprint(_("WARNING: %s\n"), _("Please use drawlater/drawnow instead."));
526         }
527     }
528     else if (strcmp((l1), "viewport") == 0)
529     {
530         int viewport[4] = {x[0], x[1], 0, 0};
531         getOrCreateDefaultSubwin();
532         setGraphicObjectProperty(getCurrentFigure(), __GO_VIEWPORT__, viewport, jni_int_vector, 2);
533     }
534     else if (strcmp((l1), "wwpc") == 0)
535     {
536         if (getWarningMode())
537         {
538             sciprint(_("WARNING: %s\n"), _("xset(\"wwpc\") is obsolete."));
539             sciprint(_("WARNING: %s\n"), _("It will be removed after Scilab 5.4.0."));
540             sciprint(_("WARNING: %s\n"), _("Please use drawlater/drawnow instead."));
541         }
542     }
543     else if (strcmp((l1), "line mode") == 0)
544     {
545         char *pstSubwinUID = (char*)getOrCreateDefaultSubwin();
546         int iZero = 0;
547         int iOne = 1;
548         if (x[0] == 0)
549         {
550             setGraphicObjectProperty(pstSubwinUID, __GO_LINE_MODE__, &iZero, jni_bool, 1);
551         }
552         else
553         {
554             setGraphicObjectProperty(pstSubwinUID, __GO_LINE_MODE__, &iOne, jni_bool, 1);
555         }
556     }
557     else
558     {
559         Scierror(999, _("%s: Unrecognized input argument: '%s'.\n"), fname, (l1));
560         return 0;
561     }
562
563     AssignOutputVariable(pvApiCtx, 1) = 0;
564     ReturnArguments(pvApiCtx);
565     freeAllocatedSingleString(l1);
566     freeAllocatedSingleString(l2);
567     return 0;
568 }
569 /*--------------------------------------------------------------------------*/
570 int xsetg(char * str, char * str1, int lx0, int lx1)
571 {
572     if (strcmp(str, "fpf") == 0)
573     {
574         strcpy(getFPF(), str1);
575     }
576     else if (strcmp(str, "auto clear") == 0)
577     {
578         int bAutoClear = (int) FALSE;
579
580         if (strcmp(str1, "on") == 0)
581         {
582             bAutoClear = (int) TRUE;
583         }
584
585         setGraphicObjectProperty(getOrCreateDefaultSubwin(), __GO_AUTO_CLEAR__, &bAutoClear, jni_bool, 1);
586     }
587     else if (strcmp(str, "default") == 0)
588     {
589         getFPF()[0] = '\0';
590     }
591     else
592     {
593         Scierror(999, _("%s: Unrecognized input argument '%s'.\n"), "xset(arg,<string>)", str);
594         return -1;
595     }
596     return 0;
597 }
598 /*--------------------------------------------------------------------------*/