Replace Min, Max and Abs by std::min, std::max and std::abs
[scilab.git] / scilab / modules / gui / sci_gateway / cpp / sci_printfigure.cpp
1 /*
2  * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
3  * Copyright (C) 2008 - INRIA - Vincent COUVERT
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 #define NOMINMAX
14 #include "CallScilabBridge.hxx"
15 #include "GiwsException.hxx"
16
17 extern "C"
18 {
19 #include "api_scilab.h"
20 #include "Scierror.h"
21 #include "sci_mode.h"
22 #include "localization.h"
23 #include "gw_gui.h"
24 #include "getScilabJavaVM.h"
25 #include "FigureList.h"
26 }
27 /*--------------------------------------------------------------------------*/
28 using namespace org_scilab_modules_gui_bridge;
29
30 /*--------------------------------------------------------------------------*/
31 int sci_printfigure(char *fname, void* pvApiCtx)
32 {
33     SciErr sciErr;
34
35     int n1 = 0, m1 = 0;
36     int num_win = -2;
37     int status  = 0;
38
39     int * piAddr1   = NULL;
40     double* l1      = NULL;
41
42     nbInputArgument(pvApiCtx) = std::max(0, nbInputArgument(pvApiCtx));
43     CheckInputArgument(pvApiCtx, 1, 1);
44     CheckOutputArgument(pvApiCtx, 0, 1);
45
46     if (getScilabMode() != SCILAB_NWNI)
47     {
48         if (nbInputArgument(pvApiCtx) == 1)
49         {
50             sciErr = getVarAddressFromPosition(pvApiCtx, 1, &piAddr1);
51             if (sciErr.iErr)
52             {
53                 printError(&sciErr, 0);
54                 return 1;
55             }
56             sciErr = getMatrixOfDouble(pvApiCtx, piAddr1, &m1, &n1, &l1);
57             if (sciErr.iErr)
58             {
59                 Scierror(202, _("%s: Wrong type for argument #%d: A real expected.\n"), fname, 1);
60                 printError(&sciErr, 0);
61                 return 1;
62             }
63
64             if (!isScalar(pvApiCtx, piAddr1))
65             {
66                 Scierror(999, _("%s: Wrong size for input argument #%d: A real expected.\n"), fname, 1);
67                 return 1;
68             }
69             num_win = (int) * l1;
70
71             if (num_win >= 0)
72             {
73                 /* Call Java */
74                 try
75                 {
76                     status = (int)CallScilabBridge::printFigure(getScilabJavaVM(), getFigureFromIndex(num_win), true, true); /* postscript mode and display dialog */
77                 }
78                 catch (const GiwsException::JniException & e)
79                 {
80                     Scierror(999, _("%s: A Java exception arisen:\n%s"), fname, e.whatStr().c_str());
81                     return 1;
82                 }
83
84                 if (createScalarBoolean(pvApiCtx, nbInputArgument(pvApiCtx) + 1, status))
85                 {
86                     Scierror(999, _("%s: Memory allocation error.\n"), fname);
87                     return 1;
88                 }
89
90                 AssignOutputVariable(pvApiCtx, 1) = nbInputArgument(pvApiCtx) + 1;
91                 returnArguments(pvApiCtx);
92                 return 0;
93             }
94             else
95             {
96                 Scierror(999, _("%s: Wrong value for input argument #%d: Must be >= %d expected.\n"), fname, 1, 0);
97                 return 1;
98             }
99         }
100         else
101         {
102             Scierror(999, _("%s: Wrong type for input argument #%d: A real expected.\n"), fname, 2);
103             return 1;
104         }
105     }
106     else
107     {
108         Scierror(999, _("%s: Function not available in NWNI mode.\n"), fname);
109         return 1;
110     }
111     return 0;
112 }
113
114 /*--------------------------------------------------------------------------*/