16 #ifndef OSGWIDGET_WINDOW
17 #define OSGWIDGET_WINDOW
19 #include <osg/Scissor>
20 #include <osg/MatrixTransform>
22 #include <osg/ClipNode>
23 #include <osgWidget/Types>
24 #include <osgWidget/Util>
25 #include <osgWidget/Widget>
46 typedef std::list<osg::observer_ptr<Window> >
WindowList;
69 virtual void parented (
Window*);
70 virtual void unparented (
Window*);
73 virtual void positioned ();
76 void updateSizeFromWindow ();
125 Window (
const std::string& =
"");
132 virtual void update ();
135 virtual bool addWidget (
Widget*);
136 virtual bool insertWidget (
Widget*,
unsigned int);
137 virtual bool removeWidget (
Widget*);
143 unsigned int addChildAndGetIndex (
osg::Node*);
145 bool isVisible ()
const;
146 bool isXYWithinVisible (
float,
float)
const;
147 void setVisibleArea (
int = 0,
int = 0,
int = 0,
int = 0);
148 void addVisibleArea (
int = 0,
int = 0,
int = 0,
int = 0);
149 bool setFocused (
const Widget*);
150 bool setFocused (
const std::string&);
152 bool setFirstFocusable ();
153 bool setNextFocusable ();
155 bool getEmbeddedList (WindowList&)
const;
156 void getParentList (WindowList&)
const;
158 XYCoord localXY (
double,
double)
const;
159 XYCoord getAbsoluteOrigin ()
const;
162 EmbeddedWindow* embed(
163 const std::string& =
"",
169 return _focused.get();
173 return _focused.get();
177 return _setVisible(
true);
181 return _setVisible(
false);
187 return isXYWithinVisible(xy.
x(), xy.
y());
223 return _getTopmostParent();
227 return _getTopmostParent();
247 return _width.current;
251 return _height.current;
255 return _width.minimum;
259 return _height.minimum;
275 return XYCoord(_width.current, _height.current);
279 return XYCoord(_width.minimum, _height.minimum);
299 return Point(_x, _y, _z);
337 setPosition(p.x(), p.y(), p.z());
346 setOrigin(xy.
x(), xy.
y());
394 _s += s / (_scaleDenom != 0.0f ? _scaleDenom : 1.0f);
422 typedef std::less<point_type>
Less;
424 typedef std::plus<point_type>
Plus;
489 unsigned int c = begin;
491 ConstIterator e = end > 0 ? _objects.begin() + end : _objects.end() + end;
508 if(i->valid()) v = (i->get()->*
get)();
512 if(T()(v, val)) val = v;
516 else val = T()(v, val);
523 if((c + add) < _objects.size()) i += add;
531 void _setWidthAndHeightUnknownSizeError (
const std::string&,
point_type);
532 void _setWidthAndHeightNotPAError (
const std::string&,
point_type);
533 void _setWidthAndHeight ();
534 void _removeFromGeode (
Widget*);
536 Widget* _getBackground()
const;
537 Window* _getTopmostParent()
const;
553 return _forEachAssignOrApply<T>(
get, begin, end, add,
true);
567 return _forEachAssignOrApply<T>(
get, begin, end, add,
false);
571 return dynamic_cast<osg::Geode*
>(getChild(0));
575 return dynamic_cast<const osg::Geode*
>(getChild(0));
579 return _getBackground();
583 return _getBackground();
592 bool _setWidget (
Widget*,
int = -1);
593 bool _setVisible (
bool);
594 void _setFocused (
Widget*);
595 void _setStyled (
Widget*);
596 void _setParented (
Widget*,
bool=
false);
597 void _setManaged (
Widget*,
bool=
false);
603 point_type _getMinWidgetWidth (
int = 0,
int = 0,
int = 1)
const;
604 point_type _getMinWidgetHeight (
int = 0,
int = 0,
int = 1)
const;
605 point_type _getMaxWidgetWidth (
int = 0,
int = 0,
int = 1)
const;
606 point_type _getMaxWidgetHeight (
int = 0,
int = 0,
int = 1)
const;
610 point_type _getMinWidgetMinWidth (
int = 0,
int = 0,
int = 1)
const;
611 point_type _getMinWidgetMinHeight (
int = 0,
int = 0,
int = 1)
const;
612 point_type _getMaxWidgetMinWidth (
int = 0,
int = 0,
int = 1)
const;
613 point_type _getMaxWidgetMinHeight (
int = 0,
int = 0,
int = 1)
const;
617 point_type _getMinWidgetWidthTotal (
int = 0,
int = 0,
int = 1)
const;
618 point_type _getMinWidgetHeightTotal (
int = 0,
int = 0,
int = 1)
const;
619 point_type _getMaxWidgetWidthTotal (
int = 0,
int = 0,
int = 1)
const;
620 point_type _getMaxWidgetHeightTotal (
int = 0,
int = 0,
int = 1)
const;
624 point_type _getMinWidgetMinWidthTotal (
int = 0,
int = 0,
int = 1)
const;
625 point_type _getMinWidgetMinHeightTotal (
int = 0,
int = 0,
int = 1)
const;
626 point_type _getMaxWidgetMinWidthTotal (
int = 0,
int = 0,
int = 1)
const;
627 point_type _getMaxWidgetMinHeightTotal (
int = 0,
int = 0,
int = 1)
const;
631 point_type _getMinWidgetPadHorizontal (
int = 0,
int = 0,
int = 1)
const;
632 point_type _getMinWidgetPadVertical (
int = 0,
int = 0,
int = 1)
const;
633 point_type _getMaxWidgetPadHorizontal (
int = 0,
int = 0,
int = 1)
const;
634 point_type _getMaxWidgetPadVertical (
int = 0,
int = 0,
int = 1)
const;
636 point_type _getNumFill(
int = 0,
int = 0,
int = 1)
const;
653 virtual Sizes _getWidthImplementation ()
const;
654 virtual Sizes _getHeightImplementation ()
const;
#define META_Object(library, name)