2b00e5902c1d393ad9d12082af2fc04c1120dcaa
[scilab.git] / scilab / modules / graphics / src / c / getHandleProperty / set_grid_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  *
8  * This file must be used under the terms of the CeCILL.
9  * This source file is licensed as described in the file COPYING, which
10  * you should have received as part of this distribution.  The terms
11  * are also available at
12  * http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
13  *
14  */
15
16 /*------------------------------------------------------------------------*/
17 /* file: set_grid_property.c                                              */
18 /* desc : function to modify in Scilab the grid field of                  */
19 /*        a handle                                                        */
20 /*------------------------------------------------------------------------*/
21
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
30 #include "getGraphicObjectProperty.h"
31 #include "setGraphicObjectProperty.h"
32 #include "graphicObjectProperties.h"
33
34 /*------------------------------------------------------------------------*/
35 int set_grid_property(void* _pvCtx, char* pobjUID, size_t stackPointer, int valueType, int nbRow, int nbCol )
36 {
37     BOOL status[3];
38     int i = 0;
39     int iGridColor = 0;
40     int* piGridColor = &iGridColor;
41     int gridStyles[3];
42     char* gridColorPropertiesNames[3] = {__GO_X_AXIS_GRID_COLOR__, __GO_Y_AXIS_GRID_COLOR__, __GO_Z_AXIS_GRID_COLOR__};
43
44     double * values = getDoubleMatrixFromStack( stackPointer );
45
46     if ( !isParameterDoubleMatrix( valueType ) )
47     {
48         Scierror(999, _("Wrong type for '%s' property: Real matrix expected.\n"), "grid");
49         return SET_PROPERTY_ERROR;
50     }
51
52     if ( nbRow != 1 || nbCol > 3 )
53     {
54         Scierror(999, _("Wrong size for '%s' property: Must be in the set {%s}.\n"), "grid", "1x2, 1x3");
55         return SET_PROPERTY_ERROR ;
56     }
57
58     getGraphicObjectProperty(pobjUID, gridColorPropertiesNames[0], jni_int, (void**)&piGridColor);
59
60     if (piGridColor == NULL)
61     {
62         Scierror(999, _("'%s' property does not exist for this handle.\n"),"grid");
63         return SET_PROPERTY_ERROR;
64     }
65
66     gridStyles[0] = iGridColor;
67
68     getGraphicObjectProperty(pobjUID, gridColorPropertiesNames[1], jni_int, (void**)&piGridColor);
69     gridStyles[1] = iGridColor;
70
71     getGraphicObjectProperty(pobjUID, gridColorPropertiesNames[2], jni_int, (void**)&piGridColor);
72     gridStyles[2] = iGridColor;
73
74     for (  i = 0 ; i < nbCol ; i++ )
75     {
76         int curValue = (int) values[i];
77         if ( values[i] < -1 || !sciCheckColorIndex(pobjUID, curValue) )
78         {
79             Scierror(999, _("Wrong value for '%s' property: Must be -1 or a valid color index.\n"), "grid");
80             return SET_PROPERTY_ERROR ;
81         }
82         gridStyles[i] = curValue ;
83     }
84
85     status[0] = setGraphicObjectProperty(pobjUID, gridColorPropertiesNames[0], &gridStyles[0], jni_int, 1);
86     status[1] = setGraphicObjectProperty(pobjUID, gridColorPropertiesNames[1], &gridStyles[1], jni_int, 1);
87     status[2] = setGraphicObjectProperty(pobjUID, gridColorPropertiesNames[2], &gridStyles[2], jni_int, 1);
88
89     if (status[0] == TRUE && status[1] == TRUE && status[2] == TRUE)
90     {
91         return SET_PROPERTY_SUCCEED;
92     }
93     else
94     {
95         Scierror(999, _("'%s' property does not exist for this handle.\n"),"grid");
96         return SET_PROPERTY_ERROR;
97     }
98
99 }
100 /*------------------------------------------------------------------------*/