diff --git a/ewol/DrawProperty.cpp b/ewol/DrawProperty.cpp new file mode 100644 index 00000000..54b589d7 --- /dev/null +++ b/ewol/DrawProperty.cpp @@ -0,0 +1,26 @@ +/** + * @author Edouard DUPIN + * + * @copyright 2011, Edouard DUPIN, all right reserved + * + * @license APACHE v2.0 (see license file) + */ + +#include +#include + +#undef __class__ +#define __class__ "DrawProperty" + +std::ostream& ewol::operator <<(std::ostream& _os, const ewol::DrawProperty& _obj) { + _os << "{ windowsSize=" << _obj.m_windowsSize << " start=" << _obj.m_origin << " stop=" << (_obj.m_origin+_obj.m_size) << "}"; + return _os; +} + +void ewol::DrawProperty::limit(const vec2& _origin, const vec2& _size) { + m_size += m_origin; + m_origin.setMax(_origin); + m_size.setMin(_origin+_size); + m_size -= m_origin; +} + diff --git a/ewol/DrawProperty.h b/ewol/DrawProperty.h new file mode 100644 index 00000000..fdba6421 --- /dev/null +++ b/ewol/DrawProperty.h @@ -0,0 +1,50 @@ +/** + * @author Edouard DUPIN + * + * @copyright 2011, Edouard DUPIN, all right reserved + * + * @license APACHE v2.0 (see license file) + */ +#pragma once + +#include +#include + +namespace ewol { + /** + * @not-in-doc + */ + class DrawProperty{ + /* + /--> m_windowsSize + *--------------------------------------------------* + | g | + | | + | m_size | + | / | + | o-------------------o | + | | | | + | | | | + | | | | + | | | | + | | | | + | | | | + | | | | + | | | | + | o-------------------o | + | / | + | m_origin | + | | + *--------------------------------------------------* + / + (0,0) + */ + public : + ivec2 m_windowsSize; //!< Windows compleate size + ivec2 m_origin; //!< Windows clipping upper widget (can not be <0) + ivec2 m_size; //!< Windows clipping upper widget (can not be <0 and >m_windowsSize) + void limit(const vec2& _origin, const vec2& _size); + }; + std::ostream& operator <<(std::ostream& _os, const ewol::DrawProperty& _obj); + +} diff --git a/ewol/Padding.cpp b/ewol/Padding.cpp index c1a0f17b..277569d3 100644 --- a/ewol/Padding.cpp +++ b/ewol/Padding.cpp @@ -8,6 +8,76 @@ #include +ewol::Padding::Padding() { + // nothing to do... +} + +ewol::Padding::Padding(float _xl, float _yt, float _xr, float _yb) { + setValue(_xl, _yt, _xr, _yb); +} + +void ewol::Padding::setValue(float _xl, float _yt, float _xr, float _yb) { + m_value[0] = _xl; + m_value[1] = _yt; + m_value[2] = _xr; + m_value[3] = _yb; +} + +float ewol::Padding::x() const { + return m_value[0] + m_value[2]; +} + +float ewol::Padding::y() const { + return m_value[1] + m_value[3]; +} + +float ewol::Padding::xLeft() const { + return m_value[0]; +} + +void ewol::Padding::setXLeft(float _val) { + m_value[0] = _val; +} + +float ewol::Padding::xRight() const { + return m_value[2]; +} + +void ewol::Padding::setXRight(float _val) { + m_value[2] = _val; +} + +float ewol::Padding::yTop() const { + return m_value[1]; +} + +void ewol::Padding::setYTop(float _val) { + m_value[1] = _val; +} + +float ewol::Padding::yButtom() const { + return m_value[3]; +} + +void ewol::Padding::setYButtom(float _val) { + m_value[3] = _val; +} + +ewol::Padding& ewol::Padding::operator+=(const Padding& _v) { + m_value[0] += _v.m_value[0]; + m_value[1] += _v.m_value[1]; + m_value[2] += _v.m_value[2]; + m_value[3] += _v.m_value[3]; + return *this; +} + +ewol::Padding ewol::Padding::operator+(const Padding& _v) { + return Padding(m_value[0] + _v.m_value[0], + m_value[1] + _v.m_value[1], + m_value[2] + _v.m_value[2], + m_value[3] + _v.m_value[3]); +} + std::ostream& ewol::operator <<(std::ostream& _os, const ewol::Padding& _obj) { _os << "{"; _os << _obj.xLeft(); diff --git a/ewol/Padding.h b/ewol/Padding.h index 106beb67..c22a67fb 100644 --- a/ewol/Padding.h +++ b/ewol/Padding.h @@ -7,7 +7,7 @@ */ #pragma once -#include +#include namespace ewol { /** @@ -17,65 +17,26 @@ namespace ewol { private: float m_value[4]; //!< this represent the 4 padding value Left top right buttom (like css) public: - Padding() { } - Padding(float _xl, float _yt=0, float _xr=0, float _yb=0) { - setValue(_xl, _yt, _xr, _yb); - } - void setValue(float _xl, float _yt=0, float _xr=0, float _yb=0) { - m_value[0] = _xl; - m_value[1] = _yt; - m_value[2] = _xr; - m_value[3] = _yb; - } - - float x() const { - return m_value[0] + m_value[2]; - } - float y() const { - return m_value[1] + m_value[3]; - } - float xLeft() const { - return m_value[0]; - } - void setXLeft(float _val) { - m_value[0] = _val; - } - float xRight() const { - return m_value[2]; - } - void setXRight(float _val) { - m_value[2] = _val; - } - float yTop() const { - return m_value[1]; - } - void setYTop(float _val) { - m_value[1] = _val; - } - float yButtom() const { - return m_value[3]; - } - void setYButtom(float _val) { - m_value[3] = _val; - } + Padding(); + Padding(float _xl, float _yt=0.0f, float _xr=0.0f, float _yb=0.0f); + void setValue(float _xl, float _yt=0.0f, float _xr=0.0f, float _yb=0.0f); + float x() const; + float y() const; + float xLeft() const; + void setXLeft(float _val); + float xRight() const; + void setXRight(float _val); + float yTop() const; + void setYTop(float _val); + float yButtom() const; + void setYButtom(float _val); /** * @brief Add a vector to this one * @param _v The vector to add to this one */ - Padding& operator+=(const Padding& _v) { - m_value[0] += _v.m_value[0]; - m_value[1] += _v.m_value[1]; - m_value[2] += _v.m_value[2]; - m_value[3] += _v.m_value[3]; - return *this; - } + Padding& operator+=(const Padding& _v); //! @previous - Padding operator+(const Padding& _v) { - return Padding(m_value[0] + _v.m_value[0], - m_value[1] + _v.m_value[1], - m_value[2] + _v.m_value[2], - m_value[3] + _v.m_value[3]); - } + Padding operator+(const Padding& _v); }; std::ostream& operator <<(std::ostream& _os, const ewol::Padding& _obj); diff --git a/ewol/gravity.cpp b/ewol/gravity.cpp new file mode 100644 index 00000000..39009e2b --- /dev/null +++ b/ewol/gravity.cpp @@ -0,0 +1,88 @@ +/** + * @author Edouard DUPIN + * + * @copyright 2011, Edouard DUPIN, all right reserved + * + * @license APACHE v2.0 (see license file) + */ + +#include +#include + +#undef __class__ +#define __class__ "gravity" + +std::string ewol::gravityToString(const enum ewol::gravity _obj) { + switch(_obj) { + case ewol::gravity_center: + return "center"; + case ewol::gravity_topLeft: + return "top-left"; + case ewol::gravity_top: + return "top"; + case ewol::gravity_topRight: + return "top-right"; + case ewol::gravity_right: + return "right"; + case ewol::gravity_buttomRight: + return "buttom-right"; + case ewol::gravity_buttom: + return "buttom"; + case ewol::gravity_buttomLeft: + return "buttom-left"; + case ewol::gravity_left: + return "left"; + } + return "unknow"; +} + +enum ewol::gravity ewol::stringToGravity(const std::string& _obj) { + if (_obj == "center") { + return ewol::gravity_center; + } else if (_obj == "top-left") { + return ewol::gravity_topLeft; + } else if (_obj == "top") { + return ewol::gravity_top; + } else if (_obj == "top-right") { + return ewol::gravity_topRight; + } else if (_obj == "right") { + return ewol::gravity_right; + } else if (_obj == "buttom-right") { + return ewol::gravity_buttomRight; + } else if (_obj == "buttom") { + return ewol::gravity_buttom; + } else if (_obj == "buttom-left") { + return ewol::gravity_buttomLeft; + } else if (_obj == "left") { + return ewol::gravity_left; + } + return ewol::gravity_center; +} +vec2 ewol::gravityGenerateDelta(const enum ewol::gravity _gravity, const vec2& _deltas) { + vec2 out(0.0f,0.0f); + if (_deltas.x() > 0.0001f) { + if ((uint32_t(_gravity) & uint32_t(ewol::gravity_left)) != 0) { + // nothing to do + } else if ((uint32_t(_gravity) & uint32_t(ewol::gravity_right)) != 0) { + out = vec2(int32_t(_deltas.x()), 0.0f); + } else { + out = vec2(int32_t(_deltas.x()*0.5f), 0.0f); + } + } + if (_deltas.y() > 0.0001f) { + if ((uint32_t(_gravity) & uint32_t(ewol::gravity_buttom)) != 0) { + // nothing to do + } else if ((uint32_t(_gravity) & uint32_t(ewol::gravity_top)) != 0) { + out += vec2(0.0f, int32_t(_deltas.y())); + } else { + out += vec2(0.0f, int32_t(_deltas.y()*0.5f)); + } + } + return out; +} + +std::ostream& ewol::operator <<(std::ostream& _os, const enum ewol::gravity _obj) { + _os << ewol::gravityToString(_obj); + return _os; +} + diff --git a/ewol/gravity.h b/ewol/gravity.h new file mode 100644 index 00000000..4ef64df5 --- /dev/null +++ b/ewol/gravity.h @@ -0,0 +1,33 @@ +/** + * @author Edouard DUPIN + * + * @copyright 2011, Edouard DUPIN, all right reserved + * + * @license APACHE v2.0 (see license file) + */ +#pragma once + +#include +#include + +namespace ewol { + /** + * @brief Gravity of the widget property + * @not-in-doc + */ + enum gravity { + gravity_center = 0x00, //!< gravity is in center + gravity_top = 0x01, //!< gravity is in top + gravity_buttom = 0x02, //!< gravity is in buttom + gravity_right = 0x04, //!< gravity is in right + gravity_left = 0x08, //!< gravity is in left + gravity_topRight = gravity_top|gravity_right, //!< gravity is in top-right + gravity_topLeft = gravity_top|gravity_left, //!< gravity is in top-left + gravity_buttomRight = gravity_buttom|gravity_right, //!< gravity is in buttom-right + gravity_buttomLeft = gravity_buttom|gravity_left, //!< gravity is in buttom-left + }; + std::ostream& operator <<(std::ostream& _os, const enum ewol::gravity _obj); + std::string gravityToString(const enum ewol::gravity _obj); + enum ewol::gravity stringToGravity(const std::string& _obj); + vec2 gravityGenerateDelta(const enum ewol::gravity _gravity, const vec2& _deltas); +} diff --git a/ewol/widget/Widget.cpp b/ewol/widget/Widget.cpp index 7dcacfab..e03be602 100644 --- a/ewol/widget/Widget.cpp +++ b/ewol/widget/Widget.cpp @@ -14,98 +14,6 @@ #include #include -#undef __class__ -#define __class__ "DrawProperty" - -std::ostream& ewol::operator <<(std::ostream& _os, const ewol::DrawProperty& _obj) { - _os << "{ windowsSize=" << _obj.m_windowsSize << " start=" << _obj.m_origin << " stop=" << (_obj.m_origin+_obj.m_size) << "}"; - return _os; -} - -void ewol::DrawProperty::limit(const vec2& _origin, const vec2& _size) { - m_size += m_origin; - m_origin.setMax(_origin); - m_size.setMin(_origin+_size); - m_size -= m_origin; -} - -#undef __class__ -#define __class__ "gravity" - -std::string ewol::gravityToString(const enum ewol::gravity _obj) { - switch(_obj) { - case ewol::gravity_center: - return "center"; - case ewol::gravity_topLeft: - return "top-left"; - case ewol::gravity_top: - return "top"; - case ewol::gravity_topRight: - return "top-right"; - case ewol::gravity_right: - return "right"; - case ewol::gravity_buttomRight: - return "buttom-right"; - case ewol::gravity_buttom: - return "buttom"; - case ewol::gravity_buttomLeft: - return "buttom-left"; - case ewol::gravity_left: - return "left"; - } - return "unknow"; -} - -enum ewol::gravity ewol::stringToGravity(const std::string& _obj) { - if (_obj == "center") { - return ewol::gravity_center; - } else if (_obj == "top-left") { - return ewol::gravity_topLeft; - } else if (_obj == "top") { - return ewol::gravity_top; - } else if (_obj == "top-right") { - return ewol::gravity_topRight; - } else if (_obj == "right") { - return ewol::gravity_right; - } else if (_obj == "buttom-right") { - return ewol::gravity_buttomRight; - } else if (_obj == "buttom") { - return ewol::gravity_buttom; - } else if (_obj == "buttom-left") { - return ewol::gravity_buttomLeft; - } else if (_obj == "left") { - return ewol::gravity_left; - } - return ewol::gravity_center; -} -vec2 ewol::gravityGenerateDelta(const enum ewol::gravity _gravity, const vec2& _deltas) { - vec2 out(0.0f,0.0f); - if (_deltas.x() > 0.0001f) { - if ((uint32_t(_gravity) & uint32_t(ewol::gravity_left)) != 0) { - // nothing to do - } else if ((uint32_t(_gravity) & uint32_t(ewol::gravity_right)) != 0) { - out = vec2(int32_t(_deltas.x()), 0.0f); - } else { - out = vec2(int32_t(_deltas.x()*0.5f), 0.0f); - } - } - if (_deltas.y() > 0.0001f) { - if ((uint32_t(_gravity) & uint32_t(ewol::gravity_buttom)) != 0) { - // nothing to do - } else if ((uint32_t(_gravity) & uint32_t(ewol::gravity_top)) != 0) { - out += vec2(0.0f, int32_t(_deltas.y())); - } else { - out += vec2(0.0f, int32_t(_deltas.y()*0.5f)); - } - } - return out; -} - -std::ostream& ewol::operator <<(std::ostream& _os, const enum ewol::gravity _obj) { - _os << ewol::gravityToString(_obj); - return _os; -} - #undef __class__ #define __class__ "Widget" diff --git a/ewol/widget/Widget.h b/ewol/widget/Widget.h index a587a87e..4f14afaf 100644 --- a/ewol/widget/Widget.h +++ b/ewol/widget/Widget.h @@ -31,6 +31,8 @@ namespace ewol { #include #include #include +#include +#include #define ULTIMATE_MAX_SIZE (99999999) @@ -44,60 +46,7 @@ namespace ewol { /** * @not-in-doc */ - class DrawProperty{ - /* - /--> m_windowsSize - *--------------------------------------------------* - | g | - | | - | m_size | - | / | - | o-------------------o | - | | | | - | | | | - | | | | - | | | | - | | | | - | | | | - | | | | - | | | | - | o-------------------o | - | / | - | m_origin | - | | - *--------------------------------------------------* - / - (0,0) - */ - public : - ivec2 m_windowsSize; //!< Windows compleate size - ivec2 m_origin; //!< Windows clipping upper widget (can not be <0) - ivec2 m_size; //!< Windows clipping upper widget (can not be <0 and >m_windowsSize) - void limit(const vec2& _origin, const vec2& _size); - }; - std::ostream& operator <<(std::ostream& _os, const ewol::DrawProperty& _obj); - /** - * @brief Gravity of the widget property - * @not-in-doc - */ - enum gravity { - gravity_center = 0x00, //!< gravity is in center - gravity_top = 0x01, //!< gravity is in top - gravity_buttom = 0x02, //!< gravity is in buttom - gravity_right = 0x04, //!< gravity is in right - gravity_left = 0x08, //!< gravity is in left - gravity_topRight = gravity_top|gravity_right, //!< gravity is in top-right - gravity_topLeft = gravity_top|gravity_left, //!< gravity is in top-left - gravity_buttomRight = gravity_buttom|gravity_right, //!< gravity is in buttom-right - gravity_buttomLeft = gravity_buttom|gravity_left, //!< gravity is in buttom-left - }; - std::ostream& operator <<(std::ostream& _os, const enum ewol::gravity _obj); - std::string gravityToString(const enum ewol::gravity _obj); - enum ewol::gravity stringToGravity(const std::string& _obj); - vec2 gravityGenerateDelta(const enum ewol::gravity _gravity, const vec2& _deltas); - /** - * @not-in-doc - */ + // TODO: change position of this ... class EventShortCut { public: std::string message; //!< data link with the event diff --git a/lutin_ewol.py b/lutin_ewol.py index 5cfe52fe..731a723a 100644 --- a/lutin_ewol.py +++ b/lutin_ewol.py @@ -38,13 +38,17 @@ def create(target, module_name): 'ewol/ewol.cpp', 'ewol/debug.cpp', 'ewol/Padding.cpp', - 'ewol/translate.cpp' + 'ewol/translate.cpp', + 'ewol/DrawProperty.cpp', + 'ewol/gravity.cpp' ]) my_module.add_header_file([ 'ewol/debug.h', # TODO : Remove this ... 'ewol/ewol.h', 'ewol/Padding.h', - 'ewol/translate.h' + 'ewol/translate.h', + 'ewol/DrawProperty.h', + 'ewol/gravity.h' ]) # compositing: