sotext2(3)
NAME
SoText2
SYNOPSIS
#include <Inventor/nodes/SoText2.h> Inherits SoShape.
Detailed Description
The SoText2 class is a node type for visualizing 2D text aligned with
the camera plane.
SoText2 text is not scaled according to the distance from the camera,
and is not influenced by rotation or scaling as 3D primitives are. If
these are properties that you want the text to have, you should instead
use an SoText3 or SoAsciiText node.
Note that even though the size of the 2D text is not influenced by the
distance from the camera, the text is still subject to the usual rules
with regard to the depthbuffer, so it will be obscured by graphics
laying in front of it.
The text will be positioned according to the current transformation.
The x origin of the text is the first pixel of the leftmost character
of the text. The y origin of the text is the baseline of the first line
of text (the baseline being the imaginary line on which all upper case
characters are standing).
The size of the fonts on screen is decided from the SoFont::size field
of a preceding SoFont-node in the scene graph, which specifies the size
in pixel dimensions. This value sets the approximate vertical dimension
of the letters. The default value if no SoFont-nodes are used, is 10.
One important issue about rendering performance: since the positioning
and rendering of an SoText2 node depends on the current viewport and
camera, having SoText2 nodes in the scene graph will lead to a cache
dependency on the previously encountered SoCamera-node. This can have
severe influence on the rendering performance, since if the camera is
above the SoText2's nearest parent SoSeparator, the SoSeparator will
not be able to cache the geometry under it.
(Even worse rendering performance will be forced if the
SoSeparator::renderCaching flag is explicitly set to ON, as the
SoSeparator node will then continuously generate and destruct the same
cache as the camera moves.)
SoText2 nodes are therefore best positioned under their own SoSeparator
node, outside areas in the scene graph that otherwise contains static
geometry.
Also note that SoText2 nodes cache the ids and positions of each glyph
bitmap used to render string. This means that USE of a DEF'ed SoText2
node, with a different font, will be noticeably slower than using two
separate SoText2 nodes, one for each font, since it will have to
recalculate glyph bitmap ids and positions for each call to GLrender().
SoScale nodes can not be used to influence the dimensions of the
rendering output of SoText2 nodes.
- FILE FORMAT/DEFAULTS:
- Text2 {
string ''
spacing 1
justification LEFT - }
- See also:
- SoFont, SoFontStyle, SoText3, SoAsciiText
- Public Types
- enum Justification { LEFT = 1, RIGHT, CENTER }
- Public Member Functions
- virtual SoType getTypeId (void) const
SoText2 (void)
virtual void GLRender (SoGLRenderAction *action) virtual void rayPick (SoRayPickAction *action) virtual void getPrimitiveCount (SoGetPrimitiveCountAction *action) - Static Public Member Functions
- static SoType getClassTypeId (void) static void initClass (void)
- Public Attributes
- SoMFString string
SoSFFloat spacing
SoSFEnum justification - Protected Member Functions
- virtual const SoFieldData * getFieldData (void) const
virtual ~SoText2 ()
virtual void generatePrimitives (SoAction *action) virtual void computeBBox (SoAction *action, SbBox3f &box, SbVec3f¢er) - Static Protected Member Functions
- static const SoFieldData ** getFieldDataPtr (void)
- Friends
- class SoText2P
Member Enumeration Documentation
- enum SoText2::Justification
- Enum contains the various options for how the horizontal text layout
text should be done. Valid values are LEFT, RIGHT and CENTER.
Constructor & Destructor Documentation
- SoText2::SoText2 (void)
- Constructor.
- SoText2::~SoText2 () [protected, virtual]
- Destructor.
Member Function Documentation
- SoType SoText2::getClassTypeId (void) [static]
- This static method returns the SoType object associated with objects of this class.
- Reimplemented from SoShape.
- SoType SoText2::getTypeId (void) const [virtual]
- Returns the type identification of an object derived from a class
inheriting SoBase. This is used for run-time type checking and 'downward' casting. - Usage example:
void foo(SoNode * node)
{if (node->getTypeId() == SoFile::getClassTypeId()) {SoFile * filenode = (SoFile *)node; // safe downward cast, knows the type}
else if (node->getTypeId().isOfType(SoGroup::getClassTypeId())) {SoGroup * group = (SoGroup *)node; // safe downward cast, knows the type}} - For application programmers wanting to extend the library with new
nodes, engines, nodekits, draggers or others: this method needs to be
overridden in all subclasses. This is typically done as part of setting up the full type system for extension classes, which is usually
accomplished by using the pre-defined macros available through for
instance Inventor/nodes/SoSubNode.h (SO_NODE_INIT_CLASS and
SO_NODE_CONSTRUCTOR for node classes), Inventor/engines/SoSubEngine.h (for engine classes) and so on. - For more information on writing Coin extensions, see the class
documentation of the toplevel superclasses for the various class
groups. - Reimplemented from SoShape.
- const SoFieldData ** SoText2::getFieldDataPtr (void) [static, protected]
- This API member is considered internal to the library, as it is not likely to be of interest to the application programmer.
- Reimplemented from SoShape.
- const SoFieldData * SoText2::getFieldData (void) const [protected, virtual]
- Returns a pointer to the class-wide field data storage object for this instance. If no fields are present, returns NULL.
- Reimplemented from SoShape.
- void SoText2::initClass (void) [static]
- Sets up initialization for data common to all instances of this class, like submitting necessary information to the Coin type system.
- Reimplemented from SoShape.
- References SoAction::getState(), and SoShape::shouldGLRender().
- Referenced by SoNode::initClasses().
- void SoText2::GLRender (SoGLRenderAction * action) [virtual]
- Action method for the SoGLRenderAction.
- This is called during rendering traversals. Nodes influencing the
rendering state in any way or who wants to throw geometry primitives at OpenGL overrides this method. - Reimplemented from SoShape.
- void SoText2::rayPick (SoRayPickAction * action) [virtual]
- Calculates picked point based on primitives generated by subclasses.
- Reimplemented from SoShape.
- void SoText2::getPrimitiveCount (SoGetPrimitiveCountAction * action)
- [virtual]
Action method for the SoGetPrimitiveCountAction. - Calculates the number of triangle, line segment and point primitives
for the node and adds these to the counters of the action. - Nodes influencing how geometry nodes calculates their primitive count
also overrides this method to change the relevant state variables. - Reimplemented from SoShape.
- void SoText2::generatePrimitives (SoAction * action) [protected, virtual]
- The method implements action behavior for shape nodes for
SoCallbackAction. It is invoked from SoShape::callback(). (Subclasses should not override SoNode::callback().) - The subclass implementations uses the convenience methods
SoShape::beginShape(), SoShape::shapeVertex(), and SoShape::endShape(), with SoDetail instances, to pass the primitives making up the shape back to the caller. - Implements SoShape.
- void SoText2::computeBBox (SoAction * action, SbBox3f & box, SbVec3f &
- center) [protected, virtual] Implemented by SoShape subclasses to let the SoShape superclass know the exact size and weighted center point of the shape's bounding box.
- The bounding box and center point should be calculated and returned in the local coordinate system.
- The method implements action behavior for shape nodes for
SoGetBoundingBoxAction. It is invoked from SoShape::getBoundingBox(). (Subclasses should not override SoNode::getBoundingBox().) - The box parameter sent in is guaranteed to be an empty box, while center is undefined upon function entry.
- Implements SoShape.
Member Data Documentation
- SoMFString SoText2::string
- The set of strings to render. Each string in the multiple value field
will be rendered on it's own line. - The default value of the field is a single empty string.
- SoSFFloat SoText2::spacing
- Spacing between each consecutive vertical line. Default value is 1.0,
which means that the space between the uppermost line of each rendered string will equal the vertical size of the highest character in the
bitmap alphabet. - SoSFEnum SoText2::justification
- Decides how the horizontal layout of the text strings is done.
Author
- Generated automatically by Doxygen for Coin from the source code.