convert color, addcolor and name2rgb in gataway
[scilab.git] / scilab / modules / graphics / sci_gateway / c / sci_name2rgb.c
1 /*
2  * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
3  * Copyright (C) 2014 - Scilab Enterprises - Antoine ELIAS
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 #include "gw_graphics.h"
13 #include "api_scilab.h"
14 #include "localization.h"
15 #include "Scierror.h"
16 #include "name2rgb.h"
17 #include "CurrentFigure.h"
18 #include "createGraphicObject.h"
19
20 int sci_name2rgb(char *fname, unsigned long fname_len)
21 {
22     SciErr sciErr;
23     int* piAddr = NULL;
24     char* pstColor = NULL;
25     double color[3];
26     CheckInputArgument(pvApiCtx, 1, 1);
27
28     sciErr = getVarAddressFromPosition(pvApiCtx, 1, &piAddr);
29     if (sciErr.iErr)
30     {
31         printError(&sciErr, 0);
32         return 1;
33     }
34
35     if (isStringType(pvApiCtx, piAddr) == FALSE || isScalar(pvApiCtx, piAddr) == FALSE)
36     {
37         Scierror(999, _("%s: Wrong type for input argument #%d: string expected.\n"), fname, 1);
38         return 1;
39     }
40
41     getAllocatedSingleString(pvApiCtx, piAddr, &pstColor);
42     name2rgb(pstColor, color);
43     freeAllocatedSingleString(pstColor);
44
45     if (color[0] == -1 || color[1] == -1 || color[2] == -1)
46     {
47         createEmptyMatrix(pvApiCtx, 2);
48     }
49     else
50     {
51         createMatrixOfDouble(pvApiCtx, 2, 1, 3, color);
52     }
53
54     AssignOutputVariable(pvApiCtx, 1) = 2;
55     ReturnArguments(pvApiCtx);
56     return 0;
57 }