1 /*
2 * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
3 * Copyright (C) 2008 - INRIA - Allan CORNET
4 *
5 * Copyright (C) 2012 - 2016 - Scilab Enterprises
6 *
7 * This file is hereby licensed under the terms of the GNU GPL v2.0,
8 * pursuant to article 5.3.4 of the CeCILL v.2.1.
9 * This file was originally licensed under the terms of the CeCILL v2.1,
10 * and continues to be available under such terms.
11 * For more information, see the COPYING file which you should have received
12 * along with this program.
13 *
14 */
15
16 /*--------------------------------------------------------------------------*/
17 #include "XlFontManager.hxx"
18
19 extern "C" {
20 #include <stdlib.h>
21 #include "getScilabJavaVM.h"
22 #include "RendererFontManager.h"
23 #include "sci_malloc.h"
24 #include "os_string.h"
25 }
26
27 using namespace org_scilab_modules_renderer_utils_textRendering;
28
29 /*--------------------------------------------------------------------------*/
getNbInstalledFonts(void)30 int getNbInstalledFonts(void)
31 {
32 XlFontManager * fntmgr = new XlFontManager(getScilabJavaVM());
33 int res = fntmgr->getSizeInstalledFontsName();
34 delete fntmgr;
35 return res;
36 }
37 /*--------------------------------------------------------------------------*/
getInstalledFontsName(int * sizeArray)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] = os_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 /*--------------------------------------------------------------------------*/
getAvailableFontsName(int * sizeArray)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] = os_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 /*--------------------------------------------------------------------------*/
isAvailableFontsName(char * fontname)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 /*--------------------------------------------------------------------------*/
addFont(char * fontname)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 /*--------------------------------------------------------------------------*/
changeFont(int index,char * fontName)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 /*--------------------------------------------------------------------------*/
changeFontWithProperty(int index,char * fontName,BOOL isBold,BOOL isItalic)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 /*--------------------------------------------------------------------------*/
resetFontManager(void)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 /*--------------------------------------------------------------------------*/
changeFontFromFilename(int index,char * FontFilename)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 /*--------------------------------------------------------------------------*/
addFontFromFilename(char * FontFilename)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 /*--------------------------------------------------------------------------*/
183