23#ifndef GRAPHICS_IMPORTER_BUFFER_H
24#define GRAPHICS_IMPORTER_BUFFER_H
40 virtual std::unique_ptr<IMPORTED_SHAPE>
clone()
const = 0;
71 virtual std::unique_ptr<IMPORTED_SHAPE>
clone()
const override
73 return std::make_unique<IMPORTED_LINE>( *
this );
101 bool aFilled,
const COLOR4D& aFillColor ) :
112 virtual std::unique_ptr<IMPORTED_SHAPE>
clone()
const override
114 return std::make_unique<IMPORTED_CIRCLE>( *
this );
122 newRadius = aTransform * newRadius;
160 virtual std::unique_ptr<IMPORTED_SHAPE>
clone()
const override
162 return std::make_unique<IMPORTED_ARC>( *
this );
178 for(
double angle = 0; angle <
m_angle.AsDegrees(); angle += 5 )
183 start.
x * ang.
Sin() - start.
y * ang.
Cos()};
203 bool aFilled,
const COLOR4D& aFillColor ) :
216 virtual std::unique_ptr<IMPORTED_SHAPE>
clone()
const override
218 return std::make_unique<IMPORTED_POLYGON>( *
this );
225 vert = aTransform * vert + aTranslation;
274 virtual std::unique_ptr<IMPORTED_SHAPE>
clone()
const override
276 return std::make_unique<IMPORTED_TEXT>( *
this );
327 virtual std::unique_ptr<IMPORTED_SHAPE>
clone()
const override
329 return std::make_unique<IMPORTED_SPLINE>( *
this );
377 virtual std::unique_ptr<IMPORTED_SHAPE>
clone()
const override
379 return std::make_unique<IMPORTED_ELLIPSE>( *
this );
390 majorVec = aTransform * majorVec;
391 minorVec = aTransform * minorVec;
439 virtual std::unique_ptr<IMPORTED_SHAPE>
clone()
const override
441 return std::make_unique<IMPORTED_ELLIPSE_ARC>( *
this );
451 majorVec = aTransform * majorVec;
452 minorVec = aTransform * minorVec;
498 void AddText(
const VECTOR2D& aOrigin,
const wxString& aText,
double aHeight,
double aWidth,
516 void AddShape( std::unique_ptr<IMPORTED_SHAPE>& aShape );
528 std::list<std::unique_ptr<IMPORTED_SHAPE>>
m_shapes;
constexpr BOX2< Vec > & Merge(const BOX2< Vec > &aRect)
Modify the position and size of the rectangle in order to contain aRect.
static const COLOR4D UNSPECIFIED
For legacy support; used as a value to indicate color hasn't been set yet.
std::list< std::unique_ptr< IMPORTED_SHAPE > > & GetShapes()
void AddCircle(const VECTOR2D &aCenter, double aRadius, const IMPORTED_STROKE &aStroke, bool aFilled, const COLOR4D &aFillColor=COLOR4D::UNSPECIFIED) override
Create an object representing a circle.
void AddSpline(const VECTOR2D &aStart, const VECTOR2D &aBezierControl1, const VECTOR2D &aBezierControl2, const VECTOR2D &aEnd, const IMPORTED_STROKE &aStroke) override
Create an object representing an arc.
void AddLine(const VECTOR2D &aStart, const VECTOR2D &aEnd, const IMPORTED_STROKE &aStroke) override
Create an object representing a line segment.
const wxString & GetCurrentSourceLayer() const
void AddEllipse(const VECTOR2D &aCenter, double aMajorRadius, double aMinorRadius, const EDA_ANGLE &aRotation, const IMPORTED_STROKE &aStroke, bool aFilled, const COLOR4D &aFillColor=COLOR4D::UNSPECIFIED) override
Create an object representing a closed ellipse.
void PostprocessNestedPolygons()
void ImportTo(GRAPHICS_IMPORTER &aImporter)
void SetCurrentSourceLayer(const wxString &aSourceLayer) override
Set the source layer for the next buffered shape to be imported.
std::vector< wxString > GetSourceLayers() const
void AddArc(const VECTOR2D &aCenter, const VECTOR2D &aStart, const EDA_ANGLE &aAngle, const IMPORTED_STROKE &aStroke) override
Create an object representing an arc.
void AddText(const VECTOR2D &aOrigin, const wxString &aText, double aHeight, double aWidth, double aThickness, double aOrientation, GR_TEXT_H_ALIGN_T aHJustify, GR_TEXT_V_ALIGN_T aVJustify, const COLOR4D &aColor=COLOR4D::UNSPECIFIED) override
Create an object representing a text.
std::list< std::unique_ptr< IMPORTED_SHAPE > > m_shapes
List of imported shapes.
void AddShape(std::unique_ptr< IMPORTED_SHAPE > &aShape)
wxString m_currentSourceLayer
void AddPolygon(const std::vector< VECTOR2D > &aVertices, const IMPORTED_STROKE &aStroke, bool aFilled, const COLOR4D &aFillColor=COLOR4D::UNSPECIFIED) override
Create an object representing a polygon.
void AddEllipseArc(const VECTOR2D &aCenter, double aMajorRadius, double aMinorRadius, const EDA_ANGLE &aRotation, const EDA_ANGLE &aStartAngle, const EDA_ANGLE &aEndAngle, const IMPORTED_STROKE &aStroke) override
Create an object representing an elliptical arc.
Interface that creates objects representing shapes for a given data model.
virtual void AddArc(const VECTOR2D &aCenter, const VECTOR2D &aStart, const EDA_ANGLE &aAngle, const IMPORTED_STROKE &aStroke)=0
Create an object representing an arc.
virtual void AddPolygon(const std::vector< VECTOR2D > &aVertices, const IMPORTED_STROKE &aStroke, bool aFilled, const COLOR4D &aFillColor)=0
Create an object representing a polygon.
virtual void AddEllipse(const VECTOR2D &aCenter, double aMajorRadius, double aMinorRadius, const EDA_ANGLE &aRotation, const IMPORTED_STROKE &aStroke, bool aFilled, const COLOR4D &aFillColor=COLOR4D::UNSPECIFIED)=0
Create an object representing a closed ellipse.
virtual void AddLine(const VECTOR2D &aOrigin, const VECTOR2D &aEnd, const IMPORTED_STROKE &aStroke)=0
Create an object representing a line segment.
virtual void AddEllipseArc(const VECTOR2D &aCenter, double aMajorRadius, double aMinorRadius, const EDA_ANGLE &aRotation, const EDA_ANGLE &aStartAngle, const EDA_ANGLE &aEndAngle, const IMPORTED_STROKE &aStroke)=0
Create an object representing an elliptical arc.
virtual void AddText(const VECTOR2D &aOrigin, const wxString &aText, double aHeight, double aWidth, double aThickness, double aOrientation, GR_TEXT_H_ALIGN_T aHJustify, GR_TEXT_V_ALIGN_T aVJustify, const COLOR4D &aColor)=0
Create an object representing a text.
virtual void AddCircle(const VECTOR2D &aCenter, double aRadius, const IMPORTED_STROKE &aStroke, bool aFilled, const COLOR4D &aFillColor)=0
Create an object representing a circle.
virtual void AddSpline(const VECTOR2D &aStart, const VECTOR2D &aBezierControl1, const VECTOR2D &aBezierControl2, const VECTOR2D &aEnd, const IMPORTED_STROKE &aStroke)=0
Create an object representing an arc.
BOX2D GetBoundingBox() const override
IMPORTED_ARC(const VECTOR2D &aCenter, const VECTOR2D &aStart, const EDA_ANGLE &aAngle, const IMPORTED_STROKE &aStroke)
void Transform(const MATRIX3x3D &aTransform, const VECTOR2D &aTranslation) override
virtual std::unique_ptr< IMPORTED_SHAPE > clone() const override
void ImportTo(GRAPHICS_IMPORTER &aImporter) const override
void Transform(const MATRIX3x3D &aTransform, const VECTOR2D &aTranslation) override
BOX2D GetBoundingBox() const override
IMPORTED_CIRCLE(const VECTOR2D &aCenter, double aRadius, const IMPORTED_STROKE &aStroke, bool aFilled, const COLOR4D &aFillColor)
void ImportTo(GRAPHICS_IMPORTER &aImporter) const override
virtual std::unique_ptr< IMPORTED_SHAPE > clone() const override
void ImportTo(GRAPHICS_IMPORTER &aImporter) const override
IMPORTED_ELLIPSE_ARC(const VECTOR2D &aCenter, double aMajorRadius, double aMinorRadius, const EDA_ANGLE &aRotation, const EDA_ANGLE &aStartAngle, const EDA_ANGLE &aEndAngle, const IMPORTED_STROKE &aStroke)
void Transform(const MATRIX3x3D &aTransform, const VECTOR2D &aTranslation) override
BOX2D GetBoundingBox() const override
virtual std::unique_ptr< IMPORTED_SHAPE > clone() const override
virtual std::unique_ptr< IMPORTED_SHAPE > clone() const override
IMPORTED_ELLIPSE(const VECTOR2D &aCenter, double aMajorRadius, double aMinorRadius, const EDA_ANGLE &aRotation, const IMPORTED_STROKE &aStroke, bool aFilled, const COLOR4D &aFillColor)
BOX2D GetBoundingBox() const override
void Transform(const MATRIX3x3D &aTransform, const VECTOR2D &aTranslation) override
void ImportTo(GRAPHICS_IMPORTER &aImporter) const override
virtual std::unique_ptr< IMPORTED_SHAPE > clone() const override
IMPORTED_LINE(const VECTOR2D &aStart, const VECTOR2D &aEnd, const IMPORTED_STROKE &aStroke)
void Transform(const MATRIX3x3D &aTransform, const VECTOR2D &aTranslation) override
void ImportTo(GRAPHICS_IMPORTER &aImporter) const override
BOX2D GetBoundingBox() const override
void Transform(const MATRIX3x3D &aTransform, const VECTOR2D &aTranslation) override
std::vector< VECTOR2D > & Vertices()
const IMPORTED_STROKE & GetStroke() const
IMPORTED_POLYGON(const std::vector< VECTOR2D > &aVertices, const IMPORTED_STROKE &aStroke, bool aFilled, const COLOR4D &aFillColor)
void ImportTo(GRAPHICS_IMPORTER &aImporter) const override
BOX2D GetBoundingBox() const override
const COLOR4D & GetFillColor() const
std::vector< VECTOR2D > m_vertices
virtual std::unique_ptr< IMPORTED_SHAPE > clone() const override
int GetParentShapeIndex() const
virtual ~IMPORTED_SHAPE()
virtual void ImportTo(GRAPHICS_IMPORTER &aImporter) const =0
void SetSourceLayer(const wxString &aSourceLayer)
void SetParentShapeIndex(int aIndex)
virtual void Transform(const MATRIX3x3D &aTransform, const VECTOR2D &aTranslation)=0
virtual BOX2D GetBoundingBox() const =0
virtual std::unique_ptr< IMPORTED_SHAPE > clone() const =0
const wxString & GetSourceLayer() const
void ImportTo(GRAPHICS_IMPORTER &aImporter) const override
BOX2D GetBoundingBox() const override
void Transform(const MATRIX3x3D &aTransform, const VECTOR2D &aTranslation) override
virtual std::unique_ptr< IMPORTED_SHAPE > clone() const override
IMPORTED_SPLINE(const VECTOR2D &aStart, const VECTOR2D &aBezierControl1, const VECTOR2D &aBezierControl2, const VECTOR2D &aEnd, const IMPORTED_STROKE &aStroke)
VECTOR2D m_bezierControl2
VECTOR2D m_bezierControl1
A clone of IMPORTED_STROKE, but with floating-point width.
void Transform(const MATRIX3x3D &aTransform, const VECTOR2D &aTranslation) override
GR_TEXT_H_ALIGN_T m_hJustify
IMPORTED_TEXT(const VECTOR2D &aOrigin, const wxString &aText, double aHeight, double aWidth, double aThickness, double aOrientation, GR_TEXT_H_ALIGN_T aHJustify, GR_TEXT_V_ALIGN_T aVJustify, const COLOR4D &aColor)
GR_TEXT_V_ALIGN_T m_vJustify
BOX2D GetBoundingBox() const override
virtual std::unique_ptr< IMPORTED_SHAPE > clone() const override
void ImportTo(GRAPHICS_IMPORTER &aImporter) const override
A color representation with 4 components: red, green, blue, alpha.
T EuclideanNorm() const
Compute the Euclidean norm of the vector, which is defined as sqrt(x ** 2 + y ** 2).
MATRIX3x3< double > MATRIX3x3D
GR_TEXT_H_ALIGN_T
This is API surface mapped to common.types.HorizontalAlignment.
GR_TEXT_V_ALIGN_T
This is API surface mapped to common.types.VertialAlignment.
VECTOR2< double > VECTOR2D