Helper functions for SGRect and canvas::Element

This commit is contained in:
Thomas Geymayer
2013-06-06 22:28:00 +02:00
parent 7fe16d99be
commit 8896a59dff
5 changed files with 52 additions and 2 deletions

View File

@@ -244,6 +244,11 @@ namespace canvas
return _transform;
}
osg::ref_ptr<osg::MatrixTransform const> Element::getMatrixTransform() const
{
return _transform;
}
//----------------------------------------------------------------------------
void Element::childAdded(SGPropertyNode* parent, SGPropertyNode* child)
{

View File

@@ -103,6 +103,7 @@ namespace canvas
bool isVisible() const;
osg::ref_ptr<osg::MatrixTransform> getMatrixTransform();
osg::ref_ptr<osg::MatrixTransform const> getMatrixTransform() const;
virtual void childAdded( SGPropertyNode * parent,
SGPropertyNode * child );

View File

@@ -129,7 +129,7 @@ namespace canvas
{
addStyle("fill", "color", &Image::setFill);
addStyle("slice", "", &Image::setSlice);
addStyle("slice-width", "numeric", &Image::setSliceWidth);
addStyle("slice-width", "", &Image::setSliceWidth);
addStyle("outset", "", &Image::setOutset);
}

View File

@@ -43,7 +43,7 @@ namespace canvas
*/
Image( const CanvasWeakPtr& canvas,
const SGPropertyNode_ptr& node,
const Style& parent_style,
const Style& parent_style = Style(),
Element* parent = 0 );
virtual ~Image();

View File

@@ -109,6 +109,26 @@ class SGRect
void setTop(T t) { _min.y() = t; }
void setBottom(T b) { _max.y() = b; }
/**
* Move rect by vector
*/
SGRect& operator+=(const SGVec2<T>& offset)
{
_min += offset;
_max += offset;
return *this;
}
/**
* Move rect by vector in inverse direction
*/
SGRect& operator-=(const SGVec2<T>& offset)
{
_min -= offset;
_max -= offset;
return *this;
}
bool contains(T x, T y) const
{
return _min.x() <= x && x <= _max.x()
@@ -126,6 +146,30 @@ class SGRect
_max;
};
template<typename T>
inline SGRect<T> operator+(SGRect<T> rect, const SGVec2<T>& offset)
{
return rect += offset;
}
template<typename T>
inline SGRect<T> operator+(const SGVec2<T>& offset, SGRect<T> rect)
{
return rect += offset;
}
template<typename T>
inline SGRect<T> operator-(SGRect<T> rect, const SGVec2<T>& offset)
{
return rect -= offset;
}
template<typename T>
inline SGRect<T> operator-(const SGVec2<T>& offset, SGRect<T> rect)
{
return rect -= offset;
}
template<typename char_type, typename traits_type, typename T>
inline
std::basic_ostream<char_type, traits_type>&