Stop using some useless helpers.
[scilab.git] / scilab / modules / graphics / src / c / getHandleProperty / set_current_figure_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) 2012 - Scilab Enterprises - Bruno JOFRET
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_current_figure_property.c                                    */
19 /* desc : function to modify in Scilab the current_figure field of        */
20 /*        a handle                                                        */
21 /*------------------------------------------------------------------------*/
22
23 #include <stdio.h>
24
25 #include "setHandleProperty.h"
26 #include "SetProperty.h"
27 #include "GetProperty.h"
28 #include "getPropertyAssignedValue.h"
29 #include "Scierror.h"
30 #include "localization.h"
31 #include "SetPropertyStatus.h"
32 #include "HandleManagement.h"
33 #include "sci_types.h"
34
35 #include "BuildObjects.h"
36 #include "CurrentFigure.h"
37 #include "setGraphicObjectProperty.h"
38 #include "getGraphicObjectProperty.h"
39 #include "graphicObjectProperties.h"
40 #include "FigureList.h"
41 #include "CurrentSubwin.h"
42
43
44 /*------------------------------------------------------------------------*/
45 int set_current_figure_property(void* _pvCtx, char* pobjUID, size_t stackPointer, int valueType, int nbRow, int nbCol )
46 {
47     int figNum = -1 ;
48     int res = -1 ;
49     char* pFigureUID = NULL;
50     char* curFigUID = NULL;
51     char* pstrAxesUID = NULL;
52
53     if (pobjUID != NULL)
54     {
55         /* This property should not be called on an handle */
56         Scierror(999, _("'%s' property does not exist for this handle.\n"), "current_figure");
57         return SET_PROPERTY_ERROR;
58     }
59
60     if (nbRow * nbCol != 1)
61     {
62         Scierror(999, _("Wrong size for '%s' property: A scalar expected.\n"), "current_figure");
63         return SET_PROPERTY_ERROR ;
64     }
65
66     if ( ( valueType == sci_handles ) )
67     {
68
69         curFigUID = (char*)getObjectFromHandle( getHandleFromStack( stackPointer ) ) ;
70
71         if ( curFigUID == NULL )
72         {
73             Scierror(999, _("'%s' handle does not or no longer exists.\n"), "Figure");
74             return SET_PROPERTY_ERROR ;
75         }
76         setCurrentFigure(curFigUID);
77         getGraphicObjectProperty(curFigUID, __GO_SELECTED_CHILD__, jni_string,  &pstrAxesUID);
78         setCurrentSubWin(pstrAxesUID);
79
80         return 0;
81     }
82     else if ( ( valueType == sci_matrix ) )
83     {
84         figNum = (int) getDoubleFromStack( stackPointer ) ;
85     }
86     else
87     {
88         Scierror(999, _("Wrong type for '%s' property: Real or '%s' handle expected.\n"), "current_figure", "Figure") ;
89         return SET_PROPERTY_ERROR ;
90     }
91
92     /* Retrieve figure with figNum */
93     pFigureUID = (char*)getFigureFromIndex(figNum);
94
95     if (pFigureUID == NULL)
96     {
97         // No Figure available with this index, should create it  !!
98         pFigureUID = createNewFigureWithAxes();
99         setGraphicObjectProperty(pFigureUID, __GO_ID__, &figNum, jni_int, 1);
100     }
101     setCurrentFigure(pFigureUID);
102
103     getGraphicObjectProperty(pFigureUID, __GO_SELECTED_CHILD__, jni_string,  &pstrAxesUID);
104     setCurrentSubWin(pstrAxesUID);
105
106     return 0;
107 }
108 /*------------------------------------------------------------------------*/