Graphics: return a null pointer in C when property does not exist
[scilab.git] / scilab / modules / graphics / src / c / getHandleProperty / get_box_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-2011 - DIGITEO - Manuel Juliachs
8  * Copyright (C) 2011 - DIGITEO - Vincent Couvert
9  *
10  * This file must be used under the terms of the CeCILL.
11  * This source file is licensed as described in the file COPYING, which
12  * you should have received as part of this distribution.  The terms
13  * are also available at
14  * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
15  *
16  */
17
18 /*------------------------------------------------------------------------*/
19 /* file: get_box_property.c                                               */
20 /* desc : function to retrieve in Scilab the box field of                 */
21 /*        a handle                                                        */
22 /*------------------------------------------------------------------------*/
23
24 #include <string.h>
25
26 #include "getHandleProperty.h"
27 #include "returnProperty.h"
28 #include "Scierror.h"
29 #include "localization.h"
30
31 #include "getGraphicObjectProperty.h"
32 #include "graphicObjectProperties.h"
33
34 /*------------------------------------------------------------------------*/
35 int get_box_property(void* _pvCtx, char* pobjUID)
36 {
37     int type = -1;
38     int *piType = &type;
39
40     getGraphicObjectProperty(pobjUID, __GO_TYPE__, jni_int, (void **) &piType);
41
42     if (piType == NULL)
43     {
44         Scierror(999, _("'%s' property does not exist for this handle.\n"), "type");
45         return -1;
46     }
47
48
49     /*
50     * Required since the Box property is implemented differently for the Axes and Text
51     * objects (respectively as an Integer and a Boolean).
52     * To be corrected
53     */
54     switch (type)
55     {
56         case __GO_AXES__ :
57         {
58             int iBoxType = 0;
59             int* piBoxType = &iBoxType;
60
61             getGraphicObjectProperty(pobjUID, __GO_BOX_TYPE__, jni_int, (void **) &piBoxType);
62
63             if (piBoxType == NULL)
64             {
65                 Scierror(999, _("'%s' property does not exist for this handle.\n"), "box");
66                 return -1;
67             }
68
69             if (iBoxType == 0)
70             {
71                 return sciReturnString(_pvCtx, "off");
72             }
73             else if (iBoxType == 1)
74             {
75                 return sciReturnString(_pvCtx, "on");
76             }
77             else if (iBoxType == 2)
78             {
79                 return sciReturnString(_pvCtx, "hidden_axes");
80             }
81             else if (iBoxType == 3)
82             {
83                 return sciReturnString(_pvCtx, "back_half");
84             }
85
86         }
87         break;
88         case __GO_TEXT__ :
89         {
90             int iBox = 0;
91             int* piBox = &iBox;
92
93             getGraphicObjectProperty(pobjUID, __GO_BOX__, jni_bool, (void **) &piBox);
94
95             if (piBox == NULL)
96             {
97                 Scierror(999, _("'%s' property does not exist for this handle.\n"), "box");
98                 return -1;
99             }
100
101             if (iBox)
102             {
103                 return sciReturnString(_pvCtx, "on");
104             }
105             else
106             {
107                 return sciReturnString(_pvCtx, "off");
108             }
109
110         }
111         break;
112         default :
113         {
114             Scierror(999, _("'%s' property does not exist for this handle.\n"), "box");
115             return -1;
116         }
117     }
118
119     return -1;
120 }
121 /*------------------------------------------------------------------------*/