533eba5983ce01517cc09c05e2c8b24718de0841
[scilab.git] / scilab / modules / graphics / src / c / getHandleProperty / set_interp_color_vector_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) 2009 - DIGITEO - Pierre Lando
7  * Copyright (C) 2010 - DIGITEO - Manuel Juliachs
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_interp_color_vector_property.c                               */
19 /* desc : function to modify in Scilab the background field of            */
20 /*        a handle                                                        */
21 /*------------------------------------------------------------------------*/
22
23 #include "setHandleProperty.h"
24 #include "SetProperty.h"
25 #include "getPropertyAssignedValue.h"
26 #include "Scierror.h"
27 #include "localization.h"
28 #include "GetProperty.h"
29 #include "SetPropertyStatus.h"
30
31 #include "getGraphicObjectProperty.h"
32 #include "setGraphicObjectProperty.h"
33 #include "graphicObjectProperties.h"
34
35 /*------------------------------------------------------------------------*/
36 int set_interp_color_vector_property(void* _pvCtx, char* pobjUID, size_t stackPointer, int valueType, int nbRow, int nbCol )
37 {
38     BOOL status = FALSE;
39     int iNumElements = 0;
40     int* piNumElements = &iNumElements;
41
42     if ( !isParameterDoubleMatrix( valueType ) )
43     {
44         Scierror(999, _("Wrong type for '%s' property: Real matrix expected.\n"), "interp_color_vector");
45         return SET_PROPERTY_ERROR;
46     }
47
48     getGraphicObjectProperty(pobjUID, __GO_DATA_MODEL_NUM_ELEMENTS__, jni_int, (void **) &piNumElements);
49
50     /*
51      * A way to display a more explicit message would be to first get the
52      * interpolation vector set flag and test it for NULL.
53      */
54     if (piNumElements == NULL)
55     {
56         Scierror(999, _("'%s' property does not exist for this handle.\n"),"data");
57         return SET_PROPERTY_ERROR;
58     }
59
60     if( ( nbCol == 3 && iNumElements == 3 ) ||
61         ( nbCol == 4 && iNumElements == 4 ) )
62     {
63         int tmp[4];
64         getDoubleMatrixFromStack( stackPointer );
65
66         copyDoubleVectorToIntFromStack( stackPointer, tmp, nbCol );
67
68         status = setGraphicObjectProperty(pobjUID, __GO_INTERP_COLOR_VECTOR__, tmp, jni_int_vector, nbCol);
69
70         if (status == TRUE)
71         {
72             return SET_PROPERTY_SUCCEED;
73         }
74         else
75         {
76             Scierror(999, _("'%s' property does not exist for this handle.\n"),"interp_color_vector");
77             return SET_PROPERTY_ERROR;
78         }
79
80     }
81     else
82     {
83         Scierror(999, _("The number of column of the color vector must match the number of points defining the line (which must be %d or %d).\n"),3,4);
84         return SET_PROPERTY_ERROR;
85     }
86 }
87 /*------------------------------------------------------------------------*/