Bug 12235 fixed: Matplot did not update on color_map change
[scilab.git] / scilab / modules / renderer / src / cpp / RendererFontManager.cpp
1
2 /*
3  * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
4  * Copyright (C) 2008 - INRIA - Allan CORNET
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 #include "XlFontManager.hxx"
16
17 extern "C" {
18 #include <stdlib.h>
19 #include "getScilabJavaVM.h"
20 #include "RendererFontManager.h"
21 #include "MALLOC.h"
22 #ifdef _MSC_VER
23 #include "strdup_windows.h"
24 #endif
25 }
26
27 using namespace org_scilab_modules_renderer_utils_textRendering;
28
29 /*--------------------------------------------------------------------------*/
30 int getNbInstalledFonts(void)
31 {
32         XlFontManager * fntmgr = new XlFontManager(getScilabJavaVM());
33         int res = fntmgr->getSizeInstalledFontsName();
34         delete fntmgr;
35         return res;
36 }
37 /*--------------------------------------------------------------------------*/
38 char **getInstalledFontsName(int *sizeArray) 
39 {
40         char **returnedinstalledfontsname = NULL;
41         *sizeArray = 0;
42
43         org_scilab_modules_renderer_utils_textRendering::XlFontManager *fntmgr = new org_scilab_modules_renderer_utils_textRendering::XlFontManager(getScilabJavaVM());
44         if (fntmgr)
45         {
46                 char **installedfontsname = NULL;
47
48                 *sizeArray = fntmgr->getSizeInstalledFontsName();
49                 installedfontsname = fntmgr->getInstalledFontsName();
50                 if (installedfontsname)
51                 {
52                         int i = 0;
53                         returnedinstalledfontsname = (char**)MALLOC(sizeof(char*)*(*sizeArray));
54                         for( i = 0; i < *sizeArray; i++)
55                         {
56                                 returnedinstalledfontsname[i] = strdup(installedfontsname[i]);
57                                 delete [] installedfontsname[i];
58                         }
59                         delete [] installedfontsname;
60                         installedfontsname = NULL;
61                 }
62                 delete fntmgr;
63         }
64
65         return returnedinstalledfontsname;
66 }
67 /*--------------------------------------------------------------------------*/
68 char **getAvailableFontsName(int *sizeArray)
69 {
70         char **returnedavailablefontsname = NULL;
71         *sizeArray = 0;
72
73         org_scilab_modules_renderer_utils_textRendering::XlFontManager *fntmgr = new org_scilab_modules_renderer_utils_textRendering::XlFontManager(getScilabJavaVM());
74         if (fntmgr)
75         {
76                 char **availablefontsname = NULL;
77
78                 *sizeArray = fntmgr->getSizeAvailableFontsName();
79                 availablefontsname = fntmgr->getAvailableFontsName();
80                 if (availablefontsname)
81                 {
82                         int i = 0;
83                         returnedavailablefontsname = (char**)MALLOC(sizeof(char*)*(*sizeArray));
84                         for( i = 0; i < *sizeArray; i++)
85                         {
86                                 returnedavailablefontsname[i] = strdup(availablefontsname[i]);
87                                 delete [] availablefontsname[i];
88                         }
89                         delete [] availablefontsname;
90                         availablefontsname = NULL;
91                 }
92                 delete fntmgr;
93         }
94
95         return returnedavailablefontsname;
96 }
97 /*--------------------------------------------------------------------------*/
98 BOOL isAvailableFontsName(char *fontname)
99 {
100         BOOL bOK = FALSE;
101         org_scilab_modules_renderer_utils_textRendering::XlFontManager *fntmgr = new org_scilab_modules_renderer_utils_textRendering::XlFontManager(getScilabJavaVM());
102         if (fntmgr)
103         {
104                 bOK = booltoBOOL(fntmgr->isAvailableFontName(fontname));
105                 delete fntmgr;
106         }
107         return bOK;
108 }
109 /*--------------------------------------------------------------------------*/
110 int addFont(char *fontname)
111 {
112         int fontID = 0;
113
114         org_scilab_modules_renderer_utils_textRendering::XlFontManager *fntmgr = new org_scilab_modules_renderer_utils_textRendering::XlFontManager(getScilabJavaVM());
115         if (fntmgr)
116         {
117                 fontID = (int)fntmgr->addFont(fontname);
118                 delete fntmgr;
119         }
120
121         return fontID;
122 }
123 /*--------------------------------------------------------------------------*/
124 int changeFont(int index, char * fontName)
125 {
126         int fontID = 0;
127         org_scilab_modules_renderer_utils_textRendering::XlFontManager *fntmgr = new org_scilab_modules_renderer_utils_textRendering::XlFontManager(getScilabJavaVM());
128         if (fntmgr)
129         {
130                 fontID = (int)fntmgr->changeFont((long)index,fontName);
131                 delete fntmgr;
132         }
133
134         return fontID;
135 }
136 /*--------------------------------------------------------------------------*/
137 int changeFontWithProperty(int index, char * fontName, BOOL isBold, BOOL isItalic)
138 {
139         int fontID = 0;
140         org_scilab_modules_renderer_utils_textRendering::XlFontManager *fntmgr = new org_scilab_modules_renderer_utils_textRendering::XlFontManager(getScilabJavaVM());
141         if (fntmgr)
142         {
143                 fontID = (int)fntmgr->changeFontWithProperty((long)index,fontName,BOOLtobool(isBold),BOOLtobool(isItalic));
144                 delete fntmgr;
145         }
146         return fontID;
147 }
148 /*--------------------------------------------------------------------------*/
149 void resetFontManager(void)
150 {
151         org_scilab_modules_renderer_utils_textRendering::XlFontManager *fntmgr = new org_scilab_modules_renderer_utils_textRendering::XlFontManager(getScilabJavaVM());
152         if (fntmgr)
153         {
154                 fntmgr->resetXlFontManager();
155                 delete fntmgr;
156         }
157 }
158 /*--------------------------------------------------------------------------*/
159 int changeFontFromFilename (int index, char * FontFilename)
160 {
161         int fontID = 0;
162         org_scilab_modules_renderer_utils_textRendering::XlFontManager *fntmgr = new org_scilab_modules_renderer_utils_textRendering::XlFontManager(getScilabJavaVM());
163         if (fntmgr)
164         {
165                 fontID = (int)fntmgr->changeFontFromFilename((long)index,FontFilename);
166                 delete fntmgr;
167         }
168         return fontID;
169 }
170 /*--------------------------------------------------------------------------*/
171 int addFontFromFilename (char * FontFilename)
172 {
173         int fontID = 0;
174         org_scilab_modules_renderer_utils_textRendering::XlFontManager *fntmgr = new org_scilab_modules_renderer_utils_textRendering::XlFontManager(getScilabJavaVM());
175         if (fntmgr)
176         {
177                 fontID = (int)fntmgr->addFontFromFilename (FontFilename);
178                 delete fntmgr;
179         }
180         return fontID;
181 }
182 /*--------------------------------------------------------------------------*/