annotate libinterp/corefcn/text-renderer.h @ 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
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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 ////////////////////////////////////////////////////////////////////////
21209
67d2965af0b5 revamp text rendering classes
John W. Eaton <jwe@octave.org>
parents:
diff changeset
25
67d2965af0b5 revamp text rendering classes
John W. Eaton <jwe@octave.org>
parents:
diff changeset
26 #if ! defined (octave_text_renderer_h)
67d2965af0b5 revamp text rendering classes
John W. Eaton <jwe@octave.org>
parents:
diff changeset
27 #define octave_text_renderer_h 1
67d2965af0b5 revamp text rendering classes
John W. Eaton <jwe@octave.org>
parents:
diff changeset
28
21244
1473547f50f5 include octave-config.h in public header files
John W. Eaton <jwe@octave.org>
parents: 21209
diff changeset
29 #include "octave-config.h"
1473547f50f5 include octave-config.h in public header files
John W. Eaton <jwe@octave.org>
parents: 21209
diff changeset
30
21209
67d2965af0b5 revamp text rendering classes
John W. Eaton <jwe@octave.org>
parents:
diff changeset
31 #include <list>
67d2965af0b5 revamp text rendering classes
John W. Eaton <jwe@octave.org>
parents:
diff changeset
32 #include <string>
24076
1b7e49a72c62 improve text rendering in svg printout (bug #48567)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 23220
diff changeset
33 #include <vector>
21209
67d2965af0b5 revamp text rendering classes
John W. Eaton <jwe@octave.org>
parents:
diff changeset
34
67d2965af0b5 revamp text rendering classes
John W. Eaton <jwe@octave.org>
parents:
diff changeset
35 #include "caseless-str.h"
67d2965af0b5 revamp text rendering classes
John W. Eaton <jwe@octave.org>
parents:
diff changeset
36 #include "dMatrix.h"
67d2965af0b5 revamp text rendering classes
John W. Eaton <jwe@octave.org>
parents:
diff changeset
37 #include "uint8NDArray.h"
67d2965af0b5 revamp text rendering classes
John W. Eaton <jwe@octave.org>
parents:
diff changeset
38
22326
71dd9d5a5ecd move more new classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22323
diff changeset
39 namespace octave
71dd9d5a5ecd move more new classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22323
diff changeset
40 {
22331
b81b08cc4c83 maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents: 22326
diff changeset
41 class base_text_renderer;
25643
afb5288a25ad move text engine classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 25054
diff changeset
42 class text_element;
21209
67d2965af0b5 revamp text rendering classes
John W. Eaton <jwe@octave.org>
parents:
diff changeset
43
22331
b81b08cc4c83 maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents: 22326
diff changeset
44 class
b81b08cc4c83 maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents: 22326
diff changeset
45 OCTINTERP_API
b81b08cc4c83 maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents: 22326
diff changeset
46 text_renderer
21209
67d2965af0b5 revamp text rendering classes
John W. Eaton <jwe@octave.org>
parents:
diff changeset
47 {
67d2965af0b5 revamp text rendering classes
John W. Eaton <jwe@octave.org>
parents:
diff changeset
48 public:
67d2965af0b5 revamp text rendering classes
John W. Eaton <jwe@octave.org>
parents:
diff changeset
49
22331
b81b08cc4c83 maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents: 22326
diff changeset
50 text_renderer (void);
b81b08cc4c83 maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents: 22326
diff changeset
51
22869
f75d289645ec make deleted functions public
John W. Eaton <jwe@octave.org>
parents: 22868
diff changeset
52 // No copying!
f75d289645ec make deleted functions public
John W. Eaton <jwe@octave.org>
parents: 22868
diff changeset
53
f75d289645ec make deleted functions public
John W. Eaton <jwe@octave.org>
parents: 22868
diff changeset
54 text_renderer (const text_renderer&) = delete;
f75d289645ec make deleted functions public
John W. Eaton <jwe@octave.org>
parents: 22868
diff changeset
55
f75d289645ec make deleted functions public
John W. Eaton <jwe@octave.org>
parents: 22868
diff changeset
56 text_renderer& operator = (const text_renderer&) = delete;
f75d289645ec make deleted functions public
John W. Eaton <jwe@octave.org>
parents: 22868
diff changeset
57
22331
b81b08cc4c83 maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents: 22326
diff changeset
58 ~text_renderer (void);
b81b08cc4c83 maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents: 22326
diff changeset
59
b81b08cc4c83 maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents: 22326
diff changeset
60 bool ok (void) const;
b81b08cc4c83 maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents: 22326
diff changeset
61
b81b08cc4c83 maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents: 22326
diff changeset
62 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
63
b81b08cc4c83 maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents: 22326
diff changeset
64 Matrix get_extent (const std::string& txt, double rotation = 0.0,
b81b08cc4c83 maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents: 22326
diff changeset
65 const caseless_str& interpreter = "tex");
21209
67d2965af0b5 revamp text rendering classes
John W. Eaton <jwe@octave.org>
parents:
diff changeset
66
26858
0adb232f93b9 Implement axes and text "fontsmoothing" property (bug #55833).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 26443
diff changeset
67 void set_anti_aliasing (bool val);
26995
ab5bfee22d18 maint: Strip trailing whitespace from source files.
John W. Eaton <jwe@octave.org>
parents: 26858
diff changeset
68
22331
b81b08cc4c83 maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents: 22326
diff changeset
69 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
70 const std::string& angle, double size);
b81b08cc4c83 maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents: 22326
diff changeset
71
27623
698c8b08fe8c New function uisetfont (bug #57130).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 26995
diff changeset
72 octave_map get_system_fonts (void);
698c8b08fe8c New function uisetfont (bug #57130).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 26995
diff changeset
73
22331
b81b08cc4c83 maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents: 22326
diff changeset
74 void set_color (const Matrix& c);
21209
67d2965af0b5 revamp text rendering classes
John W. Eaton <jwe@octave.org>
parents:
diff changeset
75
22331
b81b08cc4c83 maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents: 22326
diff changeset
76 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
77 uint8NDArray& pxls, Matrix& bbox,
b81b08cc4c83 maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents: 22326
diff changeset
78 int halign, int valign, double rotation = 0.0,
b81b08cc4c83 maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents: 22326
diff changeset
79 const caseless_str& interpreter = "tex",
b81b08cc4c83 maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents: 22326
diff changeset
80 bool handle_rotation = true);
21209
67d2965af0b5 revamp text rendering classes
John W. Eaton <jwe@octave.org>
parents:
diff changeset
81
22331
b81b08cc4c83 maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents: 22326
diff changeset
82 class font
21209
67d2965af0b5 revamp text rendering classes
John W. Eaton <jwe@octave.org>
parents:
diff changeset
83 {
22331
b81b08cc4c83 maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents: 22326
diff changeset
84 public:
b81b08cc4c83 maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents: 22326
diff changeset
85
b81b08cc4c83 maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents: 22326
diff changeset
86 font (void)
30041
f148aff802b6 maint: use "m_" prefix for member variables of text_renderer objects.
Rik <rik@octave.org>
parents: 29483
diff changeset
87 : m_name (), m_weight (), m_angle (), m_size (0)
22331
b81b08cc4c83 maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents: 22326
diff changeset
88 { }
b81b08cc4c83 maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents: 22326
diff changeset
89
b81b08cc4c83 maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents: 22326
diff changeset
90 font (const std::string& nm, const std::string& wt,
b81b08cc4c83 maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents: 22326
diff changeset
91 const std::string& ang, double sz)
30041
f148aff802b6 maint: use "m_" prefix for member variables of text_renderer objects.
Rik <rik@octave.org>
parents: 29483
diff changeset
92 : m_name (nm), m_weight (wt), m_angle (ang), m_size (sz)
22331
b81b08cc4c83 maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents: 22326
diff changeset
93 { }
b81b08cc4c83 maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents: 22326
diff changeset
94
b81b08cc4c83 maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents: 22326
diff changeset
95 font (const font& ft)
30041
f148aff802b6 maint: use "m_" prefix for member variables of text_renderer objects.
Rik <rik@octave.org>
parents: 29483
diff changeset
96 : m_name (ft.m_name), m_weight (ft.m_weight), m_angle (ft.m_angle),
f148aff802b6 maint: use "m_" prefix for member variables of text_renderer objects.
Rik <rik@octave.org>
parents: 29483
diff changeset
97 m_size (ft.m_size)
22331
b81b08cc4c83 maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents: 22326
diff changeset
98 { }
b81b08cc4c83 maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents: 22326
diff changeset
99
22868
87e3163f6c87 use c++11 "= default" syntax for declaration of trivial destructors
John W. Eaton <jwe@octave.org>
parents: 22865
diff changeset
100 ~font (void) = default;
21209
67d2965af0b5 revamp text rendering classes
John W. Eaton <jwe@octave.org>
parents:
diff changeset
101
22331
b81b08cc4c83 maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents: 22326
diff changeset
102 font& operator = (const font& ft)
b81b08cc4c83 maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents: 22326
diff changeset
103 {
b81b08cc4c83 maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents: 22326
diff changeset
104 if (&ft != this)
b81b08cc4c83 maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents: 22326
diff changeset
105 {
30041
f148aff802b6 maint: use "m_" prefix for member variables of text_renderer objects.
Rik <rik@octave.org>
parents: 29483
diff changeset
106 m_name = ft.m_name;
f148aff802b6 maint: use "m_" prefix for member variables of text_renderer objects.
Rik <rik@octave.org>
parents: 29483
diff changeset
107 m_weight = ft.m_weight;
f148aff802b6 maint: use "m_" prefix for member variables of text_renderer objects.
Rik <rik@octave.org>
parents: 29483
diff changeset
108 m_angle = ft.m_angle;
f148aff802b6 maint: use "m_" prefix for member variables of text_renderer objects.
Rik <rik@octave.org>
parents: 29483
diff changeset
109 m_size = ft.m_size;
22331
b81b08cc4c83 maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents: 22326
diff changeset
110 }
b81b08cc4c83 maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents: 22326
diff changeset
111
b81b08cc4c83 maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents: 22326
diff changeset
112 return *this;
b81b08cc4c83 maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents: 22326
diff changeset
113 }
b81b08cc4c83 maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents: 22326
diff changeset
114
30041
f148aff802b6 maint: use "m_" prefix for member variables of text_renderer objects.
Rik <rik@octave.org>
parents: 29483
diff changeset
115 std::string get_name (void) const { return m_name; }
22331
b81b08cc4c83 maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents: 22326
diff changeset
116
30041
f148aff802b6 maint: use "m_" prefix for member variables of text_renderer objects.
Rik <rik@octave.org>
parents: 29483
diff changeset
117 std::string get_weight (void) const { return m_weight; }
21209
67d2965af0b5 revamp text rendering classes
John W. Eaton <jwe@octave.org>
parents:
diff changeset
118
30041
f148aff802b6 maint: use "m_" prefix for member variables of text_renderer objects.
Rik <rik@octave.org>
parents: 29483
diff changeset
119 std::string get_angle (void) const { return m_angle; }
22331
b81b08cc4c83 maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents: 22326
diff changeset
120
30041
f148aff802b6 maint: use "m_" prefix for member variables of text_renderer objects.
Rik <rik@octave.org>
parents: 29483
diff changeset
121 double get_size (void) const { return m_size; }
22331
b81b08cc4c83 maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents: 22326
diff changeset
122
b81b08cc4c83 maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents: 22326
diff changeset
123 protected:
21209
67d2965af0b5 revamp text rendering classes
John W. Eaton <jwe@octave.org>
parents:
diff changeset
124
30041
f148aff802b6 maint: use "m_" prefix for member variables of text_renderer objects.
Rik <rik@octave.org>
parents: 29483
diff changeset
125 std::string m_name;
f148aff802b6 maint: use "m_" prefix for member variables of text_renderer objects.
Rik <rik@octave.org>
parents: 29483
diff changeset
126 std::string m_weight;
f148aff802b6 maint: use "m_" prefix for member variables of text_renderer objects.
Rik <rik@octave.org>
parents: 29483
diff changeset
127 std::string m_angle;
f148aff802b6 maint: use "m_" prefix for member variables of text_renderer objects.
Rik <rik@octave.org>
parents: 29483
diff changeset
128 double m_size;
22331
b81b08cc4c83 maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents: 22326
diff changeset
129 };
b81b08cc4c83 maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents: 22326
diff changeset
130
b81b08cc4c83 maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents: 22326
diff changeset
131 // Container for substrings after parsing.
b81b08cc4c83 maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents: 22326
diff changeset
132
b81b08cc4c83 maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents: 22326
diff changeset
133 class string
b81b08cc4c83 maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents: 22326
diff changeset
134 {
b81b08cc4c83 maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents: 22326
diff changeset
135 public:
21209
67d2965af0b5 revamp text rendering classes
John W. Eaton <jwe@octave.org>
parents:
diff changeset
136
30041
f148aff802b6 maint: use "m_" prefix for member variables of text_renderer objects.
Rik <rik@octave.org>
parents: 29483
diff changeset
137 string (const std::string& s, font& f, const double x, const double y)
f148aff802b6 maint: use "m_" prefix for member variables of text_renderer objects.
Rik <rik@octave.org>
parents: 29483
diff changeset
138 : m_str (s), m_family (f.get_name ()), m_fnt (f), m_x (x), m_y (y),
30390
a61e1a0f6024 maint: style check C++ files in libinterp/ ahead of 7.1 release.
Rik <rik@octave.org>
parents: 30041
diff changeset
139 m_z (0.0), m_xdata (), m_code (0), m_color (Matrix (1, 3, 0.0)),
30041
f148aff802b6 maint: use "m_" prefix for member variables of text_renderer objects.
Rik <rik@octave.org>
parents: 29483
diff changeset
140 m_svg_element ()
22331
b81b08cc4c83 maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents: 22326
diff changeset
141 { }
21209
67d2965af0b5 revamp text rendering classes
John W. Eaton <jwe@octave.org>
parents:
diff changeset
142
22331
b81b08cc4c83 maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents: 22326
diff changeset
143 string (const string& s)
30041
f148aff802b6 maint: use "m_" prefix for member variables of text_renderer objects.
Rik <rik@octave.org>
parents: 29483
diff changeset
144 : m_str (s.m_str), m_family (s.m_family), m_fnt (s.m_fnt), m_x (s.m_x),
f148aff802b6 maint: use "m_" prefix for member variables of text_renderer objects.
Rik <rik@octave.org>
parents: 29483
diff changeset
145 m_y (s.m_y), m_z (s.m_z), m_xdata (s.m_xdata), m_code (s.m_code),
f148aff802b6 maint: use "m_" prefix for member variables of text_renderer objects.
Rik <rik@octave.org>
parents: 29483
diff changeset
146 m_color (s.m_color), m_svg_element (s.m_svg_element)
22331
b81b08cc4c83 maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents: 22326
diff changeset
147 { }
21209
67d2965af0b5 revamp text rendering classes
John W. Eaton <jwe@octave.org>
parents:
diff changeset
148
22868
87e3163f6c87 use c++11 "= default" syntax for declaration of trivial destructors
John W. Eaton <jwe@octave.org>
parents: 22865
diff changeset
149 ~string (void) = default;
21209
67d2965af0b5 revamp text rendering classes
John W. Eaton <jwe@octave.org>
parents:
diff changeset
150
22331
b81b08cc4c83 maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents: 22326
diff changeset
151 string& operator = (const string& s)
b81b08cc4c83 maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents: 22326
diff changeset
152 {
b81b08cc4c83 maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents: 22326
diff changeset
153 if (&s != this)
b81b08cc4c83 maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents: 22326
diff changeset
154 {
30041
f148aff802b6 maint: use "m_" prefix for member variables of text_renderer objects.
Rik <rik@octave.org>
parents: 29483
diff changeset
155 m_str = s.m_str;
f148aff802b6 maint: use "m_" prefix for member variables of text_renderer objects.
Rik <rik@octave.org>
parents: 29483
diff changeset
156 m_family = s.m_family;
f148aff802b6 maint: use "m_" prefix for member variables of text_renderer objects.
Rik <rik@octave.org>
parents: 29483
diff changeset
157 m_fnt = s.m_fnt;
f148aff802b6 maint: use "m_" prefix for member variables of text_renderer objects.
Rik <rik@octave.org>
parents: 29483
diff changeset
158 m_x = s.m_x;
f148aff802b6 maint: use "m_" prefix for member variables of text_renderer objects.
Rik <rik@octave.org>
parents: 29483
diff changeset
159 m_y = s.m_y;
f148aff802b6 maint: use "m_" prefix for member variables of text_renderer objects.
Rik <rik@octave.org>
parents: 29483
diff changeset
160 m_z = s.m_z;
f148aff802b6 maint: use "m_" prefix for member variables of text_renderer objects.
Rik <rik@octave.org>
parents: 29483
diff changeset
161 m_xdata = s.m_xdata;
f148aff802b6 maint: use "m_" prefix for member variables of text_renderer objects.
Rik <rik@octave.org>
parents: 29483
diff changeset
162 m_code = s.m_code;
f148aff802b6 maint: use "m_" prefix for member variables of text_renderer objects.
Rik <rik@octave.org>
parents: 29483
diff changeset
163 m_color = s.m_color;
22331
b81b08cc4c83 maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents: 22326
diff changeset
164 }
21209
67d2965af0b5 revamp text rendering classes
John W. Eaton <jwe@octave.org>
parents:
diff changeset
165
22331
b81b08cc4c83 maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents: 22326
diff changeset
166 return *this;
b81b08cc4c83 maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents: 22326
diff changeset
167 }
b81b08cc4c83 maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents: 22326
diff changeset
168
30041
f148aff802b6 maint: use "m_" prefix for member variables of text_renderer objects.
Rik <rik@octave.org>
parents: 29483
diff changeset
169 void set_string (const std::string& s) { m_str = s; }
22331
b81b08cc4c83 maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents: 22326
diff changeset
170
30041
f148aff802b6 maint: use "m_" prefix for member variables of text_renderer objects.
Rik <rik@octave.org>
parents: 29483
diff changeset
171 std::string get_string (void) const { return m_str; }
21209
67d2965af0b5 revamp text rendering classes
John W. Eaton <jwe@octave.org>
parents:
diff changeset
172
30041
f148aff802b6 maint: use "m_" prefix for member variables of text_renderer objects.
Rik <rik@octave.org>
parents: 29483
diff changeset
173 std::string get_name (void) const { return m_fnt.get_name (); }
22331
b81b08cc4c83 maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents: 22326
diff changeset
174
30041
f148aff802b6 maint: use "m_" prefix for member variables of text_renderer objects.
Rik <rik@octave.org>
parents: 29483
diff changeset
175 std::string get_family (void) const { return m_family; }
24076
1b7e49a72c62 improve text rendering in svg printout (bug #48567)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 23220
diff changeset
176
30041
f148aff802b6 maint: use "m_" prefix for member variables of text_renderer objects.
Rik <rik@octave.org>
parents: 29483
diff changeset
177 void set_family (const std::string& nm) { m_family = nm; }
24076
1b7e49a72c62 improve text rendering in svg printout (bug #48567)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 23220
diff changeset
178
30041
f148aff802b6 maint: use "m_" prefix for member variables of text_renderer objects.
Rik <rik@octave.org>
parents: 29483
diff changeset
179 std::string get_weight (void) const { return m_fnt.get_weight (); }
22331
b81b08cc4c83 maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents: 22326
diff changeset
180
30041
f148aff802b6 maint: use "m_" prefix for member variables of text_renderer objects.
Rik <rik@octave.org>
parents: 29483
diff changeset
181 std::string get_angle (void) const { return m_fnt.get_angle (); }
22331
b81b08cc4c83 maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents: 22326
diff changeset
182
30041
f148aff802b6 maint: use "m_" prefix for member variables of text_renderer objects.
Rik <rik@octave.org>
parents: 29483
diff changeset
183 double get_size (void) const { return m_fnt.get_size (); }
21209
67d2965af0b5 revamp text rendering classes
John W. Eaton <jwe@octave.org>
parents:
diff changeset
184
30041
f148aff802b6 maint: use "m_" prefix for member variables of text_renderer objects.
Rik <rik@octave.org>
parents: 29483
diff changeset
185 void set_x (const double x) { m_x = x; }
22331
b81b08cc4c83 maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents: 22326
diff changeset
186
30041
f148aff802b6 maint: use "m_" prefix for member variables of text_renderer objects.
Rik <rik@octave.org>
parents: 29483
diff changeset
187 double get_x (void) const { return m_x; }
21209
67d2965af0b5 revamp text rendering classes
John W. Eaton <jwe@octave.org>
parents:
diff changeset
188
30041
f148aff802b6 maint: use "m_" prefix for member variables of text_renderer objects.
Rik <rik@octave.org>
parents: 29483
diff changeset
189 void set_xdata (const std::vector<double>& x) { m_xdata = x; }
24076
1b7e49a72c62 improve text rendering in svg printout (bug #48567)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 23220
diff changeset
190
30041
f148aff802b6 maint: use "m_" prefix for member variables of text_renderer objects.
Rik <rik@octave.org>
parents: 29483
diff changeset
191 std::vector<double> get_xdata (void) const { return m_xdata; }
24076
1b7e49a72c62 improve text rendering in svg printout (bug #48567)
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 23220
diff changeset
192
30041
f148aff802b6 maint: use "m_" prefix for member variables of text_renderer objects.
Rik <rik@octave.org>
parents: 29483
diff changeset
193 void set_y (const double y) { m_y = y; }
22331
b81b08cc4c83 maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents: 22326
diff changeset
194
30041
f148aff802b6 maint: use "m_" prefix for member variables of text_renderer objects.
Rik <rik@octave.org>
parents: 29483
diff changeset
195 double get_y (void) const { return m_y; }
21209
67d2965af0b5 revamp text rendering classes
John W. Eaton <jwe@octave.org>
parents:
diff changeset
196
30041
f148aff802b6 maint: use "m_" prefix for member variables of text_renderer objects.
Rik <rik@octave.org>
parents: 29483
diff changeset
197 void set_z (const double z) { m_z = z; }
22331
b81b08cc4c83 maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents: 22326
diff changeset
198
30041
f148aff802b6 maint: use "m_" prefix for member variables of text_renderer objects.
Rik <rik@octave.org>
parents: 29483
diff changeset
199 double get_z (void) const { return m_z; }
21209
67d2965af0b5 revamp text rendering classes
John W. Eaton <jwe@octave.org>
parents:
diff changeset
200
30041
f148aff802b6 maint: use "m_" prefix for member variables of text_renderer objects.
Rik <rik@octave.org>
parents: 29483
diff changeset
201 void set_code (const uint32_t code) { m_code = code; }
22331
b81b08cc4c83 maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents: 22326
diff changeset
202
30041
f148aff802b6 maint: use "m_" prefix for member variables of text_renderer objects.
Rik <rik@octave.org>
parents: 29483
diff changeset
203 uint32_t get_code (void) const { return m_code; }
21209
67d2965af0b5 revamp text rendering classes
John W. Eaton <jwe@octave.org>
parents:
diff changeset
204
30041
f148aff802b6 maint: use "m_" prefix for member variables of text_renderer objects.
Rik <rik@octave.org>
parents: 29483
diff changeset
205 void set_svg_element (const std::string& svg) { m_svg_element = svg; }
29470
2ae4764180c6 Initial implementation of a LaTeX interpreter (bug #59546).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 29358
diff changeset
206
30041
f148aff802b6 maint: use "m_" prefix for member variables of text_renderer objects.
Rik <rik@octave.org>
parents: 29483
diff changeset
207 std::string get_svg_element (void) const { return m_svg_element; }
29470
2ae4764180c6 Initial implementation of a LaTeX interpreter (bug #59546).
Pantxo Diribarne <pantxo.diribarne@gmail.com>
parents: 29358
diff changeset
208
22331
b81b08cc4c83 maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents: 22326
diff changeset
209 void set_color (const uint8NDArray& c)
b81b08cc4c83 maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents: 22326
diff changeset
210 {
30041
f148aff802b6 maint: use "m_" prefix for member variables of text_renderer objects.
Rik <rik@octave.org>
parents: 29483
diff changeset
211 m_color(0) = static_cast<double> (c(0)) / 255;
f148aff802b6 maint: use "m_" prefix for member variables of text_renderer objects.
Rik <rik@octave.org>
parents: 29483
diff changeset
212 m_color(1) = static_cast<double> (c(1)) / 255;
f148aff802b6 maint: use "m_" prefix for member variables of text_renderer objects.
Rik <rik@octave.org>
parents: 29483
diff changeset
213 m_color(2) = static_cast<double> (c(2)) / 255;
22331
b81b08cc4c83 maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents: 22326
diff changeset
214 }
b81b08cc4c83 maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents: 22326
diff changeset
215
30041
f148aff802b6 maint: use "m_" prefix for member variables of text_renderer objects.
Rik <rik@octave.org>
parents: 29483
diff changeset
216 Matrix get_color (void) const { return m_color; }
22331
b81b08cc4c83 maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents: 22326
diff changeset
217
b81b08cc4c83 maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents: 22326
diff changeset
218 private:
21209
67d2965af0b5 revamp text rendering classes
John W. Eaton <jwe@octave.org>
parents:
diff changeset
219
30041
f148aff802b6 maint: use "m_" prefix for member variables of text_renderer objects.
Rik <rik@octave.org>
parents: 29483
diff changeset
220 std::string m_str;
f148aff802b6 maint: use "m_" prefix for member variables of text_renderer objects.
Rik <rik@octave.org>
parents: 29483
diff changeset
221 std::string m_family;
f148aff802b6 maint: use "m_" prefix for member variables of text_renderer objects.
Rik <rik@octave.org>
parents: 29483
diff changeset
222 font m_fnt;
f148aff802b6 maint: use "m_" prefix for member variables of text_renderer objects.
Rik <rik@octave.org>
parents: 29483
diff changeset
223 double m_x, m_y, m_z;
f148aff802b6 maint: use "m_" prefix for member variables of text_renderer objects.
Rik <rik@octave.org>
parents: 29483
diff changeset
224 std::vector<double> m_xdata;
f148aff802b6 maint: use "m_" prefix for member variables of text_renderer objects.
Rik <rik@octave.org>
parents: 29483
diff changeset
225 uint32_t m_code;
f148aff802b6 maint: use "m_" prefix for member variables of text_renderer objects.
Rik <rik@octave.org>
parents: 29483
diff changeset
226 Matrix m_color;
f148aff802b6 maint: use "m_" prefix for member variables of text_renderer objects.
Rik <rik@octave.org>
parents: 29483
diff changeset
227 std::string m_svg_element;
22331
b81b08cc4c83 maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents: 22326
diff changeset
228 };
b81b08cc4c83 maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents: 22326
diff changeset
229
b81b08cc4c83 maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents: 22326
diff changeset
230 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
231 std::list<string>& lst, Matrix& box,
b81b08cc4c83 maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents: 22326
diff changeset
232 int halign, int valign, double rotation = 0.0,
b81b08cc4c83 maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents: 22326
diff changeset
233 const caseless_str& interpreter = "tex");
21209
67d2965af0b5 revamp text rendering classes
John W. Eaton <jwe@octave.org>
parents:
diff changeset
234
67d2965af0b5 revamp text rendering classes
John W. Eaton <jwe@octave.org>
parents:
diff changeset
235 private:
67d2965af0b5 revamp text rendering classes
John W. Eaton <jwe@octave.org>
parents:
diff changeset
236
30041
f148aff802b6 maint: use "m_" prefix for member variables of text_renderer objects.
Rik <rik@octave.org>
parents: 29483
diff changeset
237 base_text_renderer *m_rep;
f148aff802b6 maint: use "m_" prefix for member variables of text_renderer objects.
Rik <rik@octave.org>
parents: 29483
diff changeset
238 base_text_renderer *m_latex_rep;
22331
b81b08cc4c83 maint: Indent namespaces in more files.
John W. Eaton <jwe@octave.org>
parents: 22326
diff changeset
239 };
22326
71dd9d5a5ecd move more new classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22323
diff changeset
240 }
71dd9d5a5ecd move more new classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22323
diff changeset
241
21209
67d2965af0b5 revamp text rendering classes
John W. Eaton <jwe@octave.org>
parents:
diff changeset
242 #endif