Panda3D

Loading...
Searching...
No Matches
textNode.h
Go to the documentation of this file.
1/**
2 * PANDA 3D SOFTWARE
3 * Copyright (c) Carnegie Mellon University. All rights reserved.
4 *
5 * All use of this software is subject to the terms of the revised BSD
6 * license. You should have received a copy of this license along
7 * with this source code in a file named "LICENSE."
8 *
9 * @file textNode.h
10 * @author drose
11 * @date 2002-03-13
12 */
13
14#ifndef TEXTNODE_H
15#define TEXTNODE_H
16
17#include "pandabase.h"
18
19#include "config_text.h"
20#include "textEncoder.h"
21#include "textProperties.h"
22#include "textFont.h"
23#include "textAssembler.h"
24#include "pandaNode.h"
25#include "luse.h"
26#include "geom.h"
27#include "pmutex.h"
28#include "mutexHolder.h"
29
30/**
31 * The primary interface to this module. This class does basic text assembly;
32 * given a string of text and a TextFont object, it creates a piece of
33 * geometry that may be placed in the 3-d or 2-d world to represent the
34 * indicated text.
35 *
36 * The TextNode may be used in one of two ways. Naively, it may simply be
37 * parented directly into the scene graph and rendered as if it were a
38 * GeomNode; in this mode, the actual polygon geometry that renders the text
39 * is not directly visible or accessible, but remains hidden within the
40 * TextNode.
41 *
42 * The second way TextNode may be used is as a text generator. To use it in
43 * this way, do not parent the TextNode to the scene graph; instead, set the
44 * properties of the text and call generate() to return an ordinary node,
45 * containing ordinary geometry, which you may use however you like. Each
46 * time you call generate() a new node is returned.
47 */
48 class EXPCL_PANDA_TEXT TextNode : public PandaNode, public TextEncoder, public TextProperties {
49PUBLISHED:
50 explicit TextNode(const std::string &name);
51 explicit TextNode(const std::string &name, const TextProperties &copy);
52 protected:
53 TextNode(const TextNode &copy);
54 virtual PandaNode *make_copy() const;
55
56PUBLISHED:
57 ~TextNode();
58
59 enum FlattenFlags {
60 FF_none = 0x0000,
61 FF_light = 0x0001,
62 FF_medium = 0x0002,
63 FF_strong = 0x0004,
64 FF_dynamic_merge = 0x0008,
65 };
66
67 INLINE PN_stdfloat get_line_height() const;
68
69 INLINE void set_max_rows(int max_rows);
70 INLINE void clear_max_rows();
71 INLINE bool has_max_rows() const;
72 INLINE int get_max_rows() const;
73 INLINE bool has_overflow() const;
74
75 INLINE void set_frame_color(PN_stdfloat r, PN_stdfloat g, PN_stdfloat b, PN_stdfloat a);
76 INLINE void set_frame_color(const LColor &frame_color);
77 INLINE LColor get_frame_color() const;
78
79 INLINE void set_card_border(PN_stdfloat size, PN_stdfloat uv_portion);
80 INLINE void clear_card_border();
81 INLINE PN_stdfloat get_card_border_size() const;
82 INLINE PN_stdfloat get_card_border_uv_portion() const;
83 INLINE bool has_card_border() const;
84
85 INLINE void set_card_color(PN_stdfloat r, PN_stdfloat g, PN_stdfloat b, PN_stdfloat a);
86 INLINE void set_card_color(const LColor &card_color);
87 INLINE LColor get_card_color() const;
88
89 INLINE void set_card_texture(Texture *card_texture);
90 INLINE void clear_card_texture();
91 INLINE bool has_card_texture() const;
92 INLINE Texture *get_card_texture() const;
93
94 INLINE void set_frame_as_margin(PN_stdfloat left, PN_stdfloat right,
95 PN_stdfloat bottom, PN_stdfloat top);
96 INLINE void set_frame_actual(PN_stdfloat left, PN_stdfloat right,
97 PN_stdfloat bottom, PN_stdfloat top);
98 INLINE void clear_frame();
99 INLINE bool has_frame() const;
100 INLINE bool is_frame_as_margin() const;
101 INLINE LVecBase4 get_frame_as_set() const;
102 INLINE LVecBase4 get_frame_actual() const;
103
104 INLINE void set_frame_line_width(PN_stdfloat line_width);
105 INLINE PN_stdfloat get_frame_line_width() const;
106 INLINE void set_frame_corners(bool corners);
107 INLINE bool get_frame_corners() const;
108
109 INLINE void set_card_as_margin(PN_stdfloat left, PN_stdfloat right,
110 PN_stdfloat bottom, PN_stdfloat top);
111 INLINE void set_card_actual(PN_stdfloat left, PN_stdfloat right,
112 PN_stdfloat bottom, PN_stdfloat top);
113 INLINE void set_card_decal(bool card_decal);
114 INLINE void clear_card();
115 INLINE bool has_card() const;
116 INLINE bool get_card_decal() const;
117 INLINE bool is_card_as_margin() const;
118 INLINE LVecBase4 get_card_as_set() const;
119 INLINE LVecBase4 get_card_actual() const;
120 INLINE LVecBase4 get_card_transformed() const;
121
122 INLINE void set_transform(const LMatrix4 &transform);
123 INLINE LMatrix4 get_transform() const;
124
125 INLINE void set_coordinate_system(CoordinateSystem cs);
126 INLINE CoordinateSystem get_coordinate_system() const;
127
128 INLINE void set_usage_hint(Geom::UsageHint usage_hint);
129 INLINE Geom::UsageHint get_usage_hint() const;
130
131 INLINE void set_flatten_flags(int flatten_flags);
132 INLINE int get_flatten_flags() const;
133
134 // These methods are inherited from TextProperties, but we override here so
135 // we can flag the TextNode as dirty when they have been changed.
136
137 INLINE void set_font(TextFont *font);
138 INLINE void clear_font();
139
140 INLINE void set_small_caps(bool small_caps);
141 INLINE void clear_small_caps();
142
143 INLINE void set_small_caps_scale(PN_stdfloat small_caps_scale);
144 INLINE void clear_small_caps_scale();
145
146 INLINE void set_slant(PN_stdfloat slant);
147 INLINE void clear_slant();
148
149 INLINE void set_align(Alignment align_type);
150 INLINE void clear_align();
151
152 INLINE void set_indent(PN_stdfloat indent);
153 INLINE void clear_indent();
154
155 INLINE void set_wordwrap(PN_stdfloat wordwrap);
156 INLINE void clear_wordwrap();
157
158 INLINE void set_text_color(PN_stdfloat r, PN_stdfloat g, PN_stdfloat b, PN_stdfloat a);
159 INLINE void set_text_color(const LColor &text_color);
160 INLINE void clear_text_color();
161
162 INLINE void set_shadow_color(PN_stdfloat r, PN_stdfloat g, PN_stdfloat b, PN_stdfloat a);
163 INLINE void set_shadow_color(const LColor &shadow_color);
164 INLINE void clear_shadow_color();
165
166 INLINE void set_shadow(PN_stdfloat xoffset, PN_stdfloat yoffset);
167 INLINE void set_shadow(const LVecBase2 &shadow_offset);
168 INLINE void clear_shadow();
169
170 INLINE void set_bin(const std::string &bin);
171 INLINE void clear_bin();
172
173 INLINE int set_draw_order(int draw_order);
174 INLINE void clear_draw_order();
175
176 INLINE void set_tab_width(PN_stdfloat tab_width);
177 INLINE void clear_tab_width();
178
179 INLINE void set_glyph_scale(PN_stdfloat glyph_scale);
180 INLINE void clear_glyph_scale();
181
182 INLINE void set_glyph_shift(PN_stdfloat glyph_shift);
183 INLINE void clear_glyph_shift();
184
185 // After the text has been set, you can query this to determine how it will
186 // be wordwrapped.
187 INLINE std::string get_wordwrapped_text() const;
188
189 // These methods calculate the width of a single character or a line of text
190 // in the current font.
191 PN_stdfloat calc_width(wchar_t character) const;
192 INLINE PN_stdfloat calc_width(const std::string &line) const;
193
194 bool has_exact_character(wchar_t character) const;
195 bool has_character(wchar_t character) const;
196 bool is_whitespace(wchar_t character) const;
197
198 INLINE std::wstring get_wordwrapped_wtext() const;
199 PN_stdfloat calc_width(const std::wstring &line) const;
200
201 virtual void output(std::ostream &out) const;
202 virtual void write(std::ostream &out, int indent_level = 0) const;
203
204 // The following functions return information about the text that was last
205 // built (and is currently visible).
206 INLINE PN_stdfloat get_left() const;
207 INLINE PN_stdfloat get_right() const;
208 INLINE PN_stdfloat get_bottom() const;
209 INLINE PN_stdfloat get_top() const;
210 INLINE PN_stdfloat get_height() const;
211 INLINE PN_stdfloat get_width() const;
212
213 INLINE LPoint3 get_upper_left_3d() const;
214 INLINE LPoint3 get_lower_right_3d() const;
215
216 INLINE int get_num_rows() const;
217
218 INLINE PT(PandaNode) generate();
219 INLINE void update();
220 INLINE void force_update();
221
222 PT(PandaNode) get_internal_geom() const;
223
224PUBLISHED:
225 MAKE_PROPERTY(max_rows, get_max_rows, set_max_rows);
226 MAKE_PROPERTY(frame_color, get_frame_color, set_frame_color);
227 MAKE_PROPERTY(card_color, get_card_color, set_card_color);
228 MAKE_PROPERTY(card_texture, get_card_texture, set_card_texture);
229 MAKE_PROPERTY(frame_line_width, get_frame_line_width, set_frame_line_width);
230 MAKE_PROPERTY(frame_corners, get_frame_corners, set_frame_corners);
231 MAKE_PROPERTY(transform, get_transform, set_transform);
232 MAKE_PROPERTY(coordinate_system, get_coordinate_system, set_coordinate_system);
233 MAKE_PROPERTY(usage_hint, get_usage_hint, set_usage_hint);
234 MAKE_PROPERTY(flatten_flags, get_flatten_flags, set_flatten_flags);
235
236 MAKE_PROPERTY2(font, has_font, get_font, set_font, clear_font);
237 MAKE_PROPERTY2(small_caps, has_small_caps, get_small_caps,
238 set_small_caps, clear_small_caps);
239 MAKE_PROPERTY2(small_caps_scale, has_small_caps_scale, get_small_caps_scale,
240 set_small_caps_scale, clear_small_caps_scale);
241 MAKE_PROPERTY2(slant, has_slant, get_slant, set_slant, clear_slant);
242 MAKE_PROPERTY2(underscore, has_underscore, get_underscore,
243 set_underscore, clear_underscore);
244 MAKE_PROPERTY2(underscore_height, has_underscore_height, get_underscore_height,
245 set_underscore_height, clear_underscore_height);
246 MAKE_PROPERTY2(align, has_align, get_align, set_align, clear_align);
247 MAKE_PROPERTY2(indent, has_indent, get_indent, set_indent, clear_indent);
248 MAKE_PROPERTY2(wordwrap, has_wordwrap, get_wordwrap, set_wordwrap, clear_wordwrap);
249 MAKE_PROPERTY2(preserve_trailing_whitespace,
250 has_preserve_trailing_whitespace, get_preserve_trailing_whitespace,
251 set_preserve_trailing_whitespace, clear_preserve_trailing_whitespace);
252 MAKE_PROPERTY2(text_color, has_text_color, get_text_color,
253 set_text_color, clear_text_color);
254 MAKE_PROPERTY2(shadow_color, has_shadow_color, get_shadow_color,
255 set_shadow_color, clear_shadow_color);
256 MAKE_PROPERTY2(shadow, has_shadow, get_shadow, set_shadow, clear_shadow);
257 MAKE_PROPERTY2(bin, has_bin, get_bin, set_bin, clear_bin);
258 MAKE_PROPERTY2(draw_order, has_draw_order, get_draw_order,
259 set_draw_order, clear_draw_order);
260 MAKE_PROPERTY2(tab_width, has_tab_width, get_tab_width,
261 set_tab_width, clear_tab_width);
262 MAKE_PROPERTY2(glyph_scale, has_glyph_scale, get_glyph_scale,
263 set_glyph_scale, clear_glyph_scale);
264 MAKE_PROPERTY2(glyph_shift, has_glyph_shift, get_glyph_shift,
265 set_glyph_shift, clear_glyph_shift);
266 MAKE_PROPERTY2(text_scale, has_text_scale, get_text_scale,
267 set_text_scale, clear_text_scale);
268
269 public:
270 // From parent class TextEncoder;
271 virtual void text_changed() final;
272
273 // From parent class PandaNode
274 virtual int get_unsafe_to_apply_attribs() const;
275 virtual void apply_attribs_to_vertices(const AccumulatedAttribs &attribs,
276 int attrib_types,
277 GeomTransformer &transformer);
278 virtual CPT(TransformState)
279 calc_tight_bounds(LPoint3 &min_point, LPoint3 &max_point,
280 bool &found_any,
281 const TransformState *transform,
282 Thread *current_thread) const;
283
284 virtual bool cull_callback(CullTraverser *trav, CullTraverserData &data);
285 virtual bool is_renderable() const;
286
287 virtual void compute_internal_bounds(CPT(BoundingVolume) &internal_bounds,
288 int &internal_vertices,
289 int pipeline_stage,
290 Thread *current_thread) const;
291
292 virtual void r_prepare_scene(GraphicsStateGuardianBase *gsg,
293 const RenderState *node_state,
294 GeomTransformer &transformer,
295 Thread *current_thread);
296
297private:
298 INLINE void invalidate_no_measure();
299 INLINE void invalidate_with_measure();
300 INLINE void check_rebuild() const;
301 INLINE void check_measure() const;
302
303 void do_rebuild();
304 void do_measure();
305
306 PT(PandaNode) do_generate();
307 PT(PandaNode) do_get_internal_geom() const;
308
309 PT(PandaNode) make_frame();
310 PT(PandaNode) make_card();
311 PT(PandaNode) make_card_with_border();
312
313 static int count_geoms(PandaNode *node);
314
315 Mutex _lock;
316 PT(PandaNode) _internal_geom;
317
318 PT(Texture) _card_texture;
319 LColor _frame_color;
320 LColor _card_color;
321
322 enum Flags {
323 F_has_frame = 0x0001,
324 F_frame_as_margin = 0x0002,
325 F_has_card = 0x0004,
326 F_card_as_margin = 0x0008,
327 F_has_card_texture = 0x0010,
328 F_frame_corners = 0x0020,
329 F_card_transp = 0x0040,
330 F_has_card_border = 0x0080,
331 F_needs_rebuild = 0x0100,
332 F_needs_measure = 0x0200,
333 F_has_overflow = 0x0400,
334 F_card_decal = 0x0800,
335 };
336
337 int _flags;
338 int _max_rows;
339 GeomEnums::UsageHint _usage_hint;
340 int _flatten_flags;
341 PN_stdfloat _frame_width;
342 PN_stdfloat _card_border_size;
343 PN_stdfloat _card_border_uv_portion;
344
345 LVector2 _frame_ul, _frame_lr;
346 LVector2 _card_ul, _card_lr;
347
348 LMatrix4 _transform;
349 CoordinateSystem _coordinate_system;
350
351 LPoint3 _ul3d, _lr3d;
352
353 // Returned from TextAssembler:
354 LVector2 _text_ul, _text_lr;
355 int _num_rows;
356 std::wstring _wordwrapped_wtext;
357
358 static PStatCollector _text_generate_pcollector;
359
360 public:
361 static TypeHandle get_class_type() {
362 return _type_handle;
363 }
364 static void init_type() {
365 PandaNode::init_type();
366 TextProperties::init_type();
367 register_type(_type_handle, "TextNode",
368 PandaNode::get_class_type(),
369 TextProperties::get_class_type());
370 }
371 virtual TypeHandle get_type() const {
372 return get_class_type();
373 }
374 virtual TypeHandle force_init_type() {init_type(); return get_class_type();}
375
376 private:
377 static TypeHandle _type_handle;
378};
379
380#include "textNode.I"
381
382#endif
AccumulatedAttribs
This class is used by the SceneGraphReducer to maintain and accumulate the set of attributes we have ...
Definition accumulatedAttribs.h:30
BoundingVolume
This is an abstract class for any volume in any sense which can be said to define the locality of ref...
Definition boundingVolume.h:41
CullTraverser
This object performs a depth-first traversal of the scene graph, with optional view-frustum culling,...
Definition cullTraverser.h:45
GeomTransformer
An object specifically designed to transform the vertices of a Geom without disturbing indexing or af...
Definition geomTransformer.h:42
GraphicsStateGuardianBase
This is a base class for the GraphicsStateGuardian class, which is itself a base class for the variou...
Definition graphicsStateGuardianBase.h:110
Mutex
A standard mutex, or mutual exclusion lock.
Definition pmutex.h:40
PStatCollector
A lightweight class that represents a single element that may be timed and/or counted via stats.
Definition pStatCollector.h:43
PandaNode::set_transform
set_transform
Sets the transform that will be applied to this node and below.
Definition pandaNode.h:183
PandaNode::calc_tight_bounds
virtual ConstPointerTo< TransformState > calc_tight_bounds(LPoint3 &min_point, LPoint3 &max_point, bool &found_any, const TransformState *transform, Thread *current_thread=Thread::get_current_thread()) const
This is used to support NodePath::calc_tight_bounds().
Definition pandaNode.cxx:352
PandaNode::make_copy
virtual PandaNode * make_copy() const
Returns a newly-allocated PandaNode that is a shallow copy of this one.
Definition pandaNode.cxx:481
RenderState
This represents a unique collection of RenderAttrib objects that correspond to a particular renderabl...
Definition renderState.h:47
TextFont
An encapsulation of a font; i.e.
Definition textFont.h:32
TextNode::set_glyph_scale
set_glyph_scale
Specifies the factor by which to scale each letter of the text as it is placed.
Definition textNode.h:263
TextNode::calc_width
PN_stdfloat calc_width(wchar_t character) const
Returns the width of a single character of the font, or 0.0 if the character is not known.
Definition textNode.cxx:177
TextNode::clear_card
void clear_card()
Specifies that a card will not be drawn behind the text.
Definition textNode.I:442
TextNode::clear_wordwrap
clear_wordwrap
Removes the wordwrap setting from the TextNode.
Definition textNode.h:248
TextNode::get_frame_actual
LVecBase4 get_frame_actual() const
Returns the actual dimensions of the frame around the text.
Definition textNode.I:329
TextNode::get_frame_as_set
LVecBase4 get_frame_as_set() const
Returns the dimensions of the frame as set by set_frame_as_margin() or set_frame_actual().
Definition textNode.I:313
TextNode::set_text_color
set_text_color
Sets the color of the text.
Definition textNode.h:253
TextNode::get_bottom
PN_stdfloat get_bottom() const
Returns the bottommost extent of the text in local 2-d coordinates, unmodified by the set_transform()...
Definition textNode.I:1079
TextNode::get_left
PN_stdfloat get_left() const
Returns the leftmost extent of the text in local 2-d coordinates, unmodified by the set_transform() m...
Definition textNode.I:1057
TextNode::set_card_actual
void set_card_actual(PN_stdfloat left, PN_stdfloat right, PN_stdfloat bottom, PN_stdfloat top)
Similar to set_card_as_margin, except the card is specified in actual coordinate units (relative to t...
Definition textNode.I:413
TextNode::has_exact_character
bool has_exact_character(wchar_t character) const
Returns true if the named character exists in the font exactly as named, false otherwise.
Definition textNode.cxx:199
TextNode::r_prepare_scene
virtual void r_prepare_scene(GraphicsStateGuardianBase *gsg, const RenderState *node_state, GeomTransformer &transformer, Thread *current_thread)
The recursive implementation of prepare_scene().
Definition textNode.cxx:528
TextNode::text_changed
virtual void text_changed() final
Given that we have just read an ampersand from the StringDecoder, and that we have expand_amp in effe...
TextNode::get_unsafe_to_apply_attribs
virtual int get_unsafe_to_apply_attribs() const
Returns the union of all attributes from SceneGraphReducer::AttribTypes that may not safely be applie...
Definition textNode.cxx:339
TextNode::get_usage_hint
get_usage_hint
Returns the UsageHint that will be applied to generated geometry.
Definition textNode.h:233
TextNode::get_card_as_set
LVecBase4 get_card_as_set() const
Returns the dimensions of the card as set by set_card_as_margin() or set_card_actual().
Definition textNode.I:487
TextNode::get_line_height
PN_stdfloat get_line_height() const
Returns the number of units high each line of text is.
Definition textNode.I:20
TextNode::set_max_rows
set_max_rows
Sets the maximum number of rows that may be formatted by the TextNode.
Definition textNode.h:225
TextNode::get_wordwrapped_text
std::string get_wordwrapped_text() const
Returns a string that represents the contents of the text, as it has been formatted by wordwrap rules...
Definition textNode.I:1025
TextNode::set_indent
set_indent
Specifies the amount of extra space that is inserted before the first character of each line.
Definition textNode.h:247
TextNode::set_frame_as_margin
void set_frame_as_margin(PN_stdfloat left, PN_stdfloat right, PN_stdfloat bottom, PN_stdfloat top)
Specifies that a border will be drawn around the text when it is next created.
Definition textNode.I:249
TextNode::clear_text_color
clear_text_color
Removes the text color specification; the text will be colored whatever it was in the source font fil...
Definition textNode.h:253
TextNode::get_num_rows
int get_num_rows() const
Returns the number of rows of text that were generated.
Definition textNode.I:1143
TextNode::set_frame_corners
set_frame_corners
Enables or disables the drawing of corners for the frame.
Definition textNode.h:230
TextNode::set_shadow
set_shadow
Specifies that the text should be drawn with a shadow, by creating a second copy of the text and offs...
Definition textNode.h:256
TextNode::set_wordwrap
set_wordwrap
Sets the text up to automatically wordwrap when it exceeds the indicated width.
Definition textNode.h:248
TextNode::clear_max_rows
void clear_max_rows()
Resets the TextNode's default behavior of not limiting the number of rows of text.
Definition textNode.I:46
TextNode::clear_font
clear_font
Resets the font to the default font.
Definition textNode.h:236
TextNode::set_frame_actual
void set_frame_actual(PN_stdfloat left, PN_stdfloat right, PN_stdfloat bottom, PN_stdfloat top)
Similar to set_frame_as_margin, except the frame is specified in actual coordinate units (relative to...
Definition textNode.I:264
TextNode::set_tab_width
set_tab_width
Sets the width of each tab stop, in screen units.
Definition textNode.h:261
TextNode::get_frame_line_width
get_frame_line_width
Returns the thickness of the lines that will be used to draw the frame.
Definition textNode.h:229
TextNode::update
void update()
Can be called after the TextNode has been fully configured, to force the node to recompute its text i...
Definition textNode.I:1166
TextNode::get_top
PN_stdfloat get_top() const
Returns the topmost extent of the text in local 2-d coordinates, unmodified by the set_transform() ma...
Definition textNode.I:1090
TextNode::get_max_rows
get_max_rows
Returns the limit on the height of the TextNode specified by set_max_rows().
Definition textNode.h:225
TextNode::set_usage_hint
set_usage_hint
Specifies the UsageHint that will be applied to generated geometry.
Definition textNode.h:233
TextNode::is_renderable
virtual bool is_renderable() const
Returns true if there is some value to visiting this particular node during the cull traversal for an...
Definition textNode.cxx:481
TextNode::clear_shadow
clear_shadow
Specifies that a shadow will not be drawn behind the text.
Definition textNode.h:256
TextNode::set_card_decal
void set_card_decal(bool card_decal)
Sets the card_decal flag.
Definition textNode.I:428
TextNode::is_frame_as_margin
bool is_frame_as_margin() const
If this is true, the frame was set via a call to set_frame_as_margin(), and the dimension of the fram...
Definition textNode.I:300
TextNode::get_card_transformed
LVecBase4 get_card_transformed() const
Returns the actual card dimensions, transformed by the matrix set by set_transform().
Definition textNode.I:528
TextNode::has_max_rows
bool has_max_rows() const
Returns true if a limit on the height of the TextNode has been set via set_max_rows(),...
Definition textNode.I:57
TextNode::set_card_as_margin
void set_card_as_margin(PN_stdfloat left, PN_stdfloat right, PN_stdfloat bottom, PN_stdfloat top)
Specifies that a (possibly opaque or semitransparent) card will be held behind the text when it is ne...
Definition textNode.I:398
TextNode::set_draw_order
set_draw_order
Sets the drawing order of text created by the TextMaker.
Definition textNode.h:259
TextNode::set_small_caps_scale
set_small_caps_scale
Sets the scale factor applied to lowercase letters from their uppercase equivalents,...
Definition textNode.h:240
TextNode::apply_attribs_to_vertices
virtual void apply_attribs_to_vertices(const AccumulatedAttribs &attribs, int attrib_types, GeomTransformer &transformer)
Applies whatever attributes are specified in the AccumulatedAttribs object (and by the attrib_types b...
Definition textNode.cxx:357
TextNode::get_flatten_flags
get_flatten_flags
Returns the flatten flags.
Definition textNode.h:234
TextNode::compute_internal_bounds
virtual void compute_internal_bounds(CPT(BoundingVolume) &internal_bounds, int &internal_vertices, int pipeline_stage, Thread *current_thread) const
Called when needed to recompute the node's _internal_bound object.
Definition textNode.cxx:491
TextNode::is_card_as_margin
bool is_card_as_margin() const
If this is true, the card was set via a call to set_card_as_margin(), and the dimension of the card a...
Definition textNode.I:474
TextNode::get_card_actual
LVecBase4 get_card_actual() const
Returns the actual dimensions of the card around the text.
Definition textNode.I:503
TextNode::get_height
PN_stdfloat get_height() const
Returns the net height of the text in local 2-d coordinates.
Definition textNode.I:1100
TextNode::is_whitespace
bool is_whitespace(wchar_t character) const
Returns true if the indicated character represents whitespace in the font, or false if anything visib...
Definition textNode.cxx:242
TextNode::has_overflow
bool has_overflow() const
Returns true if the last text set on the text node exceeded the max_rows constraint,...
Definition textNode.I:77
TextNode::set_frame_line_width
set_frame_line_width
Specifies the thickness of the lines that will be used to draw the frame.
Definition textNode.h:229
TextNode::get_width
PN_stdfloat get_width() const
Returns the net width of the text in local 2-d coordinates.
Definition textNode.I:1110
TextNode::has_character
bool has_character(wchar_t character) const
Returns true if the named character exists in the font or can be synthesized by Panda,...
Definition textNode.cxx:218
TextNode::set_flatten_flags
set_flatten_flags
Sets the flatten flags.
Definition textNode.h:234
TextNode::cull_callback
virtual bool cull_callback(CullTraverser *trav, CullTraverserData &data)
This function will be called during the cull traversal to perform any additional operations that shou...
TextNode::set_coordinate_system
set_coordinate_system
Specifies the coordinate system in which the text will be generated.
Definition textNode.h:232
TextNode::force_update
void force_update()
Forces the TextNode to recompute itself now, even if it believes nothing has changed.
Definition textNode.I:1178
TextNode::set_small_caps
set_small_caps
Sets the small_caps flag.
Definition textNode.h:238
TextNode::get_right
PN_stdfloat get_right() const
Returns the rightmost extent of the text in local 2-d coordinates, unmodified by the set_transform() ...
Definition textNode.I:1068
TextNode::clear_frame
void clear_frame()
Specifies that a border will not be drawn around the text.
Definition textNode.I:277
TextNode::set_bin
set_bin
Names the GeomBin that the TextNode geometry should be assigned to.
Definition textNode.h:257
TextNode::get_upper_left_3d
LPoint3 get_upper_left_3d() const
Returns the upper-left extent of the text object, after it has been transformed into 3-d space by app...
Definition textNode.I:1121
TextNode::set_transform
set_transform
Sets an additional transform that is applied to the entire text paragraph.
Definition textNode.h:231
TextNode::get_lower_right_3d
LPoint3 get_lower_right_3d() const
Returns the lower-right extent of the text object, after it has been transformed into 3-d space by ap...
Definition textNode.I:1132
TextNode::clear_bin
clear_bin
Removes the effect of a previous call to set_bin().
Definition textNode.h:257
TextNode::set_glyph_shift
set_glyph_shift
Specifies a vertical amount to shift each letter of the text as it is placed.
Definition textNode.h:265
TextNode::get_wordwrapped_wtext
std::wstring get_wordwrapped_wtext() const
Returns a wstring that represents the contents of the text, as it has been formatted by wordwrap rule...
Definition textNode.I:1046
TextNode::get_card_decal
bool get_card_decal() const
Returns the card_decal flag.
Definition textNode.I:461
TextNode::set_font
set_font
Sets the font that will be used when making text.
Definition textNode.h:236
TextProperties::set_glyph_shift
set_glyph_shift
Specifies a vertical amount to shift each letter of the text as it is placed.
Definition textProperties.h:207
TextProperties::set_shadow
set_shadow
Specifies that the text should be drawn with a shadow, by creating a second copy of the text and offs...
Definition textProperties.h:198
TextProperties::set_align
set_align
Specifies the alignment of the text within its margins.
Definition textProperties.h:188
TextProperties::clear_bin
clear_bin
Removes the effect of a previous call to set_bin().
Definition textProperties.h:199
TextProperties::clear_font
clear_font
Restores the default font to the text.
Definition textProperties.h:178
TextProperties::clear_shadow
clear_shadow
Specifies that a shadow will not be drawn behind the text.
Definition textProperties.h:198
TextProperties::set_draw_order
set_draw_order
Sets the drawing order of text created by the TextNode.
Definition textProperties.h:201
TextProperties::set_wordwrap
set_wordwrap
Sets the text up to automatically wordwrap when it exceeds the indicated width.
Definition textProperties.h:190
TextProperties::clear_indent
clear_indent
Removes the indent setting from the text.
Definition textProperties.h:189
TextProperties::clear_shadow_color
clear_shadow_color
Removes the shadow color specification.
Definition textProperties.h:197
TextProperties::set_font
set_font
Sets the font that will be used when making text.
Definition textProperties.h:178
TextProperties::set_small_caps_scale
set_small_caps_scale
Sets the scale factor applied to lowercase letters from their uppercase equivalents,...
Definition textProperties.h:182
TextProperties::set_tab_width
set_tab_width
Sets the width of each tab stop, in screen units.
Definition textProperties.h:203
TextProperties::clear_text_color
clear_text_color
Removes the text color specification; the text will be colored whatever it was in the source font fil...
Definition textProperties.h:195
TextProperties::set_glyph_scale
set_glyph_scale
Specifies the factor by which to scale each letter of the text as it is placed, in addition to any sc...
Definition textProperties.h:205
TextProperties::clear_wordwrap
clear_wordwrap
Removes the wordwrap setting from the text.
Definition textProperties.h:190
TextProperties::set_indent
set_indent
Specifies the amount of extra space that is inserted before the first character of each line.
Definition textProperties.h:189
TextProperties::clear_align
clear_align
Restores the default alignment of the text.
Definition textProperties.h:188
TextProperties::set_text_color
set_text_color
Sets the color of the text.
Definition textProperties.h:195
TextProperties::set_small_caps
set_small_caps
Sets the small_caps flag.
Definition textProperties.h:180
TextProperties::set_slant
set_slant
Specifies the factor by which the text slants to the right.
Definition textProperties.h:183
TextProperties::set_bin
set_bin
Names the CullBin that the text geometry should be assigned to.
Definition textProperties.h:199
Texture
Represents a texture object, which is typically a single 2-d image but may also represent a 1-d or 3-...
Definition texture.h:72
Thread
A thread; that is, a lightweight process.
Definition thread.h:46
TransformState
Indicates a coordinate-system transform on vertices.
Definition transformState.h:54
TypeHandle
TypeHandle is the identifier used to differentiate C++ class types.
Definition typeHandle.h:81
config_text.h
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
geom.h
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
indent
std::ostream & indent(std::ostream &out, int indent_level)
A handy function for doing text formatting.
Definition indent.cxx:20
luse.h
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
mutexHolder.h
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
pandaNode.h
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
pandabase.h
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
pmutex.h
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
register_type
void register_type(TypeHandle &type_handle, const std::string &name)
This inline function is just a convenient way to call TypeRegistry::register_type(),...
Definition register_type.I:22
textAssembler.h
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
textEncoder.h
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
textFont.h
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
textNode.I
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
textProperties.h
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.