third step, cleanning english mistakes and special cases
[scilab.git] / scilab / modules / graphics / src / c / getHandleProperty / set_x_ticks_property.c
1 /*------------------------------------------------------------------------*/
2 /* file: set_x_ticks_property.c                                           */
3 /* Copyright INRIA 2006                                                   */
4 /* Authors : Fabrice Leray, Allan Cornet, Jean-Baptiste Silvy             */
5 /* desc : function to modify in Scilab the x_ticks field of               */
6 /*        a handle                                                        */
7 /*------------------------------------------------------------------------*/
8
9 #include "setHandleProperty.h"
10 #include "SetProperty.h"
11 #include "GetProperty.h"
12 #include "getPropertyAssignedValue.h"
13 #include "sciprint.h"
14 #include "SetPropertyStatus.h"
15 #include "CheckTicksProperty.h"
16 #include "MALLOC.h"
17 #include "BasicAlgos.h"
18 #include "DrawObjects.h"
19
20 /*------------------------------------------------------------------------*/
21 int set_x_ticks_property( sciPointObj * pobj, int stackPointer, int valueType, int nbRow, int nbCol )
22 {
23   AssignedList * tlist     = NULL ;
24   sciSubWindow * ppSubWin  = NULL ;
25   int            nbTicsRow = 0    ;
26   int            nbTicsCol = 0    ;
27
28   if ( !isParameterTlist( valueType ) )
29   {
30     sciprint(_("Incompatible type for property %s.\n"),"x_ticks") ;
31     return SET_PROPERTY_ERROR ;
32   }
33
34   if ( sciGetEntityType(pobj) != SCI_SUBWIN )
35   {
36     sciprint(_("%s property does not exist for this handle.\n"),"x_ticks") ;
37     return SET_PROPERTY_ERROR ;
38   }
39
40   ppSubWin = pSUBWIN_FEATURE(pobj) ;
41
42   tlist = createTlistForTicks() ;
43
44   if ( tlist == NULL )
45   {
46     return SET_PROPERTY_ERROR ;
47   }
48
49   /* locations */
50   FREE( ppSubWin->axes.u_xgrads ) ;
51   ppSubWin->axes.u_xgrads = NULL ;
52
53   destroyStringArray( ppSubWin->axes.u_xlabels, ppSubWin->axes.u_nxgrads ) ;
54   ppSubWin->axes.u_xlabels = NULL ;
55
56   ppSubWin->axes.u_nxgrads = 0 ;
57
58   ppSubWin->axes.u_xgrads = createCopyDoubleMatrixFromList( tlist, &nbTicsRow, &nbTicsCol ) ;
59
60   if ( ppSubWin->axes.u_xgrads == NULL )
61   {
62     if ( nbTicsRow == -1 )
63     {
64       sciprint("Unable to assigned tics, memory full.\n") ;
65       return SET_PROPERTY_ERROR ;
66     }
67     /* empty matrix nothing to do*/
68     return SET_PROPERTY_SUCCEED ;
69   }
70
71   if ( ppSubWin->logflags[0] == 'l' )
72   {
73     int  i ;
74     for ( i = 0 ; i < nbTicsCol * nbTicsCol ; i++ )
75     {
76       ppSubWin->axes.u_xgrads[i] = log10( ppSubWin->axes.u_xgrads[i] ) ;
77     }
78   }
79   else
80   {
81      /* Nb of subtics computation and storage */ /* F.Leray 07.10.04 */
82     ppSubWin->axes.nbsubtics[0] = ComputeNbSubTics( pobj,ppSubWin->axes.u_nxgrads,'n',NULL,ppSubWin->axes.nbsubtics[0] ) ;
83   }
84
85   /*  labels */
86
87   ppSubWin->axes.u_xlabels = createCopyStringMatrixFromList( tlist, &nbTicsRow, &nbTicsCol ) ;
88
89   ppSubWin->axes.u_nxgrads = nbTicsRow * nbTicsCol ;
90   ppSubWin->axes.auto_ticks[0] = FALSE ;
91
92   destroyAssignedList( tlist ) ;
93
94   return SET_PROPERTY_SUCCEED ;
95
96 }
97 /*------------------------------------------------------------------------*/