02870f8ab209dd0eef029979dfe329cc3256f9c0
[scilab.git] / scilab / modules / graphics / src / c / getHandleProperty / get_x_ticks_property.c
1 /*------------------------------------------------------------------------*/
2 /* file: get_x_ticks_property.c                                           */
3 /* Copyright INRIA 2006                                                   */
4 /* Authors : Fabrice Leray, Allan Cornet, Jean-Baptiste Silvy             */
5 /* desc : function to retrieve in Scilab the x_ticks field of             */
6 /*        a handle                                                        */
7 /*------------------------------------------------------------------------*/
8
9 #include "getHandleProperty.h"
10 #include "GetProperty.h"
11 #include "sciprint.h"
12 #include "Format.h"
13 #include "get_ticks_utils.h"
14 #include "MALLOC.h"
15 #include "BasicAlgos.h"
16
17 /*------------------------------------------------------------------------*/
18 int get_x_ticks_property( sciPointObj * pobj )
19 {
20   sciSubWindow * ppSubWin = NULL ;
21   BOOL autoTicks[3];
22   char c_format[5];
23   if ( sciGetEntityType( pobj ) != SCI_SUBWIN )
24   {
25     sciprint("x_ticks property does not exists for this label.\n") ;
26     return -1 ;
27   }
28
29   ppSubWin = pSUBWIN_FEATURE( pobj ) ;
30
31   /* compute the c_format used for convert double to char (for labels) */
32   ChooseGoodFormat( c_format, ppSubWin->logflags[0], ppSubWin->axes.xgrads, ppSubWin->axes.nxgrads ) ;
33
34   sciGetAutoTicks(pobj, autoTicks);
35   if( autoTicks[0] )
36   {
37     int       nbtics        = ppSubWin->axes.nxgrads ;
38     char   ** tickslabel    = NULL                   ;
39     double *  ticksPosition = NULL                   ;
40     
41     ticksPosition = ReBuildTicksLog2Lin( ppSubWin->logflags[0], nbtics, ppSubWin->axes.xgrads ) ;
42     
43     /* convert double to strings */
44     tickslabel = copyFormatedArray( ticksPosition, nbtics, c_format, 100 ) ;
45     
46     /* construction de la tlist */
47     buildTListForTicks( ticksPosition, tickslabel, nbtics ) ;
48     
49     /* free tickslabel */
50     destroyStringArray( tickslabel, nbtics ) ;
51     FREE( ticksPosition ) ;
52     return 0 ;
53   }
54   else /* we display the x tics specified by the user*/
55   {
56     int      nbtics        = ppSubWin->axes.u_nxgrads ;
57     double * ticksPosition = ReBuildTicksLog2Lin(ppSubWin->logflags[0],nbtics,ppSubWin->axes.u_xgrads) ;
58     
59     buildTListForTicks( ticksPosition, ppSubWin->axes.u_xlabels, nbtics ) ;
60     
61     FREE( ticksPosition ) ;
62     return 0 ;
63   }
64
65 }
66 /*------------------------------------------------------------------------*/