[DEV] update new API etk

This commit is contained in:
Edouard DUPIN 2017-05-16 21:06:21 +02:00
parent aca0e071cd
commit 343f289fe2
36 changed files with 123 additions and 123 deletions

View File

@ -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) {
}

View File

@ -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) { };

View File

@ -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);

View File

@ -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();

View File

@ -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);

View File

@ -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();

View File

@ -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) {

View File

@ -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;
};
}

View File

@ -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);

View File

@ -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();

View File

@ -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");
}

View File

@ -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();

View File

@ -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;

View File

@ -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;
};
}

View File

@ -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);

View File

@ -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();

View File

@ -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);

View File

@ -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();

View File

@ -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");
}

View File

@ -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();

View File

@ -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);

View File

@ -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();

View File

@ -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;

View File

@ -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;

View File

@ -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;
};
}

View File

@ -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) {

View File

@ -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;
};
}

View File

@ -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 == "") {

View File

@ -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);
}
}

View File

@ -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));

View File

@ -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;

View File

@ -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();
};
}

View File

@ -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();

View File

@ -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();
};
}

View File

@ -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);
}

View File

@ -44,7 +44,7 @@ namespace esvg {
bool _isStart);
public:
std::pair<vec2, vec2> getViewPort();
void applyMatrix(const mat2& _transformationMatrix);
void applyMatrix(const mat2x3& _transformationMatrix);
};
}
}