Coverity fixes and code cleaning.
(cherry picked from commit 789bf6455a
)
This commit is contained in:
parent
a9447aa8c7
commit
2c7f44f78d
|
@ -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) 2022 Jon Evans <jon@craftyjon.com>
|
* Copyright (C) 2022 Jon Evans <jon@craftyjon.com>
|
||||||
* Copyright (C) 2022 KiCad Developers, see AUTHORS.txt for contributors.
|
* Copyright (C) 2022-2023 KiCad Developers, see AUTHORS.txt for contributors.
|
||||||
*
|
*
|
||||||
* This program is free software: you can redistribute it and/or modify it
|
* This program is free software: you can redistribute it and/or modify it
|
||||||
* under the terms of the GNU General Public License as published by the
|
* under the terms of the GNU General Public License as published by the
|
||||||
|
@ -178,7 +178,15 @@ bool DATABASE_CONNECTION::Disconnect()
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
m_conn->disconnect();
|
try
|
||||||
|
{
|
||||||
|
m_conn->disconnect();
|
||||||
|
}
|
||||||
|
catch( boost::locale::conv::conversion_error& exc )
|
||||||
|
{
|
||||||
|
wxLogTrace( traceDatabase, wxT( "Disconnect() error \"%s\" occured." ), exc.what() );
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
return !m_conn->connected();
|
return !m_conn->connected();
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
*
|
*
|
||||||
* Copyright (C) 2004-2017 Jean-Pierre Charras, jp.charras at wanadoo.fr
|
* Copyright (C) 2004-2017 Jean-Pierre Charras, jp.charras at wanadoo.fr
|
||||||
* Copyright (C) 2008 Wayne Stambaugh <stambaughw@gmail.com>
|
* Copyright (C) 2008 Wayne Stambaugh <stambaughw@gmail.com>
|
||||||
* Copyright (C) 2004-2022 KiCad Developers, see AUTHORS.txt for contributors.
|
* Copyright (C) 2004-2023 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
|
||||||
|
@ -78,12 +78,16 @@ BEGIN_EVENT_TABLE( EDA_DRAW_FRAME, KIWAY_PLAYER )
|
||||||
EVT_ACTIVATE( EDA_DRAW_FRAME::onActivate )
|
EVT_ACTIVATE( EDA_DRAW_FRAME::onActivate )
|
||||||
END_EVENT_TABLE()
|
END_EVENT_TABLE()
|
||||||
|
|
||||||
|
|
||||||
bool EDA_DRAW_FRAME::m_openGLFailureOccured = false;
|
bool EDA_DRAW_FRAME::m_openGLFailureOccured = false;
|
||||||
|
|
||||||
|
|
||||||
EDA_DRAW_FRAME::EDA_DRAW_FRAME( KIWAY* aKiway, wxWindow* aParent, FRAME_T aFrameType,
|
EDA_DRAW_FRAME::EDA_DRAW_FRAME( KIWAY* aKiway, wxWindow* aParent, FRAME_T aFrameType,
|
||||||
const wxString& aTitle, const wxPoint& aPos, const wxSize& aSize,
|
const wxString& aTitle, const wxPoint& aPos, const wxSize& aSize,
|
||||||
long aStyle, const wxString& aFrameName, const EDA_IU_SCALE& aIuScale ) :
|
long aStyle, const wxString& aFrameName,
|
||||||
KIWAY_PLAYER( aKiway, aParent, aFrameType, aTitle, aPos, aSize, aStyle, aFrameName, aIuScale )
|
const EDA_IU_SCALE& aIuScale ) :
|
||||||
|
KIWAY_PLAYER( aKiway, aParent, aFrameType, aTitle, aPos, aSize, aStyle, aFrameName, aIuScale ),
|
||||||
|
m_socketServer( nullptr )
|
||||||
{
|
{
|
||||||
m_socketServer = nullptr;
|
m_socketServer = nullptr;
|
||||||
m_mainToolBar = nullptr;
|
m_mainToolBar = nullptr;
|
||||||
|
@ -171,8 +175,8 @@ EDA_DRAW_FRAME::EDA_DRAW_FRAME( KIWAY* aKiway, wxWindow* aParent, FRAME_T aFrame
|
||||||
OnMove( dummy );
|
OnMove( dummy );
|
||||||
|
|
||||||
// we need to kludge the msg panel to the correct size again
|
// we need to kludge the msg panel to the correct size again
|
||||||
// especially important even for first launches as the constructor of the window here usually doesn't
|
// especially important even for first launches as the constructor of the window
|
||||||
// have the correct dpi awareness yet
|
// here usually doesn't have the correct dpi awareness yet
|
||||||
m_frameSize.y += m_msgFrameHeight;
|
m_frameSize.y += m_msgFrameHeight;
|
||||||
m_msgFrameHeight = EDA_MSG_PANEL::GetRequiredHeight( this );
|
m_msgFrameHeight = EDA_MSG_PANEL::GetRequiredHeight( this );
|
||||||
m_frameSize.y -= m_msgFrameHeight;
|
m_frameSize.y -= m_msgFrameHeight;
|
||||||
|
@ -609,7 +613,8 @@ void EDA_DRAW_FRAME::DisplayGridMsg()
|
||||||
{
|
{
|
||||||
wxString msg;
|
wxString msg;
|
||||||
|
|
||||||
msg.Printf( wxS( "grid %s" ), MessageTextFromValue( GetCanvas()->GetGAL()->GetGridSize().x, false ) );
|
msg.Printf( wxS( "grid %s" ), MessageTextFromValue( GetCanvas()->GetGAL()->GetGridSize().x,
|
||||||
|
false ) );
|
||||||
|
|
||||||
SetStatusText( msg, 4 );
|
SetStatusText( msg, 4 );
|
||||||
}
|
}
|
||||||
|
|
|
@ -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) 2022 KiCad Developers, see AUTHORS.txt for contributors.
|
* Copyright (C) 2022-2023 KiCad Developers, see AUTHORS.txt for contributors.
|
||||||
*
|
*
|
||||||
* This program is free software: you can redistribute it and/or modify it
|
* This program is free software: you can redistribute it and/or modify it
|
||||||
* under the terms of the GNU General Public License as published by the
|
* under the terms of the GNU General Public License as published by the
|
||||||
|
@ -42,6 +42,8 @@ void SEARCH_PANE::OnLanguageChange()
|
||||||
wxWindow* page = m_notebook->GetPage( i );
|
wxWindow* page = m_notebook->GetPage( i );
|
||||||
SEARCH_PANE_TAB* tab = dynamic_cast<SEARCH_PANE_TAB*>( page );
|
SEARCH_PANE_TAB* tab = dynamic_cast<SEARCH_PANE_TAB*>( page );
|
||||||
|
|
||||||
|
wxCHECK( tab, /* void */ );
|
||||||
|
|
||||||
tab->RefreshColumnNames();
|
tab->RefreshColumnNames();
|
||||||
m_notebook->SetPageText( i, wxGetTranslation( tab->GetSearchHandler()->GetName() ) );
|
m_notebook->SetPageText( i, wxGetTranslation( tab->GetSearchHandler()->GetName() ) );
|
||||||
}
|
}
|
||||||
|
@ -103,4 +105,4 @@ void SEARCH_PANE::OnNotebookPageChanged( wxBookCtrlEvent& aEvent )
|
||||||
SEARCH_PANE_TAB* SEARCH_PANE::GetCurrentTab() const
|
SEARCH_PANE_TAB* SEARCH_PANE::GetCurrentTab() const
|
||||||
{
|
{
|
||||||
return dynamic_cast<SEARCH_PANE_TAB*>( m_notebook->GetCurrentPage() );
|
return dynamic_cast<SEARCH_PANE_TAB*>( m_notebook->GetCurrentPage() );
|
||||||
}
|
}
|
||||||
|
|
|
@ -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) 2001 Jean-Pierre Charras, jaen-pierre.charras@gipsa-lab.inpg.com
|
* Copyright (C) 2001 Jean-Pierre Charras, jaen-pierre.charras@gipsa-lab.inpg.com
|
||||||
* Copyright (C) 2004-2022 KiCad Developers, see change_log.txt for contributors.
|
* Copyright (C) 2004-2023 KiCad Developers, see change_log.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
|
||||||
|
@ -122,10 +122,14 @@ DIALOG_LIB_TEXT_PROPERTIES::~DIALOG_LIB_TEXT_PROPERTIES()
|
||||||
|
|
||||||
bool DIALOG_LIB_TEXT_PROPERTIES::TransferDataToWindow()
|
bool DIALOG_LIB_TEXT_PROPERTIES::TransferDataToWindow()
|
||||||
{
|
{
|
||||||
LIB_SYMBOL* symbol = m_graphicText->GetParent();
|
LIB_SYMBOL* symbol = nullptr;
|
||||||
|
|
||||||
if( m_graphicText )
|
if( m_graphicText )
|
||||||
{
|
{
|
||||||
|
symbol = m_graphicText->GetParent();
|
||||||
|
|
||||||
|
wxCHECK( symbol, false );
|
||||||
|
|
||||||
m_textSize.SetValue( m_graphicText->GetTextWidth() );
|
m_textSize.SetValue( m_graphicText->GetTextWidth() );
|
||||||
m_StyledTextCtrl->SetValue( m_graphicText->GetText() );
|
m_StyledTextCtrl->SetValue( m_graphicText->GetText() );
|
||||||
m_StyledTextCtrl->EmptyUndoBuffer();
|
m_StyledTextCtrl->EmptyUndoBuffer();
|
||||||
|
|
|
@ -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 Jean-Pierre Charras, jp.charras at wanadoo.fr
|
* Copyright (C) 2015 Jean-Pierre Charras, jp.charras at wanadoo.fr
|
||||||
* Copyright (C) 2004-2022 KiCad Developers, see AUTHORS.txt for contributors.
|
* Copyright (C) 2004-2023 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,8 @@ wxString SCH_FIELD::GetShownText( int aDepth, bool aAllowExtraText ) const
|
||||||
std::function<bool( wxString* )> labelResolver =
|
std::function<bool( wxString* )> labelResolver =
|
||||||
[&]( wxString* token ) -> bool
|
[&]( wxString* token ) -> bool
|
||||||
{
|
{
|
||||||
return static_cast<SCH_LABEL_BASE*>( m_parent )->ResolveTextVar( token, aDepth + 1 );
|
return static_cast<SCH_LABEL_BASE*>( m_parent )->ResolveTextVar( token,
|
||||||
|
aDepth + 1 );
|
||||||
};
|
};
|
||||||
|
|
||||||
wxString text = EDA_TEXT::GetShownText();
|
wxString text = EDA_TEXT::GetShownText();
|
||||||
|
@ -1040,6 +1041,8 @@ void SCH_FIELD::Plot( PLOTTER* aPlotter, bool aBackground ) const
|
||||||
std::vector<wxString> pageHrefs;
|
std::vector<wxString> pageHrefs;
|
||||||
BOX2I bbox = GetBoundingBox();
|
BOX2I bbox = GetBoundingBox();
|
||||||
|
|
||||||
|
wxCHECK( label, /* void */ );
|
||||||
|
|
||||||
label->GetIntersheetRefs( &pages );
|
label->GetIntersheetRefs( &pages );
|
||||||
|
|
||||||
for( const std::pair<wxString, wxString>& page : pages )
|
for( const std::pair<wxString, wxString>& page : pages )
|
||||||
|
|
|
@ -76,12 +76,14 @@ BOARD* BOARD_COMMIT::GetBoard() const
|
||||||
|
|
||||||
COMMIT& BOARD_COMMIT::Stage( EDA_ITEM* aItem, CHANGE_TYPE aChangeType )
|
COMMIT& BOARD_COMMIT::Stage( EDA_ITEM* aItem, CHANGE_TYPE aChangeType )
|
||||||
{
|
{
|
||||||
|
wxCHECK( aItem, *this );
|
||||||
|
|
||||||
aItem->ClearFlags( IS_MODIFIED_CHILD );
|
aItem->ClearFlags( IS_MODIFIED_CHILD );
|
||||||
|
|
||||||
// If aItem belongs a footprint, the full footprint will be saved because undo/redo does
|
// If aItem belongs a footprint, the full footprint will be saved because undo/redo does
|
||||||
// not handle "sub items" modifications. This has implications for auto-zone-refill, so
|
// not handle "sub items" modifications. This has implications for auto-zone-refill, so
|
||||||
// we need to store a bit more information.
|
// we need to store a bit more information.
|
||||||
if( aItem && aChangeType == CHT_MODIFY )
|
if( aChangeType == CHT_MODIFY )
|
||||||
{
|
{
|
||||||
if( aItem->Type() == PCB_FOOTPRINT_T )
|
if( aItem->Type() == PCB_FOOTPRINT_T )
|
||||||
{
|
{
|
||||||
|
|
|
@ -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) 2019 Jean-Pierre Charras jp.charras at wanadoo.fr
|
* Copyright (C) 2019 Jean-Pierre Charras jp.charras at wanadoo.fr
|
||||||
* Copyright (C) 1992-2022 KiCad Developers, see AUTHORS.txt for contributors.
|
* Copyright (C) 1992-2023 KiCad Developers, see AUTHORS.txt for contributors.
|
||||||
*
|
*
|
||||||
* This program is free software: you can redistribute it and/or modify it
|
* This program is free software: you can redistribute it and/or modify it
|
||||||
* under the terms of the GNU General Public License as published by the
|
* under the terms of the GNU General Public License as published by the
|
||||||
|
@ -43,22 +43,9 @@
|
||||||
#include <dialog_graphic_item_properties_base.h>
|
#include <dialog_graphic_item_properties_base.h>
|
||||||
#include <tools/drawing_tool.h>
|
#include <tools/drawing_tool.h>
|
||||||
|
|
||||||
|
|
||||||
class DIALOG_GRAPHIC_ITEM_PROPERTIES : public DIALOG_GRAPHIC_ITEM_PROPERTIES_BASE
|
class DIALOG_GRAPHIC_ITEM_PROPERTIES : public DIALOG_GRAPHIC_ITEM_PROPERTIES_BASE
|
||||||
{
|
{
|
||||||
private:
|
|
||||||
PCB_BASE_EDIT_FRAME* m_parent;
|
|
||||||
PCB_SHAPE* m_item;
|
|
||||||
FP_SHAPE* m_fp_item;
|
|
||||||
|
|
||||||
UNIT_BINDER m_startX, m_startY;
|
|
||||||
UNIT_BINDER m_endX, m_endY;
|
|
||||||
UNIT_BINDER m_angle;
|
|
||||||
UNIT_BINDER m_thickness;
|
|
||||||
UNIT_BINDER m_bezierCtrl1X, m_bezierCtrl1Y;
|
|
||||||
UNIT_BINDER m_bezierCtrl2X, m_bezierCtrl2Y;
|
|
||||||
|
|
||||||
bool m_flipStartEnd;
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
DIALOG_GRAPHIC_ITEM_PROPERTIES( PCB_BASE_EDIT_FRAME* aParent, BOARD_ITEM* aItem );
|
DIALOG_GRAPHIC_ITEM_PROPERTIES( PCB_BASE_EDIT_FRAME* aParent, BOARD_ITEM* aItem );
|
||||||
~DIALOG_GRAPHIC_ITEM_PROPERTIES() {};
|
~DIALOG_GRAPHIC_ITEM_PROPERTIES() {};
|
||||||
|
@ -79,6 +66,20 @@ private:
|
||||||
void onFilledCheckbox( wxCommandEvent& event ) override;
|
void onFilledCheckbox( wxCommandEvent& event ) override;
|
||||||
|
|
||||||
bool Validate() override;
|
bool Validate() override;
|
||||||
|
|
||||||
|
private:
|
||||||
|
PCB_BASE_EDIT_FRAME* m_parent;
|
||||||
|
PCB_SHAPE* m_item;
|
||||||
|
FP_SHAPE* m_fp_item;
|
||||||
|
|
||||||
|
UNIT_BINDER m_startX, m_startY;
|
||||||
|
UNIT_BINDER m_endX, m_endY;
|
||||||
|
UNIT_BINDER m_angle;
|
||||||
|
UNIT_BINDER m_thickness;
|
||||||
|
UNIT_BINDER m_bezierCtrl1X, m_bezierCtrl1Y;
|
||||||
|
UNIT_BINDER m_bezierCtrl2X, m_bezierCtrl2Y;
|
||||||
|
|
||||||
|
bool m_flipStartEnd;
|
||||||
};
|
};
|
||||||
|
|
||||||
DIALOG_GRAPHIC_ITEM_PROPERTIES::DIALOG_GRAPHIC_ITEM_PROPERTIES( PCB_BASE_EDIT_FRAME* aParent,
|
DIALOG_GRAPHIC_ITEM_PROPERTIES::DIALOG_GRAPHIC_ITEM_PROPERTIES( PCB_BASE_EDIT_FRAME* aParent,
|
||||||
|
@ -441,7 +442,7 @@ bool DIALOG_GRAPHIC_ITEM_PROPERTIES::Validate()
|
||||||
double max_offset = std::max( std::abs( center.x ) + radius,
|
double max_offset = std::max( std::abs( center.x ) + radius,
|
||||||
std::abs( center.y ) + radius );
|
std::abs( center.y ) + radius );
|
||||||
|
|
||||||
if( max_offset >= ( std::numeric_limits<VECTOR2I::coord_type>::max() / 2 )
|
if( max_offset >= ( std::numeric_limits<VECTOR2I::coord_type>::max() / 2.0 )
|
||||||
|| center == start || center == end )
|
|| center == start || center == end )
|
||||||
{
|
{
|
||||||
errors.Add( wxString::Format( _( "Invalid Arc with radius %f and angle %f." ),
|
errors.Add( wxString::Format( _( "Invalid Arc with radius %f and angle %f." ),
|
||||||
|
|
|
@ -392,6 +392,8 @@ bool test::DRC_TEST_PROVIDER_DIFF_PAIR_COUPLING::Run()
|
||||||
int length = dp.coupledN.Length();
|
int length = dp.coupledN.Length();
|
||||||
int gap = dp.coupledN.Distance( dp.coupledP );
|
int gap = dp.coupledN.Distance( dp.coupledP );
|
||||||
|
|
||||||
|
wxCHECK2( dp.parentN && dp.parentP, continue );
|
||||||
|
|
||||||
gap -= dp.parentN->GetWidth() / 2;
|
gap -= dp.parentN->GetWidth() / 2;
|
||||||
gap -= dp.parentP->GetWidth() / 2;
|
gap -= dp.parentP->GetWidth() / 2;
|
||||||
|
|
||||||
|
|
|
@ -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) 1992-2021 KiCad Developers, see AUTHORS.txt for contributors.
|
* Copyright (C) 1992-2023 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
|
||||||
|
@ -33,12 +33,11 @@
|
||||||
|
|
||||||
// Constructor and destructor
|
// Constructor and destructor
|
||||||
NETINFO_LIST::NETINFO_LIST( BOARD* aParent ) :
|
NETINFO_LIST::NETINFO_LIST( BOARD* aParent ) :
|
||||||
m_parent( aParent )
|
m_parent( aParent ),
|
||||||
|
m_newNetCode( 0 )
|
||||||
{
|
{
|
||||||
// Make sure that the unconnected net has number 0
|
// Make sure that the unconnected net has number 0
|
||||||
AppendNet( new NETINFO_ITEM( aParent, wxEmptyString, 0 ) );
|
AppendNet( new NETINFO_ITEM( aParent, wxEmptyString, 0 ) );
|
||||||
|
|
||||||
m_newNetCode = 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -51,6 +50,7 @@ NETINFO_LIST::~NETINFO_LIST()
|
||||||
void NETINFO_LIST::clear()
|
void NETINFO_LIST::clear()
|
||||||
{
|
{
|
||||||
NETNAMES_MAP::iterator it, itEnd;
|
NETNAMES_MAP::iterator it, itEnd;
|
||||||
|
|
||||||
for( it = m_netNames.begin(), itEnd = m_netNames.end(); it != itEnd; ++it )
|
for( it = m_netNames.begin(), itEnd = m_netNames.end(); it != itEnd; ++it )
|
||||||
delete it->second;
|
delete it->second;
|
||||||
|
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
*
|
*
|
||||||
* Copyright (C) 2007, 2008 Lubo Racko <developer@lura.sk>
|
* Copyright (C) 2007, 2008 Lubo Racko <developer@lura.sk>
|
||||||
* Copyright (C) 2007, 2008, 2012-2013 Alexander Lunev <al.lunev@yahoo.com>
|
* Copyright (C) 2007, 2008, 2012-2013 Alexander Lunev <al.lunev@yahoo.com>
|
||||||
* Copyright (C) 2012-2022 KiCad Developers, see AUTHORS.txt for contributors.
|
* Copyright (C) 2012-2023 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
|
||||||
|
@ -315,7 +315,6 @@ void PCB_FOOTPRINT::DoLayerContentsObjects( XNODE* aNode, PCB_FOOTPRINT* aFootpr
|
||||||
if( m_callbacks->GetLayerType( PCadLayer ) == LAYER_TYPE_PLANE )
|
if( m_callbacks->GetLayerType( PCadLayer ) == LAYER_TYPE_PLANE )
|
||||||
{
|
{
|
||||||
plane_layer_polygon = new VERTICES_ARRAY;
|
plane_layer_polygon = new VERTICES_ARRAY;
|
||||||
wxASSERT( plane_layer );
|
|
||||||
plane_layer->FormPolygon( lNode, plane_layer_polygon, aDefaultMeasurementUnit,
|
plane_layer->FormPolygon( lNode, plane_layer_polygon, aDefaultMeasurementUnit,
|
||||||
aActualConversion );
|
aActualConversion );
|
||||||
plane_layer->m_cutouts.Add( plane_layer_polygon );
|
plane_layer->m_cutouts.Add( plane_layer_polygon );
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
* KiRouter - a push-and-(sometimes-)shove PCB router
|
* KiRouter - a push-and-(sometimes-)shove PCB router
|
||||||
*
|
*
|
||||||
* Copyright (C) 2013-2014 CERN
|
* Copyright (C) 2013-2014 CERN
|
||||||
* Copyright (C) 2016-2021 KiCad Developers, see AUTHORS.txt for contributors.
|
* Copyright (C) 2016-2023 KiCad Developers, see AUTHORS.txt for contributors.
|
||||||
* Author: Tomasz Wlostowski <tomasz.wlostowski@cern.ch>
|
* Author: Tomasz Wlostowski <tomasz.wlostowski@cern.ch>
|
||||||
*
|
*
|
||||||
* This program is free software: you can redistribute it and/or modify it
|
* This program is free software: you can redistribute it and/or modify it
|
||||||
|
@ -61,13 +61,14 @@ void LOGGER::Save( const std::string& aFilename )
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void LOGGER::Log( LOGGER::EVENT_TYPE evt, const VECTOR2I& pos, const ITEM* item, const SIZES_SETTINGS* sizes )
|
void LOGGER::Log( LOGGER::EVENT_TYPE evt, const VECTOR2I& pos, const ITEM* item,
|
||||||
|
const SIZES_SETTINGS* sizes )
|
||||||
{
|
{
|
||||||
LOGGER::EVENT_ENTRY ent;
|
LOGGER::EVENT_ENTRY ent;
|
||||||
|
|
||||||
ent.type = evt;
|
ent.type = evt;
|
||||||
ent.p = pos;
|
ent.p = pos;
|
||||||
ent.uuid = KIID(0);
|
ent.uuid = KIID( 0 );
|
||||||
|
|
||||||
if( sizes )
|
if( sizes )
|
||||||
{
|
{
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
* KiRouter - a push-and-(sometimes-)shove PCB router
|
* KiRouter - a push-and-(sometimes-)shove PCB router
|
||||||
*
|
*
|
||||||
* Copyright (C) 2013-2014 CERN
|
* Copyright (C) 2013-2014 CERN
|
||||||
* Copyright (C) 2016-2021 KiCad Developers, see AUTHORS.txt for contributors.
|
* Copyright (C) 2016-2023 KiCad Developers, see AUTHORS.txt for contributors.
|
||||||
* Author: Tomasz Wlostowski <tomasz.wlostowski@cern.ch>
|
* Author: Tomasz Wlostowski <tomasz.wlostowski@cern.ch>
|
||||||
*
|
*
|
||||||
* This program is free software: you can redistribute it and/or modify it
|
* This program is free software: you can redistribute it and/or modify it
|
||||||
|
@ -65,7 +65,8 @@ public:
|
||||||
|
|
||||||
void Save( const std::string& aFilename );
|
void Save( const std::string& aFilename );
|
||||||
void Clear();
|
void Clear();
|
||||||
void Log( EVENT_TYPE evt, const VECTOR2I& pos = VECTOR2I(), const ITEM* item = nullptr, const SIZES_SETTINGS* sizes = nullptr );
|
void Log( EVENT_TYPE evt, const VECTOR2I& pos = VECTOR2I(), const ITEM* item = nullptr,
|
||||||
|
const SIZES_SETTINGS* sizes = nullptr );
|
||||||
|
|
||||||
const std::vector<EVENT_ENTRY>& GetEvents()
|
const std::vector<EVENT_ENTRY>& GetEvents()
|
||||||
{
|
{
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
* KiRouter - a push-and-(sometimes-)shove PCB router
|
* KiRouter - a push-and-(sometimes-)shove PCB router
|
||||||
*
|
*
|
||||||
* Copyright (C) 2013-2019 CERN
|
* Copyright (C) 2013-2019 CERN
|
||||||
* Copyright (C) 2016-2022 KiCad Developers, see AUTHORS.txt for contributors.
|
* Copyright (C) 2016-2023 KiCad Developers, see AUTHORS.txt for contributors.
|
||||||
*
|
*
|
||||||
* @author Tomasz Wlostowski <tomasz.wlostowski@cern.ch>
|
* @author Tomasz Wlostowski <tomasz.wlostowski@cern.ch>
|
||||||
*
|
*
|
||||||
|
@ -275,7 +275,8 @@ int NODE::QueryColliding( const ITEM* aItem, NODE::OBSTACLES& aObstacles, int aK
|
||||||
if( aItem->IsVirtual() )
|
if( aItem->IsVirtual() )
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
DEFAULT_OBSTACLE_VISITOR visitor( aObstacles, aItem, aKindMask, aDifferentNetsOnly, aOverrideClearance );
|
DEFAULT_OBSTACLE_VISITOR visitor( aObstacles, aItem, aKindMask, aDifferentNetsOnly,
|
||||||
|
aOverrideClearance );
|
||||||
|
|
||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
assert( allocNodes.find( this ) != allocNodes.end() );
|
assert( allocNodes.find( this ) != allocNodes.end() );
|
||||||
|
@ -324,6 +325,7 @@ NODE::OPT_OBSTACLE NODE::NearestObstacle( const LINE* aLine, int aKindMask,
|
||||||
OBSTACLE nearest;
|
OBSTACLE nearest;
|
||||||
nearest.m_item = nullptr;
|
nearest.m_item = nullptr;
|
||||||
nearest.m_distFirst = INT_MAX;
|
nearest.m_distFirst = INT_MAX;
|
||||||
|
nearest.m_maxFanoutWidth = 0;
|
||||||
|
|
||||||
auto updateNearest =
|
auto updateNearest =
|
||||||
[&]( const SHAPE_LINE_CHAIN::INTERSECTION& pt, ITEM* obstacle,
|
[&]( const SHAPE_LINE_CHAIN::INTERSECTION& pt, ITEM* obstacle,
|
||||||
|
@ -348,7 +350,6 @@ NODE::OPT_OBSTACLE NODE::NearestObstacle( const LINE* aLine, int aKindMask,
|
||||||
std::vector<SHAPE_LINE_CHAIN::INTERSECTION> intersectingPts;
|
std::vector<SHAPE_LINE_CHAIN::INTERSECTION> intersectingPts;
|
||||||
int layer = aLine->Layer();
|
int layer = aLine->Layer();
|
||||||
|
|
||||||
|
|
||||||
for( const OBSTACLE& obstacle : obstacleList )
|
for( const OBSTACLE& obstacle : obstacleList )
|
||||||
{
|
{
|
||||||
if( aRestrictedSet && aRestrictedSet->find( obstacle.m_item ) == aRestrictedSet->end() )
|
if( aRestrictedSet && aRestrictedSet->find( obstacle.m_item ) == aRestrictedSet->end() )
|
||||||
|
@ -720,9 +721,10 @@ void NODE::Add( std::unique_ptr< ITEM > aItem, bool aAllowRedundant )
|
||||||
|
|
||||||
case ITEM::LINE_T:
|
case ITEM::LINE_T:
|
||||||
{
|
{
|
||||||
//fixme(twl): I don't like unique_ptr in this methods as the router has its own garbage collecting
|
// fixme(twl): I don't like unique_ptr in this methods as the router has its own garbage
|
||||||
//mechanism. This particular case is used exclusively in ROUTER::GetUpdatedItems() for
|
// collecting mechanism. This particular case is used exclusively in
|
||||||
//dumping debug logs. Please don't call Add ( up<LINE> ) otherwise, dragons live here.
|
// ROUTER::GetUpdatedItems() for dumping debug logs. Please don't call Add ( up<LINE> )
|
||||||
|
// otherwise, dragons live here.
|
||||||
LINE *l = static_cast<LINE*>( aItem.get() );
|
LINE *l = static_cast<LINE*>( aItem.get() );
|
||||||
Add( *l );
|
Add( *l );
|
||||||
break;
|
break;
|
||||||
|
@ -1072,7 +1074,7 @@ const LINE NODE::AssembleLine( LINKED_ITEM* aSeg, int* aOriginSegmentIndex,
|
||||||
// Remove duplicate verts, but do NOT remove colinear segments here!
|
// Remove duplicate verts, but do NOT remove colinear segments here!
|
||||||
pl.Line().Simplify( false );
|
pl.Line().Simplify( false );
|
||||||
|
|
||||||
// TODO: maintain actual segment index under simplifcation system
|
// TODO: maintain actual segment index under simplification system
|
||||||
if( aOriginSegmentIndex && *aOriginSegmentIndex >= pl.SegmentCount() )
|
if( aOriginSegmentIndex && *aOriginSegmentIndex >= pl.SegmentCount() )
|
||||||
*aOriginSegmentIndex = pl.SegmentCount() - 1;
|
*aOriginSegmentIndex = pl.SegmentCount() - 1;
|
||||||
|
|
||||||
|
@ -1275,8 +1277,7 @@ JOINT& NODE::touchJoint( const VECTOR2I& aPos, const LAYER_RANGE& aLayers, int a
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
} while( merged );
|
||||||
while( merged );
|
|
||||||
|
|
||||||
return m_joints.insert( TagJointPair( tag, jt ) )->second;
|
return m_joints.insert( TagJointPair( tag, jt ) )->second;
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
* KiRouter - a push-and-(sometimes-)shove PCB router
|
* KiRouter - a push-and-(sometimes-)shove PCB router
|
||||||
*
|
*
|
||||||
* Copyright (C) 2013-2014 CERN
|
* Copyright (C) 2013-2014 CERN
|
||||||
* Copyright (C) 2016-2021 KiCad Developers, see AUTHORS.txt for contributors.
|
* Copyright (C) 2016-2023 KiCad Developers, see AUTHORS.txt for contributors.
|
||||||
* Author: Tomasz Wlostowski <tomasz.wlostowski@cern.ch>
|
* Author: Tomasz Wlostowski <tomasz.wlostowski@cern.ch>
|
||||||
*
|
*
|
||||||
* This program is free software: you can redistribute it and/or modify it
|
* This program is free software: you can redistribute it and/or modify it
|
||||||
|
@ -142,7 +142,9 @@ const ITEM_SET ROUTER::QueryHoverItems( const VECTOR2I& aP, bool aUseClearance )
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
{
|
||||||
return m_placer->CurrentNode()->HitTest( aP );
|
return m_placer->CurrentNode()->HitTest( aP );
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -776,7 +778,7 @@ bool ROUTER::movePlacing( const VECTOR2I& aP, ITEM* aEndItem )
|
||||||
void ROUTER::GetUpdatedItems( std::vector<PNS::ITEM*>& aRemoved, std::vector<PNS::ITEM*>& aAdded,
|
void ROUTER::GetUpdatedItems( std::vector<PNS::ITEM*>& aRemoved, std::vector<PNS::ITEM*>& aAdded,
|
||||||
std::vector<PNS::ITEM*>& aHeads )
|
std::vector<PNS::ITEM*>& aHeads )
|
||||||
{
|
{
|
||||||
NODE *node;
|
NODE *node = nullptr;
|
||||||
ITEM_SET current;
|
ITEM_SET current;
|
||||||
|
|
||||||
if( m_state == ROUTE_TRACK )
|
if( m_state == ROUTE_TRACK )
|
||||||
|
@ -790,6 +792,11 @@ void ROUTER::GetUpdatedItems( std::vector<PNS::ITEM*>& aRemoved, std::vector<PNS
|
||||||
current = m_dragger->Traces();
|
current = m_dragger->Traces();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// There probably should be a debugging assertion and possibly a PNS_LOGGER call here but
|
||||||
|
// I'm not sure how to be proceed WLS.
|
||||||
|
if( !node )
|
||||||
|
return;
|
||||||
|
|
||||||
node->GetUpdatedItems( aRemoved, aAdded );
|
node->GetUpdatedItems( aRemoved, aAdded );
|
||||||
|
|
||||||
for( auto item : current.CItems() )
|
for( auto item : current.CItems() )
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
* KiRouter - a push-and-(sometimes-)shove PCB router
|
* KiRouter - a push-and-(sometimes-)shove PCB router
|
||||||
*
|
*
|
||||||
* Copyright (C) 2014 CERN
|
* Copyright (C) 2014 CERN
|
||||||
* Copyright (C) 2016 KiCad Developers, see AUTHORS.txt for contributors.
|
* Copyright (C) 2016, 2023 KiCad Developers, see AUTHORS.txt for contributors.
|
||||||
* Author: Tomasz Wlostowski <tomasz.wlostowski@cern.ch>
|
* Author: Tomasz Wlostowski <tomasz.wlostowski@cern.ch>
|
||||||
*
|
*
|
||||||
* This program is free software: you can redistribute it and/or modify it
|
* This program is free software: you can redistribute it and/or modify it
|
||||||
|
@ -49,7 +49,8 @@ public:
|
||||||
m_diffPairGap( 180000 ),
|
m_diffPairGap( 180000 ),
|
||||||
m_diffPairViaGap( 180000 ),
|
m_diffPairViaGap( 180000 ),
|
||||||
m_diffPairViaGapSameAsTraceGap( true ),
|
m_diffPairViaGapSameAsTraceGap( true ),
|
||||||
m_holeToHole( 0 )
|
m_holeToHole( 0 ),
|
||||||
|
m_diffPairHoleToHole( 0 )
|
||||||
{};
|
{};
|
||||||
|
|
||||||
~SIZES_SETTINGS() {};
|
~SIZES_SETTINGS() {};
|
||||||
|
@ -84,7 +85,11 @@ public:
|
||||||
|
|
||||||
void SetDiffPairWidth( int aWidth ) { m_diffPairWidth = aWidth; }
|
void SetDiffPairWidth( int aWidth ) { m_diffPairWidth = aWidth; }
|
||||||
void SetDiffPairGap( int aGap ) { m_diffPairGap = aGap; }
|
void SetDiffPairGap( int aGap ) { m_diffPairGap = aGap; }
|
||||||
void SetDiffPairViaGapSameAsTraceGap ( bool aEnable ) { m_diffPairViaGapSameAsTraceGap = aEnable; }
|
void SetDiffPairViaGapSameAsTraceGap ( bool aEnable )
|
||||||
|
{
|
||||||
|
m_diffPairViaGapSameAsTraceGap = aEnable;
|
||||||
|
}
|
||||||
|
|
||||||
void SetDiffPairViaGap( int aGap ) { m_diffPairViaGap = aGap; }
|
void SetDiffPairViaGap( int aGap ) { m_diffPairViaGap = aGap; }
|
||||||
|
|
||||||
int ViaDiameter() const { return m_viaDiameter; }
|
int ViaDiameter() const { return m_viaDiameter; }
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
* KiRouter - a push-and-(sometimes-)shove PCB router
|
* KiRouter - a push-and-(sometimes-)shove PCB router
|
||||||
*
|
*
|
||||||
* Copyright (C) 2013-2014 CERN
|
* Copyright (C) 2013-2014 CERN
|
||||||
* Copyright (C) 2016-2021 KiCad Developers, see AUTHORS.txt for contributors.
|
* Copyright (C) 2016-2023 KiCad Developers, see AUTHORS.txt for contributors.
|
||||||
* Author: Tomasz Wlostowski <tomasz.wlostowski@cern.ch>
|
* Author: Tomasz Wlostowski <tomasz.wlostowski@cern.ch>
|
||||||
*
|
*
|
||||||
* This program is free software: you can redistribute it and/or modify it
|
* This program is free software: you can redistribute it and/or modify it
|
||||||
|
@ -195,6 +195,8 @@ const BOX2I ROUTER_PREVIEW_ITEM::ViewBBox() const
|
||||||
|
|
||||||
void ROUTER_PREVIEW_ITEM::drawLineChain( const SHAPE_LINE_CHAIN_BASE* aL, KIGFX::GAL* gal ) const
|
void ROUTER_PREVIEW_ITEM::drawLineChain( const SHAPE_LINE_CHAIN_BASE* aL, KIGFX::GAL* gal ) const
|
||||||
{
|
{
|
||||||
|
wxCHECK( aL, /* void */ );
|
||||||
|
|
||||||
gal->SetIsFill( false );
|
gal->SetIsFill( false );
|
||||||
|
|
||||||
for( int s = 0; s < aL->GetSegmentCount(); s++ )
|
for( int s = 0; s < aL->GetSegmentCount(); s++ )
|
||||||
|
@ -211,7 +213,7 @@ void ROUTER_PREVIEW_ITEM::drawLineChain( const SHAPE_LINE_CHAIN_BASE* aL, KIGFX:
|
||||||
gal->DrawArc( arc.GetCenter(), arc.GetRadius(), start_angle, start_angle + angle);
|
gal->DrawArc( arc.GetCenter(), arc.GetRadius(), start_angle, start_angle + angle);
|
||||||
}
|
}
|
||||||
|
|
||||||
if( aL && aL->IsClosed() )
|
if( aL->IsClosed() )
|
||||||
gal->DrawLine( aL->GetSegment( -1 ).B, aL->GetSegment( 0 ).A );
|
gal->DrawLine( aL->GetSegment( -1 ).B, aL->GetSegment( 0 ).A );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -756,7 +756,18 @@ bool PCB_SELECTION_TOOL::selectPoint( const VECTOR2I& aWhere, bool aOnDrag,
|
||||||
|
|
||||||
// Apply some ugly heuristics to avoid disambiguation menus whenever possible
|
// Apply some ugly heuristics to avoid disambiguation menus whenever possible
|
||||||
if( collector.GetCount() > 1 && !m_skip_heuristics )
|
if( collector.GetCount() > 1 && !m_skip_heuristics )
|
||||||
GuessSelectionCandidates( collector, aWhere );
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
GuessSelectionCandidates( collector, aWhere );
|
||||||
|
}
|
||||||
|
catch( const ClipperLib::clipperException& exc )
|
||||||
|
{
|
||||||
|
wxLogWarning( wxS( "Exception \"%s\" occurred attemption to guess selection "
|
||||||
|
"candidates." ), exc.what() );
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// If still more than one item we're going to have to ask the user.
|
// If still more than one item we're going to have to ask the user.
|
||||||
if( collector.GetCount() > 1 )
|
if( collector.GetCount() > 1 )
|
||||||
|
|
Loading…
Reference in New Issue