Manage vectors of colors in name2rgb.
[scilab.git] / scilab / modules / graphics / src / c / getHandleProperty / set_sizes_property.c
1 /*
2  * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
3  * Copyright (C) 2015 - Scilab Enterprises - Juergen KOCH
4  *
5  * This file must be used under the terms of the CeCILL.
6  * This source file is licensed as described in the file COPYING, which
7  * you should have received as part of this distribution.  The terms
8  * are also available at
9  * http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
10  *
11  */
12
13 /*------------------------------------------------------------------------*/
14 /* file: set_sizes_property.c                                             */
15 /* desc : function to modify in Scilab the polylines sizes                 */
16 /*------------------------------------------------------------------------*/
17
18 #include "MALLOC.h"
19 #include "setHandleProperty.h"
20 #include "SetProperty.h"
21 #include "getPropertyAssignedValue.h"
22 #include "Scierror.h"
23 #include "localization.h"
24 #include "GetProperty.h"
25 #include "SetPropertyStatus.h"
26
27 #include "getGraphicObjectProperty.h"
28 #include "setGraphicObjectProperty.h"
29 #include "graphicObjectProperties.h"
30
31 /*------------------------------------------------------------------------*/
32 int set_sizes_property(void* _pvCtx, int iObjUID, void* _pvData, int valueType, int nbRow, int nbCol )
33 {
34     BOOL status = FALSE;
35     int iNumElements = 0;
36     int* piNumElements = &iNumElements;
37
38     if (valueType != sci_matrix)
39     {
40         Scierror(999, _("Wrong type for '%s' property: Real matrix expected.\n"), "sizes");
41         return SET_PROPERTY_ERROR;
42     }
43
44     getGraphicObjectProperty(iObjUID, __GO_DATA_MODEL_NUM_ELEMENTS__, jni_int, (void **) &piNumElements);
45     if (piNumElements == NULL)
46     {
47         Scierror(999, _("'%s' property does not exist for this handle.\n"), "sizes");
48         return SET_PROPERTY_ERROR;
49     }
50
51     if (nbCol == 0)
52     {
53         int numSizes = 0;
54         status = setGraphicObjectProperty(iObjUID, __GO_NUM_SIZES__, &numSizes, jni_int, 1);
55         if (status == FALSE)
56         {
57             Scierror(999, _("'%s' property does not exist for this handle.\n"), "sizes");
58             return SET_PROPERTY_ERROR;
59         }
60         setGraphicObjectProperty(iObjUID, __GO_SIZES__, NULL, jni_int_vector, 0);
61
62         return SET_PROPERTY_SUCCEED;
63     }
64
65     if (nbCol == iNumElements)
66     {
67         int * tmp = MALLOC(nbCol * sizeof(int));
68         copyDoubleVectorToIntFromStack(_pvData, tmp, nbCol);
69
70         status = setGraphicObjectProperty(iObjUID, __GO_SIZES__, tmp, jni_int_vector, nbCol);
71         if (status == TRUE)
72         {
73             int numSizes = nbCol;
74             setGraphicObjectProperty(iObjUID, __GO_NUM_SIZES__, &numSizes, jni_int, 1);
75             FREE(tmp);
76             return SET_PROPERTY_SUCCEED;
77         }
78         else
79         {
80             FREE(tmp);
81             Scierror(999, _("'%s' property does not exist for this handle.\n"), "sizes");
82             return SET_PROPERTY_ERROR;
83         }
84     }
85     else
86     {
87         Scierror(999, _("The number of column of the size vector must match the number of points defining the line.\n"));
88         return SET_PROPERTY_ERROR;
89     }
90 }
91 /*------------------------------------------------------------------------*/