#include "CanvasElement.hxx"
#include <simgear/canvas/canvas_fwd.hxx>
-#include <simgear/math/SGRect.hxx>
+#include <simgear/misc/CSSBorder.hxx>
#include <osg/Texture2D>
namespace simgear
*/
Image( const CanvasWeakPtr& canvas,
const SGPropertyNode_ptr& node,
- const Style& parent_style,
+ const Style& parent_style = Style(),
Element* parent = 0 );
virtual ~Image();
enum ImageAttributes
{
SRC_RECT = LAST_ATTRIBUTE << 1, // Source image rectangle
- DEST_SIZE = SRC_RECT << 1 // Element size
- };
-
- union CSSOffsets
- {
- float val[4];
- struct { float t, r, b, l; };
- };
-
- union CSSOffsetsTypes
- {
- bool rel[4];
- struct { bool t_rel, r_rel, b_rel, l_rel; };
- };
-
- struct CSSBorder
- {
- CSSBorder():
- valid(false)
- {}
-
- CSSOffsets getRelOffsets(const SGRect<int>& dim) const;
- CSSOffsets getAbsOffsets(const SGRect<int>& dim) const;
-
- CSSOffsets offsets;
- CSSOffsetsTypes types;
- std::string keyword;
- bool valid;
+ DEST_SIZE = SRC_RECT << 1, // Element size
+ SRC_CANVAS = DEST_SIZE << 1
};
virtual void childChanged(SGPropertyNode * child);
void setQuad(size_t index, const SGVec2f& tl, const SGVec2f& br);
void setQuadUV(size_t index, const SGVec2f& tl, const SGVec2f& br);
- CSSBorder parseSideOffsets(const std::string& str) const;
-
osg::ref_ptr<osg::Texture2D> _texture;
// TODO optionally forward events to canvas
CanvasWeakPtr _src_canvas;