mirror of
https://gitlab.com/kicad/code/kicad.git
synced 2025-04-20 00:21:31 +00:00
enum class PCB_SHAPE_TYPE_T
This commit is contained in:
parent
a69256e15b
commit
21fde9b629
3d-viewer/3d_canvas
include
pcbnew
autorouter
board_item.cppboard_items_to_polygon_shape_transform.cppconvert_drawsegment_list_to_polygon.cppdialogs
drc
exporters
footprint.cppfp_shape.cppfp_shape.hgraphics_cleaner.cppimport_gfx
microwave
pad_custom_shape_functions.cpppcb_painter.cpppcb_shape.cpppcb_shape.hplot_brditems_plotter.cppplugins
altium
cadstar
eagle
fabmaster
geda
kicad
legacy
pcad
router
specctra_import_export
tools
qa/pcbnew_utils
@ -647,7 +647,7 @@ void BOARD_ADAPTER::addShapeWithClearance( const PCB_SHAPE* aShape,
|
||||
|
||||
switch( aShape->GetShape() )
|
||||
{
|
||||
case S_CIRCLE:
|
||||
case PCB_SHAPE_TYPE::CIRCLE:
|
||||
{
|
||||
const SFVEC2F center3DU( aShape->GetCenter().x * m_biuTo3Dunits,
|
||||
-aShape->GetCenter().y * m_biuTo3Dunits );
|
||||
@ -665,7 +665,7 @@ void BOARD_ADAPTER::addShapeWithClearance( const PCB_SHAPE* aShape,
|
||||
}
|
||||
break;
|
||||
|
||||
case S_RECT:
|
||||
case PCB_SHAPE_TYPE::RECT:
|
||||
if( aShape->IsFilled() )
|
||||
{
|
||||
SHAPE_POLY_SET polyList;
|
||||
@ -697,7 +697,7 @@ void BOARD_ADAPTER::addShapeWithClearance( const PCB_SHAPE* aShape,
|
||||
}
|
||||
break;
|
||||
|
||||
case S_ARC:
|
||||
case PCB_SHAPE_TYPE::ARC:
|
||||
{
|
||||
unsigned int segCount = GetCircleSegmentCount( aShape->GetBoundingBox().GetSizeMax() );
|
||||
|
||||
@ -706,7 +706,7 @@ void BOARD_ADAPTER::addShapeWithClearance( const PCB_SHAPE* aShape,
|
||||
}
|
||||
break;
|
||||
|
||||
case S_SEGMENT:
|
||||
case PCB_SHAPE_TYPE::SEGMENT:
|
||||
{
|
||||
const SFVEC2F start3DU( aShape->GetStart().x * m_biuTo3Dunits,
|
||||
-aShape->GetStart().y * m_biuTo3Dunits );
|
||||
@ -727,8 +727,8 @@ void BOARD_ADAPTER::addShapeWithClearance( const PCB_SHAPE* aShape,
|
||||
}
|
||||
break;
|
||||
|
||||
case S_CURVE:
|
||||
case S_POLYGON:
|
||||
case PCB_SHAPE_TYPE::CURVE:
|
||||
case PCB_SHAPE_TYPE::POLYGON:
|
||||
{
|
||||
SHAPE_POLY_SET polyList;
|
||||
|
||||
|
@ -45,29 +45,29 @@ class PCB_GROUP;
|
||||
/**
|
||||
* The set of shapes for PCB graphics and tracks and footprint graphics in the .m_Shape member
|
||||
*/
|
||||
enum PCB_SHAPE_TYPE_T
|
||||
enum class PCB_SHAPE_TYPE : int
|
||||
{
|
||||
S_SEGMENT = 0, ///< usual segment : line with rounded ends
|
||||
S_RECT, ///< segment with non rounded ends
|
||||
S_ARC, ///< Arcs (with rounded ends)
|
||||
S_CIRCLE, ///< ring
|
||||
S_POLYGON, ///< polygon (not yet used for tracks, but could be in microwave apps)
|
||||
S_CURVE, ///< Bezier Curve
|
||||
S_LAST ///< last value for this list
|
||||
SEGMENT = 0, ///< usual segment : line with rounded ends
|
||||
RECT, ///< segment with non rounded ends
|
||||
ARC, ///< Arcs (with rounded ends)
|
||||
CIRCLE, ///< ring
|
||||
POLYGON, ///< polygon (not yet used for tracks, but could be in microwave apps)
|
||||
CURVE, ///< Bezier Curve
|
||||
LAST ///< last value for this list
|
||||
};
|
||||
|
||||
static inline wxString PCB_SHAPE_TYPE_T_asString( PCB_SHAPE_TYPE_T a )
|
||||
static inline wxString PCB_SHAPE_TYPE_T_asString( PCB_SHAPE_TYPE a )
|
||||
{
|
||||
switch( a )
|
||||
{
|
||||
case S_SEGMENT: return "S_SEGMENT";
|
||||
case S_RECT: return "S_RECT";
|
||||
case S_ARC: return "S_ARC";
|
||||
case S_CIRCLE: return "S_CIRCLE";
|
||||
case S_POLYGON: return "S_POLYGON";
|
||||
case S_CURVE: return "S_CURVE";
|
||||
case S_LAST: return "S_LAST"; // Synthetic value, but if we come across it we're
|
||||
// going to want to know.
|
||||
case PCB_SHAPE_TYPE::SEGMENT: return "S_SEGMENT";
|
||||
case PCB_SHAPE_TYPE::RECT: return "S_RECT";
|
||||
case PCB_SHAPE_TYPE::ARC: return "S_ARC";
|
||||
case PCB_SHAPE_TYPE::CIRCLE: return "S_CIRCLE";
|
||||
case PCB_SHAPE_TYPE::POLYGON: return "S_POLYGON";
|
||||
case PCB_SHAPE_TYPE::CURVE: return "S_CURVE";
|
||||
case PCB_SHAPE_TYPE::LAST: return "S_LAST"; // Synthetic value, but if we come across it we're
|
||||
// going to want to know.
|
||||
}
|
||||
|
||||
return wxEmptyString; // Just to quiet GCC.
|
||||
@ -267,7 +267,7 @@ public:
|
||||
/**
|
||||
* Convert the enum #PCB_SHAPE_TYPE_T integer value to a wxString.
|
||||
*/
|
||||
static wxString ShowShape( PCB_SHAPE_TYPE_T aShape );
|
||||
static wxString ShowShape( PCB_SHAPE_TYPE aShape );
|
||||
|
||||
/**
|
||||
* Move this object.
|
||||
|
@ -777,15 +777,15 @@ void AR_MATRIX::TraceSegmentPcb( PCB_SHAPE* pt_segm, int color, int marge,
|
||||
|
||||
switch( pt_segm->GetShape() )
|
||||
{
|
||||
case S_CIRCLE:
|
||||
case PCB_SHAPE_TYPE::CIRCLE:
|
||||
traceCircle( ux0, uy0, ux1, uy1, half_width, layer, color, op_logic );
|
||||
break;
|
||||
|
||||
case S_ARC:
|
||||
case PCB_SHAPE_TYPE::ARC:
|
||||
traceArc( ux0, uy0, ux1, uy1, pt_segm->GetAngle(), half_width, layer, color, op_logic );
|
||||
break;
|
||||
|
||||
case S_SEGMENT:
|
||||
case PCB_SHAPE_TYPE::SEGMENT:
|
||||
drawSegmentQcq( ux0, uy0, ux1, uy1, half_width, layer, color, op_logic );
|
||||
break;
|
||||
|
||||
|
@ -28,17 +28,17 @@
|
||||
#include <board.h>
|
||||
#include <string>
|
||||
|
||||
wxString BOARD_ITEM::ShowShape( PCB_SHAPE_TYPE_T aShape )
|
||||
wxString BOARD_ITEM::ShowShape( PCB_SHAPE_TYPE aShape )
|
||||
{
|
||||
switch( aShape )
|
||||
{
|
||||
case S_SEGMENT: return _( "Line" );
|
||||
case S_RECT: return _( "Rect" );
|
||||
case S_ARC: return _( "Arc" );
|
||||
case S_CIRCLE: return _( "Circle" );
|
||||
case S_CURVE: return _( "Bezier Curve" );
|
||||
case S_POLYGON: return _( "Polygon" );
|
||||
default: return wxT( "??" );
|
||||
case PCB_SHAPE_TYPE::SEGMENT: return _( "Line" );
|
||||
case PCB_SHAPE_TYPE::RECT: return _( "Rect" );
|
||||
case PCB_SHAPE_TYPE::ARC: return _( "Arc" );
|
||||
case PCB_SHAPE_TYPE::CIRCLE: return _( "Circle" );
|
||||
case PCB_SHAPE_TYPE::CURVE: return _( "Bezier Curve" );
|
||||
case PCB_SHAPE_TYPE::POLYGON: return _( "Polygon" );
|
||||
default: return wxT( "??" );
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -447,7 +447,7 @@ void PCB_SHAPE::TransformShapeWithClearanceToPolygon( SHAPE_POLY_SET& aCornerBuf
|
||||
|
||||
switch( m_shape )
|
||||
{
|
||||
case S_CIRCLE:
|
||||
case PCB_SHAPE_TYPE::CIRCLE:
|
||||
if( IsFilled() )
|
||||
{
|
||||
TransformCircleToPolygon( aCornerBuffer, GetCenter(), GetRadius() + width / 2, aError,
|
||||
@ -460,7 +460,7 @@ void PCB_SHAPE::TransformShapeWithClearanceToPolygon( SHAPE_POLY_SET& aCornerBuf
|
||||
}
|
||||
break;
|
||||
|
||||
case S_RECT:
|
||||
case PCB_SHAPE_TYPE::RECT:
|
||||
{
|
||||
std::vector<wxPoint> pts = GetRectCorners();
|
||||
|
||||
@ -483,16 +483,16 @@ void PCB_SHAPE::TransformShapeWithClearanceToPolygon( SHAPE_POLY_SET& aCornerBuf
|
||||
}
|
||||
break;
|
||||
|
||||
case S_ARC:
|
||||
case PCB_SHAPE_TYPE::ARC:
|
||||
TransformArcToPolygon( aCornerBuffer, GetArcStart(), GetArcMid(), GetArcEnd(), width,
|
||||
aError, aErrorLoc );
|
||||
break;
|
||||
|
||||
case S_SEGMENT:
|
||||
case PCB_SHAPE_TYPE::SEGMENT:
|
||||
TransformOvalToPolygon( aCornerBuffer, m_start, m_end, width, aError, aErrorLoc );
|
||||
break;
|
||||
|
||||
case S_POLYGON:
|
||||
case PCB_SHAPE_TYPE::POLYGON:
|
||||
{
|
||||
if( !IsPolyShapeValid() )
|
||||
break;
|
||||
@ -538,7 +538,7 @@ void PCB_SHAPE::TransformShapeWithClearanceToPolygon( SHAPE_POLY_SET& aCornerBuf
|
||||
}
|
||||
break;
|
||||
|
||||
case S_CURVE: // Bezier curve
|
||||
case PCB_SHAPE_TYPE::CURVE: // Bezier curve
|
||||
{
|
||||
std::vector<wxPoint> ctrlPoints = { m_start, m_bezierC1, m_bezierC2, m_end };
|
||||
BEZIER_POLY converter( ctrlPoints );
|
||||
|
@ -96,7 +96,7 @@ static PCB_SHAPE* findNext( PCB_SHAPE* aShape, const wxPoint& aPoint,
|
||||
|
||||
switch( graphic->GetShape() )
|
||||
{
|
||||
case S_ARC:
|
||||
case PCB_SHAPE_TYPE::ARC:
|
||||
if( aPoint == graphic->GetArcStart() || aPoint == graphic->GetArcEnd() )
|
||||
return graphic;
|
||||
|
||||
@ -122,7 +122,7 @@ static PCB_SHAPE* findNext( PCB_SHAPE* aShape, const wxPoint& aPoint,
|
||||
|
||||
switch( graphic->GetShape() )
|
||||
{
|
||||
case S_ARC:
|
||||
case PCB_SHAPE_TYPE::ARC:
|
||||
d_sq = ( pt - graphic->GetArcStart() ).SquaredEuclideanNorm();
|
||||
|
||||
if( d_sq < closest_dist_sq )
|
||||
@ -201,8 +201,8 @@ bool ConvertOutlineToPolygon( std::vector<PCB_SHAPE*>& aSegList, SHAPE_POLY_SET&
|
||||
|
||||
switch( graphic->GetShape() )
|
||||
{
|
||||
case S_RECT:
|
||||
case S_SEGMENT:
|
||||
case PCB_SHAPE_TYPE::RECT:
|
||||
case PCB_SHAPE_TYPE::SEGMENT:
|
||||
{
|
||||
if( graphic->GetStart().x < xmin.x )
|
||||
{
|
||||
@ -218,7 +218,7 @@ bool ConvertOutlineToPolygon( std::vector<PCB_SHAPE*>& aSegList, SHAPE_POLY_SET&
|
||||
}
|
||||
break;
|
||||
|
||||
case S_ARC:
|
||||
case PCB_SHAPE_TYPE::ARC:
|
||||
{
|
||||
wxPoint pstart = graphic->GetArcStart();
|
||||
wxPoint center = graphic->GetCenter();
|
||||
@ -244,7 +244,7 @@ bool ConvertOutlineToPolygon( std::vector<PCB_SHAPE*>& aSegList, SHAPE_POLY_SET&
|
||||
}
|
||||
break;
|
||||
|
||||
case S_CIRCLE:
|
||||
case PCB_SHAPE_TYPE::CIRCLE:
|
||||
{
|
||||
wxPoint pt = graphic->GetCenter();
|
||||
|
||||
@ -260,7 +260,7 @@ bool ConvertOutlineToPolygon( std::vector<PCB_SHAPE*>& aSegList, SHAPE_POLY_SET&
|
||||
}
|
||||
break;
|
||||
|
||||
case S_CURVE:
|
||||
case PCB_SHAPE_TYPE::CURVE:
|
||||
{
|
||||
graphic->RebuildBezierToSegmentsPointsList( graphic->GetWidth() );
|
||||
|
||||
@ -275,7 +275,7 @@ bool ConvertOutlineToPolygon( std::vector<PCB_SHAPE*>& aSegList, SHAPE_POLY_SET&
|
||||
}
|
||||
break;
|
||||
|
||||
case S_POLYGON:
|
||||
case PCB_SHAPE_TYPE::POLYGON:
|
||||
{
|
||||
const SHAPE_POLY_SET poly = graphic->GetPolyShape();
|
||||
double orientation = 0.0;
|
||||
@ -330,13 +330,13 @@ bool ConvertOutlineToPolygon( std::vector<PCB_SHAPE*>& aSegList, SHAPE_POLY_SET&
|
||||
startCandidates.erase( graphic );
|
||||
|
||||
// Output the outline perimeter as polygon.
|
||||
if( graphic->GetShape() == S_CIRCLE )
|
||||
if( graphic->GetShape() == PCB_SHAPE_TYPE::CIRCLE )
|
||||
{
|
||||
TransformCircleToPolygon( aPolygons, graphic->GetCenter(), graphic->GetRadius(),
|
||||
ARC_LOW_DEF, ERROR_INSIDE );
|
||||
polygonComplete = true;
|
||||
}
|
||||
else if( graphic->GetShape() == S_RECT )
|
||||
else if( graphic->GetShape() == PCB_SHAPE_TYPE::RECT )
|
||||
{
|
||||
std::vector<wxPoint> pts = graphic->GetRectCorners();
|
||||
|
||||
@ -352,7 +352,7 @@ bool ConvertOutlineToPolygon( std::vector<PCB_SHAPE*>& aSegList, SHAPE_POLY_SET&
|
||||
|
||||
polygonComplete = true;
|
||||
}
|
||||
else if( graphic->GetShape() == S_POLYGON )
|
||||
else if( graphic->GetShape() == PCB_SHAPE_TYPE::POLYGON )
|
||||
{
|
||||
double orientation = 0.0;
|
||||
VECTOR2I offset = VECTOR2I( 0, 0 );
|
||||
@ -388,7 +388,7 @@ bool ConvertOutlineToPolygon( std::vector<PCB_SHAPE*>& aSegList, SHAPE_POLY_SET&
|
||||
// Polygon start point. Arbitrarily chosen end of the
|
||||
// segment and build the poly from here.
|
||||
|
||||
wxPoint startPt = graphic->GetShape() == S_ARC ? graphic->GetArcEnd()
|
||||
wxPoint startPt = graphic->GetShape() == PCB_SHAPE_TYPE::ARC ? graphic->GetArcEnd()
|
||||
: graphic->GetEnd();
|
||||
|
||||
prevPt = startPt;
|
||||
@ -402,8 +402,8 @@ bool ConvertOutlineToPolygon( std::vector<PCB_SHAPE*>& aSegList, SHAPE_POLY_SET&
|
||||
{
|
||||
switch( graphic->GetShape() )
|
||||
{
|
||||
case S_RECT:
|
||||
case S_CIRCLE:
|
||||
case PCB_SHAPE_TYPE::RECT:
|
||||
case PCB_SHAPE_TYPE::CIRCLE:
|
||||
{
|
||||
// As a non-first item, closed shapes can't be anything but self-intersecting
|
||||
|
||||
@ -419,7 +419,7 @@ bool ConvertOutlineToPolygon( std::vector<PCB_SHAPE*>& aSegList, SHAPE_POLY_SET&
|
||||
}
|
||||
break;
|
||||
|
||||
case S_SEGMENT:
|
||||
case PCB_SHAPE_TYPE::SEGMENT:
|
||||
{
|
||||
wxPoint nextPt;
|
||||
|
||||
@ -437,7 +437,7 @@ bool ConvertOutlineToPolygon( std::vector<PCB_SHAPE*>& aSegList, SHAPE_POLY_SET&
|
||||
}
|
||||
break;
|
||||
|
||||
case S_ARC:
|
||||
case PCB_SHAPE_TYPE::ARC:
|
||||
{
|
||||
// We do not support arcs in polygons, so approximate an arc with a series of
|
||||
// short lines and put those line segments into the !same! PATH.
|
||||
@ -476,7 +476,7 @@ bool ConvertOutlineToPolygon( std::vector<PCB_SHAPE*>& aSegList, SHAPE_POLY_SET&
|
||||
}
|
||||
break;
|
||||
|
||||
case S_CURVE:
|
||||
case PCB_SHAPE_TYPE::CURVE:
|
||||
{
|
||||
// We do not support Bezier curves in polygons, so approximate with a series
|
||||
// of short lines and put those line segments into the !same! PATH.
|
||||
@ -592,7 +592,7 @@ bool ConvertOutlineToPolygon( std::vector<PCB_SHAPE*>& aSegList, SHAPE_POLY_SET&
|
||||
|
||||
// Both circles and polygons on the edge cuts layer are closed items that
|
||||
// do not connect to other elements, so we process them independently
|
||||
if( graphic->GetShape() == S_POLYGON )
|
||||
if( graphic->GetShape() == PCB_SHAPE_TYPE::POLYGON )
|
||||
{
|
||||
double orientation = 0.0;
|
||||
VECTOR2I offset = VECTOR2I( 0, 0 );
|
||||
@ -619,7 +619,7 @@ bool ConvertOutlineToPolygon( std::vector<PCB_SHAPE*>& aSegList, SHAPE_POLY_SET&
|
||||
prevPt = (wxPoint) pt;
|
||||
}
|
||||
}
|
||||
else if( graphic->GetShape() == S_CIRCLE )
|
||||
else if( graphic->GetShape() == PCB_SHAPE_TYPE::CIRCLE )
|
||||
{
|
||||
// make a circle by segments;
|
||||
wxPoint center = graphic->GetCenter();
|
||||
@ -646,7 +646,7 @@ bool ConvertOutlineToPolygon( std::vector<PCB_SHAPE*>& aSegList, SHAPE_POLY_SET&
|
||||
prevPt = nextPt;
|
||||
}
|
||||
}
|
||||
else if( graphic->GetShape() == S_RECT )
|
||||
else if( graphic->GetShape() == PCB_SHAPE_TYPE::RECT )
|
||||
{
|
||||
std::vector<wxPoint> pts = graphic->GetRectCorners();
|
||||
|
||||
@ -676,7 +676,7 @@ bool ConvertOutlineToPolygon( std::vector<PCB_SHAPE*>& aSegList, SHAPE_POLY_SET&
|
||||
{
|
||||
switch( graphic->GetShape() )
|
||||
{
|
||||
case S_SEGMENT:
|
||||
case PCB_SHAPE_TYPE::SEGMENT:
|
||||
{
|
||||
wxPoint nextPt;
|
||||
|
||||
@ -695,7 +695,7 @@ bool ConvertOutlineToPolygon( std::vector<PCB_SHAPE*>& aSegList, SHAPE_POLY_SET&
|
||||
}
|
||||
break;
|
||||
|
||||
case S_ARC:
|
||||
case PCB_SHAPE_TYPE::ARC:
|
||||
// We do not support arcs in polygons, so approximate an arc with a series of
|
||||
// short lines and put those line segments into the !same! PATH.
|
||||
{
|
||||
@ -734,7 +734,7 @@ bool ConvertOutlineToPolygon( std::vector<PCB_SHAPE*>& aSegList, SHAPE_POLY_SET&
|
||||
}
|
||||
break;
|
||||
|
||||
case S_CURVE:
|
||||
case PCB_SHAPE_TYPE::CURVE:
|
||||
// We do not support Bezier curves in polygons, so approximate with a series
|
||||
// of short lines and put those line segments into the !same! PATH.
|
||||
{
|
||||
|
@ -155,11 +155,11 @@ bool DIALOG_GRAPHIC_ITEM_PROPERTIES::TransferDataToWindow()
|
||||
return false;
|
||||
|
||||
// Only an arc has a angle parameter. So do not show this parameter for other shapes
|
||||
if( m_item->GetShape() != S_ARC )
|
||||
if( m_item->GetShape() != PCB_SHAPE_TYPE::ARC )
|
||||
m_angle.Show( false );
|
||||
|
||||
// Only a Bezeier curve has control points. So do not show these parameters for other shapes
|
||||
if( m_item->GetShape() != S_CURVE )
|
||||
if( m_item->GetShape() != PCB_SHAPE_TYPE::CURVE )
|
||||
{
|
||||
m_bezierCtrlPt1Label->Show( false );
|
||||
m_bezierCtrl1X.Show( false );
|
||||
@ -172,7 +172,7 @@ bool DIALOG_GRAPHIC_ITEM_PROPERTIES::TransferDataToWindow()
|
||||
// Change texts according to the segment shape:
|
||||
switch( m_item->GetShape() )
|
||||
{
|
||||
case S_CIRCLE:
|
||||
case PCB_SHAPE_TYPE::CIRCLE:
|
||||
SetTitle( _( "Circle Properties" ) );
|
||||
m_startPointLabel->SetLabel( _( "Center" ) );
|
||||
|
||||
@ -185,25 +185,25 @@ bool DIALOG_GRAPHIC_ITEM_PROPERTIES::TransferDataToWindow()
|
||||
m_filledCtrl->Show( true );
|
||||
break;
|
||||
|
||||
case S_ARC:
|
||||
case PCB_SHAPE_TYPE::ARC:
|
||||
SetTitle( _( "Arc Properties" ) );
|
||||
m_AngleValue = m_item->GetAngle() / 10.0;
|
||||
m_filledCtrl->Show( false );
|
||||
break;
|
||||
|
||||
case S_POLYGON:
|
||||
case PCB_SHAPE_TYPE::POLYGON:
|
||||
SetTitle( _( "Polygon Properties" ) );
|
||||
m_sizerLeft->Show( false );
|
||||
m_filledCtrl->Show( true );
|
||||
break;
|
||||
|
||||
case S_RECT:
|
||||
case PCB_SHAPE_TYPE::RECT:
|
||||
SetTitle( _( "Rectangle Properties" ) );
|
||||
|
||||
m_filledCtrl->Show( true );
|
||||
break;
|
||||
|
||||
case S_SEGMENT:
|
||||
case PCB_SHAPE_TYPE::SEGMENT:
|
||||
SetTitle( _( "Line Segment Properties" ) );
|
||||
|
||||
if( m_item->GetStart().x == m_item->GetEnd().x )
|
||||
@ -218,7 +218,7 @@ bool DIALOG_GRAPHIC_ITEM_PROPERTIES::TransferDataToWindow()
|
||||
break;
|
||||
}
|
||||
|
||||
if( m_item->GetShape() == S_ARC )
|
||||
if( m_item->GetShape() == PCB_SHAPE_TYPE::ARC )
|
||||
{
|
||||
m_startX.SetValue( m_item->GetArcStart().x );
|
||||
m_startY.SetValue( m_item->GetArcStart().y );
|
||||
@ -234,11 +234,11 @@ bool DIALOG_GRAPHIC_ITEM_PROPERTIES::TransferDataToWindow()
|
||||
m_startY.SetValue( m_item->GetStart().y );
|
||||
}
|
||||
|
||||
if( m_item->GetShape() == S_CIRCLE )
|
||||
if( m_item->GetShape() == PCB_SHAPE_TYPE::CIRCLE )
|
||||
{
|
||||
m_endX.SetValue( m_item->GetRadius() );
|
||||
}
|
||||
else if( m_item->GetShape() == S_ARC )
|
||||
else if( m_item->GetShape() == PCB_SHAPE_TYPE::ARC )
|
||||
{
|
||||
m_endX.SetValue( m_item->GetArcEnd().x );
|
||||
m_endY.SetValue( m_item->GetArcEnd().y );
|
||||
@ -290,7 +290,7 @@ bool DIALOG_GRAPHIC_ITEM_PROPERTIES::TransferDataFromWindow()
|
||||
BOARD_COMMIT commit( m_parent );
|
||||
commit.Modify( m_item );
|
||||
|
||||
if( m_item->GetShape() == S_ARC )
|
||||
if( m_item->GetShape() == PCB_SHAPE_TYPE::ARC )
|
||||
{
|
||||
m_item->SetArcStart( wxPoint( m_startX.GetValue(), m_startY.GetValue() ) );
|
||||
}
|
||||
@ -305,11 +305,11 @@ bool DIALOG_GRAPHIC_ITEM_PROPERTIES::TransferDataFromWindow()
|
||||
m_item->SetStartY( m_startY.GetValue() );
|
||||
}
|
||||
|
||||
if( m_item->GetShape() == S_CIRCLE )
|
||||
if( m_item->GetShape() == PCB_SHAPE_TYPE::CIRCLE )
|
||||
{
|
||||
m_item->SetEnd( m_item->GetStart() + wxPoint( m_endX.GetValue(), 0 ) );
|
||||
}
|
||||
else if( m_item->GetShape() == S_ARC )
|
||||
else if( m_item->GetShape() == PCB_SHAPE_TYPE::ARC )
|
||||
{
|
||||
m_item->SetArcEnd( wxPoint( m_endX.GetValue(), m_endY.GetValue() ) );
|
||||
}
|
||||
@ -325,13 +325,13 @@ bool DIALOG_GRAPHIC_ITEM_PROPERTIES::TransferDataFromWindow()
|
||||
}
|
||||
|
||||
// For Bezier curve: Set the two control points
|
||||
if( m_item->GetShape() == S_CURVE )
|
||||
if( m_item->GetShape() == PCB_SHAPE_TYPE::CURVE )
|
||||
{
|
||||
m_item->SetBezControl1( wxPoint( m_bezierCtrl1X.GetValue(), m_bezierCtrl1Y.GetValue() ) );
|
||||
m_item->SetBezControl2( wxPoint( m_bezierCtrl2X.GetValue(), m_bezierCtrl2Y.GetValue() ) );
|
||||
}
|
||||
|
||||
if( m_item->GetShape() == S_ARC )
|
||||
if( m_item->GetShape() == PCB_SHAPE_TYPE::ARC )
|
||||
{
|
||||
m_item->SetCenter( GetArcCenter( m_item->GetArcStart(), m_item->GetArcEnd(), m_AngleValue ) );
|
||||
m_item->SetAngle( m_AngleValue * 10.0, false );
|
||||
@ -343,7 +343,7 @@ bool DIALOG_GRAPHIC_ITEM_PROPERTIES::TransferDataFromWindow()
|
||||
m_fp_item->SetStart0( m_fp_item->GetStart() );
|
||||
m_fp_item->SetEnd0( m_fp_item->GetEnd() );
|
||||
|
||||
if( m_fp_item->GetShape() == S_CURVE )
|
||||
if( m_fp_item->GetShape() == PCB_SHAPE_TYPE::CURVE )
|
||||
{
|
||||
m_fp_item->SetBezier0_C1( wxPoint( m_bezierCtrl1X.GetValue(), m_bezierCtrl1Y.GetValue() ) );
|
||||
m_fp_item->SetBezier0_C2( wxPoint( m_bezierCtrl2X.GetValue(), m_bezierCtrl2Y.GetValue() ) );
|
||||
@ -375,28 +375,28 @@ bool DIALOG_GRAPHIC_ITEM_PROPERTIES::Validate()
|
||||
// Type specific checks.
|
||||
switch( m_item->GetShape() )
|
||||
{
|
||||
case S_ARC:
|
||||
case PCB_SHAPE_TYPE::ARC:
|
||||
// Check angle of arc.
|
||||
if( m_angle.GetValue() == 0 )
|
||||
error_msgs.Add( _( "The arc angle cannot be zero." ) );
|
||||
|
||||
KI_FALLTHROUGH;
|
||||
|
||||
case S_CIRCLE:
|
||||
case PCB_SHAPE_TYPE::CIRCLE:
|
||||
// Check radius.
|
||||
if( m_startX.GetValue() == m_endX.GetValue() && m_startY.GetValue() == m_endY.GetValue() )
|
||||
error_msgs.Add( _( "The radius cannot be zero." ) );
|
||||
break;
|
||||
|
||||
case S_RECT:
|
||||
case PCB_SHAPE_TYPE::RECT:
|
||||
// Check for null rect.
|
||||
if( m_startX.GetValue() == m_endX.GetValue() && m_startY.GetValue() == m_endY.GetValue() )
|
||||
error_msgs.Add( _( "The rectangle cannot be empty." ) );
|
||||
break;
|
||||
|
||||
case S_POLYGON:
|
||||
case S_SEGMENT:
|
||||
case S_CURVE:
|
||||
case PCB_SHAPE_TYPE::POLYGON:
|
||||
case PCB_SHAPE_TYPE::SEGMENT:
|
||||
case PCB_SHAPE_TYPE::CURVE:
|
||||
break;
|
||||
|
||||
default:
|
||||
|
@ -75,7 +75,7 @@ bool DIALOG_PAD_PRIMITIVES_PROPERTIES::TransferDataToWindow()
|
||||
|
||||
switch( m_shape->GetShape() )
|
||||
{
|
||||
case S_SEGMENT: // Segment with rounded ends
|
||||
case PCB_SHAPE_TYPE::SEGMENT: // Segment with rounded ends
|
||||
SetTitle( _( "Segment" ) );
|
||||
m_startX.SetValue( m_shape->GetStart().x );
|
||||
m_startY.SetValue( m_shape->GetStart().y );
|
||||
@ -93,7 +93,7 @@ bool DIALOG_PAD_PRIMITIVES_PROPERTIES::TransferDataToWindow()
|
||||
m_filledCtrl->Show( false );
|
||||
break;
|
||||
|
||||
case S_CURVE: // Bezier line
|
||||
case PCB_SHAPE_TYPE::CURVE: // Bezier line
|
||||
SetTitle( _( "Bezier" ) );
|
||||
m_startX.SetValue( m_shape->GetStart().x );
|
||||
m_startY.SetValue( m_shape->GetStart().y );
|
||||
@ -107,7 +107,7 @@ bool DIALOG_PAD_PRIMITIVES_PROPERTIES::TransferDataToWindow()
|
||||
m_filledCtrl->Show( false );
|
||||
break;
|
||||
|
||||
case S_ARC: // Arc with rounded ends
|
||||
case PCB_SHAPE_TYPE::ARC: // Arc with rounded ends
|
||||
SetTitle( _( "Arc" ) );
|
||||
m_startX.SetValue( m_shape->GetEnd().x ); // confusingly, the start point of the arc
|
||||
m_startY.SetValue( m_shape->GetEnd().y );
|
||||
@ -128,7 +128,7 @@ bool DIALOG_PAD_PRIMITIVES_PROPERTIES::TransferDataToWindow()
|
||||
m_filledCtrl->Show( false );
|
||||
break;
|
||||
|
||||
case S_CIRCLE: // ring or circle
|
||||
case PCB_SHAPE_TYPE::CIRCLE: // ring or circle
|
||||
if( m_shape->GetWidth() )
|
||||
SetTitle( _( "Ring" ) );
|
||||
else
|
||||
@ -155,7 +155,7 @@ bool DIALOG_PAD_PRIMITIVES_PROPERTIES::TransferDataToWindow()
|
||||
m_filledCtrl->Show( true );
|
||||
break;
|
||||
|
||||
case S_POLYGON: // polygon
|
||||
case PCB_SHAPE_TYPE::POLYGON: // polygon
|
||||
// polygon has a specific dialog editor. So nothing here
|
||||
break;
|
||||
|
||||
@ -182,19 +182,19 @@ bool DIALOG_PAD_PRIMITIVES_PROPERTIES::TransferDataFromWindow()
|
||||
|
||||
switch( m_shape->GetShape() )
|
||||
{
|
||||
case S_SEGMENT: // Segment with rounded ends
|
||||
case PCB_SHAPE_TYPE::SEGMENT: // Segment with rounded ends
|
||||
m_shape->SetStart( wxPoint( m_startX.GetValue(), m_startY.GetValue() ) );
|
||||
m_shape->SetEnd( wxPoint( m_endX.GetValue(), m_endY.GetValue() ) );
|
||||
break;
|
||||
|
||||
case S_CURVE: // Segment with rounded ends
|
||||
case PCB_SHAPE_TYPE::CURVE: // Segment with rounded ends
|
||||
m_shape->SetStart( wxPoint( m_startX.GetValue(), m_startY.GetValue() ) );
|
||||
m_shape->SetEnd( wxPoint( m_endX.GetValue(), m_endY.GetValue() ) );
|
||||
m_shape->SetBezControl1( wxPoint( m_ctrl1X.GetValue(), m_ctrl1Y.GetValue() ) );
|
||||
m_shape->SetBezControl1( wxPoint( m_ctrl2X.GetValue(), m_ctrl2Y.GetValue() ) );
|
||||
break;
|
||||
|
||||
case S_ARC: // Arc with rounded ends
|
||||
case PCB_SHAPE_TYPE::ARC: // Arc with rounded ends
|
||||
// NB: we store the center of the arc in m_Start, and, confusingly,
|
||||
// the start point in m_End
|
||||
m_shape->SetStart( wxPoint( m_endX.GetValue(), m_endY.GetValue() ) );
|
||||
@ -203,12 +203,12 @@ bool DIALOG_PAD_PRIMITIVES_PROPERTIES::TransferDataFromWindow()
|
||||
m_shape->SetAngle( m_radius.GetValue() );
|
||||
break;
|
||||
|
||||
case S_CIRCLE: // ring or circle
|
||||
case PCB_SHAPE_TYPE::CIRCLE: // ring or circle
|
||||
m_shape->SetStart( wxPoint( m_startX.GetValue(), m_startY.GetValue() ) );
|
||||
m_shape->SetEnd( m_shape->GetStart() + wxPoint( m_radius.GetValue(), 0 ) );
|
||||
break;
|
||||
|
||||
case S_POLYGON: // polygon
|
||||
case PCB_SHAPE_TYPE::POLYGON: // polygon
|
||||
// polygon has a specific dialog editor. So nothing here
|
||||
break;
|
||||
|
||||
|
@ -693,26 +693,26 @@ void DIALOG_PAD_PROPERTIES::displayPrimitivesList()
|
||||
|
||||
switch( primitive->GetShape() )
|
||||
{
|
||||
case S_SEGMENT: // usual segment : line with rounded ends
|
||||
case PCB_SHAPE_TYPE::SEGMENT: // usual segment : line with rounded ends
|
||||
bs_info[0] = _( "Segment" );
|
||||
bs_info[1] = _( "from" ) + wxS( " " )+ formatCoord( m_units, primitive->GetStart() );
|
||||
bs_info[2] = _( "to" ) + wxS( " " )+ formatCoord( m_units, primitive->GetEnd() );
|
||||
break;
|
||||
|
||||
case S_CURVE: // Bezier segment
|
||||
case PCB_SHAPE_TYPE::CURVE: // Bezier segment
|
||||
bs_info[0] = _( "Bezier" );
|
||||
bs_info[1] = _( "from" ) + wxS( " " )+ formatCoord( m_units, primitive->GetStart() );
|
||||
bs_info[2] = _( "to" ) + wxS( " " )+ formatCoord( m_units, primitive->GetEnd() );
|
||||
break;
|
||||
|
||||
case S_ARC: // Arc with rounded ends
|
||||
case PCB_SHAPE_TYPE::ARC: // Arc with rounded ends
|
||||
bs_info[0] = _( "Arc" );
|
||||
bs_info[1] = _( "center" ) + wxS( " " )+ formatCoord( m_units, primitive->GetCenter() );
|
||||
bs_info[2] = _( "start" ) + wxS( " " )+ formatCoord( m_units, primitive->GetArcStart() );
|
||||
bs_info[3] = _( "angle" ) + wxS( " " )+ FormatAngle( primitive->GetAngle() );
|
||||
break;
|
||||
|
||||
case S_CIRCLE: // ring or circle
|
||||
case PCB_SHAPE_TYPE::CIRCLE: // ring or circle
|
||||
if( primitive->GetWidth() )
|
||||
bs_info[0] = _( "ring" );
|
||||
else
|
||||
@ -722,7 +722,7 @@ void DIALOG_PAD_PROPERTIES::displayPrimitivesList()
|
||||
bs_info[2] = _( "radius" ) + wxS( " " )+ MessageTextFromValue( m_units, primitive->GetRadius() );
|
||||
break;
|
||||
|
||||
case S_POLYGON: // polygon
|
||||
case PCB_SHAPE_TYPE::POLYGON: // polygon
|
||||
bs_info[0] = "Polygon";
|
||||
bs_info[1] = wxString::Format( _( "corners count %d" ),
|
||||
(int) primitive->GetPolyShape().Outline( 0 ).PointCount() );
|
||||
@ -2042,7 +2042,7 @@ void DIALOG_PAD_PROPERTIES::editPrimitive()
|
||||
|
||||
std::shared_ptr<PCB_SHAPE>& shape = m_primitives[select];
|
||||
|
||||
if( shape->GetShape() == S_POLYGON )
|
||||
if( shape->GetShape() == PCB_SHAPE_TYPE::POLYGON )
|
||||
{
|
||||
DIALOG_PAD_PRIMITIVE_POLY_PROPS dlg( this, m_parent, shape.get() );
|
||||
|
||||
@ -2140,14 +2140,16 @@ void DIALOG_PAD_PROPERTIES::onAddPrimitive( wxCommandEvent& event )
|
||||
if( type == -1 )
|
||||
return;
|
||||
|
||||
PCB_SHAPE_TYPE_T listtype[] = { S_SEGMENT, S_ARC, S_CURVE, S_CIRCLE, S_POLYGON };
|
||||
PCB_SHAPE_TYPE listtype[] = { PCB_SHAPE_TYPE::SEGMENT, PCB_SHAPE_TYPE::ARC,
|
||||
PCB_SHAPE_TYPE::CURVE, PCB_SHAPE_TYPE::CIRCLE,
|
||||
PCB_SHAPE_TYPE::POLYGON };
|
||||
|
||||
PCB_SHAPE* primitive = new PCB_SHAPE();
|
||||
primitive->SetShape( listtype[type] );
|
||||
primitive->SetWidth( m_board->GetDesignSettings().GetLineThickness( F_Cu ) );
|
||||
primitive->SetFilled( true );
|
||||
|
||||
if( listtype[type] == S_POLYGON )
|
||||
if( listtype[type] == PCB_SHAPE_TYPE::POLYGON )
|
||||
{
|
||||
DIALOG_PAD_PRIMITIVE_POLY_PROPS dlg( this, m_parent, primitive );
|
||||
|
||||
|
@ -151,29 +151,29 @@ bool DRC_TEST_PROVIDER_EDGE_CLEARANCE::Run()
|
||||
{
|
||||
PCB_SHAPE* shape = static_cast<PCB_SHAPE*>( item );
|
||||
|
||||
if( shape->GetShape() == S_RECT )
|
||||
if( shape->GetShape() == PCB_SHAPE_TYPE::RECT )
|
||||
{
|
||||
// A single rectangle for the board would make the RTree useless, so
|
||||
// convert to 4 edges
|
||||
edges.emplace_back( static_cast<PCB_SHAPE*>( shape->Clone() ) );
|
||||
edges.back()->SetShape( S_SEGMENT );
|
||||
edges.back()->SetShape( PCB_SHAPE_TYPE::SEGMENT );
|
||||
edges.back()->SetEndX( shape->GetStartX() );
|
||||
edges.back()->SetWidth( 0 );
|
||||
edges.emplace_back( static_cast<PCB_SHAPE*>( shape->Clone() ) );
|
||||
edges.back()->SetShape( S_SEGMENT );
|
||||
edges.back()->SetShape( PCB_SHAPE_TYPE::SEGMENT );
|
||||
edges.back()->SetEndY( shape->GetStartY() );
|
||||
edges.back()->SetWidth( 0 );
|
||||
edges.emplace_back( static_cast<PCB_SHAPE*>( shape->Clone() ) );
|
||||
edges.back()->SetShape( S_SEGMENT );
|
||||
edges.back()->SetShape( PCB_SHAPE_TYPE::SEGMENT );
|
||||
edges.back()->SetStartX( shape->GetEndX() );
|
||||
edges.back()->SetWidth( 0 );
|
||||
edges.emplace_back( static_cast<PCB_SHAPE*>( shape->Clone() ) );
|
||||
edges.back()->SetShape( S_SEGMENT );
|
||||
edges.back()->SetShape( PCB_SHAPE_TYPE::SEGMENT );
|
||||
edges.back()->SetStartY( shape->GetEndY() );
|
||||
edges.back()->SetWidth( 0 );
|
||||
return true;
|
||||
}
|
||||
else if( shape->GetShape() == S_POLYGON )
|
||||
else if( shape->GetShape() == PCB_SHAPE_TYPE::POLYGON )
|
||||
{
|
||||
// Same for polygons
|
||||
SHAPE_LINE_CHAIN poly = shape->GetPolyShape().Outline( 0 );
|
||||
@ -182,7 +182,7 @@ bool DRC_TEST_PROVIDER_EDGE_CLEARANCE::Run()
|
||||
{
|
||||
SEG seg = poly.CSegment( ii );
|
||||
edges.emplace_back( static_cast<PCB_SHAPE*>( shape->Clone() ) );
|
||||
edges.back()->SetShape( S_SEGMENT );
|
||||
edges.back()->SetShape( PCB_SHAPE_TYPE::SEGMENT );
|
||||
edges.back()->SetStart((wxPoint) seg.A );
|
||||
edges.back()->SetEnd((wxPoint) seg.B );
|
||||
edges.back()->SetWidth( 0 );
|
||||
|
@ -1176,7 +1176,7 @@ static void FootprintWriteShape( FILE* aFile, FOOTPRINT* aFootprint, const wxStr
|
||||
{
|
||||
switch( shape->GetShape() )
|
||||
{
|
||||
case S_SEGMENT:
|
||||
case PCB_SHAPE_TYPE::SEGMENT:
|
||||
fprintf( aFile, "LINE %g %g %g %g\n",
|
||||
shape->m_Start0.x / SCALE_FACTOR,
|
||||
-shape->m_Start0.y / SCALE_FACTOR,
|
||||
@ -1184,7 +1184,7 @@ static void FootprintWriteShape( FILE* aFile, FOOTPRINT* aFootprint, const wxStr
|
||||
-shape->m_End0.y / SCALE_FACTOR );
|
||||
break;
|
||||
|
||||
case S_RECT:
|
||||
case PCB_SHAPE_TYPE::RECT:
|
||||
{
|
||||
fprintf( aFile, "LINE %g %g %g %g\n",
|
||||
shape->m_Start0.x / SCALE_FACTOR,
|
||||
@ -1209,7 +1209,7 @@ static void FootprintWriteShape( FILE* aFile, FOOTPRINT* aFootprint, const wxStr
|
||||
}
|
||||
break;
|
||||
|
||||
case S_CIRCLE:
|
||||
case PCB_SHAPE_TYPE::CIRCLE:
|
||||
{
|
||||
int radius = KiROUND( GetLineLength( shape->m_End0, shape->m_Start0 ) );
|
||||
fprintf( aFile, "CIRCLE %g %g %g\n",
|
||||
@ -1219,7 +1219,7 @@ static void FootprintWriteShape( FILE* aFile, FOOTPRINT* aFootprint, const wxStr
|
||||
break;
|
||||
}
|
||||
|
||||
case S_ARC:
|
||||
case PCB_SHAPE_TYPE::ARC:
|
||||
{
|
||||
int arcendx, arcendy;
|
||||
arcendx = shape->m_End0.x - shape->m_Start0.x;
|
||||
@ -1238,7 +1238,7 @@ static void FootprintWriteShape( FILE* aFile, FOOTPRINT* aFootprint, const wxStr
|
||||
break;
|
||||
}
|
||||
|
||||
case S_POLYGON:
|
||||
case PCB_SHAPE_TYPE::POLYGON:
|
||||
// Not exported (TODO)
|
||||
break;
|
||||
|
||||
|
@ -84,7 +84,7 @@ static void idf_export_outline( BOARD* aPcb, IDF3_BOARD& aIDFBoard )
|
||||
|
||||
switch( graphic->GetShape() )
|
||||
{
|
||||
case S_SEGMENT:
|
||||
case PCB_SHAPE_TYPE::SEGMENT:
|
||||
{
|
||||
if( ( graphic->GetStart().x == graphic->GetEnd().x )
|
||||
&& ( graphic->GetStart().y == graphic->GetEnd().y ) )
|
||||
@ -103,7 +103,7 @@ static void idf_export_outline( BOARD* aPcb, IDF3_BOARD& aIDFBoard )
|
||||
}
|
||||
break;
|
||||
|
||||
case S_RECT:
|
||||
case PCB_SHAPE_TYPE::RECT:
|
||||
{
|
||||
if( ( graphic->GetStart().x == graphic->GetEnd().x )
|
||||
&& ( graphic->GetStart().y == graphic->GetEnd().y ) )
|
||||
@ -129,7 +129,7 @@ static void idf_export_outline( BOARD* aPcb, IDF3_BOARD& aIDFBoard )
|
||||
}
|
||||
break;
|
||||
|
||||
case S_ARC:
|
||||
case PCB_SHAPE_TYPE::ARC:
|
||||
{
|
||||
if( ( graphic->GetCenter().x == graphic->GetArcStart().x )
|
||||
&& ( graphic->GetCenter().y == graphic->GetArcStart().y ) )
|
||||
@ -148,7 +148,7 @@ static void idf_export_outline( BOARD* aPcb, IDF3_BOARD& aIDFBoard )
|
||||
}
|
||||
break;
|
||||
|
||||
case S_CIRCLE:
|
||||
case PCB_SHAPE_TYPE::CIRCLE:
|
||||
{
|
||||
if( graphic->GetRadius() == 0 )
|
||||
break;
|
||||
|
@ -1791,14 +1791,14 @@ double FOOTPRINT::GetCoverageArea( const BOARD_ITEM* aItem, const GENERAL_COLLEC
|
||||
|
||||
switch( shape->GetShape() )
|
||||
{
|
||||
case S_SEGMENT:
|
||||
case S_ARC:
|
||||
case S_CURVE:
|
||||
case PCB_SHAPE_TYPE::SEGMENT:
|
||||
case PCB_SHAPE_TYPE::ARC:
|
||||
case PCB_SHAPE_TYPE::CURVE:
|
||||
return shape->GetWidth() * shape->GetWidth();
|
||||
|
||||
case S_RECT:
|
||||
case S_CIRCLE:
|
||||
case S_POLYGON:
|
||||
case PCB_SHAPE_TYPE::RECT:
|
||||
case PCB_SHAPE_TYPE::CIRCLE:
|
||||
case PCB_SHAPE_TYPE::POLYGON:
|
||||
{
|
||||
if( !shape->IsFilled() )
|
||||
return shape->GetWidth() * shape->GetWidth();
|
||||
|
@ -37,7 +37,7 @@
|
||||
#include <view/view.h>
|
||||
|
||||
|
||||
FP_SHAPE::FP_SHAPE( FOOTPRINT* parent, PCB_SHAPE_TYPE_T aShape ) :
|
||||
FP_SHAPE::FP_SHAPE( FOOTPRINT* parent, PCB_SHAPE_TYPE aShape ) :
|
||||
PCB_SHAPE( parent, PCB_FP_SHAPE_T )
|
||||
{
|
||||
m_shape = aShape;
|
||||
@ -161,15 +161,15 @@ void FP_SHAPE::Flip( const wxPoint& aCentre, bool aFlipLeftRight )
|
||||
|
||||
switch( GetShape() )
|
||||
{
|
||||
case S_ARC:
|
||||
case PCB_SHAPE_TYPE::ARC:
|
||||
// Update arc angle but do not yet update m_ThirdPoint0 and m_thirdPoint,
|
||||
// arc center and start point must be updated before calculation arc end.
|
||||
SetAngle( -GetAngle(), false );
|
||||
KI_FALLTHROUGH;
|
||||
|
||||
default:
|
||||
case S_SEGMENT:
|
||||
case S_CURVE:
|
||||
case PCB_SHAPE_TYPE::SEGMENT:
|
||||
case PCB_SHAPE_TYPE::CURVE:
|
||||
// If Start0 and Start are equal (ie: Footprint Editor), then flip both sets around the
|
||||
// centre point.
|
||||
if( m_start == m_Start0 )
|
||||
@ -205,7 +205,7 @@ void FP_SHAPE::Flip( const wxPoint& aCentre, bool aFlipLeftRight )
|
||||
RebuildBezierToSegmentsPointsList( m_width );
|
||||
break;
|
||||
|
||||
case S_POLYGON:
|
||||
case PCB_SHAPE_TYPE::POLYGON:
|
||||
// polygon corners coordinates are relative to the footprint position, orientation 0
|
||||
m_poly.Mirror( aFlipLeftRight, !aFlipLeftRight );
|
||||
break;
|
||||
@ -228,15 +228,15 @@ void FP_SHAPE::Mirror( const wxPoint& aCentre, bool aMirrorAroundXAxis )
|
||||
|
||||
switch( GetShape() )
|
||||
{
|
||||
case S_ARC:
|
||||
case PCB_SHAPE_TYPE::ARC:
|
||||
// Update arc angle but do not yet update m_ThirdPoint0 and m_thirdPoint,
|
||||
// arc center and start point must be updated before calculation arc end.
|
||||
SetAngle( -GetAngle(), false );
|
||||
KI_FALLTHROUGH;
|
||||
|
||||
default:
|
||||
case S_CURVE:
|
||||
case S_SEGMENT:
|
||||
case PCB_SHAPE_TYPE::CURVE:
|
||||
case PCB_SHAPE_TYPE::SEGMENT:
|
||||
if( aMirrorAroundXAxis )
|
||||
{
|
||||
MIRROR( m_Start0.y, aCentre.y );
|
||||
@ -264,7 +264,7 @@ void FP_SHAPE::Mirror( const wxPoint& aCentre, bool aMirrorAroundXAxis )
|
||||
|
||||
break;
|
||||
|
||||
case S_POLYGON:
|
||||
case PCB_SHAPE_TYPE::POLYGON:
|
||||
// polygon corners coordinates are always relative to the
|
||||
// footprint position, orientation 0
|
||||
m_poly.Mirror( !aMirrorAroundXAxis, aMirrorAroundXAxis );
|
||||
@ -301,7 +301,7 @@ void FP_SHAPE::Move( const wxPoint& aMoveVector )
|
||||
default:
|
||||
break;
|
||||
|
||||
case S_POLYGON:
|
||||
case PCB_SHAPE_TYPE::POLYGON:
|
||||
// polygon corners coordinates are always relative to the
|
||||
// footprint position, orientation 0
|
||||
m_poly.Move( VECTOR2I( aMoveVector ) );
|
||||
|
@ -39,7 +39,7 @@ class MSG_PANEL_ITEM;
|
||||
class FP_SHAPE : public PCB_SHAPE
|
||||
{
|
||||
public:
|
||||
FP_SHAPE( FOOTPRINT* parent, PCB_SHAPE_TYPE_T aShape = S_SEGMENT );
|
||||
FP_SHAPE( FOOTPRINT* parent, PCB_SHAPE_TYPE aShape = PCB_SHAPE_TYPE::SEGMENT );
|
||||
|
||||
// Do not create a copy constructor & operator=.
|
||||
// The ones generated by the compiler are adequate.
|
||||
|
@ -69,21 +69,21 @@ bool GRAPHICS_CLEANER::isNullSegment( PCB_SHAPE* aSegment )
|
||||
{
|
||||
switch( aSegment->GetShape() )
|
||||
{
|
||||
case S_SEGMENT:
|
||||
case S_RECT:
|
||||
case PCB_SHAPE_TYPE::SEGMENT:
|
||||
case PCB_SHAPE_TYPE::RECT:
|
||||
return aSegment->GetStart() == aSegment->GetEnd();
|
||||
|
||||
case S_CIRCLE:
|
||||
case PCB_SHAPE_TYPE::CIRCLE:
|
||||
return aSegment->GetRadius() == 0;
|
||||
|
||||
case S_ARC:
|
||||
case PCB_SHAPE_TYPE::ARC:
|
||||
return aSegment->GetCenter().x == aSegment->GetArcStart().x
|
||||
&& aSegment->GetCenter().y == aSegment->GetArcStart().y;
|
||||
|
||||
case S_POLYGON:
|
||||
case PCB_SHAPE_TYPE::POLYGON:
|
||||
return aSegment->GetPointCount() == 0;
|
||||
|
||||
case S_CURVE:
|
||||
case PCB_SHAPE_TYPE::CURVE:
|
||||
aSegment->RebuildBezierToSegmentsPointsList( aSegment->GetWidth() );
|
||||
return aSegment->GetBezierPoints().empty();
|
||||
|
||||
@ -106,22 +106,22 @@ bool GRAPHICS_CLEANER::areEquivalent( PCB_SHAPE* aShape1, PCB_SHAPE* aShape2 )
|
||||
|
||||
switch( aShape1->GetShape() )
|
||||
{
|
||||
case S_SEGMENT:
|
||||
case S_RECT:
|
||||
case S_CIRCLE:
|
||||
case PCB_SHAPE_TYPE::SEGMENT:
|
||||
case PCB_SHAPE_TYPE::RECT:
|
||||
case PCB_SHAPE_TYPE::CIRCLE:
|
||||
return aShape1->GetStart() == aShape2->GetStart()
|
||||
&& aShape1->GetEnd() == aShape2->GetEnd();
|
||||
|
||||
case S_ARC:
|
||||
case PCB_SHAPE_TYPE::ARC:
|
||||
return aShape1->GetCenter() == aShape2->GetCenter()
|
||||
&& aShape1->GetArcStart() == aShape2->GetArcStart()
|
||||
&& aShape1->GetAngle() == aShape2->GetAngle();
|
||||
|
||||
case S_POLYGON:
|
||||
case PCB_SHAPE_TYPE::POLYGON:
|
||||
// TODO
|
||||
return false;
|
||||
|
||||
case S_CURVE:
|
||||
case PCB_SHAPE_TYPE::CURVE:
|
||||
return aShape1->GetBezControl1() == aShape2->GetBezControl1()
|
||||
&& aShape1->GetBezControl2() == aShape2->GetBezControl2()
|
||||
&& aShape1->GetBezierPoints() == aShape2->GetBezierPoints();
|
||||
@ -141,7 +141,8 @@ void GRAPHICS_CLEANER::cleanupSegments()
|
||||
{
|
||||
PCB_SHAPE* segment = dynamic_cast<PCB_SHAPE*>( *it );
|
||||
|
||||
if( !segment || segment->GetShape() != S_SEGMENT || segment->HasFlag( IS_DELETED ) )
|
||||
if( !segment || segment->GetShape() != PCB_SHAPE_TYPE::SEGMENT
|
||||
|| segment->HasFlag( IS_DELETED ) )
|
||||
continue;
|
||||
|
||||
if( isNullSegment( segment ) )
|
||||
@ -205,7 +206,7 @@ void GRAPHICS_CLEANER::mergeRects()
|
||||
{
|
||||
PCB_SHAPE* shape = dynamic_cast<PCB_SHAPE*>( item );
|
||||
|
||||
if( !shape || shape->GetShape() != S_SEGMENT )
|
||||
if( !shape || shape->GetShape() != PCB_SHAPE_TYPE::SEGMENT )
|
||||
continue;
|
||||
|
||||
if( shape->GetStart().x == shape->GetEnd().x || shape->GetStart().y == shape->GetEnd().y )
|
||||
@ -306,7 +307,7 @@ void GRAPHICS_CLEANER::mergeRects()
|
||||
else
|
||||
rect = new PCB_SHAPE();
|
||||
|
||||
rect->SetShape( S_RECT );
|
||||
rect->SetShape( PCB_SHAPE_TYPE::RECT );
|
||||
rect->SetFilled( false );
|
||||
rect->SetStart( top->start );
|
||||
rect->SetEnd( bottom->end );
|
||||
|
@ -62,7 +62,7 @@ int GRAPHICS_IMPORTER_PCBNEW::MapLineWidth( double aLineWidth )
|
||||
void GRAPHICS_IMPORTER_PCBNEW::AddLine( const VECTOR2D& aOrigin, const VECTOR2D& aEnd, double aWidth )
|
||||
{
|
||||
std::unique_ptr<PCB_SHAPE> line( createDrawing() );
|
||||
line->SetShape( S_SEGMENT );
|
||||
line->SetShape( PCB_SHAPE_TYPE::SEGMENT );
|
||||
line->SetLayer( GetLayer() );
|
||||
line->SetWidth( MapLineWidth( aWidth ) );
|
||||
line->SetStart( MapCoordinate( aOrigin ) );
|
||||
@ -78,7 +78,7 @@ void GRAPHICS_IMPORTER_PCBNEW::AddLine( const VECTOR2D& aOrigin, const VECTOR2D&
|
||||
void GRAPHICS_IMPORTER_PCBNEW::AddCircle( const VECTOR2D& aCenter, double aRadius, double aWidth, bool aFilled )
|
||||
{
|
||||
std::unique_ptr<PCB_SHAPE> circle( createDrawing() );
|
||||
circle->SetShape( S_CIRCLE );
|
||||
circle->SetShape( PCB_SHAPE_TYPE::CIRCLE );
|
||||
circle->SetFilled( aFilled );
|
||||
circle->SetLayer( GetLayer() );
|
||||
circle->SetWidth( MapLineWidth( aWidth ) );
|
||||
@ -96,7 +96,7 @@ void GRAPHICS_IMPORTER_PCBNEW::AddArc( const VECTOR2D& aCenter, const VECTOR2D&
|
||||
double aAngle, double aWidth )
|
||||
{
|
||||
std::unique_ptr<PCB_SHAPE> arc( createDrawing() );
|
||||
arc->SetShape( S_ARC );
|
||||
arc->SetShape( PCB_SHAPE_TYPE::ARC );
|
||||
arc->SetLayer( GetLayer() );
|
||||
arc->SetWidth( MapLineWidth( aWidth ) );
|
||||
arc->SetCenter( MapCoordinate( aCenter) );
|
||||
@ -119,7 +119,7 @@ void GRAPHICS_IMPORTER_PCBNEW::AddPolygon( const std::vector< VECTOR2D >& aVerti
|
||||
convertedPoints.emplace_back( MapCoordinate( precisePoint ) );
|
||||
|
||||
std::unique_ptr<PCB_SHAPE> polygon( createDrawing() );
|
||||
polygon->SetShape( S_POLYGON );
|
||||
polygon->SetShape( PCB_SHAPE_TYPE::POLYGON );
|
||||
polygon->SetFilled( GetLayer() != Edge_Cuts );
|
||||
polygon->SetLayer( GetLayer() );
|
||||
polygon->SetPolyPoints( convertedPoints );
|
||||
@ -160,7 +160,7 @@ void GRAPHICS_IMPORTER_PCBNEW::AddSpline( const VECTOR2D& aStart, const VECTOR2D
|
||||
const VECTOR2D& BezierControl2, const VECTOR2D& aEnd, double aWidth )
|
||||
{
|
||||
std::unique_ptr<PCB_SHAPE> spline( createDrawing() );
|
||||
spline->SetShape( S_CURVE );
|
||||
spline->SetShape( PCB_SHAPE_TYPE::CURVE );
|
||||
spline->SetLayer( GetLayer() );
|
||||
spline->SetWidth( MapLineWidth( aWidth ) );
|
||||
spline->SetStart( MapCoordinate( aStart ) );
|
||||
|
@ -431,7 +431,7 @@ FOOTPRINT* MICROWAVE_TOOL::createMicrowaveInductor( MICROWAVE_INDUCTOR_PATTERN&
|
||||
seg->SetEnd( buffer[jj] );
|
||||
seg->SetWidth( aInductorPattern.m_Width );
|
||||
seg->SetLayer( footprint->GetLayer() );
|
||||
seg->SetShape( S_SEGMENT );
|
||||
seg->SetShape( PCB_SHAPE_TYPE::SEGMENT );
|
||||
seg->SetStart0( seg->GetStart() - footprint->GetPosition() );
|
||||
seg->SetEnd0( seg->GetEnd() - footprint->GetPosition() );
|
||||
footprint->Add( seg );
|
||||
|
@ -300,7 +300,7 @@ FOOTPRINT* MICROWAVE_TOOL::createPolygonShape()
|
||||
|
||||
// Add a polygonal edge (corners will be added later) on copper layer
|
||||
shape = new FP_SHAPE( footprint );
|
||||
shape->SetShape( S_POLYGON );
|
||||
shape->SetShape( PCB_SHAPE_TYPE::POLYGON );
|
||||
shape->SetFilled( true );
|
||||
shape->SetLayer( F_Cu );
|
||||
|
||||
|
@ -55,7 +55,7 @@ void PAD::AddPrimitivePoly( const SHAPE_POLY_SET& aPoly, int aThickness, bool aF
|
||||
void PAD::AddPrimitivePoly( const std::vector<wxPoint>& aPoly, int aThickness, bool aFilled )
|
||||
{
|
||||
PCB_SHAPE* item = new PCB_SHAPE();
|
||||
item->SetShape( S_POLYGON );
|
||||
item->SetShape( PCB_SHAPE_TYPE::POLYGON );
|
||||
item->SetFilled( aFilled );
|
||||
item->SetPolyPoints( aPoly );
|
||||
item->SetWidth( aThickness );
|
||||
@ -68,7 +68,7 @@ void PAD::AddPrimitivePoly( const std::vector<wxPoint>& aPoly, int aThickness, b
|
||||
void PAD::AddPrimitiveSegment( const wxPoint& aStart, const wxPoint& aEnd, int aThickness )
|
||||
{
|
||||
PCB_SHAPE* item = new PCB_SHAPE();
|
||||
item->SetShape( S_SEGMENT );
|
||||
item->SetShape( PCB_SHAPE_TYPE::SEGMENT );
|
||||
item->SetFilled( false );
|
||||
item->SetStart( aStart );
|
||||
item->SetEnd( aEnd );
|
||||
@ -83,7 +83,7 @@ void PAD::AddPrimitiveArc( const wxPoint& aCenter, const wxPoint& aStart, int aA
|
||||
int aThickness )
|
||||
{
|
||||
PCB_SHAPE* item = new PCB_SHAPE();
|
||||
item->SetShape( S_ARC );
|
||||
item->SetShape( PCB_SHAPE_TYPE::ARC );
|
||||
item->SetFilled( false );
|
||||
item->SetCenter( aCenter );
|
||||
item->SetArcStart( aStart );
|
||||
@ -99,7 +99,7 @@ void PAD::AddPrimitiveCurve( const wxPoint& aStart, const wxPoint& aEnd, const w
|
||||
const wxPoint& aCtrl2, int aThickness )
|
||||
{
|
||||
PCB_SHAPE* item = new PCB_SHAPE();
|
||||
item->SetShape( S_CURVE );
|
||||
item->SetShape( PCB_SHAPE_TYPE::CURVE );
|
||||
item->SetFilled( false );
|
||||
item->SetStart( aStart );
|
||||
item->SetEnd( aEnd );
|
||||
@ -115,7 +115,7 @@ void PAD::AddPrimitiveCurve( const wxPoint& aStart, const wxPoint& aEnd, const w
|
||||
void PAD::AddPrimitiveCircle( const wxPoint& aCenter, int aRadius, int aThickness, bool aFilled )
|
||||
{
|
||||
PCB_SHAPE* item = new PCB_SHAPE();
|
||||
item->SetShape( S_CIRCLE );
|
||||
item->SetShape( PCB_SHAPE_TYPE::CIRCLE );
|
||||
item->SetFilled( aFilled );
|
||||
item->SetStart( aCenter );
|
||||
item->SetEnd( wxPoint( aCenter.x + aRadius, aCenter.y ) );
|
||||
@ -130,7 +130,7 @@ void PAD::AddPrimitiveRect( const wxPoint& aStart, const wxPoint& aEnd, int aThi
|
||||
bool aFilled)
|
||||
{
|
||||
PCB_SHAPE* item = new PCB_SHAPE();
|
||||
item->SetShape( S_RECT );
|
||||
item->SetShape( PCB_SHAPE_TYPE::RECT );
|
||||
item->SetFilled( aFilled );
|
||||
item->SetStart( aStart );
|
||||
item->SetEnd( aEnd );
|
||||
|
@ -1247,7 +1247,7 @@ void PCB_PAINTER::draw( const PCB_SHAPE* aShape, int aLayer )
|
||||
|
||||
switch( aShape->GetShape() )
|
||||
{
|
||||
case S_SEGMENT:
|
||||
case PCB_SHAPE_TYPE::SEGMENT:
|
||||
if( sketch )
|
||||
{
|
||||
m_gal->DrawSegment( start, end, thickness );
|
||||
@ -1261,7 +1261,7 @@ void PCB_PAINTER::draw( const PCB_SHAPE* aShape, int aLayer )
|
||||
}
|
||||
break;
|
||||
|
||||
case S_RECT:
|
||||
case PCB_SHAPE_TYPE::RECT:
|
||||
{
|
||||
std::vector<wxPoint> pts = aShape->GetRectCorners();
|
||||
|
||||
@ -1299,7 +1299,7 @@ void PCB_PAINTER::draw( const PCB_SHAPE* aShape, int aLayer )
|
||||
}
|
||||
break;
|
||||
|
||||
case S_ARC:
|
||||
case PCB_SHAPE_TYPE::ARC:
|
||||
if( sketch )
|
||||
{
|
||||
m_gal->DrawArcSegment( start, aShape->GetRadius(),
|
||||
@ -1319,7 +1319,7 @@ void PCB_PAINTER::draw( const PCB_SHAPE* aShape, int aLayer )
|
||||
}
|
||||
break;
|
||||
|
||||
case S_CIRCLE:
|
||||
case PCB_SHAPE_TYPE::CIRCLE:
|
||||
if( sketch )
|
||||
{
|
||||
m_gal->DrawCircle( start, aShape->GetRadius() - thickness / 2 );
|
||||
@ -1335,7 +1335,7 @@ void PCB_PAINTER::draw( const PCB_SHAPE* aShape, int aLayer )
|
||||
}
|
||||
break;
|
||||
|
||||
case S_POLYGON:
|
||||
case PCB_SHAPE_TYPE::POLYGON:
|
||||
{
|
||||
SHAPE_POLY_SET& shape = const_cast<PCB_SHAPE*>( aShape )->GetPolyShape();
|
||||
const FOOTPRINT* parentFootprint = aShape->GetParentFootprint();
|
||||
@ -1390,7 +1390,7 @@ void PCB_PAINTER::draw( const PCB_SHAPE* aShape, int aLayer )
|
||||
}
|
||||
break;
|
||||
|
||||
case S_CURVE:
|
||||
case PCB_SHAPE_TYPE::CURVE:
|
||||
if( sketch )
|
||||
{
|
||||
// Use thickness as filter value to convert the curve to polyline when the curve
|
||||
@ -1415,7 +1415,7 @@ void PCB_PAINTER::draw( const PCB_SHAPE* aShape, int aLayer )
|
||||
}
|
||||
break;
|
||||
|
||||
case S_LAST:
|
||||
case PCB_SHAPE_TYPE::LAST:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -49,7 +49,7 @@ PCB_SHAPE::PCB_SHAPE( BOARD_ITEM* aParent, KICAD_T idtype ) :
|
||||
m_angle = 0;
|
||||
m_filled = false;
|
||||
m_flags = 0;
|
||||
m_shape = S_SEGMENT;
|
||||
m_shape = PCB_SHAPE_TYPE::SEGMENT;
|
||||
m_width = Millimeter2iu( DEFAULT_LINE_WIDTH );
|
||||
}
|
||||
|
||||
@ -67,7 +67,7 @@ void PCB_SHAPE::SetPosition( const wxPoint& aPos )
|
||||
|
||||
wxPoint PCB_SHAPE::GetPosition() const
|
||||
{
|
||||
if( m_shape == S_POLYGON )
|
||||
if( m_shape == PCB_SHAPE_TYPE::POLYGON )
|
||||
return (wxPoint) m_poly.CVertex( 0 );
|
||||
else
|
||||
return m_start;
|
||||
@ -80,23 +80,23 @@ double PCB_SHAPE::GetLength() const
|
||||
|
||||
switch( m_shape )
|
||||
{
|
||||
case S_CURVE:
|
||||
case PCB_SHAPE_TYPE::CURVE:
|
||||
for( size_t ii = 1; ii < m_bezierPoints.size(); ++ii )
|
||||
length += GetLineLength( m_bezierPoints[ ii - 1], m_bezierPoints[ii] );
|
||||
|
||||
break;
|
||||
|
||||
case S_SEGMENT:
|
||||
case PCB_SHAPE_TYPE::SEGMENT:
|
||||
length = GetLineLength( GetStart(), GetEnd() );
|
||||
break;
|
||||
|
||||
case S_POLYGON:
|
||||
case PCB_SHAPE_TYPE::POLYGON:
|
||||
for( int ii = 0; ii < m_poly.COutline( 0 ).SegmentCount(); ii++ )
|
||||
length += m_poly.COutline( 0 ).CSegment( ii ).Length();
|
||||
|
||||
break;
|
||||
|
||||
case S_ARC:
|
||||
case PCB_SHAPE_TYPE::ARC:
|
||||
length = 2 * M_PI * GetRadius() * ( GetAngle() / 3600.0 );
|
||||
break;
|
||||
|
||||
@ -114,7 +114,7 @@ void PCB_SHAPE::Move( const wxPoint& aMoveVector )
|
||||
{
|
||||
// Move vector should not affect start/end for polygon since it will
|
||||
// be applied directly to polygon outline.
|
||||
if( m_shape != S_POLYGON )
|
||||
if( m_shape != PCB_SHAPE_TYPE::POLYGON )
|
||||
{
|
||||
m_start += aMoveVector;
|
||||
m_end += aMoveVector;
|
||||
@ -122,15 +122,15 @@ void PCB_SHAPE::Move( const wxPoint& aMoveVector )
|
||||
|
||||
switch ( m_shape )
|
||||
{
|
||||
case S_POLYGON:
|
||||
case PCB_SHAPE_TYPE::POLYGON:
|
||||
m_poly.Move( VECTOR2I( aMoveVector ) );
|
||||
break;
|
||||
|
||||
case S_ARC:
|
||||
case PCB_SHAPE_TYPE::ARC:
|
||||
m_thirdPoint += aMoveVector;
|
||||
break;
|
||||
|
||||
case S_CURVE:
|
||||
case PCB_SHAPE_TYPE::CURVE:
|
||||
m_bezierC1 += aMoveVector;
|
||||
m_bezierC2 += aMoveVector;
|
||||
|
||||
@ -161,21 +161,21 @@ void PCB_SHAPE::Scale( double aScale )
|
||||
// specific parameters:
|
||||
switch( m_shape )
|
||||
{
|
||||
case S_CURVE:
|
||||
case PCB_SHAPE_TYPE::CURVE:
|
||||
scalePt( m_bezierC1 );
|
||||
scalePt( m_bezierC2 );
|
||||
break;
|
||||
|
||||
case S_ARC:
|
||||
case PCB_SHAPE_TYPE::ARC:
|
||||
scalePt( m_thirdPoint );
|
||||
break;
|
||||
|
||||
case S_CIRCLE: // ring or circle
|
||||
case PCB_SHAPE_TYPE::CIRCLE: // ring or circle
|
||||
m_end.x = m_start.x + KiROUND( radius * aScale );
|
||||
m_end.y = m_start.y;
|
||||
break;
|
||||
|
||||
case S_POLYGON: // polygon
|
||||
case PCB_SHAPE_TYPE::POLYGON: // polygon
|
||||
{
|
||||
std::vector<wxPoint> pts;
|
||||
|
||||
@ -199,16 +199,16 @@ void PCB_SHAPE::Rotate( const wxPoint& aRotCentre, double aAngle )
|
||||
{
|
||||
switch( m_shape )
|
||||
{
|
||||
case S_ARC:
|
||||
case S_SEGMENT:
|
||||
case S_CIRCLE:
|
||||
case PCB_SHAPE_TYPE::ARC:
|
||||
case PCB_SHAPE_TYPE::SEGMENT:
|
||||
case PCB_SHAPE_TYPE::CIRCLE:
|
||||
// these can all be done by just rotating the constituent points
|
||||
RotatePoint( &m_start, aRotCentre, aAngle );
|
||||
RotatePoint( &m_end, aRotCentre, aAngle );
|
||||
RotatePoint( &m_thirdPoint, aRotCentre, aAngle );
|
||||
break;
|
||||
|
||||
case S_RECT:
|
||||
case PCB_SHAPE_TYPE::RECT:
|
||||
if( KiROUND( aAngle ) % 900 == 0 )
|
||||
{
|
||||
RotatePoint( &m_start, aRotCentre, aAngle );
|
||||
@ -217,7 +217,7 @@ void PCB_SHAPE::Rotate( const wxPoint& aRotCentre, double aAngle )
|
||||
}
|
||||
|
||||
// Convert non-cartesian-rotated rect to a diamond
|
||||
m_shape = S_POLYGON;
|
||||
m_shape = PCB_SHAPE_TYPE::POLYGON;
|
||||
m_poly.RemoveAllContours();
|
||||
m_poly.NewOutline();
|
||||
m_poly.Append( m_start );
|
||||
@ -227,11 +227,11 @@ void PCB_SHAPE::Rotate( const wxPoint& aRotCentre, double aAngle )
|
||||
|
||||
KI_FALLTHROUGH;
|
||||
|
||||
case S_POLYGON:
|
||||
case PCB_SHAPE_TYPE::POLYGON:
|
||||
m_poly.Rotate( -DECIDEG2RAD( aAngle ), VECTOR2I( aRotCentre ) );
|
||||
break;
|
||||
|
||||
case S_CURVE:
|
||||
case PCB_SHAPE_TYPE::CURVE:
|
||||
RotatePoint( &m_start, aRotCentre, aAngle);
|
||||
RotatePoint( &m_end, aRotCentre, aAngle);
|
||||
RotatePoint( &m_bezierC1, aRotCentre, aAngle);
|
||||
@ -265,7 +265,7 @@ void PCB_SHAPE::Flip( const wxPoint& aCentre, bool aFlipLeftRight )
|
||||
|
||||
switch ( m_shape )
|
||||
{
|
||||
case S_ARC:
|
||||
case PCB_SHAPE_TYPE::ARC:
|
||||
if( aFlipLeftRight )
|
||||
m_thirdPoint.x = aCentre.x - ( m_thirdPoint.x - aCentre.x );
|
||||
else
|
||||
@ -274,11 +274,11 @@ void PCB_SHAPE::Flip( const wxPoint& aCentre, bool aFlipLeftRight )
|
||||
m_angle = -m_angle;
|
||||
break;
|
||||
|
||||
case S_POLYGON:
|
||||
case PCB_SHAPE_TYPE::POLYGON:
|
||||
m_poly.Mirror( aFlipLeftRight, !aFlipLeftRight, VECTOR2I( aCentre ) );
|
||||
break;
|
||||
|
||||
case S_CURVE:
|
||||
case PCB_SHAPE_TYPE::CURVE:
|
||||
{
|
||||
if( aFlipLeftRight )
|
||||
{
|
||||
@ -298,9 +298,9 @@ void PCB_SHAPE::Flip( const wxPoint& aCentre, bool aFlipLeftRight )
|
||||
}
|
||||
break;
|
||||
|
||||
case S_SEGMENT:
|
||||
case S_RECT:
|
||||
case S_CIRCLE:
|
||||
case PCB_SHAPE_TYPE::SEGMENT:
|
||||
case PCB_SHAPE_TYPE::RECT:
|
||||
case PCB_SHAPE_TYPE::CIRCLE:
|
||||
break;
|
||||
|
||||
default:
|
||||
@ -316,7 +316,7 @@ void PCB_SHAPE::Flip( const wxPoint& aCentre, bool aFlipLeftRight )
|
||||
void PCB_SHAPE::RebuildBezierToSegmentsPointsList( int aMinSegLen )
|
||||
{
|
||||
// Has meaning only for S_CURVE DRAW_SEGMENT shape
|
||||
if( m_shape != S_CURVE )
|
||||
if( m_shape != PCB_SHAPE_TYPE::CURVE )
|
||||
{
|
||||
m_bezierPoints.clear();
|
||||
return;
|
||||
@ -345,19 +345,19 @@ wxPoint PCB_SHAPE::GetCenter() const
|
||||
|
||||
switch( m_shape )
|
||||
{
|
||||
case S_ARC:
|
||||
case S_CIRCLE:
|
||||
case PCB_SHAPE_TYPE::ARC:
|
||||
case PCB_SHAPE_TYPE::CIRCLE:
|
||||
c = m_start;
|
||||
break;
|
||||
|
||||
case S_SEGMENT:
|
||||
case PCB_SHAPE_TYPE::SEGMENT:
|
||||
// Midpoint of the line
|
||||
c = ( GetStart() + GetEnd() ) / 2;
|
||||
break;
|
||||
|
||||
case S_POLYGON:
|
||||
case S_RECT:
|
||||
case S_CURVE:
|
||||
case PCB_SHAPE_TYPE::POLYGON:
|
||||
case PCB_SHAPE_TYPE::RECT:
|
||||
case PCB_SHAPE_TYPE::CURVE:
|
||||
c = GetBoundingBox().Centre();
|
||||
break;
|
||||
|
||||
@ -377,7 +377,7 @@ wxPoint PCB_SHAPE::GetArcEnd() const
|
||||
|
||||
switch( m_shape )
|
||||
{
|
||||
case S_ARC:
|
||||
case PCB_SHAPE_TYPE::ARC:
|
||||
endPoint = m_thirdPoint;
|
||||
break;
|
||||
|
||||
@ -395,7 +395,7 @@ wxPoint PCB_SHAPE::GetArcMid() const
|
||||
|
||||
switch( m_shape )
|
||||
{
|
||||
case S_ARC:
|
||||
case PCB_SHAPE_TYPE::ARC:
|
||||
// rotate the starting point of the arc, given by m_End, through half
|
||||
// the angle m_Angle to get the middle of the arc.
|
||||
// m_Start is the arc centre
|
||||
@ -500,14 +500,14 @@ void PCB_SHAPE::GetMsgPanelInfo( EDA_DRAW_FRAME* aFrame, std::vector<MSG_PANEL_I
|
||||
|
||||
switch( m_shape )
|
||||
{
|
||||
case S_CIRCLE:
|
||||
case PCB_SHAPE_TYPE::CIRCLE:
|
||||
aList.emplace_back( shape, _( "Circle" ) );
|
||||
|
||||
msg = MessageTextFromValue( units, GetLineLength( m_start, m_end ) );
|
||||
aList.emplace_back( _( "Radius" ), msg );
|
||||
break;
|
||||
|
||||
case S_ARC:
|
||||
case PCB_SHAPE_TYPE::ARC:
|
||||
aList.emplace_back( shape, _( "Arc" ) );
|
||||
|
||||
msg.Printf( wxT( "%.1f" ), m_angle / 10.0 );
|
||||
@ -517,21 +517,21 @@ void PCB_SHAPE::GetMsgPanelInfo( EDA_DRAW_FRAME* aFrame, std::vector<MSG_PANEL_I
|
||||
aList.emplace_back( _( "Radius" ), msg );
|
||||
break;
|
||||
|
||||
case S_CURVE:
|
||||
case PCB_SHAPE_TYPE::CURVE:
|
||||
aList.emplace_back( shape, _( "Curve" ) );
|
||||
|
||||
msg = MessageTextFromValue( units, GetLength() );
|
||||
aList.emplace_back( _( "Length" ), msg );
|
||||
break;
|
||||
|
||||
case S_POLYGON:
|
||||
case PCB_SHAPE_TYPE::POLYGON:
|
||||
aList.emplace_back( shape, _( "Polygon" ) );
|
||||
|
||||
msg.Printf( "%d", GetPolyShape().Outline(0).PointCount() );
|
||||
aList.emplace_back( _( "Points" ), msg );
|
||||
break;
|
||||
|
||||
case S_RECT:
|
||||
case PCB_SHAPE_TYPE::RECT:
|
||||
aList.emplace_back( shape, _( "Rectangle" ) );
|
||||
|
||||
msg = MessageTextFromValue( units, std::abs( m_end.x - m_start.x ) );
|
||||
@ -541,7 +541,7 @@ void PCB_SHAPE::GetMsgPanelInfo( EDA_DRAW_FRAME* aFrame, std::vector<MSG_PANEL_I
|
||||
aList.emplace_back( _( "Height" ), msg );
|
||||
break;
|
||||
|
||||
case S_SEGMENT:
|
||||
case PCB_SHAPE_TYPE::SEGMENT:
|
||||
{
|
||||
aList.emplace_back( shape, _( "Segment" ) );
|
||||
|
||||
@ -574,7 +574,7 @@ const EDA_RECT PCB_SHAPE::GetBoundingBox() const
|
||||
|
||||
switch( m_shape )
|
||||
{
|
||||
case S_RECT:
|
||||
case PCB_SHAPE_TYPE::RECT:
|
||||
{
|
||||
std::vector<wxPoint> pts = GetRectCorners();
|
||||
|
||||
@ -585,19 +585,19 @@ const EDA_RECT PCB_SHAPE::GetBoundingBox() const
|
||||
}
|
||||
break;
|
||||
|
||||
case S_SEGMENT:
|
||||
case PCB_SHAPE_TYPE::SEGMENT:
|
||||
bbox.SetEnd( m_end );
|
||||
break;
|
||||
|
||||
case S_CIRCLE:
|
||||
case PCB_SHAPE_TYPE::CIRCLE:
|
||||
bbox.Inflate( GetRadius() );
|
||||
break;
|
||||
|
||||
case S_ARC:
|
||||
case PCB_SHAPE_TYPE::ARC:
|
||||
computeArcBBox( bbox );
|
||||
break;
|
||||
|
||||
case S_POLYGON:
|
||||
case PCB_SHAPE_TYPE::POLYGON:
|
||||
{
|
||||
if( m_poly.IsEmpty() )
|
||||
break;
|
||||
@ -620,7 +620,7 @@ const EDA_RECT PCB_SHAPE::GetBoundingBox() const
|
||||
}
|
||||
break;
|
||||
|
||||
case S_CURVE:
|
||||
case PCB_SHAPE_TYPE::CURVE:
|
||||
bbox.Merge( m_bezierC1 );
|
||||
bbox.Merge( m_bezierC2 );
|
||||
bbox.Merge( m_end );
|
||||
@ -645,7 +645,7 @@ bool PCB_SHAPE::HitTest( const wxPoint& aPosition, int aAccuracy ) const
|
||||
|
||||
switch( m_shape )
|
||||
{
|
||||
case S_CIRCLE:
|
||||
case PCB_SHAPE_TYPE::CIRCLE:
|
||||
{
|
||||
int radius = GetRadius();
|
||||
int dist = KiROUND( EuclideanNorm( aPosition - GetCenter() ) );
|
||||
@ -663,7 +663,7 @@ bool PCB_SHAPE::HitTest( const wxPoint& aPosition, int aAccuracy ) const
|
||||
}
|
||||
break;
|
||||
|
||||
case S_ARC:
|
||||
case PCB_SHAPE_TYPE::ARC:
|
||||
{
|
||||
wxPoint relPos = aPosition - GetCenter();
|
||||
int radius = GetRadius();
|
||||
@ -703,7 +703,7 @@ bool PCB_SHAPE::HitTest( const wxPoint& aPosition, int aAccuracy ) const
|
||||
}
|
||||
break;
|
||||
|
||||
case S_CURVE:
|
||||
case PCB_SHAPE_TYPE::CURVE:
|
||||
const_cast<PCB_SHAPE*>( this )->RebuildBezierToSegmentsPointsList( m_width );
|
||||
|
||||
for( unsigned int i= 1; i < m_bezierPoints.size(); i++)
|
||||
@ -714,13 +714,13 @@ bool PCB_SHAPE::HitTest( const wxPoint& aPosition, int aAccuracy ) const
|
||||
|
||||
break;
|
||||
|
||||
case S_SEGMENT:
|
||||
case PCB_SHAPE_TYPE::SEGMENT:
|
||||
if( TestSegmentHit( aPosition, m_start, m_end, maxdist ) )
|
||||
return true;
|
||||
|
||||
break;
|
||||
|
||||
case S_RECT:
|
||||
case PCB_SHAPE_TYPE::RECT:
|
||||
{
|
||||
std::vector<wxPoint> pts = GetRectCorners();
|
||||
|
||||
@ -748,7 +748,7 @@ bool PCB_SHAPE::HitTest( const wxPoint& aPosition, int aAccuracy ) const
|
||||
}
|
||||
break;
|
||||
|
||||
case S_POLYGON:
|
||||
case PCB_SHAPE_TYPE::POLYGON:
|
||||
if( IsFilled() )
|
||||
{
|
||||
return m_poly.Collide( VECTOR2I( aPosition ), maxdist );
|
||||
@ -782,7 +782,7 @@ bool PCB_SHAPE::HitTest( const EDA_RECT& aRect, bool aContained, int aAccuracy )
|
||||
|
||||
switch( m_shape )
|
||||
{
|
||||
case S_CIRCLE:
|
||||
case PCB_SHAPE_TYPE::CIRCLE:
|
||||
// Test if area intersects or contains the circle:
|
||||
if( aContained )
|
||||
return arect.Contains( bb );
|
||||
@ -800,7 +800,7 @@ bool PCB_SHAPE::HitTest( const EDA_RECT& aRect, bool aContained, int aAccuracy )
|
||||
}
|
||||
break;
|
||||
|
||||
case S_ARC:
|
||||
case PCB_SHAPE_TYPE::ARC:
|
||||
// Test for full containment of this arc in the rect
|
||||
if( aContained )
|
||||
{
|
||||
@ -820,7 +820,7 @@ bool PCB_SHAPE::HitTest( const EDA_RECT& aRect, bool aContained, int aAccuracy )
|
||||
}
|
||||
break;
|
||||
|
||||
case S_RECT:
|
||||
case PCB_SHAPE_TYPE::RECT:
|
||||
if( aContained )
|
||||
{
|
||||
return arect.Contains( bb );
|
||||
@ -839,7 +839,7 @@ bool PCB_SHAPE::HitTest( const EDA_RECT& aRect, bool aContained, int aAccuracy )
|
||||
|
||||
break;
|
||||
|
||||
case S_SEGMENT:
|
||||
case PCB_SHAPE_TYPE::SEGMENT:
|
||||
if( aContained )
|
||||
{
|
||||
return arect.Contains( GetStart() ) && aRect.Contains( GetEnd() );
|
||||
@ -853,7 +853,7 @@ bool PCB_SHAPE::HitTest( const EDA_RECT& aRect, bool aContained, int aAccuracy )
|
||||
|
||||
break;
|
||||
|
||||
case S_POLYGON:
|
||||
case PCB_SHAPE_TYPE::POLYGON:
|
||||
if( aContained )
|
||||
{
|
||||
return arect.Contains( bb );
|
||||
@ -885,7 +885,7 @@ bool PCB_SHAPE::HitTest( const EDA_RECT& aRect, bool aContained, int aAccuracy )
|
||||
}
|
||||
break;
|
||||
|
||||
case S_CURVE:
|
||||
case PCB_SHAPE_TYPE::CURVE:
|
||||
if( aContained )
|
||||
{
|
||||
return arect.Contains( bb );
|
||||
@ -952,7 +952,7 @@ const BOX2I PCB_SHAPE::ViewBBox() const
|
||||
{
|
||||
// For arcs - do not include the center point in the bounding box,
|
||||
// it is redundant for displaying an arc
|
||||
if( m_shape == S_ARC )
|
||||
if( m_shape == PCB_SHAPE_TYPE::ARC )
|
||||
{
|
||||
EDA_RECT bbox;
|
||||
bbox.SetOrigin( m_end );
|
||||
@ -1089,16 +1089,16 @@ std::vector<SHAPE*> PCB_SHAPE::MakeEffectiveShapes() const
|
||||
|
||||
switch( m_shape )
|
||||
{
|
||||
case S_ARC:
|
||||
case PCB_SHAPE_TYPE::ARC:
|
||||
effectiveShapes.emplace_back( new SHAPE_ARC( GetCenter(), GetArcStart(),
|
||||
GetAngle() / 10.0, m_width ) );
|
||||
break;
|
||||
|
||||
case S_SEGMENT:
|
||||
case PCB_SHAPE_TYPE::SEGMENT:
|
||||
effectiveShapes.emplace_back( new SHAPE_SEGMENT( GetStart(), GetEnd(), m_width ) );
|
||||
break;
|
||||
|
||||
case S_RECT:
|
||||
case PCB_SHAPE_TYPE::RECT:
|
||||
{
|
||||
std::vector<wxPoint> pts = GetRectCorners();
|
||||
|
||||
@ -1117,7 +1117,7 @@ std::vector<SHAPE*> PCB_SHAPE::MakeEffectiveShapes() const
|
||||
}
|
||||
break;
|
||||
|
||||
case S_CIRCLE:
|
||||
case PCB_SHAPE_TYPE::CIRCLE:
|
||||
{
|
||||
if( IsFilled() )
|
||||
{
|
||||
@ -1140,7 +1140,7 @@ std::vector<SHAPE*> PCB_SHAPE::MakeEffectiveShapes() const
|
||||
break;
|
||||
}
|
||||
|
||||
case S_CURVE:
|
||||
case PCB_SHAPE_TYPE::CURVE:
|
||||
{
|
||||
auto bezierPoints = buildBezierToSegmentsPointsList( GetWidth() );
|
||||
wxPoint start_pt = bezierPoints[0];
|
||||
@ -1155,7 +1155,7 @@ std::vector<SHAPE*> PCB_SHAPE::MakeEffectiveShapes() const
|
||||
break;
|
||||
}
|
||||
|
||||
case S_POLYGON:
|
||||
case PCB_SHAPE_TYPE::POLYGON:
|
||||
{
|
||||
SHAPE_LINE_CHAIN l = GetPolyShape().COutline( 0 );
|
||||
FOOTPRINT* parentFootprint = dynamic_cast<FOOTPRINT*>( m_parent );
|
||||
|
@ -49,7 +49,7 @@ protected:
|
||||
wxPoint m_end; // Line end point or circle and arc start point
|
||||
wxPoint m_thirdPoint; // Used only for Arcs: arc end point
|
||||
|
||||
PCB_SHAPE_TYPE_T m_shape; // Shape: line, Circle, Arc
|
||||
PCB_SHAPE_TYPE m_shape; // Shape: line, Circle, Arc
|
||||
double m_angle; // Used only for Arcs: Arc angle in 1/10 deg
|
||||
wxPoint m_bezierC1; // Bezier Control Point 1
|
||||
wxPoint m_bezierC2; // Bezier Control Point 2
|
||||
@ -97,17 +97,17 @@ public:
|
||||
{
|
||||
switch( m_shape )
|
||||
{
|
||||
case S_RECT:
|
||||
case S_CIRCLE:
|
||||
case S_POLYGON:
|
||||
case PCB_SHAPE_TYPE::RECT:
|
||||
case PCB_SHAPE_TYPE::CIRCLE:
|
||||
case PCB_SHAPE_TYPE::POLYGON:
|
||||
return m_filled;
|
||||
|
||||
case S_SEGMENT:
|
||||
case S_ARC:
|
||||
case S_CURVE:
|
||||
case PCB_SHAPE_TYPE::SEGMENT:
|
||||
case PCB_SHAPE_TYPE::ARC:
|
||||
case PCB_SHAPE_TYPE::CURVE:
|
||||
return false;
|
||||
|
||||
case S_LAST: // Make CLang compiler happy
|
||||
case PCB_SHAPE_TYPE::LAST: // Make CLang compiler happy
|
||||
return false;
|
||||
}
|
||||
|
||||
@ -126,8 +126,8 @@ public:
|
||||
virtual void SetAngle( double aAngle, bool aUpdateEnd = true );
|
||||
double GetAngle() const { return m_angle; }
|
||||
|
||||
void SetShape( PCB_SHAPE_TYPE_T aShape ) { m_shape = aShape; }
|
||||
PCB_SHAPE_TYPE_T GetShape() const { return m_shape; }
|
||||
void SetShape( PCB_SHAPE_TYPE aShape ) { m_shape = aShape; }
|
||||
PCB_SHAPE_TYPE GetShape() const { return m_shape; }
|
||||
|
||||
void SetBezControl1( const wxPoint& aPoint ) { m_bezierC1 = aPoint; }
|
||||
const wxPoint& GetBezControl1() const { return m_bezierC1; }
|
||||
|
@ -437,7 +437,7 @@ void BRDITEMS_PLOTTER::PlotDimension( const DIMENSION_BASE* aDim )
|
||||
{
|
||||
const SEG& seg = static_cast<const SHAPE_SEGMENT*>( shape.get() )->GetSeg();
|
||||
|
||||
draw.SetShape( S_SEGMENT );
|
||||
draw.SetShape( PCB_SHAPE_TYPE::SEGMENT );
|
||||
draw.SetStart( wxPoint( seg.A ) );
|
||||
draw.SetEnd( wxPoint( seg.B ) );
|
||||
|
||||
@ -450,7 +450,7 @@ void BRDITEMS_PLOTTER::PlotDimension( const DIMENSION_BASE* aDim )
|
||||
wxPoint start( shape->Centre() );
|
||||
int radius = static_cast<const SHAPE_CIRCLE*>( shape.get() )->GetRadius();
|
||||
|
||||
draw.SetShape( S_CIRCLE );
|
||||
draw.SetShape( PCB_SHAPE_TYPE::CIRCLE );
|
||||
draw.SetFilled( false );
|
||||
draw.SetStart( start );
|
||||
draw.SetEnd( wxPoint( start.x + radius, start.y ) );
|
||||
@ -477,7 +477,7 @@ void BRDITEMS_PLOTTER::PlotPcbTarget( const PCB_TARGET* aMire )
|
||||
|
||||
PCB_SHAPE draw;
|
||||
|
||||
draw.SetShape( S_CIRCLE );
|
||||
draw.SetShape( PCB_SHAPE_TYPE::CIRCLE );
|
||||
draw.SetFilled( false );
|
||||
draw.SetWidth( aMire->GetWidth() );
|
||||
draw.SetLayer( aMire->GetLayer() );
|
||||
@ -492,7 +492,7 @@ void BRDITEMS_PLOTTER::PlotPcbTarget( const PCB_TARGET* aMire )
|
||||
|
||||
PlotPcbShape( &draw );
|
||||
|
||||
draw.SetShape( S_SEGMENT );
|
||||
draw.SetShape( PCB_SHAPE_TYPE::SEGMENT );
|
||||
|
||||
radius = aMire->GetSize() / 2;
|
||||
dx1 = radius;
|
||||
@ -567,11 +567,11 @@ void BRDITEMS_PLOTTER::PlotFootprintGraphicItem( const FP_SHAPE* aShape )
|
||||
|
||||
switch( aShape->GetShape() )
|
||||
{
|
||||
case S_SEGMENT:
|
||||
case PCB_SHAPE_TYPE::SEGMENT:
|
||||
m_plotter->ThickSegment( pos, end, thickness, GetPlotMode(), &gbr_metadata );
|
||||
break;
|
||||
|
||||
case S_RECT:
|
||||
case PCB_SHAPE_TYPE::RECT:
|
||||
{
|
||||
std::vector<wxPoint> pts = aShape->GetRectCorners();
|
||||
|
||||
@ -595,7 +595,7 @@ void BRDITEMS_PLOTTER::PlotFootprintGraphicItem( const FP_SHAPE* aShape )
|
||||
}
|
||||
break;
|
||||
|
||||
case S_CIRCLE:
|
||||
case PCB_SHAPE_TYPE::CIRCLE:
|
||||
radius = KiROUND( GetLineLength( end, pos ) );
|
||||
|
||||
if( aShape->IsFilled() )
|
||||
@ -605,7 +605,7 @@ void BRDITEMS_PLOTTER::PlotFootprintGraphicItem( const FP_SHAPE* aShape )
|
||||
|
||||
break;
|
||||
|
||||
case S_ARC:
|
||||
case PCB_SHAPE_TYPE::ARC:
|
||||
{
|
||||
radius = KiROUND( GetLineLength( end, pos ) );
|
||||
double startAngle = ArcTangente( end.y - pos.y, end.x - pos.x );
|
||||
@ -624,7 +624,7 @@ void BRDITEMS_PLOTTER::PlotFootprintGraphicItem( const FP_SHAPE* aShape )
|
||||
}
|
||||
break;
|
||||
|
||||
case S_POLYGON:
|
||||
case PCB_SHAPE_TYPE::POLYGON:
|
||||
if( aShape->IsPolyShapeValid() )
|
||||
{
|
||||
const std::vector<wxPoint> &polyPoints = aShape->BuildPolyPointsList();
|
||||
@ -682,7 +682,7 @@ void BRDITEMS_PLOTTER::PlotFootprintGraphicItem( const FP_SHAPE* aShape )
|
||||
}
|
||||
break;
|
||||
|
||||
case S_CURVE:
|
||||
case PCB_SHAPE_TYPE::CURVE:
|
||||
m_plotter->BezierCurve( aShape->GetStart(), aShape->GetBezControl1(),
|
||||
aShape->GetBezControl2(), aShape->GetEnd(), 0, thickness );
|
||||
break;
|
||||
@ -887,11 +887,11 @@ void BRDITEMS_PLOTTER::PlotPcbShape( const PCB_SHAPE* aShape )
|
||||
|
||||
switch( aShape->GetShape() )
|
||||
{
|
||||
case S_SEGMENT:
|
||||
case PCB_SHAPE_TYPE::SEGMENT:
|
||||
m_plotter->ThickSegment( start, end, thickness, GetPlotMode(), &gbr_metadata );
|
||||
break;
|
||||
|
||||
case S_CIRCLE:
|
||||
case PCB_SHAPE_TYPE::CIRCLE:
|
||||
radius = KiROUND( GetLineLength( end, start ) );
|
||||
|
||||
if( aShape->IsFilled() )
|
||||
@ -901,7 +901,7 @@ void BRDITEMS_PLOTTER::PlotPcbShape( const PCB_SHAPE* aShape )
|
||||
|
||||
break;
|
||||
|
||||
case S_ARC:
|
||||
case PCB_SHAPE_TYPE::ARC:
|
||||
radius = KiROUND( GetLineLength( end, start ) );
|
||||
StAngle = ArcTangente( end.y - start.y, end.x - start.x );
|
||||
EndAngle = StAngle + aShape->GetAngle();
|
||||
@ -918,12 +918,12 @@ void BRDITEMS_PLOTTER::PlotPcbShape( const PCB_SHAPE* aShape )
|
||||
}
|
||||
break;
|
||||
|
||||
case S_CURVE:
|
||||
case PCB_SHAPE_TYPE::CURVE:
|
||||
m_plotter->BezierCurve( aShape->GetStart(), aShape->GetBezControl1(),
|
||||
aShape->GetBezControl2(), aShape->GetEnd(), 0, thickness );
|
||||
break;
|
||||
|
||||
case S_POLYGON:
|
||||
case PCB_SHAPE_TYPE::POLYGON:
|
||||
if( aShape->IsPolyShapeValid() )
|
||||
{
|
||||
if( sketch || thickness > 0 )
|
||||
@ -956,7 +956,7 @@ void BRDITEMS_PLOTTER::PlotPcbShape( const PCB_SHAPE* aShape )
|
||||
}
|
||||
break;
|
||||
|
||||
case S_RECT:
|
||||
case PCB_SHAPE_TYPE::RECT:
|
||||
{
|
||||
std::vector<wxPoint> pts = aShape->GetRectCorners();
|
||||
|
||||
|
@ -701,13 +701,13 @@ void ALTIUM_PCB::HelperCreateBoardOutline( const std::vector<ALTIUM_VERTICE>& aV
|
||||
|
||||
if( !last->isRound && !cur->isRound )
|
||||
{
|
||||
shape->SetShape( S_SEGMENT );
|
||||
shape->SetShape( PCB_SHAPE_TYPE::SEGMENT );
|
||||
shape->SetStart( last->position );
|
||||
shape->SetEnd( cur->position );
|
||||
}
|
||||
else if( cur->isRound )
|
||||
{
|
||||
shape->SetShape( S_ARC );
|
||||
shape->SetShape( PCB_SHAPE_TYPE::ARC );
|
||||
shape->SetAngle( -NormalizeAngleDegreesPos( cur->endangle - cur->startangle ) * 10. );
|
||||
|
||||
double startradiant = DEG2RAD( cur->startangle );
|
||||
@ -725,7 +725,7 @@ void ALTIUM_PCB::HelperCreateBoardOutline( const std::vector<ALTIUM_VERTICE>& aV
|
||||
wxPoint arcEnd = cur->center + arcEndOffset;
|
||||
|
||||
PCB_SHAPE* shape2 = new PCB_SHAPE( m_board );
|
||||
shape2->SetShape( S_SEGMENT );
|
||||
shape2->SetShape( PCB_SHAPE_TYPE::SEGMENT );
|
||||
m_board->Add( shape2, ADD_MODE::APPEND );
|
||||
shape2->SetWidth( m_board->GetDesignSettings().GetLineThickness( Edge_Cuts ) );
|
||||
shape2->SetLayer( Edge_Cuts );
|
||||
@ -1004,7 +1004,7 @@ void ALTIUM_PCB::HelperParseDimensions6Leader( const ADIMENSION6& aElem )
|
||||
{
|
||||
PCB_SHAPE* shape = new PCB_SHAPE( m_board );
|
||||
m_board->Add( shape, ADD_MODE::APPEND );
|
||||
shape->SetShape( S_SEGMENT );
|
||||
shape->SetShape( PCB_SHAPE_TYPE::SEGMENT );
|
||||
shape->SetLayer( klayer );
|
||||
shape->SetWidth( aElem.linewidth );
|
||||
shape->SetStart( last );
|
||||
@ -1025,7 +1025,7 @@ void ALTIUM_PCB::HelperParseDimensions6Leader( const ADIMENSION6& aElem )
|
||||
|
||||
PCB_SHAPE* shape1 = new PCB_SHAPE( m_board );
|
||||
m_board->Add( shape1, ADD_MODE::APPEND );
|
||||
shape1->SetShape( S_SEGMENT );
|
||||
shape1->SetShape( PCB_SHAPE_TYPE::SEGMENT );
|
||||
shape1->SetLayer( klayer );
|
||||
shape1->SetWidth( aElem.linewidth );
|
||||
shape1->SetStart( referencePoint0 );
|
||||
@ -1035,7 +1035,7 @@ void ALTIUM_PCB::HelperParseDimensions6Leader( const ADIMENSION6& aElem )
|
||||
|
||||
PCB_SHAPE* shape2 = new PCB_SHAPE( m_board );
|
||||
m_board->Add( shape2, ADD_MODE::APPEND );
|
||||
shape2->SetShape( S_SEGMENT );
|
||||
shape2->SetShape( PCB_SHAPE_TYPE::SEGMENT );
|
||||
shape2->SetLayer( klayer );
|
||||
shape2->SetWidth( aElem.linewidth );
|
||||
shape2->SetStart( referencePoint0 );
|
||||
@ -1076,7 +1076,7 @@ void ALTIUM_PCB::HelperParseDimensions6Datum( const ADIMENSION6& aElem )
|
||||
{
|
||||
PCB_SHAPE* shape = new PCB_SHAPE( m_board );
|
||||
m_board->Add( shape, ADD_MODE::APPEND );
|
||||
shape->SetShape( S_SEGMENT );
|
||||
shape->SetShape( PCB_SHAPE_TYPE::SEGMENT );
|
||||
shape->SetLayer( klayer );
|
||||
shape->SetWidth( aElem.linewidth );
|
||||
shape->SetStart( aElem.referencePoint.at( i ) );
|
||||
@ -1502,7 +1502,7 @@ void ALTIUM_PCB::ParseShapeBasedRegions6Data( const CFB::CompoundFileReader& aRe
|
||||
|
||||
PCB_SHAPE* shape = new PCB_SHAPE( m_board );
|
||||
m_board->Add( shape, ADD_MODE::APPEND );
|
||||
shape->SetShape( S_POLYGON );
|
||||
shape->SetShape( PCB_SHAPE_TYPE::POLYGON );
|
||||
shape->SetFilled( true );
|
||||
shape->SetLayer( klayer );
|
||||
shape->SetWidth( 0 );
|
||||
@ -1635,12 +1635,12 @@ void ALTIUM_PCB::ParseArcs6Data( const CFB::CompoundFileReader& aReader,
|
||||
|
||||
if( elem.startangle == 0. && elem.endangle == 360. )
|
||||
{ // TODO: other variants to define circle?
|
||||
shape.SetShape( S_CIRCLE );
|
||||
shape.SetShape( PCB_SHAPE_TYPE::CIRCLE );
|
||||
shape.SetArcStart( elem.center - wxPoint( 0, elem.radius ) );
|
||||
}
|
||||
else
|
||||
{
|
||||
shape.SetShape( S_ARC );
|
||||
shape.SetShape( PCB_SHAPE_TYPE::ARC );
|
||||
shape.SetAngle( -NormalizeAngleDegreesPos( elem.endangle - elem.startangle ) * 10. );
|
||||
|
||||
double startradiant = DEG2RAD( elem.startangle );
|
||||
@ -1719,12 +1719,12 @@ void ALTIUM_PCB::ParseArcs6Data( const CFB::CompoundFileReader& aReader,
|
||||
|
||||
if( elem.startangle == 0. && elem.endangle == 360. )
|
||||
{ // TODO: other variants to define circle?
|
||||
shape->SetShape( S_CIRCLE );
|
||||
shape->SetShape( PCB_SHAPE_TYPE::CIRCLE );
|
||||
shape->SetArcStart( elem.center - wxPoint( 0, elem.radius ) );
|
||||
}
|
||||
else
|
||||
{
|
||||
shape->SetShape( S_ARC );
|
||||
shape->SetShape( PCB_SHAPE_TYPE::ARC );
|
||||
shape->SetAngle( -NormalizeAngleDegreesPos( elem.endangle - elem.startangle ) * 10. );
|
||||
|
||||
double startradiant = DEG2RAD( elem.startangle );
|
||||
@ -2003,7 +2003,7 @@ void ALTIUM_PCB::HelperParsePad6NonCopper( const APAD6& aElem )
|
||||
{
|
||||
// filled rect
|
||||
PCB_SHAPE* shape = HelperCreateAndAddDrawsegment( aElem.component );
|
||||
shape->SetShape( S_POLYGON );
|
||||
shape->SetShape( PCB_SHAPE_TYPE::POLYGON );
|
||||
shape->SetFilled( true );
|
||||
shape->SetLayer( klayer );
|
||||
shape->SetWidth( 0 );
|
||||
@ -2042,14 +2042,14 @@ void ALTIUM_PCB::HelperParsePad6NonCopper( const APAD6& aElem )
|
||||
wxPoint p22 = aElem.position + wxPoint( -offsetX, -offsetY );
|
||||
wxPoint p21 = aElem.position + wxPoint( -offsetX, offsetY );
|
||||
|
||||
shape->SetShape( S_POLYGON );
|
||||
shape->SetShape( PCB_SHAPE_TYPE::POLYGON );
|
||||
shape->SetFilled( true );
|
||||
shape->SetPolyPoints( { p11, p12, p22, p21 } );
|
||||
}
|
||||
else if( aElem.topsize.x == aElem.topsize.y )
|
||||
{
|
||||
// circle
|
||||
shape->SetShape( S_CIRCLE );
|
||||
shape->SetShape( PCB_SHAPE_TYPE::CIRCLE );
|
||||
shape->SetFilled( true );
|
||||
shape->SetCenter( aElem.position );
|
||||
shape->SetWidth( aElem.topsize.x / 2 );
|
||||
@ -2058,7 +2058,7 @@ void ALTIUM_PCB::HelperParsePad6NonCopper( const APAD6& aElem )
|
||||
else if( aElem.topsize.x < aElem.topsize.y )
|
||||
{
|
||||
// short vertical line
|
||||
shape->SetShape( S_SEGMENT );
|
||||
shape->SetShape( PCB_SHAPE_TYPE::SEGMENT );
|
||||
wxPoint pointOffset( 0, ( aElem.topsize.y - aElem.topsize.x ) / 2 );
|
||||
shape->SetStart( aElem.position + pointOffset );
|
||||
shape->SetEnd( aElem.position - pointOffset );
|
||||
@ -2066,7 +2066,7 @@ void ALTIUM_PCB::HelperParsePad6NonCopper( const APAD6& aElem )
|
||||
else
|
||||
{
|
||||
// short horizontal line
|
||||
shape->SetShape( S_SEGMENT );
|
||||
shape->SetShape( PCB_SHAPE_TYPE::SEGMENT );
|
||||
wxPoint pointOffset( ( aElem.topsize.x - aElem.topsize.y ) / 2, 0 );
|
||||
shape->SetStart( aElem.position + pointOffset );
|
||||
shape->SetEnd( aElem.position - pointOffset );
|
||||
@ -2081,7 +2081,7 @@ void ALTIUM_PCB::HelperParsePad6NonCopper( const APAD6& aElem )
|
||||
{
|
||||
// filled circle
|
||||
PCB_SHAPE* shape = HelperCreateAndAddDrawsegment( aElem.component );
|
||||
shape->SetShape( S_CIRCLE );
|
||||
shape->SetShape( PCB_SHAPE_TYPE::CIRCLE );
|
||||
shape->SetFilled( true );
|
||||
shape->SetLayer( klayer );
|
||||
shape->SetCenter( aElem.position );
|
||||
@ -2093,7 +2093,7 @@ void ALTIUM_PCB::HelperParsePad6NonCopper( const APAD6& aElem )
|
||||
{
|
||||
// short line
|
||||
PCB_SHAPE* shape = HelperCreateAndAddDrawsegment( aElem.component );
|
||||
shape->SetShape( S_SEGMENT );
|
||||
shape->SetShape( PCB_SHAPE_TYPE::SEGMENT );
|
||||
shape->SetLayer( klayer );
|
||||
shape->SetWidth( std::min( aElem.topsize.x, aElem.topsize.y ) );
|
||||
|
||||
@ -2121,7 +2121,7 @@ void ALTIUM_PCB::HelperParsePad6NonCopper( const APAD6& aElem )
|
||||
{
|
||||
// filled octagon
|
||||
PCB_SHAPE* shape = HelperCreateAndAddDrawsegment( aElem.component );
|
||||
shape->SetShape( S_POLYGON );
|
||||
shape->SetShape( PCB_SHAPE_TYPE::POLYGON );
|
||||
shape->SetFilled( true );
|
||||
shape->SetLayer( klayer );
|
||||
shape->SetWidth( 0 );
|
||||
@ -2230,7 +2230,7 @@ void ALTIUM_PCB::ParseTracks6Data( const CFB::CompoundFileReader& aReader,
|
||||
if( elem.is_keepout || IsAltiumLayerAPlane( elem.layer ) )
|
||||
{
|
||||
PCB_SHAPE shape( nullptr ); // just a helper to get the graphic
|
||||
shape.SetShape( S_SEGMENT );
|
||||
shape.SetShape( PCB_SHAPE_TYPE::SEGMENT );
|
||||
shape.SetStart( elem.start );
|
||||
shape.SetEnd( elem.end );
|
||||
shape.SetWidth( elem.width );
|
||||
@ -2294,7 +2294,7 @@ void ALTIUM_PCB::ParseTracks6Data( const CFB::CompoundFileReader& aReader,
|
||||
else
|
||||
{
|
||||
PCB_SHAPE* shape = HelperCreateAndAddDrawsegment( elem.component );
|
||||
shape->SetShape( S_SEGMENT );
|
||||
shape->SetShape( PCB_SHAPE_TYPE::SEGMENT );
|
||||
shape->SetStart( elem.start );
|
||||
shape->SetEnd( elem.end );
|
||||
shape->SetWidth( elem.width );
|
||||
@ -2560,7 +2560,7 @@ void ALTIUM_PCB::ParseFills6Data( const CFB::CompoundFileReader& aReader,
|
||||
PCB_SHAPE* shape = new PCB_SHAPE( m_board );
|
||||
m_board->Add( shape, ADD_MODE::APPEND );
|
||||
|
||||
shape->SetShape( S_POLYGON );
|
||||
shape->SetShape( PCB_SHAPE_TYPE::POLYGON );
|
||||
shape->SetFilled( true );
|
||||
shape->SetLayer( klayer );
|
||||
shape->SetWidth( 0 );
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user