Pass wxPoint objects by reference instead of on the stack.
This commit is contained in:
parent
f6cac49802
commit
8fd83cbb95
|
@ -684,7 +684,7 @@ void DIALOG_COLOR_PICKER::OnColorValueText( wxCommandEvent& event )
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
bool DIALOG_COLOR_PICKER::setHSvaluesFromCursor( wxPoint aMouseCursor )
|
bool DIALOG_COLOR_PICKER::setHSvaluesFromCursor( const wxPoint& aMouseCursor )
|
||||||
{
|
{
|
||||||
wxPoint mousePos = aMouseCursor;
|
wxPoint mousePos = aMouseCursor;
|
||||||
wxSize bmsize = m_bitmapHSV->GetSize();
|
wxSize bmsize = m_bitmapHSV->GetSize();
|
||||||
|
|
|
@ -219,7 +219,7 @@ void GRLine( EDA_RECT* ClipBox, wxDC* DC, int x1, int y1, int x2, int y2, int wi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void GRLine( EDA_RECT* aClipBox, wxDC* aDC, wxPoint aStart, wxPoint aEnd, int aWidth,
|
void GRLine( EDA_RECT* aClipBox, wxDC* aDC, const wxPoint& aStart, const wxPoint& aEnd, int aWidth,
|
||||||
const COLOR4D& aColor, wxPenStyle aStyle )
|
const COLOR4D& aColor, wxPenStyle aStyle )
|
||||||
{
|
{
|
||||||
GRLine( aClipBox, aDC, aStart.x, aStart.y, aEnd.x, aEnd.y, aWidth, aColor, aStyle );
|
GRLine( aClipBox, aDC, aStart.x, aStart.y, aEnd.x, aEnd.y, aWidth, aColor, aStyle );
|
||||||
|
@ -359,7 +359,7 @@ void GRCSegm( EDA_RECT* ClipBox, wxDC* DC, int x1, int y1, int x2, int y2, int w
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void GRCSegm( EDA_RECT* aClipBox, wxDC* aDC, wxPoint aStart, wxPoint aEnd, int aWidth,
|
void GRCSegm( EDA_RECT* aClipBox, wxDC* aDC, const wxPoint& aStart, const wxPoint& aEnd, int aWidth,
|
||||||
const COLOR4D& aColor )
|
const COLOR4D& aColor )
|
||||||
{
|
{
|
||||||
GRCSegm( aClipBox, aDC, aStart.x, aStart.y, aEnd.x, aEnd.y, aWidth, 0, aColor );
|
GRCSegm( aClipBox, aDC, aStart.x, aStart.y, aEnd.x, aEnd.y, aWidth, 0, aColor );
|
||||||
|
@ -374,7 +374,7 @@ void GRFillCSegm( EDA_RECT* ClipBox, wxDC* DC, int x1, int y1, int x2, int y2,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void GRFilledSegment( EDA_RECT* aClipBox, wxDC* aDC, wxPoint aStart, wxPoint aEnd,
|
void GRFilledSegment( EDA_RECT* aClipBox, wxDC* aDC, const wxPoint& aStart, const wxPoint& aEnd,
|
||||||
int aWidth, const COLOR4D& aColor )
|
int aWidth, const COLOR4D& aColor )
|
||||||
{
|
{
|
||||||
GRSetColorPen( aDC, aColor, aWidth );
|
GRSetColorPen( aDC, aColor, aWidth );
|
||||||
|
@ -565,7 +565,7 @@ void GRCircle( EDA_RECT* ClipBox, wxDC* DC, int x, int y, int r, const COLOR4D&
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void GRCircle( EDA_RECT* aClipBox, wxDC* aDC, wxPoint aPos, int aRadius, int aWidth,
|
void GRCircle( EDA_RECT* aClipBox, wxDC* aDC, const wxPoint& aPos, int aRadius, int aWidth,
|
||||||
const COLOR4D& aColor )
|
const COLOR4D& aColor )
|
||||||
{
|
{
|
||||||
GRCircle( aClipBox, aDC, aPos.x, aPos.y, aRadius, aWidth, aColor );
|
GRCircle( aClipBox, aDC, aPos.x, aPos.y, aRadius, aWidth, aColor );
|
||||||
|
@ -584,7 +584,7 @@ void GRFilledCircle( EDA_RECT* ClipBox, wxDC* DC, int x, int y, int r, int width
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void GRFilledCircle( EDA_RECT* aClipBox, wxDC* aDC, wxPoint aPos, int aRadius,
|
void GRFilledCircle( EDA_RECT* aClipBox, wxDC* aDC, const wxPoint& aPos, int aRadius,
|
||||||
const COLOR4D& aColor )
|
const COLOR4D& aColor )
|
||||||
{
|
{
|
||||||
GRFilledCircle( aClipBox, aDC, aPos.x, aPos.y, aRadius, 0, aColor, aColor );
|
GRFilledCircle( aClipBox, aDC, aPos.x, aPos.y, aRadius, 0, aColor, aColor );
|
||||||
|
@ -630,8 +630,8 @@ void GRArc1( EDA_RECT* ClipBox, wxDC* DC, int x1, int y1, int x2, int y2, int xc
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void GRArc1( EDA_RECT* aClipBox, wxDC* aDC, wxPoint aStart, wxPoint aEnd, wxPoint aCenter,
|
void GRArc1( EDA_RECT* aClipBox, wxDC* aDC, const wxPoint& aStart, const wxPoint& aEnd,
|
||||||
int aWidth, const COLOR4D& aColor )
|
const wxPoint& aCenter, int aWidth, const COLOR4D& aColor )
|
||||||
{
|
{
|
||||||
GRArc1( aClipBox, aDC, aStart.x, aStart.y, aEnd.x, aEnd.y, aCenter.x, aCenter.y,
|
GRArc1( aClipBox, aDC, aStart.x, aStart.y, aEnd.x, aEnd.y, aCenter.x, aCenter.y,
|
||||||
aWidth, aColor );
|
aWidth, aColor );
|
||||||
|
|
|
@ -539,7 +539,7 @@ void DIALOG_PLOT_SCHEMATIC::createDxfFile( bool aPlotAll, bool aPlotDrawingSheet
|
||||||
bool DIALOG_PLOT_SCHEMATIC::plotOneSheetDxf( const wxString& aFileName,
|
bool DIALOG_PLOT_SCHEMATIC::plotOneSheetDxf( const wxString& aFileName,
|
||||||
SCH_SCREEN* aScreen,
|
SCH_SCREEN* aScreen,
|
||||||
RENDER_SETTINGS* aRenderSettings,
|
RENDER_SETTINGS* aRenderSettings,
|
||||||
wxPoint aPlotOffset,
|
const wxPoint& aPlotOffset,
|
||||||
double aScale,
|
double aScale,
|
||||||
bool aPlotFrameRef )
|
bool aPlotFrameRef )
|
||||||
{
|
{
|
||||||
|
@ -707,7 +707,7 @@ bool DIALOG_PLOT_SCHEMATIC::plotOneSheetHpgl( const wxString& aFileName,
|
||||||
SCH_SCREEN* aScreen,
|
SCH_SCREEN* aScreen,
|
||||||
const PAGE_INFO& aPageInfo,
|
const PAGE_INFO& aPageInfo,
|
||||||
RENDER_SETTINGS* aRenderSettings,
|
RENDER_SETTINGS* aRenderSettings,
|
||||||
wxPoint aPlot0ffset,
|
const wxPoint& aPlot0ffset,
|
||||||
double aScale,
|
double aScale,
|
||||||
bool aPlotFrameRef,
|
bool aPlotFrameRef,
|
||||||
HPGL_PLOT_ORIGIN_AND_UNITS aOriginAndUnits )
|
HPGL_PLOT_ORIGIN_AND_UNITS aOriginAndUnits )
|
||||||
|
@ -1061,7 +1061,7 @@ bool DIALOG_PLOT_SCHEMATIC::plotOneSheetPS( const wxString& aFileName,
|
||||||
SCH_SCREEN* aScreen,
|
SCH_SCREEN* aScreen,
|
||||||
RENDER_SETTINGS* aRenderSettings,
|
RENDER_SETTINGS* aRenderSettings,
|
||||||
const PAGE_INFO& aPageInfo,
|
const PAGE_INFO& aPageInfo,
|
||||||
wxPoint aPlot0ffset,
|
const wxPoint& aPlot0ffset,
|
||||||
double aScale,
|
double aScale,
|
||||||
bool aPlotFrameRef )
|
bool aPlotFrameRef )
|
||||||
{
|
{
|
||||||
|
|
|
@ -112,8 +112,8 @@ private:
|
||||||
// DXF
|
// DXF
|
||||||
void createDxfFile( bool aPlotAll, bool aPlotDrawingSheet, RENDER_SETTINGS* aRenderSettings );
|
void createDxfFile( bool aPlotAll, bool aPlotDrawingSheet, RENDER_SETTINGS* aRenderSettings );
|
||||||
bool plotOneSheetDxf( const wxString& aFileName, SCH_SCREEN* aScreen,
|
bool plotOneSheetDxf( const wxString& aFileName, SCH_SCREEN* aScreen,
|
||||||
RENDER_SETTINGS* aRenderSettings, wxPoint aPlotOffset, double aScale,
|
RENDER_SETTINGS* aRenderSettings, const wxPoint& aPlotOffset,
|
||||||
bool aPlotFrameRef );
|
double aScale, bool aPlotFrameRef );
|
||||||
|
|
||||||
// HPGLGetPlotOriginAndUnits
|
// HPGLGetPlotOriginAndUnits
|
||||||
HPGL_PLOT_ORIGIN_AND_UNITS getPlotOriginAndUnits()
|
HPGL_PLOT_ORIGIN_AND_UNITS getPlotOriginAndUnits()
|
||||||
|
@ -155,14 +155,14 @@ private:
|
||||||
void setHpglPenWidth();
|
void setHpglPenWidth();
|
||||||
bool plotOneSheetHpgl( const wxString& aFileName, SCH_SCREEN* aScreen,
|
bool plotOneSheetHpgl( const wxString& aFileName, SCH_SCREEN* aScreen,
|
||||||
const PAGE_INFO& aPageInfo, RENDER_SETTINGS* aRenderSettings,
|
const PAGE_INFO& aPageInfo, RENDER_SETTINGS* aRenderSettings,
|
||||||
wxPoint aPlot0ffset, double aScale, bool aPlotFrameRef,
|
const wxPoint& aPlot0ffset, double aScale, bool aPlotFrameRef,
|
||||||
HPGL_PLOT_ORIGIN_AND_UNITS aOriginAndUnits );
|
HPGL_PLOT_ORIGIN_AND_UNITS aOriginAndUnits );
|
||||||
|
|
||||||
// PS
|
// PS
|
||||||
void createPSFile( bool aPlotAll, bool aPlotFrameRef, RENDER_SETTINGS* aSettings );
|
void createPSFile( bool aPlotAll, bool aPlotFrameRef, RENDER_SETTINGS* aSettings );
|
||||||
bool plotOneSheetPS( const wxString& aFileName, SCH_SCREEN* aScreen,
|
bool plotOneSheetPS( const wxString& aFileName, SCH_SCREEN* aScreen,
|
||||||
RENDER_SETTINGS* aRenderSettings, const PAGE_INFO& aPageInfo,
|
RENDER_SETTINGS* aRenderSettings, const PAGE_INFO& aPageInfo,
|
||||||
wxPoint aPlot0ffset, double aScale, bool aPlotFrameRef );
|
const wxPoint& aPlot0ffset, double aScale, bool aPlotFrameRef );
|
||||||
|
|
||||||
// SVG
|
// SVG
|
||||||
void createSVGFile( bool aPlotAll, bool aPlotFrameRef, RENDER_SETTINGS* aSettings );
|
void createSVGFile( bool aPlotAll, bool aPlotFrameRef, RENDER_SETTINGS* aSettings );
|
||||||
|
|
|
@ -2000,7 +2000,7 @@ void CADSTAR_SCH_ARCHIVE_LOADER::loadFigure( const FIGURE& aCadstarFigure,
|
||||||
|
|
||||||
|
|
||||||
void CADSTAR_SCH_ARCHIVE_LOADER::loadSheetAndChildSheets(
|
void CADSTAR_SCH_ARCHIVE_LOADER::loadSheetAndChildSheets(
|
||||||
LAYER_ID aCadstarSheetID, wxPoint aPosition, wxSize aSheetSize,
|
LAYER_ID aCadstarSheetID, const wxPoint& aPosition, wxSize aSheetSize,
|
||||||
const SCH_SHEET_PATH& aParentSheet )
|
const SCH_SHEET_PATH& aParentSheet )
|
||||||
{
|
{
|
||||||
wxCHECK_MSG( m_sheetMap.find( aCadstarSheetID ) == m_sheetMap.end(), ,
|
wxCHECK_MSG( m_sheetMap.find( aCadstarSheetID ) == m_sheetMap.end(), ,
|
||||||
|
@ -2855,7 +2855,7 @@ std::pair<wxPoint, wxSize> CADSTAR_SCH_ARCHIVE_LOADER::getFigureExtentsKiCad(
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
wxPoint CADSTAR_SCH_ARCHIVE_LOADER::getKiCadPoint( wxPoint aCadstarPoint )
|
wxPoint CADSTAR_SCH_ARCHIVE_LOADER::getKiCadPoint( const wxPoint& aCadstarPoint )
|
||||||
{
|
{
|
||||||
wxPoint retval;
|
wxPoint retval;
|
||||||
|
|
||||||
|
@ -2866,8 +2866,8 @@ wxPoint CADSTAR_SCH_ARCHIVE_LOADER::getKiCadPoint( wxPoint aCadstarPoint )
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
wxPoint CADSTAR_SCH_ARCHIVE_LOADER::getKiCadLibraryPoint( wxPoint aCadstarPoint,
|
wxPoint CADSTAR_SCH_ARCHIVE_LOADER::getKiCadLibraryPoint( const wxPoint& aCadstarPoint,
|
||||||
wxPoint aCadstarCentre )
|
const wxPoint& aCadstarCentre )
|
||||||
{
|
{
|
||||||
wxPoint retval;
|
wxPoint retval;
|
||||||
|
|
||||||
|
@ -2912,13 +2912,13 @@ wxPoint CADSTAR_SCH_ARCHIVE_LOADER::applyTransform( const wxPoint& aPoint,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
double CADSTAR_SCH_ARCHIVE_LOADER::getPolarAngle( wxPoint aPoint )
|
double CADSTAR_SCH_ARCHIVE_LOADER::getPolarAngle( const wxPoint& aPoint )
|
||||||
{
|
{
|
||||||
return NormalizeAnglePos( ArcTangente( aPoint.y, aPoint.x ) );
|
return NormalizeAnglePos( ArcTangente( aPoint.y, aPoint.x ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
double CADSTAR_SCH_ARCHIVE_LOADER::getPolarRadius( wxPoint aPoint )
|
double CADSTAR_SCH_ARCHIVE_LOADER::getPolarRadius( const wxPoint& aPoint )
|
||||||
{
|
{
|
||||||
return sqrt(
|
return sqrt(
|
||||||
( (double) aPoint.x * (double) aPoint.x ) + ( (double) aPoint.y * (double) aPoint.y ) );
|
( (double) aPoint.x * (double) aPoint.x ) + ( (double) aPoint.y * (double) aPoint.y ) );
|
||||||
|
|
|
@ -121,8 +121,8 @@ private:
|
||||||
void loadTextVariables();
|
void loadTextVariables();
|
||||||
|
|
||||||
//Helper Functions for loading sheets
|
//Helper Functions for loading sheets
|
||||||
void loadSheetAndChildSheets( LAYER_ID aCadstarSheetID, wxPoint aPosition, wxSize aSheetSize,
|
void loadSheetAndChildSheets( LAYER_ID aCadstarSheetID, const wxPoint& aPosition,
|
||||||
const SCH_SHEET_PATH& aParentSheet );
|
wxSize aSheetSize, const SCH_SHEET_PATH& aParentSheet );
|
||||||
|
|
||||||
void loadChildSheets( LAYER_ID aCadstarSheetID, const SCH_SHEET_PATH& aSheet );
|
void loadChildSheets( LAYER_ID aCadstarSheetID, const SCH_SHEET_PATH& aSheet );
|
||||||
|
|
||||||
|
@ -218,9 +218,9 @@ private:
|
||||||
|
|
||||||
std::pair<wxPoint, wxSize> getFigureExtentsKiCad( const FIGURE& aCadstarFigure );
|
std::pair<wxPoint, wxSize> getFigureExtentsKiCad( const FIGURE& aCadstarFigure );
|
||||||
|
|
||||||
wxPoint getKiCadPoint( wxPoint aCadstarPoint );
|
wxPoint getKiCadPoint( const wxPoint& aCadstarPoint );
|
||||||
|
|
||||||
wxPoint getKiCadLibraryPoint( wxPoint aCadstarPoint, wxPoint aCadstarCentre );
|
wxPoint getKiCadLibraryPoint( const wxPoint& aCadstarPoint, const wxPoint& aCadstarCentre );
|
||||||
|
|
||||||
wxPoint applyTransform( const wxPoint& aPoint, const wxPoint& aMoveVector = { 0, 0 },
|
wxPoint applyTransform( const wxPoint& aPoint, const wxPoint& aMoveVector = { 0, 0 },
|
||||||
const double& aRotationAngleDeciDeg = 0.0, const double& aScalingFactor = 1.0,
|
const double& aRotationAngleDeciDeg = 0.0, const double& aScalingFactor = 1.0,
|
||||||
|
@ -281,14 +281,14 @@ private:
|
||||||
* @param aPoint
|
* @param aPoint
|
||||||
* @return Angle in decidegrees of the polar representation of the point, scaled 0..360
|
* @return Angle in decidegrees of the polar representation of the point, scaled 0..360
|
||||||
*/
|
*/
|
||||||
double getPolarAngle( wxPoint aPoint );
|
double getPolarAngle( const wxPoint& aPoint );
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief
|
* @brief
|
||||||
* @param aPoint
|
* @param aPoint
|
||||||
* @return Radius of polar representation of the point
|
* @return Radius of polar representation of the point
|
||||||
*/
|
*/
|
||||||
double getPolarRadius( wxPoint aPoint );
|
double getPolarRadius( const wxPoint& aPoint );
|
||||||
|
|
||||||
}; // CADSTAR_SCH_ARCHIVE_LOADER
|
}; // CADSTAR_SCH_ARCHIVE_LOADER
|
||||||
|
|
||||||
|
|
|
@ -358,16 +358,18 @@ int SCH_LINE_WIRE_BUS_TOOL::UnfoldBus( const TOOL_EVENT& aEvent )
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
SCH_LINE* SCH_LINE_WIRE_BUS_TOOL::doUnfoldBus( const wxString& aNet, wxPoint aPos )
|
SCH_LINE* SCH_LINE_WIRE_BUS_TOOL::doUnfoldBus( const wxString& aNet, const wxPoint& aPos )
|
||||||
{
|
{
|
||||||
SCHEMATIC_SETTINGS& cfg = getModel<SCHEMATIC>()->Settings();
|
SCHEMATIC_SETTINGS& cfg = getModel<SCHEMATIC>()->Settings();
|
||||||
|
|
||||||
|
wxPoint pos = aPos;
|
||||||
|
|
||||||
if( aPos == wxDefaultPosition )
|
if( aPos == wxDefaultPosition )
|
||||||
aPos = static_cast<wxPoint>( getViewControls()->GetCursorPosition() );
|
pos = static_cast<wxPoint>( getViewControls()->GetCursorPosition() );
|
||||||
|
|
||||||
m_toolMgr->RunAction( EE_ACTIONS::clearSelection, true );
|
m_toolMgr->RunAction( EE_ACTIONS::clearSelection, true );
|
||||||
|
|
||||||
m_busUnfold.entry = new SCH_BUS_WIRE_ENTRY( aPos );
|
m_busUnfold.entry = new SCH_BUS_WIRE_ENTRY( pos );
|
||||||
m_busUnfold.entry->SetParent( m_frame->GetScreen() );
|
m_busUnfold.entry->SetParent( m_frame->GetScreen() );
|
||||||
m_frame->AddToScreen( m_busUnfold.entry, m_frame->GetScreen() );
|
m_frame->AddToScreen( m_busUnfold.entry, m_frame->GetScreen() );
|
||||||
|
|
||||||
|
@ -378,7 +380,7 @@ SCH_LINE* SCH_LINE_WIRE_BUS_TOOL::doUnfoldBus( const wxString& aNet, wxPoint aPo
|
||||||
m_busUnfold.label->SetFlags( IS_NEW | IS_MOVING );
|
m_busUnfold.label->SetFlags( IS_NEW | IS_MOVING );
|
||||||
|
|
||||||
m_busUnfold.in_progress = true;
|
m_busUnfold.in_progress = true;
|
||||||
m_busUnfold.origin = aPos;
|
m_busUnfold.origin = pos;
|
||||||
m_busUnfold.net_name = aNet;
|
m_busUnfold.net_name = aNet;
|
||||||
|
|
||||||
getViewControls()->SetCrossHairCursorPosition( m_busUnfold.entry->GetEnd(), false );
|
getViewControls()->SetCrossHairCursorPosition( m_busUnfold.entry->GetEnd(), false );
|
||||||
|
|
|
@ -96,7 +96,7 @@ public:
|
||||||
private:
|
private:
|
||||||
int doDrawSegments( const std::string& aTool, int aType, bool aQuitOnDraw );
|
int doDrawSegments( const std::string& aTool, int aType, bool aQuitOnDraw );
|
||||||
SCH_LINE* startSegments( int aType, const VECTOR2D& aPos );
|
SCH_LINE* startSegments( int aType, const VECTOR2D& aPos );
|
||||||
SCH_LINE* doUnfoldBus( const wxString& aNet, wxPoint aPos = wxDefaultPosition );
|
SCH_LINE* doUnfoldBus( const wxString& aNet, const wxPoint& aPos = wxDefaultPosition );
|
||||||
void finishSegments();
|
void finishSegments();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -525,7 +525,7 @@ int SCH_MOVE_TOOL::Main( const TOOL_EVENT& aEvent )
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void SCH_MOVE_TOOL::getConnectedDragItems( SCH_ITEM* aOriginalItem, wxPoint aPoint,
|
void SCH_MOVE_TOOL::getConnectedDragItems( SCH_ITEM* aOriginalItem, const wxPoint& aPoint,
|
||||||
EDA_ITEMS& aList )
|
EDA_ITEMS& aList )
|
||||||
{
|
{
|
||||||
EE_RTREE& items = m_frame->GetScreen()->Items();
|
EE_RTREE& items = m_frame->GetScreen()->Items();
|
||||||
|
|
|
@ -68,7 +68,7 @@ private:
|
||||||
///< Find additional items for a drag operation.
|
///< Find additional items for a drag operation.
|
||||||
///< Connected items with no wire are included (as there is no wire to adjust for the drag).
|
///< Connected items with no wire are included (as there is no wire to adjust for the drag).
|
||||||
///< Connected wires are included with any un-connected ends flagged (STARTPOINT or ENDPOINT).
|
///< Connected wires are included with any un-connected ends flagged (STARTPOINT or ENDPOINT).
|
||||||
void getConnectedDragItems( SCH_ITEM* aOriginalItem, wxPoint aPoint, EDA_ITEMS& aList );
|
void getConnectedDragItems( SCH_ITEM* aOriginalItem, const wxPoint& aPoint, EDA_ITEMS& aList );
|
||||||
|
|
||||||
///< Set up handlers for various events.
|
///< Set up handlers for various events.
|
||||||
void setTransitions() override;
|
void setTransitions() override;
|
||||||
|
|
|
@ -95,15 +95,17 @@ const int seg_per_circle = 64; // Number of segments to approximate a circle
|
||||||
|
|
||||||
|
|
||||||
void AM_PRIMITIVE::DrawBasicShape( const GERBER_DRAW_ITEM* aParent, SHAPE_POLY_SET& aShapeBuffer,
|
void AM_PRIMITIVE::DrawBasicShape( const GERBER_DRAW_ITEM* aParent, SHAPE_POLY_SET& aShapeBuffer,
|
||||||
wxPoint aShapePos )
|
const wxPoint& aShapePos )
|
||||||
{
|
{
|
||||||
#define TO_POLY_SHAPE \
|
#define TO_POLY_SHAPE \
|
||||||
{ \
|
{ \
|
||||||
if( polybuffer.size() > 1 ) \
|
if( polybuffer.size() > 1 ) \
|
||||||
{ \
|
{ \
|
||||||
aShapeBuffer.NewOutline(); \
|
aShapeBuffer.NewOutline(); \
|
||||||
|
\
|
||||||
for( unsigned jj = 0; jj < polybuffer.size(); jj++ ) \
|
for( unsigned jj = 0; jj < polybuffer.size(); jj++ ) \
|
||||||
aShapeBuffer.Append( polybuffer[jj].x, polybuffer[jj].y ); \
|
aShapeBuffer.Append( polybuffer[jj].x, polybuffer[jj].y ); \
|
||||||
|
\
|
||||||
aShapeBuffer.Append( polybuffer[0].x, polybuffer[0].y ); \
|
aShapeBuffer.Append( polybuffer[0].x, polybuffer[0].y ); \
|
||||||
} \
|
} \
|
||||||
}
|
}
|
||||||
|
@ -809,7 +811,7 @@ int AM_PRIMITIVE::GetShapeDim( const GERBER_DRAW_ITEM* aParent )
|
||||||
|
|
||||||
|
|
||||||
SHAPE_POLY_SET* APERTURE_MACRO::GetApertureMacroShape( const GERBER_DRAW_ITEM* aParent,
|
SHAPE_POLY_SET* APERTURE_MACRO::GetApertureMacroShape( const GERBER_DRAW_ITEM* aParent,
|
||||||
wxPoint aShapePos )
|
const wxPoint& aShapePos )
|
||||||
{
|
{
|
||||||
SHAPE_POLY_SET holeBuffer;
|
SHAPE_POLY_SET holeBuffer;
|
||||||
bool hasHole = false;
|
bool hasHole = false;
|
||||||
|
@ -858,8 +860,8 @@ SHAPE_POLY_SET* APERTURE_MACRO::GetApertureMacroShape( const GERBER_DRAW_ITEM* a
|
||||||
|
|
||||||
|
|
||||||
void APERTURE_MACRO::DrawApertureMacroShape( GERBER_DRAW_ITEM* aParent, EDA_RECT* aClipBox,
|
void APERTURE_MACRO::DrawApertureMacroShape( GERBER_DRAW_ITEM* aParent, EDA_RECT* aClipBox,
|
||||||
wxDC* aDC, const COLOR4D& aColor, wxPoint aShapePos,
|
wxDC* aDC, const COLOR4D& aColor,
|
||||||
bool aFilledShape )
|
const wxPoint& aShapePos, bool aFilledShape )
|
||||||
{
|
{
|
||||||
SHAPE_POLY_SET* shapeBuffer = GetApertureMacroShape( aParent, aShapePos );
|
SHAPE_POLY_SET* shapeBuffer = GetApertureMacroShape( aParent, aShapePos );
|
||||||
|
|
||||||
|
|
|
@ -142,7 +142,7 @@ public:
|
||||||
*/
|
*/
|
||||||
void DrawBasicShape( const GERBER_DRAW_ITEM* aParent,
|
void DrawBasicShape( const GERBER_DRAW_ITEM* aParent,
|
||||||
SHAPE_POLY_SET& aShapeBuffer,
|
SHAPE_POLY_SET& aShapeBuffer,
|
||||||
wxPoint aShapePos );
|
const wxPoint& aShapePos );
|
||||||
|
|
||||||
private:
|
private:
|
||||||
/**
|
/**
|
||||||
|
@ -189,7 +189,8 @@ struct APERTURE_MACRO
|
||||||
* @param aParent is the parent #GERBER_DRAW_ITEM which is actually drawn.
|
* @param aParent is the parent #GERBER_DRAW_ITEM which is actually drawn.
|
||||||
* @return the shape of the item.
|
* @return the shape of the item.
|
||||||
*/
|
*/
|
||||||
SHAPE_POLY_SET* GetApertureMacroShape( const GERBER_DRAW_ITEM* aParent, wxPoint aShapePos );
|
SHAPE_POLY_SET* GetApertureMacroShape( const GERBER_DRAW_ITEM* aParent,
|
||||||
|
const wxPoint& aShapePos );
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Draw the primitive shape for flashed items.
|
* Draw the primitive shape for flashed items.
|
||||||
|
@ -204,7 +205,8 @@ struct APERTURE_MACRO
|
||||||
* @param aFilledShape set to true to draw in filled mode, false to draw in sketch mode.
|
* @param aFilledShape set to true to draw in filled mode, false to draw in sketch mode.
|
||||||
*/
|
*/
|
||||||
void DrawApertureMacroShape( GERBER_DRAW_ITEM* aParent, EDA_RECT* aClipBox, wxDC* aDC,
|
void DrawApertureMacroShape( GERBER_DRAW_ITEM* aParent, EDA_RECT* aClipBox, wxDC* aDC,
|
||||||
const COLOR4D& aColor, wxPoint aShapePos, bool aFilledShape );
|
const COLOR4D& aColor, const wxPoint& aShapePos,
|
||||||
|
bool aFilledShape );
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Calculate a value that can be used to evaluate the size of text when displaying the
|
* Calculate a value that can be used to evaluate the size of text when displaying the
|
||||||
|
|
|
@ -172,7 +172,7 @@ private:
|
||||||
* if Saturation value computed from aMouseCursor is <= 1.0,
|
* if Saturation value computed from aMouseCursor is <= 1.0,
|
||||||
* and false if aMouseCursor is outside this area.
|
* and false if aMouseCursor is outside this area.
|
||||||
*/
|
*/
|
||||||
bool setHSvaluesFromCursor( wxPoint aMouseCursor );
|
bool setHSvaluesFromCursor( const wxPoint& aMouseCursor );
|
||||||
|
|
||||||
///< Event handler for defined color buttons
|
///< Event handler for defined color buttons
|
||||||
void buttColorClick( wxMouseEvent& event );
|
void buttColorClick( wxMouseEvent& event );
|
||||||
|
|
|
@ -104,7 +104,7 @@ void GRForceBlackPen( bool flagforce );
|
||||||
*/
|
*/
|
||||||
bool GetGRForceBlackPenState( void );
|
bool GetGRForceBlackPenState( void );
|
||||||
|
|
||||||
void GRLine( EDA_RECT* aClipBox, wxDC* aDC, wxPoint aStart, wxPoint aEnd, int aWidth,
|
void GRLine( EDA_RECT* aClipBox, wxDC* aDC, const wxPoint& aStart, const wxPoint& aEnd, int aWidth,
|
||||||
const COLOR4D& aColor, wxPenStyle aStyle = wxPENSTYLE_SOLID );
|
const COLOR4D& aColor, wxPenStyle aStyle = wxPENSTYLE_SOLID );
|
||||||
void GRLine( EDA_RECT* ClipBox, wxDC* DC, int x1, int y1, int x2, int y2, int width,
|
void GRLine( EDA_RECT* ClipBox, wxDC* DC, int x1, int y1, int x2, int y2, int width,
|
||||||
const COLOR4D& Color, wxPenStyle aStyle = wxPENSTYLE_SOLID );
|
const COLOR4D& Color, wxPenStyle aStyle = wxPENSTYLE_SOLID );
|
||||||
|
@ -171,9 +171,9 @@ void GRCircle( EDA_RECT* ClipBox, wxDC* aDC, int x, int y, int aRadius, const CO
|
||||||
void GRCircle( EDA_RECT* ClipBox, wxDC* DC, int x, int y, int r, int width, const COLOR4D& Color );
|
void GRCircle( EDA_RECT* ClipBox, wxDC* DC, int x, int y, int r, int width, const COLOR4D& Color );
|
||||||
void GRFilledCircle( EDA_RECT* ClipBox, wxDC* DC, int x, int y, int r, int width,
|
void GRFilledCircle( EDA_RECT* ClipBox, wxDC* DC, int x, int y, int r, int width,
|
||||||
const COLOR4D& Color, const COLOR4D& BgColor );
|
const COLOR4D& Color, const COLOR4D& BgColor );
|
||||||
void GRFilledCircle( EDA_RECT* aClipBox, wxDC* aDC, wxPoint aPos, int aRadius,
|
void GRFilledCircle( EDA_RECT* aClipBox, wxDC* aDC, const wxPoint& aPos, int aRadius,
|
||||||
const COLOR4D& aColor );
|
const COLOR4D& aColor );
|
||||||
void GRCircle( EDA_RECT* aClipBox, wxDC* aDC, wxPoint aPos, int aRadius, int aWidth,
|
void GRCircle( EDA_RECT* aClipBox, wxDC* aDC, const wxPoint& aPos, int aRadius, int aWidth,
|
||||||
const COLOR4D& aColor );
|
const COLOR4D& aColor );
|
||||||
|
|
||||||
void GRArc( EDA_RECT* ClipBox, wxDC* DC, int x, int y, double StAngle,
|
void GRArc( EDA_RECT* ClipBox, wxDC* DC, int x, int y, double StAngle,
|
||||||
|
@ -184,8 +184,8 @@ void GRArc1( EDA_RECT* ClipBox, wxDC* DC, int x1, int y1, int x2, int y2,
|
||||||
int xc, int yc, const COLOR4D& Color );
|
int xc, int yc, const COLOR4D& Color );
|
||||||
void GRArc1( EDA_RECT* ClipBox, wxDC* DC, int x1, int y1, int x2, int y2,
|
void GRArc1( EDA_RECT* ClipBox, wxDC* DC, int x1, int y1, int x2, int y2,
|
||||||
int xc, int yc, int width, const COLOR4D& Color );
|
int xc, int yc, int width, const COLOR4D& Color );
|
||||||
void GRArc1( EDA_RECT* aClipBox, wxDC* aDC, wxPoint aStart, wxPoint aEnd,
|
void GRArc1( EDA_RECT* aClipBox, wxDC* aDC, const wxPoint& aStart, const wxPoint& aEnd,
|
||||||
wxPoint aCenter, int aWidth, const COLOR4D& aColor );
|
const wxPoint& aCenter, int aWidth, const COLOR4D& aColor );
|
||||||
void GRFilledArc( EDA_RECT* ClipBox, wxDC* DC, int x, int y, double StAngle, double EndAngle,
|
void GRFilledArc( EDA_RECT* ClipBox, wxDC* DC, int x, int y, double StAngle, double EndAngle,
|
||||||
int r, const COLOR4D& Color, const COLOR4D& BgColor );
|
int r, const COLOR4D& Color, const COLOR4D& BgColor );
|
||||||
void GRFilledArc( EDA_RECT* ClipBox, wxDC* DC, int x, int y, double StAngle,
|
void GRFilledArc( EDA_RECT* ClipBox, wxDC* DC, int x, int y, double StAngle,
|
||||||
|
@ -195,12 +195,12 @@ void GRCSegm( EDA_RECT* ClipBox, wxDC* DC, int x1, int y1, int x2, int y2, int w
|
||||||
|
|
||||||
void GRFillCSegm( EDA_RECT* ClipBox, wxDC* DC, int x1, int y1, int x2, int y2,
|
void GRFillCSegm( EDA_RECT* ClipBox, wxDC* DC, int x1, int y1, int x2, int y2,
|
||||||
int width, const COLOR4D& Color );
|
int width, const COLOR4D& Color );
|
||||||
void GRFilledSegment( EDA_RECT* aClipBox, wxDC* aDC, wxPoint aStart, wxPoint aEnd,
|
void GRFilledSegment( EDA_RECT* aClipBox, wxDC* aDC, const wxPoint& aStart, const wxPoint& aEnd,
|
||||||
int aWidth, const COLOR4D& aColor );
|
int aWidth, const COLOR4D& aColor );
|
||||||
|
|
||||||
void GRCSegm( EDA_RECT* ClipBox, wxDC* DC, int x1, int y1, int x2, int y2,
|
void GRCSegm( EDA_RECT* ClipBox, wxDC* DC, int x1, int y1, int x2, int y2,
|
||||||
int width, int aPenSize, const COLOR4D& Color );
|
int width, int aPenSize, const COLOR4D& Color );
|
||||||
void GRCSegm( EDA_RECT* aClipBox, wxDC* aDC, wxPoint aStart, wxPoint aEnd,
|
void GRCSegm( EDA_RECT* aClipBox, wxDC* aDC, const wxPoint& aStart, const wxPoint& aEnd,
|
||||||
int aWidth, const COLOR4D& aColor );
|
int aWidth, const COLOR4D& aColor );
|
||||||
|
|
||||||
void GRSetColor( const COLOR4D& Color );
|
void GRSetColor( const COLOR4D& Color );
|
||||||
|
|
|
@ -75,7 +75,7 @@ int ConvertArcToPolyline( SHAPE_LINE_CHAIN& aPolyline, VECTOR2I aCenter, int aRa
|
||||||
* @param aMinSegCount is the min count of segments to approximate.
|
* @param aMinSegCount is the min count of segments to approximate.
|
||||||
* Default = 0 to do not force a min count.
|
* Default = 0 to do not force a min count.
|
||||||
*/
|
*/
|
||||||
void TransformCircleToPolygon( SHAPE_LINE_CHAIN& aCornerBuffer, wxPoint aCenter, int aRadius,
|
void TransformCircleToPolygon( SHAPE_LINE_CHAIN& aCornerBuffer, const wxPoint& aCenter, int aRadius,
|
||||||
int aError, ERROR_LOC aErrorLoc, int aMinSegCount = 0 );
|
int aError, ERROR_LOC aErrorLoc, int aMinSegCount = 0 );
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -89,7 +89,7 @@ void TransformCircleToPolygon( SHAPE_LINE_CHAIN& aCornerBuffer, wxPoint aCenter,
|
||||||
* @param aMinSegCount is the min count of segments to approximate.
|
* @param aMinSegCount is the min count of segments to approximate.
|
||||||
* Default = 0 to do not force a min count.
|
* Default = 0 to do not force a min count.
|
||||||
*/
|
*/
|
||||||
void TransformCircleToPolygon( SHAPE_POLY_SET& aCornerBuffer, wxPoint aCenter, int aRadius,
|
void TransformCircleToPolygon( SHAPE_POLY_SET& aCornerBuffer, const wxPoint& aCenter, int aRadius,
|
||||||
int aError, ERROR_LOC aErrorLoc, int aMinSegCount = 0 );
|
int aError, ERROR_LOC aErrorLoc, int aMinSegCount = 0 );
|
||||||
|
|
||||||
|
|
||||||
|
@ -110,8 +110,9 @@ void TransformCircleToPolygon( SHAPE_POLY_SET& aCornerBuffer, wxPoint aCenter, i
|
||||||
* @param aMinSegCount is the min count of segments to approximate.
|
* @param aMinSegCount is the min count of segments to approximate.
|
||||||
* Default = 0 to do not force a min count.
|
* Default = 0 to do not force a min count.
|
||||||
*/
|
*/
|
||||||
void TransformOvalToPolygon( SHAPE_POLY_SET& aCornerBuffer, wxPoint aStart, wxPoint aEnd,
|
void TransformOvalToPolygon( SHAPE_POLY_SET& aCornerBuffer, const wxPoint& aStart,
|
||||||
int aWidth, int aError, ERROR_LOC aErrorLoc, int aMinSegCount = 0 );
|
const wxPoint& aEnd, int aWidth, int aError, ERROR_LOC aErrorLoc,
|
||||||
|
int aMinSegCount = 0 );
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Convert a rectangle or trapezoid to a polygon.
|
* Convert a rectangle or trapezoid to a polygon.
|
||||||
|
@ -172,8 +173,9 @@ void TransformRoundChamferedRectToPolygon( SHAPE_POLY_SET& aCornerBuffer,
|
||||||
* @param aError is the internal units allowed for error in approximation.
|
* @param aError is the internal units allowed for error in approximation.
|
||||||
* @param aErrorLoc determines if the approximation error be placed outside or inside the polygon.
|
* @param aErrorLoc determines if the approximation error be placed outside or inside the polygon.
|
||||||
*/
|
*/
|
||||||
void TransformArcToPolygon( SHAPE_POLY_SET& aCornerBuffer, wxPoint aStart, wxPoint aMid,
|
void TransformArcToPolygon( SHAPE_POLY_SET& aCornerBuffer, const wxPoint& aStart,
|
||||||
wxPoint aEnd, int aWidth, int aError, ERROR_LOC aErrorLoc );
|
const wxPoint& aMid, const wxPoint& aEnd, int aWidth, int aError,
|
||||||
|
ERROR_LOC aErrorLoc );
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Convert arcs to multiple straight segments.
|
* Convert arcs to multiple straight segments.
|
||||||
|
@ -185,7 +187,7 @@ void TransformArcToPolygon( SHAPE_POLY_SET& aCornerBuffer, wxPoint aStart, wxPoi
|
||||||
* @param aError is the internal units allowed for error in approximation.
|
* @param aError is the internal units allowed for error in approximation.
|
||||||
* @param aErrorLoc determines if the approximation error be placed outside or inside the polygon.
|
* @param aErrorLoc determines if the approximation error be placed outside or inside the polygon.
|
||||||
*/
|
*/
|
||||||
void TransformRingToPolygon( SHAPE_POLY_SET& aCornerBuffer, wxPoint aCentre, int aRadius,
|
void TransformRingToPolygon( SHAPE_POLY_SET& aCornerBuffer, const wxPoint& aCentre, int aRadius,
|
||||||
int aWidth, int aError, ERROR_LOC aErrorLoc );
|
int aWidth, int aError, ERROR_LOC aErrorLoc );
|
||||||
|
|
||||||
#endif // CONVERT_BASIC_SHAPES_TO_POLYGON_H
|
#endif // CONVERT_BASIC_SHAPES_TO_POLYGON_H
|
||||||
|
|
|
@ -57,6 +57,6 @@ void BuildConvexHull( std::vector<wxPoint>& aResult, const SHAPE_POLY_SET& aPoly
|
||||||
* @param aRotation is the rotation of the convex hull.
|
* @param aRotation is the rotation of the convex hull.
|
||||||
*/
|
*/
|
||||||
void BuildConvexHull( std::vector<wxPoint>& aResult, const SHAPE_POLY_SET& aPolygons,
|
void BuildConvexHull( std::vector<wxPoint>& aResult, const SHAPE_POLY_SET& aPolygons,
|
||||||
wxPoint aPosition, double aRotation );
|
const wxPoint& aPosition, double aRotation );
|
||||||
|
|
||||||
#endif // __CONVEX_HULL_H
|
#endif // __CONVEX_HULL_H
|
||||||
|
|
|
@ -58,8 +58,8 @@ bool IsPointOnSegment( const wxPoint& aSegStart, const wxPoint& aSegEnd,
|
||||||
* @return bool - true if the two segments defined by four points intersect.
|
* @return bool - true if the two segments defined by four points intersect.
|
||||||
* (i.e. if the 2 segments have at least a common point)
|
* (i.e. if the 2 segments have at least a common point)
|
||||||
*/
|
*/
|
||||||
bool SegmentIntersectsSegment( const wxPoint &a_p1_l1, const wxPoint &a_p2_l1,
|
bool SegmentIntersectsSegment( const wxPoint& a_p1_l1, const wxPoint& a_p2_l1,
|
||||||
const wxPoint &a_p1_l2, const wxPoint &a_p2_l2,
|
const wxPoint& a_p1_l2, const wxPoint& a_p2_l2,
|
||||||
wxPoint* aIntersectionPoint = nullptr );
|
wxPoint* aIntersectionPoint = nullptr );
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -75,8 +75,7 @@ void RotatePoint( int *pX, int *pY, double angle );
|
||||||
void RotatePoint( int *pX, int *pY, int cx, int cy, double angle );
|
void RotatePoint( int *pX, int *pY, int cx, int cy, double angle );
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Calculates the new coord point point
|
* Calculate the new coord point point for a rotation angle in (1 / 10 degree).
|
||||||
* for a rotation angle in (1 / 10 degree)
|
|
||||||
*/
|
*/
|
||||||
inline void RotatePoint( wxPoint* point, double angle )
|
inline void RotatePoint( wxPoint* point, double angle )
|
||||||
{
|
{
|
||||||
|
@ -91,8 +90,7 @@ inline void RotatePoint( VECTOR2I& point, double angle )
|
||||||
void RotatePoint( VECTOR2I& point, const VECTOR2I& centre, double angle );
|
void RotatePoint( VECTOR2I& point, const VECTOR2I& centre, double angle );
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Calculates the new coord point point
|
* Calculate the new coord point point for a center rotation center and angle in (1 / 10 degree).
|
||||||
* for a center rotation center and angle in (1 / 10 degree)
|
|
||||||
*/
|
*/
|
||||||
void RotatePoint( wxPoint *point, const wxPoint & centre, double angle );
|
void RotatePoint( wxPoint *point, const wxPoint & centre, double angle );
|
||||||
|
|
||||||
|
@ -114,12 +112,12 @@ const wxPoint GetArcCenter( const wxPoint& aStart, const wxPoint& aMid, const wx
|
||||||
const wxPoint GetArcCenter( VECTOR2I aStart, VECTOR2I aEnd, double aAngle );
|
const wxPoint GetArcCenter( VECTOR2I aStart, VECTOR2I aEnd, double aAngle );
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the subtended angle for a given arc
|
* Return the subtended angle for a given arc.
|
||||||
*/
|
*/
|
||||||
double GetArcAngle( const VECTOR2I& aStart, const VECTOR2I& aMid, const VECTOR2I& aEnd );
|
double GetArcAngle( const VECTOR2I& aStart, const VECTOR2I& aMid, const VECTOR2I& aEnd );
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the middle point of an arc, half-way between aStart and aEnd. There are two possible
|
* Return the middle point of an arc, half-way between aStart and aEnd. There are two possible
|
||||||
* solutions which can be found by toggling aMinArcAngle. The behaviour is undefined for
|
* solutions which can be found by toggling aMinArcAngle. The behaviour is undefined for
|
||||||
* semicircles (i.e. 180 degree arcs).
|
* semicircles (i.e. 180 degree arcs).
|
||||||
*
|
*
|
||||||
|
@ -162,9 +160,9 @@ inline double EuclideanNorm( const wxSize &vector )
|
||||||
//! @param linePointA Point on line
|
//! @param linePointA Point on line
|
||||||
//! @param linePointB Point on line
|
//! @param linePointB Point on line
|
||||||
//! @param referencePoint Reference point
|
//! @param referencePoint Reference point
|
||||||
inline double DistanceLinePoint( const wxPoint &linePointA,
|
inline double DistanceLinePoint( const wxPoint& linePointA,
|
||||||
const wxPoint &linePointB,
|
const wxPoint& linePointB,
|
||||||
const wxPoint &referencePoint )
|
const wxPoint& referencePoint )
|
||||||
{
|
{
|
||||||
// Some of the multiple double casts are redundant. However in the previous
|
// Some of the multiple double casts are redundant. However in the previous
|
||||||
// definition the cast was (implicitly) done too late, just before
|
// definition the cast was (implicitly) done too late, just before
|
||||||
|
@ -183,7 +181,7 @@ inline double DistanceLinePoint( const wxPoint &linePointA,
|
||||||
//! @param pointB Second point
|
//! @param pointB Second point
|
||||||
//! @param threshold The maximum distance
|
//! @param threshold The maximum distance
|
||||||
//! @return True or false
|
//! @return True or false
|
||||||
inline bool HitTestPoints( const wxPoint &pointA, const wxPoint &pointB, double threshold )
|
inline bool HitTestPoints( const wxPoint& pointA, const wxPoint& pointB, double threshold )
|
||||||
{
|
{
|
||||||
wxPoint vectorAB = pointB - pointA;
|
wxPoint vectorAB = pointB - pointA;
|
||||||
|
|
||||||
|
@ -197,7 +195,7 @@ inline bool HitTestPoints( const wxPoint &pointA, const wxPoint &pointB, double
|
||||||
//! @brief Determine the cross product
|
//! @brief Determine the cross product
|
||||||
//! @param vectorA Two-dimensional vector
|
//! @param vectorA Two-dimensional vector
|
||||||
//! @param vectorB Two-dimensional vector
|
//! @param vectorB Two-dimensional vector
|
||||||
inline double CrossProduct( const wxPoint &vectorA, const wxPoint &vectorB )
|
inline double CrossProduct( const wxPoint& vectorA, const wxPoint& vectorB )
|
||||||
{
|
{
|
||||||
// As before the cast is to avoid int overflow
|
// As before the cast is to avoid int overflow
|
||||||
return (double)vectorA.x * vectorB.y - (double)vectorA.y * vectorB.x;
|
return (double)vectorA.x * vectorB.y - (double)vectorA.y * vectorB.x;
|
||||||
|
@ -211,7 +209,8 @@ inline double CrossProduct( const wxPoint &vectorA, const wxPoint &vectorB )
|
||||||
* @param aEnd is the second end-point of the line segment
|
* @param aEnd is the second end-point of the line segment
|
||||||
* @param aDist = maximum distance for hit
|
* @param aDist = maximum distance for hit
|
||||||
*/
|
*/
|
||||||
bool TestSegmentHit( const wxPoint &aRefPoint, wxPoint aStart, wxPoint aEnd, int aDist );
|
bool TestSegmentHit( const wxPoint& aRefPoint, const wxPoint& aStart, const wxPoint& aEnd,
|
||||||
|
int aDist );
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Return the length of a line segment defined by \a aPointA and \a aPointB.
|
* Return the length of a line segment defined by \a aPointA and \a aPointB.
|
||||||
|
@ -223,8 +222,7 @@ bool TestSegmentHit( const wxPoint &aRefPoint, wxPoint aStart, wxPoint aEnd, int
|
||||||
inline double GetLineLength( const wxPoint& aPointA, const wxPoint& aPointB )
|
inline double GetLineLength( const wxPoint& aPointA, const wxPoint& aPointB )
|
||||||
{
|
{
|
||||||
// Implicitly casted to double
|
// Implicitly casted to double
|
||||||
return hypot( aPointA.x - aPointB.x,
|
return hypot( aPointA.x - aPointB.x, aPointA.y - aPointB.y );
|
||||||
aPointA.y - aPointB.y );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// These are the usual degrees <-> radians conversion routines
|
// These are the usual degrees <-> radians conversion routines
|
||||||
|
@ -244,8 +242,10 @@ template <class T> inline T NormalizeAngle360Max( T Angle )
|
||||||
{
|
{
|
||||||
while( Angle < -3600 )
|
while( Angle < -3600 )
|
||||||
Angle += 3600;
|
Angle += 3600;
|
||||||
|
|
||||||
while( Angle > 3600 )
|
while( Angle > 3600 )
|
||||||
Angle -= 3600;
|
Angle -= 3600;
|
||||||
|
|
||||||
return Angle;
|
return Angle;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -255,27 +255,29 @@ template <class T> inline T NormalizeAngle360Min( T Angle )
|
||||||
{
|
{
|
||||||
while( Angle <= -3600 )
|
while( Angle <= -3600 )
|
||||||
Angle += 3600;
|
Angle += 3600;
|
||||||
|
|
||||||
while( Angle >= 3600 )
|
while( Angle >= 3600 )
|
||||||
Angle -= 3600;
|
Angle -= 3600;
|
||||||
|
|
||||||
return Angle;
|
return Angle;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/// Normalize angle to be in the 0.0 .. -360.0 range:
|
/// Normalize angle to be in the 0.0 .. -360.0 range: angle is in 1/10 degrees.
|
||||||
/// angle is in 1/10 degrees
|
|
||||||
template <class T>
|
template <class T>
|
||||||
inline T NormalizeAngleNeg( T Angle )
|
inline T NormalizeAngleNeg( T Angle )
|
||||||
{
|
{
|
||||||
while( Angle <= -3600 )
|
while( Angle <= -3600 )
|
||||||
Angle += 3600;
|
Angle += 3600;
|
||||||
|
|
||||||
while( Angle > 0 )
|
while( Angle > 0 )
|
||||||
Angle -= 3600;
|
Angle -= 3600;
|
||||||
|
|
||||||
return Angle;
|
return Angle;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/// Normalize angle to be in the 0.0 .. 360.0 range:
|
/// Normalize angle to be in the 0.0 .. 360.0 range: angle is in 1/10 degrees.
|
||||||
/// angle is in 1/10 degrees
|
|
||||||
template <class T> inline T NormalizeAnglePos( T Angle )
|
template <class T> inline T NormalizeAnglePos( T Angle )
|
||||||
{
|
{
|
||||||
while( Angle < 0 )
|
while( Angle < 0 )
|
||||||
|
@ -291,14 +293,15 @@ template <class T> inline void NORMALIZE_ANGLE_POS( T& Angle )
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/// Normalize angle to be in the 0.0 .. 360.0 range:
|
/// Normalize angle to be in the 0.0 .. 360.0 range: angle is in degrees.
|
||||||
/// angle is in degrees
|
|
||||||
inline double NormalizeAngleDegreesPos( double Angle )
|
inline double NormalizeAngleDegreesPos( double Angle )
|
||||||
{
|
{
|
||||||
while( Angle < 0 )
|
while( Angle < 0 )
|
||||||
Angle += 360.0;
|
Angle += 360.0;
|
||||||
|
|
||||||
while( Angle >= 360.0 )
|
while( Angle >= 360.0 )
|
||||||
Angle -= 360.0;
|
Angle -= 360.0;
|
||||||
|
|
||||||
return Angle;
|
return Angle;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -313,19 +316,22 @@ inline double NormalizeAngleRadiansPos( double Angle )
|
||||||
{
|
{
|
||||||
while( Angle < 0 )
|
while( Angle < 0 )
|
||||||
Angle += (2 * M_PI );
|
Angle += (2 * M_PI );
|
||||||
|
|
||||||
while( Angle >= ( 2 * M_PI ) )
|
while( Angle >= ( 2 * M_PI ) )
|
||||||
Angle -= ( 2 * M_PI );
|
Angle -= ( 2 * M_PI );
|
||||||
|
|
||||||
return Angle;
|
return Angle;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Normalize angle to be aMin < angle <= aMax
|
/// Normalize angle to be aMin < angle <= aMax angle is in degrees.
|
||||||
/// angle is in degrees
|
|
||||||
inline double NormalizeAngleDegrees( double Angle, double aMin, double aMax )
|
inline double NormalizeAngleDegrees( double Angle, double aMin, double aMax )
|
||||||
{
|
{
|
||||||
while( Angle < aMin )
|
while( Angle < aMin )
|
||||||
Angle += 360.0;
|
Angle += 360.0;
|
||||||
|
|
||||||
while( Angle >= aMax )
|
while( Angle >= aMax )
|
||||||
Angle -= 360.0;
|
Angle -= 360.0;
|
||||||
|
|
||||||
return Angle;
|
return Angle;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -343,10 +349,13 @@ template <class T, class T2> inline T AddAngles( T a1, T2 a2 )
|
||||||
template <class T> inline T NegateAndNormalizeAnglePos( T Angle )
|
template <class T> inline T NegateAndNormalizeAnglePos( T Angle )
|
||||||
{
|
{
|
||||||
Angle = -Angle;
|
Angle = -Angle;
|
||||||
|
|
||||||
while( Angle < 0 )
|
while( Angle < 0 )
|
||||||
Angle += 3600;
|
Angle += 3600;
|
||||||
|
|
||||||
while( Angle >= 3600 )
|
while( Angle >= 3600 )
|
||||||
Angle -= 3600;
|
Angle -= 3600;
|
||||||
|
|
||||||
return Angle;
|
return Angle;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -361,8 +370,10 @@ template <class T> inline T NormalizeAngle90( T Angle )
|
||||||
{
|
{
|
||||||
while( Angle < -900 )
|
while( Angle < -900 )
|
||||||
Angle += 1800;
|
Angle += 1800;
|
||||||
|
|
||||||
while( Angle > 900 )
|
while( Angle > 900 )
|
||||||
Angle -= 1800;
|
Angle -= 1800;
|
||||||
|
|
||||||
return Angle;
|
return Angle;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -377,8 +388,10 @@ template <class T> inline T NormalizeAngle180( T Angle )
|
||||||
{
|
{
|
||||||
while( Angle <= -1800 )
|
while( Angle <= -1800 )
|
||||||
Angle += 3600;
|
Angle += 3600;
|
||||||
|
|
||||||
while( Angle > 1800 )
|
while( Angle > 1800 )
|
||||||
Angle -= 3600;
|
Angle -= 3600;
|
||||||
|
|
||||||
return Angle;
|
return Angle;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -39,7 +39,7 @@
|
||||||
#include <trigo.h>
|
#include <trigo.h>
|
||||||
|
|
||||||
|
|
||||||
void TransformCircleToPolygon( SHAPE_LINE_CHAIN& aCornerBuffer, wxPoint aCenter, int aRadius,
|
void TransformCircleToPolygon( SHAPE_LINE_CHAIN& aCornerBuffer, const wxPoint& aCenter, int aRadius,
|
||||||
int aError, ERROR_LOC aErrorLoc, int aMinSegCount )
|
int aError, ERROR_LOC aErrorLoc, int aMinSegCount )
|
||||||
{
|
{
|
||||||
wxPoint corner_position;
|
wxPoint corner_position;
|
||||||
|
@ -78,7 +78,7 @@ void TransformCircleToPolygon( SHAPE_LINE_CHAIN& aCornerBuffer, wxPoint aCenter,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void TransformCircleToPolygon( SHAPE_POLY_SET& aCornerBuffer, wxPoint aCenter, int aRadius,
|
void TransformCircleToPolygon( SHAPE_POLY_SET& aCornerBuffer, const wxPoint& aCenter, int aRadius,
|
||||||
int aError, ERROR_LOC aErrorLoc, int aMinSegCount )
|
int aError, ERROR_LOC aErrorLoc, int aMinSegCount )
|
||||||
{
|
{
|
||||||
wxPoint corner_position;
|
wxPoint corner_position;
|
||||||
|
@ -123,8 +123,9 @@ void TransformCircleToPolygon( SHAPE_POLY_SET& aCornerBuffer, wxPoint aCenter, i
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void TransformOvalToPolygon( SHAPE_POLY_SET& aCornerBuffer, wxPoint aStart, wxPoint aEnd,
|
void TransformOvalToPolygon( SHAPE_POLY_SET& aCornerBuffer, const wxPoint& aStart,
|
||||||
int aWidth, int aError, ERROR_LOC aErrorLoc, int aMinSegCount )
|
const wxPoint& aEnd, int aWidth, int aError, ERROR_LOC aErrorLoc,
|
||||||
|
int aMinSegCount )
|
||||||
{
|
{
|
||||||
// To build the polygonal shape outside the actual shape, we use a bigger
|
// To build the polygonal shape outside the actual shape, we use a bigger
|
||||||
// radius to build rounded ends.
|
// radius to build rounded ends.
|
||||||
|
@ -479,8 +480,9 @@ int ConvertArcToPolyline( SHAPE_LINE_CHAIN& aPolyline, VECTOR2I aCenter, int aRa
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void TransformArcToPolygon( SHAPE_POLY_SET& aCornerBuffer, wxPoint aStart, wxPoint aMid,
|
void TransformArcToPolygon( SHAPE_POLY_SET& aCornerBuffer, const wxPoint& aStart,
|
||||||
wxPoint aEnd, int aWidth, int aError, ERROR_LOC aErrorLoc )
|
const wxPoint& aMid, const wxPoint& aEnd, int aWidth,
|
||||||
|
int aError, ERROR_LOC aErrorLoc )
|
||||||
{
|
{
|
||||||
SHAPE_ARC arc( aStart, aMid, aEnd, aWidth );
|
SHAPE_ARC arc( aStart, aMid, aEnd, aWidth );
|
||||||
// Currentlye have currently 2 algos:
|
// Currentlye have currently 2 algos:
|
||||||
|
@ -611,7 +613,7 @@ void TransformArcToPolygon( SHAPE_POLY_SET& aCornerBuffer, wxPoint aStart, wxPoi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void TransformRingToPolygon( SHAPE_POLY_SET& aCornerBuffer, wxPoint aCentre, int aRadius,
|
void TransformRingToPolygon( SHAPE_POLY_SET& aCornerBuffer, const wxPoint& aCentre, int aRadius,
|
||||||
int aWidth, int aError, ERROR_LOC aErrorLoc )
|
int aWidth, int aError, ERROR_LOC aErrorLoc )
|
||||||
{
|
{
|
||||||
int inner_radius = aRadius - ( aWidth / 2 );
|
int inner_radius = aRadius - ( aWidth / 2 );
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
* This program source code file is part of KiCad, a free EDA CAD application.
|
* This program source code file is part of KiCad, a free EDA CAD application.
|
||||||
*
|
*
|
||||||
* Copyright (C) 2016 Jean-Pierre Charras, jp.charras at wanadoo.fr
|
* Copyright (C) 2016 Jean-Pierre Charras, jp.charras at wanadoo.fr
|
||||||
* Copyright (C) 1992-2016 KiCad Developers, see AUTHORS.txt for contributors.
|
* Copyright (C) 1992-2021 KiCad Developers, see AUTHORS.txt for contributors.
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or
|
* This program is free software; you can redistribute it and/or
|
||||||
* modify it under the terms of the GNU General Public License
|
* modify it under the terms of the GNU General Public License
|
||||||
|
@ -138,7 +138,7 @@ void BuildConvexHull( std::vector<wxPoint>& aResult, const SHAPE_POLY_SET& aPoly
|
||||||
|
|
||||||
|
|
||||||
void BuildConvexHull( std::vector<wxPoint>& aResult, const SHAPE_POLY_SET& aPolygons,
|
void BuildConvexHull( std::vector<wxPoint>& aResult, const SHAPE_POLY_SET& aPolygons,
|
||||||
wxPoint aPosition, double aRotation )
|
const wxPoint& aPosition, double aRotation )
|
||||||
{
|
{
|
||||||
// Build the convex hull of the SHAPE_POLY_SET
|
// Build the convex hull of the SHAPE_POLY_SET
|
||||||
std::vector<wxPoint> buf;
|
std::vector<wxPoint> buf;
|
||||||
|
|
|
@ -58,8 +58,8 @@ bool IsPointOnSegment( const wxPoint& aSegStart, const wxPoint& aSegEnd,
|
||||||
|
|
||||||
|
|
||||||
// Returns true if the segment 1 intersected the segment 2.
|
// Returns true if the segment 1 intersected the segment 2.
|
||||||
bool SegmentIntersectsSegment( const wxPoint &a_p1_l1, const wxPoint &a_p2_l1,
|
bool SegmentIntersectsSegment( const wxPoint& a_p1_l1, const wxPoint& a_p2_l1,
|
||||||
const wxPoint &a_p1_l2, const wxPoint &a_p2_l2,
|
const wxPoint& a_p1_l2, const wxPoint& a_p2_l2,
|
||||||
wxPoint* aIntersectionPoint )
|
wxPoint* aIntersectionPoint )
|
||||||
{
|
{
|
||||||
|
|
||||||
|
@ -126,7 +126,8 @@ bool SegmentIntersectsSegment( const wxPoint &a_p1_l1, const wxPoint &a_p2_l1,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
bool TestSegmentHit( const wxPoint &aRefPoint, wxPoint aStart, wxPoint aEnd, int aDist )
|
bool TestSegmentHit( const wxPoint& aRefPoint, const wxPoint& aStart, const wxPoint& aEnd,
|
||||||
|
int aDist )
|
||||||
{
|
{
|
||||||
int xmin = aStart.x;
|
int xmin = aStart.x;
|
||||||
int xmax = aEnd.x;
|
int xmax = aEnd.x;
|
||||||
|
|
|
@ -189,7 +189,6 @@ bool AR_AUTOPLACER::fillMatrix()
|
||||||
|
|
||||||
for( int v = 0; v < outline.PointCount(); v++ )
|
for( int v = 0; v < outline.PointCount(); v++ )
|
||||||
{
|
{
|
||||||
|
|
||||||
int seg_startX = outline.CPoint( v ).x;
|
int seg_startX = outline.CPoint( v ).x;
|
||||||
int seg_startY = outline.CPoint( v ).y;
|
int seg_startY = outline.CPoint( v ).y;
|
||||||
int seg_endX = outline.CPoint( v + 1 ).x;
|
int seg_endX = outline.CPoint( v + 1 ).x;
|
||||||
|
@ -252,6 +251,7 @@ bool AR_AUTOPLACER::fillMatrix()
|
||||||
{
|
{
|
||||||
int seg_start_x = x_coordinates[ii] - coord_orgin.x;
|
int seg_start_x = x_coordinates[ii] - coord_orgin.x;
|
||||||
int seg_end_x = x_coordinates[ii + 1] - coord_orgin.x;
|
int seg_end_x = x_coordinates[ii + 1] - coord_orgin.x;
|
||||||
|
|
||||||
// Fill cells at y coord = idy,
|
// Fill cells at y coord = idy,
|
||||||
// and at x cood >= seg_start_x and <= seg_end_x
|
// and at x cood >= seg_start_x and <= seg_end_x
|
||||||
|
|
||||||
|
@ -263,7 +263,6 @@ bool AR_AUTOPLACER::fillMatrix()
|
||||||
if( idx * step >= seg_start_x )
|
if( idx * step >= seg_start_x )
|
||||||
m_matrix.SetCell( idy, idx, AR_SIDE_BOTTOM, CELL_IS_ZONE );
|
m_matrix.SetCell( idy, idx, AR_SIDE_BOTTOM, CELL_IS_ZONE );
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
} // End examine segments in one area
|
} // End examine segments in one area
|
||||||
|
|
||||||
|
@ -286,7 +285,7 @@ void AR_AUTOPLACER::rotateFootprint( FOOTPRINT* aFootprint, double angle, bool i
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void AR_AUTOPLACER::addFpBody( wxPoint aStart, wxPoint aEnd, LSET aLayerMask )
|
void AR_AUTOPLACER::addFpBody( const wxPoint& aStart, const wxPoint& aEnd, LSET aLayerMask )
|
||||||
{
|
{
|
||||||
// Add a polygonal shape (rectangle) to m_fpAreaFront and/or m_fpAreaBack
|
// Add a polygonal shape (rectangle) to m_fpAreaFront and/or m_fpAreaBack
|
||||||
if( aLayerMask[ F_Cu ] )
|
if( aLayerMask[ F_Cu ] )
|
||||||
|
@ -308,6 +307,7 @@ void AR_AUTOPLACER::addFpBody( wxPoint aStart, wxPoint aEnd, LSET aLayerMask )
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void AR_AUTOPLACER::addPad( PAD* aPad, int aClearance )
|
void AR_AUTOPLACER::addPad( PAD* aPad, int aClearance )
|
||||||
{
|
{
|
||||||
// Add a polygonal shape (rectangle) to m_fpAreaFront and/or m_fpAreaBack
|
// Add a polygonal shape (rectangle) to m_fpAreaFront and/or m_fpAreaBack
|
||||||
|
@ -1022,7 +1022,6 @@ end_of_tst:
|
||||||
if( error == AR_ABORT_PLACEMENT )
|
if( error == AR_ABORT_PLACEMENT )
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|
||||||
bestRotation += initialOrient;
|
bestRotation += initialOrient;
|
||||||
|
|
||||||
if( bestRotation != footprint->GetOrientation() )
|
if( bestRotation != footprint->GetOrientation() )
|
||||||
|
|
|
@ -3,9 +3,9 @@
|
||||||
*
|
*
|
||||||
* Copyright (C) 2012 Jean-Pierre Charras, jean-pierre.charras@ujf-grenoble.fr
|
* Copyright (C) 2012 Jean-Pierre Charras, jean-pierre.charras@ujf-grenoble.fr
|
||||||
* Copyright (C) 2012 SoftPLC Corporation, Dick Hollenbeck <dick@softplc.com>
|
* Copyright (C) 2012 SoftPLC Corporation, Dick Hollenbeck <dick@softplc.com>
|
||||||
* Copyright (C) 2011 Wayne Stambaugh <stambaughw@verizon.net>
|
* Copyright (C) 2011 Wayne Stambaugh <stambaughw@gmail.com>
|
||||||
*
|
*
|
||||||
* Copyright (C) 1992-2012 KiCad Developers, see change_log.txt for contributors.
|
* Copyright (C) 1992-2021 KiCad Developers, see AUTHORS.txt for contributors.
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or
|
* This program is free software; you can redistribute it and/or
|
||||||
* modify it under the terms of the GNU General Public License
|
* modify it under the terms of the GNU General Public License
|
||||||
|
@ -71,8 +71,7 @@ public:
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* a callback function to redraw on screen the view after changes,
|
* Callback to redraw on screen the view after changes, for instance after moving a footprint.
|
||||||
* for instance after moving a footprint
|
|
||||||
*/
|
*/
|
||||||
void SetRefreshCallback( std::function<int( FOOTPRINT* aFootprint )> aCallback )
|
void SetRefreshCallback( std::function<int( FOOTPRINT* aFootprint )> aCallback )
|
||||||
{
|
{
|
||||||
|
@ -89,8 +88,10 @@ private:
|
||||||
void rotateFootprint( FOOTPRINT* aFootprint, double angle, bool incremental );
|
void rotateFootprint( FOOTPRINT* aFootprint, double angle, bool incremental );
|
||||||
int genPlacementRoutingMatrix();
|
int genPlacementRoutingMatrix();
|
||||||
|
|
||||||
/** fills m_matrix cells from m_boardShape.
|
/**
|
||||||
* cells inside m_boardShape are set to CELL_IS_ZONE
|
* Fill m_matrix cells from m_boardShape.
|
||||||
|
*
|
||||||
|
* Cells inside m_boardShape are set to CELL_IS_ZONE.
|
||||||
*/
|
*/
|
||||||
bool fillMatrix();
|
bool fillMatrix();
|
||||||
void genModuleOnRoutingMatrix( FOOTPRINT* aFootprint );
|
void genModuleOnRoutingMatrix( FOOTPRINT* aFootprint );
|
||||||
|
@ -113,7 +114,7 @@ private:
|
||||||
const PAD* nearestPad( FOOTPRINT* aRefFP, PAD* aRefPad, const wxPoint& aOffset );
|
const PAD* nearestPad( FOOTPRINT* aRefFP, PAD* aRefPad, const wxPoint& aOffset );
|
||||||
|
|
||||||
// Add a polygonal shape (rectangle) to m_fpAreaFront and/or m_fpAreaBack
|
// Add a polygonal shape (rectangle) to m_fpAreaFront and/or m_fpAreaBack
|
||||||
void addFpBody( wxPoint aStart, wxPoint aEnd, LSET aLayerMask );
|
void addFpBody( const wxPoint& aStart, const wxPoint& aEnd, LSET aLayerMask );
|
||||||
|
|
||||||
// Add a polygonal shape (rectangle) to m_fpAreaFront and/or m_fpAreaBack
|
// Add a polygonal shape (rectangle) to m_fpAreaFront and/or m_fpAreaBack
|
||||||
void addPad( PAD* aPad, int aClearance );
|
void addPad( PAD* aPad, int aClearance );
|
||||||
|
@ -126,8 +127,10 @@ private:
|
||||||
SHAPE_POLY_SET m_topFreeArea; // The polygonal description of the top side free areas;
|
SHAPE_POLY_SET m_topFreeArea; // The polygonal description of the top side free areas;
|
||||||
SHAPE_POLY_SET m_bottomFreeArea; // The polygonal description of the bottom side free areas;
|
SHAPE_POLY_SET m_bottomFreeArea; // The polygonal description of the bottom side free areas;
|
||||||
SHAPE_POLY_SET m_boardShape; // The polygonal description of the board;
|
SHAPE_POLY_SET m_boardShape; // The polygonal description of the board;
|
||||||
SHAPE_POLY_SET m_fpAreaTop; // The polygonal description of the footprint to place, top side;
|
SHAPE_POLY_SET m_fpAreaTop; // The polygonal description of the footprint to place,
|
||||||
SHAPE_POLY_SET m_fpAreaBottom; // The polygonal description of the footprint to place, bottom side;
|
// top side;
|
||||||
|
SHAPE_POLY_SET m_fpAreaBottom; // The polygonal description of the footprint to place,
|
||||||
|
// bottom side;
|
||||||
|
|
||||||
BOARD* m_board;
|
BOARD* m_board;
|
||||||
|
|
||||||
|
|
|
@ -145,7 +145,7 @@ static const std::vector<NUMBERING_LIST_DATA> numberingTypeData {
|
||||||
|
|
||||||
DIALOG_CREATE_ARRAY::DIALOG_CREATE_ARRAY( PCB_BASE_FRAME* aParent,
|
DIALOG_CREATE_ARRAY::DIALOG_CREATE_ARRAY( PCB_BASE_FRAME* aParent,
|
||||||
std::unique_ptr<ARRAY_OPTIONS>& aSettings,
|
std::unique_ptr<ARRAY_OPTIONS>& aSettings,
|
||||||
bool enableNumbering, wxPoint aOrigPos ) :
|
bool enableNumbering, const wxPoint& aOrigPos ) :
|
||||||
DIALOG_CREATE_ARRAY_BASE( aParent ),
|
DIALOG_CREATE_ARRAY_BASE( aParent ),
|
||||||
m_settings( aSettings ),
|
m_settings( aSettings ),
|
||||||
m_originalItemPosition( aOrigPos ),
|
m_originalItemPosition( aOrigPos ),
|
||||||
|
@ -503,4 +503,4 @@ void DIALOG_CREATE_ARRAY::calculateCircularArrayProperties()
|
||||||
centre -= m_originalItemPosition;
|
centre -= m_originalItemPosition;
|
||||||
|
|
||||||
m_circRadius.SetValue( int( centre.EuclideanNorm() ) );
|
m_circRadius.SetValue( int( centre.EuclideanNorm() ) );
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
* This program source code file is part of KiCad, a free EDA CAD application.
|
* This program source code file is part of KiCad, a free EDA CAD application.
|
||||||
*
|
*
|
||||||
* Copyright (C) 2015 John Beard, john.j.beard@gmail.com
|
* Copyright (C) 2015 John Beard, john.j.beard@gmail.com
|
||||||
* Copyright (C) 1992-2015 KiCad Developers, see AUTHORS.txt for contributors.
|
* Copyright (C) 1992-2021 KiCad Developers, see AUTHORS.txt for contributors.
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or
|
* This program is free software; you can redistribute it and/or
|
||||||
* modify it under the terms of the GNU General Public License
|
* modify it under the terms of the GNU General Public License
|
||||||
|
@ -49,7 +49,7 @@ public:
|
||||||
* @param aOrigPos original item position (used for computing the circular array radius)
|
* @param aOrigPos original item position (used for computing the circular array radius)
|
||||||
*/
|
*/
|
||||||
DIALOG_CREATE_ARRAY( PCB_BASE_FRAME* aParent, std::unique_ptr<ARRAY_OPTIONS>& aOptions,
|
DIALOG_CREATE_ARRAY( PCB_BASE_FRAME* aParent, std::unique_ptr<ARRAY_OPTIONS>& aOptions,
|
||||||
bool enableNumbering, wxPoint aOrigPos );
|
bool enableNumbering, const wxPoint& aOrigPos );
|
||||||
|
|
||||||
private:
|
private:
|
||||||
// Event callbacks
|
// Event callbacks
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
*
|
*
|
||||||
* Copyright (C) 2004-2019 Jean-Pierre Charras, jp.charras at wanadoo.fr
|
* Copyright (C) 2004-2019 Jean-Pierre Charras, jp.charras at wanadoo.fr
|
||||||
* Copyright (C) 2014 Dick Hollenbeck, dick@softplc.com
|
* Copyright (C) 2014 Dick Hollenbeck, dick@softplc.com
|
||||||
* Copyright (C) 2017-2020 KiCad Developers, see change_log.txt for contributors.
|
* Copyright (C) 2017-2021 KiCad Developers, see AUTHORS.txt for contributors.
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or
|
* This program is free software; you can redistribute it and/or
|
||||||
* modify it under the terms of the GNU General Public License
|
* modify it under the terms of the GNU General Public License
|
||||||
|
@ -189,7 +189,6 @@ void DRC_ENGINE::loadImplicitRules()
|
||||||
silkClearanceConstraint.Value().SetMin( bds.m_SilkClearance );
|
silkClearanceConstraint.Value().SetMin( bds.m_SilkClearance );
|
||||||
rule->AddConstraint( silkClearanceConstraint );
|
rule->AddConstraint( silkClearanceConstraint );
|
||||||
|
|
||||||
|
|
||||||
// 2) micro-via specific defaults (new DRC doesn't treat microvias in any special way)
|
// 2) micro-via specific defaults (new DRC doesn't treat microvias in any special way)
|
||||||
|
|
||||||
DRC_RULE* uViaRule = createImplicitRule( _( "board setup micro-via constraints" ) );
|
DRC_RULE* uViaRule = createImplicitRule( _( "board setup micro-via constraints" ) );
|
||||||
|
@ -461,6 +460,7 @@ void DRC_ENGINE::loadImplicitRules()
|
||||||
(int) netclassClearanceRules.size() ) );
|
(int) netclassClearanceRules.size() ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static wxString formatConstraint( const DRC_CONSTRAINT& constraint )
|
static wxString formatConstraint( const DRC_CONSTRAINT& constraint )
|
||||||
{
|
{
|
||||||
struct FORMATTER
|
struct FORMATTER
|
||||||
|
@ -523,9 +523,6 @@ static wxString formatConstraint( const DRC_CONSTRAINT& constraint )
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @throws PARSE_ERROR
|
|
||||||
*/
|
|
||||||
void DRC_ENGINE::loadRules( const wxFileName& aPath )
|
void DRC_ENGINE::loadRules( const wxFileName& aPath )
|
||||||
{
|
{
|
||||||
if( aPath.FileExists() )
|
if( aPath.FileExists() )
|
||||||
|
@ -622,9 +619,6 @@ void DRC_ENGINE::compileRules()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @throws PARSE_ERROR
|
|
||||||
*/
|
|
||||||
void DRC_ENGINE::InitEngine( const wxFileName& aRulePath )
|
void DRC_ENGINE::InitEngine( const wxFileName& aRulePath )
|
||||||
{
|
{
|
||||||
m_testProviders = DRC_TEST_PROVIDER_REGISTRY::Instance().GetTestProviders();
|
m_testProviders = DRC_TEST_PROVIDER_REGISTRY::Instance().GetTestProviders();
|
||||||
|
@ -1107,7 +1101,7 @@ bool DRC_ENGINE::IsErrorLimitExceeded( int error_code )
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void DRC_ENGINE::ReportViolation( const std::shared_ptr<DRC_ITEM>& aItem, wxPoint aPos )
|
void DRC_ENGINE::ReportViolation( const std::shared_ptr<DRC_ITEM>& aItem, const wxPoint& aPos )
|
||||||
{
|
{
|
||||||
m_errorLimits[ aItem->GetErrorCode() ] -= 1;
|
m_errorLimits[ aItem->GetErrorCode() ] -= 1;
|
||||||
|
|
||||||
|
@ -1136,6 +1130,7 @@ void DRC_ENGINE::ReportViolation( const std::shared_ptr<DRC_ITEM>& aItem, wxPoin
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void DRC_ENGINE::ReportAux ( const wxString& aStr )
|
void DRC_ENGINE::ReportAux ( const wxString& aStr )
|
||||||
{
|
{
|
||||||
if( !m_reporter )
|
if( !m_reporter )
|
||||||
|
@ -1323,8 +1318,10 @@ bool DRC_ENGINE::IsNetTie( BOARD_ITEM* aItem )
|
||||||
DRC_TEST_PROVIDER* DRC_ENGINE::GetTestProvider( const wxString& name ) const
|
DRC_TEST_PROVIDER* DRC_ENGINE::GetTestProvider( const wxString& name ) const
|
||||||
{
|
{
|
||||||
for( auto prov : m_testProviders )
|
for( auto prov : m_testProviders )
|
||||||
|
{
|
||||||
if( name == prov->GetName() )
|
if( name == prov->GetName() )
|
||||||
return prov;
|
return prov;
|
||||||
|
}
|
||||||
|
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
/*
|
/*
|
||||||
* This program source code file is part of KiCad, a free EDA CAD application.
|
* This program source code file is part of KiCad, a free EDA CAD application.
|
||||||
*
|
*
|
||||||
* Copyright (C) 2019-2020 KiCad Developers, see AUTHORS.txt for contributors.
|
* Copyright (C) 2019-2021 KiCad Developers, see AUTHORS.txt for contributors.
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or
|
* This program is free software; you can redistribute it and/or
|
||||||
* modify it under the terms of the GNU General Public License
|
* modify it under the terms of the GNU General Public License
|
||||||
|
@ -64,7 +64,8 @@ class DRC_CONSTRAINT;
|
||||||
|
|
||||||
|
|
||||||
typedef
|
typedef
|
||||||
std::function<void( const std::shared_ptr<DRC_ITEM>& aItem, wxPoint aPos )> DRC_VIOLATION_HANDLER;
|
std::function<void( const std::shared_ptr<DRC_ITEM>& aItem,
|
||||||
|
const wxPoint& aPos )> DRC_VIOLATION_HANDLER;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -95,9 +96,12 @@ public:
|
||||||
void SetDrawingSheet( DS_PROXY_VIEW_ITEM* aDrawingSheet ) { m_drawingSheet = aDrawingSheet; }
|
void SetDrawingSheet( DS_PROXY_VIEW_ITEM* aDrawingSheet ) { m_drawingSheet = aDrawingSheet; }
|
||||||
DS_PROXY_VIEW_ITEM* GetDrawingSheet() const { return m_drawingSheet; }
|
DS_PROXY_VIEW_ITEM* GetDrawingSheet() const { return m_drawingSheet; }
|
||||||
|
|
||||||
void SetDebugOverlay( std::shared_ptr<KIGFX::VIEW_OVERLAY> aOverlay ) { m_debugOverlay = aOverlay; }
|
void SetDebugOverlay( std::shared_ptr<KIGFX::VIEW_OVERLAY> aOverlay )
|
||||||
std::shared_ptr<KIGFX::VIEW_OVERLAY> GetDebugOverlay() const { return m_debugOverlay; }
|
{
|
||||||
|
m_debugOverlay = aOverlay;
|
||||||
|
}
|
||||||
|
|
||||||
|
std::shared_ptr<KIGFX::VIEW_OVERLAY> GetDebugOverlay() const { return m_debugOverlay; }
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Set an optional DRC violation handler (receives DRC_ITEMs and positions).
|
* Set an optional DRC violation handler (receives DRC_ITEMs and positions).
|
||||||
|
@ -128,14 +132,14 @@ public:
|
||||||
void SetLogReporter( REPORTER* aReporter ) { m_reporter = aReporter; }
|
void SetLogReporter( REPORTER* aReporter ) { m_reporter = aReporter; }
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Initializes the DRC engine.
|
* Initialize the DRC engine.
|
||||||
*
|
*
|
||||||
* @throws PARSE_ERROR if the rules file contains errors
|
* @throws PARSE_ERROR if the rules file contains errors
|
||||||
*/
|
*/
|
||||||
void InitEngine( const wxFileName& aRulePath );
|
void InitEngine( const wxFileName& aRulePath );
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Runs the DRC tests.
|
* Run the DRC tests.
|
||||||
*/
|
*/
|
||||||
void RunTests( EDA_UNITS aUnits, bool aReportAllTrackErrors, bool aTestFootprints );
|
void RunTests( EDA_UNITS aUnits, bool aReportAllTrackErrors, bool aTestFootprints );
|
||||||
|
|
||||||
|
@ -154,7 +158,7 @@ public:
|
||||||
|
|
||||||
bool RulesValid() { return m_rulesValid; }
|
bool RulesValid() { return m_rulesValid; }
|
||||||
|
|
||||||
void ReportViolation( const std::shared_ptr<DRC_ITEM>& aItem, wxPoint aPos );
|
void ReportViolation( const std::shared_ptr<DRC_ITEM>& aItem, const wxPoint& aPos );
|
||||||
bool ReportProgress( double aProgress );
|
bool ReportProgress( double aProgress );
|
||||||
bool ReportPhase( const wxString& aMessage );
|
bool ReportPhase( const wxString& aMessage );
|
||||||
void ReportAux( const wxString& aStr );
|
void ReportAux( const wxString& aStr );
|
||||||
|
@ -168,7 +172,7 @@ public:
|
||||||
static bool IsNetADiffPair( BOARD* aBoard, NETINFO_ITEM* aNet, int& aNetP, int& aNetN );
|
static bool IsNetADiffPair( BOARD* aBoard, NETINFO_ITEM* aNet, int& aNetP, int& aNetN );
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Checks if the given net is a diff pair, returning its polarity and complement if so
|
* Check if the given net is a diff pair, returning its polarity and complement if so
|
||||||
* @param aNetName is the input net name, like DIFF_P
|
* @param aNetName is the input net name, like DIFF_P
|
||||||
* @param aComplementNet will be filled with the complement, like DIFF_N
|
* @param aComplementNet will be filled with the complement, like DIFF_N
|
||||||
* @param aBaseDpName will be filled with the base name, like DIFF
|
* @param aBaseDpName will be filled with the base name, like DIFF
|
||||||
|
@ -188,7 +192,7 @@ private:
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Loads and parses a rule set from an sexpr text file.
|
* Load and parse a rule set from an sexpr text file.
|
||||||
*
|
*
|
||||||
* @throws PARSE_ERROR
|
* @throws PARSE_ERROR
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
/*
|
/*
|
||||||
* This program source code file is part of KiCad, a free EDA CAD application.
|
* This program source code file is part of KiCad, a free EDA CAD application.
|
||||||
*
|
*
|
||||||
* Copyright (C) 2020 KiCad Developers, see change_log.txt for contributors.
|
* Copyright (C) 2020-2021 KiCad Developers, see AUTHORS.txt for contributors.
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or
|
* This program is free software; you can redistribute it and/or
|
||||||
* modify it under the terms of the GNU General Public License
|
* modify it under the terms of the GNU General Public License
|
||||||
|
@ -53,7 +53,8 @@ const wxString DRC_TEST_PROVIDER::GetName() const { return "<no name test>"; }
|
||||||
const wxString DRC_TEST_PROVIDER::GetDescription() const { return ""; }
|
const wxString DRC_TEST_PROVIDER::GetDescription() const { return ""; }
|
||||||
|
|
||||||
|
|
||||||
void DRC_TEST_PROVIDER::reportViolation( std::shared_ptr<DRC_ITEM>& item, wxPoint aMarkerPos )
|
void DRC_TEST_PROVIDER::reportViolation( std::shared_ptr<DRC_ITEM>& item,
|
||||||
|
const wxPoint& aMarkerPos )
|
||||||
{
|
{
|
||||||
if( item->GetViolatingRule() )
|
if( item->GetViolatingRule() )
|
||||||
accountCheck( item->GetViolatingRule() );
|
accountCheck( item->GetViolatingRule() );
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
/*
|
/*
|
||||||
* This program source code file is part of KiCad, a free EDA CAD application.
|
* This program source code file is part of KiCad, a free EDA CAD application.
|
||||||
*
|
*
|
||||||
* Copyright (C) 2018 KiCad Developers, see change_log.txt for contributors.
|
* Copyright (C) 2018-2021 KiCad Developers, see AUTHORS.txt for contributors.
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or
|
* This program is free software; you can redistribute it and/or
|
||||||
* modify it under the terms of the GNU General Public License
|
* modify it under the terms of the GNU General Public License
|
||||||
|
@ -64,10 +64,10 @@ public:
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* DRC_TEST_PROVIDER
|
* Represent a DRC "provider" which runs some DRC functions over a #BOARD and spits out
|
||||||
* is a base class that represents a DRC "provider" which runs some DRC functions over a
|
* #DRC_ITEMs and positions as needed.
|
||||||
* #BOARD and spits out #DRC_ITEMs and positions as needed.
|
|
||||||
*/
|
*/
|
||||||
class DRC_TEST_PROVIDER
|
class DRC_TEST_PROVIDER
|
||||||
{
|
{
|
||||||
|
@ -82,7 +82,7 @@ public:
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Runs this provider against the given PCB with configured options (if any).
|
* Run this provider against the given PCB with configured options (if any).
|
||||||
*/
|
*/
|
||||||
virtual bool Run() = 0;
|
virtual bool Run() = 0;
|
||||||
|
|
||||||
|
@ -113,7 +113,7 @@ protected:
|
||||||
const std::function<bool(BOARD_ITEM*)>& aFunc );
|
const std::function<bool(BOARD_ITEM*)>& aFunc );
|
||||||
|
|
||||||
virtual void reportAux( wxString fmt, ... );
|
virtual void reportAux( wxString fmt, ... );
|
||||||
virtual void reportViolation( std::shared_ptr<DRC_ITEM>& item, wxPoint aMarkerPos );
|
virtual void reportViolation( std::shared_ptr<DRC_ITEM>& item, const wxPoint& aMarkerPos );
|
||||||
virtual bool reportProgress( int aCount, int aSize, int aDelta );
|
virtual bool reportProgress( int aCount, int aSize, int aDelta );
|
||||||
virtual bool reportPhase( const wxString& aStageName );
|
virtual bool reportPhase( const wxString& aStageName );
|
||||||
|
|
||||||
|
|
|
@ -86,7 +86,8 @@ public:
|
||||||
* @param aMerge_PTH_NPTH set to true to create only one file containing PTH and NPTH
|
* @param aMerge_PTH_NPTH set to true to create only one file containing PTH and NPTH
|
||||||
* false to create 2 separate files : one for PTH and one for NPTH.
|
* false to create 2 separate files : one for PTH and one for NPTH.
|
||||||
*/
|
*/
|
||||||
void SetOptions( bool aMirror, bool aMinimalHeader, wxPoint aOffset, bool aMerge_PTH_NPTH )
|
void SetOptions( bool aMirror, bool aMinimalHeader, const wxPoint& aOffset,
|
||||||
|
bool aMerge_PTH_NPTH )
|
||||||
{
|
{
|
||||||
m_mirror = aMirror;
|
m_mirror = aMirror;
|
||||||
m_offset = aOffset;
|
m_offset = aOffset;
|
||||||
|
|
|
@ -35,7 +35,7 @@
|
||||||
class BOARD;
|
class BOARD;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* GERBER_WRITER is a class mainly used to create Gerber drill files
|
* Used to create Gerber drill files.
|
||||||
*/
|
*/
|
||||||
class GERBER_WRITER: public GENDRILL_WRITER_BASE
|
class GERBER_WRITER: public GENDRILL_WRITER_BASE
|
||||||
{
|
{
|
||||||
|
@ -60,7 +60,7 @@ public:
|
||||||
*
|
*
|
||||||
* @param aOffset is the drill coordinates offset.
|
* @param aOffset is the drill coordinates offset.
|
||||||
*/
|
*/
|
||||||
void SetOptions( wxPoint aOffset )
|
void SetOptions( const wxPoint& aOffset )
|
||||||
{
|
{
|
||||||
m_offset = aOffset;
|
m_offset = aOffset;
|
||||||
m_merge_PTH_NPTH = false;
|
m_merge_PTH_NPTH = false;
|
||||||
|
|
|
@ -34,7 +34,7 @@ class FOOTPRINT;
|
||||||
class PAD;
|
class PAD;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* PLACEFILE_GERBER_WRITER is a class mainly used to create Gerber drill files.
|
* Used to create Gerber drill files.
|
||||||
*/
|
*/
|
||||||
class PLACEFILE_GERBER_WRITER
|
class PLACEFILE_GERBER_WRITER
|
||||||
{
|
{
|
||||||
|
@ -53,7 +53,7 @@ public:
|
||||||
*
|
*
|
||||||
* @param aOffset is the drill coordinates offset.
|
* @param aOffset is the drill coordinates offset.
|
||||||
*/
|
*/
|
||||||
void SetOptions( wxPoint aOffset )
|
void SetOptions( const wxPoint& aOffset )
|
||||||
{
|
{
|
||||||
m_offset = aOffset;
|
m_offset = aOffset;
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,6 +2,7 @@
|
||||||
* This program source code file is part of KiCad, a free EDA CAD application.
|
* This program source code file is part of KiCad, a free EDA CAD application.
|
||||||
*
|
*
|
||||||
* Copyright (C) 2020 Thomas Pointhuber <thomas.pointhuber@gmx.at>
|
* Copyright (C) 2020 Thomas Pointhuber <thomas.pointhuber@gmx.at>
|
||||||
|
* Copyright (C) 2021 KiCad Developers, see AUTHORS.txt for contributors.
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or
|
* This program is free software; you can redistribute it and/or
|
||||||
* modify it under the terms of the GNU General Public License
|
* modify it under the terms of the GNU General Public License
|
||||||
|
@ -211,7 +212,7 @@ struct ALTIUM_VERTICE
|
||||||
const wxPoint position;
|
const wxPoint position;
|
||||||
const wxPoint center;
|
const wxPoint center;
|
||||||
|
|
||||||
explicit ALTIUM_VERTICE( const wxPoint aPosition )
|
explicit ALTIUM_VERTICE( const wxPoint& aPosition )
|
||||||
: isRound( false ),
|
: isRound( false ),
|
||||||
radius( 0 ),
|
radius( 0 ),
|
||||||
startangle( 0. ),
|
startangle( 0. ),
|
||||||
|
|
|
@ -284,7 +284,6 @@ void CADSTAR_PCB_ARCHIVE_LOADER::loadBoardStackup()
|
||||||
wxASSERT( totalCopperLayers == cadstarBoardStackup.size() );
|
wxASSERT( totalCopperLayers == cadstarBoardStackup.size() );
|
||||||
wxASSERT( cadstarBoardStackup.back().ConstructionLayers.size() == 0 );
|
wxASSERT( cadstarBoardStackup.back().ConstructionLayers.size() == 0 );
|
||||||
|
|
||||||
|
|
||||||
// Create a new stackup from default stackup list
|
// Create a new stackup from default stackup list
|
||||||
BOARD_STACKUP& stackup = m_board->GetDesignSettings().GetStackupDescriptor();
|
BOARD_STACKUP& stackup = m_board->GetDesignSettings().GetStackupDescriptor();
|
||||||
stackup.RemoveAll();
|
stackup.RemoveAll();
|
||||||
|
@ -695,7 +694,8 @@ void CADSTAR_PCB_ARCHIVE_LOADER::loadLibraryFigures( const SYMDEF_PCB& aComponen
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void CADSTAR_PCB_ARCHIVE_LOADER::loadLibraryCoppers( const SYMDEF_PCB& aComponent, FOOTPRINT* aFootprint )
|
void CADSTAR_PCB_ARCHIVE_LOADER::loadLibraryCoppers( const SYMDEF_PCB& aComponent,
|
||||||
|
FOOTPRINT* aFootprint )
|
||||||
{
|
{
|
||||||
int totalCopperPads = 0;
|
int totalCopperPads = 0;
|
||||||
|
|
||||||
|
@ -730,7 +730,6 @@ void CADSTAR_PCB_ARCHIVE_LOADER::loadLibraryCoppers( const SYMDEF_PCB& aComponen
|
||||||
if( !found )
|
if( !found )
|
||||||
anchorPad = aComponent.ComponentPads.at( compCopper.AssociatedPadIDs.front() );
|
anchorPad = aComponent.ComponentPads.at( compCopper.AssociatedPadIDs.front() );
|
||||||
|
|
||||||
|
|
||||||
PAD* pad = new PAD( aFootprint );
|
PAD* pad = new PAD( aFootprint );
|
||||||
pad->SetAttribute( PAD_ATTRIB::SMD );
|
pad->SetAttribute( PAD_ATTRIB::SMD );
|
||||||
pad->SetLayerSet( LSET( 1, copperLayer ) );
|
pad->SetLayerSet( LSET( 1, copperLayer ) );
|
||||||
|
@ -1066,7 +1065,6 @@ PAD* CADSTAR_PCB_ARCHIVE_LOADER::getKiCadPad( const COMPONENT_PAD& aCadstarPad,
|
||||||
if( csPadcode.ReliefWidth != UNDEFINED_VALUE )
|
if( csPadcode.ReliefWidth != UNDEFINED_VALUE )
|
||||||
pad->SetThermalSpokeWidth( getKiCadLength( csPadcode.ReliefWidth ) );
|
pad->SetThermalSpokeWidth( getKiCadLength( csPadcode.ReliefWidth ) );
|
||||||
|
|
||||||
|
|
||||||
if( csPadcode.DrillDiameter != UNDEFINED_VALUE )
|
if( csPadcode.DrillDiameter != UNDEFINED_VALUE )
|
||||||
{
|
{
|
||||||
if( csPadcode.SlotLength != UNDEFINED_VALUE )
|
if( csPadcode.SlotLength != UNDEFINED_VALUE )
|
||||||
|
@ -1091,7 +1089,6 @@ PAD* CADSTAR_PCB_ARCHIVE_LOADER::getKiCadPad( const COMPONENT_PAD& aCadstarPad,
|
||||||
pad->SetDrillSize( { 0, 0 } );
|
pad->SetDrillSize( { 0, 0 } );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
if( csPadcode.SlotOrientation != 0 )
|
if( csPadcode.SlotOrientation != 0 )
|
||||||
{
|
{
|
||||||
LSET lset = pad->GetLayerSet();
|
LSET lset = pad->GetLayerSet();
|
||||||
|
@ -1114,8 +1111,8 @@ PAD* CADSTAR_PCB_ARCHIVE_LOADER::getKiCadPad( const COMPONENT_PAD& aCadstarPad,
|
||||||
padShape->SetPolyShape( padOutline );
|
padShape->SetPolyShape( padOutline );
|
||||||
padShape->SetWidth( 0 );
|
padShape->SetWidth( 0 );
|
||||||
padShape->Move( padOffset - drillOffset );
|
padShape->Move( padOffset - drillOffset );
|
||||||
padShape->Rotate( wxPoint( 0, 0 ), 1800.0 - getAngleTenthDegree( csPadcode.SlotOrientation ) );
|
padShape->Rotate( wxPoint( 0, 0 ),
|
||||||
|
1800.0 - getAngleTenthDegree( csPadcode.SlotOrientation ) );
|
||||||
|
|
||||||
SHAPE_POLY_SET editedPadOutline = padShape->GetPolyShape();
|
SHAPE_POLY_SET editedPadOutline = padShape->GetPolyShape();
|
||||||
|
|
||||||
|
@ -1141,7 +1138,6 @@ PAD* CADSTAR_PCB_ARCHIVE_LOADER::getKiCadPad( const COMPONENT_PAD& aCadstarPad,
|
||||||
"pad shape. The hole has been moved to the center of the pad." ),
|
"pad shape. The hole has been moved to the center of the pad." ),
|
||||||
csPadcode.Name );
|
csPadcode.Name );
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -1262,8 +1258,8 @@ void CADSTAR_PCB_ARCHIVE_LOADER::loadFigures()
|
||||||
{
|
{
|
||||||
FIGURE& fig = figPair.second;
|
FIGURE& fig = figPair.second;
|
||||||
drawCadstarShape( fig.Shape, getKiCadLayer( fig.LayerID ),
|
drawCadstarShape( fig.Shape, getKiCadLayer( fig.LayerID ),
|
||||||
getLineThickness( fig.LineCodeID ), wxString::Format( "FIGURE %s", fig.ID ), m_board,
|
getLineThickness( fig.LineCodeID ), wxString::Format( "FIGURE %s", fig.ID ),
|
||||||
fig.GroupID );
|
m_board, fig.GroupID );
|
||||||
|
|
||||||
//TODO process "swaprule" (doesn't seem to apply to Layout Figures?)
|
//TODO process "swaprule" (doesn't seem to apply to Layout Figures?)
|
||||||
//TODO process re-use block when KiCad Supports it
|
//TODO process re-use block when KiCad Supports it
|
||||||
|
@ -1993,7 +1989,6 @@ void CADSTAR_PCB_ARCHIVE_LOADER::loadCoppers()
|
||||||
rawPolys.Inflate( copperWidth / 2, 32 );
|
rawPolys.Inflate( copperWidth / 2, 32 );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
if( pouredZone->HasFilledPolysForLayer( getKiCadLayer( csCopper.LayerID ) ) )
|
if( pouredZone->HasFilledPolysForLayer( getKiCadLayer( csCopper.LayerID ) ) )
|
||||||
{
|
{
|
||||||
rawPolys.BooleanAdd( pouredZone->RawPolysList( getKiCadLayer( csCopper.LayerID )),
|
rawPolys.BooleanAdd( pouredZone->RawPolysList( getKiCadLayer( csCopper.LayerID )),
|
||||||
|
@ -2129,7 +2124,8 @@ void CADSTAR_PCB_ARCHIVE_LOADER::loadNets()
|
||||||
else if( ( pin.PadID - (long) 1 ) > footprint->Pads().size() )
|
else if( ( pin.PadID - (long) 1 ) > footprint->Pads().size() )
|
||||||
{
|
{
|
||||||
wxLogWarning( wxString::Format( _( "The net '%s' references non-existent pad index"
|
wxLogWarning( wxString::Format( _( "The net '%s' references non-existent pad index"
|
||||||
" '%d' in component '%s'. This has been ignored." ),
|
" '%d' in component '%s'. This has been "
|
||||||
|
"ignored." ),
|
||||||
netnameForErrorReporting,
|
netnameForErrorReporting,
|
||||||
pin.PadID,
|
pin.PadID,
|
||||||
footprint->GetReference() ) );
|
footprint->GetReference() ) );
|
||||||
|
@ -2592,11 +2588,11 @@ void CADSTAR_PCB_ARCHIVE_LOADER::drawCadstarShape( const SHAPE& aCadstarShape,
|
||||||
case SHAPE_TYPE::OUTLINE:
|
case SHAPE_TYPE::OUTLINE:
|
||||||
///TODO update this when Polygons in KiCad can be defined with no fill
|
///TODO update this when Polygons in KiCad can be defined with no fill
|
||||||
drawCadstarVerticesAsShapes( aCadstarShape.Vertices, aKiCadLayer, aLineThickness,
|
drawCadstarVerticesAsShapes( aCadstarShape.Vertices, aKiCadLayer, aLineThickness,
|
||||||
aContainer, aCadstarGroupID, aMoveVector, aRotationAngle, aScalingFactor,
|
aContainer, aCadstarGroupID, aMoveVector, aRotationAngle,
|
||||||
aTransformCentre, aMirrorInvert );
|
aScalingFactor, aTransformCentre, aMirrorInvert );
|
||||||
drawCadstarCutoutsAsShapes( aCadstarShape.Cutouts, aKiCadLayer, aLineThickness,
|
drawCadstarCutoutsAsShapes( aCadstarShape.Cutouts, aKiCadLayer, aLineThickness,
|
||||||
aContainer, aCadstarGroupID, aMoveVector, aRotationAngle, aScalingFactor,
|
aContainer, aCadstarGroupID, aMoveVector, aRotationAngle,
|
||||||
aTransformCentre, aMirrorInvert );
|
aScalingFactor, aTransformCentre, aMirrorInvert );
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case SHAPE_TYPE::HATCHED:
|
case SHAPE_TYPE::HATCHED:
|
||||||
|
@ -2892,7 +2888,8 @@ SHAPE_POLY_SET CADSTAR_PCB_ARCHIVE_LOADER::getPolySetFromCadstarShape( const SHA
|
||||||
}
|
}
|
||||||
|
|
||||||
if( aLineThickness > 0 )
|
if( aLineThickness > 0 )
|
||||||
polySet.Inflate( aLineThickness / 2, 32, SHAPE_POLY_SET::CORNER_STRATEGY::ROUND_ALL_CORNERS );
|
polySet.Inflate( aLineThickness / 2, 32,
|
||||||
|
SHAPE_POLY_SET::CORNER_STRATEGY::ROUND_ALL_CORNERS );
|
||||||
|
|
||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
for( int i = 0; i < polySet.OutlineCount(); ++i )
|
for( int i = 0; i < polySet.OutlineCount(); ++i )
|
||||||
|
@ -3004,7 +3001,8 @@ std::vector<PCB_TRACK*> CADSTAR_PCB_ARCHIVE_LOADER::makeTracksFromShapes(
|
||||||
if( shape->GetClass() == wxT( "MGRAPHIC" ) )
|
if( shape->GetClass() == wxT( "MGRAPHIC" ) )
|
||||||
{
|
{
|
||||||
FP_SHAPE* fp_shape = (FP_SHAPE*) shape;
|
FP_SHAPE* fp_shape = (FP_SHAPE*) shape;
|
||||||
SHAPE_ARC arc( fp_shape->GetStart0(), fp_shape->GetEnd0(), fp_shape->GetAngle() / 10.0 );
|
SHAPE_ARC arc( fp_shape->GetStart0(), fp_shape->GetEnd0(),
|
||||||
|
fp_shape->GetAngle() / 10.0 );
|
||||||
track = new PCB_ARC( aParentContainer, &arc );
|
track = new PCB_ARC( aParentContainer, &arc );
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -3689,7 +3687,8 @@ void CADSTAR_PCB_ARCHIVE_LOADER::calculateZonePriorities()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
FOOTPRINT* CADSTAR_PCB_ARCHIVE_LOADER::getFootprintFromCadstarID( const COMPONENT_ID& aCadstarComponentID )
|
FOOTPRINT* CADSTAR_PCB_ARCHIVE_LOADER::getFootprintFromCadstarID(
|
||||||
|
const COMPONENT_ID& aCadstarComponentID )
|
||||||
{
|
{
|
||||||
if( m_componentMap.find( aCadstarComponentID ) == m_componentMap.end() )
|
if( m_componentMap.find( aCadstarComponentID ) == m_componentMap.end() )
|
||||||
return nullptr;
|
return nullptr;
|
||||||
|
@ -3698,7 +3697,7 @@ FOOTPRINT* CADSTAR_PCB_ARCHIVE_LOADER::getFootprintFromCadstarID( const COMPONEN
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
wxPoint CADSTAR_PCB_ARCHIVE_LOADER::getKiCadPoint( wxPoint aCadstarPoint )
|
wxPoint CADSTAR_PCB_ARCHIVE_LOADER::getKiCadPoint( const wxPoint& aCadstarPoint )
|
||||||
{
|
{
|
||||||
wxPoint retval;
|
wxPoint retval;
|
||||||
|
|
||||||
|
@ -3709,9 +3708,8 @@ wxPoint CADSTAR_PCB_ARCHIVE_LOADER::getKiCadPoint( wxPoint aCadstarPoint )
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
double CADSTAR_PCB_ARCHIVE_LOADER::getPolarAngle( wxPoint aPoint )
|
double CADSTAR_PCB_ARCHIVE_LOADER::getPolarAngle( const wxPoint& aPoint )
|
||||||
{
|
{
|
||||||
|
|
||||||
return NormalizeAnglePos( ArcTangente( aPoint.y, aPoint.x ) );
|
return NormalizeAnglePos( ArcTangente( aPoint.y, aPoint.x ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3798,7 +3796,8 @@ NETINFO_ITEM* CADSTAR_PCB_ARCHIVE_LOADER::getKiCadNet( const NET_ID& aCadstarNet
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
PCB_LAYER_ID CADSTAR_PCB_ARCHIVE_LOADER::getKiCadCopperLayerID( unsigned int aLayerNum, bool aDetectMaxLayer )
|
PCB_LAYER_ID CADSTAR_PCB_ARCHIVE_LOADER::getKiCadCopperLayerID( unsigned int aLayerNum,
|
||||||
|
bool aDetectMaxLayer )
|
||||||
{
|
{
|
||||||
if( aDetectMaxLayer && aLayerNum == Assignments.Technology.MaxPhysicalLayer )
|
if( aDetectMaxLayer && aLayerNum == Assignments.Technology.MaxPhysicalLayer )
|
||||||
return PCB_LAYER_ID::B_Cu;
|
return PCB_LAYER_ID::B_Cu;
|
||||||
|
@ -3842,6 +3841,7 @@ PCB_LAYER_ID CADSTAR_PCB_ARCHIVE_LOADER::getKiCadCopperLayerID( unsigned int aLa
|
||||||
return PCB_LAYER_ID::UNDEFINED_LAYER;
|
return PCB_LAYER_ID::UNDEFINED_LAYER;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
bool CADSTAR_PCB_ARCHIVE_LOADER::isLayerSet( const LAYER_ID& aCadstarLayerID )
|
bool CADSTAR_PCB_ARCHIVE_LOADER::isLayerSet( const LAYER_ID& aCadstarLayerID )
|
||||||
{
|
{
|
||||||
wxCHECK( Assignments.Layerdefs.Layers.find( aCadstarLayerID )
|
wxCHECK( Assignments.Layerdefs.Layers.find( aCadstarLayerID )
|
||||||
|
@ -3875,7 +3875,8 @@ PCB_LAYER_ID CADSTAR_PCB_ARCHIVE_LOADER::getKiCadLayer( const LAYER_ID& aCadstar
|
||||||
return PCB_LAYER_ID::UNDEFINED_LAYER;
|
return PCB_LAYER_ID::UNDEFINED_LAYER;
|
||||||
}
|
}
|
||||||
|
|
||||||
wxCHECK( m_layermap.find( aCadstarLayerID ) != m_layermap.end(), PCB_LAYER_ID::UNDEFINED_LAYER );
|
wxCHECK( m_layermap.find( aCadstarLayerID ) != m_layermap.end(),
|
||||||
|
PCB_LAYER_ID::UNDEFINED_LAYER );
|
||||||
|
|
||||||
return m_layermap.at( aCadstarLayerID );
|
return m_layermap.at( aCadstarLayerID );
|
||||||
}
|
}
|
||||||
|
|
|
@ -419,7 +419,7 @@ private:
|
||||||
* @param aCadstarPoint
|
* @param aCadstarPoint
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
wxPoint getKiCadPoint( wxPoint aCadstarPoint );
|
wxPoint getKiCadPoint( const wxPoint& aCadstarPoint );
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief
|
* @brief
|
||||||
|
@ -466,7 +466,7 @@ private:
|
||||||
* @param aPoint
|
* @param aPoint
|
||||||
* @return Angle in decidegrees of the polar representation of the point, scaled 0..360
|
* @return Angle in decidegrees of the polar representation of the point, scaled 0..360
|
||||||
*/
|
*/
|
||||||
double getPolarAngle( wxPoint aPoint );
|
double getPolarAngle( const wxPoint& aPoint );
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Searches m_netMap and returns the NETINFO_ITEM pointer if exists. Otherwise
|
* @brief Searches m_netMap and returns the NETINFO_ITEM pointer if exists. Otherwise
|
||||||
|
|
|
@ -209,7 +209,7 @@ static std::vector<BOARD_ITEM*> initTextTable( std::vector<std::vector<PCB_TEXT*
|
||||||
|
|
||||||
|
|
||||||
std::vector<BOARD_ITEM*> DRAWING_TOOL::DrawSpecificationStackup(
|
std::vector<BOARD_ITEM*> DRAWING_TOOL::DrawSpecificationStackup(
|
||||||
wxPoint aOrigin, PCB_LAYER_ID aLayer, bool aDrawNow, wxPoint* tableSize )
|
const wxPoint& aOrigin, PCB_LAYER_ID aLayer, bool aDrawNow, wxPoint* tableSize )
|
||||||
{
|
{
|
||||||
BOARD_COMMIT commit( m_frame );
|
BOARD_COMMIT commit( m_frame );
|
||||||
std::vector<std::vector<PCB_TEXT*>> texts;
|
std::vector<std::vector<PCB_TEXT*>> texts;
|
||||||
|
@ -296,6 +296,7 @@ std::vector<BOARD_ITEM*> DRAWING_TOOL::DrawSpecificationStackup(
|
||||||
// If the user did not open the dialog, then get the names from the board.
|
// If the user did not open the dialog, then get the names from the board.
|
||||||
// But dielectric layer names will be missing.
|
// But dielectric layer names will be missing.
|
||||||
t = static_cast<PCB_TEXT*>( dataStyle->Duplicate() );
|
t = static_cast<PCB_TEXT*>( dataStyle->Duplicate() );
|
||||||
|
|
||||||
if( layers.at( i )->GetLayerName().IsEmpty() )
|
if( layers.at( i )->GetLayerName().IsEmpty() )
|
||||||
{
|
{
|
||||||
t->SetText( m_frame->GetBoard()->GetLayerName( layers.at( i )->GetBrdLayerId() ) );
|
t->SetText( m_frame->GetBoard()->GetLayerName( layers.at( i )->GetBrdLayerId() ) );
|
||||||
|
@ -304,6 +305,7 @@ std::vector<BOARD_ITEM*> DRAWING_TOOL::DrawSpecificationStackup(
|
||||||
{
|
{
|
||||||
t->SetText( layers.at( i )->GetLayerName() );
|
t->SetText( layers.at( i )->GetLayerName() );
|
||||||
}
|
}
|
||||||
|
|
||||||
colLayer.push_back( t );
|
colLayer.push_back( t );
|
||||||
|
|
||||||
t = static_cast<PCB_TEXT*>( dataStyle->Duplicate() );
|
t = static_cast<PCB_TEXT*>( dataStyle->Duplicate() );
|
||||||
|
@ -342,12 +344,10 @@ std::vector<BOARD_ITEM*> DRAWING_TOOL::DrawSpecificationStackup(
|
||||||
texts.push_back( colColor );
|
texts.push_back( colColor );
|
||||||
texts.push_back( colEpsilon );
|
texts.push_back( colEpsilon );
|
||||||
texts.push_back( colTanD );
|
texts.push_back( colTanD );
|
||||||
std::vector<BOARD_ITEM*> table =
|
std::vector<BOARD_ITEM*> table = initTextTable( texts, aOrigin, aLayer, tableSize, true );
|
||||||
initTextTable( texts, aOrigin, aLayer, tableSize, true );
|
|
||||||
|
|
||||||
if( aDrawNow )
|
if( aDrawNow )
|
||||||
{
|
{
|
||||||
|
|
||||||
for( auto item : table )
|
for( auto item : table )
|
||||||
commit.Add( item );
|
commit.Add( item );
|
||||||
|
|
||||||
|
@ -359,7 +359,7 @@ std::vector<BOARD_ITEM*> DRAWING_TOOL::DrawSpecificationStackup(
|
||||||
|
|
||||||
|
|
||||||
std::vector<BOARD_ITEM*> DRAWING_TOOL::DrawBoardCharacteristics(
|
std::vector<BOARD_ITEM*> DRAWING_TOOL::DrawBoardCharacteristics(
|
||||||
wxPoint aOrigin, PCB_LAYER_ID aLayer, bool aDrawNow, wxPoint* tableSize )
|
const wxPoint& aOrigin, PCB_LAYER_ID aLayer, bool aDrawNow, wxPoint* tableSize )
|
||||||
{
|
{
|
||||||
BOARD_COMMIT commit( m_frame );
|
BOARD_COMMIT commit( m_frame );
|
||||||
std::vector<BOARD_ITEM*> objects;
|
std::vector<BOARD_ITEM*> objects;
|
||||||
|
@ -671,6 +671,7 @@ int DRAWING_TOOL::InteractivePlaceWithPreview( const TOOL_EVENT& aEvent,
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int DRAWING_TOOL::PlaceCharacteristics( const TOOL_EVENT& aEvent )
|
int DRAWING_TOOL::PlaceCharacteristics( const TOOL_EVENT& aEvent )
|
||||||
{
|
{
|
||||||
wxPoint tableSize = wxPoint();
|
wxPoint tableSize = wxPoint();
|
||||||
|
@ -744,6 +745,7 @@ int DRAWING_TOOL::PlaceCharacteristics( const TOOL_EVENT& aEvent )
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int DRAWING_TOOL::PlaceStackup( const TOOL_EVENT& aEvent )
|
int DRAWING_TOOL::PlaceStackup( const TOOL_EVENT& aEvent )
|
||||||
{
|
{
|
||||||
wxPoint tableSize = wxPoint();
|
wxPoint tableSize = wxPoint();
|
||||||
|
|
|
@ -84,24 +84,20 @@ public:
|
||||||
MODE GetDrawingMode() const;
|
MODE GetDrawingMode() const;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Function DrawBoardCharacteristics()
|
|
||||||
*/
|
*/
|
||||||
std::vector<BOARD_ITEM*> DrawBoardCharacteristics( wxPoint origin, PCB_LAYER_ID aLayer,
|
std::vector<BOARD_ITEM*> DrawBoardCharacteristics( const wxPoint& origin, PCB_LAYER_ID aLayer,
|
||||||
bool aDrawNow, wxPoint* tablesize );
|
bool aDrawNow, wxPoint* tablesize );
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Function DrawSpecificationStackup()
|
|
||||||
*/
|
*/
|
||||||
std::vector<BOARD_ITEM*> DrawSpecificationStackup( wxPoint origin, PCB_LAYER_ID aLayer,
|
std::vector<BOARD_ITEM*> DrawSpecificationStackup( const wxPoint& origin, PCB_LAYER_ID aLayer,
|
||||||
bool aDrawNow, wxPoint* tablesize );
|
bool aDrawNow, wxPoint* tablesize );
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Function PlaceCharacteristics()
|
|
||||||
*/
|
*/
|
||||||
int PlaceCharacteristics( const TOOL_EVENT& aEvent );
|
int PlaceCharacteristics( const TOOL_EVENT& aEvent );
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Function PlaceStackup()
|
|
||||||
*/
|
*/
|
||||||
int PlaceStackup( const TOOL_EVENT& aEvent );
|
int PlaceStackup( const TOOL_EVENT& aEvent );
|
||||||
|
|
||||||
|
@ -185,7 +181,8 @@ public:
|
||||||
* @param aItems BOARD_ITEMs to add to the board.
|
* @param aItems BOARD_ITEMs to add to the board.
|
||||||
* @param aPreview BOARD_ITEMs only used during placement / preview.
|
* @param aPreview BOARD_ITEMs only used during placement / preview.
|
||||||
* @param aLayers Set of allowed destination when asking the user.
|
* @param aLayers Set of allowed destination when asking the user.
|
||||||
* If set to NULL, the user is not asked and all BOARD_ITEMs remain on their layers.
|
* If set to NULL, the user is not asked and all BOARD_ITEMs remain on
|
||||||
|
* their layers.
|
||||||
*/
|
*/
|
||||||
int InteractivePlaceWithPreview( const TOOL_EVENT& aEvent,
|
int InteractivePlaceWithPreview( const TOOL_EVENT& aEvent,
|
||||||
std::vector<BOARD_ITEM*>& aItems,
|
std::vector<BOARD_ITEM*>& aItems,
|
||||||
|
|
|
@ -133,7 +133,8 @@ int POSITION_RELATIVE_TOOL::PositionRelative( const TOOL_EVENT& aEvent )
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int POSITION_RELATIVE_TOOL::RelativeItemSelectionMove( wxPoint aPosAnchor, wxPoint aTranslation )
|
int POSITION_RELATIVE_TOOL::RelativeItemSelectionMove( const wxPoint& aPosAnchor,
|
||||||
|
const wxPoint& aTranslation )
|
||||||
{
|
{
|
||||||
wxPoint aggregateTranslation = aPosAnchor + aTranslation - GetSelectionAnchorPosition();
|
wxPoint aggregateTranslation = aPosAnchor + aTranslation - GetSelectionAnchorPosition();
|
||||||
|
|
||||||
|
|
|
@ -72,7 +72,7 @@ public:
|
||||||
* Position the m_position_relative_selection selection relative to anchor position using
|
* Position the m_position_relative_selection selection relative to anchor position using
|
||||||
* the given translation.
|
* the given translation.
|
||||||
*/
|
*/
|
||||||
int RelativeItemSelectionMove( wxPoint anchor, wxPoint translation );
|
int RelativeItemSelectionMove( const wxPoint& anchor, const wxPoint& translation );
|
||||||
|
|
||||||
///< Set up handlers for various events.
|
///< Set up handlers for various events.
|
||||||
void setTransitions() override;
|
void setTransitions() override;
|
||||||
|
|
|
@ -100,6 +100,7 @@ public:
|
||||||
|
|
||||||
return BOARD_CONNECTED_ITEM::GetNetClassName();
|
return BOARD_CONNECTED_ITEM::GetNetClassName();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Copy aZone data to me
|
* Copy aZone data to me
|
||||||
*/
|
*/
|
||||||
|
@ -187,6 +188,7 @@ public:
|
||||||
|
|
||||||
m_thermalReliefGap = aThermalReliefGap;
|
m_thermalReliefGap = aThermalReliefGap;
|
||||||
}
|
}
|
||||||
|
|
||||||
int GetThermalReliefGap() const { return m_thermalReliefGap; }
|
int GetThermalReliefGap() const { return m_thermalReliefGap; }
|
||||||
int GetThermalReliefGap( PAD* aPad, wxString* aSource = nullptr ) const;
|
int GetThermalReliefGap( PAD* aPad, wxString* aSource = nullptr ) const;
|
||||||
|
|
||||||
|
@ -197,6 +199,7 @@ public:
|
||||||
|
|
||||||
m_thermalReliefSpokeWidth = aThermalReliefSpokeWidth;
|
m_thermalReliefSpokeWidth = aThermalReliefSpokeWidth;
|
||||||
}
|
}
|
||||||
|
|
||||||
int GetThermalReliefSpokeWidth() const { return m_thermalReliefSpokeWidth; }
|
int GetThermalReliefSpokeWidth() const { return m_thermalReliefSpokeWidth; }
|
||||||
int GetThermalReliefSpokeWidth( PAD* aPad, wxString* aSource = nullptr ) const;
|
int GetThermalReliefSpokeWidth( PAD* aPad, wxString* aSource = nullptr ) const;
|
||||||
|
|
||||||
|
@ -226,6 +229,7 @@ public:
|
||||||
{
|
{
|
||||||
return m_fillFlags.count( aLayer ) ? m_fillFlags[ aLayer ] : false;
|
return m_fillFlags.count( aLayer ) ? m_fillFlags[ aLayer ] : false;
|
||||||
}
|
}
|
||||||
|
|
||||||
void SetFillFlag( PCB_LAYER_ID aLayer, bool aFlag ) { m_fillFlags[ aLayer ] = aFlag; }
|
void SetFillFlag( PCB_LAYER_ID aLayer, bool aFlag ) { m_fillFlags[ aLayer ] = aFlag; }
|
||||||
|
|
||||||
bool IsFilled() const { return m_isFilled; }
|
bool IsFilled() const { return m_isFilled; }
|
||||||
|
@ -568,7 +572,7 @@ public:
|
||||||
return m_Poly->CVertex( index );
|
return m_Poly->CVertex( index );
|
||||||
}
|
}
|
||||||
|
|
||||||
void SetCornerPosition( int aCornerIndex, wxPoint new_pos )
|
void SetCornerPosition( int aCornerIndex, const wxPoint& new_pos )
|
||||||
{
|
{
|
||||||
SHAPE_POLY_SET::VERTEX_INDEX relativeIndices;
|
SHAPE_POLY_SET::VERTEX_INDEX relativeIndices;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue