From ebc0b4f12481419b4e402f53a4d55149601c06a8 Mon Sep 17 00:00:00 2001 From: Andrey Bondrov Date: Fri, 19 Oct 2012 12:17:10 +1100 Subject: [PATCH] LOG New version 20120119 (bzr3256), add patchset from Fedora --- .abf.yml | 4 +- ...oost-polygon-declare-gtlsort-earlier.patch | 11 + kicad-2011.07.12-fix-linking.patch | 10 + kicad-2012.01.19-cvpcb-preview.rev3303.patch | 152 ++++ kicad-2012.01.19-fix-bom-in-python.patch | 17 + kicad-2012.01.19-fix-linking.patch | 11 + kicad-2012.01.19-fix-plotting-scale.patch | 11 + ...1.19-move-up-junction-button.rev3371.patch | 21 + ...d-2012.01.19-pcb-calculation.rev3328.patch | 11 + ...ps-plotting-width-correction.rev3342.patch | 740 ++++++++++++++++++ kicad-2012.01.19-thermal-relief.rev3281.patch | 13 + kicad-2012.01.19-undo-redo-auto.rev3297.patch | 177 +++++ kicad.spec | 174 ++-- 13 files changed, 1254 insertions(+), 98 deletions(-) create mode 100644 kicad-2011.07.12-boost-polygon-declare-gtlsort-earlier.patch create mode 100644 kicad-2011.07.12-fix-linking.patch create mode 100644 kicad-2012.01.19-cvpcb-preview.rev3303.patch create mode 100644 kicad-2012.01.19-fix-bom-in-python.patch create mode 100644 kicad-2012.01.19-fix-linking.patch create mode 100644 kicad-2012.01.19-fix-plotting-scale.patch create mode 100644 kicad-2012.01.19-move-up-junction-button.rev3371.patch create mode 100644 kicad-2012.01.19-pcb-calculation.rev3328.patch create mode 100644 kicad-2012.01.19-ps-plotting-width-correction.rev3342.patch create mode 100644 kicad-2012.01.19-thermal-relief.rev3281.patch create mode 100644 kicad-2012.01.19-undo-redo-auto.rev3297.patch diff --git a/.abf.yml b/.abf.yml index c330cc5..11a2e55 100644 --- a/.abf.yml +++ b/.abf.yml @@ -1,4 +1,4 @@ sources: "kicad-doc-bzr303.tar.bz2": 3503587bd091f8c15f2633f168c90514f63b8a50 - "kicad-library-bzr112.tar.bz2": 58fe17f4e3bb56aa4a37b9af12ffc1c83354176e - "kicad-sources-bzr3254.tar.bz2": 7c6297c79f40f474cab55fd2fee401bb19d3178c + "kicad-library-bzr114.tar.bz2": 19662fef6745d49f959290b50b7f7d9bea29e104 + "kicad-sources-bzr3256.tar.bz2": 742cb2b99c7e99fabfe50397c0573743dc013542 diff --git a/kicad-2011.07.12-boost-polygon-declare-gtlsort-earlier.patch b/kicad-2011.07.12-boost-polygon-declare-gtlsort-earlier.patch new file mode 100644 index 0000000..cc9595e --- /dev/null +++ b/kicad-2011.07.12-boost-polygon-declare-gtlsort-earlier.patch @@ -0,0 +1,11 @@ +--- include/boost/polygon/polygon.hpp.orig 2011-07-12 19:16:41.000000000 +0200 ++++ include/boost/polygon/polygon.hpp 2012-01-25 19:34:06.000000000 +0100 +@@ -24,6 +24,8 @@ + #include "transform.hpp" + #include "detail/transform_detail.hpp" + ++#include "detail/polygon_sort_adaptor.hpp" ++ + //interval + #include "interval_data.hpp" + #include "interval_traits.hpp" diff --git a/kicad-2011.07.12-fix-linking.patch b/kicad-2011.07.12-fix-linking.patch new file mode 100644 index 0000000..85ad839 --- /dev/null +++ b/kicad-2011.07.12-fix-linking.patch @@ -0,0 +1,10 @@ +--- common/CMakeLists.txt.orig 2011-06-17 18:15:55.000000000 +0200 ++++ common/CMakeLists.txt 2011-07-12 19:26:20.000000000 +0200 +@@ -67,6 +67,7 @@ + wxwineda.cpp + xnode.cpp + zoom.cpp ++ ../pcbnew/class_drc_item.cpp + ) + + add_library(common ${COMMON_SRCS}) diff --git a/kicad-2012.01.19-cvpcb-preview.rev3303.patch b/kicad-2012.01.19-cvpcb-preview.rev3303.patch new file mode 100644 index 0000000..e674a66 --- /dev/null +++ b/kicad-2012.01.19-cvpcb-preview.rev3303.patch @@ -0,0 +1,152 @@ +diff -ru kicad-2012.01.19-3.rev3256/cvpcb/cvframe.cpp kicad-2012.01.19-4.rev3256/cvpcb/cvframe.cpp +--- kicad-2012.01.19-3.rev3256/cvpcb/cvframe.cpp 2012-01-22 17:23:37.000000000 +0100 ++++ kicad-2012.01.19-4.rev3256/cvpcb/cvframe.cpp 2012-01-27 17:41:38.000000000 +0100 +@@ -525,6 +525,25 @@ + } + + m_FootprintList->SetFootprintFilteredList( &m_components[ selection ], m_footprints ); ++ ++ // Preview of the already assigned footprint. ++ // Find the footprint that was already choosen for this component and select it. ++ wxString module = *(&m_components[ selection ].m_Module); ++ ++ for( int ii = 0; ii < m_FootprintList->GetCount(); ii++ ) ++ { ++ wxString footprintName; ++ wxString msg = (*m_FootprintList->m_ActiveFootprintList)[ii]; ++ msg.Trim( true ); ++ msg.Trim( false ); ++ footprintName = msg.AfterFirst( wxChar( ' ' ) ); ++ ++ if( module.Cmp( footprintName ) == 0 ) ++ m_FootprintList->SetSelection( ii, true ); ++ else ++ m_FootprintList->SetSelection( ii, false ); ++ } ++ + SendMessageToEESCHEMA(); + DisplayStatus(); + } +@@ -660,13 +679,13 @@ + + selection = m_ListCmp->GetSelection(); + +- if ( selection < 0 ) +- selection = 0; ++ if ( selection < 0 ) ++ selection = 0; + + if( &m_components[ selection ] == NULL ) +- return; ++ return; + +- Component = &m_components[ selection ]; ++ Component = &m_components[ selection ]; + + sprintf( cmd, "$PART: \"%s\"", TO_UTF8( Component->m_Reference ) ); + +diff -ru kicad-2012.01.19-3.rev3256/pcbnew/basepcbframe.cpp kicad-2012.01.19-4.rev3256/pcbnew/basepcbframe.cpp +--- kicad-2012.01.19-3.rev3256/pcbnew/basepcbframe.cpp 2012-01-22 17:23:38.000000000 +0100 ++++ kicad-2012.01.19-4.rev3256/pcbnew/basepcbframe.cpp 2012-01-27 17:44:46.000000000 +0100 +@@ -390,6 +390,8 @@ + guide.SetIgnoreModulesOnCmp( ! m_Pcb->IsElementVisible( MOD_FR_VISIBLE ) ); + guide.SetIgnorePadsOnBack( ! m_Pcb->IsElementVisible( PAD_BK_VISIBLE ) ); + guide.SetIgnorePadsOnFront( ! m_Pcb->IsElementVisible( PAD_FR_VISIBLE ) ); ++ guide.SetIgnoreModulesVals( ! m_Pcb->IsElementVisible( MOD_VALUES_VISIBLE ) ); ++ guide.SetIgnoreModulesRefs( ! m_Pcb->IsElementVisible( MOD_REFERENCES_VISIBLE ) ); + + return guide; + } +diff -ru kicad-2012.01.19-3.rev3256/pcbnew/collectors.cpp kicad-2012.01.19-4.rev3256/pcbnew/collectors.cpp +--- kicad-2012.01.19-3.rev3256/pcbnew/collectors.cpp 2012-01-22 17:23:38.000000000 +0100 ++++ kicad-2012.01.19-4.rev3256/pcbnew/collectors.cpp 2012-01-27 17:45:33.000000000 +0100 +@@ -280,6 +280,12 @@ + + if( m_Guide->IgnoreMTextsOnCmp() && module->GetLayer()==LAYER_N_FRONT ) + goto exit; ++ ++ if( m_Guide->IgnoreModulesVals() && item == module->m_Value ) ++ goto exit; ++ ++ if( m_Guide->IgnoreModulesRefs() && item == module->m_Reference ) ++ goto exit; + } + break; + +diff -ru kicad-2012.01.19-3.rev3256/pcbnew/collectors.h kicad-2012.01.19-4.rev3256/pcbnew/collectors.h +--- kicad-2012.01.19-3.rev3256/pcbnew/collectors.h 2012-01-22 17:23:38.000000000 +0100 ++++ kicad-2012.01.19-4.rev3256/pcbnew/collectors.h 2012-01-27 17:47:12.000000000 +0100 +@@ -176,6 +176,18 @@ + } + + /** ++ * Function IgnoreModulesVals ++ * @return bool - true if should ignore modules values. ++ */ ++ virtual bool IgnoreModulesVals() const = 0; ++ ++ /** ++ * Function IgnoreModulesRefs ++ * @return bool - true if should ignore module references. ++ */ ++ virtual bool IgnoreModulesRefs() const = 0; ++ ++ /** + * Function UseHitTesting + * @return bool - true if Inspect() should use BOARD_ITEM::HitTest() + * or false if Inspect() should use BOARD_ITEM::BoundsTest(). +@@ -383,6 +395,8 @@ + bool m_IgnoreModulesOnCmp; + bool m_IgnorePadsOnFront; + bool m_IgnorePadsOnBack; ++ bool m_IgnoreModulesVals; ++ bool m_IgnoreModulesRefs; + + public: + +@@ -419,6 +433,9 @@ + + m_IgnorePadsOnFront = false; + m_IgnorePadsOnBack = false; ++ ++ m_IgnoreModulesVals = false; ++ m_IgnoreModulesRefs = false; + } + + +@@ -550,6 +567,20 @@ + */ + bool IgnorePadsOnFront() const { return m_IgnorePadsOnFront; } + void SetIgnorePadsOnFront(bool ignore) { m_IgnorePadsOnFront = ignore; } ++ ++ /** ++ * Function IgnoreModulesVals ++ * @return bool - true if should ignore modules values. ++ */ ++ bool IgnoreModulesVals() const { return m_IgnoreModulesVals; } ++ void SetIgnoreModulesVals(bool ignore) { m_IgnoreModulesVals = ignore; } ++ ++ /** ++ * Function IgnoreModulesRefs ++ * @return bool - true if should ignore modules references. ++ */ ++ bool IgnoreModulesRefs() const { return m_IgnoreModulesRefs; } ++ void SetIgnoreModulesRefs(bool ignore) { m_IgnoreModulesRefs = ignore; } + }; + + +diff -ru kicad-2012.01.19-3.rev3256/TODO.txt kicad-2012.01.19-4.rev3256/TODO.txt +--- kicad-2012.01.19-3.rev3256/TODO.txt 2012-01-22 17:23:38.000000000 +0100 ++++ kicad-2012.01.19-4.rev3256/TODO.txt 2012-01-27 17:39:15.000000000 +0100 +@@ -26,11 +26,6 @@ + but is now in scripts/python/ky temporarily. + + +-CvPCB +------ +-* Preview of the already assigned footprint. +- +- + EESchema + -------- + * Drag and drop between two EESchema windows. diff --git a/kicad-2012.01.19-fix-bom-in-python.patch b/kicad-2012.01.19-fix-bom-in-python.patch new file mode 100644 index 0000000..f9657be --- /dev/null +++ b/kicad-2012.01.19-fix-bom-in-python.patch @@ -0,0 +1,17 @@ +diff -r -u old/scripts/bom-in-python/ky/ky.py new/scripts/bom-in-python/ky/ky.py +--- old/scripts/bom-in-python/ky/ky.py 2012-01-21 19:01:36.000000000 +0100 ++++ new/scripts/bom-in-python/ky/ky.py 2012-01-21 21:43:23.464126596 +0100 +@@ -298,11 +298,11 @@ + self.libparts.append(part(self._curr_element)) + + # If this element is a net, add it to the nets list +- if self._curr_element.name = "net" ++ if self._curr_element.name == "net": + self.nets.append(self._curr_element) + + # If this element is a library, add it to the libraries list +- if self._curr_element.name = "library" ++ if self._curr_element.name == "library": + self.libraries.append(self._curr_element) + + return self._curr_element diff --git a/kicad-2012.01.19-fix-linking.patch b/kicad-2012.01.19-fix-linking.patch new file mode 100644 index 0000000..b16301c --- /dev/null +++ b/kicad-2012.01.19-fix-linking.patch @@ -0,0 +1,11 @@ +--- pcb_calculator/CMakeLists.txt.orig 2012-01-22 17:23:40.000000000 +0100 ++++ pcb_calculator/CMakeLists.txt 2012-01-23 20:52:58.000000000 +0100 +@@ -62,7 +62,7 @@ + ${CMAKE_CURRENT_SOURCE_DIR}/Info.plist) + endif(APPLE) + +-target_link_libraries( pcb_calculator common polygon bitmaps ++target_link_libraries( pcb_calculator common polygon kbool bitmaps + ${wxWidgets_LIBRARIES} + ) + diff --git a/kicad-2012.01.19-fix-plotting-scale.patch b/kicad-2012.01.19-fix-plotting-scale.patch new file mode 100644 index 0000000..3b8c319 --- /dev/null +++ b/kicad-2012.01.19-fix-plotting-scale.patch @@ -0,0 +1,11 @@ +--- pcbnew/plotps.cpp.orig 2012-01-22 17:23:38.000000000 +0100 ++++ pcbnew/plotps.cpp 2012-01-23 22:00:58.000000000 +0100 +@@ -100,7 +100,7 @@ + PS_PLOTTER* plotter = new PS_PLOTTER(); + plotter->set_paper_size( SheetPS ); + plotter->set_scale_adjust( g_PcbPlotOptions.m_FineScaleAdjustX, +- g_PcbPlotOptions.m_FineScaleAdjustX ); ++ g_PcbPlotOptions.m_FineScaleAdjustY ); + plotter->set_viewport( offset, scale, g_PcbPlotOptions.m_PlotMirror ); + plotter->set_default_line_width( g_PcbPlotOptions.m_PlotLineWidth ); + plotter->set_creator( wxT( "PCBNEW-PS" ) ); diff --git a/kicad-2012.01.19-move-up-junction-button.rev3371.patch b/kicad-2012.01.19-move-up-junction-button.rev3371.patch new file mode 100644 index 0000000..295a2da --- /dev/null +++ b/kicad-2012.01.19-move-up-junction-button.rev3371.patch @@ -0,0 +1,21 @@ +--- eeschema/tool_sch.cpp~ 2012-01-26 23:08:12.000000000 +0100 ++++ eeschema/tool_sch.cpp 2012-01-26 23:08:12.000000000 +0100 +@@ -187,15 +187,15 @@ + m_VToolBar->AddTool( ID_NOCONN_BUTT, wxEmptyString, KiBitmap( noconn_xpm ), + HELP_PLACE_NC_FLAG, wxITEM_CHECK ); + ++ m_VToolBar->AddTool( ID_JUNCTION_BUTT, wxEmptyString, KiBitmap( add_junction_xpm ), ++ HELP_PLACE_JUNCTION, wxITEM_CHECK ); ++ + m_VToolBar->AddTool( ID_LABEL_BUTT, wxEmptyString, KiBitmap( add_line_label_xpm ), + HELP_PLACE_NETLABEL, wxITEM_CHECK ); + + m_VToolBar->AddTool( ID_GLABEL_BUTT, wxEmptyString, KiBitmap( add_glabel_xpm ), + HELP_PLACE_GLOBALLABEL, wxITEM_CHECK ); + +- m_VToolBar->AddTool( ID_JUNCTION_BUTT, wxEmptyString, KiBitmap( add_junction_xpm ), +- HELP_PLACE_JUNCTION, wxITEM_CHECK ); +- + m_VToolBar->AddTool( ID_HIERLABEL_BUTT, wxEmptyString, KiBitmap( add_hierarchical_label_xpm ), + HELP_PLACE_HIER_LABEL, wxITEM_CHECK ); + diff --git a/kicad-2012.01.19-pcb-calculation.rev3328.patch b/kicad-2012.01.19-pcb-calculation.rev3328.patch new file mode 100644 index 0000000..f2e9dde --- /dev/null +++ b/kicad-2012.01.19-pcb-calculation.rev3328.patch @@ -0,0 +1,11 @@ +--- pcbnew/class_board.cpp.orig 2012-01-22 17:23:38.000000000 +0100 ++++ pcbnew/class_board.cpp 2012-01-27 18:49:34.000000000 +0100 +@@ -1684,8 +1684,6 @@ + int idxmax = aPadList.size()-1; + + int delta = aPadList.size(); +- if( delta & 1 && delta > 1 ) +- delta += 1; + + int idx = 0; // Starting index is the beginning of list + while( delta ) diff --git a/kicad-2012.01.19-ps-plotting-width-correction.rev3342.patch b/kicad-2012.01.19-ps-plotting-width-correction.rev3342.patch new file mode 100644 index 0000000..f832b7e --- /dev/null +++ b/kicad-2012.01.19-ps-plotting-width-correction.rev3342.patch @@ -0,0 +1,740 @@ +diff -ru kicad-2012.01.19-4.rev3256/common/common_plotPS_functions.cpp kicad-2012.01.19-5.rev3256/common/common_plotPS_functions.cpp +--- kicad-2012.01.19-4.rev3256/common/common_plotPS_functions.cpp 2012-01-22 17:23:37.000000000 +0100 ++++ kicad-2012.01.19-5.rev3256/common/common_plotPS_functions.cpp 2012-01-27 20:21:51.000000000 +0100 +@@ -489,16 +489,18 @@ + void PS_PLOTTER::flash_pad_circle( wxPoint pos, int diametre, + GRTraceMode modetrace ) + { ++ int current_line_width; + wxASSERT( output_file ); + + set_current_line_width( -1 ); +- if( current_pen_width >= diametre ) +- set_current_line_width( diametre ); ++ current_line_width = get_current_line_width(); ++ if( current_line_width > diametre ) ++ current_line_width = diametre; + + if( modetrace == FILLED ) +- circle( pos, diametre - current_pen_width, FILLED_SHAPE ); ++ circle( pos, diametre - current_pen_width, FILLED_SHAPE, current_line_width ); + else +- circle( pos, diametre - current_pen_width, NO_FILL ); ++ circle( pos, diametre - current_pen_width, NO_FILL, current_line_width ); + + set_current_line_width( -1 ); + } +diff -ru kicad-2012.01.19-4.rev3256/include/plot_common.h kicad-2012.01.19-5.rev3256/include/plot_common.h +--- kicad-2012.01.19-4.rev3256/include/plot_common.h 2012-01-22 17:23:38.000000000 +0100 ++++ kicad-2012.01.19-5.rev3256/include/plot_common.h 2012-01-27 20:59:30.000000000 +0100 +@@ -77,6 +77,20 @@ + virtual void set_color( int color ) = 0; + virtual void set_dash( bool dashed ) = 0; + ++ virtual int get_current_line_width() ++ { ++ return current_pen_width; ++ } ++ ++ virtual void set_plot_width_adj( double width ) ++ { ++ } ++ ++ virtual double get_plot_width_adj() ++ { ++ return 0.; ++ } ++ + virtual void set_creator( const wxString& _creator ) + { + creator = _creator; +@@ -350,6 +364,16 @@ + plot_scale_adjX = scaleX; + plot_scale_adjY = scaleY; + } ++ ++ virtual void set_plot_width_adj( double width ) ++ { ++ plot_width_adj = width; ++ } ++ ++ virtual double get_plot_width_adj() ++ { ++ return plot_width_adj; ++ } + + + virtual void set_viewport( wxPoint aOffset, double aScale, bool aMirror ); +@@ -393,6 +417,7 @@ + + protected: + double plot_scale_adjX, plot_scale_adjY; ++ double plot_width_adj; + }; + + /* Class to handle a D_CODE when plotting a board : */ +diff -ru kicad-2012.01.19-4.rev3256/pcbnew/class_board.cpp kicad-2012.01.19-5.rev3256/pcbnew/class_board.cpp +--- kicad-2012.01.19-4.rev3256/pcbnew/class_board.cpp 2012-01-22 17:23:38.000000000 +0100 ++++ kicad-2012.01.19-5.rev3256/pcbnew/class_board.cpp 2012-01-27 20:25:02.000000000 +0100 +@@ -278,6 +278,21 @@ + } + + ++int BOARD::GetSmallestClearanceValue() ++{ ++ int clearance = m_NetClasses.GetDefault()->GetClearance(); ++ ++ //Read list of Net Classes ++ for( NETCLASSES::const_iterator nc = m_NetClasses.begin(); nc != m_NetClasses.end(); nc++ ) ++ { ++ NETCLASS* netclass = nc->second; ++ clearance = MIN( clearance, netclass->GetClearance() ); ++ } ++ ++ return clearance; ++} ++ ++ + int BOARD::GetCurrentMicroViaSize() + { + NETCLASS* netclass = m_NetClasses.Find( m_CurrentNetClassName ); +diff -ru kicad-2012.01.19-4.rev3256/pcbnew/class_board.h kicad-2012.01.19-5.rev3256/pcbnew/class_board.h +--- kicad-2012.01.19-4.rev3256/pcbnew/class_board.h 2012-01-22 17:23:39.000000000 +0100 ++++ kicad-2012.01.19-5.rev3256/pcbnew/class_board.h 2012-01-27 20:26:22.000000000 +0100 +@@ -761,6 +761,12 @@ + int GetBiggestClearanceValue(); + + /** ++ * Function GetSmallestClearanceValue ++ * @return the smallest clearance value found in NetClasses list ++ */ ++ int GetSmallestClearanceValue(); ++ ++ /** + * Function GetCurrentTrackWidth + * @return the current track width, according to the selected options + * ( using the default netclass value or a preset value ) +diff -ru kicad-2012.01.19-4.rev3256/pcbnew/dialogs/dialog_plot_base.cpp kicad-2012.01.19-5.rev3256/pcbnew/dialogs/dialog_plot_base.cpp +--- kicad-2012.01.19-4.rev3256/pcbnew/dialogs/dialog_plot_base.cpp 2012-01-22 17:23:35.000000000 +0100 ++++ kicad-2012.01.19-5.rev3256/pcbnew/dialogs/dialog_plot_base.cpp 2012-01-27 20:31:44.000000000 +0100 +@@ -179,7 +179,6 @@ + m_GerberOptionsSizer->Add( m_excludeEdgeLayerOpt, 0, wxTOP|wxRIGHT|wxLEFT, 2 ); + + m_subtractMaskFromSilk = new wxCheckBox( this, wxID_ANY, _("Subtract soldermask from silkscreen"), wxDefaultPosition, wxDefaultSize, 0 ); +- m_subtractMaskFromSilk->SetValue(true); + m_subtractMaskFromSilk->SetToolTip( _("Remove silkscreen from areas without soldermask") ); + + m_GerberOptionsSizer->Add( m_subtractMaskFromSilk, 0, wxTOP|wxRIGHT|wxLEFT, 2 ); +@@ -268,6 +267,20 @@ + + bSizer17->Add( bSizer19, 1, wxEXPAND, 5 ); + ++ wxBoxSizer* bSizer191; ++ bSizer191 = new wxBoxSizer( wxVERTICAL ); ++ ++ m_textPSFineAdjustWidth = new wxStaticText( this, wxID_ANY, _("Width correction"), wxDefaultPosition, wxDefaultSize, 0 ); ++ m_textPSFineAdjustWidth->Wrap( -1 ); ++ bSizer191->Add( m_textPSFineAdjustWidth, 0, wxLEFT|wxRIGHT|wxTOP, 5 ); ++ ++ m_PSFineAdjustWidthOpt = new wxTextCtrl( this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 ); ++ m_PSFineAdjustWidthOpt->SetToolTip( _("Set global width correction for exact width postscript output.\nThese width correction is intended to compensate tracks width and also pads and vias size errors.\nThe reasonable width correction value must be in a range of [-(MinTrackWidth-1), +(MinClearanceValue-1)] in decimils.") ); ++ ++ bSizer191->Add( m_PSFineAdjustWidthOpt, 0, wxBOTTOM|wxEXPAND|wxLEFT|wxRIGHT, 5 ); ++ ++ bSizer17->Add( bSizer191, 1, wxEXPAND, 5 ); ++ + m_PSOptionsSizer->Add( bSizer17, 1, wxEXPAND, 5 ); + + m_plotPSNegativeOpt = new wxCheckBox( this, wxID_ANY, _("Negative plot"), wxDefaultPosition, wxDefaultSize, 0 ); +diff -ru kicad-2012.01.19-4.rev3256/pcbnew/dialogs/dialog_plot_base.fbp kicad-2012.01.19-5.rev3256/pcbnew/dialogs/dialog_plot_base.fbp +--- kicad-2012.01.19-4.rev3256/pcbnew/dialogs/dialog_plot_base.fbp 2012-01-22 17:23:35.000000000 +0100 ++++ kicad-2012.01.19-5.rev3256/pcbnew/dialogs/dialog_plot_base.fbp 2012-01-27 20:42:20.000000000 +0100 +@@ -3416,6 +3416,189 @@ + + + ++ ++ 5 ++ wxEXPAND ++ 1 ++ ++ ++ bSizer191 ++ wxVERTICAL ++ none ++ ++ 5 ++ wxLEFT|wxRIGHT|wxTOP ++ 0 ++ ++ 1 ++ 1 ++ 1 ++ 1 ++ ++ ++ ++ 1 ++ 0 ++ 1 ++ ++ 1 ++ 0 ++ Dock ++ 0 ++ Left ++ 1 ++ ++ 1 ++ ++ 0 ++ 0 ++ wxID_ANY ++ Width correction ++ ++ 0 ++ ++ 0 ++ ++ 1 ++ m_textPSFineAdjustWidth ++ 1 ++ ++ ++ protected ++ 1 ++ ++ ++ Resizable ++ ++ 1 ++ ++ ++ ++ 0 ++ ++ ++ wxFILTER_NONE ++ wxDefaultValidator ++ ++ ++ ++ ++ -1 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ 5 ++ wxBOTTOM|wxEXPAND|wxLEFT|wxRIGHT ++ 0 ++ ++ 1 ++ 1 ++ 1 ++ 1 ++ ++ ++ ++ 1 ++ 0 ++ 1 ++ ++ 1 ++ 0 ++ Dock ++ 0 ++ Left ++ 1 ++ ++ 1 ++ ++ 0 ++ 0 ++ wxID_ANY ++ ++ 0 ++ ++ 0 ++ 0 ++ ++ 1 ++ m_PSFineAdjustWidthOpt ++ 1 ++ ++ ++ protected ++ 1 ++ ++ ++ Resizable ++ ++ 1 ++ ++ ++ ++ 0 ++ Set global width correction for exact width postscript output. These width correction is intended to compensate tracks width and also pads and vias size errors. The reasonable width correction value must be in a range of [-(MinTrackWidth-1), +(MinClearanceValue-1)] in decimils. ++ ++ wxFILTER_NONE ++ wxDefaultValidator ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ + + + +diff -ru kicad-2012.01.19-4.rev3256/pcbnew/dialogs/dialog_plot_base.h kicad-2012.01.19-5.rev3256/pcbnew/dialogs/dialog_plot_base.h +--- kicad-2012.01.19-4.rev3256/pcbnew/dialogs/dialog_plot_base.h 2012-01-22 17:23:35.000000000 +0100 ++++ kicad-2012.01.19-5.rev3256/pcbnew/dialogs/dialog_plot_base.h 2012-01-27 20:43:04.000000000 +0100 +@@ -85,6 +85,8 @@ + wxTextCtrl* m_fineAdjustXscaleOpt; + wxStaticText* m_staticText8; + wxTextCtrl* m_fineAdjustYscaleOpt; ++ wxStaticText* m_textPSFineAdjustWidth; ++ wxTextCtrl* m_PSFineAdjustWidthOpt; + wxCheckBox* m_plotPSNegativeOpt; + wxCheckBox* m_forcePSA4OutputOpt; + wxTextCtrl* m_messagesBox; +diff -ru kicad-2012.01.19-4.rev3256/pcbnew/pcbplot.cpp kicad-2012.01.19-5.rev3256/pcbnew/pcbplot.cpp +--- kicad-2012.01.19-4.rev3256/pcbnew/pcbplot.cpp 2012-01-22 17:23:38.000000000 +0100 ++++ kicad-2012.01.19-5.rev3256/pcbnew/pcbplot.cpp 2012-01-28 15:27:08.000000000 +0100 +@@ -24,6 +24,7 @@ + /* Keywords to r/w options in m_Config */ + #define CONFIG_XFINESCALE_ADJ wxT( "PlotXFineScaleAdj" ) + #define CONFIG_YFINESCALE_ADJ wxT( "PlotYFineScaleAdj" ) ++#define CONFIG_PS_FINEWIDTH_ADJ wxT( "PSPlotFineWidthAdj" ) + + // Define min and max reasonable values for print scale + #define MIN_SCALE 0.01 +@@ -59,10 +60,13 @@ + private: + PCB_EDIT_FRAME* m_Parent; + wxConfig* m_Config; +- std::vector layerList; // List to hold CheckListBox layer numbers ++ std::vector layerList; // List to hold CheckListBox layer numbers + double m_XScaleAdjust; + double m_YScaleAdjust; +- static wxPoint prevPosition; // Dialog position & size ++ double m_PSWidthAdjust; // Global width correction for exact width postscript output. ++ double m_WidthAdjustMinValue; // Global width correction ++ double m_WidthAdjustMaxValue; // margins. ++ static wxPoint prevPosition; // Dialog position & size + static wxSize prevSize; + + public: +@@ -114,6 +118,12 @@ + + m_Config->Read( CONFIG_XFINESCALE_ADJ, &m_XScaleAdjust ); + m_Config->Read( CONFIG_YFINESCALE_ADJ, &m_YScaleAdjust ); ++ m_Config->Read( CONFIG_PS_FINEWIDTH_ADJ, &m_PSWidthAdjust); ++ ++ // The reasonable width correction value must be in a range of ++ // [-(MinTrackWidth-1), +(MinClearanceValue-1)] decimils. ++ m_WidthAdjustMinValue = -(board->GetBoardDesignSettings()->m_TrackMinWidth - 1); ++ m_WidthAdjustMaxValue = board->GetSmallestClearanceValue() - 1; + + m_plotFormatOpt->SetSelection( g_PcbPlotOptions.GetPlotFormat() ); + +@@ -135,6 +145,12 @@ + msg = ReturnStringFromValue( g_UserUnit, g_PcbPlotOptions.GetPlotLineWidth(), + PCB_INTERNAL_UNIT ); + m_linesWidth->AppendText( msg ); ++ ++ // Set units for PS global width correction. ++ AddUnitSymbol( *m_textPSFineAdjustWidth, g_UserUnit ); ++ ++ // Set units for PS global width correction. ++ AddUnitSymbol( *m_textPSFineAdjustWidth, g_UserUnit ); + + m_useAuxOriginCheckBox->SetValue( g_PcbPlotOptions.GetUseAuxOrigin() ); + +@@ -148,6 +164,13 @@ + + msg.Printf( wxT( "%f" ), m_YScaleAdjust ); + m_fineAdjustYscaleOpt->AppendText( msg ); ++ ++ // Test for a reasonable PS width correction value. Set to 0 if problem. ++ if( m_PSWidthAdjust < m_WidthAdjustMinValue || m_PSWidthAdjust > m_WidthAdjustMaxValue ) ++ m_PSWidthAdjust = 0.; ++ ++ msg.Printf( wxT( "%f" ), To_User_Unit( g_UserUnit, m_PSWidthAdjust, PCB_INTERNAL_UNIT ) ); ++ m_PSFineAdjustWidthOpt->AppendText( msg ); + + m_plotPSNegativeOpt->SetValue( g_PcbPlotOptions.m_PlotPSNegative ); + m_forcePSA4OutputOpt->SetValue( g_PcbPlotOptions.GetPsA4Output() ); +@@ -282,16 +305,16 @@ + + wxFileName dirName = wxFileName::DirName( dirDialog.GetPath() ); + +- wxMessageDialog dialog( this, wxT( "Use a relative path? "), +- wxT( "Plot Output Directory" ), ++ wxMessageDialog dialog( this, _( "Use a relative path? "), ++ _( "Plot Output Directory" ), + wxYES_NO | wxICON_QUESTION | wxYES_DEFAULT ); + + if( dialog.ShowModal() == wxID_YES ) { + wxString boardFilePath = ( (wxFileName) m_Parent->GetScreen()->GetFileName()).GetPath(); + + if( !dirName.MakeRelativeTo( boardFilePath ) ) +- wxMessageBox( wxT( "Cannot make path relative (target volume different from board file volume)!" ), +- wxT( "Plot Output Directory" ), wxICON_ERROR ); ++ wxMessageBox( _( "Cannot make path relative (target volume different from board file volume)!" ), ++ _( "Plot Output Directory" ), wxOK | wxICON_ERROR ); + } + + m_outputDirectoryName->SetValue( dirName.GetFullPath() ); +@@ -319,6 +342,7 @@ + m_scaleOpt->Enable( true ); + m_fineAdjustXscaleOpt->Enable( true ); + m_fineAdjustYscaleOpt->Enable( true ); ++ m_PSFineAdjustWidthOpt->Enable( true ); + m_plotPSNegativeOpt->Enable( true ); + m_PlotOptionsSizer->Hide( m_GerberOptionsSizer ); + m_PlotOptionsSizer->Hide( m_HPGLOptionsSizer ); +@@ -345,6 +369,7 @@ + m_scaleOpt->Enable( false ); + m_fineAdjustXscaleOpt->Enable( false ); + m_fineAdjustYscaleOpt->Enable( false ); ++ m_PSFineAdjustWidthOpt->Enable( false ); + m_plotPSNegativeOpt->SetValue( false ); + m_plotPSNegativeOpt->Enable( false ); + m_PlotOptionsSizer->Show( m_GerberOptionsSizer ); +@@ -370,6 +395,7 @@ + m_scaleOpt->Enable( true ); + m_fineAdjustXscaleOpt->Enable( false ); + m_fineAdjustYscaleOpt->Enable( false ); ++ m_PSFineAdjustWidthOpt->Enable( false ); + m_plotPSNegativeOpt->SetValue( false ); + m_plotPSNegativeOpt->Enable( false ); + m_PlotOptionsSizer->Hide( m_GerberOptionsSizer ); +@@ -397,6 +423,7 @@ + m_scaleOpt->SetSelection( 1 ); + m_fineAdjustXscaleOpt->Enable( false ); + m_fineAdjustYscaleOpt->Enable( false ); ++ m_PSFineAdjustWidthOpt->Enable( false ); + m_plotPSNegativeOpt->SetValue( false ); + m_plotPSNegativeOpt->Enable( false ); + m_PlotOptionsSizer->Hide( m_GerberOptionsSizer ); +@@ -447,7 +474,7 @@ + { + msg = ReturnStringFromValue( g_UserUnit, tempOptions.GetHpglPenDiameter(), UNITS_MILS ); + m_HPGLPenSizeOpt->SetValue( msg ); +- msg.Printf( wxT( "HPGL pen size constrained!\n" ) ); ++ msg.Printf( _( "HPGL pen size constrained!\n" ) ); + m_messagesBox->AppendText( msg ); + } + +@@ -459,7 +486,7 @@ + { + msg = ReturnStringFromValue( UNSCALED_UNITS, tempOptions.GetHpglPenSpeed(), 1 ); + m_HPGLPenSpeedOpt->SetValue( msg ); +- msg.Printf( wxT( "HPGL pen speed constrained!\n" ) ); ++ msg.Printf( _( "HPGL pen speed constrained!\n" ) ); + m_messagesBox->AppendText( msg ); + } + +@@ -471,7 +498,7 @@ + { + msg = ReturnStringFromValue( g_UserUnit, tempOptions.GetHpglPenOverlay(), UNITS_MILS ); + m_HPGLPenOverlayOpt->SetValue( msg ); +- msg.Printf( wxT( "HPGL pen overlay constrained!\n" ) ); ++ msg.Printf( _( "HPGL pen overlay constrained!\n" ) ); + m_messagesBox->AppendText( msg ); + } + +@@ -484,7 +511,7 @@ + msg = ReturnStringFromValue( g_UserUnit, tempOptions.GetPlotLineWidth(), + PCB_INTERNAL_UNIT ); + m_linesWidth->SetValue( msg ); +- msg.Printf( wxT( "Default linewidth constrained!\n" ) ); ++ msg.Printf( _( "Default linewidth constrained!\n" ) ); + m_messagesBox->AppendText( msg ); + } + +@@ -497,7 +524,7 @@ + { + msg.Printf( wxT( "%f" ), m_XScaleAdjust ); + m_fineAdjustXscaleOpt->SetValue( msg ); +- msg.Printf( wxT( "X scale constrained!\n" ) ); ++ msg.Printf( _( "X scale constrained!\n" ) ); + m_messagesBox->AppendText( msg ); + } + +@@ -511,10 +538,28 @@ + { + msg.Printf( wxT( "%f" ), m_YScaleAdjust ); + m_fineAdjustYscaleOpt->SetValue( msg ); +- msg.Printf( wxT( "Y scale constrained!\n" ) ); ++ msg.Printf( _( "Y scale constrained!\n" ) ); ++ m_messagesBox->AppendText( msg ); ++ } ++ ++ // PS Width correction ++ msg = m_PSFineAdjustWidthOpt->GetValue(); ++ tmpDouble = ReturnValueFromString( g_UserUnit, msg, PCB_INTERNAL_UNIT ); ++ ++ if( !setDouble( &m_PSWidthAdjust, tmpDouble, m_WidthAdjustMinValue, m_WidthAdjustMaxValue ) ) ++ { ++ msg = ReturnStringFromValue( g_UserUnit, m_PSWidthAdjust, PCB_INTERNAL_UNIT ); ++ m_PSFineAdjustWidthOpt->SetValue( msg ); ++ msg.Printf( _( "Width correction constrained!\nThe reasonable width correction value must be in a range of [%+f; %+f]" ), ++ To_User_Unit( g_UserUnit, m_WidthAdjustMinValue, PCB_INTERNAL_UNIT ), ++ To_User_Unit( g_UserUnit, m_WidthAdjustMaxValue, PCB_INTERNAL_UNIT ) ); ++ msg += ( g_UserUnit == INCHES )? _(" (\")") : _(" (mm)"); ++ msg += _( " for current design rules!\n" ); + m_messagesBox->AppendText( msg ); + } + ++ m_Config->Write( CONFIG_PS_FINEWIDTH_ADJ, m_PSWidthAdjust ); ++ + m_Config->Write( CONFIG_YFINESCALE_ADJ, m_YScaleAdjust ); + + tempOptions.SetUseGerberExtensions( m_useGerberExtensions->GetValue() ); +@@ -565,10 +610,10 @@ + if( !outputDir.MakeAbsolute( boardFilePath ) ) + { + wxString msg; +- msg.Printf( wxT( " Cannot make %s absolute with respect to %s!" ), ++ msg.Printf( _( " Cannot make %s absolute with respect to %s!" ), + GetChars( outputDir.GetPath() ), + GetChars( boardFilePath ) ); +- wxMessageBox( msg, wxT( "Plot" ), wxICON_ERROR ); ++ wxMessageBox( msg, _( "Plot" ), wxOK | wxICON_ERROR ); + return; + } + +@@ -577,12 +622,13 @@ + if( wxMkdir( outputDir.GetPath() ) ) + { + wxString msg; +- msg.Printf( wxT( "Directory %s created.\n" ), GetChars( outputDir.GetPath() ) ); ++ msg.Printf( _( "Directory %s created.\n" ), GetChars( outputDir.GetPath() ) ); + m_messagesBox->AppendText( msg ); + } + else + { +- wxMessageBox( wxT( "Cannot create output directory!" ), wxT( "Plot" ), wxICON_ERROR ); ++ wxMessageBox( _( "Cannot create output directory!" ), ++ _( "Plot" ), wxOK | wxICON_ERROR ); + return; + } + } +@@ -623,6 +669,9 @@ + if( m_fineAdjustYscaleOpt->IsEnabled() && m_YScaleAdjust != 0.0 ) + g_PcbPlotOptions.m_FineScaleAdjustY = m_YScaleAdjust; + ++ if( m_PSFineAdjustWidthOpt->IsEnabled() ) ++ g_PcbPlotOptions.m_FineWidthAdjust = m_PSWidthAdjust; ++ + switch( g_PcbPlotOptions.GetPlotFormat() ) + { + case PLOT_FORMAT_POST: +diff -ru kicad-2012.01.19-4.rev3256/pcbnew/pcb_plot_params.cpp kicad-2012.01.19-5.rev3256/pcbnew/pcb_plot_params.cpp +--- kicad-2012.01.19-4.rev3256/pcbnew/pcb_plot_params.cpp 2012-01-22 17:23:42.000000000 +0100 ++++ kicad-2012.01.19-5.rev3256/pcbnew/pcb_plot_params.cpp 2012-01-27 20:44:50.000000000 +0100 +@@ -102,6 +102,7 @@ + scaleSelection = 1; + m_FineScaleAdjustX = 1.0; + m_FineScaleAdjustY = 1.0; ++ m_FineWidthAdjust = 0.; + outputDirectory = wxT( "" ); + } + +diff -ru kicad-2012.01.19-4.rev3256/pcbnew/pcb_plot_params.h kicad-2012.01.19-5.rev3256/pcbnew/pcb_plot_params.h +--- kicad-2012.01.19-4.rev3256/pcbnew/pcb_plot_params.h 2012-01-22 17:23:42.000000000 +0100 ++++ kicad-2012.01.19-5.rev3256/pcbnew/pcb_plot_params.h 2012-01-27 20:45:42.000000000 +0100 +@@ -86,6 +86,8 @@ + // Only X and Y dimensions are adjusted: circles are plotted as circle, even if X and Y fine scale differ. + double m_FineScaleAdjustX; // fine scale adjust X axis + double m_FineScaleAdjustY; // dine scale adjust Y axis ++ // These width factor is intended to compensate plotters (and mainly printers) line width error. ++ double m_FineWidthAdjust; + + private: + long layerSelection; +diff -ru kicad-2012.01.19-4.rev3256/pcbnew/plotps.cpp kicad-2012.01.19-5.rev3256/pcbnew/plotps.cpp +--- kicad-2012.01.19-4.rev3256/pcbnew/plotps.cpp 2012-01-27 14:42:34.000000000 +0100 ++++ kicad-2012.01.19-5.rev3256/pcbnew/plotps.cpp 2012-01-27 20:58:11.000000000 +0100 +@@ -101,6 +101,7 @@ + plotter->set_paper_size( SheetPS ); + plotter->set_scale_adjust( g_PcbPlotOptions.m_FineScaleAdjustX, + g_PcbPlotOptions.m_FineScaleAdjustY ); ++ plotter->set_plot_width_adj( g_PcbPlotOptions.m_FineWidthAdjust ); + plotter->set_viewport( offset, scale, g_PcbPlotOptions.m_PlotMirror ); + plotter->set_default_line_width( g_PcbPlotOptions.m_PlotLineWidth ); + plotter->set_creator( wxT( "PCBNEW-PS" ) ); +diff -ru kicad-2012.01.19-4.rev3256/pcbnew/plot_rtn.cpp kicad-2012.01.19-5.rev3256/pcbnew/plot_rtn.cpp +--- kicad-2012.01.19-4.rev3256/pcbnew/plot_rtn.cpp 2012-01-22 17:23:38.000000000 +0100 ++++ kicad-2012.01.19-5.rev3256/pcbnew/plot_rtn.cpp 2012-01-27 20:57:10.000000000 +0100 +@@ -32,6 +32,12 @@ + static void PlotTextModule( PLOTTER* plotter, TEXTE_MODULE* pt_texte, + GRTraceMode trace_mode ); + ++static int doIntValueFitToBand( int aInt, int aMin, int aMax ) ++{ ++ if( aInt < aMin ) return aMin; ++ if( aInt > aMax ) return aMax; ++ return aInt; ++} + + /* Creates the plot for silkscreen layers + */ +@@ -826,6 +832,12 @@ + shape_pos = pad->ReturnShapePos(); + pos = shape_pos; + wxSize margin; ++ double width_adj = 0; ++ ++ if( aLayerMask & ALL_CU_LAYERS ) ++ { ++ width_adj = aPlotter->get_plot_width_adj(); ++ } + + switch( aLayerMask & + ( SOLDERMASK_LAYER_BACK | SOLDERMASK_LAYER_FRONT | +@@ -845,8 +857,8 @@ + break; + } + +- size.x = pad->m_Size.x + ( 2 * margin.x ); +- size.y = pad->m_Size.y + ( 2 * margin.y ); ++ size.x = pad->m_Size.x + ( 2 * margin.x ) + width_adj; ++ size.y = pad->m_Size.y + ( 2 * margin.y ) + width_adj; + + /* Don't draw a null size item : */ + if( size.x <= 0 || size.y <= 0 ) +@@ -913,14 +925,20 @@ + continue; + + int via_margin = 0; ++ double width_adj = 0; + + // If the current layer is a solder mask, use the global mask + // clearance for vias + if( ( aLayerMask & ( SOLDERMASK_LAYER_BACK | SOLDERMASK_LAYER_FRONT ) ) ) + via_margin = GetBoard()->GetBoardDesignSettings()->m_SolderMaskMargin; ++ ++ if( aLayerMask & ALL_CU_LAYERS ) ++ { ++ width_adj = aPlotter->get_plot_width_adj(); ++ } + + pos = Via->m_Start; +- size.x = size.y = Via->m_Width + 2 * via_margin; ++ size.x = size.y = Via->m_Width + 2 * via_margin + width_adj; + + /* Don't draw a null size item : */ + if( size.x <= 0 ) +@@ -941,7 +959,7 @@ + if( (g_TabOneLayerMask[track->GetLayer()] & aLayerMask) == 0 ) + continue; + +- size.x = size.y = track->m_Width; ++ size.x = size.y = track->m_Width + aPlotter->get_plot_width_adj(); + pos = track->m_Start; + end = track->m_End; + +@@ -956,7 +974,7 @@ + if( (g_TabOneLayerMask[track->GetLayer()] & aLayerMask) == 0 ) + continue; + +- size.x = size.y = track->m_Width; ++ size.x = size.y = track->m_Width + aPlotter->get_plot_width_adj(); + pos = track->m_Start; + end = track->m_End; + +@@ -1008,12 +1026,15 @@ + continue; + + pos = pts->m_Start; +- ++ ++ // It is quite possible that the real drill value is less then small drill value. + if( g_PcbPlotOptions.m_DrillShapeOpt == PCB_PLOT_PARAMS::SMALL_DRILL_SHAPE ) +- diam.x = diam.y = SMALL_DRILL; ++ diam.x = diam.y = MIN( SMALL_DRILL, pts->GetDrillValue() ); + else + diam.x = diam.y = pts->GetDrillValue(); +- ++ ++ diam.x -= aPlotter->get_plot_width_adj(); ++ diam.x = doIntValueFitToBand( diam.x, 1, pts->m_Width - 1 ); + aPlotter->flash_pad_circle( pos, diam.x, aTraceMode ); + } + +@@ -1030,11 +1051,19 @@ + if( PtPad->m_DrillShape == PAD_OVAL ) + { + diam = PtPad->m_Drill; ++ diam.x -= aPlotter->get_plot_width_adj(); ++ diam.x = doIntValueFitToBand( diam.x, 1, PtPad->m_Size.x - 1 ); ++ diam.y -= aPlotter->get_plot_width_adj(); ++ diam.y = doIntValueFitToBand( diam.y, 1, PtPad->m_Size.y - 1 ); + aPlotter->flash_pad_oval( pos, diam, PtPad->m_Orient, aTraceMode ); + } + else + { + diam.x = aSmallDrillShape ? SMALL_DRILL : PtPad->m_Drill.x; ++ // It is quite possible that the real pad drill value is less then small drill value. ++ diam.x = aSmallDrillShape ? MIN( SMALL_DRILL, PtPad->m_Drill.x ) : PtPad->m_Drill.x; ++ diam.x -= aPlotter->get_plot_width_adj(); ++ diam.x = doIntValueFitToBand( diam.x, 1, PtPad->m_Size.x - 1 ); + aPlotter->flash_pad_circle( pos, diam.x, aTraceMode ); + } + } diff --git a/kicad-2012.01.19-thermal-relief.rev3281.patch b/kicad-2012.01.19-thermal-relief.rev3281.patch new file mode 100644 index 0000000..d0a1947 --- /dev/null +++ b/kicad-2012.01.19-thermal-relief.rev3281.patch @@ -0,0 +1,13 @@ +--- pcbnew/board_items_to_polygon_shape_transform.cpp.orig 2012-01-26 23:50:21.000000000 +0100 ++++ pcbnew/board_items_to_polygon_shape_transform.cpp 2012-01-27 00:50:23.000000000 +0100 +@@ -615,8 +615,8 @@ + // The pattern roughtly is a 90 deg arc pie + std::vector corners_buffer; + +- // Radius of outer arcs of the shape: +- int outer_radius = dx + aThermalGap; // The radius of the outer arc is pad radius + aThermalGap ++ // Radius of outer arcs of the shape corrected for arc approximation by lines ++ int outer_radius = (int) ( (dx + aThermalGap) * aCorrectionFactor ); + + // Crosspoint of thermal spoke sides, the first point of polygon buffer + corners_buffer.push_back( wxPoint( copper_thickness.x / 2, copper_thickness.y / 2 ) ); diff --git a/kicad-2012.01.19-undo-redo-auto.rev3297.patch b/kicad-2012.01.19-undo-redo-auto.rev3297.patch new file mode 100644 index 0000000..df5ceea --- /dev/null +++ b/kicad-2012.01.19-undo-redo-auto.rev3297.patch @@ -0,0 +1,177 @@ +diff -ru kicad-2012.01.19-2.rev3256/pcbnew/automove.cpp kicad-2012.01.19-3.rev3256/pcbnew/automove.cpp +--- kicad-2012.01.19-2.rev3256/pcbnew/automove.cpp 2012-01-22 17:23:38.000000000 +0100 ++++ kicad-2012.01.19-3.rev3256/pcbnew/automove.cpp 2012-01-27 15:38:42.000000000 +0100 +@@ -17,7 +17,8 @@ + #include "pcbnew_id.h" + #include "class_board.h" + #include "class_module.h" +- ++ ++extern BOARD_ITEM* DuplicateStruct( BOARD_ITEM* aItem ); + + typedef enum { + FIXE_MODULE, +@@ -185,6 +186,11 @@ + bool edgesExists; + double surface; + ++ // Undo: init list ++ PICKED_ITEMS_LIST newList; ++ newList.m_Status = UR_CHANGED; ++ ITEM_PICKER picker( NULL, UR_CHANGED ); ++ + if( GetBoard()->m_Modules == NULL ) + { + DisplayError( this, _( "No modules found!" ) ); +@@ -262,6 +268,10 @@ + continue; + } + ++ // Undo: add copy of old Module to undo ++ picker.m_Link = DuplicateStruct( Module ); ++ picker.m_PickedItemType = Module->Type(); ++ + if( current.x > (Xsize_allowed + start.x) ) + { + current.x = start.x; +@@ -276,9 +286,17 @@ + + PlaceModule( Module, NULL, true ); + ++ // Undo: add new Module to undo ++ picker.m_PickedItem = Module; ++ newList.PushItem( picker ); ++ + current.x += Module->m_BoundaryBox.GetWidth() + pas_grille; + } + ++ // Undo: commit ++ if( newList.GetCount() ) ++ SaveCopyInUndoList( newList, UR_CHANGED ); ++ + DrawPanel->Refresh(); + } + +diff -ru kicad-2012.01.19-2.rev3256/pcbnew/autoplac.cpp kicad-2012.01.19-3.rev3256/pcbnew/autoplac.cpp +--- kicad-2012.01.19-2.rev3256/pcbnew/autoplac.cpp 2012-01-22 17:23:38.000000000 +0100 ++++ kicad-2012.01.19-3.rev3256/pcbnew/autoplac.cpp 2012-01-27 15:49:37.000000000 +0100 +@@ -106,6 +106,11 @@ + float Pas; + int lay_tmp_TOP, lay_tmp_BOTTOM; + ++ // Undo: init list ++ PICKED_ITEMS_LIST newList; ++ newList.m_Status = UR_CHANGED; ++ ITEM_PICKER picker( NULL, UR_CHANGED ); ++ + if( GetBoard()->m_Modules == NULL ) + return; + +@@ -172,7 +177,14 @@ + { + case PLACE_1_MODULE: + if( ThisModule == Module ) ++ { ++ // Module will be placed, add to undo. ++ picker.m_PickedItem = ThisModule; ++ picker.m_PickedItemType = ThisModule->Type(); ++ newList.PushItem( picker ); ++ + Module->m_ModuleStatus |= MODULE_to_PLACE; ++ } + + break; + +@@ -183,7 +195,14 @@ + break; + + if( !GetBoard()->m_BoundaryBox.Contains( Module->m_Pos ) ) ++ { ++ // Module will be placed, add to undo. ++ picker.m_PickedItem = Module; ++ picker.m_PickedItemType = Module->Type(); ++ newList.PushItem( picker ); ++ + Module->m_ModuleStatus |= MODULE_to_PLACE; ++ } + + break; + +@@ -193,6 +212,11 @@ + if( Module->m_ModuleStatus & MODULE_is_LOCKED ) + break; + ++ // Module will be placed, add to undo. ++ picker.m_PickedItem = Module; ++ picker.m_PickedItemType = Module->Type(); ++ newList.PushItem( picker ); ++ + Module->m_ModuleStatus |= MODULE_to_PLACE; + break; + +@@ -204,7 +228,14 @@ + } + + if( !(Module->m_ModuleStatus & MODULE_is_PLACED) ) ++ { ++ // Module will be placed, add to undo. ++ picker.m_PickedItem = Module; ++ picker.m_PickedItemType = Module->Type(); ++ newList.PushItem( picker ); ++ + Module->m_ModuleStatus |= MODULE_to_PLACE; ++ } + + break; + } +@@ -221,6 +252,10 @@ + } + } + ++ // Undo: commit ++ if( newList.GetCount() ) ++ SaveCopyInUndoList( newList, UR_CHANGED ); ++ + activ = 0; + Pas = 100.0; + +diff -ru kicad-2012.01.19-2.rev3256/pcbnew/solve.cpp kicad-2012.01.19-3.rev3256/pcbnew/solve.cpp +--- kicad-2012.01.19-2.rev3256/pcbnew/solve.cpp 2012-01-22 17:23:38.000000000 +0100 ++++ kicad-2012.01.19-3.rev3256/pcbnew/solve.cpp 2012-01-27 16:08:23.000000000 +0100 +@@ -79,6 +79,7 @@ + static int Ncurrent; /* measures of progress */ + static int s_Clearance; // Clearance value used in autorouter + ++static PICKED_ITEMS_LIST s_ItemsListPicker; + + #define NOSUCCESS 0 + #define STOP_FROM_ESC -1 +@@ -272,6 +273,9 @@ + + Ncurrent = 0; + ++ // Prepare the undo command info ++ s_ItemsListPicker.ClearListAndDeleteItems(); // Should not be necessary, but... ++ + /* go until no more work to do */ + GetWork( &row_source, &col_source, ¤t_net_code, + &row_target, &col_target, &pt_cur_ch ); // First net to route. +@@ -375,6 +379,9 @@ + + DrawPanel->m_AbortEnable = false; + ++ SaveCopyInUndoList( s_ItemsListPicker, UR_UNSPECIFIED ); ++ s_ItemsListPicker.ClearItemsList(); // s_ItemsListPicker is no more owner of picked items ++ + return SUCCESS; + } + +@@ -1324,6 +1331,8 @@ + + while( ( track = g_CurrentTrackList.PopFront() ) != NULL ) + { ++ ITEM_PICKER picker( track, UR_NEW ); ++ s_ItemsListPicker.PushItem( picker ); + pcbframe->GetBoard()->m_Track.Insert( track, insertBeforeMe ); + } + diff --git a/kicad.spec b/kicad.spec index 74ba4e5..d753a23 100644 --- a/kicad.spec +++ b/kicad.spec @@ -28,8 +28,8 @@ # 216: Andrey Fedorushkov 2011-06-02 update russian GUI %define name kicad -%define date 20111228 -%define revision 3254 +%define date 20120119 +%define revision 3256 %define version %{date}.bzr%{revision} %define docname kicad-doc @@ -38,22 +38,34 @@ %define docversion %{docdate}.bzr%{docrevision} %define libname kicad-library -%define libdate 20111126 -%define librevision 112 +%define libdate 20120119 +%define librevision 114 %define libversion %{libdate}.bzr%{librevision} -%define release %mkrel 1 - Name: %{name} Summary: An open source software for the creation of electronic schematic diagrams Version: %{version} -Release: %{release} -Source0: %{name}-sources-bzr%{revision}.tar.bz2 -Source1: %{docname}-bzr%{docrevision}.tar.bz2 -Source2: %{libname}-bzr%{librevision}.tar.bz2 +Release: 1 License: GPLv2+ Group: Sciences/Computer science Url: http://www.lis.inpg.fr/realise_au_lis/kicad/ +Source0: %{name}-sources-bzr%{revision}.tar.bz2 +Source1: %{docname}-bzr%{docrevision}.tar.bz2 +Source2: %{libname}-bzr%{librevision}.tar.bz2 + +# Fedora & upstream patches +Patch11: %{name}-2011.07.12-fix-linking.patch +Patch12: %{name}-2011.07.12-boost-polygon-declare-gtlsort-earlier.patch +Patch13: %{name}-2012.01.19-fix-linking.patch +Patch14: %{name}-2012.01.19-fix-bom-in-python.patch +Patch20: %{name}-2012.01.19-fix-plotting-scale.patch +Patch21: %{name}-2012.01.19-move-up-junction-button.rev3371.patch +Patch22: %{name}-2012.01.19-thermal-relief.rev3281.patch +Patch23: %{name}-2012.01.19-undo-redo-auto.rev3297.patch +Patch24: %{name}-2012.01.19-cvpcb-preview.rev3303.patch +Patch25: %{name}-2012.01.19-pcb-calculation.rev3328.patch +Patch26: %{name}-2012.01.19-ps-plotting-width-correction.rev3342.patch + BuildRequires: wxgtku-devel BuildRequires: mesa-common-devel BuildRequires: imagemagick @@ -77,10 +89,9 @@ Kicad is a set of four softwares and a project manager: Kicad: project manager. %package doc -Summary: Documentation for kicad (creation of electronic schematic diagrams) -Version: %{docversion} -Release: %{release} -License: GPL +Summary: Documentation for kicad (creation of electronic schematic diagrams) +Version: %{docversion} +License: GPL Requires: %{name} BuildArch: noarch @@ -92,9 +103,8 @@ Kicad-doc is the documentation for kicad. %package locales-ca Summary: Catalan Kicad locales -Version: %{docversion} -Release: %{release} -License: GPL +Version: %{docversion} +License: GPL Requires: %{name} Provides: %{name}-locale BuildArch: noarch @@ -107,9 +117,8 @@ Kicad-locales provides Catalan locales for kicad. %package locales-cs Summary: Czech Kicad locales -Version: %{docversion} -Release: %{release} -License: GPL +Version: %{docversion} +License: GPL Requires: %{name} Provides: %{name}-locale BuildArch: noarch @@ -122,9 +131,8 @@ Kicad-locales provides Czech locales for kicad. %package locales-de Summary: German Kicad locales -Version: %{docversion} -Release: %{release} -License: GPL +Version: %{docversion} +License: GPL Requires: %{name} Provides: %{name}-locale BuildArch: noarch @@ -137,9 +145,8 @@ Kicad-locales provides German locales for kicad. %package locales-es Summary: Spanish Kicad locales -Version: %{docversion} -Release: %{release} -License: GPL +Version: %{docversion} +License: GPL Requires: %{name} Provides: %{name}-locale BuildArch: noarch @@ -152,9 +159,8 @@ Kicad-locales provides Spanish locales for kicad. %package locales-fi Summary: Finnish Kicad locales -Version: %{docversion} -Release: %{release} -License: GPL +Version: %{docversion} +License: GPL Requires: %{name} Provides: %{name}-locale BuildArch: noarch @@ -167,9 +173,8 @@ Kicad-locales provides Finnish locales for kicad. %package locales-fr Summary: French Kicad locales -Version: %{docversion} -Release: %{release} -License: GPL +Version: %{docversion} +License: GPL Requires: %{name} Provides: %{name}-locale BuildArch: noarch @@ -197,9 +202,8 @@ Kicad-locales provides Hungarian locales for kicad. %package locales-it Summary: Italian Kicad locales -Version: %{docversion} -Release: %{release} -License: GPL +Version: %{docversion} +License: GPL Requires: %{name} Provides: %{name}-locale BuildArch: noarch @@ -212,9 +216,8 @@ Kicad-locales provides Italian locales for kicad. %package locales-ja Summary: Japanese Kicad locales -Version: %{docversion} -Release: %{release} -License: GPL +Version: %{docversion} +License: GPL Requires: %{name} Provides: %{name}-locale BuildArch: noarch @@ -227,9 +230,8 @@ Kicad-locales provides Japanese locales for kicad. %package locales-ko Summary: Korean Kicad locales -Version: %{docversion} -Release: %{release} -License: GPL +Version: %{docversion} +License: GPL Requires: %{name} Provides: %{name}-locale BuildArch: noarch @@ -242,9 +244,8 @@ Kicad-locales provides Korean locales for kicad. %package locales-nl Summary: Dutch Kicad locales -Version: %{docversion} -Release: %{release} -License: GPL +Version: %{docversion} +License: GPL Requires: %{name} Provides: %{name}-locale BuildArch: noarch @@ -257,9 +258,8 @@ Kicad-locales provides Dutch locales for kicad. %package locales-pl Summary: Polish Kicad locales -Version: %{docversion} -Release: %{release} -License: GPL +Version: %{docversion} +License: GPL Requires: %{name} Provides: %{name}-locale BuildArch: noarch @@ -272,9 +272,8 @@ Kicad-locales provides Polish locales for kicad. %package locales-pt Summary: Portuguese Kicad locales -Version: %{docversion} -Release: %{release} -License: GPL +Version: %{docversion} +License: GPL Requires: %{name} Provides: %{name}-locale BuildArch: noarch @@ -287,9 +286,8 @@ Kicad-locales provides Portuguese locales for kicad. %package locales-ru Summary: Russian Kicad locales -Version: %{docversion} -Release: %{release} -License: GPL +Version: %{docversion} +License: GPL Requires: %{name} Provides: %{name}-locale BuildArch: noarch @@ -302,9 +300,8 @@ Kicad-locales provides Russian locales for kicad. %package locales-sl Summary: Slovenian Kicad locales -Version: %{docversion} -Release: %{release} -License: GPL +Version: %{docversion} +License: GPL Requires: %{name} Provides: %{name}-locale BuildArch: noarch @@ -317,9 +314,8 @@ Kicad-locales provides Slovenian locales for kicad. %package locales-sv Summary: Salvadoran Kicad locales -Version: %{docversion} -Release: %{release} -License: GPL +Version: %{docversion} +License: GPL Requires: %{name} Provides: %{name}-locale BuildArch: noarch @@ -332,9 +328,8 @@ Kicad-locales provides Salvadoran locales for kicad. %package locales-zh-cn Summary: Chinese Kicad locales -Version: %{docversion} -Release: %{release} -License: GPL +Version: %{docversion} +License: GPL Requires: %{name} Provides: %{name}-locale BuildArch: noarch @@ -346,10 +341,9 @@ schematic diagrams and printed circuit board artwork. Kicad-locales provides Chinese locales for kicad. %package library -Summary: Library for kicad (creation of electronic schematic diagrams) -Version: %{libversion} -Release: %{release} -License: GPL +Summary: Library for kicad (creation of electronic schematic diagrams) +Version: %{libversion} +License: GPL Requires: %{name} BuildArch: noarch @@ -363,6 +357,19 @@ Kicad-library is a set of library needed by kicad. %setup -q -T -b 0 -n %{name} %setup -q -T -b 1 -n %{docname} %setup -q -T -b 2 -n %{libname} +pushd ../%{name} +%patch11 -p0 -b .fix-linking1 +%patch12 -p0 -b .gcc-4.7 +%patch13 -p0 -b .fix-linking2 +%patch14 -p1 -b .fix-bom-in-python +%patch20 -p0 -b .fix-plotting-scale +%patch21 -p0 -b .junction-button +%patch22 -p0 -b .thermal-relief +%patch23 -p1 -b .undo-redo +%patch24 -p1 -b .cvpcb-preview +%patch25 -p0 -b .pcb-calculation +%patch26 -p1 -b .width-correction +popd %build export LC_ALL=C @@ -394,30 +401,28 @@ pushd %{name} popd %install -%__rm -rf %{buildroot} - cd ../ # Installing kicad-doc pushd %{docname} - make -C build DESTDIR=%buildroot install + %makeinstall_std -C build popd # Installing kicad-library pushd %{libname} - make -C build DESTDIR=%buildroot install + %makeinstall_std -C build popd # Installing kicad pushd %{name} - make -C build DESTDIR=%buildroot install + %makeinstall_std -C build # create desktop file desktop-file-install --vendor='' \ --remove-category='Scientific' \ --add-category='Science;Electronics;Education' \ - --dir=%buildroot%{_datadir}/applications \ - %buildroot%{_datadir}/applications/*.desktop + --dir=%{buildroot}%{_datadir}/applications \ + %{buildroot}%{_datadir}/applications/*.desktop # create icons mkdir -p %{buildroot}%{_miconsdir} %{buildroot}%{_iconsdir} %{buildroot}%{_liconsdir} @@ -426,11 +431,7 @@ pushd %{name} convert -resize 48x48 %{buildroot}%{_datadir}/icons/hicolor/scalable/apps/%{name}.svg %{buildroot}%{_liconsdir}/%{name}.png popd -%clean -%__rm -rf %{buildroot} - %files -%defattr(-,root,root) %{_bindir}/* %{_prefix}/lib/%{name}/plugins/netlist_form_pads-pcb.xsl %{_iconsdir}/*/*/* @@ -445,79 +446,60 @@ popd %{_datadir}/mimelnk/application/x-kicad-schematic.desktop %files doc -%defattr(-,root,root) %doc %{_datadir}/doc/%{name} %files locales-ca -%defattr(-,root,root) %{_datadir}/%{name}/internat/ca/ %files locales-cs -%defattr(-,root,root) %{_datadir}/%{name}/internat/cs/ %files locales-de -%defattr(-,root,root) %{_datadir}/%{name}/internat/de/ %files locales-es -%defattr(-,root,root) %{_datadir}/%{name}/internat/es/ %files locales-fi -%defattr(-,root,root) %{_datadir}/%{name}/internat/fi/ %files locales-fr -%defattr(-,root,root) %{_datadir}/%{name}/internat/fr/ %files locales-hu -%defattr(-,root,root) %{_datadir}/%{name}/internat/hu/ %files locales-it -%defattr(-,root,root) %{_datadir}/%{name}/internat/it/ %files locales-ja -%defattr(-,root,root) %{_datadir}/%{name}/internat/ja/ %files locales-ko -%defattr(-,root,root) %{_datadir}/%{name}/internat/ko/ %files locales-nl -%defattr(-,root,root) %{_datadir}/%{name}/internat/nl/ %files locales-pl -%defattr(-,root,root) %{_datadir}/%{name}/internat/pl/ %files locales-pt -%defattr(-,root,root) %{_datadir}/%{name}/internat/pt/ %files locales-ru -%defattr(-,root,root) %{_datadir}/%{name}/internat/ru/ %files locales-sl -%defattr(-,root,root) %{_datadir}/%{name}/internat/sl %files locales-sv -%defattr(-,root,root) %{_datadir}/%{name}/internat/sv/ %files locales-zh-cn -%defattr(-,root,root) %{_datadir}/%{name}/internat/zh_CN/ %files library -%defattr(-,root,root) %{_datadir}/%{name}/library %{_datadir}/%{name}/modules