Stop using some useless helpers.
[scilab.git] / scilab / modules / graphics / sci_gateway / c / sci_show_window.c
1 /*
2  * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
3  * Copyright (C) 2006 - INRIA - Fabrice Leray
4  * Copyright (C) 2006 - INRIA - Jean-Baptiste Silvy
5  *
6  * This file must be used under the terms of the CeCILL.
7  * This source file is licensed as described in the file COPYING, which
8  * you should have received as part of this distribution.  The terms
9  * are also available at
10  * http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
11  *
12  */
13
14 /*------------------------------------------------------------------------*/
15 /* file: sci_show_window.c                                                */
16 /* desc : interface for show_window routine                               */
17 /*------------------------------------------------------------------------*/
18
19 #include <string.h>
20
21 #include "gw_graphics.h"
22 #include "getPropertyAssignedValue.h"
23 #include "HandleManagement.h"
24 #include "stack-c.h"
25 #include "Scierror.h"
26 #include "SetProperty.h"
27 #include "GetProperty.h"
28 #include "localization.h"
29 #include "Interaction.h"
30 #include "FigureList.h"
31 #include "CurrentFigure.h"
32 #include "getGraphicObjectProperty.h"
33 #include "setGraphicObjectProperty.h"
34 #include "graphicObjectProperties.h"
35 #include "BuildObjects.h"
36 #include "CurrentSubwin.h"
37 #include "sci_types.h"
38 /*--------------------------------------------------------------------------*/
39 int sci_show_window( char *fname, unsigned long fname_len )
40 {
41     char* pFigureUID = NULL;
42     char* pstrAxesUID = NULL;
43
44     CheckRhs(0, 1);
45     CheckLhs(0, 1);
46
47     if ( Rhs == 1 )
48     {
49         /* the window to show is specified */
50         int paramType    = VarType(1);
51         int nbRow        = 0 ;
52         int nbCol        = 0 ;
53         size_t stackPointer = 0 ;
54         char *type = NULL;
55
56         if ( ( paramType == sci_handles ) )
57         {
58             /* by tis handle */
59             GetRhsVar( 1, GRAPHICAL_HANDLE_DATATYPE, &nbRow, &nbCol, &stackPointer );
60
61             if ( nbRow * nbCol != 1 )
62             {
63                 Scierror(999, _("%s: Wrong size for input argument #%d: A '%s' handle or a real scalar expected.\n"), fname, 1, "Figure");
64                 return -1 ;
65             }
66
67             pFigureUID = (char*)getObjectFromHandle( getHandleFromStack(stackPointer) );
68
69             if (pFigureUID == NULL)
70             {
71                 Scierror(999, _("%s: Handle does not or no longer exists.\n"), fname);
72                 return -1 ;
73             }
74
75             getGraphicObjectProperty(pFigureUID, __GO_TYPE__, jni_string, (void **) &type);
76             if (strcmp(type, __GO_FIGURE__) != 0)
77             {
78                 Scierror(999, _("%s: Wrong type for input argument #%d: A '%s' handle or a real scalar expected.\n"), fname, 1, "Figure");
79                 return -1 ;
80             }
81
82         }
83         else if ( ( paramType == sci_matrix ) )
84         {
85             /* by its number */
86             int winNum = 0;
87             GetRhsVar(1, MATRIX_OF_DOUBLE_DATATYPE, &nbRow, &nbCol, &stackPointer );
88             if ( nbRow * nbCol != 1 )
89             {
90                 Scierror(999, _("%s: Wrong size for input argument #%d: A '%s' handle or a real scalar expected.\n"), fname, 1, "Figure");
91                 return -1 ;
92             }
93             winNum = (int) * (stk(stackPointer));
94             pFigureUID = (char*)getFigureFromIndex(winNum);
95
96             if (pFigureUID == NULL)
97             {
98                 pFigureUID = createNewFigureWithAxes();
99                 setGraphicObjectProperty(pFigureUID, __GO_ID__, &winNum, jni_int, 1);
100                 setCurrentFigure(pFigureUID);
101
102                 getGraphicObjectProperty(pFigureUID, __GO_SELECTED_CHILD__, jni_string,  &pstrAxesUID);
103                 setCurrentSubWin(pstrAxesUID);
104             }
105         }
106         else
107         {
108             Scierror(999, _("%s: Wrong type for input argument #%d: A '%s' handle or a real scalar expected.\n"), fname, 1, "Figure");
109             return -1;
110         }
111     }
112     else
113     {
114         /* Rhs == 0 */
115         /* raise current figure */
116         getOrCreateDefaultSubwin();
117         pFigureUID = (char*)getCurrentFigure();
118     }
119
120     /* Check that the requested figure really exists */
121     if ( pFigureUID == NULL )
122     {
123         Scierror(999, _("%s: '%s' handle does not or no longer exists.\n"), fname, "Figure");
124         return -1 ;
125     }
126
127     /* Actually show the window */
128     showWindow(pFigureUID);
129
130     LhsVar(1) = 0;
131     PutLhsVar();
132
133     return 0;
134 }
135 /*--------------------------------------------------------------------------*/