a0ab2e2da678f875367962d97ae1c03d8c28e94b
[scilab.git] / scilab / modules / graphics / src / c / getHandleProperty / set_yticks_coord_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  *
7  * This file must be used under the terms of the CeCILL.
8  * This source file is licensed as described in the file COPYING, which
9  * you should have received as part of this distribution.  The terms
10  * are also available at
11  * http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
12  *
13  */
14
15 /*------------------------------------------------------------------------*/
16 /* file: set_ytics_coord_property.c                                       */
17 /* desc : function to modify in Scilab the ytics_coord field of           */
18 /*        a handle                                                        */
19 /*------------------------------------------------------------------------*/
20
21 #include <math.h>
22 #include "setHandleProperty.h"
23 #include "SetProperty.h"
24 #include "getPropertyAssignedValue.h"
25 #include "SetPropertyStatus.h"
26 #include "GetProperty.h"
27 #include "Scierror.h"
28 #include "localization.h"
29 #include "BasicAlgos.h"
30 #include "Format.h"
31 #include "MALLOC.h"
32
33 #include "getGraphicObjectProperty.h"
34 #include "setGraphicObjectProperty.h"
35 #include "graphicObjectProperties.h"
36
37 /*------------------------------------------------------------------------*/
38 /* @TODO: remove stackPointer, nbRow, nbCol which are used */
39 int set_ytics_coord_property(void* _pvCtx, char* pobjUID, size_t stackPointer, int valueType, int nbRow, int nbCol )
40 {
41     BOOL status = FALSE;
42     int N = 0;
43     double * vector = NULL;
44     char c_format[5];
45     int iYNumberTicks = 0;
46     int* piYNumberTicks = &iYNumberTicks;
47     char** stringVector = NULL;
48     double* coordsVector = NULL;
49     int iTicksStyle = 0;
50     int* piTicksStyle = &iTicksStyle;
51     char ticksStyle = 0;
52
53     if ( !isParameterDoubleMatrix( valueType ) )
54     {
55         Scierror(999, _("Wrong type for '%s' property: Real matrix expected.\n"), "ytics_coord");
56         return SET_PROPERTY_ERROR;
57     }
58
59     if ( nbRow != 1 )
60     {
61         Scierror(999, _("Wrong size for '%s' property: Row vector expected.\n"), "ytics_coord");
62         return SET_PROPERTY_ERROR;
63     }
64
65     getGraphicObjectProperty(pobjUID, __GO_Y_NUMBER_TICKS__, jni_int, (void**)&piYNumberTicks);
66
67     if (piYNumberTicks == NULL)
68     {
69         Scierror(999, _("'%s' property does not exist for this handle.\n"),"ytics_coord");
70         return SET_PROPERTY_ERROR;
71     }
72
73     if ( iYNumberTicks == 1 && nbCol != 1 )
74     {
75         Scierror(999, _("Wrong size for '%s' property: Scalar expected.\n"), "ytics_coord");
76         return SET_PROPERTY_ERROR;
77     }
78
79     if ( iYNumberTicks != 1 && nbCol == 1 )
80     {
81         Scierror(999, _("Wrong size for '%s' property: At least %d elements expected.\n"), "ytics_coord", 2);
82         return SET_PROPERTY_ERROR;
83     }
84
85     /* what follows remains here as it was */
86     coordsVector = createCopyDoubleVectorFromStack( stackPointer, nbCol );
87
88     status = setGraphicObjectProperty(pobjUID, __GO_Y_TICKS_COORDS__, coordsVector, jni_double_vector, nbCol);
89
90     if (status == FALSE)
91     {
92         FREE(coordsVector);
93         Scierror(999, _("'%s' property does not exist for this handle.\n"),"ytics_coord");
94         return SET_PROPERTY_ERROR;
95     }
96
97     FREE(coordsVector);
98
99     getGraphicObjectProperty(pobjUID, __GO_TICKS_STYLE__, jni_int, (void**)&piTicksStyle);
100
101     if (iTicksStyle == 0)
102     {
103         ticksStyle = 'v';
104     }
105     else if (iTicksStyle == 1)
106     {
107         ticksStyle = 'r';
108     }
109     else if (iTicksStyle == 2)
110     {
111         ticksStyle = 'i';
112     }
113
114     ComputeXIntervals( pobjUID, ticksStyle, &vector, &N, 0 );
115     ComputeC_format( pobjUID, c_format );
116
117     stringVector = copyFormatedArray( vector, N, c_format, 256 );
118
119     status = setGraphicObjectProperty(pobjUID, __GO_TICKS_LABELS__, stringVector, jni_string_vector, N);
120
121     FREE( vector );
122
123     destroyStringArray(stringVector, N);
124
125     if (status == TRUE)
126     {
127         return SET_PROPERTY_SUCCEED;
128     }
129     else
130     {
131         return SET_PROPERTY_ERROR;
132     }
133
134 }
135 /*------------------------------------------------------------------------*/