1
//---------------------------------------------------------------------------
3
// Project: OpenWalnut ( http://www.openwalnut.org )
5
// Copyright 2009 OpenWalnut Community, BSV@Uni-Leipzig and CNCF@MPI-CBS
6
// For more information see http://www.openwalnut.org/copying
8
// This file is part of OpenWalnut.
10
// OpenWalnut is free software: you can redistribute it and/or modify
11
// it under the terms of the GNU Lesser General Public License as published by
12
// the Free Software Foundation, either version 3 of the License, or
13
// (at your option) any later version.
15
// OpenWalnut is distributed in the hope that it will be useful,
16
// but WITHOUT ANY WARRANTY; without even the implied warranty of
17
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18
// GNU Lesser General Public License for more details.
20
// You should have received a copy of the GNU Lesser General Public License
21
// along with OpenWalnut. If not, see <http://www.gnu.org/licenses/>.
23
//---------------------------------------------------------------------------
25
#ifndef WMCOORDINATEHUD_H
26
#define WMCOORDINATEHUD_H
32
#include "core/common/WItemSelection.h"
33
#include "core/common/WItemSelector.h"
35
#include "core/graphicsEngine/WGEManagedGroupNode.h"
36
#include "core/graphicsEngine/WGEZoomTrackballManipulator.h"
37
#include "core/graphicsEngine/shaders/WGEShader.h"
39
#include "core/kernel/WModule.h"
40
#include "core/kernel/WModuleInputData.h"
41
#include "core/kernel/WModuleOutputData.h"
44
* This module shows a coordinatesystem as HUD.
45
* The attenuation can be customized to users needs.
47
class WMCoordinateHUD: public WModule, public osg::Referenced
52
* Default constructor.
59
virtual ~WMCoordinateHUD();
62
* Gives back the name of this module.
63
* \return the module's name.
65
virtual const std::string getName() const;
68
* Gives back a description of this module.
69
* \return description to module.
71
virtual const std::string getDescription() const;
74
* Due to the prototype design pattern used to build modules, this method returns a new instance of this method. NOTE: it
75
* should never be initialized or modified in some other way. A simple new instance is required.
77
* \return the prototype used to create every module in OpenWalnut.
79
virtual boost::shared_ptr< WModule > factory() const;
82
* Get the icon for this module in XPM format.
85
virtual const char** getXPMIcon() const;
90
* Entry point after loading the module. Runs in separate thread.
92
virtual void moduleMain();
95
* Initialize the connectors this module is using.
97
virtual void connectors();
100
* Initialize the properties for this module.
102
virtual void properties();
105
* Build the geode for colorfull coordinate axis
107
virtual void buildColorAxis();
110
* build the geode for black & white coordinate axis
112
virtual void buildBWAxis();
115
* build the geode for black & white coordinate cube
117
virtual void buildColorCube();
120
* build the geometry of the cube
122
* \return the cube vertices
124
virtual osg::Vec3Array* buildCubeVertices();
127
* build the geometry of the axis
129
* \return the axis vertices
131
virtual osg::Vec3Array* buildAxisVertices();
134
* create caption for medical plane
136
virtual void buildCaption();
139
* The root node used for this modules graphics.
141
osg::ref_ptr< WGEManagedGroupNode > m_rootNode;
144
* The geometry rendered by this module.
146
osg::ref_ptr< osg::Geode > m_geode;
149
* The caption rendered by this module.
151
osg::ref_ptr< osg::Geode > m_txtGeode;
159
osg::ref_ptr< WGEShader > m_shader;
162
* A condition used to notify about changes in several properties.
164
boost::shared_ptr< WCondition > m_propCondition;
167
* A property allowing the user to select ONE item of some list
169
WPropSelection m_aSingleSelection;
172
* A list of items that can be selected using m_aSingleSelection or m_aMultiSelection.
174
boost::shared_ptr< WItemSelection > m_possibleSelections;
177
#endif // WMCOORDINATEHUD_H