From ee6233b8930668876ee10c802bafe312b1094f3c Mon Sep 17 00:00:00 2001 From: jean-pierre charras Date: Wed, 28 Aug 2013 09:23:14 +0200 Subject: [PATCH] Add pl_editor_doc.icns, from Orson. Fix Bug #1217504 (bad look of Module Properties Dialog, 3D fields). Add Dick's workaround in plot_board_layers.cpp to try to avoid crash in solder mask calculations, due to a bug in boost::polygon, in resize function. --- 3d-viewer/3d_aux.cpp | 75 ++--- 3d-viewer/3d_struct.h | 3 +- pagelayout_editor/pl_editor_doc.icns | Bin 0 -> 55232 bytes .../dialog_edit_module_for_BoardEditor.cpp | 16 +- ...ialog_edit_module_for_BoardEditor_base.cpp | 27 ++ ...ialog_edit_module_for_BoardEditor_base.fbp | 282 +++++++++++++++++ .../dialog_edit_module_for_BoardEditor_base.h | 6 + .../dialog_edit_module_for_Modedit.cpp | 15 +- .../dialog_edit_module_for_Modedit_base.cpp | 27 ++ .../dialog_edit_module_for_Modedit_base.fbp | 284 +++++++++++++++++- .../dialog_edit_module_for_Modedit_base.h | 8 +- pcbnew/plot_board_layers.cpp | 7 +- 12 files changed, 669 insertions(+), 81 deletions(-) create mode 100644 pagelayout_editor/pl_editor_doc.icns diff --git a/3d-viewer/3d_aux.cpp b/3d-viewer/3d_aux.cpp index 591e36b5d9..0878053869 100644 --- a/3d-viewer/3d_aux.cpp +++ b/3d-viewer/3d_aux.cpp @@ -60,7 +60,7 @@ void S3D_MASTER::Set_Object_Coords( std::vector< S3D_VERTEX >& aVertices ) aVertices[ii].y *= m_MatScale.y; aVertices[ii].z *= m_MatScale.z; - // adjust rotation + // adjust rotation if( m_MatRotation.x ) RotatePoint( &aVertices[ii].y, &aVertices[ii].z, m_MatRotation.x * 10 ); @@ -176,64 +176,39 @@ GLuint EDA_3D_CANVAS::DisplayCubeforTest() return gllist; } -VERTEX_VALUE_CTRL::VERTEX_VALUE_CTRL( wxWindow* parent, const wxString& title, - wxBoxSizer* BoxSizer ) +VERTEX_VALUE_CTRL::VERTEX_VALUE_CTRL( wxWindow* aParent, wxBoxSizer* aBoxSizer ) { - wxString text; - wxStaticText* msgtitle; + wxString text; - if( title.IsEmpty() ) - text = _( "Vertex " ); - else - text = title; + wxFlexGridSizer* gridSizer = new wxFlexGridSizer( 0, 2, 0, 0 ); + gridSizer->AddGrowableCol( 1 ); + gridSizer->SetFlexibleDirection( wxHORIZONTAL ); + gridSizer->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED ); - msgtitle = new wxStaticText( parent, -1, text, wxDefaultPosition, wxSize( -1, -1 ), 0 ); + aBoxSizer->Add( gridSizer, 0, wxEXPAND, 5 ); - BoxSizer->Add( msgtitle, wxGROW | wxLEFT | wxRIGHT | wxTOP | wxBOTTOM ); + wxStaticText* msgtitle = new wxStaticText( aParent, wxID_ANY, wxT( "X:" ) ); + gridSizer->Add( msgtitle, 0, wxALL , 5 ); - wxFlexGridSizer* GridSizer = new wxFlexGridSizer( 3, 2, 0, 0 ); + m_XValueCtrl = new wxTextCtrl( aParent, wxID_ANY, wxEmptyString, + wxDefaultPosition,wxDefaultSize, 0 ); + gridSizer->Add( m_XValueCtrl, 0, wxALL|wxEXPAND, 5 ); - BoxSizer->Add( GridSizer, 0, wxGROW | wxALL, 5 ); + msgtitle = new wxStaticText( aParent, wxID_ANY, wxT( "Y:" ), wxDefaultPosition, + wxDefaultSize, 0 ); + gridSizer->Add( msgtitle, 0, wxALL, 5 ); - msgtitle = new wxStaticText( parent, -1, wxT( "X:" ) ); + m_YValueCtrl = new wxTextCtrl( aParent, wxID_ANY, wxEmptyString, + wxDefaultPosition, wxDefaultSize, 0 ); + gridSizer->Add( m_YValueCtrl, 0, wxALL|wxEXPAND, 5 ); - GridSizer->Add( msgtitle, 0, - wxALIGN_CENTER_HORIZONTAL | wxALIGN_CENTER_VERTICAL | - wxLEFT | wxRIGHT , 5 ); - m_XValueCtrl = new wxTextCtrl( parent, -1, wxEmptyString, - wxDefaultPosition, wxSize( -1, -1 ), 0 ); + msgtitle = new wxStaticText( aParent, wxID_ANY, wxT( "Z:" ), wxDefaultPosition, + wxDefaultSize, 0 ); + gridSizer->Add( msgtitle, 0, wxALL, 5 ); - GridSizer->Add( m_XValueCtrl, - 0, - wxALIGN_CENTER_HORIZONTAL | wxALIGN_CENTER_VERTICAL | - wxLEFT | wxRIGHT, 5 ); - - msgtitle = new wxStaticText( parent, -1, wxT( "Y:" ), wxDefaultPosition, - wxSize( -1, -1 ), 0 ); - - GridSizer->Add( msgtitle, - 0, - wxALIGN_CENTER_HORIZONTAL | wxALIGN_CENTER_VERTICAL | - wxLEFT | wxRIGHT, 5 ); - m_YValueCtrl = new wxTextCtrl( parent, -1, wxEmptyString, - wxDefaultPosition, wxSize( -1, -1 ), 0 ); - - GridSizer->Add( m_YValueCtrl, 0, - wxALIGN_CENTER_HORIZONTAL | wxALIGN_CENTER_VERTICAL | - wxLEFT | wxRIGHT, 5 ); - - msgtitle = new wxStaticText( parent, -1, wxT( "Z:" ), wxDefaultPosition, - wxSize( -1, -1 ), 0 ); - - GridSizer->Add( msgtitle, 0, - wxALIGN_CENTER_HORIZONTAL | wxALIGN_CENTER_VERTICAL | - wxLEFT | wxRIGHT, 5 ); - m_ZValueCtrl = new wxTextCtrl( parent, -1, wxEmptyString, - wxDefaultPosition, wxSize( -1, -1 ), 0 ); - - GridSizer->Add( m_ZValueCtrl, 0, - wxALIGN_CENTER_HORIZONTAL | wxALIGN_CENTER_VERTICAL | - wxLEFT | wxRIGHT, 5 ); + m_ZValueCtrl = new wxTextCtrl( aParent, wxID_ANY, wxEmptyString, + wxDefaultPosition, wxDefaultSize, 0 ); + gridSizer->Add( m_ZValueCtrl, 0, wxALL|wxEXPAND, 5 ); } diff --git a/3d-viewer/3d_struct.h b/3d-viewer/3d_struct.h index 4c1d2be577..d73077a266 100644 --- a/3d-viewer/3d_struct.h +++ b/3d-viewer/3d_struct.h @@ -155,10 +155,9 @@ class VERTEX_VALUE_CTRL { private: wxTextCtrl* m_XValueCtrl, * m_YValueCtrl, * m_ZValueCtrl; - wxStaticText* m_Text; public: - VERTEX_VALUE_CTRL( wxWindow* parent, const wxString& title, wxBoxSizer* BoxSizer ); + VERTEX_VALUE_CTRL( wxWindow* parent, wxBoxSizer* BoxSizer ); ~VERTEX_VALUE_CTRL(); diff --git a/pagelayout_editor/pl_editor_doc.icns b/pagelayout_editor/pl_editor_doc.icns new file mode 100644 index 0000000000000000000000000000000000000000..6760a09bb4bb5a22c066068b2c0c84df18e3b331 GIT binary patch literal 55232 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 literal 0 HcmV?d00001 diff --git a/pcbnew/dialogs/dialog_edit_module_for_BoardEditor.cpp b/pcbnew/dialogs/dialog_edit_module_for_BoardEditor.cpp index 5e0dbc7c13..0c38c9d0ac 100644 --- a/pcbnew/dialogs/dialog_edit_module_for_BoardEditor.cpp +++ b/pcbnew/dialogs/dialog_edit_module_for_BoardEditor.cpp @@ -308,19 +308,9 @@ void DIALOG_MODULE_BOARD_EDITOR::InitModeditProperties() m_CostRot180Ctrl->SetValue( m_CurrentModule->GetPlacementCost180() ); // Initialize 3D parameters - - wxBoxSizer* BoxSizer = new wxBoxSizer( wxVERTICAL ); - m_3D_Scale = new VERTEX_VALUE_CTRL( m_Panel3D, _( "Shape Scale:" ), BoxSizer ); - m_Sizer3DValues->Add( BoxSizer, 0, wxGROW | wxALL, 5 ); - - BoxSizer = new wxBoxSizer( wxVERTICAL ); - m_3D_Offset = new VERTEX_VALUE_CTRL( m_Panel3D, _( "Shape Offset (inch):" ), BoxSizer ); - m_Sizer3DValues->Add( BoxSizer, 0, wxGROW | wxALL, 5 ); - - BoxSizer = new wxBoxSizer( wxVERTICAL ); - m_3D_Rotation = new VERTEX_VALUE_CTRL( m_Panel3D, - _( "Shape Rotation (degrees):" ), BoxSizer ); - m_Sizer3DValues->Add( BoxSizer, 0, wxGROW | wxALL, 5 ); + m_3D_Scale = new VERTEX_VALUE_CTRL( m_Panel3D, m_bSizerShapeScale ); + m_3D_Offset = new VERTEX_VALUE_CTRL( m_Panel3D, m_bSizerShapeOffset ); + m_3D_Rotation = new VERTEX_VALUE_CTRL( m_Panel3D, m_bSizerShapeRotation ); // if m_3D_ShapeNameListBox is not empty, preselect first 3D shape if( m_3D_ShapeNameListBox->GetCount() > 0 ) diff --git a/pcbnew/dialogs/dialog_edit_module_for_BoardEditor_base.cpp b/pcbnew/dialogs/dialog_edit_module_for_BoardEditor_base.cpp index 6505496345..c8b532004d 100644 --- a/pcbnew/dialogs/dialog_edit_module_for_BoardEditor_base.cpp +++ b/pcbnew/dialogs/dialog_edit_module_for_BoardEditor_base.cpp @@ -307,6 +307,33 @@ DIALOG_MODULE_BOARD_EDITOR_BASE::DIALOG_MODULE_BOARD_EDITOR_BASE( wxWindow* pare m_Sizer3DValues = new wxStaticBoxSizer( new wxStaticBox( m_Panel3D, wxID_ANY, _("3D Scale and Position") ), wxVERTICAL ); + m_bSizerShapeScale = new wxBoxSizer( wxVERTICAL ); + + m_staticTextShapeScale = new wxStaticText( m_Panel3D, wxID_ANY, _("Shape Scale:"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticTextShapeScale->Wrap( -1 ); + m_bSizerShapeScale->Add( m_staticTextShapeScale, 0, wxTOP|wxRIGHT|wxLEFT, 5 ); + + + m_Sizer3DValues->Add( m_bSizerShapeScale, 0, wxEXPAND, 5 ); + + m_bSizerShapeOffset = new wxBoxSizer( wxVERTICAL ); + + m_staticTextShapeOffset = new wxStaticText( m_Panel3D, wxID_ANY, _("Shape Offset (inch):"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticTextShapeOffset->Wrap( -1 ); + m_bSizerShapeOffset->Add( m_staticTextShapeOffset, 0, wxTOP|wxRIGHT|wxLEFT, 5 ); + + + m_Sizer3DValues->Add( m_bSizerShapeOffset, 0, wxEXPAND, 5 ); + + m_bSizerShapeRotation = new wxBoxSizer( wxVERTICAL ); + + m_staticTextShapeRotation = new wxStaticText( m_Panel3D, wxID_ANY, _("Shape Rotation (degrees):"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticTextShapeRotation->Wrap( -1 ); + m_bSizerShapeRotation->Add( m_staticTextShapeRotation, 0, wxTOP|wxRIGHT|wxLEFT, 5 ); + + + m_Sizer3DValues->Add( m_bSizerShapeRotation, 0, wxEXPAND, 5 ); + bLowerSizer3D->Add( m_Sizer3DValues, 1, wxALL|wxEXPAND, 5 ); diff --git a/pcbnew/dialogs/dialog_edit_module_for_BoardEditor_base.fbp b/pcbnew/dialogs/dialog_edit_module_for_BoardEditor_base.fbp index 0a57dcca75..9d1de2b965 100644 --- a/pcbnew/dialogs/dialog_edit_module_for_BoardEditor_base.fbp +++ b/pcbnew/dialogs/dialog_edit_module_for_BoardEditor_base.fbp @@ -4435,6 +4435,288 @@ wxVERTICAL public + + 5 + wxEXPAND + 0 + + + m_bSizerShapeScale + wxVERTICAL + protected + + 5 + wxTOP|wxRIGHT|wxLEFT + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + Shape Scale: + + 0 + + + 0 + + 1 + m_staticTextShapeScale + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + + + + + -1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 5 + wxEXPAND + 0 + + + m_bSizerShapeOffset + wxVERTICAL + protected + + 5 + wxTOP|wxRIGHT|wxLEFT + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + Shape Offset (inch): + + 0 + + + 0 + + 1 + m_staticTextShapeOffset + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + + + + + -1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 5 + wxEXPAND + 0 + + + m_bSizerShapeRotation + wxVERTICAL + protected + + 5 + wxTOP|wxRIGHT|wxLEFT + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + Shape Rotation (degrees): + + 0 + + + 0 + + 1 + m_staticTextShapeRotation + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + + + + + -1 + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/pcbnew/dialogs/dialog_edit_module_for_BoardEditor_base.h b/pcbnew/dialogs/dialog_edit_module_for_BoardEditor_base.h index cb655d156a..79806831cc 100644 --- a/pcbnew/dialogs/dialog_edit_module_for_BoardEditor_base.h +++ b/pcbnew/dialogs/dialog_edit_module_for_BoardEditor_base.h @@ -104,6 +104,12 @@ class DIALOG_MODULE_BOARD_EDITOR_BASE : public DIALOG_SHIM wxPanel* m_Panel3D; wxStaticText* m_staticText3Dname; wxListBox* m_3D_ShapeNameListBox; + wxBoxSizer* m_bSizerShapeScale; + wxStaticText* m_staticTextShapeScale; + wxBoxSizer* m_bSizerShapeOffset; + wxStaticText* m_staticTextShapeOffset; + wxBoxSizer* m_bSizerShapeRotation; + wxStaticText* m_staticTextShapeRotation; wxButton* m_buttonBrowse; wxButton* m_buttonAdd; wxButton* m_buttonRemove; diff --git a/pcbnew/dialogs/dialog_edit_module_for_Modedit.cpp b/pcbnew/dialogs/dialog_edit_module_for_Modedit.cpp index 1268a15f04..f69176f329 100644 --- a/pcbnew/dialogs/dialog_edit_module_for_Modedit.cpp +++ b/pcbnew/dialogs/dialog_edit_module_for_Modedit.cpp @@ -151,18 +151,9 @@ void DIALOG_MODULE_MODULE_EDITOR::initModeditProperties() m_CostRot180Ctrl->SetValue( m_currentModule->GetPlacementCost180() ); // Initialize 3D parameters - - wxBoxSizer* BoxSizer = new wxBoxSizer( wxVERTICAL ); - m_3D_Scale = new VERTEX_VALUE_CTRL( m_Panel3D, _( "Shape Scale:" ), BoxSizer ); - m_Sizer3DValues->Add( BoxSizer, 0, wxGROW | wxALL, 5 ); - - BoxSizer = new wxBoxSizer( wxVERTICAL ); - m_3D_Offset = new VERTEX_VALUE_CTRL( m_Panel3D, _( "Shape Offset (inch):" ), BoxSizer ); - m_Sizer3DValues->Add( BoxSizer, 0, wxGROW | wxALL, 5 ); - - BoxSizer = new wxBoxSizer( wxVERTICAL ); - m_3D_Rotation = new VERTEX_VALUE_CTRL( m_Panel3D, _( "Shape Rotation (degrees):" ), BoxSizer ); - m_Sizer3DValues->Add( BoxSizer, 0, wxGROW | wxALL, 5 ); + m_3D_Scale = new VERTEX_VALUE_CTRL( m_Panel3D, m_bSizerShapeScale ); + m_3D_Offset = new VERTEX_VALUE_CTRL( m_Panel3D, m_bSizerShapeOffset ); + m_3D_Rotation = new VERTEX_VALUE_CTRL( m_Panel3D, m_bSizerShapeRotation ); // Initialize dialog relative to masks clearances m_NetClearanceUnits->SetLabel( GetAbbreviatedUnitsLabel( g_UserUnit ) ); diff --git a/pcbnew/dialogs/dialog_edit_module_for_Modedit_base.cpp b/pcbnew/dialogs/dialog_edit_module_for_Modedit_base.cpp index 1cf349199e..fd62e5b8da 100644 --- a/pcbnew/dialogs/dialog_edit_module_for_Modedit_base.cpp +++ b/pcbnew/dialogs/dialog_edit_module_for_Modedit_base.cpp @@ -250,6 +250,33 @@ DIALOG_MODULE_MODULE_EDITOR_BASE::DIALOG_MODULE_MODULE_EDITOR_BASE( wxWindow* pa m_Sizer3DValues = new wxStaticBoxSizer( new wxStaticBox( m_Panel3D, wxID_ANY, _("3D Scale and Position") ), wxVERTICAL ); + m_bSizerShapeScale = new wxBoxSizer( wxVERTICAL ); + + m_staticTextShapeScale = new wxStaticText( m_Panel3D, wxID_ANY, _("Shape Scale:"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticTextShapeScale->Wrap( -1 ); + m_bSizerShapeScale->Add( m_staticTextShapeScale, 0, wxTOP|wxRIGHT|wxLEFT, 5 ); + + + m_Sizer3DValues->Add( m_bSizerShapeScale, 0, wxEXPAND, 5 ); + + m_bSizerShapeOffset = new wxBoxSizer( wxVERTICAL ); + + m_staticTextShapeOffset = new wxStaticText( m_Panel3D, wxID_ANY, _("Shape Offset (inch):"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticTextShapeOffset->Wrap( -1 ); + m_bSizerShapeOffset->Add( m_staticTextShapeOffset, 0, wxTOP|wxRIGHT|wxLEFT, 5 ); + + + m_Sizer3DValues->Add( m_bSizerShapeOffset, 0, wxEXPAND, 5 ); + + m_bSizerShapeRotation = new wxBoxSizer( wxVERTICAL ); + + m_staticTextShapeRotation = new wxStaticText( m_Panel3D, wxID_ANY, _("Shape Rotation (degrees):"), wxDefaultPosition, wxDefaultSize, 0 ); + m_staticTextShapeRotation->Wrap( -1 ); + m_bSizerShapeRotation->Add( m_staticTextShapeRotation, 0, wxTOP|wxRIGHT|wxLEFT, 5 ); + + + m_Sizer3DValues->Add( m_bSizerShapeRotation, 0, wxEXPAND, 5 ); + bLowerSizer3D->Add( m_Sizer3DValues, 1, wxEXPAND, 5 ); diff --git a/pcbnew/dialogs/dialog_edit_module_for_Modedit_base.fbp b/pcbnew/dialogs/dialog_edit_module_for_Modedit_base.fbp index db0759a5fd..aa3c448b54 100644 --- a/pcbnew/dialogs/dialog_edit_module_for_Modedit_base.fbp +++ b/pcbnew/dialogs/dialog_edit_module_for_Modedit_base.fbp @@ -3640,8 +3640,290 @@ m_Sizer3DValues wxVERTICAL - public + protected + + 5 + wxEXPAND + 0 + + + m_bSizerShapeScale + wxVERTICAL + protected + + 5 + wxTOP|wxRIGHT|wxLEFT + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + Shape Scale: + + 0 + + + 0 + + 1 + m_staticTextShapeScale + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + + + + + -1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 5 + wxEXPAND + 0 + + + m_bSizerShapeOffset + wxVERTICAL + protected + + 5 + wxTOP|wxRIGHT|wxLEFT + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + Shape Offset (inch): + + 0 + + + 0 + + 1 + m_staticTextShapeOffset + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + + + + + -1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 5 + wxEXPAND + 0 + + + m_bSizerShapeRotation + wxVERTICAL + protected + + 5 + wxTOP|wxRIGHT|wxLEFT + 0 + + 1 + 1 + 1 + 1 + + + + + + + + 1 + 0 + 1 + + 1 + 0 + Dock + 0 + Left + 1 + + 1 + + 0 + 0 + wxID_ANY + Shape Rotation (degrees): + + 0 + + + 0 + + 1 + m_staticTextShapeRotation + 1 + + + protected + 1 + + Resizable + 1 + + + + 0 + + + + + -1 + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/pcbnew/dialogs/dialog_edit_module_for_Modedit_base.h b/pcbnew/dialogs/dialog_edit_module_for_Modedit_base.h index 02ed724b28..9491f0b965 100644 --- a/pcbnew/dialogs/dialog_edit_module_for_Modedit_base.h +++ b/pcbnew/dialogs/dialog_edit_module_for_Modedit_base.h @@ -90,6 +90,13 @@ class DIALOG_MODULE_MODULE_EDITOR_BASE : public DIALOG_SHIM wxPanel* m_Panel3D; wxStaticText* m_staticText3Dname; wxListBox* m_3D_ShapeNameListBox; + wxStaticBoxSizer* m_Sizer3DValues; + wxBoxSizer* m_bSizerShapeScale; + wxStaticText* m_staticTextShapeScale; + wxBoxSizer* m_bSizerShapeOffset; + wxStaticText* m_staticTextShapeOffset; + wxBoxSizer* m_bSizerShapeRotation; + wxStaticText* m_staticTextShapeRotation; wxButton* m_buttonBrowse; wxButton* m_buttonRemove; wxStdDialogButtonSizer* m_sdbSizerStdButtons; @@ -107,7 +114,6 @@ class DIALOG_MODULE_MODULE_EDITOR_BASE : public DIALOG_SHIM public: - wxStaticBoxSizer* m_Sizer3DValues; DIALOG_MODULE_MODULE_EDITOR_BASE( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = _("Module Properties"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( 486,462 ), long style = wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER ); ~DIALOG_MODULE_MODULE_EDITOR_BASE(); diff --git a/pcbnew/plot_board_layers.cpp b/pcbnew/plot_board_layers.cpp index 2897af7bb3..eab18aa97f 100644 --- a/pcbnew/plot_board_layers.cpp +++ b/pcbnew/plot_board_layers.cpp @@ -591,8 +591,11 @@ void PlotSolderMaskLayer( BOARD *aBoard, PLOTTER* aPlotter, // Deflate: remove the extra margin, to create the actual shapes // Here I am using polygon:resize, because this function creates better shapes // than deflate algo. - // Use here deflate with arc creation and 16 segments per circle to create arcs - areas = resize( areas, -inflate , true, 16 ); + // Use here deflate with arc creation and 18 segments per circle to create arcs + // In boost polygon (at least v 1.54 and previous) in very rare cases resize crashes + // with 16 segments (perhaps related to 45 degrees pads). So using 18 segments + // is a workaround to try to avoid these crashes + areas = resize( areas, -inflate , true, 18 ); // Resize slightly changes shapes. So *ensure* initial shapes are kept areas |= initialAreas;