[DEV] update new API etk
This commit is contained in:
parent
aca0e071cd
commit
343f289fe2
@ -97,7 +97,7 @@ void esvg::Base::parseTransform(const exml::Element& _element) {
|
||||
if (data.size() != 0) {
|
||||
double matrix[6];
|
||||
if (sscanf(data.c_str(), "%lf %lf %lf %lf %lf %lf", &matrix[0], &matrix[1], &matrix[2], &matrix[3], &matrix[4], &matrix[5]) == 6) {
|
||||
m_transformMatrix = mat2(matrix);
|
||||
m_transformMatrix = mat2x3(matrix);
|
||||
// find a matrix : simply exit ...
|
||||
return;
|
||||
} else {
|
||||
@ -108,10 +108,10 @@ void esvg::Base::parseTransform(const exml::Element& _element) {
|
||||
if (data.size() != 0) {
|
||||
float xxx, yyy;
|
||||
if (sscanf(data.c_str(), "%f %f", &xxx, &yyy) == 2) {
|
||||
m_transformMatrix *= etk::mat2Translate(vec2(xxx, yyy));
|
||||
m_transformMatrix *= etk::mat2x3Translate(vec2(xxx, yyy));
|
||||
ESVG_VERBOSE("Translate : " << xxx << ", " << yyy);
|
||||
} else if (sscanf(data.c_str(), "%f", &xxx) == 1) {
|
||||
m_transformMatrix *= etk::mat2Translate(vec2(xxx, 0));
|
||||
m_transformMatrix *= etk::mat2x3Translate(vec2(xxx, 0));
|
||||
ESVG_VERBOSE("Translate : " << xxx << ", " << 0);
|
||||
} else {
|
||||
ESVG_ERROR("Parsing translate() with wrong data ... '" << data << "'");
|
||||
@ -121,10 +121,10 @@ void esvg::Base::parseTransform(const exml::Element& _element) {
|
||||
if (data.size() != 0) {
|
||||
float xxx, yyy;
|
||||
if (sscanf(data.c_str(), "%f %f", &xxx, &yyy) == 2) {
|
||||
m_transformMatrix *= etk::mat2Scale(vec2(xxx, yyy));
|
||||
m_transformMatrix *= etk::mat2x3Scale(vec2(xxx, yyy));
|
||||
ESVG_VERBOSE("Scale : " << xxx << ", " << yyy);
|
||||
} else if (sscanf(data.c_str(), "%f", &xxx) == 1) {
|
||||
m_transformMatrix *= etk::mat2Scale(xxx);
|
||||
m_transformMatrix *= etk::mat2x3Scale(xxx);
|
||||
ESVG_VERBOSE("Scale : " << xxx << ", " << xxx);
|
||||
} else {
|
||||
ESVG_ERROR("Parsing scale() with wrong data ... '" << data << "'");
|
||||
@ -135,13 +135,13 @@ void esvg::Base::parseTransform(const exml::Element& _element) {
|
||||
float angle, xxx, yyy;
|
||||
if (sscanf(data.c_str(), "%f %f %f", &angle, &xxx, &yyy) == 3) {
|
||||
angle = angle / 180 * M_PI;
|
||||
m_transformMatrix *= etk::mat2Translate(vec2(-xxx, -yyy));
|
||||
m_transformMatrix *= etk::mat2Rotate(angle);
|
||||
m_transformMatrix *= etk::mat2Translate(vec2(xxx, yyy));
|
||||
m_transformMatrix *= etk::mat2x3Translate(vec2(-xxx, -yyy));
|
||||
m_transformMatrix *= etk::mat2x3Rotate(angle);
|
||||
m_transformMatrix *= etk::mat2x3Translate(vec2(xxx, yyy));
|
||||
} else if (sscanf(data.c_str(), "%f", &angle) == 1) {
|
||||
angle = angle / 180 * M_PI;
|
||||
ESVG_VERBOSE("rotate : " << angle << "rad, " << (angle/M_PI*180) << "°");
|
||||
m_transformMatrix *= etk::mat2Rotate(angle);
|
||||
m_transformMatrix *= etk::mat2x3Rotate(angle);
|
||||
} else {
|
||||
ESVG_ERROR("Parsing rotate() with wrong data ... '" << data << "'");
|
||||
}
|
||||
@ -152,7 +152,7 @@ void esvg::Base::parseTransform(const exml::Element& _element) {
|
||||
if (sscanf(data.c_str(), "%f", &angle) == 1) {
|
||||
angle = angle / 180 * M_PI;
|
||||
ESVG_VERBOSE("skewX : " << angle << "rad, " << (angle/M_PI*180) << "°");
|
||||
m_transformMatrix *= etk::mat2Skew(vec2(angle, 0.0f));
|
||||
m_transformMatrix *= etk::mat2x3Skew(vec2(angle, 0.0f));
|
||||
} else {
|
||||
ESVG_ERROR("Parsing skewX() with wrong data ... '" << data << "'");
|
||||
}
|
||||
@ -163,7 +163,7 @@ void esvg::Base::parseTransform(const exml::Element& _element) {
|
||||
if (sscanf(data.c_str(), "%f", &angle) == 1) {
|
||||
angle = angle / 180 * M_PI;
|
||||
ESVG_VERBOSE("skewY : " << angle << "rad, " << (angle/M_PI*180) << "°");
|
||||
m_transformMatrix *= etk::mat2Skew(vec2(0.0f, angle));
|
||||
m_transformMatrix *= etk::mat2x3Skew(vec2(0.0f, angle));
|
||||
} else {
|
||||
ESVG_ERROR("Parsing skewY() with wrong data ... '" << data << "'");
|
||||
}
|
||||
@ -396,7 +396,7 @@ std::pair<etk::Color<float,4>, std::string> esvg::Base::parseColor(const std::st
|
||||
return localColor;
|
||||
}
|
||||
|
||||
bool esvg::Base::parseXML(const exml::Element& _element, mat2& _parentTrans, vec2& _sizeMax) {
|
||||
bool esvg::Base::parseXML(const exml::Element& _element, mat2x3& _parentTrans, vec2& _sizeMax) {
|
||||
// TODO : UNDERSTAND why nothing is done here ...
|
||||
// Parse basic elements (ID...):
|
||||
m_id = _element.attributes["id"];
|
||||
@ -413,7 +413,7 @@ const char * esvg::Base::spacingDist(int32_t _spacing) {
|
||||
return tmpValue + 20*4 - _spacing*4;
|
||||
}
|
||||
|
||||
void esvg::Base::draw(esvg::Renderer& _myRenderer, mat2& _basicTrans, int32_t _level) {
|
||||
void esvg::Base::draw(esvg::Renderer& _myRenderer, mat2x3& _basicTrans, int32_t _level) {
|
||||
ESVG_WARNING(spacingDist(_level) << "DRAW esvg::Base ... ==> No drawing availlable");
|
||||
}
|
||||
|
||||
@ -432,7 +432,7 @@ void esvg::Base::setId(const std::string& _newId) {
|
||||
void esvg::Base::drawShapePoints(std::vector<std::vector<vec2>>& _out,
|
||||
int32_t _recurtionMax,
|
||||
float _threshold,
|
||||
mat2& _basicTrans,
|
||||
mat2x3& _basicTrans,
|
||||
int32_t _level) {
|
||||
|
||||
}
|
||||
|
@ -13,7 +13,7 @@
|
||||
#include <etk/types.hpp>
|
||||
#include <vector>
|
||||
#include <etk/math/Vector2D.hpp>
|
||||
#include <etk/math/Matrix2.hpp>
|
||||
#include <etk/math/Matrix2x3.hpp>
|
||||
#include <etk/Color.hpp>
|
||||
#include <esvg/render/Path.hpp>
|
||||
|
||||
@ -52,7 +52,7 @@ namespace esvg {
|
||||
class Base {
|
||||
protected:
|
||||
PaintState m_paint;
|
||||
mat2 m_transformMatrix; //!< specific render of the curent element
|
||||
mat2x3 m_transformMatrix; //!< specific render of the curent element
|
||||
const char * spacingDist(int32_t _spacing);
|
||||
public:
|
||||
Base() {};
|
||||
@ -63,14 +63,14 @@ namespace esvg {
|
||||
* @param[in] _element standart XML node
|
||||
* @return true if no problem arrived
|
||||
*/
|
||||
virtual bool parseXML(const exml::Element& _element, mat2& _parentTrans, vec2& _sizeMax);
|
||||
virtual bool parseXML(const exml::Element& _element, mat2x3& _parentTrans, vec2& _sizeMax);
|
||||
/**
|
||||
* @brief Draw the form in the renderer
|
||||
* @param[in] _myRenderer Renderer engine
|
||||
* @param[in] _basicTrans Parant transformation of the environement
|
||||
* @param[in] _level Level of the tree
|
||||
*/
|
||||
virtual void draw(esvg::Renderer& _myRenderer, mat2& _basicTrans, int32_t _level=1);
|
||||
virtual void draw(esvg::Renderer& _myRenderer, mat2x3& _basicTrans, int32_t _level=1);
|
||||
/**
|
||||
* @brief Draw rhe shape with all points
|
||||
* @param[in] _out where the lines are added
|
||||
@ -82,7 +82,7 @@ namespace esvg {
|
||||
virtual void drawShapePoints(std::vector<std::vector<vec2>>& _out,
|
||||
int32_t _recurtionMax,
|
||||
float _threshold,
|
||||
mat2& _basicTrans,
|
||||
mat2x3& _basicTrans,
|
||||
int32_t _level=1);
|
||||
|
||||
virtual void display(int32_t _spacing) { };
|
||||
|
@ -17,7 +17,7 @@ esvg::Circle::~Circle() {
|
||||
|
||||
}
|
||||
|
||||
bool esvg::Circle::parseXML(const exml::Element& _element, mat2& _parentTrans, vec2& _sizeMax) {
|
||||
bool esvg::Circle::parseXML(const exml::Element& _element, mat2x3& _parentTrans, vec2& _sizeMax) {
|
||||
m_radius = 0.0;
|
||||
m_position.setValue(0,0);
|
||||
if (_element.exist() == false) {
|
||||
@ -82,7 +82,7 @@ esvg::render::Path esvg::Circle::createPath() {
|
||||
return out;
|
||||
}
|
||||
|
||||
void esvg::Circle::draw(esvg::Renderer& _myRenderer, mat2& _basicTrans, int32_t _level) {
|
||||
void esvg::Circle::draw(esvg::Renderer& _myRenderer, mat2x3& _basicTrans, int32_t _level) {
|
||||
ESVG_VERBOSE(spacingDist(_level) << "DRAW esvg::Circle");
|
||||
if (m_radius <= 0.0f) {
|
||||
ESVG_VERBOSE(spacingDist(_level+1) << "Too small radius" << m_radius);
|
||||
@ -90,7 +90,7 @@ void esvg::Circle::draw(esvg::Renderer& _myRenderer, mat2& _basicTrans, int32_t
|
||||
}
|
||||
esvg::render::Path listElement = createPath();
|
||||
|
||||
mat2 mtx = m_transformMatrix;
|
||||
mat2x3 mtx = m_transformMatrix;
|
||||
mtx *= _basicTrans;
|
||||
|
||||
esvg::render::PointList listPoints;
|
||||
@ -146,11 +146,11 @@ void esvg::Circle::draw(esvg::Renderer& _myRenderer, mat2& _basicTrans, int32_t
|
||||
void esvg::Circle::drawShapePoints(std::vector<std::vector<vec2>>& _out,
|
||||
int32_t _recurtionMax,
|
||||
float _threshold,
|
||||
mat2& _basicTrans,
|
||||
mat2x3& _basicTrans,
|
||||
int32_t _level) {
|
||||
ESVG_VERBOSE(spacingDist(_level) << "DRAW Shape esvg::Circle");
|
||||
esvg::render::Path listElement = createPath();
|
||||
mat2 mtx = m_transformMatrix;
|
||||
mat2x3 mtx = m_transformMatrix;
|
||||
mtx *= _basicTrans;
|
||||
esvg::render::PointList listPoints;
|
||||
listPoints = listElement.generateListPoints(_level, _recurtionMax, _threshold);
|
||||
|
@ -15,13 +15,13 @@ namespace esvg {
|
||||
public:
|
||||
Circle(PaintState _parentPaintState);
|
||||
~Circle();
|
||||
bool parseXML(const exml::Element& _element, mat2& _parentTrans, vec2& _sizeMax) override;
|
||||
bool parseXML(const exml::Element& _element, mat2x3& _parentTrans, vec2& _sizeMax) override;
|
||||
void display(int32_t _spacing) override;
|
||||
void draw(esvg::Renderer& _myRenderer, mat2& _basicTrans, int32_t _level) override;
|
||||
void draw(esvg::Renderer& _myRenderer, mat2x3& _basicTrans, int32_t _level) override;
|
||||
void drawShapePoints(std::vector<std::vector<vec2>>& _out,
|
||||
int32_t _recurtionMax,
|
||||
float _threshold,
|
||||
mat2& _basicTrans,
|
||||
mat2x3& _basicTrans,
|
||||
int32_t _level=1) override;
|
||||
private:
|
||||
esvg::render::Path createPath();
|
||||
|
@ -17,7 +17,7 @@ esvg::Ellipse::~Ellipse() {
|
||||
|
||||
}
|
||||
|
||||
bool esvg::Ellipse::parseXML(const exml::Element& _element, mat2& _parentTrans, vec2& _sizeMax) {
|
||||
bool esvg::Ellipse::parseXML(const exml::Element& _element, mat2x3& _parentTrans, vec2& _sizeMax) {
|
||||
if (_element.exist() == false) {
|
||||
return false;
|
||||
}
|
||||
@ -86,7 +86,7 @@ esvg::render::Path esvg::Ellipse::createPath() {
|
||||
return out;
|
||||
}
|
||||
|
||||
void esvg::Ellipse::draw(esvg::Renderer& _myRenderer, mat2& _basicTrans, int32_t _level) {
|
||||
void esvg::Ellipse::draw(esvg::Renderer& _myRenderer, mat2x3& _basicTrans, int32_t _level) {
|
||||
ESVG_VERBOSE(spacingDist(_level) << "DRAW esvg::Ellipse");
|
||||
if ( m_r.x()<=0.0f
|
||||
|| m_r.y()<=0.0f) {
|
||||
@ -95,7 +95,7 @@ void esvg::Ellipse::draw(esvg::Renderer& _myRenderer, mat2& _basicTrans, int32_t
|
||||
}
|
||||
esvg::render::Path listElement = createPath();
|
||||
|
||||
mat2 mtx = m_transformMatrix;
|
||||
mat2x3 mtx = m_transformMatrix;
|
||||
mtx *= _basicTrans;
|
||||
|
||||
esvg::render::PointList listPoints;
|
||||
@ -152,11 +152,11 @@ void esvg::Ellipse::draw(esvg::Renderer& _myRenderer, mat2& _basicTrans, int32_t
|
||||
void esvg::Ellipse::drawShapePoints(std::vector<std::vector<vec2>>& _out,
|
||||
int32_t _recurtionMax,
|
||||
float _threshold,
|
||||
mat2& _basicTrans,
|
||||
mat2x3& _basicTrans,
|
||||
int32_t _level) {
|
||||
ESVG_VERBOSE(spacingDist(_level) << "DRAW Shape esvg::Ellipse");
|
||||
esvg::render::Path listElement = createPath();
|
||||
mat2 mtx = m_transformMatrix;
|
||||
mat2x3 mtx = m_transformMatrix;
|
||||
mtx *= _basicTrans;
|
||||
esvg::render::PointList listPoints;
|
||||
listPoints = listElement.generateListPoints(_level, _recurtionMax, _threshold);
|
||||
|
@ -15,13 +15,13 @@ namespace esvg {
|
||||
public:
|
||||
Ellipse(PaintState _parentPaintState);
|
||||
~Ellipse();
|
||||
bool parseXML(const exml::Element& _element, mat2& _parentTrans, vec2& _sizeMax) override;
|
||||
bool parseXML(const exml::Element& _element, mat2x3& _parentTrans, vec2& _sizeMax) override;
|
||||
void display(int32_t _spacing) override;
|
||||
void draw(esvg::Renderer& _myRenderer, mat2& _basicTrans, int32_t _level) override;
|
||||
void draw(esvg::Renderer& _myRenderer, mat2x3& _basicTrans, int32_t _level) override;
|
||||
void drawShapePoints(std::vector<std::vector<vec2>>& _out,
|
||||
int32_t _recurtionMax,
|
||||
float _threshold,
|
||||
mat2& _basicTrans,
|
||||
mat2x3& _basicTrans,
|
||||
int32_t _level=1) override;
|
||||
private:
|
||||
esvg::render::Path createPath();
|
||||
|
@ -26,7 +26,7 @@ esvg::Group::~Group() {
|
||||
|
||||
}
|
||||
|
||||
bool esvg::Group::parseXML(const exml::Element& _element, mat2& _parentTrans, vec2& _sizeMax) {
|
||||
bool esvg::Group::parseXML(const exml::Element& _element, mat2x3& _parentTrans, vec2& _sizeMax) {
|
||||
if (_element.exist() == false) {
|
||||
return false;
|
||||
}
|
||||
@ -105,7 +105,7 @@ void esvg::Group::display(int32_t _spacing) {
|
||||
ESVG_DEBUG(spacingDist(_spacing) << "Group (STOP)");
|
||||
}
|
||||
|
||||
void esvg::Group::draw(esvg::Renderer& _myRenderer, mat2& _basicTrans, int32_t _level) {
|
||||
void esvg::Group::draw(esvg::Renderer& _myRenderer, mat2x3& _basicTrans, int32_t _level) {
|
||||
ESVG_VERBOSE(spacingDist(_level) << "DRAW esvg::group");
|
||||
for (auto &it : m_subElementList) {
|
||||
if (it != nullptr) {
|
||||
@ -117,7 +117,7 @@ void esvg::Group::draw(esvg::Renderer& _myRenderer, mat2& _basicTrans, int32_t _
|
||||
void esvg::Group::drawShapePoints(std::vector<std::vector<vec2>>& _out,
|
||||
int32_t _recurtionMax,
|
||||
float _threshold,
|
||||
mat2& _basicTrans,
|
||||
mat2x3& _basicTrans,
|
||||
int32_t _level) {
|
||||
ESVG_VERBOSE(spacingDist(_level) << "DRAW shape esvg::group");
|
||||
for (auto &it : m_subElementList) {
|
||||
|
@ -15,13 +15,13 @@ namespace esvg {
|
||||
public:
|
||||
Group(PaintState _parentPaintState);
|
||||
~Group();
|
||||
bool parseXML(const exml::Element& _element, mat2& _parentTrans, vec2& _sizeMax) override;
|
||||
bool parseXML(const exml::Element& _element, mat2x3& _parentTrans, vec2& _sizeMax) override;
|
||||
void display(int32_t spacing) override;
|
||||
void draw(esvg::Renderer& _myRenderer, mat2& _basicTrans, int32_t _level) override;
|
||||
void draw(esvg::Renderer& _myRenderer, mat2x3& _basicTrans, int32_t _level) override;
|
||||
void drawShapePoints(std::vector<std::vector<vec2>>& _out,
|
||||
int32_t _recurtionMax,
|
||||
float _threshold,
|
||||
mat2& _basicTrans,
|
||||
mat2x3& _basicTrans,
|
||||
int32_t _level=1) override;
|
||||
};
|
||||
}
|
||||
|
@ -18,7 +18,7 @@ esvg::Line::~Line() {
|
||||
|
||||
}
|
||||
|
||||
bool esvg::Line::parseXML(const exml::Element& _element, mat2& _parentTrans, vec2& _sizeMax) {
|
||||
bool esvg::Line::parseXML(const exml::Element& _element, mat2x3& _parentTrans, vec2& _sizeMax) {
|
||||
// line must have a minimum size...
|
||||
m_paint.strokeWidth = 1;
|
||||
if (_element.exist() == false) {
|
||||
@ -64,12 +64,12 @@ esvg::render::Path esvg::Line::createPath() {
|
||||
return out;
|
||||
}
|
||||
|
||||
void esvg::Line::draw(esvg::Renderer& _myRenderer, mat2& _basicTrans, int32_t _level) {
|
||||
void esvg::Line::draw(esvg::Renderer& _myRenderer, mat2x3& _basicTrans, int32_t _level) {
|
||||
ESVG_VERBOSE(spacingDist(_level) << "DRAW esvg::Line");
|
||||
|
||||
esvg::render::Path listElement = createPath();
|
||||
|
||||
mat2 mtx = m_transformMatrix;
|
||||
mat2x3 mtx = m_transformMatrix;
|
||||
mtx *= _basicTrans;
|
||||
|
||||
esvg::render::PointList listPoints;
|
||||
@ -119,11 +119,11 @@ void esvg::Line::draw(esvg::Renderer& _myRenderer, mat2& _basicTrans, int32_t _l
|
||||
void esvg::Line::drawShapePoints(std::vector<std::vector<vec2>>& _out,
|
||||
int32_t _recurtionMax,
|
||||
float _threshold,
|
||||
mat2& _basicTrans,
|
||||
mat2x3& _basicTrans,
|
||||
int32_t _level) {
|
||||
ESVG_VERBOSE(spacingDist(_level) << "DRAW Shape esvg::Line");
|
||||
esvg::render::Path listElement = createPath();
|
||||
mat2 mtx = m_transformMatrix;
|
||||
mat2x3 mtx = m_transformMatrix;
|
||||
mtx *= _basicTrans;
|
||||
esvg::render::PointList listPoints;
|
||||
listPoints = listElement.generateListPoints(_level, _recurtionMax, _threshold);
|
||||
|
@ -15,13 +15,13 @@ namespace esvg {
|
||||
public:
|
||||
Line(PaintState _parentPaintState);
|
||||
~Line();
|
||||
bool parseXML(const exml::Element& _element, mat2& _parentTrans, vec2& _sizeMax) override;
|
||||
bool parseXML(const exml::Element& _element, mat2x3& _parentTrans, vec2& _sizeMax) override;
|
||||
void display(int32_t _spacing) override;
|
||||
void draw(esvg::Renderer& _myRenderer, mat2& _basicTrans, int32_t _level) override;
|
||||
void draw(esvg::Renderer& _myRenderer, mat2x3& _basicTrans, int32_t _level) override;
|
||||
void drawShapePoints(std::vector<std::vector<vec2>>& _out,
|
||||
int32_t _recurtionMax,
|
||||
float _threshold,
|
||||
mat2& _basicTrans,
|
||||
mat2x3& _basicTrans,
|
||||
int32_t _level=1) override;
|
||||
private:
|
||||
esvg::render::Path createPath();
|
||||
|
@ -25,7 +25,7 @@ esvg::LinearGradient::~LinearGradient() {
|
||||
}
|
||||
|
||||
|
||||
bool esvg::LinearGradient::parseXML(const exml::Element& _element, mat2& _parentTrans, vec2& _sizeMax) {
|
||||
bool esvg::LinearGradient::parseXML(const exml::Element& _element, mat2x3& _parentTrans, vec2& _sizeMax) {
|
||||
// line must have a minimum size...
|
||||
//m_paint.strokeWidth = 1;
|
||||
if (_element.exist() == false) {
|
||||
@ -135,7 +135,7 @@ void esvg::LinearGradient::display(int32_t _spacing) {
|
||||
}
|
||||
}
|
||||
|
||||
void esvg::LinearGradient::draw(esvg::Renderer& _myRenderer, mat2& _basicTrans, int32_t _level) {
|
||||
void esvg::LinearGradient::draw(esvg::Renderer& _myRenderer, mat2x3& _basicTrans, int32_t _level) {
|
||||
ESVG_VERBOSE(spacingDist(_level) << "DRAW esvg::LinearGradient");
|
||||
}
|
||||
|
||||
|
@ -24,9 +24,9 @@ namespace esvg {
|
||||
public:
|
||||
LinearGradient(PaintState _parentPaintState);
|
||||
~LinearGradient();
|
||||
virtual bool parseXML(const exml::Element& _element, mat2& _parentTrans, vec2& _sizeMax);
|
||||
virtual bool parseXML(const exml::Element& _element, mat2x3& _parentTrans, vec2& _sizeMax);
|
||||
virtual void display(int32_t _spacing);
|
||||
virtual void draw(esvg::Renderer& _myRenderer, mat2& _basicTrans, int32_t _level);
|
||||
virtual void draw(esvg::Renderer& _myRenderer, mat2x3& _basicTrans, int32_t _level);
|
||||
public:
|
||||
const esvg::Dimension& getPosition1();
|
||||
const esvg::Dimension& getPosition2();
|
||||
|
@ -76,7 +76,7 @@ std::string cleanBadSpaces(const std::string& _input) {
|
||||
return out;
|
||||
}
|
||||
|
||||
bool esvg::Path::parseXML(const exml::Element& _element, mat2& _parentTrans, vec2& _sizeMax) {
|
||||
bool esvg::Path::parseXML(const exml::Element& _element, mat2x3& _parentTrans, vec2& _sizeMax) {
|
||||
if (_element.exist() == false) {
|
||||
return false;
|
||||
}
|
||||
@ -270,10 +270,10 @@ void esvg::Path::display(int32_t _spacing) {
|
||||
m_listElement.display(_spacing);
|
||||
}
|
||||
|
||||
void esvg::Path::draw(esvg::Renderer& _myRenderer, mat2& _basicTrans, int32_t _level) {
|
||||
void esvg::Path::draw(esvg::Renderer& _myRenderer, mat2x3& _basicTrans, int32_t _level) {
|
||||
ESVG_VERBOSE(spacingDist(_level) << "DRAW esvg::Path");
|
||||
|
||||
mat2 mtx = m_transformMatrix;
|
||||
mat2x3 mtx = m_transformMatrix;
|
||||
mtx *= _basicTrans;
|
||||
|
||||
esvg::render::PointList listPoints;
|
||||
@ -328,11 +328,11 @@ void esvg::Path::draw(esvg::Renderer& _myRenderer, mat2& _basicTrans, int32_t _l
|
||||
void esvg::Path::drawShapePoints(std::vector<std::vector<vec2>>& _out,
|
||||
int32_t _recurtionMax,
|
||||
float _threshold,
|
||||
mat2& _basicTrans,
|
||||
mat2x3& _basicTrans,
|
||||
int32_t _level) {
|
||||
ESVG_VERBOSE(spacingDist(_level) << "DRAW Shape esvg::Path");
|
||||
|
||||
mat2 mtx = m_transformMatrix;
|
||||
mat2x3 mtx = m_transformMatrix;
|
||||
mtx *= _basicTrans;
|
||||
|
||||
esvg::render::PointList listPoints;
|
||||
|
@ -15,13 +15,13 @@ namespace esvg {
|
||||
public:
|
||||
Path(PaintState _parentPaintState);
|
||||
~Path();
|
||||
bool parseXML(const exml::Element& _element, mat2& _parentTrans, vec2& _sizeMax) override;
|
||||
bool parseXML(const exml::Element& _element, mat2x3& _parentTrans, vec2& _sizeMax) override;
|
||||
void display(int32_t _spacing) override;
|
||||
void draw(esvg::Renderer& _myRenderer, mat2& _basicTrans, int32_t _level) override;
|
||||
void draw(esvg::Renderer& _myRenderer, mat2x3& _basicTrans, int32_t _level) override;
|
||||
void drawShapePoints(std::vector<std::vector<vec2>>& _out,
|
||||
int32_t _recurtionMax,
|
||||
float _threshold,
|
||||
mat2& _basicTrans,
|
||||
mat2x3& _basicTrans,
|
||||
int32_t _level=1) override;
|
||||
};
|
||||
}
|
||||
|
@ -17,7 +17,7 @@ esvg::Polygon::~Polygon() {
|
||||
|
||||
}
|
||||
|
||||
bool esvg::Polygon::parseXML(const exml::Element& _element, mat2& _parentTrans, vec2& _sizeMax) {
|
||||
bool esvg::Polygon::parseXML(const exml::Element& _element, mat2x3& _parentTrans, vec2& _sizeMax) {
|
||||
if (_element.exist() == false) {
|
||||
return false;
|
||||
}
|
||||
@ -71,12 +71,12 @@ esvg::render::Path esvg::Polygon::createPath() {
|
||||
return out;
|
||||
}
|
||||
|
||||
void esvg::Polygon::draw(esvg::Renderer& _myRenderer, mat2& _basicTrans, int32_t _level) {
|
||||
void esvg::Polygon::draw(esvg::Renderer& _myRenderer, mat2x3& _basicTrans, int32_t _level) {
|
||||
ESVG_VERBOSE(spacingDist(_level) << "DRAW esvg::Polygon");
|
||||
|
||||
esvg::render::Path listElement = createPath();
|
||||
|
||||
mat2 mtx = m_transformMatrix;
|
||||
mat2x3 mtx = m_transformMatrix;
|
||||
mtx *= _basicTrans;
|
||||
|
||||
esvg::render::PointList listPoints;
|
||||
@ -133,11 +133,11 @@ void esvg::Polygon::draw(esvg::Renderer& _myRenderer, mat2& _basicTrans, int32_t
|
||||
void esvg::Polygon::drawShapePoints(std::vector<std::vector<vec2>>& _out,
|
||||
int32_t _recurtionMax,
|
||||
float _threshold,
|
||||
mat2& _basicTrans,
|
||||
mat2x3& _basicTrans,
|
||||
int32_t _level) {
|
||||
ESVG_VERBOSE(spacingDist(_level) << "DRAW Shape esvg::Polygon");
|
||||
esvg::render::Path listElement = createPath();
|
||||
mat2 mtx = m_transformMatrix;
|
||||
mat2x3 mtx = m_transformMatrix;
|
||||
mtx *= _basicTrans;
|
||||
esvg::render::PointList listPoints;
|
||||
listPoints = listElement.generateListPoints(_level, _recurtionMax, _threshold);
|
||||
|
@ -22,13 +22,13 @@ namespace esvg {
|
||||
public:
|
||||
Polygon(PaintState parentPaintState);
|
||||
~Polygon();
|
||||
bool parseXML(const exml::Element& _element, mat2& _parentTrans, vec2& _sizeMax) override;
|
||||
bool parseXML(const exml::Element& _element, mat2x3& _parentTrans, vec2& _sizeMax) override;
|
||||
void display(int32_t _spacing) override;
|
||||
void draw(esvg::Renderer& _myRenderer, mat2& _basicTrans, int32_t _level) override;
|
||||
void draw(esvg::Renderer& _myRenderer, mat2x3& _basicTrans, int32_t _level) override;
|
||||
void drawShapePoints(std::vector<std::vector<vec2>>& _out,
|
||||
int32_t _recurtionMax,
|
||||
float _threshold,
|
||||
mat2& _basicTrans,
|
||||
mat2x3& _basicTrans,
|
||||
int32_t _level=1) override;
|
||||
private:
|
||||
esvg::render::Path createPath();
|
||||
|
@ -17,7 +17,7 @@ esvg::Polyline::~Polyline() {
|
||||
|
||||
}
|
||||
|
||||
bool esvg::Polyline::parseXML(const exml::Element& _element, mat2& _parentTrans, vec2& _sizeMax) {
|
||||
bool esvg::Polyline::parseXML(const exml::Element& _element, mat2x3& _parentTrans, vec2& _sizeMax) {
|
||||
// line must have a minimum size...
|
||||
m_paint.strokeWidth = 1;
|
||||
if (_element.exist() == false) {
|
||||
@ -68,12 +68,12 @@ esvg::render::Path esvg::Polyline::createPath() {
|
||||
return out;
|
||||
}
|
||||
|
||||
void esvg::Polyline::draw(esvg::Renderer& _myRenderer, mat2& _basicTrans, int32_t _level) {
|
||||
void esvg::Polyline::draw(esvg::Renderer& _myRenderer, mat2x3& _basicTrans, int32_t _level) {
|
||||
ESVG_VERBOSE(spacingDist(_level) << "DRAW esvg::Polyline");
|
||||
|
||||
esvg::render::Path listElement = createPath();
|
||||
|
||||
mat2 mtx = m_transformMatrix;
|
||||
mat2x3 mtx = m_transformMatrix;
|
||||
mtx *= _basicTrans;
|
||||
|
||||
esvg::render::PointList listPoints;
|
||||
@ -130,11 +130,11 @@ void esvg::Polyline::draw(esvg::Renderer& _myRenderer, mat2& _basicTrans, int32_
|
||||
void esvg::Polyline::drawShapePoints(std::vector<std::vector<vec2>>& _out,
|
||||
int32_t _recurtionMax,
|
||||
float _threshold,
|
||||
mat2& _basicTrans,
|
||||
mat2x3& _basicTrans,
|
||||
int32_t _level) {
|
||||
ESVG_VERBOSE(spacingDist(_level) << "DRAW Shape esvg::Polyline");
|
||||
esvg::render::Path listElement = createPath();
|
||||
mat2 mtx = m_transformMatrix;
|
||||
mat2x3 mtx = m_transformMatrix;
|
||||
mtx *= _basicTrans;
|
||||
esvg::render::PointList listPoints;
|
||||
listPoints = listElement.generateListPoints(_level, _recurtionMax, _threshold);
|
||||
|
@ -15,13 +15,13 @@ namespace esvg {
|
||||
public:
|
||||
Polyline(PaintState _parentPaintState);
|
||||
~Polyline();
|
||||
bool parseXML(const exml::Element& _element, mat2& _parentTrans, vec2& _sizeMax) override;
|
||||
bool parseXML(const exml::Element& _element, mat2x3& _parentTrans, vec2& _sizeMax) override;
|
||||
void display(int32_t _spacing) override;
|
||||
void draw(esvg::Renderer& _myRenderer, mat2& _basicTrans, int32_t _level) override;
|
||||
void draw(esvg::Renderer& _myRenderer, mat2x3& _basicTrans, int32_t _level) override;
|
||||
void drawShapePoints(std::vector<std::vector<vec2>>& _out,
|
||||
int32_t _recurtionMax,
|
||||
float _threshold,
|
||||
mat2& _basicTrans,
|
||||
mat2x3& _basicTrans,
|
||||
int32_t _level=1) override;
|
||||
private:
|
||||
esvg::render::Path createPath();
|
||||
|
@ -26,7 +26,7 @@ esvg::RadialGradient::~RadialGradient() {
|
||||
}
|
||||
|
||||
|
||||
bool esvg::RadialGradient::parseXML(const exml::Element& _element, mat2& _parentTrans, vec2& _sizeMax) {
|
||||
bool esvg::RadialGradient::parseXML(const exml::Element& _element, mat2x3& _parentTrans, vec2& _sizeMax) {
|
||||
// line must have a minimum size...
|
||||
//m_paint.strokeWidth = 1;
|
||||
if (_element.exist() == false) {
|
||||
@ -140,7 +140,7 @@ void esvg::RadialGradient::display(int32_t _spacing) {
|
||||
}
|
||||
}
|
||||
|
||||
void esvg::RadialGradient::draw(esvg::Renderer& _myRenderer, mat2& _basicTrans, int32_t _level) {
|
||||
void esvg::RadialGradient::draw(esvg::Renderer& _myRenderer, mat2x3& _basicTrans, int32_t _level) {
|
||||
ESVG_VERBOSE(spacingDist(_level) << "DRAW esvg::RadialGradient");
|
||||
}
|
||||
|
||||
|
@ -25,9 +25,9 @@ namespace esvg {
|
||||
public:
|
||||
RadialGradient(PaintState _parentPaintState);
|
||||
~RadialGradient();
|
||||
virtual bool parseXML(const exml::Element& _element, mat2& _parentTrans, vec2& _sizeMax);
|
||||
virtual bool parseXML(const exml::Element& _element, mat2x3& _parentTrans, vec2& _sizeMax);
|
||||
virtual void display(int32_t _spacing);
|
||||
virtual void draw(esvg::Renderer& _myRenderer, mat2& _basicTrans, int32_t _level);
|
||||
virtual void draw(esvg::Renderer& _myRenderer, mat2x3& _basicTrans, int32_t _level);
|
||||
public:
|
||||
const esvg::Dimension& getCenter();
|
||||
const esvg::Dimension& getFocal();
|
||||
|
@ -19,7 +19,7 @@ esvg::Rectangle::~Rectangle() {
|
||||
|
||||
}
|
||||
|
||||
bool esvg::Rectangle::parseXML(const exml::Element& _element, mat2& _parentTrans, vec2& _sizeMax) {
|
||||
bool esvg::Rectangle::parseXML(const exml::Element& _element, mat2x3& _parentTrans, vec2& _sizeMax) {
|
||||
if (_element.exist() == false) {
|
||||
return false;
|
||||
}
|
||||
@ -85,12 +85,12 @@ esvg::render::Path esvg::Rectangle::createPath() {
|
||||
return out;
|
||||
}
|
||||
|
||||
void esvg::Rectangle::draw(esvg::Renderer& _myRenderer, mat2& _basicTrans, int32_t _level) {
|
||||
void esvg::Rectangle::draw(esvg::Renderer& _myRenderer, mat2x3& _basicTrans, int32_t _level) {
|
||||
ESVG_VERBOSE(spacingDist(_level) << "DRAW esvg::Rectangle: fill=" << m_paint.fill.first << "/" << m_paint.fill.second
|
||||
<< " stroke=" << m_paint.stroke.first << "/" << m_paint.stroke.second);
|
||||
esvg::render::Path listElement = createPath();
|
||||
|
||||
mat2 mtx = m_transformMatrix;
|
||||
mat2x3 mtx = m_transformMatrix;
|
||||
mtx *= _basicTrans;
|
||||
|
||||
esvg::render::PointList listPoints;
|
||||
@ -147,11 +147,11 @@ void esvg::Rectangle::draw(esvg::Renderer& _myRenderer, mat2& _basicTrans, int32
|
||||
void esvg::Rectangle::drawShapePoints(std::vector<std::vector<vec2>>& _out,
|
||||
int32_t _recurtionMax,
|
||||
float _threshold,
|
||||
mat2& _basicTrans,
|
||||
mat2x3& _basicTrans,
|
||||
int32_t _level) {
|
||||
ESVG_VERBOSE(spacingDist(_level) << "DRAW Shape esvg::Rectangle");
|
||||
esvg::render::Path listElement = createPath();
|
||||
mat2 mtx = m_transformMatrix;
|
||||
mat2x3 mtx = m_transformMatrix;
|
||||
mtx *= _basicTrans;
|
||||
esvg::render::PointList listPoints;
|
||||
listPoints = listElement.generateListPoints(_level, _recurtionMax, _threshold);
|
||||
|
@ -16,13 +16,13 @@ namespace esvg {
|
||||
public:
|
||||
Rectangle(PaintState _parentPaintState);
|
||||
~Rectangle();
|
||||
bool parseXML(const exml::Element& _element, mat2& _parentTrans, vec2& _sizeMax) override;
|
||||
bool parseXML(const exml::Element& _element, mat2x3& _parentTrans, vec2& _sizeMax) override;
|
||||
void display(int32_t _spacing) override;
|
||||
void draw(esvg::Renderer& _myRenderer, mat2& _basicTrans, int32_t _level) override;
|
||||
void draw(esvg::Renderer& _myRenderer, mat2x3& _basicTrans, int32_t _level) override;
|
||||
void drawShapePoints(std::vector<std::vector<vec2>>& _out,
|
||||
int32_t _recurtionMax,
|
||||
float _threshold,
|
||||
mat2& _basicTrans,
|
||||
mat2x3& _basicTrans,
|
||||
int32_t _level=1) override;
|
||||
private:
|
||||
esvg::render::Path createPath();
|
||||
|
@ -122,7 +122,7 @@ void esvg::Renderer::print(const esvg::render::Weight& _weightFill,
|
||||
esvg::render::Point(tmpColor->m_pos2),
|
||||
false);
|
||||
/*
|
||||
mat2 m_matrix;
|
||||
mat2x3 m_matrix;
|
||||
std::pair<vec2, vec2> m_viewPort;
|
||||
vec2 m_pos1;
|
||||
vec2 m_pos2;
|
||||
|
@ -15,7 +15,7 @@ esvg::Text::~Text() {
|
||||
|
||||
}
|
||||
|
||||
bool esvg::Text::parse(const exml::Element& _element, mat2& _parentTrans, vec2& _sizeMax) {
|
||||
bool esvg::Text::parse(const exml::Element& _element, mat2x3& _parentTrans, vec2& _sizeMax) {
|
||||
_sizeMax.setValue(0,0);
|
||||
ESVG_ERROR("NOT IMPLEMENTED");
|
||||
return false;
|
||||
|
@ -12,7 +12,7 @@ namespace esvg {
|
||||
public:
|
||||
Text(PaintState _parentPaintState);
|
||||
~Text();
|
||||
bool parse(const exml::Element& _element, mat2& _parentTrans, vec2& _sizeMax);
|
||||
bool parse(const exml::Element& _element, mat2x3& _parentTrans, vec2& _sizeMax);
|
||||
void display(int32_t _spacing) override;
|
||||
};
|
||||
}
|
||||
|
@ -49,7 +49,7 @@ void esvg::Document::displayDebug() {
|
||||
}
|
||||
|
||||
|
||||
void esvg::Document::draw(esvg::Renderer& _myRenderer, mat2& _basicTrans, int32_t _level) {
|
||||
void esvg::Document::draw(esvg::Renderer& _myRenderer, mat2x3& _basicTrans, int32_t _level) {
|
||||
for (int32_t iii=0; iii<m_subElementList.size(); iii++) {
|
||||
if (m_subElementList[iii] != nullptr) {
|
||||
m_subElementList[iii]->draw(_myRenderer, _basicTrans);
|
||||
@ -73,8 +73,8 @@ void esvg::Document::generateAnImage(const ivec2& _size, const std::string& _fil
|
||||
|
||||
ememory::SharedPtr<esvg::Renderer> renderedElement = ememory::makeShared<esvg::Renderer>(sizeRender, this, _visualDebug);
|
||||
// create the first element matrix modification ...
|
||||
mat2 basicTrans;
|
||||
basicTrans *= etk::mat2Scale(vec2(sizeRender.x()/m_size.x(), sizeRender.y()/m_size.y()));
|
||||
mat2x3 basicTrans;
|
||||
basicTrans *= etk::mat2x3Scale(vec2(sizeRender.x()/m_size.x(), sizeRender.y()/m_size.y()));
|
||||
|
||||
draw(*renderedElement, basicTrans);
|
||||
|
||||
@ -98,8 +98,8 @@ std::vector<etk::Color<float,4>> esvg::Document::renderImageFloatRGBA(ivec2& _si
|
||||
ESVG_DEBUG("Generate size " << _size);
|
||||
ememory::SharedPtr<esvg::Renderer> renderedElement = ememory::makeShared<esvg::Renderer>(_size, this);
|
||||
// create the first element matrix modification ...
|
||||
mat2 basicTrans;
|
||||
basicTrans *= etk::mat2Scale(vec2(_size.x()/m_size.x(), _size.y()/m_size.y()));
|
||||
mat2x3 basicTrans;
|
||||
basicTrans *= etk::mat2x3Scale(vec2(_size.x()/m_size.x(), _size.y()/m_size.y()));
|
||||
draw(*renderedElement, basicTrans);
|
||||
|
||||
// direct return the generated data ...
|
||||
@ -379,8 +379,8 @@ std::vector<std::vector<vec2>> esvg::Document::getLines(vec2 _size) {
|
||||
}
|
||||
ESVG_DEBUG("lineification size " << _size);
|
||||
// create the first element matrix modification ...
|
||||
mat2 basicTrans;
|
||||
basicTrans *= etk::mat2Scale(vec2(_size.x()/m_size.x(), _size.y()/m_size.y()));
|
||||
mat2x3 basicTrans;
|
||||
basicTrans *= etk::mat2x3Scale(vec2(_size.x()/m_size.x(), _size.y()/m_size.y()));
|
||||
drawShapePoints(out, 10, 0.25f, basicTrans);
|
||||
return out;
|
||||
}
|
||||
@ -389,7 +389,7 @@ std::vector<std::vector<vec2>> esvg::Document::getLines(vec2 _size) {
|
||||
void esvg::Document::drawShapePoints(std::vector<std::vector<vec2>>& _out,
|
||||
int32_t _recurtionMax,
|
||||
float _threshold,
|
||||
mat2& _basicTrans,
|
||||
mat2x3& _basicTrans,
|
||||
int32_t _level) {
|
||||
ESVG_VERBOSE(spacingDist(_level) << "DRAW shape esvg::Document");
|
||||
for (auto &it : m_subElementList) {
|
||||
|
@ -88,7 +88,7 @@ namespace esvg {
|
||||
std::vector<etk::Color<uint8_t,3>> renderImageU8RGB(ivec2& _size);
|
||||
std::vector<std::vector<vec2>> getLines(vec2 _size=vec2(256,256));
|
||||
protected:
|
||||
void draw(esvg::Renderer& _myRenderer, mat2& _basicTrans, int32_t _level=0) override;
|
||||
void draw(esvg::Renderer& _myRenderer, mat2x3& _basicTrans, int32_t _level=0) override;
|
||||
public:
|
||||
vec2 getDefinedSize() {
|
||||
return m_size;
|
||||
@ -98,7 +98,7 @@ namespace esvg {
|
||||
void drawShapePoints(std::vector<std::vector<vec2>>& _out,
|
||||
int32_t _recurtionMax,
|
||||
float _threshold,
|
||||
mat2& _basicTrans,
|
||||
mat2x3& _basicTrans,
|
||||
int32_t _level=1) override;
|
||||
};
|
||||
}
|
||||
|
@ -10,7 +10,7 @@
|
||||
#include <esvg/RadialGradient.hpp>
|
||||
#include <esvg/esvg.hpp>
|
||||
|
||||
esvg::render::DynamicColorSpecial::DynamicColorSpecial(const std::string& _link, const mat2& _mtx) :
|
||||
esvg::render::DynamicColorSpecial::DynamicColorSpecial(const std::string& _link, const mat2x3& _mtx) :
|
||||
m_linear(true),
|
||||
m_colorName(_link),
|
||||
m_matrix(_mtx),
|
||||
@ -439,7 +439,7 @@ void esvg::render::DynamicColorSpecial::generate(esvg::Document* _document) {
|
||||
}
|
||||
}
|
||||
|
||||
ememory::SharedPtr<esvg::render::DynamicColor> esvg::render::createColor(std::pair<etk::Color<float,4>, std::string> _color, const mat2& _mtx) {
|
||||
ememory::SharedPtr<esvg::render::DynamicColor> esvg::render::createColor(std::pair<etk::Color<float,4>, std::string> _color, const mat2x3& _mtx) {
|
||||
// Check if need to create a color:
|
||||
if ( _color.first.a() == 0x00
|
||||
&& _color.second == "") {
|
||||
|
@ -9,7 +9,7 @@
|
||||
#include <etk/types.hpp>
|
||||
#include <etk/Color.hpp>
|
||||
#include <etk/math/Vector2D.hpp>
|
||||
#include <etk/math/Matrix2.hpp>
|
||||
#include <etk/math/Matrix2x3.hpp>
|
||||
#include <esvg/gradientUnits.hpp>
|
||||
#include <esvg/spreadMethod.hpp>
|
||||
|
||||
@ -50,7 +50,7 @@ namespace esvg {
|
||||
esvg::spreadMethod m_spread;
|
||||
esvg::gradientUnits m_unit;
|
||||
std::string m_colorName;
|
||||
mat2 m_matrix;
|
||||
mat2x3 m_matrix;
|
||||
std::pair<vec2, vec2> m_viewPort;
|
||||
vec2 m_pos1; // in radius ==> center
|
||||
vec2 m_pos2; // in radius ==> radius end position
|
||||
@ -63,7 +63,7 @@ namespace esvg {
|
||||
bool m_centerIsFocal;
|
||||
std::vector<std::pair<float, etk::Color<float,4>>> m_data;
|
||||
public:
|
||||
DynamicColorSpecial(const std::string& _link, const mat2& _mtx);
|
||||
DynamicColorSpecial(const std::string& _link, const mat2x3& _mtx);
|
||||
virtual etk::Color<float,4> getColor(const ivec2& _pos) const;
|
||||
private:
|
||||
etk::Color<float,4> getColorLinear(const ivec2& _pos) const;
|
||||
@ -73,7 +73,7 @@ namespace esvg {
|
||||
virtual void setViewPort(const std::pair<vec2, vec2>& _viewPort);
|
||||
};
|
||||
|
||||
ememory::SharedPtr<DynamicColor> createColor(std::pair<etk::Color<float,4>, std::string> _color, const mat2& _mtx);
|
||||
ememory::SharedPtr<DynamicColor> createColor(std::pair<etk::Color<float,4>, std::string> _color, const mat2x3& _mtx);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -371,7 +371,7 @@ esvg::render::PointList esvg::render::Path::generateListPoints(int32_t _level, i
|
||||
// http://www.w3.org/TR/SVG11/implnote.html#ArcImplementationNotes
|
||||
// procedure describe here : http://www.w3.org/TR/SVG11/implnote.html#ArcConversionCenterToEndpoint
|
||||
// Compute delta'
|
||||
mat2 matrixRotationCenter = etk::mat2Rotate(-rotationX);
|
||||
mat2x3 matrixRotationCenter = etk::mat2x3Rotate(-rotationX);
|
||||
vec2 deltaPrim = matrixRotationCenter * (delta*0.5f);
|
||||
ddd = (deltaPrim.x()*deltaPrim.x())/(radius.x()*radius.x())
|
||||
+ (deltaPrim.y()*deltaPrim.y())/(radius.y()*radius.y());
|
||||
@ -406,7 +406,7 @@ esvg::render::PointList esvg::render::Path::generateListPoints(int32_t _level, i
|
||||
vec2 centerPrime(sss * radius.x() * deltaPrim.y() / radius.y(),
|
||||
sss * -radius.y() * deltaPrim.x() / radius.x());
|
||||
// Compute center from center'
|
||||
mat2 matrix = etk::mat2Rotate(rotationX);
|
||||
mat2x3 matrix = etk::mat2x3Rotate(rotationX);
|
||||
vec2 center = (lastPosStore + pos)*0.5f + matrix*centerPrime;
|
||||
#ifdef DEBUG
|
||||
m_debugInformation.addSegment(center-vec2(3.0,3.0), center+vec2(3.0,3.0));
|
||||
|
@ -16,7 +16,7 @@ void esvg::render::PointList::addList(std::vector<esvg::render::Point>& _list) {
|
||||
// TODO : Add a checker of correct list ...
|
||||
}
|
||||
|
||||
void esvg::render::PointList::applyMatrix(const mat2& _transformationMatrix) {
|
||||
void esvg::render::PointList::applyMatrix(const mat2x3& _transformationMatrix) {
|
||||
for (auto &it : m_data) {
|
||||
for (auto &val : it) {
|
||||
val.m_pos = _transformationMatrix * val.m_pos;
|
||||
|
@ -7,7 +7,7 @@
|
||||
|
||||
#include <etk/types.hpp>
|
||||
#include <etk/math/Vector2D.hpp>
|
||||
#include <etk/math/Matrix2.hpp>
|
||||
#include <etk/math/Matrix2x3.hpp>
|
||||
#include <esvg/render/Element.hpp>
|
||||
#include <esvg/render/Point.hpp>
|
||||
|
||||
@ -20,7 +20,7 @@ namespace esvg {
|
||||
PointList();
|
||||
void addList(std::vector<esvg::render::Point>& _list);
|
||||
void display();
|
||||
void applyMatrix(const mat2& _transformationMatrix);
|
||||
void applyMatrix(const mat2x3& _transformationMatrix);
|
||||
std::pair<vec2, vec2> getViewPort();
|
||||
};
|
||||
}
|
||||
|
@ -14,7 +14,7 @@ esvg::render::Segment::Segment(const vec2& _p0, const vec2& _p1) {
|
||||
direction = 0;
|
||||
}
|
||||
|
||||
void esvg::render::Segment::applyMatrix(const mat2& _transformationMatrix) {
|
||||
void esvg::render::Segment::applyMatrix(const mat2x3& _transformationMatrix) {
|
||||
p0 = _transformationMatrix * p0;
|
||||
p1 = _transformationMatrix * p1;
|
||||
createDirection();
|
||||
|
@ -7,7 +7,7 @@
|
||||
|
||||
#include <etk/types.hpp>
|
||||
#include <etk/math/Vector2D.hpp>
|
||||
#include <etk/math/Matrix2.hpp>
|
||||
#include <etk/math/Matrix2x3.hpp>
|
||||
|
||||
namespace esvg {
|
||||
namespace render {
|
||||
@ -17,7 +17,7 @@ namespace esvg {
|
||||
vec2 p0;
|
||||
vec2 p1;
|
||||
int32_t direction;
|
||||
void applyMatrix(const mat2& _transformationMatrix);
|
||||
void applyMatrix(const mat2x3& _transformationMatrix);
|
||||
void createDirection();
|
||||
};
|
||||
}
|
||||
|
@ -6,7 +6,7 @@
|
||||
|
||||
#include <esvg/render/SegmentList.hpp>
|
||||
#include <esvg/debug.hpp>
|
||||
#include <etk/math/Matrix2.hpp>
|
||||
#include <etk/math/Matrix2x3.hpp>
|
||||
|
||||
esvg::render::SegmentList::SegmentList() {
|
||||
|
||||
@ -90,11 +90,11 @@ void esvg::render::SegmentList::createSegmentListStroke(const vec2& _point1,
|
||||
vec2 ppp1(_point1);
|
||||
vec2 ppp2(_point2);
|
||||
for (iii=baseAngle; iii<angleToDraw; iii+=baseAngle) {
|
||||
mat2 tmpMat;
|
||||
mat2x3 tmpMat;
|
||||
if (_isStart == true) {
|
||||
tmpMat = etk::mat2Rotate(-iii);
|
||||
tmpMat = etk::mat2x3Rotate(-iii);
|
||||
} else {
|
||||
tmpMat = etk::mat2Rotate(iii);
|
||||
tmpMat = etk::mat2x3Rotate(iii);
|
||||
}
|
||||
vec2 axeRotate = tmpMat * axe;
|
||||
ppp2 = _center
|
||||
@ -470,7 +470,7 @@ void esvg::render::SegmentList::startStopPoint(vec2& _leftPoint,
|
||||
+ _point.m_miterAxe*_width*0.5f;
|
||||
vec2 right = _point.m_pos
|
||||
- _point.m_miterAxe*_width*0.5f;
|
||||
mat2 tmpMat = etk::mat2Translate(nextAxe.safeNormalize()*_width*-0.5f);
|
||||
mat2x3 tmpMat = etk::mat2x3Translate(nextAxe.safeNormalize()*_width*-0.5f);
|
||||
left = tmpMat*left;
|
||||
right = tmpMat*right;
|
||||
if (_isStart == false) {
|
||||
@ -500,7 +500,7 @@ void esvg::render::SegmentList::startStopPoint(vec2& _leftPoint,
|
||||
}
|
||||
}
|
||||
|
||||
void esvg::render::SegmentList::applyMatrix(const mat2& _transformationMatrix) {
|
||||
void esvg::render::SegmentList::applyMatrix(const mat2x3& _transformationMatrix) {
|
||||
for (auto &it : m_data) {
|
||||
it.applyMatrix(_transformationMatrix);
|
||||
}
|
||||
|
@ -44,7 +44,7 @@ namespace esvg {
|
||||
bool _isStart);
|
||||
public:
|
||||
std::pair<vec2, vec2> getViewPort();
|
||||
void applyMatrix(const mat2& _transformationMatrix);
|
||||
void applyMatrix(const mat2x3& _transformationMatrix);
|
||||
};
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user