SVG_IMPORT_PLUGIN: enable postprocessing of polygons with degeneracy and holes
Fixes https://gitlab.com/kicad/code/kicad/-/issues/6739
This commit is contained in:
parent
3fce15f442
commit
01d1f8723c
|
@ -85,13 +85,17 @@ bool SVG_IMPORT_PLUGIN::Import()
|
||||||
default: break;
|
default: break;
|
||||||
}
|
}
|
||||||
|
|
||||||
m_importer->NewShape( rule );
|
m_internalImporter.NewShape( rule );
|
||||||
|
|
||||||
for( NSVGpath* path = shape->paths; path != nullptr; path = path->next )
|
for( NSVGpath* path = shape->paths; path != nullptr; path = path->next )
|
||||||
DrawPath( path->pts, path->npts, path->closed, shape->fill.type == NSVG_PAINT_COLOR,
|
DrawPath( path->pts, path->npts, path->closed, shape->fill.type == NSVG_PAINT_COLOR,
|
||||||
lineWidth );
|
lineWidth );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
m_internalImporter.PostprocessNestedPolygons();
|
||||||
|
wxCHECK( m_importer, false );
|
||||||
|
m_internalImporter.ImportTo( *m_importer );
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -168,7 +172,7 @@ void SVG_IMPORT_PLUGIN::DrawCubicBezierCurve( const float* aPoints,
|
||||||
|
|
||||||
void SVG_IMPORT_PLUGIN::DrawPolygon( const std::vector< VECTOR2D >& aPoints, double aWidth )
|
void SVG_IMPORT_PLUGIN::DrawPolygon( const std::vector< VECTOR2D >& aPoints, double aWidth )
|
||||||
{
|
{
|
||||||
m_importer->AddPolygon( aPoints, aWidth );
|
m_internalImporter.AddPolygon( aPoints, aWidth );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -177,7 +181,7 @@ void SVG_IMPORT_PLUGIN::DrawLineSegments( const std::vector< VECTOR2D >& aPoints
|
||||||
unsigned int numLineStartPoints = aPoints.size() - 1;
|
unsigned int numLineStartPoints = aPoints.size() - 1;
|
||||||
|
|
||||||
for( unsigned int pointIndex = 0; pointIndex < numLineStartPoints; ++pointIndex )
|
for( unsigned int pointIndex = 0; pointIndex < numLineStartPoints; ++pointIndex )
|
||||||
m_importer->AddLine( aPoints[ pointIndex ], aPoints[ pointIndex + 1 ], aWidth );
|
m_internalImporter.AddLine( aPoints[ pointIndex ], aPoints[ pointIndex + 1 ], aWidth );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -29,6 +29,7 @@
|
||||||
#include "nanosvg.h"
|
#include "nanosvg.h"
|
||||||
|
|
||||||
#include "graphics_import_plugin.h"
|
#include "graphics_import_plugin.h"
|
||||||
|
#include "graphics_importer_buffer.h"
|
||||||
#include <math/vector2d.h>
|
#include <math/vector2d.h>
|
||||||
#include <wildcards_and_files_ext.h>
|
#include <wildcards_and_files_ext.h>
|
||||||
|
|
||||||
|
@ -85,6 +86,8 @@ private:
|
||||||
|
|
||||||
wxString m_messages; // messages generated during svg file parsing.
|
wxString m_messages; // messages generated during svg file parsing.
|
||||||
// Each message ends by '\n'
|
// Each message ends by '\n'
|
||||||
|
|
||||||
|
GRAPHICS_IMPORTER_BUFFER m_internalImporter;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif /* SVG_IMPORT_PLUGIN_H */
|
#endif /* SVG_IMPORT_PLUGIN_H */
|
||||||
|
|
Loading…
Reference in New Issue