OsgTextRepresentation.h
Go to the documentation of this file.
// This file is a part of the OpenSurgSim project.
// Copyright 2013, SimQuest Solutions Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
#ifndef SURGSIM_GRAPHICS_OSGTEXTREPRESENTATION_H
#define SURGSIM_GRAPHICS_OSGTEXTREPRESENTATION_H
#include <string>
#include "SurgSim/Graphics/OsgRepresentation.h"
#include "SurgSim/Graphics/TextRepresentation.h"
#include "SurgSim/DataStructures/OptionalValue.h"
#include <osg/Vec3>
#include <boost/thread/mutex.hpp>
#if defined(_MSC_VER)
#pragma warning(push)
#pragma warning(disable:4250)
#endif
namespace osg
{
class Geode;
}
namespace osgText
{
class Text;
}
namespace SurgSim
{
namespace Framework
{
class Asset;
}
namespace Graphics
{
class OsgFont;
SURGSIM_STATIC_REGISTRATION(OsgTextRepresentation);
class OsgTextRepresentation : public OsgRepresentation, public TextRepresentation
{
public:
explicit OsgTextRepresentation(const std::string& name);
~OsgTextRepresentation();
friend class OsgTextRepresentationTests_MaximumWidth_Test;
SURGSIM_CLASSNAME(SurgSim::Graphics::OsgTextRepresentation);
void setLocation(double x, double y) override;
void getLocation(double* x, double* y) const override;
void setMaximumWidth(double width) override;
double getMaximumWidth() override;
void setText(const std::string& text) override;
std::string getText() const override;
void loadFont(const std::string& fileName) override;
void setFont(std::shared_ptr<SurgSim::Framework::Asset> font) override;
std::shared_ptr<Font> getFont() const override;
void setColor(SurgSim::Math::Vector4d color) override;
SurgSim::Math::Vector4d getColor() const override;
void setFontSize(double size) override;
double getFontSize() const override;
void setUseScreenSpace(bool value) override;
bool isUsingScreenSpace() const override;
enum Anchor
{
ANCHOR_TOP_LEFT,
ANCHOR_CENTER
};
void setAnchor(int anchor);
int getAnchor() const;
void setDrawBackground(bool value) override;
bool isDrawingBackground() const override;
void setBackgroundColor(Math::Vector4d color) override;
Math::Vector4d getBackgroundColor() override;
void setBackgroundMargin(double margin) override;
double getBackgroundMargin() const override;
protected:
void doUpdate(double dt) override;
bool doInitialize() override;
void setOptionalMaximumWidth(SurgSim::DataStructures::OptionalValue<double> maximum) override;
SurgSim::DataStructures::OptionalValue<double> getOptionalMaximumWidth() override;
private:
osg::ref_ptr<osg::Geode> m_geode;
osg::ref_ptr<osgText::Text> m_textNode;
std::string m_text;
std::shared_ptr<OsgFont> m_font;
SurgSim::DataStructures::OptionalValue<double> m_optionalWidth;
double m_characterSize;
boost::mutex m_parameterMutex;
bool m_needUpdate;
int m_anchor;
SurgSim::Math::Vector3d m_offset;
};
}; // Graphics
}; // SurgSim
#if defined(_MSC_VER)
#pragma warning(pop)
#endif
#endif
SurgSim::Graphics::OsgTextRepresentation::m_textNode
osg::ref_ptr< osgText::Text > m_textNode
node for text display
Definition: OsgTextRepresentation.h:119
SurgSim::Graphics::OsgTextRepresentation::m_offset
SurgSim::Math::Vector3d m_offset
Definition: OsgTextRepresentation.h:131
SurgSim
Definition: CompoundShapeToGraphics.cpp:29
SurgSim::Graphics::OsgTextRepresentation::m_text
std::string m_text
Text set by the user.
Definition: OsgTextRepresentation.h:121
SurgSim::Graphics::OsgTextRepresentation::m_optionalWidth
SurgSim::DataStructures::OptionalValue< double > m_optionalWidth
information about the maximum width
Definition: OsgTextRepresentation.h:123
SurgSim::DataStructures::OptionalValue< double >
TextRepresentation.h
SurgSim::Graphics::OsgTextRepresentation::Anchor
Anchor
Definition: OsgTextRepresentation.h:92
SurgSim::Graphics::OsgTextRepresentation::m_font
std::shared_ptr< OsgFont > m_font
font used for rendering
Definition: OsgTextRepresentation.h:122
SURGSIM_CLASSNAME
#define SURGSIM_CLASSNAME(ClassName)
Declare the class name of a class with the appropriate function header, do not use quotes...
Definition: Macros.h:21
SurgSim::Graphics::OsgTextRepresentation::m_geode
osg::ref_ptr< osg::Geode > m_geode
node used to render text
Definition: OsgTextRepresentation.h:118
SurgSim::Graphics::OsgTextRepresentation::m_characterSize
double m_characterSize
the font height
Definition: OsgTextRepresentation.h:125
SurgSim::Graphics::TextRepresentation
A text to be displayed on the screen in screen space coordinates, use setPose() to set the position b...
Definition: TextRepresentation.h:39
SurgSim::Graphics::OsgTextRepresentation::ANCHOR_TOP_LEFT
Definition: OsgTextRepresentation.h:94
SurgSim::Graphics::OsgTextRepresentation::m_anchor
int m_anchor
Definition: OsgTextRepresentation.h:129
osgText
Definition: OsgFont.h:23
SurgSim::Graphics::OsgTextRepresentation::m_parameterMutex
boost::mutex m_parameterMutex
protect changes of parameters
Definition: OsgTextRepresentation.h:127
osg
Definition: OculusView.h:25
OptionalValue.h
OsgRepresentation.h
SurgSim::Math::Vector4d
Eigen::Matrix< double, 4, 1 > Vector4d
A 4D vector of doubles.
Definition: Vector.h:61
SurgSim::Graphics::OsgRepresentation
Base OSG implementation of a graphics representation.
Definition: OsgRepresentation.h:55
SurgSim::Math::Vector3d
Eigen::Matrix< double, 3, 1 > Vector3d
A 3D vector of doubles.
Definition: Vector.h:57
SurgSim::Graphics::OsgTextRepresentation::m_needUpdate
bool m_needUpdate
indicate whether parameters need to be updated
Definition: OsgTextRepresentation.h:128
SurgSim::Graphics::OsgTextRepresentation
Osg implementation of the TextRepresentation, to be used with OsgFont assets.
Definition: OsgTextRepresentation.h:56