44aea5e5ca5f825b2e3bc26bbcf13450bd81cf4f
[scilab.git] / scilab / modules / graphics / src / c / getHandleProperty / set_z_ticks_property.c
1 /*
2  * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
3  * Copyright (C) 2004-2006 - INRIA - Fabrice Leray
4  * Copyright (C) 2006 - INRIA - Allan Cornet
5  * Copyright (C) 2006 - INRIA - Jean-Baptiste Silvy
6  * Copyright (C) 2010 - DIGITEO - Manuel Juliachs
7  * Copyright (C) 2012 - Scilab Enterprises - Bruno JOFRET
8  *
9  * This file must be used under the terms of the CeCILL.
10  * This source file is licensed as described in the file COPYING, which
11  * you should have received as part of this distribution.  The terms
12  * are also available at
13  * http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
14  *
15  */
16
17 /*------------------------------------------------------------------------*/
18 /* file: set_z_ticks_property.c                                           */
19 /* desc : function to modify in Scilab the z_ticks field of               */
20 /*        a handle                                                        */
21 /*------------------------------------------------------------------------*/
22 #include "setHandleProperty.h"
23 #include "SetProperty.h"
24 #include "GetProperty.h"
25 #include "getPropertyAssignedValue.h"
26 #include "Scierror.h"
27 #include "localization.h"
28 #include "SetPropertyStatus.h"
29 #include "CheckTicksProperty.h"
30 #include "MALLOC.h"
31 #include "BasicAlgos.h"
32 #include "DrawObjects.h"
33 #include "freeArrayOfString.h"
34 #include "loadTextRenderingAPI.h"
35
36 #include "setGraphicObjectProperty.h"
37 #include "graphicObjectProperties.h"
38
39 /*------------------------------------------------------------------------*/
40 /* @TODO: remove stackPointer, nbRow, nbCol which are used */
41 int set_z_ticks_property(void* _pvCtx, char* pobjUID, size_t stackPointer, int valueType, int nbRow, int nbCol )
42 {
43     BOOL autoTicks = FALSE;
44     BOOL status = FALSE;
45     AssignedList * tlist     = NULL ;
46     int            nbTicsRow = 0    ;
47     int            nbTicsCol = 0    ;
48
49     double* userGrads = NULL;
50     char** userLabels = NULL;
51
52     if ( !isParameterTlist( valueType ) )
53     {
54         Scierror(999, _("Wrong type for '%s' property: Typed list expected.\n"), "z_ticks");
55         return SET_PROPERTY_ERROR ;
56     }
57
58     tlist = createTlistForTicks();
59
60     if ( tlist == NULL )
61     {
62         return SET_PROPERTY_ERROR;
63     }
64
65     /* locations */
66     userGrads = createCopyDoubleMatrixFromList( tlist, &nbTicsRow, &nbTicsCol );
67
68     if ( userGrads == NULL && nbTicsRow == -1 )
69     {
70         // if nbTicsRow = 0, it's just an empty matrix
71         Scierror(999, _("%s: No more memory.\n"),"set_z_ticks_property");
72         return SET_PROPERTY_ERROR ;
73     }
74
75     /* Automatic ticks must be first deactivated in order to set user ticks */
76     autoTicks = FALSE;
77
78     setGraphicObjectProperty(pobjUID, __GO_Z_AXIS_AUTO_TICKS__, &autoTicks, jni_bool, 1);
79
80     status = setGraphicObjectProperty(pobjUID, __GO_Z_AXIS_TICKS_LOCATIONS__, userGrads, jni_double_vector, nbTicsRow*nbTicsCol);
81
82     if (status == FALSE)
83     {
84         Scierror(999, _("'%s' property does not exist for this handle.\n"),"z_ticks");
85         FREE(userGrads);
86         return SET_PROPERTY_ERROR;
87     }
88
89     /*  labels */
90     // Here we check the size of "locations" instead of "labels", but they have the same size.
91     // We need to check the size to not be 0 because an empty matrix is a matrix of double
92     // and 'getCurrentStringMatrixFromList' expect a matrix of string (see bug 5148).
93     // P.Lando
94     if( nbTicsCol * nbTicsRow )
95     {
96         userLabels = getCurrentStringMatrixFromList( tlist, &nbTicsRow, &nbTicsCol );
97         /* Check if we should load LaTex / MathML Java libraries */
98         loadTextRenderingAPI(userLabels, nbTicsCol, nbTicsRow);
99
100         setGraphicObjectProperty(pobjUID, __GO_Z_AXIS_TICKS_LABELS__, userLabels, jni_string_vector, nbTicsRow*nbTicsCol);
101     }
102     else
103     {
104         /* To be implemented */
105 #if 0
106         ppSubWin->axes.u_zlabels = NULL;
107 #endif
108     }
109
110     if (userGrads != NULL)
111     {
112         FREE(userGrads);
113     }
114
115     destroyAssignedList( tlist );
116
117     return SET_PROPERTY_SUCCEED;
118
119 }
120 /*------------------------------------------------------------------------*/