@ -1,9 +1,9 @@ 
		
	
		
			
				/*
 /*
  
		
	
		
			
				 *  This  program  source  code  file  is  part  of  KiCad ,  a  free  EDA  CAD  application .  *  This  program  source  code  file  is  part  of  KiCad ,  a  free  EDA  CAD  application .  
		
	
		
			
				 *  *  
		
	
		
			
				 *  Copyright  ( C )  2004  Jean - Pierre  Charras ,  jp . charras  at  wanadoo . fr  
		
	
		
			
				 *  Copyright  ( C )  2008 - 2011   Wayne  Stambaugh  < stambaughw @ verizon . net >  
		
	
		
			
				 *  Copyright  ( C )  2004 - 2011   KiCad  Developers ,  see  change_log . txt  for  contributors .  
		
	
		
			
				 *  Copyright  ( C )  2004 - 2015 Jean - Pierre  Charras ,  jp . charras  at  wanadoo . fr  
		
	
		
			
				 *  Copyright  ( C )  2008 - 2015   Wayne  Stambaugh  < stambaughw @ verizon . net >  
		
	
		
			
				 *  Copyright  ( C )  2004 - 2015   KiCad  Developers ,  see  change_log . txt  for  contributors .  
		
	
		
			
				 *  *  
		
	
		
			
				 *  This  program  is  free  software ;  you  can  redistribute  it  and / or  *  This  program  is  free  software ;  you  can  redistribute  it  and / or  
		
	
		
			
				 *  modify  it  under  the  terms  of  the  GNU  General  Public  License  *  modify  it  under  the  terms  of  the  GNU  General  Public  License  
		
	
	
		
			
				
					
						
							 
					
					
						
							 
					
					
				 
				@ -241,17 +241,9 @@ LIB_PART::LIB_PART( LIB_PART& aPart, PART_LIB* aLibrary ) : 
		
	
		
			
				
 
		
	
		
			
				LIB_PART : : ~ LIB_PART ( ) LIB_PART : : ~ LIB_PART ( )  
		
	
		
			
				{ {  
		
	
		
			
				# if defined(DEBUG) && 1 
  
		
	
		
			
				
 
		
	
		
			
				    if (  m_aliases . size ( )  )  
		
	
		
			
				    {  
		
	
		
			
				        int  breakhere  =  1 ;  
		
	
		
			
				        ( void )  breakhere ;  
		
	
		
			
				    }  
		
	
		
			
				
 
		
	
		
			
				    printf (  " %s: destroying part '%s' with alias list count of %d \n " ,  
		
	
		
			
				        __func__ ,  TO_UTF8 (  GetName ( )  ) ,  int (  m_aliases . size ( )  )  ) ;  
		
	
		
			
				# endif 
  
		
	
		
			
				    wxLogDebug (  wxT (  " %s: destroying part '%s' with alias list count of %d \n "  ) ,  
		
	
		
			
				                GetChars (  wxString : : FromAscii (  __WXFUNCTION__  )  ) ,  GetChars (  GetName ( )  ) ,  
		
	
		
			
				                int (  m_aliases . size ( )  )  ) ;  
		
	
		
			
				
 
		
	
		
			
				    // If the part is being deleted directly rather than through the library,
     // If the part is being deleted directly rather than through the library,
  
		
	
		
			
				    // delete all of the aliases.
     // delete all of the aliases.
  
		
	
	
		
			
				
					
						
							 
					
					
						
							 
					
					
				 
				@ -298,8 +290,9 @@ void LIB_PART::SetName( const wxString& aName ) 
		
	
		
			
				
 
		
	
		
			
				
 
		
	
		
			
				void  LIB_PART : : Draw (  EDA_DRAW_PANEL *  aPanel ,  wxDC *  aDc ,  const  wxPoint &  aOffset ,  int  aMulti , void  LIB_PART : : Draw (  EDA_DRAW_PANEL *  aPanel ,  wxDC *  aDc ,  const  wxPoint &  aOffset ,  int  aMulti ,  
		
	
		
			
				                          int  aConvert ,  GR_DRAWMODE  aDrawMode ,  EDA_COLOR_T  aColor ,  const  TRANSFORM &  aTransform ,  
		
	
		
			
				                          bool  aShowPinText ,  bool  aDrawFields ,  bool  aOnlySelected  )  
		
	
		
			
				                     int  aConvert ,  GR_DRAWMODE  aDrawMode ,  EDA_COLOR_T  aColor ,  
		
	
		
			
				                     const  TRANSFORM &  aTransform ,  bool  aShowPinText ,  bool  aDrawFields ,  
		
	
		
			
				                     bool  aOnlySelected  )  
		
	
		
			
				{ {  
		
	
		
			
				    BASE_SCREEN *    screen  =  aPanel  ?  aPanel - > GetScreen ( )  :  NULL ;     BASE_SCREEN *    screen  =  aPanel  ?  aPanel - > GetScreen ( )  :  NULL ;  
		
	
		
			
				
 
		
	
	
		
			
				
					
						
							 
					
					
						
							 
					
					
				 
				@ -469,7 +462,7 @@ void LIB_PART::PlotLibFields( PLOTTER* aPlotter, int aUnit, int aConvert, 
		
	
		
			
				        if (  aConvert  & &  item . m_Convert  & &  (  item . m_Convert  ! =  aConvert  )  )         if (  aConvert  & &  item . m_Convert  & &  (  item . m_Convert  ! =  aConvert  )  )  
		
	
		
			
				            continue ;             continue ;  
		
	
		
			
				
 
		
	
		
			
				        // The reference is a special case: we shoud change the basic text
  
		
	
		
			
				        // The reference is a special case: we shoul d change the basic text
  
		
	
		
			
				        // to add '?' and the part id
         // to add '?' and the part id
  
		
	
		
			
				        LIB_FIELD &  field  =  ( LIB_FIELD & )  item ;         LIB_FIELD &  field  =  ( LIB_FIELD & )  item ;  
		
	
		
			
				        wxString  tmp  =  field . GetShownText ( ) ;         wxString  tmp  =  field . GetShownText ( ) ;  
		
	
	
		
			
				
					
						
							 
					
					
						
							 
					
					
				 
				@ -511,7 +504,8 @@ void LIB_PART::RemoveDrawItem( LIB_ITEM* aItem, EDA_DRAW_PANEL* aPanel, wxDC* aD 
		
	
		
			
				        if (  * i  = =  aItem  )         if (  * i  = =  aItem  )  
		
	
		
			
				        {         {  
		
	
		
			
				            if (  aDc  ! =  NULL  )             if (  aDc  ! =  NULL  )  
		
	
		
			
				                aItem - > Draw (  aPanel ,  aDc ,  wxPoint (  0 ,  0  ) ,  UNSPECIFIED_COLOR ,  g_XorMode ,  NULL ,  DefaultTransform  ) ;  
		
	
		
			
				                aItem - > Draw (  aPanel ,  aDc ,  wxPoint (  0 ,  0  ) ,  UNSPECIFIED_COLOR ,  
		
	
		
			
				                             g_XorMode ,  NULL ,  DefaultTransform  ) ;  
		
	
		
			
				
 
		
	
		
			
				            drawings . erase (  i  ) ;             drawings . erase (  i  ) ;  
		
	
		
			
				            SetModified ( ) ;             SetModified ( ) ;  
		
	
	
		
			
				
					
						
							 
					
					
						
							 
					
					
				 
				@ -1466,7 +1460,7 @@ void LIB_PART::RotateSelectedItems( const wxPoint& aCenter ) 
		
	
		
			
				
 
		
	
		
			
				
 
		
	
		
			
				LIB_ITEM *  LIB_PART : : LocateDrawItem (  int  aUnit ,  int  aConvert , LIB_ITEM *  LIB_PART : : LocateDrawItem (  int  aUnit ,  int  aConvert ,  
		
	
		
			
				                                          KICAD_T  aType ,  const  wxPoint &  aPoint  )  
		
	
		
			
				                                    KICAD_T  aType ,  const  wxPoint &  aPoint  )  
		
	
		
			
				{ {  
		
	
		
			
				    BOOST_FOREACH (  LIB_ITEM &  item ,  drawings  )     BOOST_FOREACH (  LIB_ITEM &  item ,  drawings  )  
		
	
		
			
				    {     {  
		
	
	
		
			
				
					
					
					
						
							 
					
				 
				@ -1484,7 +1478,7 @@ LIB_ITEM* LIB_PART::LocateDrawItem( int aUnit, int aConvert, 
		
	
		
			
				
 
		
	
		
			
				
 
		
	
		
			
				LIB_ITEM *  LIB_PART : : LocateDrawItem (  int  aUnit ,  int  aConvert ,  KICAD_T  aType , LIB_ITEM *  LIB_PART : : LocateDrawItem (  int  aUnit ,  int  aConvert ,  KICAD_T  aType ,  
		
	
		
			
				                                          const  wxPoint &  aPoint ,  const  TRANSFORM &  aTransform  )  
		
	
		
			
				                                    const  wxPoint &  aPoint ,  const  TRANSFORM &  aTransform  )  
		
	
		
			
				{ {  
		
	
		
			
				    /* we use LocateDrawItem( int aUnit, int convert, KICAD_T type, const
     /* we use LocateDrawItem( int aUnit, int convert, KICAD_T type, const
  
		
	
		
			
				     *  wxPoint &  pt  )  to  search  items .      *  wxPoint &  pt  )  to  search  items .  
		
	
	
		
			
				
					
						
							 
					
					
						
							 
					
					
				 
				@ -1763,15 +1757,6 @@ void LIB_PART::AddAlias( const wxString& aName ) 
		
	
		
			
				} }  
		
	
		
			
				
 
		
	
		
			
				
 
		
	
		
			
				/** Set the separator char between the subpart id and the reference
  
		
	
		
			
				 *  0  ( no  separator )  or  ' . '  ,  ' - '  and  ' _ '  
		
	
		
			
				 *  and  the  ascii  char  value  to  calculate  the  subpart  symbol  id  from  the  part  number :  
		
	
		
			
				 *  ' A '  or  ' 1 '  only  are  allowed .  ( to  print  U1 . A  or  U1 .1 )  
		
	
		
			
				 *  if  this  is  a  digit ,  a  number  is  used  as  id  symbol  
		
	
		
			
				 *  Note  also  if  the  subpart  symbol  is  a  digit ,  the  separator  cannot  be  null .  
		
	
		
			
				 *  @ param  aSep  =  the  separator  symbol  ( 0  ( no  separator )  or  ' . '  ,  ' - '  and  ' _ ' )  
		
	
		
			
				 *  @ param  aFirstId  =  the  Id  of  the  first  part  ( ' A '  or  ' 1 ' )  
		
	
		
			
				 */  
		
	
		
			
				void  LIB_PART : : SetSubpartIdNotation (  int  aSep ,  int  aFirstId  ) void  LIB_PART : : SetSubpartIdNotation (  int  aSep ,  int  aFirstId  )  
		
	
		
			
				{ {  
		
	
		
			
				    m_subpartFirstId  =  ' A ' ;     m_subpartFirstId  =  ' A ' ;