diff --git a/include/board_design_settings.h b/include/board_design_settings.h index a3547118fc..a4a0acc884 100644 --- a/include/board_design_settings.h +++ b/include/board_design_settings.h @@ -664,6 +664,12 @@ public: int GetLayerClass( PCB_LAYER_ID aLayer ) const; + void SetAuxOrigin( const wxPoint& aOrigin ) { m_auxOrigin = aOrigin; } + const wxPoint& GetAuxOrigin() { return m_auxOrigin; } + + void SetGridOrigin( const wxPoint& aOrigin ) { m_gridOrigin = aOrigin; } + const wxPoint& GetGridOrigin() { return m_gridOrigin; } + private: void initFromOther( const BOARD_DESIGN_SETTINGS& aOther ); @@ -749,9 +755,6 @@ public: int m_DimensionExtensionOffset; // Miscellaneous - wxPoint m_AuxOrigin; ///< origin for plot exports - wxPoint m_GridOrigin; ///< origin for grid offsets - std::unique_ptr m_Pad_Master; // A dummy pad to store all default parameters // when importing values or creating a new pad @@ -764,6 +767,9 @@ public: bool m_UseHeightForLengthCalcs; private: + wxPoint m_auxOrigin; ///< origin for plot exports + wxPoint m_gridOrigin; ///< origin for grid offsets + // Indices into the trackWidth, viaSizes and diffPairDimensions lists. // The 0 index is always the current netclass value(s) unsigned m_trackWidthIndex; diff --git a/pcbnew/board_design_settings.cpp b/pcbnew/board_design_settings.cpp index 8f000bf317..fccf4ae0c3 100644 --- a/pcbnew/board_design_settings.cpp +++ b/pcbnew/board_design_settings.cpp @@ -725,8 +725,8 @@ void BOARD_DESIGN_SETTINGS::initFromOther( const BOARD_DESIGN_SETTINGS& aOther ) m_DimensionArrowLength = aOther.m_DimensionArrowLength; m_DimensionExtensionOffset = aOther.m_DimensionExtensionOffset; - m_AuxOrigin = aOther.m_AuxOrigin; - m_GridOrigin = aOther.m_GridOrigin; + m_auxOrigin = aOther.m_auxOrigin; + m_gridOrigin = aOther.m_gridOrigin; m_HasStackup = aOther.m_HasStackup; m_UseHeightForLengthCalcs= aOther.m_UseHeightForLengthCalcs; diff --git a/pcbnew/dialogs/dialog_export_svg.cpp b/pcbnew/dialogs/dialog_export_svg.cpp index 35f5e57693..2b1be7581c 100644 --- a/pcbnew/dialogs/dialog_export_svg.cpp +++ b/pcbnew/dialogs/dialog_export_svg.cpp @@ -322,7 +322,7 @@ bool DIALOG_EXPORT_SVG::CreateSVGFile( const wxString& aFullFileName ) plot_opts.SetFormat( PLOT_FORMAT::SVG ); PAGE_INFO savedPageInfo = m_board->GetPageSettings(); - wxPoint savedAuxOrigin = m_board->GetDesignSettings().m_AuxOrigin; + wxPoint savedAuxOrigin = m_board->GetDesignSettings().GetAuxOrigin(); if( m_rbSvgPageSizeOpt->GetSelection() == 2 ) // Page is board boundary size { @@ -334,7 +334,7 @@ bool DIALOG_EXPORT_SVG::CreateSVGFile( const wxString& aFullFileName ) m_board->SetPageSettings( currpageInfo ); plot_opts.SetUseAuxOrigin( true ); wxPoint origin = bbox.GetOrigin(); - m_board->GetDesignSettings().m_AuxOrigin = origin; + m_board->GetDesignSettings().SetAuxOrigin( origin ); } SETTINGS_MANAGER& mgr = Pgm().GetSettingsManager(); @@ -360,7 +360,7 @@ bool DIALOG_EXPORT_SVG::CreateSVGFile( const wxString& aFullFileName ) delete plotter; // reset to the values saved earlier - m_board->GetDesignSettings().m_AuxOrigin = savedAuxOrigin; + m_board->GetDesignSettings().SetAuxOrigin( savedAuxOrigin ); m_board->SetPageSettings( savedPageInfo ); return true; diff --git a/pcbnew/dialogs/dialog_gendrill.cpp b/pcbnew/dialogs/dialog_gendrill.cpp index 78eceace42..85c4871c44 100644 --- a/pcbnew/dialogs/dialog_gendrill.cpp +++ b/pcbnew/dialogs/dialog_gendrill.cpp @@ -345,7 +345,7 @@ void DIALOG_GENDRILL::UpdateDrillParams() if( m_Choice_Drill_Offset->GetSelection() == 0 ) m_DrillFileOffset = wxPoint( 0, 0 ); else - m_DrillFileOffset = m_board->GetDesignSettings().m_AuxOrigin; + m_DrillFileOffset = m_board->GetDesignSettings().GetAuxOrigin(); if( m_UnitDrillIsInch ) m_Precision = precisionListForInches; diff --git a/pcbnew/dialogs/dialog_position_relative.cpp b/pcbnew/dialogs/dialog_position_relative.cpp index 7b1efdbb17..ee8a1a4e70 100644 --- a/pcbnew/dialogs/dialog_position_relative.cpp +++ b/pcbnew/dialogs/dialog_position_relative.cpp @@ -236,7 +236,7 @@ void DIALOG_POSITION_RELATIVE::OnUseGridOriginClick( wxCommandEvent& event ) { BOARD* board = (BOARD*) m_toolMgr->GetModel(); - m_anchor_position = board->GetDesignSettings().m_GridOrigin; + m_anchor_position = board->GetDesignSettings().GetGridOrigin(); m_referenceInfo->SetLabel( _( "Reference location: grid origin" ) ); } diff --git a/pcbnew/exporters/export_d356.cpp b/pcbnew/exporters/export_d356.cpp index b20e24b8af..9d3748a3ed 100644 --- a/pcbnew/exporters/export_d356.cpp +++ b/pcbnew/exporters/export_d356.cpp @@ -95,7 +95,7 @@ static int iu_to_d356(int iu, int clamp) /* Extract the D356 record from the footprints (pads) */ static void build_pad_testpoints( BOARD *aPcb, std::vector & aRecords ) { - wxPoint origin = aPcb->GetDesignSettings().m_AuxOrigin; + wxPoint origin = aPcb->GetDesignSettings().GetAuxOrigin(); for( FOOTPRINT* footprint : aPcb->Footprints() ) { @@ -168,7 +168,7 @@ static int via_access_code( BOARD *aPcb, int top_layer, int bottom_layer ) /* Extract the D356 record from the vias */ static void build_via_testpoints( BOARD *aPcb, std::vector & aRecords ) { - wxPoint origin = aPcb->GetDesignSettings().m_AuxOrigin; + wxPoint origin = aPcb->GetDesignSettings().GetAuxOrigin(); // Enumerate all the track segments and keep the vias for( auto track : aPcb->Tracks() ) diff --git a/pcbnew/exporters/export_footprints_placefile.cpp b/pcbnew/exporters/export_footprints_placefile.cpp index 4468d3e680..9cdb8d1441 100644 --- a/pcbnew/exporters/export_footprints_placefile.cpp +++ b/pcbnew/exporters/export_footprints_placefile.cpp @@ -95,7 +95,7 @@ PLACE_FILE_EXPORTER::PLACE_FILE_EXPORTER( BOARD* aBoard, bool aUnitsMM, bool aOn m_formatCSV = aFormatCSV; if( aUseAuxOrigin ) - m_place_Offset = m_board->GetDesignSettings().m_AuxOrigin; + m_place_Offset = m_board->GetDesignSettings().GetAuxOrigin(); else m_place_Offset = wxPoint( 0, 0 ); } diff --git a/pcbnew/exporters/export_gencad.cpp b/pcbnew/exporters/export_gencad.cpp index 0dd2ea9b99..028a716ccb 100644 --- a/pcbnew/exporters/export_gencad.cpp +++ b/pcbnew/exporters/export_gencad.cpp @@ -268,7 +268,7 @@ void PCB_EDIT_FRAME::ExportToGenCAD( wxCommandEvent& aEvent ) GetBoard()->ComputeBoundingBox(); // Save the auxiliary origin for the rest of the footprint - wxPoint auxOrigin = m_pcb->GetDesignSettings().m_AuxOrigin; + wxPoint auxOrigin = m_pcb->GetDesignSettings().GetAuxOrigin(); GencadOffsetX = optionsDialog.GetOption( USE_AUX_ORIGIN ) ? auxOrigin.x : 0; GencadOffsetY = optionsDialog.GetOption( USE_AUX_ORIGIN ) ? auxOrigin.y : 0; diff --git a/pcbnew/exporters/gerber_placefile_writer.cpp b/pcbnew/exporters/gerber_placefile_writer.cpp index c997aaf0f1..72e32d4200 100644 --- a/pcbnew/exporters/gerber_placefile_writer.cpp +++ b/pcbnew/exporters/gerber_placefile_writer.cpp @@ -59,7 +59,7 @@ int PLACEFILE_GERBER_WRITER::CreatePlaceFile( wxString& aFullFilename, PCB_LAYER PCB_PLOT_PARAMS plotOpts = m_pcb->GetPlotOptions(); if( plotOpts.GetUseAuxOrigin() ) - m_offset = m_pcb->GetDesignSettings().m_AuxOrigin; + m_offset = m_pcb->GetDesignSettings().GetAuxOrigin(); // Collect footprints on the right layer std::vector fp_list; diff --git a/pcbnew/pcb_base_edit_frame.cpp b/pcbnew/pcb_base_edit_frame.cpp index aba582afbb..77784fdbf5 100644 --- a/pcbnew/pcb_base_edit_frame.cpp +++ b/pcbnew/pcb_base_edit_frame.cpp @@ -152,7 +152,7 @@ void PCB_BASE_EDIT_FRAME::SetBoard( BOARD* aBoard ) PCB_BASE_FRAME::SetBoard( aBoard ); - GetCanvas()->GetGAL()->SetGridOrigin( VECTOR2D( aBoard->GetDesignSettings().m_GridOrigin ) ); + GetCanvas()->GetGAL()->SetGridOrigin( VECTOR2D( aBoard->GetDesignSettings().GetGridOrigin() ) ); if( new_board ) { diff --git a/pcbnew/pcb_base_frame.cpp b/pcbnew/pcb_base_frame.cpp index 91270abec7..46e2ca9628 100644 --- a/pcbnew/pcb_base_frame.cpp +++ b/pcbnew/pcb_base_frame.cpp @@ -380,19 +380,19 @@ const wxSize PCB_BASE_FRAME::GetPageSizeIU() const const wxPoint& PCB_BASE_FRAME::GetGridOrigin() const { - return m_pcb->GetDesignSettings().m_GridOrigin; + return m_pcb->GetDesignSettings().GetGridOrigin(); } void PCB_BASE_FRAME::SetGridOrigin( const wxPoint& aPoint ) { - m_pcb->GetDesignSettings().m_GridOrigin = aPoint; + m_pcb->GetDesignSettings().SetGridOrigin( aPoint ); } const wxPoint& PCB_BASE_FRAME::GetAuxOrigin() const { - return m_pcb->GetDesignSettings().m_AuxOrigin; + return m_pcb->GetDesignSettings().GetAuxOrigin(); } diff --git a/pcbnew/pcbplot.cpp b/pcbnew/pcbplot.cpp index c6c4733d48..a377d60478 100644 --- a/pcbnew/pcbplot.cpp +++ b/pcbnew/pcbplot.cpp @@ -340,7 +340,7 @@ void AddGerberX2Header( PLOTTER* aPlotter, const BOARD* aBoard, bool aUseX1Compa // Please, if absolute Pcbnew coordinates, one day, are set by user, change the way // the key is built to ensure file only using the *same* axis have the same key. wxString registration_id = "Original"; - wxPoint auxOrigin = aBoard->GetDesignSettings().m_AuxOrigin; + wxPoint auxOrigin = aBoard->GetDesignSettings().GetAuxOrigin(); if( aBoard->GetPlotOptions().GetUseAuxOrigin() && auxOrigin.x && auxOrigin.y ) registration_id.Printf( "PX%xPY%x", auxOrigin.x, auxOrigin.y ); diff --git a/pcbnew/plot_board_layers.cpp b/pcbnew/plot_board_layers.cpp index 5fa4f8a394..50f8a4f454 100644 --- a/pcbnew/plot_board_layers.cpp +++ b/pcbnew/plot_board_layers.cpp @@ -1067,7 +1067,7 @@ static void initializePlotter( PLOTTER* aPlotter, const BOARD* aBoard, else { if( aPlotOpts->GetUseAuxOrigin() ) - offset = aBoard->GetDesignSettings().m_AuxOrigin; + offset = aBoard->GetDesignSettings().GetAuxOrigin(); } aPlotter->SetPageSettings( *sheet_info ); diff --git a/pcbnew/plugins/altium/altium_pcb.cpp b/pcbnew/plugins/altium/altium_pcb.cpp index e5b8954a8e..f347d52d32 100644 --- a/pcbnew/plugins/altium/altium_pcb.cpp +++ b/pcbnew/plugins/altium/altium_pcb.cpp @@ -618,8 +618,10 @@ void ALTIUM_PCB::Parse( const CFB::CompoundFileReader& aReader, wxPoint movementVector( desired_x - bbbox.GetX(), desired_y - bbbox.GetY() ); m_board->Move( movementVector ); - m_board->GetDesignSettings().m_AuxOrigin += movementVector; - m_board->GetDesignSettings().m_GridOrigin += movementVector; + + BOARD_DESIGN_SETTINGS& bds = m_board->GetDesignSettings(); + bds.SetAuxOrigin( bds.GetAuxOrigin() + movementVector ); + bds.SetGridOrigin( bds.GetGridOrigin() + movementVector ); m_board->SetModified(); } @@ -710,8 +712,8 @@ void ALTIUM_PCB::ParseBoard6Data( const CFB::CompoundFileReader& aReader, THROW_IO_ERROR( "Board6 stream is not fully parsed" ); } - m_board->GetDesignSettings().m_AuxOrigin = elem.sheetpos; - m_board->GetDesignSettings().m_GridOrigin = elem.sheetpos; + m_board->GetDesignSettings().SetAuxOrigin( elem.sheetpos ); + m_board->GetDesignSettings().SetGridOrigin( elem.sheetpos ); // read layercount from stackup, because LAYERSETSCOUNT is not always correct?! size_t layercount = 0; diff --git a/pcbnew/plugins/kicad/kicad_plugin.cpp b/pcbnew/plugins/kicad/kicad_plugin.cpp index 5d47a074e3..478b69ee0a 100644 --- a/pcbnew/plugins/kicad/kicad_plugin.cpp +++ b/pcbnew/plugins/kicad/kicad_plugin.cpp @@ -499,15 +499,23 @@ void PCB_IO::formatSetup( const BOARD* aBoard, int aNestLevel ) const m_out->Print( aNestLevel+1, "(pad_to_paste_clearance_ratio %s)\n", Double2Str( dsnSettings.m_SolderPasteMarginRatio ).c_str() ); - if( dsnSettings.m_AuxOrigin != wxPoint( 0, 0 ) ) - m_out->Print( aNestLevel+1, "(aux_axis_origin %s %s)\n", - FormatInternalUnits( dsnSettings.m_AuxOrigin.x ).c_str(), - FormatInternalUnits( dsnSettings.m_AuxOrigin.y ).c_str() ); + wxPoint origin = dsnSettings.GetAuxOrigin(); - if( dsnSettings.m_GridOrigin != wxPoint( 0, 0 ) ) + if( origin != wxPoint( 0, 0 ) ) + { + m_out->Print( aNestLevel+1, "(aux_axis_origin %s %s)\n", + FormatInternalUnits( origin.x ).c_str(), + FormatInternalUnits( origin.y ).c_str() ); + } + + origin = dsnSettings.GetGridOrigin(); + + if( origin != wxPoint( 0, 0 ) ) + { m_out->Print( aNestLevel+1, "(grid_origin %s %s)\n", - FormatInternalUnits( dsnSettings.m_GridOrigin.x ).c_str(), - FormatInternalUnits( dsnSettings.m_GridOrigin.y ).c_str() ); + FormatInternalUnits( origin.x ).c_str(), + FormatInternalUnits( origin.y ).c_str() ); + } aBoard->GetPlotOptions().Format( m_out, aNestLevel+1 ); diff --git a/pcbnew/plugins/kicad/pcb_parser.cpp b/pcbnew/plugins/kicad/pcb_parser.cpp index d0d4846297..10a90ad47d 100644 --- a/pcbnew/plugins/kicad/pcb_parser.cpp +++ b/pcbnew/plugins/kicad/pcb_parser.cpp @@ -2047,7 +2047,7 @@ void PCB_PARSER::parseSetup() { int x = parseBoardUnits( "auxiliary origin X" ); int y = parseBoardUnits( "auxiliary origin Y" ); - designSettings.m_AuxOrigin = wxPoint( x, y ); + designSettings.SetAuxOrigin( wxPoint( x, y ) ); // Aux origin still stored in board for the moment //m_board->m_LegacyDesignSettingsLoaded = true; @@ -2059,7 +2059,7 @@ void PCB_PARSER::parseSetup() { int x = parseBoardUnits( "grid origin X" ); int y = parseBoardUnits( "grid origin Y" ); - designSettings.m_GridOrigin = wxPoint( x, y ); + designSettings.SetGridOrigin( wxPoint( x, y ) ); // Grid origin still stored in board for the moment //m_board->m_LegacyDesignSettingsLoaded = true; NeedRIGHT(); diff --git a/pcbnew/plugins/legacy/legacy_plugin.cpp b/pcbnew/plugins/legacy/legacy_plugin.cpp index 129cb8797f..83edd62921 100644 --- a/pcbnew/plugins/legacy/legacy_plugin.cpp +++ b/pcbnew/plugins/legacy/legacy_plugin.cpp @@ -878,7 +878,7 @@ void LEGACY_PLUGIN::loadSETUP() BIU gx = biuParse( line + SZ( "AuxiliaryAxisOrg" ), &data ); BIU gy = biuParse( data ); - bds.m_AuxOrigin = wxPoint( gx, gy ); + bds.SetAuxOrigin( wxPoint( gx, gy ) ); } else if( TESTSUBSTR( "Layer[" ) ) { @@ -1071,7 +1071,7 @@ void LEGACY_PLUGIN::loadSETUP() BIU x = biuParse( line + SZ( "GridOrigin" ), &data ); BIU y = biuParse( data ); - bds.m_GridOrigin = wxPoint( x, y ); + bds.SetGridOrigin( wxPoint( x, y ) ); } else if( TESTLINE( "VisibleElements" ) ) { diff --git a/pcbnew/tools/board_editor_control.cpp b/pcbnew/tools/board_editor_control.cpp index 1404dfeecf..a08eff6642 100644 --- a/pcbnew/tools/board_editor_control.cpp +++ b/pcbnew/tools/board_editor_control.cpp @@ -196,7 +196,7 @@ void BOARD_EDITOR_CONTROL::Reset( RESET_REASON aReason ) if( aReason == MODEL_RELOAD || aReason == GAL_SWITCH ) { - m_placeOrigin->SetPosition( getModel()->GetDesignSettings().m_AuxOrigin ); + m_placeOrigin->SetPosition( getModel()->GetDesignSettings().GetAuxOrigin() ); getView()->Remove( m_placeOrigin.get() ); getView()->Add( m_placeOrigin.get() ); } @@ -1491,7 +1491,7 @@ int BOARD_EDITOR_CONTROL::EditFpInFpEditor( const TOOL_EVENT& aEvent ) void BOARD_EDITOR_CONTROL::DoSetDrillOrigin( KIGFX::VIEW* aView, PCB_BASE_FRAME* aFrame, EDA_ITEM* originViewItem, const VECTOR2D& aPosition ) { - aFrame->GetDesignSettings().m_AuxOrigin = (wxPoint) aPosition; + aFrame->GetDesignSettings().SetAuxOrigin( wxPoint( aPosition ) ); originViewItem->SetPosition( (wxPoint) aPosition ); aView->MarkDirty(); aFrame->OnModify(); diff --git a/pcbnew/tools/edit_tool.cpp b/pcbnew/tools/edit_tool.cpp index 3718a3dd6b..89ca82e0ee 100644 --- a/pcbnew/tools/edit_tool.cpp +++ b/pcbnew/tools/edit_tool.cpp @@ -2087,7 +2087,7 @@ int EDIT_TOOL::MoveExact( const TOOL_EVENT& aEvent ) item->Rotate( (wxPoint) frame()->GetScreen()->m_LocalOrigin, rotation ); break; case ROTATE_AROUND_AUX_ORIGIN: - item->Rotate( board()->GetDesignSettings().m_AuxOrigin, rotation ); + item->Rotate( board()->GetDesignSettings().GetAuxOrigin(), rotation ); break; } diff --git a/pcbnew/tools/pcb_control.cpp b/pcbnew/tools/pcb_control.cpp index 99ac4c860a..3a0cd1d523 100644 --- a/pcbnew/tools/pcb_control.cpp +++ b/pcbnew/tools/pcb_control.cpp @@ -88,7 +88,7 @@ void PCB_CONTROL::Reset( RESET_REASON aReason ) if( aReason == MODEL_RELOAD || aReason == GAL_SWITCH ) { - m_gridOrigin->SetPosition( board()->GetDesignSettings().m_GridOrigin ); + m_gridOrigin->SetPosition( board()->GetDesignSettings().GetGridOrigin() ); m_gridOrigin->SetColor( m_frame->GetGridColor() ); getView()->Remove( m_gridOrigin.get() ); getView()->Add( m_gridOrigin.get() ); @@ -500,7 +500,7 @@ int PCB_CONTROL::LayerAlphaDec( const TOOL_EVENT& aEvent ) void PCB_CONTROL::DoSetGridOrigin( KIGFX::VIEW* aView, PCB_BASE_FRAME* aFrame, EDA_ITEM* originViewItem, const VECTOR2D& aPoint ) { - aFrame->GetDesignSettings().m_GridOrigin = (wxPoint) aPoint; + aFrame->GetDesignSettings().SetGridOrigin( wxPoint( aPoint ) ); aView->GetGAL()->SetGridOrigin( aPoint ); originViewItem->SetPosition( (wxPoint) aPoint ); aView->MarkDirty();