openscenegraph
osgUI/Widget
Go to the documentation of this file.
1/* -*-c++-*- OpenSceneGraph - Copyright (C) 1998-2014 Robert Osfield
2 *
3 * This library is open source and may be redistributed and/or modified under
4 * the terms of the OpenSceneGraph Public License (OSGPL) version 0.0 or
5 * (at your option) any later version. The full license is in LICENSE file
6 * included with this distribution, and on the openscenegraph.org website.
7 *
8 * This library is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * OpenSceneGraph Public License for more details.
12*/
13
14#ifndef OSGUI_WIDGET
15#define OSGUI_WIDGET
16
17#include <osg/Group>
18#include <osg/BoundingBox>
19#include <osg/ScriptEngine>
20#include <osgGA/Event>
21#include <osgGA/EventVisitor>
22
23#include <osgUI/Style>
24
25namespace osgUI
26{
27
29{
30public:
32 Widget(const Widget& widget, const osg::CopyOp& copyop=osg::CopyOp::SHALLOW_COPY);
34
35 virtual void traverse(osg::NodeVisitor& nv);
37
38 virtual bool handle(osgGA::EventVisitor* ev, osgGA::Event* event);
40
41 typedef std::vector<osgUtil::LineSegmentIntersector::Intersection> Intersections;
42 virtual bool computeIntersections(osgGA::EventVisitor* ev, osgGA::GUIEventAdapter* event, Intersections& intersections, osg::Node::NodeMask traversalMask = 0xffffffff) const;
44 virtual bool computeExtentsPositionInLocalCoordinates(osgGA::EventVisitor* ev, osgGA::GUIEventAdapter* event, osg::Vec3d& localPosition, bool withinExtents=true) const;
45
46 virtual void dirty();
47
48 typedef std::map<int, osg::ref_ptr<osg::Node> > GraphicsSubgraphMap;
49
51 void setGraphicsSubgraph(int orderNum, osg::Node* node) { _graphicsSubgraphMap[orderNum] = node; _graphicsInitialized = true; }
53 osg::Node* getGraphicsSubgraph(int orderNum) { GraphicsSubgraphMap::iterator itr = _graphicsSubgraphMap.find(orderNum); return (itr!=_graphicsSubgraphMap.end()) ? itr->second.get() : 0; }
55 const osg::Node* getGraphicsSubgraph(int orderNum) const { GraphicsSubgraphMap::const_iterator itr = _graphicsSubgraphMap.find(orderNum); return (itr!=_graphicsSubgraphMap.end()) ? itr->second.get() : 0; }
56
57 void setGraphicsSubgraphMap(const GraphicsSubgraphMap& gsm) { _graphicsSubgraphMap = gsm; _graphicsInitialized = true; }
58 GraphicsSubgraphMap& getGraphicsSubgraphMap() { return _graphicsSubgraphMap; }
59 const GraphicsSubgraphMap& getGraphicsSubgraphMap() const { return _graphicsSubgraphMap; }
60
65 void setWidgetStateSet(osg::StateSet* stateset) { _widgetStateSet = stateset; }
66 osg::StateSet* getWidgetStateSet() { return _widgetStateSet.get(); }
67 const osg::StateSet* getWidgetStateSet() const { return _widgetStateSet.get(); }
68 osg::StateSet* getOrCreateWidgetStateSet() { if (!_widgetStateSet) _widgetStateSet = new osg::StateSet; return _widgetStateSet.get(); }
69
70
72 virtual void createGraphics();
73
76
77
78 virtual void setExtents(const osg::BoundingBoxf& bb);
79 const osg::BoundingBoxf& getExtents() const { return _extents; }
80
81 void setStyle(Style* style) { _style = style; }
82 Style* getStyle() { return _style.get(); }
83 const Style* getStyle() const { return _style.get(); }
84
85 void setAlignmentSettings(AlignmentSettings* alignmentSettings) { _alignmentSettings = alignmentSettings; }
86 AlignmentSettings* getAlignmentSettings() { return _alignmentSettings.get(); }
87 const AlignmentSettings* getAlignmentSettings() const { return _alignmentSettings.get(); }
88
89 void setFrameSettings(FrameSettings* textSettings) { _frameSettings = textSettings; }
90 FrameSettings* getFrameSettings() { return _frameSettings.get(); }
91 const FrameSettings* getFrameSettings() const { return _frameSettings.get(); }
92
93 void setTextSettings(TextSettings* textSettings) { _textSettings = textSettings; }
94 TextSettings* getTextSettings() { return _textSettings.get(); }
95 const TextSettings* getTextSettings() const { return _textSettings.get(); }
96
98 virtual void setAutoFillBackground(bool enabled) { _autoFillBackground = enabled; }
100 virtual bool getAutoFillBackground() const { return _autoFillBackground; }
101
103 virtual void setVisible(bool visible) { _visible = visible; }
105 virtual bool getVisible() const { return _visible; }
106
108 virtual void setEnabled(bool enabled) { _enabled = enabled; }
110 virtual bool getEnabled() const { return _enabled; }
111
113 {
116 EVENT_DRIVEN_FOCUS_DISABLED
117 };
118
119 void setFocusBehaviour(FocusBehaviour behaviour) { _focusBehaviour = behaviour; }
120 FocusBehaviour getFocusBehaviour() const { return _focusBehaviour; }
121
123 virtual void updateFocus(osg::NodeVisitor& nv);
124
126 virtual void setHasEventFocus(bool focus);
127
129 virtual bool getHasEventFocus() const;
130
131
133 bool runCallbacks(const std::string& name, osg::Parameters& inputParameters, osg::Parameters& outputParameters) { return osg::runNamedCallbackObjects(this, name, inputParameters, outputParameters); }
134
136 bool runCallbacks(const std::string& name) { osg::Parameters inputParameters, outputParameters; return osg::runNamedCallbackObjects(this, name, inputParameters, outputParameters); }
137
138
141
143 virtual void enter();
144 virtual void enterImplementation();
145
147 virtual void leave();
148 virtual void leaveImplementation();
149
151 virtual void resizeGLObjectBuffers(unsigned int maxSize);
153 virtual void releaseGLObjects(osg::State* = 0) const;
154
155protected:
156 virtual ~Widget() {}
157
161
164
166
168
173
176};
177
178}
179
180#endif
Definition EventVisitor:42
Definition Event:27
Definition GUIEventAdapter:82
Definition AlignmentSettings:26
Definition FrameSettings:25
Definition osgUI/Style:32
Definition TextSettings:26
Definition osgUI/Widget:29
virtual void dirty()
const osg::StateSet * getWidgetStateSet() const
Definition osgUI/Widget:67
std::vector< osgUtil::LineSegmentIntersector::Intersection > Intersections
Definition osgUI/Widget:41
virtual void traverse(osg::NodeVisitor &nv)
osg::ref_ptr< AlignmentSettings > _alignmentSettings
Definition osgUI/Widget:169
virtual void releaseGLObjects(osg::State *=0) const
virtual void leaveImplementation()
void setWidgetStateSet(osg::StateSet *stateset)
Definition osgUI/Widget:65
bool _hasEventFocus
Definition osgUI/Widget:159
virtual osg::BoundingSphere computeBound() const
virtual void traverseImplementation(osg::NodeVisitor &nv)
void setFrameSettings(FrameSettings *textSettings)
Definition osgUI/Widget:89
virtual void enter()
virtual void setVisible(bool visible)
Definition osgUI/Widget:103
const osg::BoundingBoxf & getExtents() const
Definition osgUI/Widget:79
osg::ref_ptr< Style > _style
Definition osgUI/Widget:167
const AlignmentSettings * getAlignmentSettings() const
Definition osgUI/Widget:87
virtual void setAutoFillBackground(bool enabled)
Definition osgUI/Widget:98
FrameSettings * getFrameSettings()
Definition osgUI/Widget:90
std::map< int, osg::ref_ptr< osg::Node > > GraphicsSubgraphMap
Definition osgUI/Widget:48
virtual void setExtents(const osg::BoundingBoxf &bb)
osg::ref_ptr< TextSettings > _textSettings
Definition osgUI/Widget:171
bool _visible
Definition osgUI/Widget:174
virtual bool getVisible() const
Definition osgUI/Widget:105
void setStyle(Style *style)
Definition osgUI/Widget:81
const osg::Node * getGraphicsSubgraph(int orderNum) const
Definition osgUI/Widget:55
void setAlignmentSettings(AlignmentSettings *alignmentSettings)
Definition osgUI/Widget:85
osg::StateSet * getOrCreateWidgetStateSet()
Definition osgUI/Widget:68
virtual bool handleImplementation(osgGA::EventVisitor *ev, osgGA::Event *event)
const FrameSettings * getFrameSettings() const
Definition osgUI/Widget:91
bool runCallbacks(const std::string &name, osg::Parameters &inputParameters, osg::Parameters &outputParameters)
Definition osgUI/Widget:133
osg::BoundingBoxf _extents
Definition osgUI/Widget:165
virtual void setEnabled(bool enabled)
Definition osgUI/Widget:108
Widget(const Widget &widget, const osg::CopyOp &copyop=osg::CopyOp::SHALLOW_COPY)
FocusBehaviour getFocusBehaviour() const
Definition osgUI/Widget:120
virtual bool getEnabled() const
Definition osgUI/Widget:110
virtual bool computePositionInLocalCoordinates(osgGA::EventVisitor *ev, osgGA::GUIEventAdapter *event, osg::Vec3d &localPosition) const
Style * getStyle()
Definition osgUI/Widget:82
void setFocusBehaviour(FocusBehaviour behaviour)
Definition osgUI/Widget:119
bool _autoFillBackground
Definition osgUI/Widget:172
GraphicsSubgraphMap & getGraphicsSubgraphMap()
Definition osgUI/Widget:58
virtual void leave()
FocusBehaviour
Definition osgUI/Widget:113
@ FOCUS_FOLLOWS_POINTER
Definition osgUI/Widget:115
@ CLICK_TO_FOCUS
Definition osgUI/Widget:114
virtual void setHasEventFocus(bool focus)
const Style * getStyle() const
Definition osgUI/Widget:83
void setGraphicsSubgraphMap(const GraphicsSubgraphMap &gsm)
Definition osgUI/Widget:57
bool _graphicsInitialized
Definition osgUI/Widget:160
virtual bool getAutoFillBackground() const
Definition osgUI/Widget:100
virtual bool handle(osgGA::EventVisitor *ev, osgGA::Event *event)
virtual void updateFocus(osg::NodeVisitor &nv)
osg::Node * getGraphicsSubgraph(int orderNum)
Definition osgUI/Widget:53
bool _enabled
Definition osgUI/Widget:175
osg::ref_ptr< osg::StateSet > _widgetStateSet
Definition osgUI/Widget:163
FocusBehaviour _focusBehaviour
Definition osgUI/Widget:158
const GraphicsSubgraphMap & getGraphicsSubgraphMap() const
Definition osgUI/Widget:59
TextSettings * getTextSettings()
Definition osgUI/Widget:94
virtual void enterImplementation()
bool runCallbacks(const std::string &name)
Definition osgUI/Widget:136
virtual bool getHasEventFocus() const
GraphicsSubgraphMap _graphicsSubgraphMap
Definition osgUI/Widget:162
virtual void createGraphicsImplementation()
virtual void createGraphics()
virtual bool computeIntersections(osgGA::EventVisitor *ev, osgGA::GUIEventAdapter *event, Intersections &intersections, osg::Node::NodeMask traversalMask=0xffffffff) const
virtual ~Widget()
Definition osgUI/Widget:156
void setTextSettings(TextSettings *textSettings)
Definition osgUI/Widget:93
AlignmentSettings * getAlignmentSettings()
Definition osgUI/Widget:86
META_Node(osgUI, Widget)
virtual bool computeExtentsPositionInLocalCoordinates(osgGA::EventVisitor *ev, osgGA::GUIEventAdapter *event, osg::Vec3d &localPosition, bool withinExtents=true) const
osg::ref_ptr< FrameSettings > _frameSettings
Definition osgUI/Widget:170
virtual void resizeGLObjectBuffers(unsigned int maxSize)
osg::StateSet * getWidgetStateSet()
Definition osgUI/Widget:66
const TextSettings * getTextSettings() const
Definition osgUI/Widget:95
void setGraphicsSubgraph(int orderNum, osg::Node *node)
Definition osgUI/Widget:51
Definition BoundingBox:34
Definition BoundingSphere:35
Definition CopyOp:41
@ SHALLOW_COPY
Definition CopyOp:47
Definition Group:29
Definition NodeVisitor:82
Definition Node:72
unsigned int NodeMask
Definition Node:363
Definition StateSet:46
Definition State:80
Definition Vec3d:30
Definition ref_ptr:32
Definition AlignmentSettings:23
bool runNamedCallbackObjects(osg::Object *object, const std::string &name, osg::Parameters &inputParameters, osg::Parameters &outputParameters)
Definition Callback:187
std::vector< osg::ref_ptr< osg::Object > > Parameters
Definition Callback:130
#define OSGUI_EXPORT
Definition osgUI/Export:40