Fabmaster: handle FIG_RECTANGLE
This commit is contained in:
@@ -1200,6 +1200,11 @@ FABMASTER::GRAPHIC_ARC* FABMASTER::processCircle( const GRAPHIC_DATA& aData, dou
|
||||
FABMASTER::GRAPHIC_RECTANGLE* FABMASTER::processRectangle( const FABMASTER::GRAPHIC_DATA& aData,
|
||||
double aScale )
|
||||
{
|
||||
/*
|
||||
* Examples:
|
||||
* S!ROUTE KEEPOUT!BOTTOM!RECTANGLE!259!10076 1!-90.00!-1000.00!-60.00!-990.00!1!!!!!!
|
||||
*/
|
||||
|
||||
GRAPHIC_RECTANGLE* new_rect = new GRAPHIC_RECTANGLE;
|
||||
|
||||
new_rect->shape = GR_SHAPE_RECTANGLE;
|
||||
@@ -1214,6 +1219,34 @@ FABMASTER::GRAPHIC_RECTANGLE* FABMASTER::processRectangle( const FABMASTER::GRAP
|
||||
}
|
||||
|
||||
|
||||
FABMASTER::GRAPHIC_RECTANGLE* FABMASTER::processFigRectangle( const FABMASTER::GRAPHIC_DATA& aData,
|
||||
double aScale )
|
||||
{
|
||||
/*
|
||||
* Examples:
|
||||
* S!MANUFACTURING!NCLEGEND-1-10!FIG_RECTANGLE!6!8318 1!4891.50!1201.00!35.43!26.57!0!!!!!!
|
||||
*/
|
||||
|
||||
auto new_rect = std::make_unique<GRAPHIC_RECTANGLE>();
|
||||
|
||||
const int center_x = KiROUND( readDouble( aData.graphic_data1 ) * aScale );
|
||||
const int center_y = -KiROUND( readDouble( aData.graphic_data2 ) * aScale );
|
||||
|
||||
const int size_x = KiROUND( readDouble( aData.graphic_data3 ) * aScale );
|
||||
const int size_y = KiROUND( readDouble( aData.graphic_data4 ) * aScale );
|
||||
|
||||
new_rect->shape = GR_SHAPE_RECTANGLE;
|
||||
new_rect->start_x = center_x - size_x / 2;
|
||||
new_rect->start_y = center_y + size_y / 2;
|
||||
new_rect->end_x = center_x + size_x / 2;
|
||||
new_rect->end_y = center_y - size_y / 2;
|
||||
new_rect->fill = aData.graphic_data5 == "1";
|
||||
new_rect->width = 0;
|
||||
|
||||
return new_rect.release();
|
||||
}
|
||||
|
||||
|
||||
FABMASTER::GRAPHIC_TEXT* FABMASTER::processText( const FABMASTER::GRAPHIC_DATA& aData,
|
||||
double aScale )
|
||||
{
|
||||
@@ -1272,6 +1305,8 @@ FABMASTER::GRAPHIC_ITEM* FABMASTER::processGraphic( const GRAPHIC_DATA& aData, d
|
||||
retval = processCircle( aData, aScale );
|
||||
else if( aData.graphic_dataname == "RECTANGLE" )
|
||||
retval = processRectangle( aData, aScale );
|
||||
else if( aData.graphic_dataname == "FIG_RECTANGLE" )
|
||||
retval = processFigRectangle( aData, aScale );
|
||||
else if( aData.graphic_dataname == "TEXT" )
|
||||
retval = processText( aData, aScale );
|
||||
|
||||
@@ -2854,6 +2889,16 @@ bool FABMASTER::loadPolygon( BOARD* aBoard, const std::unique_ptr<FABMASTER::TRA
|
||||
new_shape->SetCenter( VECTOR2I( src.center_x, src.center_y ) );
|
||||
new_shape->SetRadius( src.radius );
|
||||
}
|
||||
else if( seg->shape == GR_SHAPE_RECTANGLE )
|
||||
{
|
||||
const GRAPHIC_RECTANGLE& src = static_cast<const GRAPHIC_RECTANGLE&>( *seg );
|
||||
|
||||
new_shape->SetShape( SHAPE_T::RECTANGLE );
|
||||
new_shape->SetStart( VECTOR2I( src.start_x, src.start_y ) );
|
||||
new_shape->SetEnd( VECTOR2I( src.end_x, src.end_y ) );
|
||||
|
||||
new_shape->SetFilled( src.fill );
|
||||
}
|
||||
else
|
||||
{
|
||||
wxLogError( _( "Unhandled shape type %d in polygon on layer %s, tag %d" ),
|
||||
|
||||
@@ -547,6 +547,7 @@ private:
|
||||
GRAPHIC_LINE* processLine( const GRAPHIC_DATA& aData, double aScale );
|
||||
GRAPHIC_TEXT* processText( const GRAPHIC_DATA& aData, double aScale );
|
||||
GRAPHIC_RECTANGLE* processRectangle( const GRAPHIC_DATA& aData, double aScale );
|
||||
GRAPHIC_RECTANGLE* processFigRectangle( const GRAPHIC_DATA& aData, double aScale );
|
||||
|
||||
PCB_LAYER_ID getLayer( const std::string& aLayerName );
|
||||
bool assignLayers();
|
||||
|
||||
Reference in New Issue
Block a user