[DEV] extract gravity from widget
This commit is contained in:
parent
2e1644be3e
commit
3c9851ecf5
26
ewol/DrawProperty.cpp
Normal file
26
ewol/DrawProperty.cpp
Normal file
@ -0,0 +1,26 @@
|
||||
/**
|
||||
* @author Edouard DUPIN
|
||||
*
|
||||
* @copyright 2011, Edouard DUPIN, all right reserved
|
||||
*
|
||||
* @license APACHE v2.0 (see license file)
|
||||
*/
|
||||
|
||||
#include <ewol/DrawProperty.h>
|
||||
#include <ewol/debug.h>
|
||||
|
||||
#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;
|
||||
}
|
||||
|
50
ewol/DrawProperty.h
Normal file
50
ewol/DrawProperty.h
Normal file
@ -0,0 +1,50 @@
|
||||
/**
|
||||
* @author Edouard DUPIN
|
||||
*
|
||||
* @copyright 2011, Edouard DUPIN, all right reserved
|
||||
*
|
||||
* @license APACHE v2.0 (see license file)
|
||||
*/
|
||||
#pragma once
|
||||
|
||||
#include <etk/types.h>
|
||||
#include <etk/math/Vector2D.h>
|
||||
|
||||
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);
|
||||
|
||||
}
|
@ -8,6 +8,76 @@
|
||||
|
||||
#include <ewol/Padding.h>
|
||||
|
||||
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();
|
||||
|
@ -7,7 +7,7 @@
|
||||
*/
|
||||
#pragma once
|
||||
|
||||
#include <ewol/debug.h>
|
||||
#include <etk/types.h>
|
||||
|
||||
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);
|
||||
|
88
ewol/gravity.cpp
Normal file
88
ewol/gravity.cpp
Normal file
@ -0,0 +1,88 @@
|
||||
/**
|
||||
* @author Edouard DUPIN
|
||||
*
|
||||
* @copyright 2011, Edouard DUPIN, all right reserved
|
||||
*
|
||||
* @license APACHE v2.0 (see license file)
|
||||
*/
|
||||
|
||||
#include <ewol/debug.h>
|
||||
#include <ewol/gravity.h>
|
||||
|
||||
#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;
|
||||
}
|
||||
|
33
ewol/gravity.h
Normal file
33
ewol/gravity.h
Normal file
@ -0,0 +1,33 @@
|
||||
/**
|
||||
* @author Edouard DUPIN
|
||||
*
|
||||
* @copyright 2011, Edouard DUPIN, all right reserved
|
||||
*
|
||||
* @license APACHE v2.0 (see license file)
|
||||
*/
|
||||
#pragma once
|
||||
|
||||
#include <etk/types.h>
|
||||
#include <etk/math/Vector2D.h>
|
||||
|
||||
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);
|
||||
}
|
@ -14,98 +14,6 @@
|
||||
#include <gale/renderer/openGL/openGL-include.h>
|
||||
#include <ewol/context/Context.h>
|
||||
|
||||
#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"
|
||||
|
||||
|
@ -31,6 +31,8 @@ namespace ewol {
|
||||
#include <ewol/event/Time.h>
|
||||
#include <ewol/translate.h>
|
||||
#include <ewol/signal/Signal.h>
|
||||
#include <ewol/DrawProperty.h>
|
||||
#include <ewol/gravity.h>
|
||||
|
||||
#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
|
||||
|
@ -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:
|
||||
|
Loading…
x
Reference in New Issue
Block a user