← Back to team overview

kicad-developers team mailing list archive

Re: [RFC] Pin edition coupling description

 

I attach a patch that hopefully describes the mode a bit clearer. There
is also a new icon to reflect the new logic behind the patch (see the
attached imaged for comparison: left is the old icon, right is the
proposed icon).

Regards,
Orson

On 01/23/2018 05:09 PM, jp charras wrote:
> Le 23/01/2018 à 16:55, Maciej Sumiński a écrit :
>> On 01/23/2018 04:35 PM, jp charras wrote:
>>> Le 23/01/2018 à 12:18, Maciej Sumiński a écrit :
>>>> I am trying to find a better description for pin edition coupling in the
>>>> symbol library editor (the rightmost button on the top toolbar). My
>>>> proposal is in the attached patch, but perhaps one of our native English
>>>> speakers can come up with a clearer description.
>>>>
>>>> Cheers,
>>>> Orson
>>>
>>> Yes, this is a good proposal.
>>>
>>> Unfortunately, it is not yet perfect.
>>>
>>> For historical reasons, the tool that controls the multiunit pin edit mode enables this mode when it
>>> is disabled (not activated), and disable the multiunit pin edit mode when it is activated.
>>> (because a long time ago, multiunit parts with interchangeable units were 99% of symbols, and
>>> disabling this multiunit pin edit mode (activating the tool) was useful for only 1% of symbols )
>>>
>>> For instance, the sentence is not clear:
>>> "Normally enabled for multiunit parts with interchangeable units."
>>> If "Normally enabled" is related to the pin edit mode, this is true, but the tool is not in
>>> activated state
>>> If "Normally enabled" is related to the tool, the sentence is wrong.
>>>
>>> Therefore it is really not easy to give a short and understandable explanation in a tooltip.
>>> (unless changing the tool action)
>>
>> Good point Jean-Pierre. I think the way forward is to rename the button
>> from "Disable synchronized pin edit mode" to "Synchronized pin edit
>> mode", so the button enabled will represent the active state. Removing
>> negations will make the description very clear. We can still keep it
>> enabled by default for multi-unit parts with interchangeable units.
>>
>> Regards,
>> Orson
> 
> For me, renaming the button (and slightly changing the icon look to avoid mistakes: the main issue
> between versions 4 and 5 and old docs) is the less bad way.
> 
> (I don't know a good way)
> 
> 

From cda1c694714bef16ac59f548455f104c6ff70bf6 Mon Sep 17 00:00:00 2001
From: Maciej Suminski <maciej.suminski@xxxxxxx>
Date: Tue, 23 Jan 2018 12:15:19 +0100
Subject: [PATCH 1/2] Pin edit coupling: renamed and changed the description

This commit aims at making the pin edit coupling easier to understand.
It renames the mode to 'synchronized pin edit', shortens the description
and inverts the logic to avoid double negation.

To make the code clearer, two items have their name changed to fit the
new description:
- m_editPinsSeparately       -> m_syncPinEdit
- ID_LIBEDIT_EDIT_PIN_BY_PIN -> ID_LIBEDIT_SYNC_PIN_EDIT
---
 eeschema/block_libedit.cpp  |  8 ++++----
 eeschema/class_libentry.cpp |  9 ++++++---
 eeschema/class_libentry.h   |  5 ++---
 eeschema/eeschema_id.h      |  2 +-
 eeschema/libedit.cpp        |  3 ++-
 eeschema/libeditframe.cpp   | 32 +++++++++++++++-----------------
 eeschema/libeditframe.h     | 12 ++++++------
 eeschema/tool_lib.cpp       | 11 ++++-------
 8 files changed, 40 insertions(+), 42 deletions(-)

diff --git a/eeschema/block_libedit.cpp b/eeschema/block_libedit.cpp
index e0b156256..34d9c7b38 100644
--- a/eeschema/block_libedit.cpp
+++ b/eeschema/block_libedit.cpp
@@ -124,7 +124,7 @@ bool LIB_EDIT_FRAME::HandleBlockEnd( wxDC* aDC )
         if( GetCurPart() )
             ItemCount = GetCurPart()->SelectItems( *block,
                                                   m_unit, m_convert,
-                                                  m_editPinsSeparately );
+                                                  m_syncPinEdit );
         if( ItemCount )
         {
             nextCmd = true;
@@ -151,7 +151,7 @@ bool LIB_EDIT_FRAME::HandleBlockEnd( wxDC* aDC )
     case BLOCK_CUT:
         if( GetCurPart() )
             ItemCount = GetCurPart()->SelectItems( *block, m_unit, m_convert,
-                                                  m_editPinsSeparately );
+                                                  m_syncPinEdit );
 
         if( ItemCount )
         {
@@ -176,7 +176,7 @@ bool LIB_EDIT_FRAME::HandleBlockEnd( wxDC* aDC )
         if( GetCurPart() )
             ItemCount = GetCurPart()->SelectItems( *block,
                                                   m_unit, m_convert,
-                                                  m_editPinsSeparately );
+                                                  m_syncPinEdit );
         if( ItemCount )
             SaveCopyInUndoList( GetCurPart() );
 
@@ -200,7 +200,7 @@ bool LIB_EDIT_FRAME::HandleBlockEnd( wxDC* aDC )
         if( GetCurPart() )
             ItemCount = GetCurPart()->SelectItems( *block,
                                                   m_unit, m_convert,
-                                                  m_editPinsSeparately );
+                                                  m_syncPinEdit );
         if( ItemCount )
             SaveCopyInUndoList( GetCurPart() );
 
diff --git a/eeschema/class_libentry.cpp b/eeschema/class_libentry.cpp
index e9677e6aa..46c5a80c2 100644
--- a/eeschema/class_libentry.cpp
+++ b/eeschema/class_libentry.cpp
@@ -925,7 +925,7 @@ void LIB_PART::ClearStatus()
 }
 
 
-int LIB_PART::SelectItems( EDA_RECT& aRect, int aUnit, int aConvert, bool aEditPinByPin )
+int LIB_PART::SelectItems( EDA_RECT& aRect, int aUnit, int aConvert, bool aSyncPinEdit )
 {
     int itemCount = 0;
 
@@ -939,8 +939,11 @@ int LIB_PART::SelectItems( EDA_RECT& aRect, int aUnit, int aConvert, bool aEditP
             if( item.Type() != LIB_PIN_T )
                 continue;
 
-             // Specific rules for pins.
-            if( aEditPinByPin || m_unitsLocked
+             // Specific rules for pins:
+             // - do not select pins in other units when synchronized pin edit mode is disabled
+             // - do not select pins in other units when units are not interchangeable
+             // - in other cases verify if the pin belongs to the requested unit
+            if( !aSyncPinEdit || m_unitsLocked
                 || ( item.m_Convert && item.m_Convert != aConvert ) )
                 continue;
         }
diff --git a/eeschema/class_libentry.h b/eeschema/class_libentry.h
index 2bee7de9c..79cfeecce 100644
--- a/eeschema/class_libentry.h
+++ b/eeschema/class_libentry.h
@@ -579,12 +579,11 @@ public:
      * @param aRect - The bounding rectangle to test in draw items are inside.
      * @param aUnit - The current unit number to test against.
      * @param aConvert - Are the draw items being selected a conversion.
-     * @param aEditPinByPin - Used to ignore pin selections when in edit pin
-     *                        by pin mode is enabled.
+     * @param aSyncPinEdit - Enable pin selection in other units.
      * @return The number of draw objects found inside the block select
      *         rectangle.
      */
-    int SelectItems( EDA_RECT& aRect, int aUnit, int aConvert, bool aEditPinByPin );
+    int SelectItems( EDA_RECT& aRect, int aUnit, int aConvert, bool aSyncPinEdit );
 
     /**
      * Clears all the draw items marked by a block select.
diff --git a/eeschema/eeschema_id.h b/eeschema/eeschema_id.h
index c641323b7..8ca2335cf 100644
--- a/eeschema/eeschema_id.h
+++ b/eeschema/eeschema_id.h
@@ -209,7 +209,7 @@ enum id_eeschema_frm
     /* Library editor horizontal toolbar IDs. */
     ID_DE_MORGAN_NORMAL_BUTT,
     ID_DE_MORGAN_CONVERT_BUTT,
-    ID_LIBEDIT_EDIT_PIN_BY_PIN,
+    ID_LIBEDIT_SYNC_PIN_EDIT,
     ID_LIBEDIT_EDIT_PIN_BY_TABLE,
     ID_LIBEDIT_VIEW_DOC,
     ID_LIBEDIT_CHECK_PART,
diff --git a/eeschema/libedit.cpp b/eeschema/libedit.cpp
index 14e55103c..71347198e 100644
--- a/eeschema/libedit.cpp
+++ b/eeschema/libedit.cpp
@@ -130,7 +130,8 @@ bool LIB_EDIT_FRAME::LoadComponentFromCurrentLib( const wxString& aAliasName, in
     if( aConvert > 0 )
         m_convert = aConvert;
 
-    m_editPinsSeparately = GetCurPart()->UnitsLocked() ? true : false;
+    // Enable synchronized pin edit mode for symbols with interchangeable units
+    m_syncPinEdit = !GetCurPart()->UnitsLocked();
 
     GetScreen()->ClearUndoRedoList();
     Zoom_Automatique( false );
diff --git a/eeschema/libeditframe.cpp b/eeschema/libeditframe.cpp
index 9da51de76..c4ba5493b 100644
--- a/eeschema/libeditframe.cpp
+++ b/eeschema/libeditframe.cpp
@@ -124,7 +124,7 @@ BEGIN_EVENT_TABLE( LIB_EDIT_FRAME, EDA_DRAW_FRAME )
     EVT_TOOL( ID_DE_MORGAN_NORMAL_BUTT, LIB_EDIT_FRAME::OnSelectBodyStyle )
     EVT_TOOL( ID_DE_MORGAN_CONVERT_BUTT, LIB_EDIT_FRAME::OnSelectBodyStyle )
     EVT_TOOL( ID_LIBEDIT_VIEW_DOC, LIB_EDIT_FRAME::OnViewEntryDoc )
-    EVT_TOOL( ID_LIBEDIT_EDIT_PIN_BY_PIN, LIB_EDIT_FRAME::Process_Special_Functions )
+    EVT_TOOL( ID_LIBEDIT_SYNC_PIN_EDIT, LIB_EDIT_FRAME::Process_Special_Functions )
     EVT_TOOL( ID_LIBEDIT_EDIT_PIN_BY_TABLE, LIB_EDIT_FRAME::OnOpenPinTable )
 
     EVT_COMBOBOX( ID_LIBEDIT_SELECT_PART_NUMBER, LIB_EDIT_FRAME::OnSelectPart )
@@ -186,7 +186,7 @@ BEGIN_EVENT_TABLE( LIB_EDIT_FRAME, EDA_DRAW_FRAME )
     EVT_UPDATE_UI( ID_LIBEDIT_SAVE_LIBRARY, LIB_EDIT_FRAME::OnUpdateSaveLib )
     EVT_UPDATE_UI( ID_LIBEDIT_SAVE_LIBRARY_AS, LIB_EDIT_FRAME::OnUpdateSaveLibAs )
     EVT_UPDATE_UI( ID_LIBEDIT_VIEW_DOC, LIB_EDIT_FRAME::OnUpdateViewDoc )
-    EVT_UPDATE_UI( ID_LIBEDIT_EDIT_PIN_BY_PIN, LIB_EDIT_FRAME::OnUpdatePinByPin )
+    EVT_UPDATE_UI( ID_LIBEDIT_SYNC_PIN_EDIT, LIB_EDIT_FRAME::OnUpdateSyncPinEdit )
     EVT_UPDATE_UI( ID_LIBEDIT_EDIT_PIN_BY_TABLE, LIB_EDIT_FRAME::OnUpdatePinTable )
     EVT_UPDATE_UI( ID_LIBEDIT_SELECT_PART_NUMBER, LIB_EDIT_FRAME::OnUpdatePartNumber )
     EVT_UPDATE_UI( ID_LIBEDIT_SELECT_ALIAS, LIB_EDIT_FRAME::OnUpdateSelectAlias )
@@ -211,7 +211,7 @@ LIB_EDIT_FRAME::LIB_EDIT_FRAME( KIWAY* aKiway, wxWindow* aParent ) :
     m_drawSpecificConvert = true;
     m_drawSpecificUnit    = false;
     m_hotkeysDescrList    = g_Libedit_Hokeys_Descr;
-    m_editPinsSeparately = false;
+    m_syncPinEdit         = false;
     m_repeatPinStep = DEFAULT_REPEAT_OFFSET_PIN;
     SetShowElectricalType( true );
 
@@ -620,13 +620,11 @@ void LIB_EDIT_FRAME::OnUpdateViewDoc( wxUpdateUIEvent& event )
 }
 
 
-void LIB_EDIT_FRAME::OnUpdatePinByPin( wxUpdateUIEvent& event )
+void LIB_EDIT_FRAME::OnUpdateSyncPinEdit( wxUpdateUIEvent& event )
 {
-    LIB_PART*      part = GetCurPart();
-
-    event.Enable( part && part->GetUnitCount() > 1 && !part->UnitsLocked() );
-
-    event.Check( m_editPinsSeparately );
+    LIB_PART* part = GetCurPart();
+    event.Enable( part && part->IsMulti() && !part->UnitsLocked() );
+    event.Check( m_syncPinEdit );
 }
 
 
@@ -811,8 +809,8 @@ void LIB_EDIT_FRAME::Process_Special_Functions( wxCommandEvent& event )
     case ID_POPUP_LIBEDIT_CANCEL_EDITING:
         break;
 
-    case ID_LIBEDIT_EDIT_PIN_BY_PIN:
-        m_editPinsSeparately = m_mainToolBar->GetToolToggled( ID_LIBEDIT_EDIT_PIN_BY_PIN );
+    case ID_LIBEDIT_SYNC_PIN_EDIT:
+        m_syncPinEdit = m_mainToolBar->GetToolToggled( ID_LIBEDIT_SYNC_PIN_EDIT );
         break;
 
     case ID_POPUP_LIBEDIT_END_CREATE_ITEM:
@@ -1076,8 +1074,8 @@ void LIB_EDIT_FRAME::SetCurPart( LIB_PART* aPart )
     // retain in case this wxFrame is re-opened later on the same PROJECT
     Prj().SetRString( PROJECT::SCH_LIBEDIT_CUR_PART, partName );
 
-    // Ensure pin editind can be coupled for multi unitz
-    m_editPinsSeparately = aPart && aPart->IsMulti() && aPart->UnitsLocked();
+    // Ensure synchronized pin edit can be enabled only symbols with interchangeable units
+    m_syncPinEdit = aPart && aPart->IsMulti() && !aPart->UnitsLocked();
 }
 
 
@@ -1148,8 +1146,8 @@ void LIB_EDIT_FRAME::OnEditComponentProperties( wxCommandEvent& event )
     // to the best value
     if( partLocked != GetCurPart()->UnitsLocked() )
     {
-        // m_editPinsSeparately is set to the better value
-        m_editPinsSeparately = GetCurPart()->UnitsLocked() ? true : false;
+        // Enable synchronized pin edit mode for symbols with interchangeable units
+        m_syncPinEdit = !GetCurPart()->UnitsLocked();
         // also set default edit options to the better value
         // Usually if units are locked, graphic items are specific to each unit
         // and if units are interchangeable, graphic items are common to units
@@ -1512,9 +1510,9 @@ void LIB_EDIT_FRAME::OnOpenPinTable( wxCommandEvent& aEvent )
 
 bool LIB_EDIT_FRAME::SynchronizePins()
 {
-    LIB_PART*      part = GetCurPart();
+    LIB_PART* part = GetCurPart();
 
-    return !m_editPinsSeparately && part && part->IsMulti() && !part->UnitsLocked();
+    return m_syncPinEdit && part && part->IsMulti() && !part->UnitsLocked();
 }
 
 
diff --git a/eeschema/libeditframe.h b/eeschema/libeditframe.h
index 2c5bf7b1e..33bb35b55 100644
--- a/eeschema/libeditframe.h
+++ b/eeschema/libeditframe.h
@@ -83,20 +83,20 @@ class LIB_EDIT_FRAME : public SCH_BASE_FRAME
      * Therefore deleting, moving pins are made for all pins at the same location
      * When units are interchangeable, synchronizing edition of pins is usually
      * the best way, because if units are interchangeable, it imply all similar
-     * pins are on the same location
+     * pins are on the same location.
      * When units are non interchangeable, do not synchronize edition of pins, because
-     * each part is specific, and there are no similar pins between units
+     * each part is specific, and there are no similar pins between units.
      *
      * Setting this to false allows editing each pin per part or body style
      * regardless other pins at the same location.
      * This requires the user to open each part or body style to make changes
      * to the other pins at the same location.
      * To know if others pins must be coupled when editing a pin, use
-     * SynchronizePins() instead of m_editPinsSeparately, because SynchronizePins()
+     * SynchronizePins() instead of m_syncPinEdit, because SynchronizePins()
      * is more reliable (takes in account the fact units are interchangeable,
-     * there are more than one unit )
+     * there are more than one unit).
      */
-    bool m_editPinsSeparately;
+    bool m_syncPinEdit;
 
     /**
      * the option to show the pin electrical name in the component editor
@@ -344,7 +344,7 @@ public:
     void OnUpdateSaveLib( wxUpdateUIEvent& event );
     void OnUpdateSaveLibAs( wxUpdateUIEvent& event );
     void OnUpdateViewDoc( wxUpdateUIEvent& event );
-    void OnUpdatePinByPin( wxUpdateUIEvent& event );
+    void OnUpdateSyncPinEdit( wxUpdateUIEvent& event );
     void OnUpdatePinTable( wxUpdateUIEvent& event );
     void OnUpdatePartNumber( wxUpdateUIEvent& event );
     void OnUpdateDeMorganNormal( wxUpdateUIEvent& event );
diff --git a/eeschema/tool_lib.cpp b/eeschema/tool_lib.cpp
index 98649b722..2640b2a4f 100644
--- a/eeschema/tool_lib.cpp
+++ b/eeschema/tool_lib.cpp
@@ -205,13 +205,10 @@ void LIB_EDIT_FRAME::ReCreateHToolbar()
 
     m_mainToolBar->AddSeparator();
     KiScaledSeparator( m_mainToolBar, this );
-    msg = _( "Allows disabling pin edition coupling between units.\n"
-             "When not disabled, adding, deleting and moving pins are synchronized\n"
-             "between units for pins at the same location.\n"
-             "For instance, adding a pin to a unit also add a similar pin to other units at the same location.\n"
-             "However, pins can have a different number or size because they are specific to a unit.\n"
-             "Usually synchronization is enabled when units are interchangeable and disabled if not." );
-    m_mainToolBar->AddTool( ID_LIBEDIT_EDIT_PIN_BY_PIN, wxEmptyString, KiScaledBitmap( pin2pin_xpm, this ),
+    msg = _( "Synchronized pin edit mode\n"
+             "Synchronized pin edit mode propagates all pin changes to other units.\n"
+             "Normally enabled for multiunit parts with interchangeable units." );
+    m_mainToolBar->AddTool( ID_LIBEDIT_SYNC_PIN_EDIT, wxEmptyString, KiScaledBitmap( pin2pin_xpm, this ),
                             msg, wxITEM_CHECK );
     m_mainToolBar->AddTool( ID_LIBEDIT_EDIT_PIN_BY_TABLE, wxEmptyString, KiScaledBitmap( pin_table_xpm, this ),
                             _( "Show pin table" ) );
-- 
2.13.3

From 3ce956473c86a06b548c21753eb1d2cdc2e2fdbd Mon Sep 17 00:00:00 2001
From: Maciej Suminski <maciej.suminski@xxxxxxx>
Date: Wed, 24 Jan 2018 14:13:10 +0100
Subject: [PATCH 2/2] New pin2pin icon (synchronized pin edit mode)

---
 bitmaps_png/cpp_26/pin2pin.cpp  |  76 +++++++++++++---------
 bitmaps_png/sources/pin2pin.svg | 141 +++++++++++++++++++++++++---------------
 2 files changed, 133 insertions(+), 84 deletions(-)

diff --git a/bitmaps_png/cpp_26/pin2pin.cpp b/bitmaps_png/cpp_26/pin2pin.cpp
index bc66052de..80a5d24b0 100644
--- a/bitmaps_png/cpp_26/pin2pin.cpp
+++ b/bitmaps_png/cpp_26/pin2pin.cpp
@@ -8,38 +8,50 @@
 static const unsigned char png[] = {
  0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 0x00, 0x00, 0x00, 0x0d, 0x49, 0x48, 0x44, 0x52,
  0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x1a, 0x08, 0x06, 0x00, 0x00, 0x00, 0xa9, 0x4a, 0x4c,
- 0xce, 0x00, 0x00, 0x01, 0xe4, 0x49, 0x44, 0x41, 0x54, 0x48, 0xc7, 0xc5, 0x94, 0xcb, 0x6a, 0xc2,
- 0x40, 0x14, 0x86, 0xc7, 0x45, 0x22, 0x28, 0xe4, 0x0d, 0x5a, 0xe8, 0x2b, 0xc4, 0xe0, 0xd6, 0x0b,
- 0xa2, 0x48, 0xbc, 0xad, 0x4b, 0x5f, 0xa1, 0x5b, 0x41, 0x5d, 0xd8, 0x96, 0x62, 0x90, 0xee, 0xba,
- 0x71, 0xd9, 0x96, 0x6e, 0xbd, 0x3c, 0x85, 0x11, 0x44, 0x5c, 0x5a, 0xfa, 0x10, 0xa5, 0xd0, 0x42,
- 0x76, 0x66, 0x7a, 0xce, 0x74, 0x62, 0xc7, 0xa9, 0xc6, 0x8a, 0x23, 0x1d, 0xf8, 0xc8, 0x30, 0x33,
- 0x39, 0x3f, 0xe7, 0xcc, 0x7f, 0x86, 0x90, 0xff, 0x1a, 0xf9, 0x7c, 0x3e, 0x5e, 0xa9, 0x54, 0x2c,
- 0xdb, 0xb6, 0x13, 0xe5, 0x72, 0x39, 0xa6, 0x5c, 0xa0, 0x58, 0x2c, 0x46, 0x4b, 0xa5, 0x52, 0x17,
- 0x82, 0x7b, 0x00, 0xe5, 0x78, 0x20, 0xda, 0x83, 0x3d, 0x23, 0xe4, 0xd7, 0x4b, 0xa0, 0xbe, 0x61,
- 0xbd, 0xce, 0xf7, 0xd6, 0x45, 0x20, 0xe0, 0x4c, 0x10, 0x90, 0x99, 0xe3, 0x99, 0x2d, 0x42, 0x0e,
- 0xe0, 0x03, 0x35, 0x61, 0xad, 0xc6, 0xd7, 0x9c, 0xb5, 0x93, 0x3c, 0x13, 0x16, 0xb4, 0xd9, 0x6c,
- 0xd2, 0xc9, 0x64, 0xc2, 0x68, 0xb7, 0xdb, 0xa2, 0x98, 0xb3, 0x45, 0x48, 0x03, 0x5c, 0xe0, 0x1d,
- 0x38, 0x03, 0x4e, 0x81, 0x37, 0x60, 0x0a, 0xe8, 0x6b, 0x77, 0x12, 0x94, 0xab, 0xd5, 0x6a, 0x51,
- 0xdf, 0xf7, 0x69, 0x30, 0x70, 0x8e, 0xc2, 0xb8, 0x07, 0x19, 0x63, 0x19, 0xed, 0x6a, 0xb5, 0x9a,
- 0x93, 0x49, 0x26, 0x93, 0xe7, 0x91, 0x48, 0xe4, 0x43, 0xd3, 0xb4, 0x57, 0x5d, 0xd7, 0x17, 0x30,
- 0xff, 0x34, 0x4d, 0xf3, 0x82, 0xef, 0x9f, 0x30, 0x21, 0x7e, 0xe9, 0x2c, 0x98, 0xeb, 0xba, 0x54,
- 0x1e, 0xb8, 0x16, 0x52, 0xd2, 0x15, 0x20, 0x46, 0x21, 0x1c, 0xc3, 0xb2, 0x2c, 0x71, 0xcf, 0x63,
- 0x62, 0xbb, 0x84, 0xc6, 0xe3, 0xb1, 0x1a, 0x21, 0xb1, 0x74, 0x78, 0x27, 0x72, 0xe9, 0x1a, 0x8d,
- 0x86, 0x9a, 0xd2, 0xe1, 0x40, 0x0b, 0x8b, 0x66, 0xc0, 0xcc, 0x30, 0x93, 0x40, 0x04, 0x01, 0xc3,
- 0x74, 0x0e, 0x32, 0x03, 0xb7, 0xb7, 0x81, 0x16, 0x0e, 0x29, 0xcd, 0x54, 0x89, 0xbd, 0x83, 0x5e,
- 0x42, 0x0b, 0xcb, 0x0d, 0x8b, 0x99, 0x84, 0x88, 0xec, 0xd7, 0xb0, 0xe2, 0xc0, 0x67, 0x07, 0x30,
- 0x39, 0xb1, 0xa3, 0xbd, 0x75, 0x77, 0x84, 0xc4, 0xaf, 0x08, 0xb1, 0x6e, 0x08, 0x49, 0xc0, 0x57,
- 0xbd, 0xd0, 0x3d, 0x21, 0x51, 0x08, 0xdc, 0x05, 0x3c, 0x80, 0x72, 0x70, 0xde, 0x03, 0x0c, 0x95,
- 0x22, 0x33, 0x41, 0x40, 0x66, 0x8e, 0x67, 0x0e, 0x16, 0xe2, 0x99, 0xb0, 0xa0, 0x8f, 0x99, 0x0c,
- 0x7d, 0x19, 0x8d, 0x18, 0xcf, 0x85, 0x82, 0x28, 0xe6, 0xa8, 0xb8, 0x13, 0x56, 0xae, 0xa7, 0x6c,
- 0x96, 0xfa, 0xcb, 0xe5, 0x4f, 0xc3, 0xc2, 0x1c, 0x85, 0x71, 0xef, 0x1a, 0xce, 0x00, 0x36, 0xcc,
- 0x73, 0xfb, 0x70, 0x4b, 0xc8, 0x77, 0xc3, 0xf2, 0x4b, 0x67, 0xc1, 0x5e, 0x86, 0xc3, 0x5f, 0x4f,
- 0xd0, 0x62, 0x30, 0xa0, 0x21, 0x25, 0xfd, 0x0b, 0x1e, 0x13, 0xdb, 0x29, 0xd4, 0xef, 0xab, 0x11,
- 0x12, 0x4b, 0x87, 0x77, 0x22, 0x97, 0xee, 0x21, 0x95, 0x52, 0x53, 0x3a, 0x6e, 0x86, 0xde, 0xca,
- 0x0c, 0xe9, 0x34, 0x2b, 0x17, 0x66, 0x12, 0x88, 0x70, 0x3a, 0x2a, 0x5c, 0x67, 0xa0, 0x85, 0x43,
- 0xd2, 0x9f, 0x2a, 0xb1, 0xb7, 0xd0, 0x4b, 0xce, 0x86, 0x86, 0xed, 0x28, 0x13, 0x91, 0xb2, 0x8b,
- 0x01, 0x26, 0xe7, 0x78, 0x6f, 0xdd, 0xb1, 0xc6, 0x17, 0x00, 0x3f, 0x4f, 0x69, 0xb1, 0xf4, 0x0f,
- 0x3d, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82,
+ 0xce, 0x00, 0x00, 0x02, 0xa6, 0x49, 0x44, 0x41, 0x54, 0x48, 0xc7, 0xbd, 0x96, 0x5d, 0x48, 0xd3,
+ 0x51, 0x18, 0x87, 0x7f, 0xb1, 0x95, 0x9b, 0x6d, 0xcb, 0x32, 0x49, 0x4a, 0x4c, 0x24, 0xfa, 0xb8,
+ 0x28, 0xa2, 0xb2, 0xb2, 0x6e, 0xcc, 0x82, 0x25, 0x82, 0x41, 0x41, 0x49, 0x77, 0xd2, 0xc7, 0x95,
+ 0x74, 0x13, 0x04, 0x46, 0xd8, 0x99, 0xd0, 0x28, 0x02, 0x2d, 0x22, 0x82, 0x8a, 0xd0, 0x32, 0x4b,
+ 0x11, 0x51, 0x08, 0x0a, 0x54, 0xb2, 0x32, 0x0b, 0x02, 0x49, 0xb2, 0x18, 0x81, 0x10, 0x5d, 0x08,
+ 0x05, 0x7e, 0xe6, 0xc7, 0xcc, 0xda, 0xd3, 0x85, 0xae, 0xd6, 0x52, 0xb7, 0x6c, 0xf9, 0xc2, 0xef,
+ 0xf6, 0x3c, 0xe7, 0xbc, 0xff, 0xf3, 0x3e, 0xe7, 0x2f, 0xfd, 0x65, 0x19, 0xc9, 0x51, 0x22, 0x65,
+ 0x18, 0x69, 0x53, 0xa9, 0x64, 0x57, 0xac, 0xcb, 0x48, 0xf1, 0x46, 0xba, 0x6c, 0x24, 0xbf, 0x91,
+ 0x98, 0xcc, 0x90, 0x91, 0xca, 0x2e, 0x4a, 0x0b, 0x63, 0x05, 0x71, 0x18, 0xa9, 0x33, 0x04, 0x10,
+ 0x9e, 0x56, 0x23, 0x59, 0x63, 0x01, 0xba, 0x1a, 0x5c, 0xb4, 0x32, 0x27, 0x07, 0x5f, 0x43, 0x03,
+ 0xef, 0x6a, 0x6b, 0x29, 0xcf, 0xca, 0x0a, 0x85, 0x9d, 0xfe, 0x27, 0x88, 0x57, 0x4a, 0x34, 0xd2,
+ 0xb8, 0x91, 0xb8, 0x97, 0x97, 0x47, 0x68, 0x7d, 0x1f, 0x1f, 0xe7, 0xc6, 0xd6, 0xad, 0x41, 0xd0,
+ 0x40, 0x89, 0xb4, 0xad, 0x44, 0xda, 0x1c, 0x1a, 0xaf, 0x94, 0x38, 0xed, 0xe2, 0x40, 0x12, 0x90,
+ 0x0f, 0xac, 0x35, 0x52, 0x56, 0x70, 0xd7, 0x5d, 0x8d, 0x8d, 0x84, 0xd7, 0xf3, 0x0b, 0x17, 0x98,
+ 0xa1, 0xa5, 0x18, 0xa9, 0x77, 0x5a, 0x18, 0xe0, 0xeb, 0xe8, 0xe8, 0x60, 0x64, 0x64, 0x84, 0xb1,
+ 0xa1, 0xa1, 0x8f, 0xad, 0xe7, 0xcf, 0x73, 0x33, 0x33, 0x93, 0xae, 0xa6, 0xa6, 0x3f, 0x40, 0xcf,
+ 0xbc, 0xde, 0x48, 0xa0, 0xe1, 0x73, 0xd2, 0xb2, 0xa9, 0x20, 0xbb, 0x00, 0x92, 0x57, 0x26, 0x63,
+ 0x4f, 0xb0, 0x93, 0x9d, 0xb7, 0x9b, 0x8a, 0x8a, 0x0a, 0x7a, 0x7a, 0x7a, 0x18, 0xed, 0xeb, 0x23,
+ 0x10, 0x08, 0xfc, 0xd6, 0xba, 0xeb, 0x19, 0x19, 0x18, 0x89, 0xb3, 0xd2, 0x97, 0x62, 0xc9, 0x6d,
+ 0xa4, 0x3d, 0x61, 0x49, 0x9f, 0x0a, 0x72, 0x70, 0x78, 0x78, 0xf8, 0xdb, 0xd1, 0xc2, 0x63, 0x38,
+ 0xd3, 0x5d, 0xa8, 0xc1, 0x8e, 0x4a, 0xe3, 0x70, 0xec, 0x4f, 0xc0, 0x91, 0xec, 0x20, 0x3b, 0x37,
+ 0x9b, 0x40, 0x20, 0xc0, 0xfb, 0x07, 0x0f, 0x78, 0x5b, 0x53, 0xc3, 0xcd, 0xed, 0xdb, 0x7f, 0xee,
+ 0xdc, 0x23, 0x15, 0x45, 0xf5, 0xd1, 0x81, 0x2c, 0xbf, 0xdf, 0xff, 0x35, 0x73, 0xf7, 0x0e, 0x6c,
+ 0xf9, 0x0e, 0xf4, 0x34, 0x1e, 0xbd, 0x9c, 0x4c, 0xbd, 0x1d, 0xe7, 0x2a, 0x17, 0x57, 0xae, 0x5d,
+ 0xe1, 0x73, 0x67, 0x27, 0x1e, 0x8b, 0x25, 0xbc, 0x3d, 0x2d, 0x51, 0x5d, 0x6f, 0xc0, 0x02, 0xbc,
+ 0x39, 0x52, 0x78, 0x14, 0xfb, 0x21, 0xe7, 0x2f, 0x40, 0xb3, 0x1d, 0x55, 0xdb, 0x70, 0xa6, 0xba,
+ 0xa8, 0xba, 0x5f, 0xc5, 0x60, 0x77, 0x77, 0x6f, 0x59, 0x6a, 0x6a, 0xf8, 0xc0, 0x16, 0x47, 0x3d,
+ 0x43, 0xc0, 0x61, 0x9f, 0xcf, 0x87, 0x2b, 0xd5, 0x85, 0x9e, 0x4c, 0x40, 0xe2, 0x4e, 0x3a, 0xb0,
+ 0x3a, 0xad, 0xb8, 0x56, 0x2c, 0xe2, 0xe1, 0xa3, 0x87, 0x00, 0xaf, 0x80, 0xa5, 0x93, 0xc3, 0xbb,
+ 0xc5, 0x48, 0x1b, 0x8d, 0x64, 0xfb, 0xab, 0x59, 0x01, 0x2a, 0x8b, 0x8a, 0x8b, 0xb0, 0x9c, 0xb0,
+ 0x4d, 0x9c, 0xe4, 0x96, 0x8d, 0x15, 0xab, 0x53, 0x28, 0x38, 0x5e, 0x40, 0x5b, 0x5b, 0x1b, 0x40,
+ 0x33, 0xe0, 0xfc, 0xe7, 0xc9, 0x07, 0x3e, 0xae, 0xdf, 0xb9, 0x01, 0xdd, 0x9e, 0x00, 0xb9, 0xf6,
+ 0x2d, 0xe6, 0x6e, 0xd5, 0x5d, 0x80, 0x4f, 0xc0, 0x0d, 0x20, 0x2e, 0x26, 0x2e, 0x03, 0xc6, 0x92,
+ 0xd2, 0x92, 0x50, 0x93, 0x9d, 0x05, 0x8f, 0xe3, 0x59, 0xb7, 0x36, 0x81, 0x17, 0x75, 0x75, 0x0c,
+ 0x7c, 0xf8, 0x90, 0x1b, 0x53, 0x33, 0x03, 0x03, 0x69, 0x6b, 0x52, 0xc8, 0xc9, 0xb3, 0x72, 0x66,
+ 0xfe, 0xaf, 0xdb, 0x54, 0x62, 0xb5, 0xfa, 0x63, 0x6a, 0x67, 0x7f, 0x7f, 0x7f, 0xfb, 0x29, 0x97,
+ 0x83, 0xff, 0x6e, 0xe7, 0x3b, 0x6e, 0x77, 0xfb, 0x9c, 0xd8, 0xd9, 0x33, 0x6f, 0xde, 0xb7, 0x48,
+ 0x76, 0xf6, 0x48, 0xfd, 0x46, 0xda, 0x3b, 0x85, 0x62, 0x22, 0x65, 0x79, 0xf0, 0xad, 0x99, 0xd1,
+ 0xce, 0xaf, 0xcb, 0xcb, 0x23, 0x49, 0x33, 0x52, 0x06, 0xbd, 0x52, 0xd2, 0x9c, 0x82, 0x96, 0x04,
+ 0x1f, 0xb6, 0xea, 0x03, 0x07, 0xa6, 0xb5, 0xb3, 0x47, 0xea, 0x9f, 0xc6, 0xce, 0xd1, 0xb5, 0x6e,
+ 0xb2, 0x7d, 0x95, 0xc1, 0x1d, 0xdc, 0x71, 0xbb, 0xf1, 0xd5, 0xd7, 0xcf, 0xde, 0xce, 0x51, 0x3c,
+ 0xd7, 0xef, 0x66, 0x38, 0x7e, 0x4b, 0x4c, 0xae, 0x77, 0xc8, 0xef, 0xd4, 0x25, 0x23, 0x8d, 0xce,
+ 0xda, 0xce, 0xb3, 0xf8, 0xb5, 0x9a, 0x9d, 0x9d, 0x67, 0xa8, 0x1f, 0x1b, 0xc8, 0xad, 0x80, 0x6e,
+ 0x94, 0x16, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82,
 };
 
 const BITMAP_OPAQUE pin2pin_xpm[1] = {{ png, sizeof( png ), "pin2pin_xpm" }};
diff --git a/bitmaps_png/sources/pin2pin.svg b/bitmaps_png/sources/pin2pin.svg
index 712e24e60..d2e2c1ace 100644
--- a/bitmaps_png/sources/pin2pin.svg
+++ b/bitmaps_png/sources/pin2pin.svg
@@ -5,14 +5,18 @@
    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#";
    xmlns:svg="http://www.w3.org/2000/svg";
    xmlns="http://www.w3.org/2000/svg";
+   xmlns:xlink="http://www.w3.org/1999/xlink";
    xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd";
    xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape";
    height="26"
    width="26"
    version="1.1"
    id="svg2"
-   inkscape:version="0.48.3.1 r9886"
-   sodipodi:docname="pin.svg">
+   inkscape:version="0.92.2 5c3e80d, 2017-08-06"
+   sodipodi:docname="pin2pin.svg"
+   inkscape:export-filename="/home/orson/workspace/kicad/bitmaps_png/sources/pin2pin.svg.png"
+   inkscape:export-xdpi="96"
+   inkscape:export-ydpi="96">
   <metadata
      id="metadata87">
     <rdf:RDF>
@@ -21,7 +25,7 @@
         <dc:format>image/svg+xml</dc:format>
         <dc:type
            rdf:resource="http://purl.org/dc/dcmitype/StillImage"; />
-        <dc:title></dc:title>
+        <dc:title />
       </cc:Work>
     </rdf:RDF>
   </metadata>
@@ -34,16 +38,16 @@
      guidetolerance="10"
      inkscape:pageopacity="0"
      inkscape:pageshadow="2"
-     inkscape:window-width="1301"
-     inkscape:window-height="744"
+     inkscape:window-width="1916"
+     inkscape:window-height="1176"
      id="namedview85"
      showgrid="true"
      inkscape:snap-grids="true"
-     inkscape:zoom="22.961538"
-     inkscape:cx="13"
-     inkscape:cy="13"
-     inkscape:window-x="65"
-     inkscape:window-y="24"
+     inkscape:zoom="32.472518"
+     inkscape:cx="11.99734"
+     inkscape:cy="12.77108"
+     inkscape:window-x="1920"
+     inkscape:window-y="20"
      inkscape:window-maximized="1"
      inkscape:current-layer="svg2">
     <inkscape:grid
@@ -95,22 +99,36 @@
          stdDeviation="0.77576414"
          id="feGaussianBlur15" />
     </filter>
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#radialGradient4831-3"
+       id="radialGradient4567"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0,-0.27158002,-0.31909764,0,-33.22483,-543.08319)"
+       cx="34.857384"
+       cy="28.374384"
+       fx="34.857384"
+       fy="28.374384"
+       r="16.955999" />
+    <radialGradient
+       r="16.955999"
+       gradientTransform="matrix(0,-0.84302,1.0202,0,-4.8963249,41.059418)"
+       cx="35.292999"
+       cy="20.493999"
+       gradientUnits="userSpaceOnUse"
+       id="radialGradient4831-3">
+      <stop
+         style="stop-color:#1772d9;stop-opacity:1"
+         id="stop4833-5"
+         offset="0"
+         stop-color="#73d216" />
+      <stop
+         style="stop-color:#085ab6;stop-opacity:1"
+         id="stop4835-6"
+         offset="1"
+         stop-color="#4e9a06" />
+    </radialGradient>
   </defs>
-  <path
-     sodipodi:type="arc"
-     style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#4d4d4d;stroke-width:2.50000000000000000;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
-     id="path3003"
-     sodipodi:cx="20"
-     sodipodi:cy="13"
-     sodipodi:rx="4"
-     sodipodi:ry="4"
-     d="m 24,13 a 4,4 0 1 1 -8,0 4,4 0 1 1 8,0 z"
-     transform="matrix(-1,0,0,1,26,-6)" />
-  <path
-     style="fill:none;stroke:#4d4d4d;stroke-width:2.50000000000000000;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-     d="M 11,7 24,7"
-     id="path3771"
-     inkscape:connector-curvature="0" />
   <g
      transform="matrix(2.4566,0,0,2.2316,-37.589,-61.022)"
      id="g17">
@@ -155,31 +173,50 @@
        width="16"
        height="16" />
   </g>
-  <path
-     transform="matrix(-1,0,0,1,26,6)"
-     d="m 24,13 a 4,4 0 1 1 -8,0 4,4 0 1 1 8,0 z"
-     sodipodi:ry="4"
-     sodipodi:rx="4"
-     sodipodi:cy="13"
-     sodipodi:cx="20"
-     id="path3079"
-     style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#800000;stroke-width:2.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
-     sodipodi:type="arc" />
-  <path
-     inkscape:connector-curvature="0"
-     id="path3081"
-     d="m 11,19 13,0"
-     style="fill:none;stroke:#800000;stroke-width:2.5;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
-  <path
-     style="fill:none;stroke:#000000;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-     d="M 23,11 17,3"
-     id="path3102"
-     inkscape:connector-curvature="0"
-     sodipodi:nodetypes="cc" />
-  <path
-     sodipodi:nodetypes="cc"
-     inkscape:connector-curvature="0"
-     id="path3872"
-     d="M 17,11 23,3"
-     style="fill:none;stroke:#000000;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+  <g
+     id="g8645"
+     transform="translate(2.95,0.52428818)">
+    <circle
+       style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#800000;stroke-width:2.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="path3079-5"
+       transform="scale(-1,1)"
+       cx="-11"
+       cy="5.4757118"
+       r="4" />
+    <path
+       style="fill:none;stroke:#800000;stroke-width:2.5;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="m 15,5.5192631 h 6"
+       id="path3081-0"
+       inkscape:connector-curvature="0" />
+  </g>
+  <g
+     id="g1441"
+     transform="matrix(-0.2207143,-0.97533186,-0.97531475,0.22073887,17.577706,9.218404)">
+    <path
+       inkscape:connector-curvature="0"
+       id="path4557"
+       d="m 1.7949336,5.7925682 -1.31550596,2.2775163 -1.3142706,2.2763085 h 1.0124896 c -0.426801,1.072642 -1.28343064,1.947609 -2.41298864,2.358732 -1.63077,0.593591 -3.459175,0.103811 -4.574702,-1.225623 l -2.351406,1.973331 c 1.94519,2.31816 5.133114,3.172095 7.97679,2.137041 2.3561106,-0.857559 4.0549666,-2.860804 4.5697756,-5.243481 h 1.038365 L 3.5513996,8.8349883 c 7e-6,0 0,-0.00711 0,-0.00853 h -0.005 L 3.1091296,8.070152 1.7948596,5.7927068 Z"
+       style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:url(#radialGradient4567);fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:3.15326977;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" />
+    <path
+       inkscape:connector-curvature="0"
+       style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#00c80a;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.92401415;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
+       d="m 1.7949336,5.7925682 -1.31550596,2.2775163 -1.3142706,2.2763085 h 1.0124896 c -0.426801,1.072642 -1.28343064,1.947609 -2.41298864,2.358732 -1.63077,0.593591 -3.459175,0.103811 -4.574702,-1.225623 l -2.351406,1.973331 c 1.94519,2.31816 5.133114,3.172095 7.97679,2.137041 2.3561106,-0.857559 4.0549666,-2.860804 4.5697756,-5.243481 h 1.038365 L 3.5513996,8.8349883 c 7e-6,0 0,-0.00711 0,-0.00853 h -0.005 L 3.1091296,8.070152 1.7948596,5.7927068 Z"
+       id="path4495" />
+  </g>
+  <g
+     id="g4651"
+     transform="matrix(1.0000085,0,0,0.99999885,-0.05001245,1.0000279)">
+    <circle
+       style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#800000;stroke-width:2.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="path3079"
+       transform="matrix(-1,0,0,1,26,6)"
+       cx="20"
+       cy="13"
+       r="4" />
+    <path
+       style="fill:none;stroke:#800000;stroke-width:2.5;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="M 11,19 H 24"
+       id="path3081"
+       inkscape:connector-curvature="0" />
+  </g>
 </svg>
-- 
2.13.3

Attachment: pin2pin.png
Description: PNG image

Attachment: signature.asc
Description: OpenPGP digital signature


Follow ups

References