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;
|
||||
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 )
|
||||
{
|
||||
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 )
|
||||
{
|
||||
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 )
|
||||
{
|
||||
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 )
|
||||
{
|
||||
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 )
|
||||
{
|
||||
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,
|
||||
int aWidth, const COLOR4D& aColor )
|
||||
void GRArc1( EDA_RECT* aClipBox, wxDC* aDC, const wxPoint& aStart, const wxPoint& aEnd,
|
||||
const wxPoint& aCenter, int aWidth, const COLOR4D& aColor )
|
||||
{
|
||||
GRArc1( aClipBox, aDC, aStart.x, aStart.y, aEnd.x, aEnd.y, aCenter.x, aCenter.y,
|
||||
aWidth, aColor );
|
||||
|
|
|
@ -539,7 +539,7 @@ void DIALOG_PLOT_SCHEMATIC::createDxfFile( bool aPlotAll, bool aPlotDrawingSheet
|
|||
bool DIALOG_PLOT_SCHEMATIC::plotOneSheetDxf( const wxString& aFileName,
|
||||
SCH_SCREEN* aScreen,
|
||||
RENDER_SETTINGS* aRenderSettings,
|
||||
wxPoint aPlotOffset,
|
||||
const wxPoint& aPlotOffset,
|
||||
double aScale,
|
||||
bool aPlotFrameRef )
|
||||
{
|
||||
|
@ -707,7 +707,7 @@ bool DIALOG_PLOT_SCHEMATIC::plotOneSheetHpgl( const wxString& aFileName,
|
|||
SCH_SCREEN* aScreen,
|
||||
const PAGE_INFO& aPageInfo,
|
||||
RENDER_SETTINGS* aRenderSettings,
|
||||
wxPoint aPlot0ffset,
|
||||
const wxPoint& aPlot0ffset,
|
||||
double aScale,
|
||||
bool aPlotFrameRef,
|
||||
HPGL_PLOT_ORIGIN_AND_UNITS aOriginAndUnits )
|
||||
|
@ -1061,7 +1061,7 @@ bool DIALOG_PLOT_SCHEMATIC::plotOneSheetPS( const wxString& aFileName,
|
|||
SCH_SCREEN* aScreen,
|
||||
RENDER_SETTINGS* aRenderSettings,
|
||||
const PAGE_INFO& aPageInfo,
|
||||
wxPoint aPlot0ffset,
|
||||
const wxPoint& aPlot0ffset,
|
||||
double aScale,
|
||||
bool aPlotFrameRef )
|
||||
{
|
||||
|
|
|
@ -112,8 +112,8 @@ private:
|
|||
// DXF
|
||||
void createDxfFile( bool aPlotAll, bool aPlotDrawingSheet, RENDER_SETTINGS* aRenderSettings );
|
||||
bool plotOneSheetDxf( const wxString& aFileName, SCH_SCREEN* aScreen,
|
||||
RENDER_SETTINGS* aRenderSettings, wxPoint aPlotOffset, double aScale,
|
||||
bool aPlotFrameRef );
|
||||
RENDER_SETTINGS* aRenderSettings, const wxPoint& aPlotOffset,
|
||||
double aScale, bool aPlotFrameRef );
|
||||
|
||||
// HPGLGetPlotOriginAndUnits
|
||||
HPGL_PLOT_ORIGIN_AND_UNITS getPlotOriginAndUnits()
|
||||
|
@ -155,14 +155,14 @@ private:
|
|||
void setHpglPenWidth();
|
||||
bool plotOneSheetHpgl( const wxString& aFileName, SCH_SCREEN* aScreen,
|
||||
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 );
|
||||
|
||||
// PS
|
||||
void createPSFile( bool aPlotAll, bool aPlotFrameRef, RENDER_SETTINGS* aSettings );
|
||||
bool plotOneSheetPS( const wxString& aFileName, SCH_SCREEN* aScreen,
|
||||
RENDER_SETTINGS* aRenderSettings, const PAGE_INFO& aPageInfo,
|
||||
wxPoint aPlot0ffset, double aScale, bool aPlotFrameRef );
|
||||
const wxPoint& aPlot0ffset, double aScale, bool aPlotFrameRef );
|
||||
|
||||
// SVG
|
||||
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(
|
||||
LAYER_ID aCadstarSheetID, wxPoint aPosition, wxSize aSheetSize,
|
||||
LAYER_ID aCadstarSheetID, const wxPoint& aPosition, wxSize aSheetSize,
|
||||
const SCH_SHEET_PATH& aParentSheet )
|
||||
{
|
||||
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;
|
||||
|
||||
|
@ -2866,8 +2866,8 @@ wxPoint CADSTAR_SCH_ARCHIVE_LOADER::getKiCadPoint( wxPoint aCadstarPoint )
|
|||
}
|
||||
|
||||
|
||||
wxPoint CADSTAR_SCH_ARCHIVE_LOADER::getKiCadLibraryPoint( wxPoint aCadstarPoint,
|
||||
wxPoint aCadstarCentre )
|
||||
wxPoint CADSTAR_SCH_ARCHIVE_LOADER::getKiCadLibraryPoint( const wxPoint& aCadstarPoint,
|
||||
const wxPoint& aCadstarCentre )
|
||||
{
|
||||
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 ) );
|
||||
}
|
||||
|
||||
|
||||
double CADSTAR_SCH_ARCHIVE_LOADER::getPolarRadius( wxPoint aPoint )
|
||||
double CADSTAR_SCH_ARCHIVE_LOADER::getPolarRadius( const wxPoint& aPoint )
|
||||
{
|
||||
return sqrt(
|
||||
( (double) aPoint.x * (double) aPoint.x ) + ( (double) aPoint.y * (double) aPoint.y ) );
|
||||
|
|
|
@ -121,8 +121,8 @@ private:
|
|||
void loadTextVariables();
|
||||
|
||||
//Helper Functions for loading sheets
|
||||
void loadSheetAndChildSheets( LAYER_ID aCadstarSheetID, wxPoint aPosition, wxSize aSheetSize,
|
||||
const SCH_SHEET_PATH& aParentSheet );
|
||||
void loadSheetAndChildSheets( LAYER_ID aCadstarSheetID, const wxPoint& aPosition,
|
||||
wxSize aSheetSize, const SCH_SHEET_PATH& aParentSheet );
|
||||
|
||||
void loadChildSheets( LAYER_ID aCadstarSheetID, const SCH_SHEET_PATH& aSheet );
|
||||
|
||||
|
@ -218,9 +218,9 @@ private:
|
|||
|
||||
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 },
|
||||
const double& aRotationAngleDeciDeg = 0.0, const double& aScalingFactor = 1.0,
|
||||
|
@ -281,14 +281,14 @@ private:
|
|||
* @param aPoint
|
||||
* @return Angle in decidegrees of the polar representation of the point, scaled 0..360
|
||||
*/
|
||||
double getPolarAngle( wxPoint aPoint );
|
||||
double getPolarAngle( const wxPoint& aPoint );
|
||||
|
||||
/**
|
||||
* @brief
|
||||
* @param aPoint
|
||||
* @return Radius of polar representation of the point
|
||||
*/
|
||||
double getPolarRadius( wxPoint aPoint );
|
||||
double getPolarRadius( const wxPoint& aPoint );
|
||||
|
||||
}; // 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();
|
||||
|
||||
wxPoint pos = aPos;
|
||||
|
||||
if( aPos == wxDefaultPosition )
|
||||
aPos = static_cast<wxPoint>( getViewControls()->GetCursorPosition() );
|
||||
pos = static_cast<wxPoint>( getViewControls()->GetCursorPosition() );
|
||||
|
||||
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_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.in_progress = true;
|
||||
m_busUnfold.origin = aPos;
|
||||
m_busUnfold.origin = pos;
|
||||
m_busUnfold.net_name = aNet;
|
||||
|
||||
getViewControls()->SetCrossHairCursorPosition( m_busUnfold.entry->GetEnd(), false );
|
||||
|
|
|
@ -96,7 +96,7 @@ public:
|
|||
private:
|
||||
int doDrawSegments( const std::string& aTool, int aType, bool aQuitOnDraw );
|
||||
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();
|
||||
|
||||
/**
|
||||
|
|
|
@ -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 )
|
||||
{
|
||||
EE_RTREE& items = m_frame->GetScreen()->Items();
|
||||
|
|
|
@ -68,7 +68,7 @@ private:
|
|||
///< 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 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.
|
||||
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,
|
||||
wxPoint aShapePos )
|
||||
const wxPoint& aShapePos )
|
||||
{
|
||||
#define TO_POLY_SHAPE \
|
||||
{ \
|
||||
if( polybuffer.size() > 1 ) \
|
||||
{ \
|
||||
aShapeBuffer.NewOutline(); \
|
||||
\
|
||||
for( unsigned jj = 0; jj < polybuffer.size(); jj++ ) \
|
||||
aShapeBuffer.Append( polybuffer[jj].x, polybuffer[jj].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,
|
||||
wxPoint aShapePos )
|
||||
const wxPoint& aShapePos )
|
||||
{
|
||||
SHAPE_POLY_SET holeBuffer;
|
||||
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,
|
||||
wxDC* aDC, const COLOR4D& aColor, wxPoint aShapePos,
|
||||
bool aFilledShape )
|
||||
wxDC* aDC, const COLOR4D& aColor,
|
||||
const wxPoint& aShapePos, bool aFilledShape )
|
||||
{
|
||||
SHAPE_POLY_SET* shapeBuffer = GetApertureMacroShape( aParent, aShapePos );
|
||||
|
||||
|
|
|
@ -142,7 +142,7 @@ public:
|
|||
*/
|
||||
void DrawBasicShape( const GERBER_DRAW_ITEM* aParent,
|
||||
SHAPE_POLY_SET& aShapeBuffer,
|
||||
wxPoint aShapePos );
|
||||
const wxPoint& aShapePos );
|
||||
|
||||
private:
|
||||
/**
|
||||
|
@ -189,7 +189,8 @@ struct APERTURE_MACRO
|
|||
* @param aParent is the parent #GERBER_DRAW_ITEM which is actually drawn.
|
||||
* @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.
|
||||
|
@ -204,7 +205,8 @@ struct APERTURE_MACRO
|
|||
* @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,
|
||||
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
|
||||
|
|
|
@ -172,7 +172,7 @@ private:
|
|||
* if Saturation value computed from aMouseCursor is <= 1.0,
|
||||
* and false if aMouseCursor is outside this area.
|
||||
*/
|
||||
bool setHSvaluesFromCursor( wxPoint aMouseCursor );
|
||||
bool setHSvaluesFromCursor( const wxPoint& aMouseCursor );
|
||||
|
||||
///< Event handler for defined color buttons
|
||||
void buttColorClick( wxMouseEvent& event );
|
||||
|
|
|
@ -104,7 +104,7 @@ void GRForceBlackPen( bool flagforce );
|
|||
*/
|
||||
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 );
|
||||
void GRLine( EDA_RECT* ClipBox, wxDC* DC, int x1, int y1, int x2, int y2, int width,
|
||||
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 GRFilledCircle( EDA_RECT* ClipBox, wxDC* DC, int x, int y, int r, int width,
|
||||
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 );
|
||||
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 );
|
||||
|
||||
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 );
|
||||
void GRArc1( EDA_RECT* ClipBox, wxDC* DC, int x1, int y1, int x2, int y2,
|
||||
int xc, int yc, int width, const COLOR4D& Color );
|
||||
void GRArc1( EDA_RECT* aClipBox, wxDC* aDC, wxPoint aStart, wxPoint aEnd,
|
||||
wxPoint aCenter, int aWidth, const COLOR4D& aColor );
|
||||
void GRArc1( EDA_RECT* aClipBox, wxDC* aDC, const wxPoint& aStart, const wxPoint& aEnd,
|
||||
const wxPoint& aCenter, int aWidth, const COLOR4D& aColor );
|
||||
void GRFilledArc( EDA_RECT* ClipBox, wxDC* DC, int x, int y, double StAngle, double EndAngle,
|
||||
int r, const COLOR4D& Color, const COLOR4D& BgColor );
|
||||
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,
|
||||
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 );
|
||||
|
||||
void GRCSegm( EDA_RECT* ClipBox, wxDC* DC, int x1, int y1, int x2, int y2,
|
||||
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 );
|
||||
|
||||
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.
|
||||
* 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 );
|
||||
|
||||
/**
|
||||
|
@ -89,7 +89,7 @@ void TransformCircleToPolygon( SHAPE_LINE_CHAIN& aCornerBuffer, wxPoint aCenter,
|
|||
* @param aMinSegCount is the min count of segments to approximate.
|
||||
* 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 );
|
||||
|
||||
|
||||
|
@ -110,8 +110,9 @@ void TransformCircleToPolygon( SHAPE_POLY_SET& aCornerBuffer, wxPoint aCenter, i
|
|||
* @param aMinSegCount is the min count of segments to approximate.
|
||||
* Default = 0 to do not force a min count.
|
||||
*/
|
||||
void TransformOvalToPolygon( SHAPE_POLY_SET& aCornerBuffer, wxPoint aStart, wxPoint aEnd,
|
||||
int aWidth, int aError, ERROR_LOC aErrorLoc, int aMinSegCount = 0 );
|
||||
void TransformOvalToPolygon( SHAPE_POLY_SET& aCornerBuffer, const wxPoint& aStart,
|
||||
const wxPoint& aEnd, int aWidth, int aError, ERROR_LOC aErrorLoc,
|
||||
int aMinSegCount = 0 );
|
||||
|
||||
/**
|
||||
* 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 aErrorLoc determines if the approximation error be placed outside or inside the polygon.
|
||||
*/
|
||||
void TransformArcToPolygon( SHAPE_POLY_SET& aCornerBuffer, wxPoint aStart, wxPoint aMid,
|
||||
wxPoint aEnd, int aWidth, int aError, ERROR_LOC aErrorLoc );
|
||||
void TransformArcToPolygon( SHAPE_POLY_SET& aCornerBuffer, const wxPoint& aStart,
|
||||
const wxPoint& aMid, const wxPoint& aEnd, int aWidth, int aError,
|
||||
ERROR_LOC aErrorLoc );
|
||||
|
||||
/**
|
||||
* 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 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 );
|
||||
|
||||
#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.
|
||||
*/
|
||||
void BuildConvexHull( std::vector<wxPoint>& aResult, const SHAPE_POLY_SET& aPolygons,
|
||||
wxPoint aPosition, double aRotation );
|
||||
const wxPoint& aPosition, double aRotation );
|
||||
|
||||
#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.
|
||||
* (i.e. if the 2 segments have at least a common point)
|
||||
*/
|
||||
bool SegmentIntersectsSegment( const wxPoint &a_p1_l1, const wxPoint &a_p2_l1,
|
||||
const wxPoint &a_p1_l2, const wxPoint &a_p2_l2,
|
||||
bool SegmentIntersectsSegment( const wxPoint& a_p1_l1, const wxPoint& a_p2_l1,
|
||||
const wxPoint& a_p1_l2, const wxPoint& a_p2_l2,
|
||||
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 );
|
||||
|
||||
/*
|
||||
* Calculates the new coord point point
|
||||
* for a rotation angle in (1 / 10 degree)
|
||||
* Calculate the new coord point point for a rotation angle in (1 / 10 degree).
|
||||
*/
|
||||
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 );
|
||||
|
||||
/*
|
||||
* Calculates the new coord point point
|
||||
* for a center rotation center and angle in (1 / 10 degree)
|
||||
* Calculate the new coord point point for a center rotation center and angle in (1 / 10 degree).
|
||||
*/
|
||||
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 );
|
||||
|
||||
/**
|
||||
* 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 );
|
||||
|
||||
/**
|
||||
* 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
|
||||
* semicircles (i.e. 180 degree arcs).
|
||||
*
|
||||
|
@ -162,9 +160,9 @@ inline double EuclideanNorm( const wxSize &vector )
|
|||
//! @param linePointA Point on line
|
||||
//! @param linePointB Point on line
|
||||
//! @param referencePoint Reference point
|
||||
inline double DistanceLinePoint( const wxPoint &linePointA,
|
||||
const wxPoint &linePointB,
|
||||
const wxPoint &referencePoint )
|
||||
inline double DistanceLinePoint( const wxPoint& linePointA,
|
||||
const wxPoint& linePointB,
|
||||
const wxPoint& referencePoint )
|
||||
{
|
||||
// Some of the multiple double casts are redundant. However in the previous
|
||||
// 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 threshold The maximum distance
|
||||
//! @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;
|
||||
|
||||
|
@ -197,7 +195,7 @@ inline bool HitTestPoints( const wxPoint &pointA, const wxPoint &pointB, double
|
|||
//! @brief Determine the cross product
|
||||
//! @param vectorA 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
|
||||
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 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.
|
||||
|
@ -223,8 +222,7 @@ bool TestSegmentHit( const wxPoint &aRefPoint, wxPoint aStart, wxPoint aEnd, int
|
|||
inline double GetLineLength( const wxPoint& aPointA, const wxPoint& aPointB )
|
||||
{
|
||||
// Implicitly casted to double
|
||||
return hypot( aPointA.x - aPointB.x,
|
||||
aPointA.y - aPointB.y );
|
||||
return hypot( aPointA.x - aPointB.x, aPointA.y - aPointB.y );
|
||||
}
|
||||
|
||||
// These are the usual degrees <-> radians conversion routines
|
||||
|
@ -244,8 +242,10 @@ template <class T> inline T NormalizeAngle360Max( T Angle )
|
|||
{
|
||||
while( Angle < -3600 )
|
||||
Angle += 3600;
|
||||
|
||||
while( Angle > 3600 )
|
||||
Angle -= 3600;
|
||||
|
||||
return Angle;
|
||||
}
|
||||
|
||||
|
@ -255,27 +255,29 @@ template <class T> inline T NormalizeAngle360Min( T Angle )
|
|||
{
|
||||
while( Angle <= -3600 )
|
||||
Angle += 3600;
|
||||
|
||||
while( Angle >= 3600 )
|
||||
Angle -= 3600;
|
||||
|
||||
return Angle;
|
||||
}
|
||||
|
||||
|
||||
/// Normalize angle to be in the 0.0 .. -360.0 range:
|
||||
/// angle is in 1/10 degrees
|
||||
/// Normalize angle to be in the 0.0 .. -360.0 range: angle is in 1/10 degrees.
|
||||
template <class T>
|
||||
inline T NormalizeAngleNeg( T Angle )
|
||||
{
|
||||
while( Angle <= -3600 )
|
||||
Angle += 3600;
|
||||
|
||||
while( Angle > 0 )
|
||||
Angle -= 3600;
|
||||
|
||||
return Angle;
|
||||
}
|
||||
|
||||
|
||||
/// Normalize angle to be in the 0.0 .. 360.0 range:
|
||||
/// angle is in 1/10 degrees
|
||||
/// Normalize angle to be in the 0.0 .. 360.0 range: angle is in 1/10 degrees.
|
||||
template <class T> inline T NormalizeAnglePos( T Angle )
|
||||
{
|
||||
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:
|
||||
/// angle is in degrees
|
||||
/// Normalize angle to be in the 0.0 .. 360.0 range: angle is in degrees.
|
||||
inline double NormalizeAngleDegreesPos( double Angle )
|
||||
{
|
||||
while( Angle < 0 )
|
||||
Angle += 360.0;
|
||||
|
||||
while( Angle >= 360.0 )
|
||||
Angle -= 360.0;
|
||||
|
||||
return Angle;
|
||||
}
|
||||
|
||||
|
@ -313,19 +316,22 @@ inline double NormalizeAngleRadiansPos( double Angle )
|
|||
{
|
||||
while( Angle < 0 )
|
||||
Angle += (2 * M_PI );
|
||||
|
||||
while( Angle >= ( 2 * M_PI ) )
|
||||
Angle -= ( 2 * M_PI );
|
||||
|
||||
return Angle;
|
||||
}
|
||||
|
||||
/// Normalize angle to be aMin < angle <= aMax
|
||||
/// angle is in degrees
|
||||
/// Normalize angle to be aMin < angle <= aMax angle is in degrees.
|
||||
inline double NormalizeAngleDegrees( double Angle, double aMin, double aMax )
|
||||
{
|
||||
while( Angle < aMin )
|
||||
Angle += 360.0;
|
||||
|
||||
while( Angle >= aMax )
|
||||
Angle -= 360.0;
|
||||
|
||||
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 )
|
||||
{
|
||||
Angle = -Angle;
|
||||
|
||||
while( Angle < 0 )
|
||||
Angle += 3600;
|
||||
|
||||
while( Angle >= 3600 )
|
||||
Angle -= 3600;
|
||||
|
||||
return Angle;
|
||||
}
|
||||
|
||||
|
@ -361,8 +370,10 @@ template <class T> inline T NormalizeAngle90( T Angle )
|
|||
{
|
||||
while( Angle < -900 )
|
||||
Angle += 1800;
|
||||
|
||||
while( Angle > 900 )
|
||||
Angle -= 1800;
|
||||
|
||||
return Angle;
|
||||
}
|
||||
|
||||
|
@ -377,8 +388,10 @@ template <class T> inline T NormalizeAngle180( T Angle )
|
|||
{
|
||||
while( Angle <= -1800 )
|
||||
Angle += 3600;
|
||||
|
||||
while( Angle > 1800 )
|
||||
Angle -= 3600;
|
||||
|
||||
return Angle;
|
||||
}
|
||||
|
||||
|
|
|
@ -39,7 +39,7 @@
|
|||
#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 )
|
||||
{
|
||||
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 )
|
||||
{
|
||||
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,
|
||||
int aWidth, int aError, ERROR_LOC aErrorLoc, int aMinSegCount )
|
||||
void TransformOvalToPolygon( SHAPE_POLY_SET& aCornerBuffer, const wxPoint& aStart,
|
||||
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
|
||||
// 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,
|
||||
wxPoint aEnd, int aWidth, int aError, ERROR_LOC aErrorLoc )
|
||||
void TransformArcToPolygon( SHAPE_POLY_SET& aCornerBuffer, const wxPoint& aStart,
|
||||
const wxPoint& aMid, const wxPoint& aEnd, int aWidth,
|
||||
int aError, ERROR_LOC aErrorLoc )
|
||||
{
|
||||
SHAPE_ARC arc( aStart, aMid, aEnd, aWidth );
|
||||
// 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 inner_radius = aRadius - ( aWidth / 2 );
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
* 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) 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
|
||||
* 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,
|
||||
wxPoint aPosition, double aRotation )
|
||||
const wxPoint& aPosition, double aRotation )
|
||||
{
|
||||
// Build the convex hull of the SHAPE_POLY_SET
|
||||
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.
|
||||
bool SegmentIntersectsSegment( const wxPoint &a_p1_l1, const wxPoint &a_p2_l1,
|
||||
const wxPoint &a_p1_l2, const wxPoint &a_p2_l2,
|
||||
bool SegmentIntersectsSegment( const wxPoint& a_p1_l1, const wxPoint& a_p2_l1,
|
||||
const wxPoint& a_p1_l2, const wxPoint& a_p2_l2,
|
||||
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 xmax = aEnd.x;
|
||||
|
|
|
@ -189,7 +189,6 @@ bool AR_AUTOPLACER::fillMatrix()
|
|||
|
||||
for( int v = 0; v < outline.PointCount(); v++ )
|
||||
{
|
||||
|
||||
int seg_startX = outline.CPoint( v ).x;
|
||||
int seg_startY = outline.CPoint( v ).y;
|
||||
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_end_x = x_coordinates[ii + 1] - coord_orgin.x;
|
||||
|
||||
// Fill cells at y coord = idy,
|
||||
// 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 )
|
||||
m_matrix.SetCell( idy, idx, AR_SIDE_BOTTOM, CELL_IS_ZONE );
|
||||
}
|
||||
|
||||
}
|
||||
} // 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
|
||||
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 )
|
||||
{
|
||||
// Add a polygonal shape (rectangle) to m_fpAreaFront and/or m_fpAreaBack
|
||||
|
@ -1022,7 +1022,6 @@ end_of_tst:
|
|||
if( error == AR_ABORT_PLACEMENT )
|
||||
break;
|
||||
|
||||
|
||||
bestRotation += initialOrient;
|
||||
|
||||
if( bestRotation != footprint->GetOrientation() )
|
||||
|
|
|
@ -3,9 +3,9 @@
|
|||
*
|
||||
* Copyright (C) 2012 Jean-Pierre Charras, jean-pierre.charras@ujf-grenoble.fr
|
||||
* 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
|
||||
* 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,
|
||||
* for instance after moving a footprint
|
||||
* Callback to redraw on screen the view after changes, for instance after moving a footprint.
|
||||
*/
|
||||
void SetRefreshCallback( std::function<int( FOOTPRINT* aFootprint )> aCallback )
|
||||
{
|
||||
|
@ -89,8 +88,10 @@ private:
|
|||
void rotateFootprint( FOOTPRINT* aFootprint, double angle, bool incremental );
|
||||
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();
|
||||
void genModuleOnRoutingMatrix( FOOTPRINT* aFootprint );
|
||||
|
@ -113,7 +114,7 @@ private:
|
|||
const PAD* nearestPad( FOOTPRINT* aRefFP, PAD* aRefPad, const wxPoint& aOffset );
|
||||
|
||||
// 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
|
||||
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_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_fpAreaTop; // The polygonal description of the footprint to place, top side;
|
||||
SHAPE_POLY_SET m_fpAreaBottom; // The polygonal description of the footprint to place, bottom side;
|
||||
SHAPE_POLY_SET m_fpAreaTop; // The polygonal description of the footprint to place,
|
||||
// top side;
|
||||
SHAPE_POLY_SET m_fpAreaBottom; // The polygonal description of the footprint to place,
|
||||
// bottom side;
|
||||
|
||||
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,
|
||||
std::unique_ptr<ARRAY_OPTIONS>& aSettings,
|
||||
bool enableNumbering, wxPoint aOrigPos ) :
|
||||
bool enableNumbering, const wxPoint& aOrigPos ) :
|
||||
DIALOG_CREATE_ARRAY_BASE( aParent ),
|
||||
m_settings( aSettings ),
|
||||
m_originalItemPosition( aOrigPos ),
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
* 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) 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
|
||||
* 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)
|
||||
*/
|
||||
DIALOG_CREATE_ARRAY( PCB_BASE_FRAME* aParent, std::unique_ptr<ARRAY_OPTIONS>& aOptions,
|
||||
bool enableNumbering, wxPoint aOrigPos );
|
||||
bool enableNumbering, const wxPoint& aOrigPos );
|
||||
|
||||
private:
|
||||
// Event callbacks
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
*
|
||||
* Copyright (C) 2004-2019 Jean-Pierre Charras, jp.charras at wanadoo.fr
|
||||
* 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
|
||||
* 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 );
|
||||
rule->AddConstraint( silkClearanceConstraint );
|
||||
|
||||
|
||||
// 2) micro-via specific defaults (new DRC doesn't treat microvias in any special way)
|
||||
|
||||
DRC_RULE* uViaRule = createImplicitRule( _( "board setup micro-via constraints" ) );
|
||||
|
@ -461,6 +460,7 @@ void DRC_ENGINE::loadImplicitRules()
|
|||
(int) netclassClearanceRules.size() ) );
|
||||
}
|
||||
|
||||
|
||||
static wxString formatConstraint( const DRC_CONSTRAINT& constraint )
|
||||
{
|
||||
struct FORMATTER
|
||||
|
@ -523,9 +523,6 @@ static wxString formatConstraint( const DRC_CONSTRAINT& constraint )
|
|||
}
|
||||
|
||||
|
||||
/**
|
||||
* @throws PARSE_ERROR
|
||||
*/
|
||||
void DRC_ENGINE::loadRules( const wxFileName& aPath )
|
||||
{
|
||||
if( aPath.FileExists() )
|
||||
|
@ -622,9 +619,6 @@ void DRC_ENGINE::compileRules()
|
|||
}
|
||||
|
||||
|
||||
/**
|
||||
* @throws PARSE_ERROR
|
||||
*/
|
||||
void DRC_ENGINE::InitEngine( const wxFileName& aRulePath )
|
||||
{
|
||||
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;
|
||||
|
||||
|
@ -1136,6 +1130,7 @@ void DRC_ENGINE::ReportViolation( const std::shared_ptr<DRC_ITEM>& aItem, wxPoin
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
void DRC_ENGINE::ReportAux ( const wxString& aStr )
|
||||
{
|
||||
if( !m_reporter )
|
||||
|
@ -1323,8 +1318,10 @@ bool DRC_ENGINE::IsNetTie( BOARD_ITEM* aItem )
|
|||
DRC_TEST_PROVIDER* DRC_ENGINE::GetTestProvider( const wxString& name ) const
|
||||
{
|
||||
for( auto prov : m_testProviders )
|
||||
{
|
||||
if( name == prov->GetName() )
|
||||
return prov;
|
||||
}
|
||||
|
||||
return nullptr;
|
||||
}
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/*
|
||||
* 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
|
||||
* modify it under the terms of the GNU General Public License
|
||||
|
@ -64,7 +64,8 @@ class DRC_CONSTRAINT;
|
|||
|
||||
|
||||
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; }
|
||||
DS_PROXY_VIEW_ITEM* GetDrawingSheet() const { return m_drawingSheet; }
|
||||
|
||||
void SetDebugOverlay( std::shared_ptr<KIGFX::VIEW_OVERLAY> aOverlay ) { m_debugOverlay = aOverlay; }
|
||||
std::shared_ptr<KIGFX::VIEW_OVERLAY> GetDebugOverlay() const { return m_debugOverlay; }
|
||||
void SetDebugOverlay( std::shared_ptr<KIGFX::VIEW_OVERLAY> aOverlay )
|
||||
{
|
||||
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).
|
||||
|
@ -128,14 +132,14 @@ public:
|
|||
void SetLogReporter( REPORTER* aReporter ) { m_reporter = aReporter; }
|
||||
|
||||
/**
|
||||
* Initializes the DRC engine.
|
||||
* Initialize the DRC engine.
|
||||
*
|
||||
* @throws PARSE_ERROR if the rules file contains errors
|
||||
*/
|
||||
void InitEngine( const wxFileName& aRulePath );
|
||||
|
||||
/**
|
||||
* Runs the DRC tests.
|
||||
* Run the DRC tests.
|
||||
*/
|
||||
void RunTests( EDA_UNITS aUnits, bool aReportAllTrackErrors, bool aTestFootprints );
|
||||
|
||||
|
@ -154,7 +158,7 @@ public:
|
|||
|
||||
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 ReportPhase( const wxString& aMessage );
|
||||
void ReportAux( const wxString& aStr );
|
||||
|
@ -168,7 +172,7 @@ public:
|
|||
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 aComplementNet will be filled with the complement, like DIFF_N
|
||||
* @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
|
||||
*/
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/*
|
||||
* 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
|
||||
* 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 ""; }
|
||||
|
||||
|
||||
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() )
|
||||
accountCheck( item->GetViolatingRule() );
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/*
|
||||
* 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
|
||||
* modify it under the terms of the GNU General Public License
|
||||
|
@ -64,10 +64,10 @@ public:
|
|||
}
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* DRC_TEST_PROVIDER
|
||||
* is a base class that represents a DRC "provider" which runs some DRC functions over a
|
||||
* #BOARD and spits out #DRC_ITEMs and positions as needed.
|
||||
* Represent a DRC "provider" which runs some DRC functions over a #BOARD and spits out
|
||||
* #DRC_ITEMs and positions as needed.
|
||||
*/
|
||||
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;
|
||||
|
||||
|
@ -113,7 +113,7 @@ protected:
|
|||
const std::function<bool(BOARD_ITEM*)>& aFunc );
|
||||
|
||||
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 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
|
||||
* 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_offset = aOffset;
|
||||
|
|
|
@ -35,7 +35,7 @@
|
|||
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
|
||||
{
|
||||
|
@ -60,7 +60,7 @@ public:
|
|||
*
|
||||
* @param aOffset is the drill coordinates offset.
|
||||
*/
|
||||
void SetOptions( wxPoint aOffset )
|
||||
void SetOptions( const wxPoint& aOffset )
|
||||
{
|
||||
m_offset = aOffset;
|
||||
m_merge_PTH_NPTH = false;
|
||||
|
|
|
@ -34,7 +34,7 @@ class FOOTPRINT;
|
|||
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
|
||||
{
|
||||
|
@ -53,7 +53,7 @@ public:
|
|||
*
|
||||
* @param aOffset is the drill coordinates offset.
|
||||
*/
|
||||
void SetOptions( wxPoint aOffset )
|
||||
void SetOptions( const wxPoint& aOffset )
|
||||
{
|
||||
m_offset = aOffset;
|
||||
}
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
* 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) 2021 KiCad Developers, see AUTHORS.txt for contributors.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License
|
||||
|
@ -211,7 +212,7 @@ struct ALTIUM_VERTICE
|
|||
const wxPoint position;
|
||||
const wxPoint center;
|
||||
|
||||
explicit ALTIUM_VERTICE( const wxPoint aPosition )
|
||||
explicit ALTIUM_VERTICE( const wxPoint& aPosition )
|
||||
: isRound( false ),
|
||||
radius( 0 ),
|
||||
startangle( 0. ),
|
||||
|
|
|
@ -284,7 +284,6 @@ void CADSTAR_PCB_ARCHIVE_LOADER::loadBoardStackup()
|
|||
wxASSERT( totalCopperLayers == cadstarBoardStackup.size() );
|
||||
wxASSERT( cadstarBoardStackup.back().ConstructionLayers.size() == 0 );
|
||||
|
||||
|
||||
// Create a new stackup from default stackup list
|
||||
BOARD_STACKUP& stackup = m_board->GetDesignSettings().GetStackupDescriptor();
|
||||
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;
|
||||
|
||||
|
@ -730,7 +730,6 @@ void CADSTAR_PCB_ARCHIVE_LOADER::loadLibraryCoppers( const SYMDEF_PCB& aComponen
|
|||
if( !found )
|
||||
anchorPad = aComponent.ComponentPads.at( compCopper.AssociatedPadIDs.front() );
|
||||
|
||||
|
||||
PAD* pad = new PAD( aFootprint );
|
||||
pad->SetAttribute( PAD_ATTRIB::SMD );
|
||||
pad->SetLayerSet( LSET( 1, copperLayer ) );
|
||||
|
@ -1066,7 +1065,6 @@ PAD* CADSTAR_PCB_ARCHIVE_LOADER::getKiCadPad( const COMPONENT_PAD& aCadstarPad,
|
|||
if( csPadcode.ReliefWidth != UNDEFINED_VALUE )
|
||||
pad->SetThermalSpokeWidth( getKiCadLength( csPadcode.ReliefWidth ) );
|
||||
|
||||
|
||||
if( csPadcode.DrillDiameter != 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 } );
|
||||
}
|
||||
|
||||
|
||||
if( csPadcode.SlotOrientation != 0 )
|
||||
{
|
||||
LSET lset = pad->GetLayerSet();
|
||||
|
@ -1114,8 +1111,8 @@ PAD* CADSTAR_PCB_ARCHIVE_LOADER::getKiCadPad( const COMPONENT_PAD& aCadstarPad,
|
|||
padShape->SetPolyShape( padOutline );
|
||||
padShape->SetWidth( 0 );
|
||||
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();
|
||||
|
||||
|
@ -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." ),
|
||||
csPadcode.Name );
|
||||
}
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -1262,8 +1258,8 @@ void CADSTAR_PCB_ARCHIVE_LOADER::loadFigures()
|
|||
{
|
||||
FIGURE& fig = figPair.second;
|
||||
drawCadstarShape( fig.Shape, getKiCadLayer( fig.LayerID ),
|
||||
getLineThickness( fig.LineCodeID ), wxString::Format( "FIGURE %s", fig.ID ), m_board,
|
||||
fig.GroupID );
|
||||
getLineThickness( fig.LineCodeID ), wxString::Format( "FIGURE %s", fig.ID ),
|
||||
m_board, fig.GroupID );
|
||||
|
||||
//TODO process "swaprule" (doesn't seem to apply to Layout Figures?)
|
||||
//TODO process re-use block when KiCad Supports it
|
||||
|
@ -1993,7 +1989,6 @@ void CADSTAR_PCB_ARCHIVE_LOADER::loadCoppers()
|
|||
rawPolys.Inflate( copperWidth / 2, 32 );
|
||||
}
|
||||
|
||||
|
||||
if( pouredZone->HasFilledPolysForLayer( 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() )
|
||||
{
|
||||
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,
|
||||
pin.PadID,
|
||||
footprint->GetReference() ) );
|
||||
|
@ -2592,11 +2588,11 @@ void CADSTAR_PCB_ARCHIVE_LOADER::drawCadstarShape( const SHAPE& aCadstarShape,
|
|||
case SHAPE_TYPE::OUTLINE:
|
||||
///TODO update this when Polygons in KiCad can be defined with no fill
|
||||
drawCadstarVerticesAsShapes( aCadstarShape.Vertices, aKiCadLayer, aLineThickness,
|
||||
aContainer, aCadstarGroupID, aMoveVector, aRotationAngle, aScalingFactor,
|
||||
aTransformCentre, aMirrorInvert );
|
||||
aContainer, aCadstarGroupID, aMoveVector, aRotationAngle,
|
||||
aScalingFactor, aTransformCentre, aMirrorInvert );
|
||||
drawCadstarCutoutsAsShapes( aCadstarShape.Cutouts, aKiCadLayer, aLineThickness,
|
||||
aContainer, aCadstarGroupID, aMoveVector, aRotationAngle, aScalingFactor,
|
||||
aTransformCentre, aMirrorInvert );
|
||||
aContainer, aCadstarGroupID, aMoveVector, aRotationAngle,
|
||||
aScalingFactor, aTransformCentre, aMirrorInvert );
|
||||
break;
|
||||
|
||||
case SHAPE_TYPE::HATCHED:
|
||||
|
@ -2892,7 +2888,8 @@ SHAPE_POLY_SET CADSTAR_PCB_ARCHIVE_LOADER::getPolySetFromCadstarShape( const SHA
|
|||
}
|
||||
|
||||
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
|
||||
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" ) )
|
||||
{
|
||||
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 );
|
||||
}
|
||||
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() )
|
||||
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;
|
||||
|
||||
|
@ -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 ) );
|
||||
}
|
||||
|
||||
|
@ -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 )
|
||||
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;
|
||||
}
|
||||
|
||||
|
||||
bool CADSTAR_PCB_ARCHIVE_LOADER::isLayerSet( const LAYER_ID& 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;
|
||||
}
|
||||
|
||||
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 );
|
||||
}
|
||||
|
|
|
@ -419,7 +419,7 @@ private:
|
|||
* @param aCadstarPoint
|
||||
* @return
|
||||
*/
|
||||
wxPoint getKiCadPoint( wxPoint aCadstarPoint );
|
||||
wxPoint getKiCadPoint( const wxPoint& aCadstarPoint );
|
||||
|
||||
/**
|
||||
* @brief
|
||||
|
@ -466,7 +466,7 @@ private:
|
|||
* @param aPoint
|
||||
* @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
|
||||
|
|
|
@ -209,7 +209,7 @@ static std::vector<BOARD_ITEM*> initTextTable( std::vector<std::vector<PCB_TEXT*
|
|||
|
||||
|
||||
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 );
|
||||
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.
|
||||
// But dielectric layer names will be missing.
|
||||
t = static_cast<PCB_TEXT*>( dataStyle->Duplicate() );
|
||||
|
||||
if( layers.at( i )->GetLayerName().IsEmpty() )
|
||||
{
|
||||
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() );
|
||||
}
|
||||
|
||||
colLayer.push_back( t );
|
||||
|
||||
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( colEpsilon );
|
||||
texts.push_back( colTanD );
|
||||
std::vector<BOARD_ITEM*> table =
|
||||
initTextTable( texts, aOrigin, aLayer, tableSize, true );
|
||||
std::vector<BOARD_ITEM*> table = initTextTable( texts, aOrigin, aLayer, tableSize, true );
|
||||
|
||||
if( aDrawNow )
|
||||
{
|
||||
|
||||
for( auto item : table )
|
||||
commit.Add( item );
|
||||
|
||||
|
@ -359,7 +359,7 @@ std::vector<BOARD_ITEM*> DRAWING_TOOL::DrawSpecificationStackup(
|
|||
|
||||
|
||||
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 );
|
||||
std::vector<BOARD_ITEM*> objects;
|
||||
|
@ -671,6 +671,7 @@ int DRAWING_TOOL::InteractivePlaceWithPreview( const TOOL_EVENT& aEvent,
|
|||
return 0;
|
||||
}
|
||||
|
||||
|
||||
int DRAWING_TOOL::PlaceCharacteristics( const TOOL_EVENT& aEvent )
|
||||
{
|
||||
wxPoint tableSize = wxPoint();
|
||||
|
@ -744,6 +745,7 @@ int DRAWING_TOOL::PlaceCharacteristics( const TOOL_EVENT& aEvent )
|
|||
return 0;
|
||||
}
|
||||
|
||||
|
||||
int DRAWING_TOOL::PlaceStackup( const TOOL_EVENT& aEvent )
|
||||
{
|
||||
wxPoint tableSize = wxPoint();
|
||||
|
|
|
@ -84,24 +84,20 @@ public:
|
|||
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 );
|
||||
|
||||
/**
|
||||
* 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 );
|
||||
|
||||
/**
|
||||
* Function PlaceCharacteristics()
|
||||
*/
|
||||
int PlaceCharacteristics( const TOOL_EVENT& aEvent );
|
||||
|
||||
/**
|
||||
* Function PlaceStackup()
|
||||
*/
|
||||
int PlaceStackup( const TOOL_EVENT& aEvent );
|
||||
|
||||
|
@ -185,7 +181,8 @@ public:
|
|||
* @param aItems BOARD_ITEMs to add to the board.
|
||||
* @param aPreview BOARD_ITEMs only used during placement / preview.
|
||||
* @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,
|
||||
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();
|
||||
|
||||
|
|
|
@ -72,7 +72,7 @@ public:
|
|||
* Position the m_position_relative_selection selection relative to anchor position using
|
||||
* the given translation.
|
||||
*/
|
||||
int RelativeItemSelectionMove( wxPoint anchor, wxPoint translation );
|
||||
int RelativeItemSelectionMove( const wxPoint& anchor, const wxPoint& translation );
|
||||
|
||||
///< Set up handlers for various events.
|
||||
void setTransitions() override;
|
||||
|
|
|
@ -100,6 +100,7 @@ public:
|
|||
|
||||
return BOARD_CONNECTED_ITEM::GetNetClassName();
|
||||
}
|
||||
|
||||
/**
|
||||
* Copy aZone data to me
|
||||
*/
|
||||
|
@ -187,6 +188,7 @@ public:
|
|||
|
||||
m_thermalReliefGap = aThermalReliefGap;
|
||||
}
|
||||
|
||||
int GetThermalReliefGap() const { return m_thermalReliefGap; }
|
||||
int GetThermalReliefGap( PAD* aPad, wxString* aSource = nullptr ) const;
|
||||
|
||||
|
@ -197,6 +199,7 @@ public:
|
|||
|
||||
m_thermalReliefSpokeWidth = aThermalReliefSpokeWidth;
|
||||
}
|
||||
|
||||
int GetThermalReliefSpokeWidth() const { return m_thermalReliefSpokeWidth; }
|
||||
int GetThermalReliefSpokeWidth( PAD* aPad, wxString* aSource = nullptr ) const;
|
||||
|
||||
|
@ -226,6 +229,7 @@ public:
|
|||
{
|
||||
return m_fillFlags.count( aLayer ) ? m_fillFlags[ aLayer ] : false;
|
||||
}
|
||||
|
||||
void SetFillFlag( PCB_LAYER_ID aLayer, bool aFlag ) { m_fillFlags[ aLayer ] = aFlag; }
|
||||
|
||||
bool IsFilled() const { return m_isFilled; }
|
||||
|
@ -568,7 +572,7 @@ public:
|
|||
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;
|
||||
|
||||
|
|
Loading…
Reference in New Issue