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