7ee990363c93e953057db258887bf3f9d550e055
[scilab.git] / scilab / modules / graphics / src / c / getHandleProperty / set_y_ticks_property.c
1 /*------------------------------------------------------------------------*/
2 /* file: set_y_ticks_property.c                                           */
3 /* Copyright INRIA 2006                                                   */
4 /* Authors : Fabrice Leray, Allan Cornet, Jean-Baptiste Silvy             */
5 /* desc : function to modify in Scilab the y_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_y_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"),"y_ticks") ;
31     return SET_PROPERTY_ERROR ;
32   }
33
34   if ( sciGetEntityType(pobj) != SCI_SUBWIN )
35   {
36     sciprint( "y_ticks property does not exists for this handle.\n" ) ;
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_ygrads ) ;
51   ppSubWin->axes.u_ygrads = NULL ;
52
53   destroyStringArray( ppSubWin->axes.u_ylabels, ppSubWin->axes.u_nygrads ) ;
54   ppSubWin->axes.u_ylabels = NULL ;
55
56   ppSubWin->axes.u_nygrads = 0 ;
57
58   ppSubWin->axes.u_ygrads = createCopyDoubleMatrixFromList( tlist, &nbTicsRow, &nbTicsCol ) ;
59
60   if ( ppSubWin->axes.u_ygrads == 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[1] == 'l' )
72   {
73     int  i ;
74     for ( i = 0 ; i < nbTicsRow * nbTicsCol ; i++ )
75     {
76       ppSubWin->axes.u_ygrads[i] = log10( ppSubWin->axes.u_ygrads[i] ) ;
77     }
78   }
79   else
80   {
81     /* Nb of subtics computation and storage */ /* F.Leray 07.10.04 */
82     ppSubWin->axes.nbsubtics[1] = ComputeNbSubTics( pobj,ppSubWin->axes.u_nygrads,'n',NULL,ppSubWin->axes.nbsubtics[1] ) ;
83   }
84
85   /*  labels */
86   ppSubWin->axes.u_ylabels = createCopyStringMatrixFromList( tlist, &nbTicsRow, &nbTicsCol ) ;
87
88   ppSubWin->axes.u_nygrads = nbTicsRow * nbTicsCol ;
89   ppSubWin->axes.auto_ticks[1] = FALSE ;
90
91   destroyAssignedList( tlist ) ;
92
93   return SET_PROPERTY_SUCCEED ;
94
95 }
96 /*------------------------------------------------------------------------*/