Mercurial > octave
annotate libinterp/corefcn/ft-text-renderer.cc @ 30564:796f54d4ddbf stable
update Octave Project Developers copyright for the new year
In files that have the "Octave Project Developers" copyright notice,
update for 2021.
In all .txi and .texi files except gpl.txi and gpl.texi in the
doc/liboctave and doc/interpreter directories, change the copyright
to "Octave Project Developers", the same as used for other source
files. Update copyright notices for 2022 (not done since 2019). For
gpl.txi and gpl.texi, change the copyright notice to be "Free Software
Foundation, Inc." and leave the date at 2007 only because this file
only contains the text of the GPL, not anything created by the Octave
Project Developers.
Add Paul Thomas to contributors.in.
author | John W. Eaton <jwe@octave.org> |
---|---|
date | Tue, 28 Dec 2021 18:22:40 -0500 |
parents | a61e1a0f6024 |
children | e88a07dec498 |
rev | line source |
---|---|
27923
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
1 //////////////////////////////////////////////////////////////////////// |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
2 // |
30564
796f54d4ddbf
update Octave Project Developers copyright for the new year
John W. Eaton <jwe@octave.org>
parents:
30390
diff
changeset
|
3 // Copyright (C) 2009-2022 The Octave Project Developers |
27923
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
4 // |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
5 // See the file COPYRIGHT.md in the top-level directory of this |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
6 // distribution or <https://octave.org/copyright/>. |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
7 // |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
8 // This file is part of Octave. |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
9 // |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
10 // Octave is free software: you can redistribute it and/or modify it |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
11 // under the terms of the GNU General Public License as published by |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
12 // the Free Software Foundation, either version 3 of the License, or |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
13 // (at your option) any later version. |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
14 // |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
15 // Octave is distributed in the hope that it will be useful, but |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
16 // WITHOUT ANY WARRANTY; without even the implied warranty of |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
17 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
18 // GNU General Public License for more details. |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
19 // |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
20 // You should have received a copy of the GNU General Public License |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
21 // along with Octave; see the file COPYING. If not, see |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
22 // <https://www.gnu.org/licenses/>. |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
23 // |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
24 //////////////////////////////////////////////////////////////////////// |
9403
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
25 |
21724
aba2e6293dd8
use "#if ..." consistently instead of "#ifdef" and "#ifndef"
John W. Eaton <jwe@octave.org>
parents:
21568
diff
changeset
|
26 #if defined (HAVE_CONFIG_H) |
21301
40de9f8f23a6
Use '#include "config.h"' rather than <config.h>.
Rik <rik@octave.org>
parents:
21209
diff
changeset
|
27 # include "config.h" |
9403
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
28 #endif |
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
29 |
21209
67d2965af0b5
revamp text rendering classes
John W. Eaton <jwe@octave.org>
parents:
21200
diff
changeset
|
30 #include "base-text-renderer.h" |
23462
314d980bee93
maint: Add '#include "XXX.h"' to XXX.cc files.
Rik <rik@octave.org>
parents:
23457
diff
changeset
|
31 #include "ft-text-renderer.h" |
21209
67d2965af0b5
revamp text rendering classes
John W. Eaton <jwe@octave.org>
parents:
21200
diff
changeset
|
32 |
14003
1555c5a177c9
better fix for fontconfig segfault
John W. Eaton <jwe@octave.org>
parents:
13999
diff
changeset
|
33 #if defined (HAVE_FREETYPE) |
9403
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
34 |
21334
36e75e013849
* ft-text-renderer.cc: Use pragma to avoid old-style cast warnings.
John W. Eaton <jwe@octave.org>
parents:
21301
diff
changeset
|
35 #if defined (HAVE_PRAGMA_GCC_DIAGNOSTIC) |
24444
53ca76c5cc8d
maint: Indent pragmas as other preprocessor directives.
John W. Eaton <jwe@octave.org>
parents:
24126
diff
changeset
|
36 # pragma GCC diagnostic push |
53ca76c5cc8d
maint: Indent pragmas as other preprocessor directives.
John W. Eaton <jwe@octave.org>
parents:
24126
diff
changeset
|
37 # pragma GCC diagnostic ignored "-Wold-style-cast" |
21334
36e75e013849
* ft-text-renderer.cc: Use pragma to avoid old-style cast warnings.
John W. Eaton <jwe@octave.org>
parents:
21301
diff
changeset
|
38 #endif |
36e75e013849
* ft-text-renderer.cc: Use pragma to avoid old-style cast warnings.
John W. Eaton <jwe@octave.org>
parents:
21301
diff
changeset
|
39 |
21209
67d2965af0b5
revamp text rendering classes
John W. Eaton <jwe@octave.org>
parents:
21200
diff
changeset
|
40 #include <ft2build.h> |
67d2965af0b5
revamp text rendering classes
John W. Eaton <jwe@octave.org>
parents:
21200
diff
changeset
|
41 #include FT_FREETYPE_H |
26187
8d4f23b7f4eb
Improve text extent calculation when using freetype text renderer (bug #55075)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
26152
diff
changeset
|
42 #include FT_GLYPH_H |
21209
67d2965af0b5
revamp text rendering classes
John W. Eaton <jwe@octave.org>
parents:
21200
diff
changeset
|
43 |
14003
1555c5a177c9
better fix for fontconfig segfault
John W. Eaton <jwe@octave.org>
parents:
13999
diff
changeset
|
44 #if defined (HAVE_FONTCONFIG) |
21200
fcac5dbbf9ed
maint: Indent #ifdef blocks in libinterp.
Rik <rik@octave.org>
parents:
21102
diff
changeset
|
45 # include <fontconfig/fontconfig.h> |
9403
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
46 #endif |
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
47 |
21334
36e75e013849
* ft-text-renderer.cc: Use pragma to avoid old-style cast warnings.
John W. Eaton <jwe@octave.org>
parents:
21301
diff
changeset
|
48 #if defined (HAVE_PRAGMA_GCC_DIAGNOSTIC) |
24444
53ca76c5cc8d
maint: Indent pragmas as other preprocessor directives.
John W. Eaton <jwe@octave.org>
parents:
24126
diff
changeset
|
49 # pragma GCC diagnostic pop |
21334
36e75e013849
* ft-text-renderer.cc: Use pragma to avoid old-style cast warnings.
John W. Eaton <jwe@octave.org>
parents:
21301
diff
changeset
|
50 #endif |
36e75e013849
* ft-text-renderer.cc: Use pragma to avoid old-style cast warnings.
John W. Eaton <jwe@octave.org>
parents:
21301
diff
changeset
|
51 |
17352
4a348443de9b
Support multibyte characters in Freetype-based renderer (bug #31596).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
17330
diff
changeset
|
52 #include <clocale> |
4a348443de9b
Support multibyte characters in Freetype-based renderer (bug #31596).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
17330
diff
changeset
|
53 #include <cwchar> |
17270
ba865ea9c7e9
Add simple FreeType font cache in class ft_manager.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
17269
diff
changeset
|
54 #include <map> |
ba865ea9c7e9
Add simple FreeType font cache in class ft_manager.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
17269
diff
changeset
|
55 #include <utility> |
9403
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
56 |
13992
e1f76bfe0452
apply singleton_cleanup to a few more classes
John W. Eaton <jwe@octave.org>
parents:
13730
diff
changeset
|
57 #include "singleton-cleanup.h" |
25362
def1b446ba64
Convert strings to UTF-32 for FreeType (bug #53646).
Markus Mützel <markus.muetzel@gmx.de>
parents:
25336
diff
changeset
|
58 #include "unistr-wrappers.h" |
13992
e1f76bfe0452
apply singleton_cleanup to a few more classes
John W. Eaton <jwe@octave.org>
parents:
13730
diff
changeset
|
59 |
25460
627d6bde9b8d
solve installation info initialization problem differently
John W. Eaton <jwe@octave.org>
parents:
25440
diff
changeset
|
60 #include "defaults.h" |
9403
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
61 #include "error.h" |
24126
2390079a8aed
Provide default font files and use them (bug #52150)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
24076
diff
changeset
|
62 #include "file-ops.h" |
2390079a8aed
Provide default font files and use them (bug #52150)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
24076
diff
changeset
|
63 #include "oct-env.h" |
9403
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
64 #include "pr-output.h" |
29489
ee66869c30d6
Fix loading fonts from path with non-ASCII characters on Windows.
Markus Mützel <markus.muetzel@gmx.de>
parents:
29470
diff
changeset
|
65 #include "sysdep.h" |
21209
67d2965af0b5
revamp text rendering classes
John W. Eaton <jwe@octave.org>
parents:
21200
diff
changeset
|
66 #include "text-renderer.h" |
9403
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
67 |
24722
af6c1ed60581
avoid splitting namespace blocks unnecessarily
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
68 namespace octave |
13317
d2b799e3178a
allow warnings about missing glyphs to be disabled
John W. Eaton <jwe@octave.org>
parents:
13141
diff
changeset
|
69 { |
24722
af6c1ed60581
avoid splitting namespace blocks unnecessarily
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
70 // FIXME: maybe issue at most one warning per glyph/font/size/weight |
af6c1ed60581
avoid splitting namespace blocks unnecessarily
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
71 // combination. |
13317
d2b799e3178a
allow warnings about missing glyphs to be disabled
John W. Eaton <jwe@octave.org>
parents:
13141
diff
changeset
|
72 |
24722
af6c1ed60581
avoid splitting namespace blocks unnecessarily
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
73 static void |
af6c1ed60581
avoid splitting namespace blocks unnecessarily
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
74 warn_missing_glyph (FT_ULong c) |
af6c1ed60581
avoid splitting namespace blocks unnecessarily
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
75 { |
af6c1ed60581
avoid splitting namespace blocks unnecessarily
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
76 warning_with_id ("Octave:missing-glyph", |
26152
b68c41cb0f99
Silence compiler warning about incorrect format specifier (bug #55046).
Markus Mützel <markus.muetzel@gmx.de>
parents:
25460
diff
changeset
|
77 "text_renderer: skipping missing glyph for character '%lx'", c); |
24722
af6c1ed60581
avoid splitting namespace blocks unnecessarily
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
78 } |
af6c1ed60581
avoid splitting namespace blocks unnecessarily
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
79 |
af6c1ed60581
avoid splitting namespace blocks unnecessarily
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
80 static void |
af6c1ed60581
avoid splitting namespace blocks unnecessarily
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
81 warn_glyph_render (FT_ULong c) |
af6c1ed60581
avoid splitting namespace blocks unnecessarily
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
82 { |
af6c1ed60581
avoid splitting namespace blocks unnecessarily
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
83 warning_with_id ("Octave:glyph-render", |
26152
b68c41cb0f99
Silence compiler warning about incorrect format specifier (bug #55046).
Markus Mützel <markus.muetzel@gmx.de>
parents:
25460
diff
changeset
|
84 "text_renderer: unable to render glyph for character '%lx'", c); |
24722
af6c1ed60581
avoid splitting namespace blocks unnecessarily
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
85 } |
13317
d2b799e3178a
allow warnings about missing glyphs to be disabled
John W. Eaton <jwe@octave.org>
parents:
13141
diff
changeset
|
86 |
21209
67d2965af0b5
revamp text rendering classes
John W. Eaton <jwe@octave.org>
parents:
21200
diff
changeset
|
87 #if defined (_MSC_VER) |
24722
af6c1ed60581
avoid splitting namespace blocks unnecessarily
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
88 // FIXME: is this really needed? |
af6c1ed60581
avoid splitting namespace blocks unnecessarily
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
89 // |
af6c1ed60581
avoid splitting namespace blocks unnecessarily
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
90 // This is just a trick to avoid multiple symbol definitions. |
af6c1ed60581
avoid splitting namespace blocks unnecessarily
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
91 // PermMatrix.h contains a dllexport'ed Array<octave_idx_type> |
af6c1ed60581
avoid splitting namespace blocks unnecessarily
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
92 // that will cause MSVC not to generate a new instantiation and |
af6c1ed60581
avoid splitting namespace blocks unnecessarily
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
93 // use the imported one instead. |
21209
67d2965af0b5
revamp text rendering classes
John W. Eaton <jwe@octave.org>
parents:
21200
diff
changeset
|
94 # include "PermMatrix.h" |
13730
a2c74b5c02de
[MSVC] Prevent duplicate symbol.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
13317
diff
changeset
|
95 #endif |
a2c74b5c02de
[MSVC] Prevent duplicate symbol.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
13317
diff
changeset
|
96 |
24722
af6c1ed60581
avoid splitting namespace blocks unnecessarily
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
97 // Forward declaration |
af6c1ed60581
avoid splitting namespace blocks unnecessarily
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
98 static void ft_face_destroyed (void *object); |
17270
ba865ea9c7e9
Add simple FreeType font cache in class ft_manager.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
17269
diff
changeset
|
99 |
22407
34ce5be04942
maint: Style check C++ code in libinterp/.
Rik <rik@octave.org>
parents:
22331
diff
changeset
|
100 class |
34ce5be04942
maint: Style check C++ code in libinterp/.
Rik <rik@octave.org>
parents:
22331
diff
changeset
|
101 ft_manager |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
102 { |
22869
f75d289645ec
make deleted functions public
John W. Eaton <jwe@octave.org>
parents:
22868
diff
changeset
|
103 private: |
f75d289645ec
make deleted functions public
John W. Eaton <jwe@octave.org>
parents:
22868
diff
changeset
|
104 |
f75d289645ec
make deleted functions public
John W. Eaton <jwe@octave.org>
parents:
22868
diff
changeset
|
105 ft_manager (void) |
29679
7ad7991e946a
ft-text-renderer.cc: Use m_ prefix for class data members
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29678
diff
changeset
|
106 : m_library (), m_freetype_initialized (false), |
7ad7991e946a
ft-text-renderer.cc: Use m_ prefix for class data members
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29678
diff
changeset
|
107 m_fontconfig_initialized (false) |
22869
f75d289645ec
make deleted functions public
John W. Eaton <jwe@octave.org>
parents:
22868
diff
changeset
|
108 { |
29679
7ad7991e946a
ft-text-renderer.cc: Use m_ prefix for class data members
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29678
diff
changeset
|
109 if (FT_Init_FreeType (&m_library)) |
22869
f75d289645ec
make deleted functions public
John W. Eaton <jwe@octave.org>
parents:
22868
diff
changeset
|
110 error ("unable to initialize FreeType library"); |
f75d289645ec
make deleted functions public
John W. Eaton <jwe@octave.org>
parents:
22868
diff
changeset
|
111 else |
29679
7ad7991e946a
ft-text-renderer.cc: Use m_ prefix for class data members
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29678
diff
changeset
|
112 m_freetype_initialized = true; |
22869
f75d289645ec
make deleted functions public
John W. Eaton <jwe@octave.org>
parents:
22868
diff
changeset
|
113 |
f75d289645ec
make deleted functions public
John W. Eaton <jwe@octave.org>
parents:
22868
diff
changeset
|
114 #if defined (HAVE_FONTCONFIG) |
f75d289645ec
make deleted functions public
John W. Eaton <jwe@octave.org>
parents:
22868
diff
changeset
|
115 if (! FcInit ()) |
f75d289645ec
make deleted functions public
John W. Eaton <jwe@octave.org>
parents:
22868
diff
changeset
|
116 error ("unable to initialize fontconfig library"); |
f75d289645ec
make deleted functions public
John W. Eaton <jwe@octave.org>
parents:
22868
diff
changeset
|
117 else |
29679
7ad7991e946a
ft-text-renderer.cc: Use m_ prefix for class data members
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29678
diff
changeset
|
118 m_fontconfig_initialized = true; |
22869
f75d289645ec
make deleted functions public
John W. Eaton <jwe@octave.org>
parents:
22868
diff
changeset
|
119 #endif |
f75d289645ec
make deleted functions public
John W. Eaton <jwe@octave.org>
parents:
22868
diff
changeset
|
120 } |
f75d289645ec
make deleted functions public
John W. Eaton <jwe@octave.org>
parents:
22868
diff
changeset
|
121 |
22407
34ce5be04942
maint: Style check C++ code in libinterp/.
Rik <rik@octave.org>
parents:
22331
diff
changeset
|
122 public: |
22869
f75d289645ec
make deleted functions public
John W. Eaton <jwe@octave.org>
parents:
22868
diff
changeset
|
123 |
f75d289645ec
make deleted functions public
John W. Eaton <jwe@octave.org>
parents:
22868
diff
changeset
|
124 // No copying! |
f75d289645ec
make deleted functions public
John W. Eaton <jwe@octave.org>
parents:
22868
diff
changeset
|
125 |
f75d289645ec
make deleted functions public
John W. Eaton <jwe@octave.org>
parents:
22868
diff
changeset
|
126 ft_manager (const ft_manager&) = delete; |
f75d289645ec
make deleted functions public
John W. Eaton <jwe@octave.org>
parents:
22868
diff
changeset
|
127 |
f75d289645ec
make deleted functions public
John W. Eaton <jwe@octave.org>
parents:
22868
diff
changeset
|
128 ft_manager& operator = (const ft_manager&) = delete; |
f75d289645ec
make deleted functions public
John W. Eaton <jwe@octave.org>
parents:
22868
diff
changeset
|
129 |
f75d289645ec
make deleted functions public
John W. Eaton <jwe@octave.org>
parents:
22868
diff
changeset
|
130 private: |
f75d289645ec
make deleted functions public
John W. Eaton <jwe@octave.org>
parents:
22868
diff
changeset
|
131 |
f75d289645ec
make deleted functions public
John W. Eaton <jwe@octave.org>
parents:
22868
diff
changeset
|
132 ~ft_manager (void) |
f75d289645ec
make deleted functions public
John W. Eaton <jwe@octave.org>
parents:
22868
diff
changeset
|
133 { |
29679
7ad7991e946a
ft-text-renderer.cc: Use m_ prefix for class data members
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29678
diff
changeset
|
134 if (m_freetype_initialized) |
7ad7991e946a
ft-text-renderer.cc: Use m_ prefix for class data members
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29678
diff
changeset
|
135 FT_Done_FreeType (m_library); |
22869
f75d289645ec
make deleted functions public
John W. Eaton <jwe@octave.org>
parents:
22868
diff
changeset
|
136 |
f75d289645ec
make deleted functions public
John W. Eaton <jwe@octave.org>
parents:
22868
diff
changeset
|
137 #if defined (HAVE_FONTCONFIG) |
f75d289645ec
make deleted functions public
John W. Eaton <jwe@octave.org>
parents:
22868
diff
changeset
|
138 // FIXME: Skip the call to FcFini because it can trigger the assertion |
f75d289645ec
make deleted functions public
John W. Eaton <jwe@octave.org>
parents:
22868
diff
changeset
|
139 // |
f75d289645ec
make deleted functions public
John W. Eaton <jwe@octave.org>
parents:
22868
diff
changeset
|
140 // octave: fccache.c:507: FcCacheFini: Assertion 'fcCacheChains[i] == ((void *)0)' failed. |
f75d289645ec
make deleted functions public
John W. Eaton <jwe@octave.org>
parents:
22868
diff
changeset
|
141 // |
29679
7ad7991e946a
ft-text-renderer.cc: Use m_ prefix for class data members
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29678
diff
changeset
|
142 // if (m_fontconfig_initialized) |
22869
f75d289645ec
make deleted functions public
John W. Eaton <jwe@octave.org>
parents:
22868
diff
changeset
|
143 // FcFini (); |
f75d289645ec
make deleted functions public
John W. Eaton <jwe@octave.org>
parents:
22868
diff
changeset
|
144 #endif |
f75d289645ec
make deleted functions public
John W. Eaton <jwe@octave.org>
parents:
22868
diff
changeset
|
145 } |
f75d289645ec
make deleted functions public
John W. Eaton <jwe@octave.org>
parents:
22868
diff
changeset
|
146 |
f75d289645ec
make deleted functions public
John W. Eaton <jwe@octave.org>
parents:
22868
diff
changeset
|
147 public: |
f75d289645ec
make deleted functions public
John W. Eaton <jwe@octave.org>
parents:
22868
diff
changeset
|
148 |
22407
34ce5be04942
maint: Style check C++ code in libinterp/.
Rik <rik@octave.org>
parents:
22331
diff
changeset
|
149 static bool instance_ok (void) |
34ce5be04942
maint: Style check C++ code in libinterp/.
Rik <rik@octave.org>
parents:
22331
diff
changeset
|
150 { |
34ce5be04942
maint: Style check C++ code in libinterp/.
Rik <rik@octave.org>
parents:
22331
diff
changeset
|
151 bool retval = true; |
9403
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
152 |
30119
3161a1ee0045
maint: use "m_" prefix for member variables in file ft-text-renderer.cc.
Rik <rik@octave.org>
parents:
30041
diff
changeset
|
153 if (! m_instance) |
22407
34ce5be04942
maint: Style check C++ code in libinterp/.
Rik <rik@octave.org>
parents:
22331
diff
changeset
|
154 { |
30119
3161a1ee0045
maint: use "m_" prefix for member variables in file ft-text-renderer.cc.
Rik <rik@octave.org>
parents:
30041
diff
changeset
|
155 m_instance = new ft_manager (); |
26369
0249ba4c9589
Fix static analyzer detected V668 issues (bug #55347).
Andreas Weber <octave@josoansi.de>
parents:
26340
diff
changeset
|
156 singleton_cleanup_list::add (cleanup_instance); |
22407
34ce5be04942
maint: Style check C++ code in libinterp/.
Rik <rik@octave.org>
parents:
22331
diff
changeset
|
157 } |
9403
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
158 |
22407
34ce5be04942
maint: Style check C++ code in libinterp/.
Rik <rik@octave.org>
parents:
22331
diff
changeset
|
159 return retval; |
34ce5be04942
maint: Style check C++ code in libinterp/.
Rik <rik@octave.org>
parents:
22331
diff
changeset
|
160 } |
9403
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
161 |
30119
3161a1ee0045
maint: use "m_" prefix for member variables in file ft-text-renderer.cc.
Rik <rik@octave.org>
parents:
30041
diff
changeset
|
162 static void cleanup_instance (void) |
3161a1ee0045
maint: use "m_" prefix for member variables in file ft-text-renderer.cc.
Rik <rik@octave.org>
parents:
30041
diff
changeset
|
163 { delete m_instance; m_instance = nullptr; } |
13992
e1f76bfe0452
apply singleton_cleanup to a few more classes
John W. Eaton <jwe@octave.org>
parents:
13730
diff
changeset
|
164 |
22407
34ce5be04942
maint: Style check C++ code in libinterp/.
Rik <rik@octave.org>
parents:
22331
diff
changeset
|
165 static FT_Face get_font (const std::string& name, const std::string& weight, |
29678
7511182e5e9b
Allow for automatic font substitution in graphics text rendering
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29655
diff
changeset
|
166 const std::string& angle, double size, |
7511182e5e9b
Allow for automatic font substitution in graphics text rendering
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29655
diff
changeset
|
167 FT_ULong c = 0) |
22407
34ce5be04942
maint: Style check C++ code in libinterp/.
Rik <rik@octave.org>
parents:
22331
diff
changeset
|
168 { |
34ce5be04942
maint: Style check C++ code in libinterp/.
Rik <rik@octave.org>
parents:
22331
diff
changeset
|
169 return (instance_ok () |
30119
3161a1ee0045
maint: use "m_" prefix for member variables in file ft-text-renderer.cc.
Rik <rik@octave.org>
parents:
30041
diff
changeset
|
170 ? m_instance->do_get_font (name, weight, angle, size, c) |
23795
980f39c3ab90
Use C++11 nullptr rather than 0 in code (bug #51565).
Rik <rik@octave.org>
parents:
23696
diff
changeset
|
171 : nullptr); |
22407
34ce5be04942
maint: Style check C++ code in libinterp/.
Rik <rik@octave.org>
parents:
22331
diff
changeset
|
172 } |
9403
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
173 |
27623
698c8b08fe8c
New function uisetfont (bug #57130).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27150
diff
changeset
|
174 static octave_map get_system_fonts (void) |
698c8b08fe8c
New function uisetfont (bug #57130).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27150
diff
changeset
|
175 { |
698c8b08fe8c
New function uisetfont (bug #57130).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27150
diff
changeset
|
176 return (instance_ok () |
30119
3161a1ee0045
maint: use "m_" prefix for member variables in file ft-text-renderer.cc.
Rik <rik@octave.org>
parents:
30041
diff
changeset
|
177 ? m_instance->do_get_system_fonts () |
27623
698c8b08fe8c
New function uisetfont (bug #57130).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27150
diff
changeset
|
178 : octave_map ()); |
698c8b08fe8c
New function uisetfont (bug #57130).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27150
diff
changeset
|
179 } |
698c8b08fe8c
New function uisetfont (bug #57130).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27150
diff
changeset
|
180 |
22407
34ce5be04942
maint: Style check C++ code in libinterp/.
Rik <rik@octave.org>
parents:
22331
diff
changeset
|
181 static void font_destroyed (FT_Face face) |
34ce5be04942
maint: Style check C++ code in libinterp/.
Rik <rik@octave.org>
parents:
22331
diff
changeset
|
182 { |
34ce5be04942
maint: Style check C++ code in libinterp/.
Rik <rik@octave.org>
parents:
22331
diff
changeset
|
183 if (instance_ok ()) |
30119
3161a1ee0045
maint: use "m_" prefix for member variables in file ft-text-renderer.cc.
Rik <rik@octave.org>
parents:
30041
diff
changeset
|
184 m_instance->do_font_destroyed (face); |
22407
34ce5be04942
maint: Style check C++ code in libinterp/.
Rik <rik@octave.org>
parents:
22331
diff
changeset
|
185 } |
17270
ba865ea9c7e9
Add simple FreeType font cache in class ft_manager.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
17269
diff
changeset
|
186 |
22407
34ce5be04942
maint: Style check C++ code in libinterp/.
Rik <rik@octave.org>
parents:
22331
diff
changeset
|
187 private: |
12122
f4689107dd8c
Explicitly disallow copying in some classes.
Pascal Dupuis <Pascal.Dupuis@uclouvain.be>
parents:
11586
diff
changeset
|
188 |
22407
34ce5be04942
maint: Style check C++ code in libinterp/.
Rik <rik@octave.org>
parents:
22331
diff
changeset
|
189 typedef std::pair<std::string, double> ft_key; |
34ce5be04942
maint: Style check C++ code in libinterp/.
Rik <rik@octave.org>
parents:
22331
diff
changeset
|
190 typedef std::map<ft_key, FT_Face> ft_cache; |
17270
ba865ea9c7e9
Add simple FreeType font cache in class ft_manager.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
17269
diff
changeset
|
191 |
27623
698c8b08fe8c
New function uisetfont (bug #57130).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27150
diff
changeset
|
192 static octave_map do_get_system_fonts (void) |
698c8b08fe8c
New function uisetfont (bug #57130).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27150
diff
changeset
|
193 { |
698c8b08fe8c
New function uisetfont (bug #57130).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27150
diff
changeset
|
194 static octave_map font_map; |
698c8b08fe8c
New function uisetfont (bug #57130).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27150
diff
changeset
|
195 |
698c8b08fe8c
New function uisetfont (bug #57130).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27150
diff
changeset
|
196 if (font_map.isempty ()) |
698c8b08fe8c
New function uisetfont (bug #57130).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27150
diff
changeset
|
197 { |
28483
98889de398dd
* ft-text-renderer.cc: Allow build to succeed if HAVE_FONTCONFIG is undefined.
John W. Eaton <jwe@octave.org>
parents:
28305
diff
changeset
|
198 #if defined (HAVE_FONTCONFIG) |
27623
698c8b08fe8c
New function uisetfont (bug #57130).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27150
diff
changeset
|
199 FcConfig *config = FcConfigGetCurrent(); |
698c8b08fe8c
New function uisetfont (bug #57130).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27150
diff
changeset
|
200 FcPattern *pat = FcPatternCreate (); |
698c8b08fe8c
New function uisetfont (bug #57130).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27150
diff
changeset
|
201 FcObjectSet *os = FcObjectSetBuild (FC_FAMILY, FC_SLANT, FC_WEIGHT, |
698c8b08fe8c
New function uisetfont (bug #57130).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27150
diff
changeset
|
202 FC_CHARSET, nullptr); |
698c8b08fe8c
New function uisetfont (bug #57130).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27150
diff
changeset
|
203 FcFontSet *fs = FcFontList (config, pat, os); |
698c8b08fe8c
New function uisetfont (bug #57130).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27150
diff
changeset
|
204 |
698c8b08fe8c
New function uisetfont (bug #57130).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27150
diff
changeset
|
205 if (fs->nfont > 0) |
698c8b08fe8c
New function uisetfont (bug #57130).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27150
diff
changeset
|
206 { |
698c8b08fe8c
New function uisetfont (bug #57130).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27150
diff
changeset
|
207 // Mark fonts that have at least all printable ASCII chars |
698c8b08fe8c
New function uisetfont (bug #57130).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27150
diff
changeset
|
208 FcCharSet *minimal_charset = FcCharSetCreate (); |
698c8b08fe8c
New function uisetfont (bug #57130).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27150
diff
changeset
|
209 for (int i = 32; i < 127; i++) |
698c8b08fe8c
New function uisetfont (bug #57130).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27150
diff
changeset
|
210 FcCharSetAddChar (minimal_charset, static_cast<FcChar32> (i)); |
698c8b08fe8c
New function uisetfont (bug #57130).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27150
diff
changeset
|
211 |
698c8b08fe8c
New function uisetfont (bug #57130).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27150
diff
changeset
|
212 string_vector fields (4); |
698c8b08fe8c
New function uisetfont (bug #57130).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27150
diff
changeset
|
213 fields(0) = "family"; |
698c8b08fe8c
New function uisetfont (bug #57130).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27150
diff
changeset
|
214 fields(1) = "angle"; |
698c8b08fe8c
New function uisetfont (bug #57130).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27150
diff
changeset
|
215 fields(2) = "weight"; |
698c8b08fe8c
New function uisetfont (bug #57130).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27150
diff
changeset
|
216 fields(3) = "suitable"; |
698c8b08fe8c
New function uisetfont (bug #57130).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27150
diff
changeset
|
217 |
698c8b08fe8c
New function uisetfont (bug #57130).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27150
diff
changeset
|
218 dim_vector dv (1, fs->nfont); |
698c8b08fe8c
New function uisetfont (bug #57130).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27150
diff
changeset
|
219 Cell families (dv); |
698c8b08fe8c
New function uisetfont (bug #57130).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27150
diff
changeset
|
220 Cell angles (dv); |
698c8b08fe8c
New function uisetfont (bug #57130).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27150
diff
changeset
|
221 Cell weights (dv); |
698c8b08fe8c
New function uisetfont (bug #57130).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27150
diff
changeset
|
222 Cell suitable (dv); |
698c8b08fe8c
New function uisetfont (bug #57130).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27150
diff
changeset
|
223 |
698c8b08fe8c
New function uisetfont (bug #57130).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27150
diff
changeset
|
224 unsigned char *family; |
698c8b08fe8c
New function uisetfont (bug #57130).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27150
diff
changeset
|
225 int val; |
698c8b08fe8c
New function uisetfont (bug #57130).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27150
diff
changeset
|
226 for (int i = 0; fs && i < fs->nfont; i++) |
698c8b08fe8c
New function uisetfont (bug #57130).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27150
diff
changeset
|
227 { |
698c8b08fe8c
New function uisetfont (bug #57130).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27150
diff
changeset
|
228 FcPattern *font = fs->fonts[i]; |
698c8b08fe8c
New function uisetfont (bug #57130).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27150
diff
changeset
|
229 if (FcPatternGetString (font, FC_FAMILY, 0, &family) |
698c8b08fe8c
New function uisetfont (bug #57130).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27150
diff
changeset
|
230 == FcResultMatch) |
30390
a61e1a0f6024
maint: style check C++ files in libinterp/ ahead of 7.1 release.
Rik <rik@octave.org>
parents:
30119
diff
changeset
|
231 families(i) = std::string (reinterpret_cast<char *> (family)); |
27623
698c8b08fe8c
New function uisetfont (bug #57130).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27150
diff
changeset
|
232 else |
698c8b08fe8c
New function uisetfont (bug #57130).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27150
diff
changeset
|
233 families(i) = "unknown"; |
698c8b08fe8c
New function uisetfont (bug #57130).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27150
diff
changeset
|
234 |
698c8b08fe8c
New function uisetfont (bug #57130).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27150
diff
changeset
|
235 if (FcPatternGetInteger (font, FC_SLANT, 0, &val) |
698c8b08fe8c
New function uisetfont (bug #57130).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27150
diff
changeset
|
236 == FcResultMatch) |
698c8b08fe8c
New function uisetfont (bug #57130).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27150
diff
changeset
|
237 angles(i) = (val == FC_SLANT_ITALIC |
698c8b08fe8c
New function uisetfont (bug #57130).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27150
diff
changeset
|
238 || val == FC_SLANT_OBLIQUE) |
698c8b08fe8c
New function uisetfont (bug #57130).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27150
diff
changeset
|
239 ? "italic" : "normal"; |
698c8b08fe8c
New function uisetfont (bug #57130).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27150
diff
changeset
|
240 else |
698c8b08fe8c
New function uisetfont (bug #57130).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27150
diff
changeset
|
241 angles(i) = "unknown"; |
698c8b08fe8c
New function uisetfont (bug #57130).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27150
diff
changeset
|
242 |
698c8b08fe8c
New function uisetfont (bug #57130).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27150
diff
changeset
|
243 if (FcPatternGetInteger (font, FC_WEIGHT, 0, &val) |
698c8b08fe8c
New function uisetfont (bug #57130).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27150
diff
changeset
|
244 == FcResultMatch) |
698c8b08fe8c
New function uisetfont (bug #57130).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27150
diff
changeset
|
245 weights(i) = (val == FC_WEIGHT_BOLD |
698c8b08fe8c
New function uisetfont (bug #57130).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27150
diff
changeset
|
246 || val == FC_WEIGHT_DEMIBOLD) |
698c8b08fe8c
New function uisetfont (bug #57130).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27150
diff
changeset
|
247 ? "bold" : "normal"; |
698c8b08fe8c
New function uisetfont (bug #57130).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27150
diff
changeset
|
248 else |
698c8b08fe8c
New function uisetfont (bug #57130).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27150
diff
changeset
|
249 weights(i) = "unknown"; |
698c8b08fe8c
New function uisetfont (bug #57130).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27150
diff
changeset
|
250 |
698c8b08fe8c
New function uisetfont (bug #57130).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27150
diff
changeset
|
251 FcCharSet *cset; |
698c8b08fe8c
New function uisetfont (bug #57130).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27150
diff
changeset
|
252 if (FcPatternGetCharSet (font, FC_CHARSET, 0, &cset) |
698c8b08fe8c
New function uisetfont (bug #57130).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27150
diff
changeset
|
253 == FcResultMatch) |
698c8b08fe8c
New function uisetfont (bug #57130).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27150
diff
changeset
|
254 suitable(i) = (FcCharSetIsSubset (minimal_charset, cset) |
698c8b08fe8c
New function uisetfont (bug #57130).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27150
diff
changeset
|
255 ? true : false); |
698c8b08fe8c
New function uisetfont (bug #57130).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27150
diff
changeset
|
256 else |
698c8b08fe8c
New function uisetfont (bug #57130).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27150
diff
changeset
|
257 suitable(i) = false; |
698c8b08fe8c
New function uisetfont (bug #57130).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27150
diff
changeset
|
258 } |
698c8b08fe8c
New function uisetfont (bug #57130).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27150
diff
changeset
|
259 |
698c8b08fe8c
New function uisetfont (bug #57130).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27150
diff
changeset
|
260 font_map = octave_map (dv, fields); |
698c8b08fe8c
New function uisetfont (bug #57130).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27150
diff
changeset
|
261 |
698c8b08fe8c
New function uisetfont (bug #57130).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27150
diff
changeset
|
262 font_map.assign ("family", families); |
698c8b08fe8c
New function uisetfont (bug #57130).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27150
diff
changeset
|
263 font_map.assign ("angle", angles); |
698c8b08fe8c
New function uisetfont (bug #57130).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27150
diff
changeset
|
264 font_map.assign ("weight", weights); |
698c8b08fe8c
New function uisetfont (bug #57130).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27150
diff
changeset
|
265 font_map.assign ("suitable", suitable); |
698c8b08fe8c
New function uisetfont (bug #57130).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27150
diff
changeset
|
266 |
698c8b08fe8c
New function uisetfont (bug #57130).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27150
diff
changeset
|
267 if (fs) |
698c8b08fe8c
New function uisetfont (bug #57130).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27150
diff
changeset
|
268 FcFontSetDestroy (fs); |
698c8b08fe8c
New function uisetfont (bug #57130).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27150
diff
changeset
|
269 } |
28483
98889de398dd
* ft-text-renderer.cc: Allow build to succeed if HAVE_FONTCONFIG is undefined.
John W. Eaton <jwe@octave.org>
parents:
28305
diff
changeset
|
270 #endif |
27623
698c8b08fe8c
New function uisetfont (bug #57130).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27150
diff
changeset
|
271 } |
698c8b08fe8c
New function uisetfont (bug #57130).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27150
diff
changeset
|
272 |
698c8b08fe8c
New function uisetfont (bug #57130).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27150
diff
changeset
|
273 return font_map; |
698c8b08fe8c
New function uisetfont (bug #57130).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27150
diff
changeset
|
274 } |
698c8b08fe8c
New function uisetfont (bug #57130).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27150
diff
changeset
|
275 |
22407
34ce5be04942
maint: Style check C++ code in libinterp/.
Rik <rik@octave.org>
parents:
22331
diff
changeset
|
276 FT_Face do_get_font (const std::string& name, const std::string& weight, |
29678
7511182e5e9b
Allow for automatic font substitution in graphics text rendering
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29655
diff
changeset
|
277 const std::string& angle, double size, |
7511182e5e9b
Allow for automatic font substitution in graphics text rendering
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29655
diff
changeset
|
278 FT_ULong search_code_point) |
22407
34ce5be04942
maint: Style check C++ code in libinterp/.
Rik <rik@octave.org>
parents:
22331
diff
changeset
|
279 { |
23795
980f39c3ab90
Use C++11 nullptr rather than 0 in code (bug #51565).
Rik <rik@octave.org>
parents:
23696
diff
changeset
|
280 FT_Face retval = nullptr; |
9403
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
281 |
21209
67d2965af0b5
revamp text rendering classes
John W. Eaton <jwe@octave.org>
parents:
21200
diff
changeset
|
282 #if defined (HAVE_FT_REFERENCE_FACE) |
22407
34ce5be04942
maint: Style check C++ code in libinterp/.
Rik <rik@octave.org>
parents:
22331
diff
changeset
|
283 // Look first into the font cache, then use fontconfig. If the font |
34ce5be04942
maint: Style check C++ code in libinterp/.
Rik <rik@octave.org>
parents:
22331
diff
changeset
|
284 // is present in the cache, simply add a reference and return it. |
17270
ba865ea9c7e9
Add simple FreeType font cache in class ft_manager.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
17269
diff
changeset
|
285 |
29678
7511182e5e9b
Allow for automatic font substitution in graphics text rendering
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29655
diff
changeset
|
286 ft_key key (name + ':' + weight + ':' + angle + ':' |
7511182e5e9b
Allow for automatic font substitution in graphics text rendering
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29655
diff
changeset
|
287 + std::to_string (search_code_point), size); |
30119
3161a1ee0045
maint: use "m_" prefix for member variables in file ft-text-renderer.cc.
Rik <rik@octave.org>
parents:
30041
diff
changeset
|
288 ft_cache::const_iterator it = m_cache.find (key); |
17270
ba865ea9c7e9
Add simple FreeType font cache in class ft_manager.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
17269
diff
changeset
|
289 |
30119
3161a1ee0045
maint: use "m_" prefix for member variables in file ft-text-renderer.cc.
Rik <rik@octave.org>
parents:
30041
diff
changeset
|
290 if (it != m_cache.end ()) |
22407
34ce5be04942
maint: Style check C++ code in libinterp/.
Rik <rik@octave.org>
parents:
22331
diff
changeset
|
291 { |
34ce5be04942
maint: Style check C++ code in libinterp/.
Rik <rik@octave.org>
parents:
22331
diff
changeset
|
292 FT_Reference_Face (it->second); |
34ce5be04942
maint: Style check C++ code in libinterp/.
Rik <rik@octave.org>
parents:
22331
diff
changeset
|
293 return it->second; |
34ce5be04942
maint: Style check C++ code in libinterp/.
Rik <rik@octave.org>
parents:
22331
diff
changeset
|
294 } |
17330
219552139c18
Allow to compile with older freetype on RHEL5 (bug #39823).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
17327
diff
changeset
|
295 #endif |
17270
ba865ea9c7e9
Add simple FreeType font cache in class ft_manager.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
17269
diff
changeset
|
296 |
24899
1a46d174a483
include a proper definition of Octave's private font fallback directory
Mike Miller <mtmiller@octave.org>
parents:
24722
diff
changeset
|
297 static std::string fonts_dir; |
24126
2390079a8aed
Provide default font files and use them (bug #52150)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
24076
diff
changeset
|
298 |
24899
1a46d174a483
include a proper definition of Octave's private font fallback directory
Mike Miller <mtmiller@octave.org>
parents:
24722
diff
changeset
|
299 if (fonts_dir.empty ()) |
24126
2390079a8aed
Provide default font files and use them (bug #52150)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
24076
diff
changeset
|
300 { |
24899
1a46d174a483
include a proper definition of Octave's private font fallback directory
Mike Miller <mtmiller@octave.org>
parents:
24722
diff
changeset
|
301 fonts_dir = sys::env::getenv ("OCTAVE_FONTS_DIR"); |
24126
2390079a8aed
Provide default font files and use them (bug #52150)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
24076
diff
changeset
|
302 |
24899
1a46d174a483
include a proper definition of Octave's private font fallback directory
Mike Miller <mtmiller@octave.org>
parents:
24722
diff
changeset
|
303 if (fonts_dir.empty ()) |
24900
00d42b86d0a5
configure: new option --with-system-freefont to use system fonts (bug #53348)
Mike Miller <mtmiller@octave.org>
parents:
24899
diff
changeset
|
304 #if defined (SYSTEM_FREEFONT_DIR) |
25460
627d6bde9b8d
solve installation info initialization problem differently
John W. Eaton <jwe@octave.org>
parents:
25440
diff
changeset
|
305 fonts_dir = SYSTEM_FREEFONT_DIR; |
24900
00d42b86d0a5
configure: new option --with-system-freefont to use system fonts (bug #53348)
Mike Miller <mtmiller@octave.org>
parents:
24899
diff
changeset
|
306 #else |
25460
627d6bde9b8d
solve installation info initialization problem differently
John W. Eaton <jwe@octave.org>
parents:
25440
diff
changeset
|
307 fonts_dir = config::oct_fonts_dir (); |
24900
00d42b86d0a5
configure: new option --with-system-freefont to use system fonts (bug #53348)
Mike Miller <mtmiller@octave.org>
parents:
24899
diff
changeset
|
308 #endif |
24126
2390079a8aed
Provide default font files and use them (bug #52150)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
24076
diff
changeset
|
309 } |
2390079a8aed
Provide default font files and use them (bug #52150)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
24076
diff
changeset
|
310 |
2390079a8aed
Provide default font files and use them (bug #52150)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
24076
diff
changeset
|
311 |
2390079a8aed
Provide default font files and use them (bug #52150)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
24076
diff
changeset
|
312 // Default font file |
22407
34ce5be04942
maint: Style check C++ code in libinterp/.
Rik <rik@octave.org>
parents:
22331
diff
changeset
|
313 std::string file; |
9403
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
314 |
24899
1a46d174a483
include a proper definition of Octave's private font fallback directory
Mike Miller <mtmiller@octave.org>
parents:
24722
diff
changeset
|
315 if (! fonts_dir.empty ()) |
24126
2390079a8aed
Provide default font files and use them (bug #52150)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
24076
diff
changeset
|
316 { |
25336
389757b7b6af
eliminate redundant octave:: namespace tags
John W. Eaton <jwe@octave.org>
parents:
25054
diff
changeset
|
317 file = fonts_dir + sys::file_ops::dir_sep_str () + "FreeSans"; |
24126
2390079a8aed
Provide default font files and use them (bug #52150)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
24076
diff
changeset
|
318 |
2390079a8aed
Provide default font files and use them (bug #52150)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
24076
diff
changeset
|
319 if (weight == "bold") |
2390079a8aed
Provide default font files and use them (bug #52150)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
24076
diff
changeset
|
320 file += "Bold"; |
2390079a8aed
Provide default font files and use them (bug #52150)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
24076
diff
changeset
|
321 |
2390079a8aed
Provide default font files and use them (bug #52150)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
24076
diff
changeset
|
322 if (angle == "italic" || angle == "oblique") |
2390079a8aed
Provide default font files and use them (bug #52150)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
24076
diff
changeset
|
323 file += "Oblique"; |
2390079a8aed
Provide default font files and use them (bug #52150)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
24076
diff
changeset
|
324 |
2390079a8aed
Provide default font files and use them (bug #52150)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
24076
diff
changeset
|
325 file += ".otf"; |
2390079a8aed
Provide default font files and use them (bug #52150)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
24076
diff
changeset
|
326 } |
2390079a8aed
Provide default font files and use them (bug #52150)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
24076
diff
changeset
|
327 |
14003
1555c5a177c9
better fix for fontconfig segfault
John W. Eaton <jwe@octave.org>
parents:
13999
diff
changeset
|
328 #if defined (HAVE_FONTCONFIG) |
29679
7ad7991e946a
ft-text-renderer.cc: Use m_ prefix for class data members
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29678
diff
changeset
|
329 if ((search_code_point != 0 || name != "*") && m_fontconfig_initialized) |
22407
34ce5be04942
maint: Style check C++ code in libinterp/.
Rik <rik@octave.org>
parents:
22331
diff
changeset
|
330 { |
34ce5be04942
maint: Style check C++ code in libinterp/.
Rik <rik@octave.org>
parents:
22331
diff
changeset
|
331 int fc_weight, fc_angle; |
9403
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
332 |
22407
34ce5be04942
maint: Style check C++ code in libinterp/.
Rik <rik@octave.org>
parents:
22331
diff
changeset
|
333 if (weight == "bold") |
34ce5be04942
maint: Style check C++ code in libinterp/.
Rik <rik@octave.org>
parents:
22331
diff
changeset
|
334 fc_weight = FC_WEIGHT_BOLD; |
34ce5be04942
maint: Style check C++ code in libinterp/.
Rik <rik@octave.org>
parents:
22331
diff
changeset
|
335 else |
34ce5be04942
maint: Style check C++ code in libinterp/.
Rik <rik@octave.org>
parents:
22331
diff
changeset
|
336 fc_weight = FC_WEIGHT_NORMAL; |
9403
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
337 |
22407
34ce5be04942
maint: Style check C++ code in libinterp/.
Rik <rik@octave.org>
parents:
22331
diff
changeset
|
338 if (angle == "italic") |
34ce5be04942
maint: Style check C++ code in libinterp/.
Rik <rik@octave.org>
parents:
22331
diff
changeset
|
339 fc_angle = FC_SLANT_ITALIC; |
34ce5be04942
maint: Style check C++ code in libinterp/.
Rik <rik@octave.org>
parents:
22331
diff
changeset
|
340 else if (angle == "oblique") |
34ce5be04942
maint: Style check C++ code in libinterp/.
Rik <rik@octave.org>
parents:
22331
diff
changeset
|
341 fc_angle = FC_SLANT_OBLIQUE; |
34ce5be04942
maint: Style check C++ code in libinterp/.
Rik <rik@octave.org>
parents:
22331
diff
changeset
|
342 else |
34ce5be04942
maint: Style check C++ code in libinterp/.
Rik <rik@octave.org>
parents:
22331
diff
changeset
|
343 fc_angle = FC_SLANT_ROMAN; |
9403
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
344 |
22407
34ce5be04942
maint: Style check C++ code in libinterp/.
Rik <rik@octave.org>
parents:
22331
diff
changeset
|
345 FcPattern *pat = FcPatternCreate (); |
9403
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
346 |
22407
34ce5be04942
maint: Style check C++ code in libinterp/.
Rik <rik@octave.org>
parents:
22331
diff
changeset
|
347 FcPatternAddString (pat, FC_FAMILY, |
23447
db1fdf4384dd
maint: Use convention "static_cast<void *>" for casting of pointers.
Rik <rik@octave.org>
parents:
23220
diff
changeset
|
348 (reinterpret_cast<const FcChar8 *> |
24126
2390079a8aed
Provide default font files and use them (bug #52150)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
24076
diff
changeset
|
349 (name.c_str ()))); |
9616
2093499ec9f4
avoid crash if default font can't be found
John W. Eaton <jwe@octave.org>
parents:
9406
diff
changeset
|
350 |
22407
34ce5be04942
maint: Style check C++ code in libinterp/.
Rik <rik@octave.org>
parents:
22331
diff
changeset
|
351 FcPatternAddInteger (pat, FC_WEIGHT, fc_weight); |
34ce5be04942
maint: Style check C++ code in libinterp/.
Rik <rik@octave.org>
parents:
22331
diff
changeset
|
352 FcPatternAddInteger (pat, FC_SLANT, fc_angle); |
34ce5be04942
maint: Style check C++ code in libinterp/.
Rik <rik@octave.org>
parents:
22331
diff
changeset
|
353 FcPatternAddDouble (pat, FC_PIXEL_SIZE, size); |
9403
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
354 |
29678
7511182e5e9b
Allow for automatic font substitution in graphics text rendering
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29655
diff
changeset
|
355 if (search_code_point > 0) |
7511182e5e9b
Allow for automatic font substitution in graphics text rendering
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29655
diff
changeset
|
356 { |
7511182e5e9b
Allow for automatic font substitution in graphics text rendering
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29655
diff
changeset
|
357 FcCharSet *minimal_charset = FcCharSetCreate (); |
7511182e5e9b
Allow for automatic font substitution in graphics text rendering
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29655
diff
changeset
|
358 FcCharSetAddChar (minimal_charset, |
7511182e5e9b
Allow for automatic font substitution in graphics text rendering
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29655
diff
changeset
|
359 static_cast<FcChar32> (search_code_point)); |
7511182e5e9b
Allow for automatic font substitution in graphics text rendering
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29655
diff
changeset
|
360 FcPatternAddCharSet (pat, FC_CHARSET, minimal_charset); |
7511182e5e9b
Allow for automatic font substitution in graphics text rendering
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29655
diff
changeset
|
361 } |
7511182e5e9b
Allow for automatic font substitution in graphics text rendering
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29655
diff
changeset
|
362 |
23795
980f39c3ab90
Use C++11 nullptr rather than 0 in code (bug #51565).
Rik <rik@octave.org>
parents:
23696
diff
changeset
|
363 if (FcConfigSubstitute (nullptr, pat, FcMatchPattern)) |
22407
34ce5be04942
maint: Style check C++ code in libinterp/.
Rik <rik@octave.org>
parents:
22331
diff
changeset
|
364 { |
34ce5be04942
maint: Style check C++ code in libinterp/.
Rik <rik@octave.org>
parents:
22331
diff
changeset
|
365 FcResult res; |
34ce5be04942
maint: Style check C++ code in libinterp/.
Rik <rik@octave.org>
parents:
22331
diff
changeset
|
366 FcPattern *match; |
9403
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
367 |
22407
34ce5be04942
maint: Style check C++ code in libinterp/.
Rik <rik@octave.org>
parents:
22331
diff
changeset
|
368 FcDefaultSubstitute (pat); |
29678
7511182e5e9b
Allow for automatic font substitution in graphics text rendering
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29655
diff
changeset
|
369 |
23795
980f39c3ab90
Use C++11 nullptr rather than 0 in code (bug #51565).
Rik <rik@octave.org>
parents:
23696
diff
changeset
|
370 match = FcFontMatch (nullptr, pat, &res); |
9833 | 371 |
22407
34ce5be04942
maint: Style check C++ code in libinterp/.
Rik <rik@octave.org>
parents:
22331
diff
changeset
|
372 // FIXME: originally, this test also required that |
34ce5be04942
maint: Style check C++ code in libinterp/.
Rik <rik@octave.org>
parents:
22331
diff
changeset
|
373 // res != FcResultNoMatch. Is that really needed? |
34ce5be04942
maint: Style check C++ code in libinterp/.
Rik <rik@octave.org>
parents:
22331
diff
changeset
|
374 if (match) |
34ce5be04942
maint: Style check C++ code in libinterp/.
Rik <rik@octave.org>
parents:
22331
diff
changeset
|
375 { |
34ce5be04942
maint: Style check C++ code in libinterp/.
Rik <rik@octave.org>
parents:
22331
diff
changeset
|
376 unsigned char *tmp; |
9403
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
377 |
22407
34ce5be04942
maint: Style check C++ code in libinterp/.
Rik <rik@octave.org>
parents:
22331
diff
changeset
|
378 FcPatternGetString (match, FC_FILE, 0, &tmp); |
23447
db1fdf4384dd
maint: Use convention "static_cast<void *>" for casting of pointers.
Rik <rik@octave.org>
parents:
23220
diff
changeset
|
379 file = reinterpret_cast<char *> (tmp); |
22407
34ce5be04942
maint: Style check C++ code in libinterp/.
Rik <rik@octave.org>
parents:
22331
diff
changeset
|
380 } |
34ce5be04942
maint: Style check C++ code in libinterp/.
Rik <rik@octave.org>
parents:
22331
diff
changeset
|
381 else |
24126
2390079a8aed
Provide default font files and use them (bug #52150)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
24076
diff
changeset
|
382 ::warning ("could not match any font: %s-%s-%s-%g, using default font", |
22407
34ce5be04942
maint: Style check C++ code in libinterp/.
Rik <rik@octave.org>
parents:
22331
diff
changeset
|
383 name.c_str (), weight.c_str (), angle.c_str (), |
34ce5be04942
maint: Style check C++ code in libinterp/.
Rik <rik@octave.org>
parents:
22331
diff
changeset
|
384 size); |
9403
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
385 |
22407
34ce5be04942
maint: Style check C++ code in libinterp/.
Rik <rik@octave.org>
parents:
22331
diff
changeset
|
386 if (match) |
34ce5be04942
maint: Style check C++ code in libinterp/.
Rik <rik@octave.org>
parents:
22331
diff
changeset
|
387 FcPatternDestroy (match); |
34ce5be04942
maint: Style check C++ code in libinterp/.
Rik <rik@octave.org>
parents:
22331
diff
changeset
|
388 } |
9403
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
389 |
22407
34ce5be04942
maint: Style check C++ code in libinterp/.
Rik <rik@octave.org>
parents:
22331
diff
changeset
|
390 FcPatternDestroy (pat); |
34ce5be04942
maint: Style check C++ code in libinterp/.
Rik <rik@octave.org>
parents:
22331
diff
changeset
|
391 } |
9403
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
392 #endif |
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
393 |
22407
34ce5be04942
maint: Style check C++ code in libinterp/.
Rik <rik@octave.org>
parents:
22331
diff
changeset
|
394 if (file.empty ()) |
24126
2390079a8aed
Provide default font files and use them (bug #52150)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
24076
diff
changeset
|
395 ::warning ("unable to find default font files"); |
2390079a8aed
Provide default font files and use them (bug #52150)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
24076
diff
changeset
|
396 else |
22407
34ce5be04942
maint: Style check C++ code in libinterp/.
Rik <rik@octave.org>
parents:
22331
diff
changeset
|
397 { |
29489
ee66869c30d6
Fix loading fonts from path with non-ASCII characters on Windows.
Markus Mützel <markus.muetzel@gmx.de>
parents:
29470
diff
changeset
|
398 std::string ascii_file = sys::get_ASCII_filename (file); |
29678
7511182e5e9b
Allow for automatic font substitution in graphics text rendering
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29655
diff
changeset
|
399 |
29679
7ad7991e946a
ft-text-renderer.cc: Use m_ prefix for class data members
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29678
diff
changeset
|
400 if (FT_New_Face (m_library, ascii_file.c_str (), 0, &retval)) |
22407
34ce5be04942
maint: Style check C++ code in libinterp/.
Rik <rik@octave.org>
parents:
22331
diff
changeset
|
401 ::warning ("ft_manager: unable to load font: %s", file.c_str ()); |
21209
67d2965af0b5
revamp text rendering classes
John W. Eaton <jwe@octave.org>
parents:
21200
diff
changeset
|
402 #if defined (HAVE_FT_REFERENCE_FACE) |
22407
34ce5be04942
maint: Style check C++ code in libinterp/.
Rik <rik@octave.org>
parents:
22331
diff
changeset
|
403 else |
34ce5be04942
maint: Style check C++ code in libinterp/.
Rik <rik@octave.org>
parents:
22331
diff
changeset
|
404 { |
34ce5be04942
maint: Style check C++ code in libinterp/.
Rik <rik@octave.org>
parents:
22331
diff
changeset
|
405 // Install a finalizer to notify ft_manager that the font is |
34ce5be04942
maint: Style check C++ code in libinterp/.
Rik <rik@octave.org>
parents:
22331
diff
changeset
|
406 // being destroyed. The class ft_manager only keeps weak |
34ce5be04942
maint: Style check C++ code in libinterp/.
Rik <rik@octave.org>
parents:
22331
diff
changeset
|
407 // references to font objects. |
17270
ba865ea9c7e9
Add simple FreeType font cache in class ft_manager.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
17269
diff
changeset
|
408 |
22407
34ce5be04942
maint: Style check C++ code in libinterp/.
Rik <rik@octave.org>
parents:
22331
diff
changeset
|
409 retval->generic.data = new ft_key (key); |
34ce5be04942
maint: Style check C++ code in libinterp/.
Rik <rik@octave.org>
parents:
22331
diff
changeset
|
410 retval->generic.finalizer = ft_face_destroyed; |
17270
ba865ea9c7e9
Add simple FreeType font cache in class ft_manager.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
17269
diff
changeset
|
411 |
22407
34ce5be04942
maint: Style check C++ code in libinterp/.
Rik <rik@octave.org>
parents:
22331
diff
changeset
|
412 // Insert loaded font into the cache. |
28206
11d66485fc19
Correctly cache fonts in ft_manager (bug #58150)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27923
diff
changeset
|
413 if (FT_Reference_Face (retval) == 0) |
30119
3161a1ee0045
maint: use "m_" prefix for member variables in file ft-text-renderer.cc.
Rik <rik@octave.org>
parents:
30041
diff
changeset
|
414 m_cache[key] = retval; |
22407
34ce5be04942
maint: Style check C++ code in libinterp/.
Rik <rik@octave.org>
parents:
22331
diff
changeset
|
415 } |
17330
219552139c18
Allow to compile with older freetype on RHEL5 (bug #39823).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
17327
diff
changeset
|
416 #endif |
22407
34ce5be04942
maint: Style check C++ code in libinterp/.
Rik <rik@octave.org>
parents:
22331
diff
changeset
|
417 } |
11586
12df7854fa7c
strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
11570
diff
changeset
|
418 |
22407
34ce5be04942
maint: Style check C++ code in libinterp/.
Rik <rik@octave.org>
parents:
22331
diff
changeset
|
419 return retval; |
34ce5be04942
maint: Style check C++ code in libinterp/.
Rik <rik@octave.org>
parents:
22331
diff
changeset
|
420 } |
9403
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
421 |
22407
34ce5be04942
maint: Style check C++ code in libinterp/.
Rik <rik@octave.org>
parents:
22331
diff
changeset
|
422 void do_font_destroyed (FT_Face face) |
34ce5be04942
maint: Style check C++ code in libinterp/.
Rik <rik@octave.org>
parents:
22331
diff
changeset
|
423 { |
34ce5be04942
maint: Style check C++ code in libinterp/.
Rik <rik@octave.org>
parents:
22331
diff
changeset
|
424 if (face->generic.data) |
34ce5be04942
maint: Style check C++ code in libinterp/.
Rik <rik@octave.org>
parents:
22331
diff
changeset
|
425 { |
23447
db1fdf4384dd
maint: Use convention "static_cast<void *>" for casting of pointers.
Rik <rik@octave.org>
parents:
23220
diff
changeset
|
426 ft_key *pkey = reinterpret_cast<ft_key *> (face->generic.data); |
17270
ba865ea9c7e9
Add simple FreeType font cache in class ft_manager.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
17269
diff
changeset
|
427 |
30119
3161a1ee0045
maint: use "m_" prefix for member variables in file ft-text-renderer.cc.
Rik <rik@octave.org>
parents:
30041
diff
changeset
|
428 m_cache.erase (*pkey); |
22407
34ce5be04942
maint: Style check C++ code in libinterp/.
Rik <rik@octave.org>
parents:
22331
diff
changeset
|
429 delete pkey; |
23795
980f39c3ab90
Use C++11 nullptr rather than 0 in code (bug #51565).
Rik <rik@octave.org>
parents:
23696
diff
changeset
|
430 face->generic.data = nullptr; |
28206
11d66485fc19
Correctly cache fonts in ft_manager (bug #58150)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27923
diff
changeset
|
431 FT_Done_Face (face); |
22407
34ce5be04942
maint: Style check C++ code in libinterp/.
Rik <rik@octave.org>
parents:
22331
diff
changeset
|
432 } |
34ce5be04942
maint: Style check C++ code in libinterp/.
Rik <rik@octave.org>
parents:
22331
diff
changeset
|
433 } |
17270
ba865ea9c7e9
Add simple FreeType font cache in class ft_manager.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
17269
diff
changeset
|
434 |
30119
3161a1ee0045
maint: use "m_" prefix for member variables in file ft-text-renderer.cc.
Rik <rik@octave.org>
parents:
30041
diff
changeset
|
435 //-------- |
3161a1ee0045
maint: use "m_" prefix for member variables in file ft-text-renderer.cc.
Rik <rik@octave.org>
parents:
30041
diff
changeset
|
436 |
3161a1ee0045
maint: use "m_" prefix for member variables in file ft-text-renderer.cc.
Rik <rik@octave.org>
parents:
30041
diff
changeset
|
437 static ft_manager *m_instance; |
3161a1ee0045
maint: use "m_" prefix for member variables in file ft-text-renderer.cc.
Rik <rik@octave.org>
parents:
30041
diff
changeset
|
438 |
3161a1ee0045
maint: use "m_" prefix for member variables in file ft-text-renderer.cc.
Rik <rik@octave.org>
parents:
30041
diff
changeset
|
439 // Cache the fonts loaded by FreeType. This cache only contains |
3161a1ee0045
maint: use "m_" prefix for member variables in file ft-text-renderer.cc.
Rik <rik@octave.org>
parents:
30041
diff
changeset
|
440 // weak references to the fonts, strong references are only present |
3161a1ee0045
maint: use "m_" prefix for member variables in file ft-text-renderer.cc.
Rik <rik@octave.org>
parents:
30041
diff
changeset
|
441 // in class text_renderer. |
3161a1ee0045
maint: use "m_" prefix for member variables in file ft-text-renderer.cc.
Rik <rik@octave.org>
parents:
30041
diff
changeset
|
442 ft_cache m_cache; |
3161a1ee0045
maint: use "m_" prefix for member variables in file ft-text-renderer.cc.
Rik <rik@octave.org>
parents:
30041
diff
changeset
|
443 |
29679
7ad7991e946a
ft-text-renderer.cc: Use m_ prefix for class data members
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29678
diff
changeset
|
444 FT_Library m_library; |
7ad7991e946a
ft-text-renderer.cc: Use m_ prefix for class data members
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29678
diff
changeset
|
445 bool m_freetype_initialized; |
7ad7991e946a
ft-text-renderer.cc: Use m_ prefix for class data members
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29678
diff
changeset
|
446 bool m_fontconfig_initialized; |
22407
34ce5be04942
maint: Style check C++ code in libinterp/.
Rik <rik@octave.org>
parents:
22331
diff
changeset
|
447 }; |
9403
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
448 |
30119
3161a1ee0045
maint: use "m_" prefix for member variables in file ft-text-renderer.cc.
Rik <rik@octave.org>
parents:
30041
diff
changeset
|
449 ft_manager *ft_manager::m_instance = nullptr; |
9403
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
450 |
24722
af6c1ed60581
avoid splitting namespace blocks unnecessarily
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
451 static void |
af6c1ed60581
avoid splitting namespace blocks unnecessarily
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
452 ft_face_destroyed (void *object) |
af6c1ed60581
avoid splitting namespace blocks unnecessarily
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
453 { |
25336
389757b7b6af
eliminate redundant octave:: namespace tags
John W. Eaton <jwe@octave.org>
parents:
25054
diff
changeset
|
454 ft_manager::font_destroyed (reinterpret_cast<FT_Face> (object)); |
24722
af6c1ed60581
avoid splitting namespace blocks unnecessarily
John W. Eaton <jwe@octave.org>
parents:
24534
diff
changeset
|
455 } |
22326
71dd9d5a5ecd
move more new classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
22323
diff
changeset
|
456 |
22331
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
457 class |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
458 OCTINTERP_API |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
459 ft_text_renderer : public base_text_renderer |
21209
67d2965af0b5
revamp text rendering classes
John W. Eaton <jwe@octave.org>
parents:
21200
diff
changeset
|
460 { |
67d2965af0b5
revamp text rendering classes
John W. Eaton <jwe@octave.org>
parents:
21200
diff
changeset
|
461 public: |
9403
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
462 |
22331
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
463 enum |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
464 { |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
465 MODE_BBOX = 0, |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
466 MODE_RENDER = 1 |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
467 }; |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
468 |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
469 public: |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
470 |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
471 ft_text_renderer (void) |
29679
7ad7991e946a
ft-text-renderer.cc: Use m_ prefix for class data members
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29678
diff
changeset
|
472 : base_text_renderer (), m_font (), m_bbox (1, 4, 0.0), m_halign (0), |
7ad7991e946a
ft-text-renderer.cc: Use m_ prefix for class data members
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29678
diff
changeset
|
473 m_xoffset (0), m_line_yoffset (0), m_yoffset (0), m_mode (MODE_BBOX), |
7ad7991e946a
ft-text-renderer.cc: Use m_ prefix for class data members
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29678
diff
changeset
|
474 m_color (dim_vector (1, 3), 0), m_do_strlist (false), m_strlist (), |
7ad7991e946a
ft-text-renderer.cc: Use m_ prefix for class data members
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29678
diff
changeset
|
475 m_line_xoffset (0), m_ymin (0), m_ymax (0), m_deltax (0), |
26858
0adb232f93b9
Implement axes and text "fontsmoothing" property (bug #55833).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
26619
diff
changeset
|
476 m_max_fontsize (0), m_antialias (true) |
22407
34ce5be04942
maint: Style check C++ code in libinterp/.
Rik <rik@octave.org>
parents:
22331
diff
changeset
|
477 { } |
22331
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
478 |
22869
f75d289645ec
make deleted functions public
John W. Eaton <jwe@octave.org>
parents:
22868
diff
changeset
|
479 // No copying! |
f75d289645ec
make deleted functions public
John W. Eaton <jwe@octave.org>
parents:
22868
diff
changeset
|
480 |
f75d289645ec
make deleted functions public
John W. Eaton <jwe@octave.org>
parents:
22868
diff
changeset
|
481 ft_text_renderer (const ft_text_renderer&) = delete; |
f75d289645ec
make deleted functions public
John W. Eaton <jwe@octave.org>
parents:
22868
diff
changeset
|
482 |
f75d289645ec
make deleted functions public
John W. Eaton <jwe@octave.org>
parents:
22868
diff
changeset
|
483 ft_text_renderer& operator = (const ft_text_renderer&) = delete; |
f75d289645ec
make deleted functions public
John W. Eaton <jwe@octave.org>
parents:
22868
diff
changeset
|
484 |
22868
87e3163f6c87
use c++11 "= default" syntax for declaration of trivial destructors
John W. Eaton <jwe@octave.org>
parents:
22865
diff
changeset
|
485 ~ft_text_renderer (void) = default; |
22331
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
486 |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
487 void visit (text_element_string& e); |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
488 |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
489 void visit (text_element_list& e); |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
490 |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
491 void visit (text_element_subscript& e); |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
492 |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
493 void visit (text_element_superscript& e); |
21209
67d2965af0b5
revamp text rendering classes
John W. Eaton <jwe@octave.org>
parents:
21200
diff
changeset
|
494 |
22331
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
495 void visit (text_element_color& e); |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
496 |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
497 void visit (text_element_fontsize& e); |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
498 |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
499 void visit (text_element_fontname& e); |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
500 |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
501 void visit (text_element_fontstyle& e); |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
502 |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
503 void visit (text_element_symbol& e); |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
504 |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
505 void visit (text_element_combined& e); |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
506 |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
507 void reset (void); |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
508 |
30119
3161a1ee0045
maint: use "m_" prefix for member variables in file ft-text-renderer.cc.
Rik <rik@octave.org>
parents:
30041
diff
changeset
|
509 uint8NDArray get_pixels (void) const { return m_pixels; } |
21209
67d2965af0b5
revamp text rendering classes
John W. Eaton <jwe@octave.org>
parents:
21200
diff
changeset
|
510 |
29679
7ad7991e946a
ft-text-renderer.cc: Use m_ prefix for class data members
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29678
diff
changeset
|
511 Matrix get_boundingbox (void) const { return m_bbox; } |
22331
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
512 |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
513 uint8NDArray render (text_element *elt, Matrix& box, |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
514 int rotation = ROTATION_0); |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
515 |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
516 Matrix get_extent (text_element *elt, double rotation = 0.0); |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
517 Matrix get_extent (const std::string& txt, double rotation, |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
518 const caseless_str& interpreter); |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
519 |
26858
0adb232f93b9
Implement axes and text "fontsmoothing" property (bug #55833).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
26619
diff
changeset
|
520 void set_anti_aliasing (bool val) { m_antialias = val; }; |
0adb232f93b9
Implement axes and text "fontsmoothing" property (bug #55833).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
26619
diff
changeset
|
521 |
22331
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
522 void set_font (const std::string& name, const std::string& weight, |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
523 const std::string& angle, double size); |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
524 |
27623
698c8b08fe8c
New function uisetfont (bug #57130).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27150
diff
changeset
|
525 octave_map get_system_fonts (void); |
698c8b08fe8c
New function uisetfont (bug #57130).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27150
diff
changeset
|
526 |
22331
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
527 void set_color (const Matrix& c); |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
528 |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
529 void set_mode (int m); |
21209
67d2965af0b5
revamp text rendering classes
John W. Eaton <jwe@octave.org>
parents:
21200
diff
changeset
|
530 |
22331
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
531 void text_to_pixels (const std::string& txt, |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
532 uint8NDArray& pxls, Matrix& bbox, |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
533 int halign, int valign, double rotation, |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
534 const caseless_str& interpreter, |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
535 bool handle_rotation); |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
536 |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
537 private: |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
538 |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
539 // Class to hold information about fonts and a strong |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
540 // reference to the font objects loaded by FreeType. |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
541 |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
542 class ft_font : public text_renderer::font |
21209
67d2965af0b5
revamp text rendering classes
John W. Eaton <jwe@octave.org>
parents:
21200
diff
changeset
|
543 { |
22331
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
544 public: |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
545 |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
546 ft_font (void) |
30041
f148aff802b6
maint: use "m_" prefix for member variables of text_renderer objects.
Rik <rik@octave.org>
parents:
29683
diff
changeset
|
547 : text_renderer::font (), m_face (nullptr) { } |
22331
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
548 |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
549 ft_font (const std::string& nm, const std::string& wt, |
23795
980f39c3ab90
Use C++11 nullptr rather than 0 in code (bug #51565).
Rik <rik@octave.org>
parents:
23696
diff
changeset
|
550 const std::string& ang, double sz, FT_Face f = nullptr) |
30041
f148aff802b6
maint: use "m_" prefix for member variables of text_renderer objects.
Rik <rik@octave.org>
parents:
29683
diff
changeset
|
551 : text_renderer::font (nm, wt, ang, sz), m_face (f) |
22331
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
552 { } |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
553 |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
554 ft_font (const ft_font& ft); |
21209
67d2965af0b5
revamp text rendering classes
John W. Eaton <jwe@octave.org>
parents:
21200
diff
changeset
|
555 |
22331
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
556 ~ft_font (void) |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
557 { |
30041
f148aff802b6
maint: use "m_" prefix for member variables of text_renderer objects.
Rik <rik@octave.org>
parents:
29683
diff
changeset
|
558 if (m_face) |
f148aff802b6
maint: use "m_" prefix for member variables of text_renderer objects.
Rik <rik@octave.org>
parents:
29683
diff
changeset
|
559 FT_Done_Face (m_face); |
22331
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
560 } |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
561 |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
562 ft_font& operator = (const ft_font& ft); |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
563 |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
564 bool is_valid (void) const { return get_face (); } |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
565 |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
566 FT_Face get_face (void) const; |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
567 |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
568 private: |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
569 |
30041
f148aff802b6
maint: use "m_" prefix for member variables of text_renderer objects.
Rik <rik@octave.org>
parents:
29683
diff
changeset
|
570 mutable FT_Face m_face; |
22331
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
571 }; |
21209
67d2965af0b5
revamp text rendering classes
John W. Eaton <jwe@octave.org>
parents:
21200
diff
changeset
|
572 |
22331
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
573 void push_new_line (void); |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
574 |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
575 void update_line_bbox (void); |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
576 |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
577 void compute_bbox (void); |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
578 |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
579 int compute_line_xoffset (const Matrix& lb) const; |
21209
67d2965af0b5
revamp text rendering classes
John W. Eaton <jwe@octave.org>
parents:
21200
diff
changeset
|
580 |
29683
5ffe7159f94b
Add substitution font to SVG font stack if necessary
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29679
diff
changeset
|
581 FT_UInt process_character (FT_ULong code, FT_UInt previous, |
5ffe7159f94b
Add substitution font to SVG font stack if necessary
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29679
diff
changeset
|
582 std::string& sub_font); |
22331
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
583 |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
584 public: |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
585 |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
586 void text_to_strlist (const std::string& txt, |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
587 std::list<text_renderer::string>& lst, Matrix& bbox, |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
588 int halign, int valign, double rotation, |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
589 const caseless_str& interp); |
21209
67d2965af0b5
revamp text rendering classes
John W. Eaton <jwe@octave.org>
parents:
21200
diff
changeset
|
590 |
67d2965af0b5
revamp text rendering classes
John W. Eaton <jwe@octave.org>
parents:
21200
diff
changeset
|
591 private: |
67d2965af0b5
revamp text rendering classes
John W. Eaton <jwe@octave.org>
parents:
21200
diff
changeset
|
592 |
22331
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
593 // The current font used by the renderer. |
29679
7ad7991e946a
ft-text-renderer.cc: Use m_ prefix for class data members
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29678
diff
changeset
|
594 ft_font m_font; |
22331
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
595 |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
596 // Used to stored the bounding box corresponding to the rendered text. |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
597 // The bounding box has the form [x, y, w, h] where x and y represent the |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
598 // coordinates of the bottom left corner relative to the anchor point of |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
599 // the text (== start of text on the baseline). Due to font descent or |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
600 // multiple lines, the value y is usually negative. |
29679
7ad7991e946a
ft-text-renderer.cc: Use m_ prefix for class data members
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29678
diff
changeset
|
601 Matrix m_bbox; |
22331
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
602 |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
603 // Used to stored the rendered text. It's a 3D matrix with size MxNx4 |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
604 // where M and N are the width and height of the bounding box. |
30119
3161a1ee0045
maint: use "m_" prefix for member variables in file ft-text-renderer.cc.
Rik <rik@octave.org>
parents:
30041
diff
changeset
|
605 uint8NDArray m_pixels; |
22331
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
606 |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
607 // Used to store the bounding box of each line. This is used to layout |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
608 // multiline text properly. |
30119
3161a1ee0045
maint: use "m_" prefix for member variables in file ft-text-renderer.cc.
Rik <rik@octave.org>
parents:
30041
diff
changeset
|
609 std::list<Matrix> m_line_bbox; |
22331
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
610 |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
611 // The current horizontal alignment. This is used to align multi-line text. |
29679
7ad7991e946a
ft-text-renderer.cc: Use m_ prefix for class data members
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29678
diff
changeset
|
612 int m_halign; |
22331
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
613 |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
614 // The X offset for the next glyph. |
29679
7ad7991e946a
ft-text-renderer.cc: Use m_ prefix for class data members
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29678
diff
changeset
|
615 int m_xoffset; |
22331
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
616 |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
617 // The Y offset of the baseline for the current line. |
29679
7ad7991e946a
ft-text-renderer.cc: Use m_ prefix for class data members
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29678
diff
changeset
|
618 int m_line_yoffset; |
22331
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
619 |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
620 // The Y offset of the baseline for the next glyph. The offset is relative |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
621 // to line_yoffset. The total Y offset is computed with: |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
622 // line_yoffset + yoffset. |
29679
7ad7991e946a
ft-text-renderer.cc: Use m_ prefix for class data members
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29678
diff
changeset
|
623 int m_yoffset; |
22331
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
624 |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
625 // The current mode of the rendering process (box computing or rendering). |
29679
7ad7991e946a
ft-text-renderer.cc: Use m_ prefix for class data members
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29678
diff
changeset
|
626 int m_mode; |
22331
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
627 |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
628 // The base color of the rendered text. |
29679
7ad7991e946a
ft-text-renderer.cc: Use m_ prefix for class data members
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29678
diff
changeset
|
629 uint8NDArray m_color; |
22331
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
630 |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
631 // A list of parsed strings to be used for printing. |
26573
ad70a85f702b
Avoid accumulating data in text_renderer member variable (bug #55287)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
26478
diff
changeset
|
632 bool m_do_strlist; |
ad70a85f702b
Avoid accumulating data in text_renderer member variable (bug #55287)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
26478
diff
changeset
|
633 std::list<text_renderer::string> m_strlist; |
22331
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
634 |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
635 // The X offset of the baseline for the current line. |
29679
7ad7991e946a
ft-text-renderer.cc: Use m_ prefix for class data members
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29678
diff
changeset
|
636 int m_line_xoffset; |
26617
98afb8bbd1f6
maint: Strip trailing whitespace from source files.
John W. Eaton <jwe@octave.org>
parents:
26573
diff
changeset
|
637 |
26187
8d4f23b7f4eb
Improve text extent calculation when using freetype text renderer (bug #55075)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
26152
diff
changeset
|
638 // Min and max y coordinates of all glyphs in a line. |
8d4f23b7f4eb
Improve text extent calculation when using freetype text renderer (bug #55075)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
26152
diff
changeset
|
639 FT_Pos m_ymin; |
8d4f23b7f4eb
Improve text extent calculation when using freetype text renderer (bug #55075)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
26152
diff
changeset
|
640 FT_Pos m_ymax; |
8d4f23b7f4eb
Improve text extent calculation when using freetype text renderer (bug #55075)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
26152
diff
changeset
|
641 |
8d4f23b7f4eb
Improve text extent calculation when using freetype text renderer (bug #55075)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
26152
diff
changeset
|
642 // Difference between the advance and the actual extent of the latest glyph |
8d4f23b7f4eb
Improve text extent calculation when using freetype text renderer (bug #55075)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
26152
diff
changeset
|
643 FT_Pos m_deltax; |
8d4f23b7f4eb
Improve text extent calculation when using freetype text renderer (bug #55075)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
26152
diff
changeset
|
644 |
8d4f23b7f4eb
Improve text extent calculation when using freetype text renderer (bug #55075)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
26152
diff
changeset
|
645 // Used for computing the distance between lines. |
8d4f23b7f4eb
Improve text extent calculation when using freetype text renderer (bug #55075)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
26152
diff
changeset
|
646 double m_max_fontsize; |
22331
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
647 |
26858
0adb232f93b9
Implement axes and text "fontsmoothing" property (bug #55833).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
26619
diff
changeset
|
648 // Anti-aliasing. |
0adb232f93b9
Implement axes and text "fontsmoothing" property (bug #55833).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
26619
diff
changeset
|
649 bool m_antialias; |
22331
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
650 |
21209
67d2965af0b5
revamp text rendering classes
John W. Eaton <jwe@octave.org>
parents:
21200
diff
changeset
|
651 }; |
67d2965af0b5
revamp text rendering classes
John W. Eaton <jwe@octave.org>
parents:
21200
diff
changeset
|
652 |
22331
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
653 void |
27623
698c8b08fe8c
New function uisetfont (bug #57130).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27150
diff
changeset
|
654 ft_text_renderer::set_font (const std::string& name, |
698c8b08fe8c
New function uisetfont (bug #57130).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27150
diff
changeset
|
655 const std::string& weight, |
22331
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
656 const std::string& angle, double size) |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
657 { |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
658 // FIXME: take "fontunits" into account |
29679
7ad7991e946a
ft-text-renderer.cc: Use m_ prefix for class data members
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29678
diff
changeset
|
659 m_font = ft_font (name, weight, angle, size, nullptr); |
27623
698c8b08fe8c
New function uisetfont (bug #57130).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27150
diff
changeset
|
660 } |
22331
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
661 |
27623
698c8b08fe8c
New function uisetfont (bug #57130).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27150
diff
changeset
|
662 octave_map |
698c8b08fe8c
New function uisetfont (bug #57130).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27150
diff
changeset
|
663 ft_text_renderer::get_system_fonts (void) |
698c8b08fe8c
New function uisetfont (bug #57130).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27150
diff
changeset
|
664 { |
698c8b08fe8c
New function uisetfont (bug #57130).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27150
diff
changeset
|
665 return ft_manager::get_system_fonts (); |
22331
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
666 } |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
667 |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
668 void |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
669 ft_text_renderer::push_new_line (void) |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
670 { |
29679
7ad7991e946a
ft-text-renderer.cc: Use m_ prefix for class data members
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29678
diff
changeset
|
671 switch (m_mode) |
22331
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
672 { |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
673 case MODE_BBOX: |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
674 { |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
675 // Create a new bbox entry based on the current font. |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
676 |
29679
7ad7991e946a
ft-text-renderer.cc: Use m_ prefix for class data members
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29678
diff
changeset
|
677 FT_Face face = m_font.get_face (); |
21209
67d2965af0b5
revamp text rendering classes
John W. Eaton <jwe@octave.org>
parents:
21200
diff
changeset
|
678 |
22331
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
679 if (face) |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
680 { |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
681 Matrix bb (1, 5, 0.0); |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
682 |
30119
3161a1ee0045
maint: use "m_" prefix for member variables in file ft-text-renderer.cc.
Rik <rik@octave.org>
parents:
30041
diff
changeset
|
683 m_line_bbox.push_back (bb); |
22331
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
684 |
29679
7ad7991e946a
ft-text-renderer.cc: Use m_ prefix for class data members
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29678
diff
changeset
|
685 m_xoffset = m_yoffset = 0; |
26187
8d4f23b7f4eb
Improve text extent calculation when using freetype text renderer (bug #55075)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
26152
diff
changeset
|
686 m_ymin = m_ymax = m_deltax = 0; |
22331
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
687 } |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
688 } |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
689 break; |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
690 |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
691 case MODE_RENDER: |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
692 { |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
693 // Move to the next line bbox, adjust xoffset based on alignment |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
694 // and yoffset based on the old and new line bbox. |
21209
67d2965af0b5
revamp text rendering classes
John W. Eaton <jwe@octave.org>
parents:
21200
diff
changeset
|
695 |
30119
3161a1ee0045
maint: use "m_" prefix for member variables in file ft-text-renderer.cc.
Rik <rik@octave.org>
parents:
30041
diff
changeset
|
696 Matrix old_bbox = m_line_bbox.front (); |
3161a1ee0045
maint: use "m_" prefix for member variables in file ft-text-renderer.cc.
Rik <rik@octave.org>
parents:
30041
diff
changeset
|
697 m_line_bbox.pop_front (); |
3161a1ee0045
maint: use "m_" prefix for member variables in file ft-text-renderer.cc.
Rik <rik@octave.org>
parents:
30041
diff
changeset
|
698 Matrix new_bbox = m_line_bbox.front (); |
22331
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
699 |
29679
7ad7991e946a
ft-text-renderer.cc: Use m_ prefix for class data members
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29678
diff
changeset
|
700 m_xoffset = m_line_xoffset = compute_line_xoffset (new_bbox); |
7ad7991e946a
ft-text-renderer.cc: Use m_ prefix for class data members
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29678
diff
changeset
|
701 m_line_yoffset -= (-old_bbox(1) + math::round (0.4 * m_max_fontsize) |
7ad7991e946a
ft-text-renderer.cc: Use m_ prefix for class data members
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29678
diff
changeset
|
702 + (new_bbox(3) + new_bbox(1))); |
7ad7991e946a
ft-text-renderer.cc: Use m_ prefix for class data members
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29678
diff
changeset
|
703 m_yoffset = 0; |
26187
8d4f23b7f4eb
Improve text extent calculation when using freetype text renderer (bug #55075)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
26152
diff
changeset
|
704 m_ymin = m_ymax = m_deltax = 0; |
22331
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
705 } |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
706 break; |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
707 } |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
708 } |
21209
67d2965af0b5
revamp text rendering classes
John W. Eaton <jwe@octave.org>
parents:
21200
diff
changeset
|
709 |
22331
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
710 int |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
711 ft_text_renderer::compute_line_xoffset (const Matrix& lb) const |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
712 { |
29679
7ad7991e946a
ft-text-renderer.cc: Use m_ prefix for class data members
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29678
diff
changeset
|
713 if (! m_bbox.isempty ()) |
22331
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
714 { |
29679
7ad7991e946a
ft-text-renderer.cc: Use m_ prefix for class data members
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29678
diff
changeset
|
715 switch (m_halign) |
22331
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
716 { |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
717 case 0: |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
718 return 0; |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
719 case 1: |
29679
7ad7991e946a
ft-text-renderer.cc: Use m_ prefix for class data members
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29678
diff
changeset
|
720 return (m_bbox(2) - lb(2)) / 2; |
22331
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
721 case 2: |
29679
7ad7991e946a
ft-text-renderer.cc: Use m_ prefix for class data members
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29678
diff
changeset
|
722 return (m_bbox(2) - lb(2)); |
22331
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
723 } |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
724 } |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
725 |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
726 return 0; |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
727 } |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
728 |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
729 void |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
730 ft_text_renderer::compute_bbox (void) |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
731 { |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
732 // Stack the various line bbox together and compute the final |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
733 // bounding box for the entire text string. |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
734 |
29679
7ad7991e946a
ft-text-renderer.cc: Use m_ prefix for class data members
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29678
diff
changeset
|
735 m_bbox = Matrix (); |
22331
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
736 |
30119
3161a1ee0045
maint: use "m_" prefix for member variables in file ft-text-renderer.cc.
Rik <rik@octave.org>
parents:
30041
diff
changeset
|
737 switch (m_line_bbox.size ()) |
22331
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
738 { |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
739 case 0: |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
740 break; |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
741 |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
742 case 1: |
30119
3161a1ee0045
maint: use "m_" prefix for member variables in file ft-text-renderer.cc.
Rik <rik@octave.org>
parents:
30041
diff
changeset
|
743 m_bbox = m_line_bbox.front ().extract (0, 0, 0, 3); |
22331
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
744 break; |
21209
67d2965af0b5
revamp text rendering classes
John W. Eaton <jwe@octave.org>
parents:
21200
diff
changeset
|
745 |
22331
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
746 default: |
30119
3161a1ee0045
maint: use "m_" prefix for member variables in file ft-text-renderer.cc.
Rik <rik@octave.org>
parents:
30041
diff
changeset
|
747 for (const auto& lbox : m_line_bbox) |
22331
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
748 { |
29679
7ad7991e946a
ft-text-renderer.cc: Use m_ prefix for class data members
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29678
diff
changeset
|
749 if (m_bbox.isempty ()) |
7ad7991e946a
ft-text-renderer.cc: Use m_ prefix for class data members
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29678
diff
changeset
|
750 m_bbox = lbox.extract (0, 0, 0, 3); |
22331
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
751 else |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
752 { |
26221
76ac35f71573
Fix regression in multi-line text rendering (bug #55218)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
26187
diff
changeset
|
753 double delta = math::round (0.4 * m_max_fontsize) + lbox(3); |
29679
7ad7991e946a
ft-text-renderer.cc: Use m_ prefix for class data members
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29678
diff
changeset
|
754 m_bbox(1) -= delta; |
7ad7991e946a
ft-text-renderer.cc: Use m_ prefix for class data members
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29678
diff
changeset
|
755 m_bbox(3) += delta; |
7ad7991e946a
ft-text-renderer.cc: Use m_ prefix for class data members
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29678
diff
changeset
|
756 m_bbox(2) = math::max (m_bbox(2), lbox(2)); |
22331
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
757 } |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
758 } |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
759 break; |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
760 } |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
761 } |
21209
67d2965af0b5
revamp text rendering classes
John W. Eaton <jwe@octave.org>
parents:
21200
diff
changeset
|
762 |
22331
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
763 void |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
764 ft_text_renderer::update_line_bbox (void) |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
765 { |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
766 // Called after a font change, when in MODE_BBOX mode, to update the |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
767 // current line bbox with the new font metrics. This also includes the |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
768 // current yoffset, that is the offset of the current glyph's baseline |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
769 // the line's baseline. |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
770 |
29679
7ad7991e946a
ft-text-renderer.cc: Use m_ prefix for class data members
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29678
diff
changeset
|
771 if (m_mode == MODE_BBOX) |
22331
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
772 { |
30119
3161a1ee0045
maint: use "m_" prefix for member variables in file ft-text-renderer.cc.
Rik <rik@octave.org>
parents:
30041
diff
changeset
|
773 Matrix& bb = m_line_bbox.back (); |
26187
8d4f23b7f4eb
Improve text extent calculation when using freetype text renderer (bug #55075)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
26152
diff
changeset
|
774 bb(1) = m_ymin; |
26330
45cf2ada3e39
Make sure text bounding box is high enough (bug #55328).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
26221
diff
changeset
|
775 // Add one pixel to the bbox height to avoid occasional text clipping. |
45cf2ada3e39
Make sure text bounding box is high enough (bug #55328).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
26221
diff
changeset
|
776 // See bug #55328. |
45cf2ada3e39
Make sure text bounding box is high enough (bug #55328).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
26221
diff
changeset
|
777 bb(3) = (m_ymax + 1) - m_ymin; |
26187
8d4f23b7f4eb
Improve text extent calculation when using freetype text renderer (bug #55075)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
26152
diff
changeset
|
778 if (m_deltax > 0) |
8d4f23b7f4eb
Improve text extent calculation when using freetype text renderer (bug #55075)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
26152
diff
changeset
|
779 bb(2) += m_deltax; |
22331
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
780 } |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
781 } |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
782 |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
783 void |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
784 ft_text_renderer::set_mode (int m) |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
785 { |
29679
7ad7991e946a
ft-text-renderer.cc: Use m_ prefix for class data members
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29678
diff
changeset
|
786 m_mode = m; |
22331
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
787 |
29679
7ad7991e946a
ft-text-renderer.cc: Use m_ prefix for class data members
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29678
diff
changeset
|
788 switch (m_mode) |
22331
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
789 { |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
790 case MODE_BBOX: |
29679
7ad7991e946a
ft-text-renderer.cc: Use m_ prefix for class data members
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29678
diff
changeset
|
791 m_xoffset = m_line_yoffset = m_yoffset = 0; |
26187
8d4f23b7f4eb
Improve text extent calculation when using freetype text renderer (bug #55075)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
26152
diff
changeset
|
792 m_max_fontsize = 0.0; |
29679
7ad7991e946a
ft-text-renderer.cc: Use m_ prefix for class data members
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29678
diff
changeset
|
793 m_bbox = Matrix (1, 4, 0.0); |
30119
3161a1ee0045
maint: use "m_" prefix for member variables in file ft-text-renderer.cc.
Rik <rik@octave.org>
parents:
30041
diff
changeset
|
794 m_line_bbox.clear (); |
22331
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
795 push_new_line (); |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
796 break; |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
797 |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
798 case MODE_RENDER: |
29679
7ad7991e946a
ft-text-renderer.cc: Use m_ prefix for class data members
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29678
diff
changeset
|
799 if (m_bbox.numel () != 4) |
22331
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
800 { |
22515
77b50a83ec11
Error out, rather than segfault, when fontname is "" (bug #49102).
Rik <rik@octave.org>
parents:
22407
diff
changeset
|
801 ::error ("ft_text_renderer: invalid bounding box, cannot render"); |
21209
67d2965af0b5
revamp text rendering classes
John W. Eaton <jwe@octave.org>
parents:
21200
diff
changeset
|
802 |
29679
7ad7991e946a
ft-text-renderer.cc: Use m_ prefix for class data members
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29678
diff
changeset
|
803 m_xoffset = m_line_yoffset = m_yoffset = 0; |
30119
3161a1ee0045
maint: use "m_" prefix for member variables in file ft-text-renderer.cc.
Rik <rik@octave.org>
parents:
30041
diff
changeset
|
804 m_pixels = uint8NDArray (); |
22331
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
805 } |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
806 else |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
807 { |
29679
7ad7991e946a
ft-text-renderer.cc: Use m_ prefix for class data members
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29678
diff
changeset
|
808 dim_vector d (4, octave_idx_type (m_bbox(2)), |
7ad7991e946a
ft-text-renderer.cc: Use m_ prefix for class data members
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29678
diff
changeset
|
809 octave_idx_type (m_bbox(3))); |
30119
3161a1ee0045
maint: use "m_" prefix for member variables in file ft-text-renderer.cc.
Rik <rik@octave.org>
parents:
30041
diff
changeset
|
810 m_pixels = uint8NDArray (d, static_cast<uint8_t> (0)); |
3161a1ee0045
maint: use "m_" prefix for member variables in file ft-text-renderer.cc.
Rik <rik@octave.org>
parents:
30041
diff
changeset
|
811 m_xoffset = compute_line_xoffset (m_line_bbox.front ()); |
29679
7ad7991e946a
ft-text-renderer.cc: Use m_ prefix for class data members
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29678
diff
changeset
|
812 m_line_yoffset = -m_bbox(1); |
7ad7991e946a
ft-text-renderer.cc: Use m_ prefix for class data members
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29678
diff
changeset
|
813 m_yoffset = 0; |
22331
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
814 } |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
815 break; |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
816 |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
817 default: |
29679
7ad7991e946a
ft-text-renderer.cc: Use m_ prefix for class data members
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29678
diff
changeset
|
818 error ("ft_text_renderer: invalid mode '%d'", m_mode); |
22331
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
819 break; |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
820 } |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
821 } |
30119
3161a1ee0045
maint: use "m_" prefix for member variables in file ft-text-renderer.cc.
Rik <rik@octave.org>
parents:
30041
diff
changeset
|
822 |
30390
a61e1a0f6024
maint: style check C++ files in libinterp/ ahead of 7.1 release.
Rik <rik@octave.org>
parents:
30119
diff
changeset
|
823 bool is_opaque (const FT_GlyphSlot& glyph, const int x, const int y) |
26858
0adb232f93b9
Implement axes and text "fontsmoothing" property (bug #55833).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
26619
diff
changeset
|
824 { |
0adb232f93b9
Implement axes and text "fontsmoothing" property (bug #55833).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
26619
diff
changeset
|
825 // Borrowed from https://stackoverflow.com/questions/14800827/ |
0adb232f93b9
Implement axes and text "fontsmoothing" property (bug #55833).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
26619
diff
changeset
|
826 // indexing-pixels-in-a-monochrome-freetype-glyph-buffer |
0adb232f93b9
Implement axes and text "fontsmoothing" property (bug #55833).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
26619
diff
changeset
|
827 int pitch = std::abs (glyph->bitmap.pitch); |
0adb232f93b9
Implement axes and text "fontsmoothing" property (bug #55833).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
26619
diff
changeset
|
828 unsigned char *row = &glyph->bitmap.buffer[pitch * y]; |
0adb232f93b9
Implement axes and text "fontsmoothing" property (bug #55833).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
26619
diff
changeset
|
829 char cvalue = row[x >> 3]; |
26995
ab5bfee22d18
maint: Strip trailing whitespace from source files.
John W. Eaton <jwe@octave.org>
parents:
26858
diff
changeset
|
830 |
26858
0adb232f93b9
Implement axes and text "fontsmoothing" property (bug #55833).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
26619
diff
changeset
|
831 return ((cvalue & (128 >> (x & 7))) != 0); |
0adb232f93b9
Implement axes and text "fontsmoothing" property (bug #55833).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
26619
diff
changeset
|
832 } |
22331
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
833 |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
834 FT_UInt |
29683
5ffe7159f94b
Add substitution font to SVG font stack if necessary
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29679
diff
changeset
|
835 ft_text_renderer::process_character (FT_ULong code, FT_UInt previous, |
5ffe7159f94b
Add substitution font to SVG font stack if necessary
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29679
diff
changeset
|
836 std::string& sub_name) |
22331
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
837 { |
29679
7ad7991e946a
ft-text-renderer.cc: Use m_ prefix for class data members
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29678
diff
changeset
|
838 FT_Face face = m_font.get_face (); |
29683
5ffe7159f94b
Add substitution font to SVG font stack if necessary
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29679
diff
changeset
|
839 |
5ffe7159f94b
Add substitution font to SVG font stack if necessary
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29679
diff
changeset
|
840 sub_name = face->family_name; |
5ffe7159f94b
Add substitution font to SVG font stack if necessary
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29679
diff
changeset
|
841 |
22331
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
842 FT_UInt glyph_index = 0; |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
843 |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
844 if (face) |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
845 { |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
846 glyph_index = FT_Get_Char_Index (face, code); |
21209
67d2965af0b5
revamp text rendering classes
John W. Eaton <jwe@octave.org>
parents:
21200
diff
changeset
|
847 |
25421
c335f94766a7
Re-organize to avoid code duplication (bug #54083).
Markus Mützel <markus.muetzel@gmx.de>
parents:
25420
diff
changeset
|
848 if (code != '\n' && code != '\t' |
22331
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
849 && (! glyph_index |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
850 || FT_Load_Glyph (face, glyph_index, FT_LOAD_DEFAULT))) |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
851 { |
29678
7511182e5e9b
Allow for automatic font substitution in graphics text rendering
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29655
diff
changeset
|
852 #if defined (HAVE_FONTCONFIG) |
7511182e5e9b
Allow for automatic font substitution in graphics text rendering
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29655
diff
changeset
|
853 // Try to substitue font |
29679
7ad7991e946a
ft-text-renderer.cc: Use m_ prefix for class data members
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29678
diff
changeset
|
854 FT_Face sub_face = ft_manager::get_font (m_font.get_name (), |
7ad7991e946a
ft-text-renderer.cc: Use m_ prefix for class data members
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29678
diff
changeset
|
855 m_font.get_weight (), |
7ad7991e946a
ft-text-renderer.cc: Use m_ prefix for class data members
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29678
diff
changeset
|
856 m_font.get_angle (), |
7ad7991e946a
ft-text-renderer.cc: Use m_ prefix for class data members
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29678
diff
changeset
|
857 m_font.get_size (), |
29678
7511182e5e9b
Allow for automatic font substitution in graphics text rendering
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29655
diff
changeset
|
858 code); |
7511182e5e9b
Allow for automatic font substitution in graphics text rendering
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29655
diff
changeset
|
859 |
7511182e5e9b
Allow for automatic font substitution in graphics text rendering
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29655
diff
changeset
|
860 if (sub_face) |
7511182e5e9b
Allow for automatic font substitution in graphics text rendering
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29655
diff
changeset
|
861 { |
29679
7ad7991e946a
ft-text-renderer.cc: Use m_ prefix for class data members
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29678
diff
changeset
|
862 FT_Set_Char_Size (sub_face, 0, m_font.get_size ()*64, 0, 0); |
29678
7511182e5e9b
Allow for automatic font substitution in graphics text rendering
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29655
diff
changeset
|
863 |
7511182e5e9b
Allow for automatic font substitution in graphics text rendering
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29655
diff
changeset
|
864 glyph_index = FT_Get_Char_Index (sub_face, code); |
7511182e5e9b
Allow for automatic font substitution in graphics text rendering
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29655
diff
changeset
|
865 |
7511182e5e9b
Allow for automatic font substitution in graphics text rendering
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29655
diff
changeset
|
866 if (glyph_index |
7511182e5e9b
Allow for automatic font substitution in graphics text rendering
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29655
diff
changeset
|
867 && (FT_Load_Glyph (sub_face, glyph_index, FT_LOAD_DEFAULT) |
7511182e5e9b
Allow for automatic font substitution in graphics text rendering
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29655
diff
changeset
|
868 == 0)) |
7511182e5e9b
Allow for automatic font substitution in graphics text rendering
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29655
diff
changeset
|
869 { |
29683
5ffe7159f94b
Add substitution font to SVG font stack if necessary
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29679
diff
changeset
|
870 static std::string prev_sub_name; |
29678
7511182e5e9b
Allow for automatic font substitution in graphics text rendering
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29655
diff
changeset
|
871 |
29683
5ffe7159f94b
Add substitution font to SVG font stack if necessary
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29679
diff
changeset
|
872 if (prev_sub_name.empty () |
5ffe7159f94b
Add substitution font to SVG font stack if necessary
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29679
diff
changeset
|
873 || prev_sub_name != std::string (sub_face->family_name)) |
29678
7511182e5e9b
Allow for automatic font substitution in graphics text rendering
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29655
diff
changeset
|
874 { |
29683
5ffe7159f94b
Add substitution font to SVG font stack if necessary
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29679
diff
changeset
|
875 prev_sub_name = sub_face->family_name; |
29678
7511182e5e9b
Allow for automatic font substitution in graphics text rendering
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29655
diff
changeset
|
876 warning_with_id ("Octave:substituted-glyph", |
7511182e5e9b
Allow for automatic font substitution in graphics text rendering
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29655
diff
changeset
|
877 "text_renderer: substituting font to '%s' for some characters", |
7511182e5e9b
Allow for automatic font substitution in graphics text rendering
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29655
diff
changeset
|
878 sub_face->family_name); |
7511182e5e9b
Allow for automatic font substitution in graphics text rendering
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29655
diff
changeset
|
879 } |
7511182e5e9b
Allow for automatic font substitution in graphics text rendering
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29655
diff
changeset
|
880 |
29679
7ad7991e946a
ft-text-renderer.cc: Use m_ prefix for class data members
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29678
diff
changeset
|
881 ft_font saved_font = m_font; |
29678
7511182e5e9b
Allow for automatic font substitution in graphics text rendering
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29655
diff
changeset
|
882 |
29679
7ad7991e946a
ft-text-renderer.cc: Use m_ prefix for class data members
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29678
diff
changeset
|
883 m_font = ft_font (m_font.get_name (), m_font.get_weight (), |
7ad7991e946a
ft-text-renderer.cc: Use m_ prefix for class data members
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29678
diff
changeset
|
884 m_font.get_angle (), m_font.get_size (), |
7ad7991e946a
ft-text-renderer.cc: Use m_ prefix for class data members
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29678
diff
changeset
|
885 sub_face); |
29678
7511182e5e9b
Allow for automatic font substitution in graphics text rendering
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29655
diff
changeset
|
886 |
29683
5ffe7159f94b
Add substitution font to SVG font stack if necessary
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29679
diff
changeset
|
887 process_character (code, previous, sub_name); |
29678
7511182e5e9b
Allow for automatic font substitution in graphics text rendering
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29655
diff
changeset
|
888 |
29679
7ad7991e946a
ft-text-renderer.cc: Use m_ prefix for class data members
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29678
diff
changeset
|
889 m_font = saved_font; |
29678
7511182e5e9b
Allow for automatic font substitution in graphics text rendering
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29655
diff
changeset
|
890 } |
7511182e5e9b
Allow for automatic font substitution in graphics text rendering
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29655
diff
changeset
|
891 else |
7511182e5e9b
Allow for automatic font substitution in graphics text rendering
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29655
diff
changeset
|
892 { |
7511182e5e9b
Allow for automatic font substitution in graphics text rendering
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29655
diff
changeset
|
893 glyph_index = 0; |
7511182e5e9b
Allow for automatic font substitution in graphics text rendering
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29655
diff
changeset
|
894 warn_missing_glyph (code); |
7511182e5e9b
Allow for automatic font substitution in graphics text rendering
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29655
diff
changeset
|
895 } |
7511182e5e9b
Allow for automatic font substitution in graphics text rendering
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29655
diff
changeset
|
896 } |
7511182e5e9b
Allow for automatic font substitution in graphics text rendering
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29655
diff
changeset
|
897 else |
7511182e5e9b
Allow for automatic font substitution in graphics text rendering
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29655
diff
changeset
|
898 { |
7511182e5e9b
Allow for automatic font substitution in graphics text rendering
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29655
diff
changeset
|
899 glyph_index = 0; |
7511182e5e9b
Allow for automatic font substitution in graphics text rendering
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29655
diff
changeset
|
900 warn_missing_glyph (code); |
7511182e5e9b
Allow for automatic font substitution in graphics text rendering
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29655
diff
changeset
|
901 } |
7511182e5e9b
Allow for automatic font substitution in graphics text rendering
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29655
diff
changeset
|
902 #else |
22331
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
903 glyph_index = 0; |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
904 warn_missing_glyph (code); |
29678
7511182e5e9b
Allow for automatic font substitution in graphics text rendering
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29655
diff
changeset
|
905 #endif |
22331
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
906 } |
25421
c335f94766a7
Re-organize to avoid code duplication (bug #54083).
Markus Mützel <markus.muetzel@gmx.de>
parents:
25420
diff
changeset
|
907 else if ((code == '\n') || (code == '\t')) |
c335f94766a7
Re-organize to avoid code duplication (bug #54083).
Markus Mützel <markus.muetzel@gmx.de>
parents:
25420
diff
changeset
|
908 { |
c335f94766a7
Re-organize to avoid code duplication (bug #54083).
Markus Mützel <markus.muetzel@gmx.de>
parents:
25420
diff
changeset
|
909 glyph_index = FT_Get_Char_Index (face, ' '); |
c335f94766a7
Re-organize to avoid code duplication (bug #54083).
Markus Mützel <markus.muetzel@gmx.de>
parents:
25420
diff
changeset
|
910 if (! glyph_index |
c335f94766a7
Re-organize to avoid code duplication (bug #54083).
Markus Mützel <markus.muetzel@gmx.de>
parents:
25420
diff
changeset
|
911 || FT_Load_Glyph (face, glyph_index, FT_LOAD_DEFAULT)) |
c335f94766a7
Re-organize to avoid code duplication (bug #54083).
Markus Mützel <markus.muetzel@gmx.de>
parents:
25420
diff
changeset
|
912 { |
c335f94766a7
Re-organize to avoid code duplication (bug #54083).
Markus Mützel <markus.muetzel@gmx.de>
parents:
25420
diff
changeset
|
913 glyph_index = 0; |
c335f94766a7
Re-organize to avoid code duplication (bug #54083).
Markus Mützel <markus.muetzel@gmx.de>
parents:
25420
diff
changeset
|
914 warn_missing_glyph (' '); |
c335f94766a7
Re-organize to avoid code duplication (bug #54083).
Markus Mützel <markus.muetzel@gmx.de>
parents:
25420
diff
changeset
|
915 } |
c335f94766a7
Re-organize to avoid code duplication (bug #54083).
Markus Mützel <markus.muetzel@gmx.de>
parents:
25420
diff
changeset
|
916 else if (code == '\n') |
c335f94766a7
Re-organize to avoid code duplication (bug #54083).
Markus Mützel <markus.muetzel@gmx.de>
parents:
25420
diff
changeset
|
917 push_new_line (); |
c335f94766a7
Re-organize to avoid code duplication (bug #54083).
Markus Mützel <markus.muetzel@gmx.de>
parents:
25420
diff
changeset
|
918 else |
c335f94766a7
Re-organize to avoid code duplication (bug #54083).
Markus Mützel <markus.muetzel@gmx.de>
parents:
25420
diff
changeset
|
919 { |
c335f94766a7
Re-organize to avoid code duplication (bug #54083).
Markus Mützel <markus.muetzel@gmx.de>
parents:
25420
diff
changeset
|
920 // Advance to next multiple of 4 times the width of the "space" |
c335f94766a7
Re-organize to avoid code duplication (bug #54083).
Markus Mützel <markus.muetzel@gmx.de>
parents:
25420
diff
changeset
|
921 // character. |
c335f94766a7
Re-organize to avoid code duplication (bug #54083).
Markus Mützel <markus.muetzel@gmx.de>
parents:
25420
diff
changeset
|
922 int x_tab = 4 * (face->glyph->advance.x >> 6); |
29679
7ad7991e946a
ft-text-renderer.cc: Use m_ prefix for class data members
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29678
diff
changeset
|
923 m_xoffset = (1 + std::floor (1. * m_xoffset / x_tab)) * x_tab; |
25421
c335f94766a7
Re-organize to avoid code duplication (bug #54083).
Markus Mützel <markus.muetzel@gmx.de>
parents:
25420
diff
changeset
|
924 } |
c335f94766a7
Re-organize to avoid code duplication (bug #54083).
Markus Mützel <markus.muetzel@gmx.de>
parents:
25420
diff
changeset
|
925 } |
22331
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
926 else |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
927 { |
29679
7ad7991e946a
ft-text-renderer.cc: Use m_ prefix for class data members
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29678
diff
changeset
|
928 switch (m_mode) |
22331
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
929 { |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
930 case MODE_RENDER: |
26858
0adb232f93b9
Implement axes and text "fontsmoothing" property (bug #55833).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
26619
diff
changeset
|
931 if (FT_Render_Glyph (face->glyph, (m_antialias |
0adb232f93b9
Implement axes and text "fontsmoothing" property (bug #55833).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
26619
diff
changeset
|
932 ? FT_RENDER_MODE_NORMAL |
0adb232f93b9
Implement axes and text "fontsmoothing" property (bug #55833).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
26619
diff
changeset
|
933 : FT_RENDER_MODE_MONO))) |
22331
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
934 { |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
935 glyph_index = 0; |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
936 warn_glyph_render (code); |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
937 } |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
938 else |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
939 { |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
940 FT_Bitmap& bitmap = face->glyph->bitmap; |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
941 int x0, y0; |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
942 |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
943 if (previous) |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
944 { |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
945 FT_Vector delta; |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
946 |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
947 FT_Get_Kerning (face, previous, glyph_index, |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
948 FT_KERNING_DEFAULT, &delta); |
29679
7ad7991e946a
ft-text-renderer.cc: Use m_ prefix for class data members
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29678
diff
changeset
|
949 |
7ad7991e946a
ft-text-renderer.cc: Use m_ prefix for class data members
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29678
diff
changeset
|
950 m_xoffset += (delta.x >> 6); |
22331
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
951 } |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
952 |
29679
7ad7991e946a
ft-text-renderer.cc: Use m_ prefix for class data members
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29678
diff
changeset
|
953 x0 = m_xoffset + face->glyph->bitmap_left; |
7ad7991e946a
ft-text-renderer.cc: Use m_ prefix for class data members
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29678
diff
changeset
|
954 y0 = m_line_yoffset + m_yoffset |
30390
a61e1a0f6024
maint: style check C++ files in libinterp/ ahead of 7.1 release.
Rik <rik@octave.org>
parents:
30119
diff
changeset
|
955 + (face->glyph->bitmap_top - 1); |
22331
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
956 |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
957 // 'w' seems to have a negative -1 |
25421
c335f94766a7
Re-organize to avoid code duplication (bug #54083).
Markus Mützel <markus.muetzel@gmx.de>
parents:
25420
diff
changeset
|
958 // face->glyph->bitmap_left, this is so we don't index out |
c335f94766a7
Re-organize to avoid code duplication (bug #54083).
Markus Mützel <markus.muetzel@gmx.de>
parents:
25420
diff
changeset
|
959 // of bound, and assumes we've allocated the right amount of |
c335f94766a7
Re-organize to avoid code duplication (bug #54083).
Markus Mützel <markus.muetzel@gmx.de>
parents:
25420
diff
changeset
|
960 // horizontal space in the bbox. |
22331
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
961 if (x0 < 0) |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
962 x0 = 0; |
21209
67d2965af0b5
revamp text rendering classes
John W. Eaton <jwe@octave.org>
parents:
21200
diff
changeset
|
963 |
22331
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
964 for (int r = 0; static_cast<unsigned int> (r) < bitmap.rows; r++) |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
965 for (int c = 0; static_cast<unsigned int> (c) < bitmap.width; c++) |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
966 { |
26858
0adb232f93b9
Implement axes and text "fontsmoothing" property (bug #55833).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
26619
diff
changeset
|
967 unsigned char pix |
0adb232f93b9
Implement axes and text "fontsmoothing" property (bug #55833).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
26619
diff
changeset
|
968 = (m_antialias |
0adb232f93b9
Implement axes and text "fontsmoothing" property (bug #55833).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
26619
diff
changeset
|
969 ? bitmap.buffer[r*bitmap.width+c] |
0adb232f93b9
Implement axes and text "fontsmoothing" property (bug #55833).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
26619
diff
changeset
|
970 : (is_opaque (face->glyph, c, r) ? 255 : 0)); |
26995
ab5bfee22d18
maint: Strip trailing whitespace from source files.
John W. Eaton <jwe@octave.org>
parents:
26858
diff
changeset
|
971 |
30119
3161a1ee0045
maint: use "m_" prefix for member variables in file ft-text-renderer.cc.
Rik <rik@octave.org>
parents:
30041
diff
changeset
|
972 if (x0+c < 0 || x0+c >= m_pixels.dim2 () |
3161a1ee0045
maint: use "m_" prefix for member variables in file ft-text-renderer.cc.
Rik <rik@octave.org>
parents:
30041
diff
changeset
|
973 || y0-r < 0 || y0-r >= m_pixels.dim3 ()) |
22331
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
974 { |
26187
8d4f23b7f4eb
Improve text extent calculation when using freetype text renderer (bug #55075)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
26152
diff
changeset
|
975 // ::warning ("ft_text_renderer: x %d, y %d", |
8d4f23b7f4eb
Improve text extent calculation when using freetype text renderer (bug #55075)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
26152
diff
changeset
|
976 // x0+c, y0-r); |
22331
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
977 } |
30119
3161a1ee0045
maint: use "m_" prefix for member variables in file ft-text-renderer.cc.
Rik <rik@octave.org>
parents:
30041
diff
changeset
|
978 else if (m_pixels(3, x0+c, y0-r).value () == 0) |
22331
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
979 { |
30119
3161a1ee0045
maint: use "m_" prefix for member variables in file ft-text-renderer.cc.
Rik <rik@octave.org>
parents:
30041
diff
changeset
|
980 m_pixels(0, x0+c, y0-r) = m_color(0); |
3161a1ee0045
maint: use "m_" prefix for member variables in file ft-text-renderer.cc.
Rik <rik@octave.org>
parents:
30041
diff
changeset
|
981 m_pixels(1, x0+c, y0-r) = m_color(1); |
3161a1ee0045
maint: use "m_" prefix for member variables in file ft-text-renderer.cc.
Rik <rik@octave.org>
parents:
30041
diff
changeset
|
982 m_pixels(2, x0+c, y0-r) = m_color(2); |
3161a1ee0045
maint: use "m_" prefix for member variables in file ft-text-renderer.cc.
Rik <rik@octave.org>
parents:
30041
diff
changeset
|
983 m_pixels(3, x0+c, y0-r) = pix; |
22331
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
984 } |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
985 } |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
986 |
29679
7ad7991e946a
ft-text-renderer.cc: Use m_ prefix for class data members
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29678
diff
changeset
|
987 m_xoffset += (face->glyph->advance.x >> 6); |
22331
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
988 } |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
989 break; |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
990 |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
991 case MODE_BBOX: |
30119
3161a1ee0045
maint: use "m_" prefix for member variables in file ft-text-renderer.cc.
Rik <rik@octave.org>
parents:
30041
diff
changeset
|
992 Matrix& bb = m_line_bbox.back (); |
25421
c335f94766a7
Re-organize to avoid code duplication (bug #54083).
Markus Mützel <markus.muetzel@gmx.de>
parents:
25420
diff
changeset
|
993 |
c335f94766a7
Re-organize to avoid code duplication (bug #54083).
Markus Mützel <markus.muetzel@gmx.de>
parents:
25420
diff
changeset
|
994 // If we have a previous glyph, use kerning information. This |
c335f94766a7
Re-organize to avoid code duplication (bug #54083).
Markus Mützel <markus.muetzel@gmx.de>
parents:
25420
diff
changeset
|
995 // usually means moving a bit backward before adding the next |
c335f94766a7
Re-organize to avoid code duplication (bug #54083).
Markus Mützel <markus.muetzel@gmx.de>
parents:
25420
diff
changeset
|
996 // glyph. That is, "delta.x" is usually < 0. |
c335f94766a7
Re-organize to avoid code duplication (bug #54083).
Markus Mützel <markus.muetzel@gmx.de>
parents:
25420
diff
changeset
|
997 if (previous) |
22331
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
998 { |
25421
c335f94766a7
Re-organize to avoid code duplication (bug #54083).
Markus Mützel <markus.muetzel@gmx.de>
parents:
25420
diff
changeset
|
999 FT_Vector delta; |
22331
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1000 |
25421
c335f94766a7
Re-organize to avoid code duplication (bug #54083).
Markus Mützel <markus.muetzel@gmx.de>
parents:
25420
diff
changeset
|
1001 FT_Get_Kerning (face, previous, glyph_index, |
c335f94766a7
Re-organize to avoid code duplication (bug #54083).
Markus Mützel <markus.muetzel@gmx.de>
parents:
25420
diff
changeset
|
1002 FT_KERNING_DEFAULT, &delta); |
22331
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1003 |
29679
7ad7991e946a
ft-text-renderer.cc: Use m_ prefix for class data members
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29678
diff
changeset
|
1004 m_xoffset += (delta.x >> 6); |
25421
c335f94766a7
Re-organize to avoid code duplication (bug #54083).
Markus Mützel <markus.muetzel@gmx.de>
parents:
25420
diff
changeset
|
1005 } |
22331
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1006 |
25421
c335f94766a7
Re-organize to avoid code duplication (bug #54083).
Markus Mützel <markus.muetzel@gmx.de>
parents:
25420
diff
changeset
|
1007 // Extend current X offset box by the width of the current |
c335f94766a7
Re-organize to avoid code duplication (bug #54083).
Markus Mützel <markus.muetzel@gmx.de>
parents:
25420
diff
changeset
|
1008 // glyph. Then extend the line bounding box if necessary. |
21209
67d2965af0b5
revamp text rendering classes
John W. Eaton <jwe@octave.org>
parents:
21200
diff
changeset
|
1009 |
29679
7ad7991e946a
ft-text-renderer.cc: Use m_ prefix for class data members
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29678
diff
changeset
|
1010 m_xoffset += (face->glyph->advance.x >> 6); |
7ad7991e946a
ft-text-renderer.cc: Use m_ prefix for class data members
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29678
diff
changeset
|
1011 bb(2) = math::max (bb(2), m_xoffset); |
26187
8d4f23b7f4eb
Improve text extent calculation when using freetype text renderer (bug #55075)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
26152
diff
changeset
|
1012 |
8d4f23b7f4eb
Improve text extent calculation when using freetype text renderer (bug #55075)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
26152
diff
changeset
|
1013 // Store the actual bbox vertical coordinates of this character |
8d4f23b7f4eb
Improve text extent calculation when using freetype text renderer (bug #55075)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
26152
diff
changeset
|
1014 FT_Glyph glyph; |
8d4f23b7f4eb
Improve text extent calculation when using freetype text renderer (bug #55075)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
26152
diff
changeset
|
1015 if (FT_Get_Glyph (face->glyph, &glyph)) |
8d4f23b7f4eb
Improve text extent calculation when using freetype text renderer (bug #55075)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
26152
diff
changeset
|
1016 warn_glyph_render (code); |
8d4f23b7f4eb
Improve text extent calculation when using freetype text renderer (bug #55075)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
26152
diff
changeset
|
1017 else |
8d4f23b7f4eb
Improve text extent calculation when using freetype text renderer (bug #55075)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
26152
diff
changeset
|
1018 { |
8d4f23b7f4eb
Improve text extent calculation when using freetype text renderer (bug #55075)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
26152
diff
changeset
|
1019 FT_BBox glyph_bbox; |
8d4f23b7f4eb
Improve text extent calculation when using freetype text renderer (bug #55075)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
26152
diff
changeset
|
1020 FT_Glyph_Get_CBox (glyph, FT_GLYPH_BBOX_UNSCALED, |
8d4f23b7f4eb
Improve text extent calculation when using freetype text renderer (bug #55075)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
26152
diff
changeset
|
1021 &glyph_bbox); |
8d4f23b7f4eb
Improve text extent calculation when using freetype text renderer (bug #55075)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
26152
diff
changeset
|
1022 m_deltax = (glyph_bbox.xMax - face->glyph->advance.x) >> 6; |
29679
7ad7991e946a
ft-text-renderer.cc: Use m_ prefix for class data members
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29678
diff
changeset
|
1023 m_ymin = math::min ((glyph_bbox.yMin >> 6) + m_yoffset, |
26187
8d4f23b7f4eb
Improve text extent calculation when using freetype text renderer (bug #55075)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
26152
diff
changeset
|
1024 m_ymin); |
29679
7ad7991e946a
ft-text-renderer.cc: Use m_ prefix for class data members
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29678
diff
changeset
|
1025 m_ymax = math::max ((glyph_bbox.yMax >> 6) + m_yoffset, |
26187
8d4f23b7f4eb
Improve text extent calculation when using freetype text renderer (bug #55075)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
26152
diff
changeset
|
1026 m_ymax); |
26478
6f22d0c91beb
Fix memory leak with FT_Glyph objects (bug #55287)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
26376
diff
changeset
|
1027 FT_Done_Glyph (glyph); |
26187
8d4f23b7f4eb
Improve text extent calculation when using freetype text renderer (bug #55075)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
26152
diff
changeset
|
1028 update_line_bbox (); |
8d4f23b7f4eb
Improve text extent calculation when using freetype text renderer (bug #55075)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
26152
diff
changeset
|
1029 } |
22331
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1030 break; |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1031 } |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1032 } |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1033 } |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1034 |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1035 return glyph_index; |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1036 } |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1037 |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1038 void |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1039 ft_text_renderer::text_to_strlist (const std::string& txt, |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1040 std::list<text_renderer::string>& lst, |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1041 Matrix& box, |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1042 int ha, int va, double rot, |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1043 const caseless_str& interp) |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1044 { |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1045 uint8NDArray pxls; |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1046 |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1047 // First run text_to_pixels which will also build the string list |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1048 |
26573
ad70a85f702b
Avoid accumulating data in text_renderer member variable (bug #55287)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
26478
diff
changeset
|
1049 m_strlist = std::list<text_renderer::string> (); |
26617
98afb8bbd1f6
maint: Strip trailing whitespace from source files.
John W. Eaton <jwe@octave.org>
parents:
26573
diff
changeset
|
1050 |
28857
43ad651cf5a0
eliminate unnecessary uses of octave:: namespace qualifier
John W. Eaton <jwe@octave.org>
parents:
28823
diff
changeset
|
1051 unwind_protect_var<bool> restore_var1 (m_do_strlist); |
43ad651cf5a0
eliminate unnecessary uses of octave:: namespace qualifier
John W. Eaton <jwe@octave.org>
parents:
28823
diff
changeset
|
1052 unwind_protect_var<std::list<text_renderer::string>> |
28823
26cfccfee9a0
Replace unwind_protect with more efficient constructs (bug #59192).
Rik <rik@octave.org>
parents:
28483
diff
changeset
|
1053 restore_var2 (m_strlist); |
28857
43ad651cf5a0
eliminate unnecessary uses of octave:: namespace qualifier
John W. Eaton <jwe@octave.org>
parents:
28823
diff
changeset
|
1054 |
26573
ad70a85f702b
Avoid accumulating data in text_renderer member variable (bug #55287)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
26478
diff
changeset
|
1055 m_do_strlist = true; |
26617
98afb8bbd1f6
maint: Strip trailing whitespace from source files.
John W. Eaton <jwe@octave.org>
parents:
26573
diff
changeset
|
1056 |
22331
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1057 text_to_pixels (txt, pxls, box, ha, va, rot, interp, false); |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1058 |
26573
ad70a85f702b
Avoid accumulating data in text_renderer member variable (bug #55287)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
26478
diff
changeset
|
1059 lst = m_strlist; |
22331
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1060 } |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1061 |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1062 void |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1063 ft_text_renderer::visit (text_element_string& e) |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1064 { |
29679
7ad7991e946a
ft-text-renderer.cc: Use m_ prefix for class data members
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29678
diff
changeset
|
1065 if (m_font.is_valid ()) |
22331
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1066 { |
29679
7ad7991e946a
ft-text-renderer.cc: Use m_ prefix for class data members
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29678
diff
changeset
|
1067 m_max_fontsize = std::max (m_max_fontsize, m_font.get_size ()); |
22331
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1068 FT_UInt glyph_index, previous = 0; |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1069 |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1070 std::string str = e.string_value (); |
26187
8d4f23b7f4eb
Improve text extent calculation when using freetype text renderer (bug #55075)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
26152
diff
changeset
|
1071 const uint8_t *c = reinterpret_cast<const uint8_t *> (str.c_str ()); |
8d4f23b7f4eb
Improve text extent calculation when using freetype text renderer (bug #55075)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
26152
diff
changeset
|
1072 uint32_t u32_c; |
26617
98afb8bbd1f6
maint: Strip trailing whitespace from source files.
John W. Eaton <jwe@octave.org>
parents:
26573
diff
changeset
|
1073 |
29654
d13d090cb03a
use std::size_t and std::ptrdiff_t in C++ code (bug #60471)
John W. Eaton <jwe@octave.org>
parents:
29358
diff
changeset
|
1074 std::size_t n = str.size (); |
d13d090cb03a
use std::size_t and std::ptrdiff_t in C++ code (bug #60471)
John W. Eaton <jwe@octave.org>
parents:
29358
diff
changeset
|
1075 std::size_t icurr = 0; |
d13d090cb03a
use std::size_t and std::ptrdiff_t in C++ code (bug #60471)
John W. Eaton <jwe@octave.org>
parents:
29358
diff
changeset
|
1076 std::size_t ibegin = 0; |
26187
8d4f23b7f4eb
Improve text extent calculation when using freetype text renderer (bug #55075)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
26152
diff
changeset
|
1077 |
8d4f23b7f4eb
Improve text extent calculation when using freetype text renderer (bug #55075)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
26152
diff
changeset
|
1078 // Initialize a new string |
29683
5ffe7159f94b
Add substitution font to SVG font stack if necessary
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29679
diff
changeset
|
1079 text_renderer::string fs (str, m_font, m_xoffset, m_yoffset); |
5ffe7159f94b
Add substitution font to SVG font stack if necessary
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29679
diff
changeset
|
1080 |
29679
7ad7991e946a
ft-text-renderer.cc: Use m_ prefix for class data members
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29678
diff
changeset
|
1081 std::string fname = m_font.get_face ()->family_name; |
29683
5ffe7159f94b
Add substitution font to SVG font stack if necessary
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29679
diff
changeset
|
1082 |
5ffe7159f94b
Add substitution font to SVG font stack if necessary
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29679
diff
changeset
|
1083 if (fname.find (" ") != std::string::npos) |
5ffe7159f94b
Add substitution font to SVG font stack if necessary
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29679
diff
changeset
|
1084 fname = "'" + fname + "'"; |
5ffe7159f94b
Add substitution font to SVG font stack if necessary
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29679
diff
changeset
|
1085 |
5ffe7159f94b
Add substitution font to SVG font stack if necessary
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29679
diff
changeset
|
1086 fs.set_family (fname); |
5ffe7159f94b
Add substitution font to SVG font stack if necessary
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29679
diff
changeset
|
1087 |
24076
1b7e49a72c62
improve text rendering in svg printout (bug #48567)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
23807
diff
changeset
|
1088 std::vector<double> xdata; |
29683
5ffe7159f94b
Add substitution font to SVG font stack if necessary
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29679
diff
changeset
|
1089 std::string sub_name; |
22331
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1090 |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1091 while (n > 0) |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1092 { |
26187
8d4f23b7f4eb
Improve text extent calculation when using freetype text renderer (bug #55075)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
26152
diff
changeset
|
1093 // Retrieve the length and the u32 representation of the current |
8d4f23b7f4eb
Improve text extent calculation when using freetype text renderer (bug #55075)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
26152
diff
changeset
|
1094 // character |
8d4f23b7f4eb
Improve text extent calculation when using freetype text renderer (bug #55075)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
26152
diff
changeset
|
1095 int mblen = octave_u8_strmbtouc_wrapper (&u32_c, c + icurr); |
27142
8a07083c8cfc
Use replacement characters to display non UTF-8 strings in figures (bug #55974)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
26617
diff
changeset
|
1096 if (mblen < 1) |
8a07083c8cfc
Use replacement characters to display non UTF-8 strings in figures (bug #55974)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
26617
diff
changeset
|
1097 { |
8a07083c8cfc
Use replacement characters to display non UTF-8 strings in figures (bug #55974)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
26617
diff
changeset
|
1098 // This is not an UTF-8 character, use a replacement character |
8a07083c8cfc
Use replacement characters to display non UTF-8 strings in figures (bug #55974)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
26617
diff
changeset
|
1099 mblen = 1; |
8a07083c8cfc
Use replacement characters to display non UTF-8 strings in figures (bug #55974)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
26617
diff
changeset
|
1100 u32_c = 0xFFFD; |
8a07083c8cfc
Use replacement characters to display non UTF-8 strings in figures (bug #55974)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
26617
diff
changeset
|
1101 } |
27623
698c8b08fe8c
New function uisetfont (bug #57130).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
27150
diff
changeset
|
1102 |
26187
8d4f23b7f4eb
Improve text extent calculation when using freetype text renderer (bug #55075)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
26152
diff
changeset
|
1103 n -= mblen; |
26573
ad70a85f702b
Avoid accumulating data in text_renderer member variable (bug #55287)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
26478
diff
changeset
|
1104 |
29679
7ad7991e946a
ft-text-renderer.cc: Use m_ prefix for class data members
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29678
diff
changeset
|
1105 if (m_do_strlist && m_mode == MODE_RENDER) |
22331
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1106 { |
26573
ad70a85f702b
Avoid accumulating data in text_renderer member variable (bug #55287)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
26478
diff
changeset
|
1107 if (u32_c == 10) |
ad70a85f702b
Avoid accumulating data in text_renderer member variable (bug #55287)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
26478
diff
changeset
|
1108 { |
ad70a85f702b
Avoid accumulating data in text_renderer member variable (bug #55287)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
26478
diff
changeset
|
1109 // Finish previous string in m_strlist before processing |
ad70a85f702b
Avoid accumulating data in text_renderer member variable (bug #55287)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
26478
diff
changeset
|
1110 // the newline character |
29679
7ad7991e946a
ft-text-renderer.cc: Use m_ prefix for class data members
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29678
diff
changeset
|
1111 fs.set_y (m_line_yoffset + m_yoffset); |
7ad7991e946a
ft-text-renderer.cc: Use m_ prefix for class data members
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29678
diff
changeset
|
1112 fs.set_color (m_color); |
26617
98afb8bbd1f6
maint: Strip trailing whitespace from source files.
John W. Eaton <jwe@octave.org>
parents:
26573
diff
changeset
|
1113 |
26573
ad70a85f702b
Avoid accumulating data in text_renderer member variable (bug #55287)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
26478
diff
changeset
|
1114 std::string s = str.substr (ibegin, icurr - ibegin); |
ad70a85f702b
Avoid accumulating data in text_renderer member variable (bug #55287)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
26478
diff
changeset
|
1115 if (! s.empty ()) |
ad70a85f702b
Avoid accumulating data in text_renderer member variable (bug #55287)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
26478
diff
changeset
|
1116 { |
ad70a85f702b
Avoid accumulating data in text_renderer member variable (bug #55287)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
26478
diff
changeset
|
1117 fs.set_string (s); |
29679
7ad7991e946a
ft-text-renderer.cc: Use m_ prefix for class data members
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29678
diff
changeset
|
1118 fs.set_y (m_line_yoffset + m_yoffset); |
26573
ad70a85f702b
Avoid accumulating data in text_renderer member variable (bug #55287)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
26478
diff
changeset
|
1119 fs.set_xdata (xdata); |
ad70a85f702b
Avoid accumulating data in text_renderer member variable (bug #55287)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
26478
diff
changeset
|
1120 fs.set_family (fname); |
ad70a85f702b
Avoid accumulating data in text_renderer member variable (bug #55287)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
26478
diff
changeset
|
1121 m_strlist.push_back (fs); |
ad70a85f702b
Avoid accumulating data in text_renderer member variable (bug #55287)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
26478
diff
changeset
|
1122 } |
22331
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1123 } |
26573
ad70a85f702b
Avoid accumulating data in text_renderer member variable (bug #55287)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
26478
diff
changeset
|
1124 else |
29679
7ad7991e946a
ft-text-renderer.cc: Use m_ prefix for class data members
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29678
diff
changeset
|
1125 xdata.push_back (m_xoffset); |
22331
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1126 } |
25362
def1b446ba64
Convert strings to UTF-32 for FreeType (bug #53646).
Markus Mützel <markus.muetzel@gmx.de>
parents:
25336
diff
changeset
|
1127 |
29683
5ffe7159f94b
Add substitution font to SVG font stack if necessary
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29679
diff
changeset
|
1128 glyph_index = process_character (u32_c, previous, sub_name); |
5ffe7159f94b
Add substitution font to SVG font stack if necessary
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29679
diff
changeset
|
1129 |
5ffe7159f94b
Add substitution font to SVG font stack if necessary
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29679
diff
changeset
|
1130 if (m_do_strlist && m_mode == MODE_RENDER && ! sub_name.empty ()) |
5ffe7159f94b
Add substitution font to SVG font stack if necessary
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29679
diff
changeset
|
1131 { |
5ffe7159f94b
Add substitution font to SVG font stack if necessary
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29679
diff
changeset
|
1132 // Add substitution font to the family name stack |
5ffe7159f94b
Add substitution font to SVG font stack if necessary
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29679
diff
changeset
|
1133 std::string tmp_family = fs.get_family (); |
5ffe7159f94b
Add substitution font to SVG font stack if necessary
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29679
diff
changeset
|
1134 |
5ffe7159f94b
Add substitution font to SVG font stack if necessary
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29679
diff
changeset
|
1135 if (tmp_family.find (sub_name) == std::string::npos) |
5ffe7159f94b
Add substitution font to SVG font stack if necessary
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29679
diff
changeset
|
1136 { |
5ffe7159f94b
Add substitution font to SVG font stack if necessary
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29679
diff
changeset
|
1137 if (sub_name.find (" ") != std::string::npos) |
5ffe7159f94b
Add substitution font to SVG font stack if necessary
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29679
diff
changeset
|
1138 sub_name = "'" + sub_name + "'"; |
5ffe7159f94b
Add substitution font to SVG font stack if necessary
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29679
diff
changeset
|
1139 |
5ffe7159f94b
Add substitution font to SVG font stack if necessary
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29679
diff
changeset
|
1140 fs.set_family (tmp_family + ", " + sub_name); |
5ffe7159f94b
Add substitution font to SVG font stack if necessary
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29679
diff
changeset
|
1141 } |
5ffe7159f94b
Add substitution font to SVG font stack if necessary
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29679
diff
changeset
|
1142 } |
25362
def1b446ba64
Convert strings to UTF-32 for FreeType (bug #53646).
Markus Mützel <markus.muetzel@gmx.de>
parents:
25336
diff
changeset
|
1143 |
26187
8d4f23b7f4eb
Improve text extent calculation when using freetype text renderer (bug #55075)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
26152
diff
changeset
|
1144 if (u32_c == 10) |
22331
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1145 { |
25362
def1b446ba64
Convert strings to UTF-32 for FreeType (bug #53646).
Markus Mützel <markus.muetzel@gmx.de>
parents:
25336
diff
changeset
|
1146 previous = 0; |
26617
98afb8bbd1f6
maint: Strip trailing whitespace from source files.
John W. Eaton <jwe@octave.org>
parents:
26573
diff
changeset
|
1147 |
29679
7ad7991e946a
ft-text-renderer.cc: Use m_ prefix for class data members
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29678
diff
changeset
|
1148 if (m_do_strlist && m_mode == MODE_RENDER) |
26573
ad70a85f702b
Avoid accumulating data in text_renderer member variable (bug #55287)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
26478
diff
changeset
|
1149 { |
ad70a85f702b
Avoid accumulating data in text_renderer member variable (bug #55287)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
26478
diff
changeset
|
1150 // Start a new string in m_strlist |
ad70a85f702b
Avoid accumulating data in text_renderer member variable (bug #55287)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
26478
diff
changeset
|
1151 ibegin = icurr+1; |
ad70a85f702b
Avoid accumulating data in text_renderer member variable (bug #55287)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
26478
diff
changeset
|
1152 xdata.clear (); |
29679
7ad7991e946a
ft-text-renderer.cc: Use m_ prefix for class data members
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29678
diff
changeset
|
1153 fs = text_renderer::string (str.substr (ibegin), m_font, |
7ad7991e946a
ft-text-renderer.cc: Use m_ prefix for class data members
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29678
diff
changeset
|
1154 m_line_xoffset, m_yoffset); |
26573
ad70a85f702b
Avoid accumulating data in text_renderer member variable (bug #55287)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
26478
diff
changeset
|
1155 } |
22331
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1156 } |
25362
def1b446ba64
Convert strings to UTF-32 for FreeType (bug #53646).
Markus Mützel <markus.muetzel@gmx.de>
parents:
25336
diff
changeset
|
1157 else |
def1b446ba64
Convert strings to UTF-32 for FreeType (bug #53646).
Markus Mützel <markus.muetzel@gmx.de>
parents:
25336
diff
changeset
|
1158 previous = glyph_index; |
def1b446ba64
Convert strings to UTF-32 for FreeType (bug #53646).
Markus Mützel <markus.muetzel@gmx.de>
parents:
25336
diff
changeset
|
1159 |
26187
8d4f23b7f4eb
Improve text extent calculation when using freetype text renderer (bug #55075)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
26152
diff
changeset
|
1160 icurr += mblen; |
22331
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1161 } |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1162 |
29679
7ad7991e946a
ft-text-renderer.cc: Use m_ prefix for class data members
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29678
diff
changeset
|
1163 if (m_do_strlist && m_mode == MODE_RENDER |
7ad7991e946a
ft-text-renderer.cc: Use m_ prefix for class data members
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29678
diff
changeset
|
1164 && ! fs.get_string ().empty ()) |
22331
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1165 { |
29679
7ad7991e946a
ft-text-renderer.cc: Use m_ prefix for class data members
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29678
diff
changeset
|
1166 fs.set_y (m_line_yoffset + m_yoffset); |
7ad7991e946a
ft-text-renderer.cc: Use m_ prefix for class data members
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29678
diff
changeset
|
1167 fs.set_color (m_color); |
24076
1b7e49a72c62
improve text rendering in svg printout (bug #48567)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
23807
diff
changeset
|
1168 fs.set_xdata (xdata); |
26573
ad70a85f702b
Avoid accumulating data in text_renderer member variable (bug #55287)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
26478
diff
changeset
|
1169 m_strlist.push_back (fs); |
22331
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1170 } |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1171 } |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1172 } |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1173 |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1174 void |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1175 ft_text_renderer::visit (text_element_list& e) |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1176 { |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1177 // Save and restore (after processing the list) the current font and color. |
21209
67d2965af0b5
revamp text rendering classes
John W. Eaton <jwe@octave.org>
parents:
21200
diff
changeset
|
1178 |
29679
7ad7991e946a
ft-text-renderer.cc: Use m_ prefix for class data members
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29678
diff
changeset
|
1179 ft_font saved_font (m_font); |
7ad7991e946a
ft-text-renderer.cc: Use m_ prefix for class data members
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29678
diff
changeset
|
1180 uint8NDArray saved_color (m_color); |
22331
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1181 |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1182 text_processor::visit (e); |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1183 |
29679
7ad7991e946a
ft-text-renderer.cc: Use m_ prefix for class data members
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29678
diff
changeset
|
1184 m_font = saved_font; |
7ad7991e946a
ft-text-renderer.cc: Use m_ prefix for class data members
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29678
diff
changeset
|
1185 m_color = saved_color; |
22331
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1186 } |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1187 |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1188 void |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1189 ft_text_renderer::visit (text_element_subscript& e) |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1190 { |
29679
7ad7991e946a
ft-text-renderer.cc: Use m_ prefix for class data members
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29678
diff
changeset
|
1191 ft_font saved_font (m_font); |
7ad7991e946a
ft-text-renderer.cc: Use m_ prefix for class data members
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29678
diff
changeset
|
1192 int saved_line_yoffset = m_line_yoffset; |
7ad7991e946a
ft-text-renderer.cc: Use m_ prefix for class data members
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29678
diff
changeset
|
1193 int saved_yoffset = m_yoffset; |
22331
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1194 |
29679
7ad7991e946a
ft-text-renderer.cc: Use m_ prefix for class data members
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29678
diff
changeset
|
1195 double sz = m_font.get_size (); |
28305
6e8d5c99263c
Produce better looking TeX superscript and subscripts (bug #58376).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
28206
diff
changeset
|
1196 |
6e8d5c99263c
Produce better looking TeX superscript and subscripts (bug #58376).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
28206
diff
changeset
|
1197 // Reducing font size by 70% produces decent results. |
29679
7ad7991e946a
ft-text-renderer.cc: Use m_ prefix for class data members
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29678
diff
changeset
|
1198 set_font (m_font.get_name (), m_font.get_weight (), m_font.get_angle (), |
28305
6e8d5c99263c
Produce better looking TeX superscript and subscripts (bug #58376).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
28206
diff
changeset
|
1199 std::max (5.0, sz * 0.7)); |
22331
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1200 |
29679
7ad7991e946a
ft-text-renderer.cc: Use m_ prefix for class data members
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29678
diff
changeset
|
1201 if (m_font.is_valid ()) |
22331
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1202 { |
28305
6e8d5c99263c
Produce better looking TeX superscript and subscripts (bug #58376).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
28206
diff
changeset
|
1203 // Shifting the baseline by 15% of the font size gives decent results. |
29679
7ad7991e946a
ft-text-renderer.cc: Use m_ prefix for class data members
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29678
diff
changeset
|
1204 m_yoffset -= std::ceil (sz * 0.15); |
22331
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1205 |
29679
7ad7991e946a
ft-text-renderer.cc: Use m_ prefix for class data members
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29678
diff
changeset
|
1206 if (m_mode == MODE_BBOX) |
22331
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1207 update_line_bbox (); |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1208 } |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1209 |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1210 text_processor::visit (e); |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1211 |
29679
7ad7991e946a
ft-text-renderer.cc: Use m_ prefix for class data members
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29678
diff
changeset
|
1212 m_font = saved_font; |
22331
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1213 // If line_yoffset changed, this means we moved to a new line; hence yoffset |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1214 // cannot be restored, because the saved value is not relevant anymore. |
29679
7ad7991e946a
ft-text-renderer.cc: Use m_ prefix for class data members
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29678
diff
changeset
|
1215 if (m_line_yoffset == saved_line_yoffset) |
7ad7991e946a
ft-text-renderer.cc: Use m_ prefix for class data members
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29678
diff
changeset
|
1216 m_yoffset = saved_yoffset; |
22331
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1217 } |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1218 |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1219 void |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1220 ft_text_renderer::visit (text_element_superscript& e) |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1221 { |
29679
7ad7991e946a
ft-text-renderer.cc: Use m_ prefix for class data members
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29678
diff
changeset
|
1222 ft_font saved_font (m_font); |
7ad7991e946a
ft-text-renderer.cc: Use m_ prefix for class data members
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29678
diff
changeset
|
1223 int saved_line_yoffset = m_line_yoffset; |
7ad7991e946a
ft-text-renderer.cc: Use m_ prefix for class data members
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29678
diff
changeset
|
1224 int saved_yoffset = m_yoffset; |
21209
67d2965af0b5
revamp text rendering classes
John W. Eaton <jwe@octave.org>
parents:
21200
diff
changeset
|
1225 |
29679
7ad7991e946a
ft-text-renderer.cc: Use m_ prefix for class data members
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29678
diff
changeset
|
1226 double sz = m_font.get_size (); |
28305
6e8d5c99263c
Produce better looking TeX superscript and subscripts (bug #58376).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
28206
diff
changeset
|
1227 |
6e8d5c99263c
Produce better looking TeX superscript and subscripts (bug #58376).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
28206
diff
changeset
|
1228 // Reducing font size by 70% produces decent results. |
29679
7ad7991e946a
ft-text-renderer.cc: Use m_ prefix for class data members
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29678
diff
changeset
|
1229 set_font (m_font.get_name (), m_font.get_weight (), m_font.get_angle (), |
28305
6e8d5c99263c
Produce better looking TeX superscript and subscripts (bug #58376).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
28206
diff
changeset
|
1230 std::max (5.0, sz * 0.7)); |
22331
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1231 |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1232 if (saved_font.is_valid ()) |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1233 { |
28305
6e8d5c99263c
Produce better looking TeX superscript and subscripts (bug #58376).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
28206
diff
changeset
|
1234 // Shifting the baseline by 40% of the font size gives decent results. |
29679
7ad7991e946a
ft-text-renderer.cc: Use m_ prefix for class data members
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29678
diff
changeset
|
1235 m_yoffset += std::ceil (sz * 0.4); |
22331
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1236 |
29679
7ad7991e946a
ft-text-renderer.cc: Use m_ prefix for class data members
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29678
diff
changeset
|
1237 if (m_mode == MODE_BBOX) |
22331
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1238 update_line_bbox (); |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1239 } |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1240 |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1241 text_processor::visit (e); |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1242 |
29679
7ad7991e946a
ft-text-renderer.cc: Use m_ prefix for class data members
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29678
diff
changeset
|
1243 m_font = saved_font; |
22331
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1244 // If line_yoffset changed, this means we moved to a new line; hence yoffset |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1245 // cannot be restored, because the saved value is not relevant anymore. |
29679
7ad7991e946a
ft-text-renderer.cc: Use m_ prefix for class data members
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29678
diff
changeset
|
1246 if (m_line_yoffset == saved_line_yoffset) |
7ad7991e946a
ft-text-renderer.cc: Use m_ prefix for class data members
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29678
diff
changeset
|
1247 m_yoffset = saved_yoffset; |
22331
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1248 } |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1249 |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1250 void |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1251 ft_text_renderer::visit (text_element_color& e) |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1252 { |
29679
7ad7991e946a
ft-text-renderer.cc: Use m_ prefix for class data members
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29678
diff
changeset
|
1253 if (m_mode == MODE_RENDER) |
22331
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1254 set_color (e.get_color ()); |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1255 } |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1256 |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1257 void |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1258 ft_text_renderer::visit (text_element_fontsize& e) |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1259 { |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1260 double sz = e.get_fontsize (); |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1261 |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1262 // FIXME: Matlab documentation says that the font size is expressed |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1263 // in the text object FontUnit. |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1264 |
29679
7ad7991e946a
ft-text-renderer.cc: Use m_ prefix for class data members
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29678
diff
changeset
|
1265 set_font (m_font.get_name (), m_font.get_weight (), |
7ad7991e946a
ft-text-renderer.cc: Use m_ prefix for class data members
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29678
diff
changeset
|
1266 m_font.get_angle (), sz); |
22331
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1267 |
29679
7ad7991e946a
ft-text-renderer.cc: Use m_ prefix for class data members
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29678
diff
changeset
|
1268 if (m_mode == MODE_BBOX) |
22331
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1269 update_line_bbox (); |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1270 } |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1271 |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1272 void |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1273 ft_text_renderer::visit (text_element_fontname& e) |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1274 { |
29679
7ad7991e946a
ft-text-renderer.cc: Use m_ prefix for class data members
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29678
diff
changeset
|
1275 set_font (e.get_fontname (), m_font.get_weight (), m_font.get_angle (), |
7ad7991e946a
ft-text-renderer.cc: Use m_ prefix for class data members
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29678
diff
changeset
|
1276 m_font.get_size ()); |
21209
67d2965af0b5
revamp text rendering classes
John W. Eaton <jwe@octave.org>
parents:
21200
diff
changeset
|
1277 |
29679
7ad7991e946a
ft-text-renderer.cc: Use m_ prefix for class data members
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29678
diff
changeset
|
1278 if (m_mode == MODE_BBOX) |
22331
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1279 update_line_bbox (); |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1280 } |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1281 |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1282 void |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1283 ft_text_renderer::visit (text_element_fontstyle& e) |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1284 { |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1285 switch (e.get_fontstyle ()) |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1286 { |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1287 case text_element_fontstyle::normal: |
29679
7ad7991e946a
ft-text-renderer.cc: Use m_ prefix for class data members
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29678
diff
changeset
|
1288 set_font (m_font.get_name (), "normal", "normal", m_font.get_size ()); |
22331
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1289 break; |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1290 |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1291 case text_element_fontstyle::bold: |
29679
7ad7991e946a
ft-text-renderer.cc: Use m_ prefix for class data members
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29678
diff
changeset
|
1292 set_font (m_font.get_name (), "bold", "normal", m_font.get_size ()); |
22331
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1293 break; |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1294 |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1295 case text_element_fontstyle::italic: |
29679
7ad7991e946a
ft-text-renderer.cc: Use m_ prefix for class data members
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29678
diff
changeset
|
1296 set_font (m_font.get_name (), "normal", "italic", m_font.get_size ()); |
22331
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1297 break; |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1298 |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1299 case text_element_fontstyle::oblique: |
29679
7ad7991e946a
ft-text-renderer.cc: Use m_ prefix for class data members
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29678
diff
changeset
|
1300 set_font (m_font.get_name (), "normal", "oblique", m_font.get_size ()); |
22331
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1301 break; |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1302 } |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1303 |
29679
7ad7991e946a
ft-text-renderer.cc: Use m_ prefix for class data members
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29678
diff
changeset
|
1304 if (m_mode == MODE_BBOX) |
22331
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1305 update_line_bbox (); |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1306 } |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1307 |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1308 void |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1309 ft_text_renderer::visit (text_element_symbol& e) |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1310 { |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1311 uint32_t code = e.get_symbol_code (); |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1312 |
29679
7ad7991e946a
ft-text-renderer.cc: Use m_ prefix for class data members
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29678
diff
changeset
|
1313 std::vector<double> xdata (1, m_xoffset); |
7ad7991e946a
ft-text-renderer.cc: Use m_ prefix for class data members
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29678
diff
changeset
|
1314 text_renderer::string fs ("-", m_font, m_xoffset, m_yoffset); |
22331
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1315 |
29679
7ad7991e946a
ft-text-renderer.cc: Use m_ prefix for class data members
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29678
diff
changeset
|
1316 if (code != text_element_symbol::invalid_code && m_font.is_valid ()) |
22331
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1317 { |
29683
5ffe7159f94b
Add substitution font to SVG font stack if necessary
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29679
diff
changeset
|
1318 std::string sub_name; |
5ffe7159f94b
Add substitution font to SVG font stack if necessary
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29679
diff
changeset
|
1319 |
5ffe7159f94b
Add substitution font to SVG font stack if necessary
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29679
diff
changeset
|
1320 process_character (code, 0, sub_name); |
5ffe7159f94b
Add substitution font to SVG font stack if necessary
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29679
diff
changeset
|
1321 |
29679
7ad7991e946a
ft-text-renderer.cc: Use m_ prefix for class data members
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29678
diff
changeset
|
1322 if (m_do_strlist && m_mode == MODE_RENDER) |
26573
ad70a85f702b
Avoid accumulating data in text_renderer member variable (bug #55287)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
26478
diff
changeset
|
1323 { |
29683
5ffe7159f94b
Add substitution font to SVG font stack if necessary
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29679
diff
changeset
|
1324 if (! sub_name.empty ()) |
5ffe7159f94b
Add substitution font to SVG font stack if necessary
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29679
diff
changeset
|
1325 { |
5ffe7159f94b
Add substitution font to SVG font stack if necessary
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29679
diff
changeset
|
1326 // Add substitution font to the family name |
5ffe7159f94b
Add substitution font to SVG font stack if necessary
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29679
diff
changeset
|
1327 std::string tmp_family = fs.get_family (); |
5ffe7159f94b
Add substitution font to SVG font stack if necessary
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29679
diff
changeset
|
1328 |
5ffe7159f94b
Add substitution font to SVG font stack if necessary
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29679
diff
changeset
|
1329 if (tmp_family.find (sub_name) == std::string::npos) |
5ffe7159f94b
Add substitution font to SVG font stack if necessary
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29679
diff
changeset
|
1330 { |
5ffe7159f94b
Add substitution font to SVG font stack if necessary
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29679
diff
changeset
|
1331 if (sub_name.find (" ") != std::string::npos) |
5ffe7159f94b
Add substitution font to SVG font stack if necessary
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29679
diff
changeset
|
1332 sub_name = "'" + sub_name + "'"; |
5ffe7159f94b
Add substitution font to SVG font stack if necessary
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29679
diff
changeset
|
1333 |
5ffe7159f94b
Add substitution font to SVG font stack if necessary
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29679
diff
changeset
|
1334 fs.set_family (tmp_family + ", " + sub_name); |
5ffe7159f94b
Add substitution font to SVG font stack if necessary
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29679
diff
changeset
|
1335 } |
5ffe7159f94b
Add substitution font to SVG font stack if necessary
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29679
diff
changeset
|
1336 } |
5ffe7159f94b
Add substitution font to SVG font stack if necessary
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29679
diff
changeset
|
1337 |
26573
ad70a85f702b
Avoid accumulating data in text_renderer member variable (bug #55287)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
26478
diff
changeset
|
1338 fs.set_code (code); |
ad70a85f702b
Avoid accumulating data in text_renderer member variable (bug #55287)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
26478
diff
changeset
|
1339 fs.set_xdata (xdata); |
ad70a85f702b
Avoid accumulating data in text_renderer member variable (bug #55287)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
26478
diff
changeset
|
1340 } |
22331
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1341 } |
29679
7ad7991e946a
ft-text-renderer.cc: Use m_ prefix for class data members
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29678
diff
changeset
|
1342 else if (m_font.is_valid ()) |
22331
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1343 ::warning ("ignoring unknown symbol: %d", e.get_symbol ()); |
21209
67d2965af0b5
revamp text rendering classes
John W. Eaton <jwe@octave.org>
parents:
21200
diff
changeset
|
1344 |
29679
7ad7991e946a
ft-text-renderer.cc: Use m_ prefix for class data members
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29678
diff
changeset
|
1345 if (m_do_strlist && m_mode == MODE_RENDER && fs.get_code ()) |
22331
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1346 { |
29679
7ad7991e946a
ft-text-renderer.cc: Use m_ prefix for class data members
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29678
diff
changeset
|
1347 fs.set_y (m_line_yoffset + m_yoffset); |
7ad7991e946a
ft-text-renderer.cc: Use m_ prefix for class data members
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29678
diff
changeset
|
1348 fs.set_color (m_color); |
7ad7991e946a
ft-text-renderer.cc: Use m_ prefix for class data members
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29678
diff
changeset
|
1349 fs.set_family (m_font.get_face ()->family_name); |
26573
ad70a85f702b
Avoid accumulating data in text_renderer member variable (bug #55287)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
26478
diff
changeset
|
1350 m_strlist.push_back (fs); |
22331
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1351 } |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1352 } |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1353 |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1354 void |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1355 ft_text_renderer::visit (text_element_combined& e) |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1356 { |
29679
7ad7991e946a
ft-text-renderer.cc: Use m_ prefix for class data members
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29678
diff
changeset
|
1357 int saved_xoffset = m_xoffset; |
7ad7991e946a
ft-text-renderer.cc: Use m_ prefix for class data members
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29678
diff
changeset
|
1358 int max_xoffset = m_xoffset; |
22331
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1359 |
22862
e365e87371a3
maint: Use C++ range feature to simplify some for loops in libinterp/corefcn.
Rik <rik@octave.org>
parents:
22755
diff
changeset
|
1360 for (auto *txt_elt : e) |
22331
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1361 { |
29679
7ad7991e946a
ft-text-renderer.cc: Use m_ prefix for class data members
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29678
diff
changeset
|
1362 m_xoffset = saved_xoffset; |
22862
e365e87371a3
maint: Use C++ range feature to simplify some for loops in libinterp/corefcn.
Rik <rik@octave.org>
parents:
22755
diff
changeset
|
1363 txt_elt->accept (*this); |
29679
7ad7991e946a
ft-text-renderer.cc: Use m_ prefix for class data members
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29678
diff
changeset
|
1364 max_xoffset = math::max (m_xoffset, max_xoffset); |
22331
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1365 } |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1366 |
29679
7ad7991e946a
ft-text-renderer.cc: Use m_ prefix for class data members
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29678
diff
changeset
|
1367 m_xoffset = max_xoffset; |
22331
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1368 } |
21209
67d2965af0b5
revamp text rendering classes
John W. Eaton <jwe@octave.org>
parents:
21200
diff
changeset
|
1369 |
22331
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1370 void |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1371 ft_text_renderer::reset (void) |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1372 { |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1373 set_mode (MODE_BBOX); |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1374 set_color (Matrix (1, 3, 0.0)); |
26573
ad70a85f702b
Avoid accumulating data in text_renderer member variable (bug #55287)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
26478
diff
changeset
|
1375 m_strlist = std::list<text_renderer::string> (); |
22331
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1376 } |
21209
67d2965af0b5
revamp text rendering classes
John W. Eaton <jwe@octave.org>
parents:
21200
diff
changeset
|
1377 |
22331
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1378 void |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1379 ft_text_renderer::set_color (const Matrix& c) |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1380 { |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1381 if (c.numel () == 3) |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1382 { |
29679
7ad7991e946a
ft-text-renderer.cc: Use m_ prefix for class data members
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29678
diff
changeset
|
1383 m_color(0) = static_cast<uint8_t> (c(0)*255); |
7ad7991e946a
ft-text-renderer.cc: Use m_ prefix for class data members
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29678
diff
changeset
|
1384 m_color(1) = static_cast<uint8_t> (c(1)*255); |
7ad7991e946a
ft-text-renderer.cc: Use m_ prefix for class data members
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29678
diff
changeset
|
1385 m_color(2) = static_cast<uint8_t> (c(2)*255); |
22331
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1386 } |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1387 else |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1388 ::warning ("ft_text_renderer::set_color: invalid color"); |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1389 } |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1390 |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1391 uint8NDArray |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1392 ft_text_renderer::render (text_element *elt, Matrix& box, int rotation) |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1393 { |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1394 set_mode (MODE_BBOX); |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1395 elt->accept (*this); |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1396 compute_bbox (); |
29679
7ad7991e946a
ft-text-renderer.cc: Use m_ prefix for class data members
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29678
diff
changeset
|
1397 box = m_bbox; |
22331
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1398 |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1399 set_mode (MODE_RENDER); |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1400 |
30119
3161a1ee0045
maint: use "m_" prefix for member variables in file ft-text-renderer.cc.
Rik <rik@octave.org>
parents:
30041
diff
changeset
|
1401 if (m_pixels.numel () > 0) |
22331
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1402 { |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1403 elt->accept (*this); |
21209
67d2965af0b5
revamp text rendering classes
John W. Eaton <jwe@octave.org>
parents:
21200
diff
changeset
|
1404 |
30119
3161a1ee0045
maint: use "m_" prefix for member variables in file ft-text-renderer.cc.
Rik <rik@octave.org>
parents:
30041
diff
changeset
|
1405 rotate_pixels (m_pixels, rotation); |
22331
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1406 } |
9403
4af6e29449c1
[mq]: graphics_text_engine
Michael Goffioul <michael.goffioul@gmail.com>
parents:
diff
changeset
|
1407 |
30119
3161a1ee0045
maint: use "m_" prefix for member variables in file ft-text-renderer.cc.
Rik <rik@octave.org>
parents:
30041
diff
changeset
|
1408 return m_pixels; |
22331
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1409 } |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1410 |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1411 // Note: |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1412 // x-extent accurately measures width of glyphs. |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1413 // y-extent is overly large because it is measured from baseline-to-baseline. |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1414 // Calling routines, such as ylabel, may need to account for this mismatch. |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1415 |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1416 Matrix |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1417 ft_text_renderer::get_extent (text_element *elt, double rotation) |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1418 { |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1419 set_mode (MODE_BBOX); |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1420 elt->accept (*this); |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1421 compute_bbox (); |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1422 |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1423 Matrix extent (1, 2, 0.0); |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1424 |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1425 switch (rotation_to_mode (rotation)) |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1426 { |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1427 case ROTATION_0: |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1428 case ROTATION_180: |
29679
7ad7991e946a
ft-text-renderer.cc: Use m_ prefix for class data members
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29678
diff
changeset
|
1429 extent(0) = m_bbox(2); |
7ad7991e946a
ft-text-renderer.cc: Use m_ prefix for class data members
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29678
diff
changeset
|
1430 extent(1) = m_bbox(3); |
22331
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1431 break; |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1432 |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1433 case ROTATION_90: |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1434 case ROTATION_270: |
29679
7ad7991e946a
ft-text-renderer.cc: Use m_ prefix for class data members
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29678
diff
changeset
|
1435 extent(0) = m_bbox(3); |
7ad7991e946a
ft-text-renderer.cc: Use m_ prefix for class data members
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29678
diff
changeset
|
1436 extent(1) = m_bbox(2); |
22331
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1437 } |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1438 |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1439 return extent; |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1440 } |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1441 |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1442 Matrix |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1443 ft_text_renderer::get_extent (const std::string& txt, double rotation, |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1444 const caseless_str& interpreter) |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1445 { |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1446 text_element *elt = text_parser::parse (txt, interpreter); |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1447 Matrix extent = get_extent (elt, rotation); |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1448 delete elt; |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1449 |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1450 return extent; |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1451 } |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1452 |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1453 void |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1454 ft_text_renderer::text_to_pixels (const std::string& txt, |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1455 uint8NDArray& pxls, Matrix& box, |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1456 int _halign, int valign, double rotation, |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1457 const caseless_str& interpreter, |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1458 bool handle_rotation) |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1459 { |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1460 int rot_mode = rotation_to_mode (rotation); |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1461 |
29679
7ad7991e946a
ft-text-renderer.cc: Use m_ prefix for class data members
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29678
diff
changeset
|
1462 m_halign = _halign; |
22331
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1463 |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1464 text_element *elt = text_parser::parse (txt, interpreter); |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1465 pxls = render (elt, box, rot_mode); |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1466 delete elt; |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1467 |
23577
80c42f4cca13
maint: Deprecate is_empty and replace with isempty.
Rik <rik@octave.org>
parents:
23462
diff
changeset
|
1468 if (pxls.isempty ()) |
22331
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1469 return; // nothing to render |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1470 |
29470
2ae4764180c6
Initial implementation of a LaTeX interpreter (bug #59546).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29359
diff
changeset
|
1471 // Move X0 and Y0 depending on alignments and eventually swap all values |
2ae4764180c6
Initial implementation of a LaTeX interpreter (bug #59546).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29359
diff
changeset
|
1472 // for text rotated 90° 180° or 270° |
29679
7ad7991e946a
ft-text-renderer.cc: Use m_ prefix for class data members
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents:
29678
diff
changeset
|
1473 fix_bbox_anchor (box, m_halign, valign, rot_mode, handle_rotation); |
22331
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1474 } |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1475 |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1476 ft_text_renderer::ft_font::ft_font (const ft_font& ft) |
30041
f148aff802b6
maint: use "m_" prefix for member variables of text_renderer objects.
Rik <rik@octave.org>
parents:
29683
diff
changeset
|
1477 : text_renderer::font (ft), m_face (nullptr) |
22331
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1478 { |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1479 #if defined (HAVE_FT_REFERENCE_FACE) |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1480 FT_Face ft_face = ft.get_face (); |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1481 |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1482 if (ft_face && FT_Reference_Face (ft_face) == 0) |
30041
f148aff802b6
maint: use "m_" prefix for member variables of text_renderer objects.
Rik <rik@octave.org>
parents:
29683
diff
changeset
|
1483 m_face = ft_face; |
22331
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1484 #endif |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1485 } |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1486 |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1487 ft_text_renderer::ft_font& |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1488 ft_text_renderer::ft_font::operator = (const ft_font& ft) |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1489 { |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1490 if (&ft != this) |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1491 { |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1492 text_renderer::font::operator = (ft); |
17271
cb7233cfbf43
Prepare base text rendering code for full TeX support.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
17270
diff
changeset
|
1493 |
30041
f148aff802b6
maint: use "m_" prefix for member variables of text_renderer objects.
Rik <rik@octave.org>
parents:
29683
diff
changeset
|
1494 if (m_face) |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
1495 { |
30041
f148aff802b6
maint: use "m_" prefix for member variables of text_renderer objects.
Rik <rik@octave.org>
parents:
29683
diff
changeset
|
1496 FT_Done_Face (m_face); |
f148aff802b6
maint: use "m_" prefix for member variables of text_renderer objects.
Rik <rik@octave.org>
parents:
29683
diff
changeset
|
1497 m_face = nullptr; |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
1498 } |
17330
219552139c18
Allow to compile with older freetype on RHEL5 (bug #39823).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
17327
diff
changeset
|
1499 |
21209
67d2965af0b5
revamp text rendering classes
John W. Eaton <jwe@octave.org>
parents:
21200
diff
changeset
|
1500 #if defined (HAVE_FT_REFERENCE_FACE) |
22331
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1501 FT_Face ft_face = ft.get_face (); |
17330
219552139c18
Allow to compile with older freetype on RHEL5 (bug #39823).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
17327
diff
changeset
|
1502 |
22331
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1503 if (ft_face && FT_Reference_Face (ft_face) == 0) |
30041
f148aff802b6
maint: use "m_" prefix for member variables of text_renderer objects.
Rik <rik@octave.org>
parents:
29683
diff
changeset
|
1504 m_face = ft_face; |
17330
219552139c18
Allow to compile with older freetype on RHEL5 (bug #39823).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
17327
diff
changeset
|
1505 #endif |
22331
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1506 } |
17330
219552139c18
Allow to compile with older freetype on RHEL5 (bug #39823).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
17327
diff
changeset
|
1507 |
22331
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1508 return *this; |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1509 } |
17330
219552139c18
Allow to compile with older freetype on RHEL5 (bug #39823).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
17327
diff
changeset
|
1510 |
22331
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1511 FT_Face |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1512 ft_text_renderer::ft_font::get_face (void) const |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1513 { |
30041
f148aff802b6
maint: use "m_" prefix for member variables of text_renderer objects.
Rik <rik@octave.org>
parents:
29683
diff
changeset
|
1514 if (! m_face && ! m_name.empty ()) |
22331
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1515 { |
30041
f148aff802b6
maint: use "m_" prefix for member variables of text_renderer objects.
Rik <rik@octave.org>
parents:
29683
diff
changeset
|
1516 m_face = ft_manager::get_font (m_name, m_weight, m_angle, m_size); |
17330
219552139c18
Allow to compile with older freetype on RHEL5 (bug #39823).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
17327
diff
changeset
|
1517 |
30041
f148aff802b6
maint: use "m_" prefix for member variables of text_renderer objects.
Rik <rik@octave.org>
parents:
29683
diff
changeset
|
1518 if (m_face) |
22331
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1519 { |
30041
f148aff802b6
maint: use "m_" prefix for member variables of text_renderer objects.
Rik <rik@octave.org>
parents:
29683
diff
changeset
|
1520 if (FT_Set_Char_Size (m_face, 0, m_size*64, 0, 0)) |
f148aff802b6
maint: use "m_" prefix for member variables of text_renderer objects.
Rik <rik@octave.org>
parents:
29683
diff
changeset
|
1521 ::warning ("ft_text_renderer: unable to set font size to %g", m_size); |
22331
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1522 } |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1523 else |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1524 ::warning ("ft_text_renderer: unable to load appropriate font"); |
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1525 } |
17330
219552139c18
Allow to compile with older freetype on RHEL5 (bug #39823).
Michael Goffioul <michael.goffioul@gmail.com>
parents:
17327
diff
changeset
|
1526 |
30041
f148aff802b6
maint: use "m_" prefix for member variables of text_renderer objects.
Rik <rik@octave.org>
parents:
29683
diff
changeset
|
1527 return m_face; |
22331
b81b08cc4c83
maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents:
22326
diff
changeset
|
1528 } |
22326
71dd9d5a5ecd
move more new classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
22323
diff
changeset
|
1529 } |
71dd9d5a5ecd
move more new classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
22323
diff
changeset
|
1530 |
20945
9d9270e2f98f
eliminate comments after preprocessor conditionals
John W. Eaton <jwe@octave.org>
parents:
20715
diff
changeset
|
1531 #endif |
21209
67d2965af0b5
revamp text rendering classes
John W. Eaton <jwe@octave.org>
parents:
21200
diff
changeset
|
1532 |
22326
71dd9d5a5ecd
move more new classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
22323
diff
changeset
|
1533 namespace octave |
21209
67d2965af0b5
revamp text rendering classes
John W. Eaton <jwe@octave.org>
parents:
21200
diff
changeset
|
1534 { |
22326
71dd9d5a5ecd
move more new classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
22323
diff
changeset
|
1535 base_text_renderer * |
71dd9d5a5ecd
move more new classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
22323
diff
changeset
|
1536 make_ft_text_renderer (void) |
71dd9d5a5ecd
move more new classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
22323
diff
changeset
|
1537 { |
21209
67d2965af0b5
revamp text rendering classes
John W. Eaton <jwe@octave.org>
parents:
21200
diff
changeset
|
1538 #if defined (HAVE_FREETYPE) |
22326
71dd9d5a5ecd
move more new classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
22323
diff
changeset
|
1539 return new ft_text_renderer (); |
21209
67d2965af0b5
revamp text rendering classes
John W. Eaton <jwe@octave.org>
parents:
21200
diff
changeset
|
1540 #else |
22326
71dd9d5a5ecd
move more new classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
22323
diff
changeset
|
1541 return 0; |
21209
67d2965af0b5
revamp text rendering classes
John W. Eaton <jwe@octave.org>
parents:
21200
diff
changeset
|
1542 #endif |
22326
71dd9d5a5ecd
move more new classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
22323
diff
changeset
|
1543 } |
21209
67d2965af0b5
revamp text rendering classes
John W. Eaton <jwe@octave.org>
parents:
21200
diff
changeset
|
1544 } |