Matplot: handle ARGB data
[scilab.git] / scilab / modules / graphics / src / c / getHandleProperty / set_image_type_property.c
1 /*
2  * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
3  * Copyright (C) 2013 - Scilab Enterprises - Calixte DENIZET
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.1-en.txt
10  *
11  */
12
13 /*------------------------------------------------------------------------*/
14 /* file: set_image_type_property.c                                         */
15 /* desc : function to modify in Scilab the image_type field of             */
16 /*        a matplot handle                                                        */
17 /*------------------------------------------------------------------------*/
18
19 #include "setHandleProperty.h"
20 #include "SetProperty.h"
21 #include "getPropertyAssignedValue.h"
22 #include "Scierror.h"
23 #include "localization.h"
24 #include "SetPropertyStatus.h"
25
26 #include "getGraphicObjectProperty.h"
27 #include "setGraphicObjectProperty.h"
28 #include "graphicObjectProperties.h"
29 #include "stricmp.h"
30
31 #include "Matplot.h"
32
33 /*------------------------------------------------------------------------*/
34 int set_image_type_property(void* _pvCtx, int iObjUID, void* _pvData, int valueType, int nbRow, int nbCol)
35 {
36     BOOL status = FALSE;
37     int imagetype = (int)MATPLOT_INDEX;
38     int type = -1;
39     int *piType = &type;
40
41     if (valueType != sci_strings)
42     {
43         Scierror(999, _("Wrong type for '%s' property: String expected.\n"), "image_type");
44         return SET_PROPERTY_ERROR;
45     }
46
47     getGraphicObjectProperty(iObjUID, __GO_TYPE__, jni_int, (void **)&piType);
48     if (type != __GO_MATPLOT__)
49     {
50         Scierror(999, _("Incompatible type for property %s.\n"), "image_type");
51         return SET_PROPERTY_ERROR;
52     }
53
54     if (stricmp((char*)_pvData, "rgb") == 0)
55     {
56         imagetype = (int)MATPLOT_RGB;
57     }
58     else if (stricmp((char*)_pvData, "rgba") == 0)
59     {
60         imagetype = (int)MATPLOT_RGBA;
61     }
62     else if (stricmp((char*)_pvData, "argb") == 0)
63     {
64         imagetype = (int)MATPLOT_ARGB;
65     }
66     else if (stricmp((char*)_pvData, "gray") == 0)
67     {
68         imagetype = (int)MATPLOT_GRAY;
69     }
70     else if (stricmp((char*)_pvData, "index") == 0)
71     {
72         imagetype = (int)MATPLOT_INDEX;
73     }
74     else if (stricmp((char*)_pvData, "red") == 0)
75     {
76         imagetype = (int)MATPLOT_RED;
77     }
78     else if (stricmp((char*)_pvData, "green") == 0)
79     {
80         imagetype = (int)MATPLOT_GREEN;
81     }
82     else if (stricmp((char*)_pvData, "blue") == 0)
83     {
84         imagetype = (int)MATPLOT_BLUE;
85     }
86     else if (stricmp((char*)_pvData, "rgb332") == 0)
87     {
88         imagetype = (int)MATPLOT_RGB_332;
89     }
90     else if (stricmp((char*)_pvData, "rgb444") == 0)
91     {
92         imagetype = (int)MATPLOT_RGB_444;
93     }
94     else if (stricmp((char*)_pvData, "rgba4444") == 0)
95     {
96         imagetype = (int)MATPLOT_RGBA_4444;
97     }
98     else if (stricmp((char*)_pvData, "rgb555") == 0)
99     {
100         imagetype = (int)MATPLOT_RGB_555;
101     }
102     else if (stricmp((char*)_pvData, "rgba5551") == 0)
103     {
104         imagetype = (int)MATPLOT_RGBA_5551;
105     }
106     else
107     {
108         Scierror(999, _("Wrong value for '%s' property: Must be in the set {%s}.\n"), "image_type", "rgb, rgba, gray, index");
109         return SET_PROPERTY_ERROR;
110     }
111
112     status = setGraphicObjectProperty(iObjUID, __GO_DATA_MODEL_MATPLOT_IMAGE_TYPE__, &imagetype, jni_int, 1);
113     if (status == TRUE)
114     {
115         return SET_PROPERTY_SUCCEED;
116     }
117     else
118     {
119         Scierror(999, _("Invalid image type for this handle.\n"));
120         return SET_PROPERTY_ERROR;
121     }
122 }
123 /*------------------------------------------------------------------------*/