Initial step :
[scilab.git] / scilab / modules / graphics / sci_gateway / c / sci_xtitle.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  *
6  * This file must be used under the terms of the CeCILL.
7  * This source file is licensed as described in the file COPYING, which
8  * you should have received as part of this distribution.  The terms
9  * are also available at
10  * http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
11  *
12  */
13
14 /*------------------------------------------------------------------------*/
15 /* file: sci_xtitle.c                                                     */
16 /* desc : interface for xtitle routine                                    */
17 /*------------------------------------------------------------------------*/
18
19 #include "gw_graphics.h"
20 #include "stack-c.h"
21 #include "Scierror.h"
22 #include "SetProperty.h"
23 #include "MALLOC.h"
24 #include "freeArrayOfString.h"
25 #include "localization.h"
26 #include "GraphicSynchronizerInterface.h"
27 #include "DrawingBridge.h"
28 /*--------------------------------------------------------------------------*/
29 int sci_xtitle( char * fname, unsigned long fname_len )
30 {
31   int  narg          ;
32   int  nbLabels      ; /* number of modified labels */
33   int  box      = 0  ;
34   BOOL isBoxSpecified = FALSE ;
35   sciPointObj * psubwin = NULL;
36   sciPointObj * pFigure = NULL;
37   static rhs_opts opts[] = { {-1,"boxed","i" ,0,0,0},
38   {-1,NULL   ,NULL,0,0,0} };
39
40   if (Rhs <= 0)
41   {
42     sci_demo(fname, fname_len);
43     return 0;
44   }
45
46   CheckRhs(1,5);
47
48
49   nbLabels = Rhs ;
50
51   /* get the given options from the name in opts */
52   if ( !get_optionals(fname,opts) )
53   {
54                 /* error */
55           return 0;
56   }
57
58   /* compatibility with previous version in which box was put */
59   /* at the fourth position */
60
61   if ( Rhs == 4 )
62   {
63     int type = GetType(4);
64     if ( type == 1 || type == 8 )/* double or int */
65     {
66       int n,m ;
67       int boxPtr   = -1 ; /* pointer of box on the stack */
68       GetRhsVar(4,MATRIX_OF_INTEGER_DATATYPE,&m,&n,&boxPtr);
69       CheckScalar(4,m,n);
70       box = *istk( boxPtr ) ;
71       nbLabels-- ; /* it is not a label text */
72       isBoxSpecified = TRUE ;
73     }
74   }
75
76   if ( opts[0].position != -1 && !isBoxSpecified )
77   {
78     /* check if "box" is in the options */
79     box = *istk(opts[0].l) ;
80     if ( opts[0].m * opts[0].n != 1 )
81     {
82       /* check size */
83       Scierror( 999, _("%s: Wrong type for input argument: Scalar expected.\n"), fname ) ;
84       return 1 ;
85     }
86     nbLabels-- ; /* it is not a label text */
87   }
88
89   pFigure = sciGetCurrentFigure();
90   psubwin = sciGetCurrentSubWin();
91
92
93   for ( narg = 1 ; narg <= nbLabels ; narg++)
94   {
95     int m,n;
96     char **Str;
97     sciPointObj * modifiedLabel = NULL ;
98
99     GetRhsVar(narg,MATRIX_OF_STRING_DATATYPE,&m,&n,&Str);
100     if ( m*n == 0 )
101         {
102                 continue ;
103         }
104
105     switch(narg)
106     {
107     case 1:
108       modifiedLabel = pSUBWIN_FEATURE(psubwin)->mon_title ;
109       break;
110     case 2:
111       modifiedLabel = pSUBWIN_FEATURE(psubwin)->mon_x_label ;
112           break;
113     case 3:
114       modifiedLabel = pSUBWIN_FEATURE(psubwin)->mon_y_label ;
115       break;
116     case 4:
117       modifiedLabel = pSUBWIN_FEATURE(psubwin)->mon_z_label ;
118     default:
119       break;
120     }
121
122     startFigureDataWriting(pFigure);
123     sciSetText( modifiedLabel, Str, m, n ) ;
124
125     if ( box == 1 )
126     {
127       sciSetIsFilled( modifiedLabel, TRUE ) ;
128     }
129     else
130     {
131       sciSetIsFilled( modifiedLabel, FALSE ) ;
132     }
133     endFigureDataWriting(pFigure);
134
135     freeArrayOfString(Str,m*n);
136
137   }
138
139   sciSetCurrentObj(psubwin);
140   sciDrawObj(pFigure);
141
142   LhsVar(1)=0;
143         C2F(putlhsvar)();
144   return 0;
145 }
146
147 /*--------------------------------------------------------------------------*/