KiCad PCB EDA Suite
LIB_PIN Class Reference

#include <lib_pin.h>

Inheritance diagram for LIB_PIN:
LIB_ITEM EDA_ITEM KIGFX::VIEW_ITEM INSPECTABLE

Classes

struct  ALT
 

Public Types

enum  LIB_CONVERT : int { BASE = 1, DEMORGAN = 2 }
 
enum  COMPARE_FLAGS : int { NORMAL = 0x00, UNIT = 0x01 }
 The list of flags used by the compare function. More...
 

Public Member Functions

 ~LIB_PIN ()
 
wxString GetClass () const override
 Return the class name. More...
 
wxString GetTypeName () const override
 Provide a user-consumable name of the object type. More...
 
int GetOrientation () const
 
void SetOrientation (int aOrientation)
 
GRAPHIC_PINSHAPE GetShape () const
 
void SetShape (GRAPHIC_PINSHAPE aShape)
 
int GetLength () const
 
void SetLength (int aLength)
 
ELECTRICAL_PINTYPE GetType () const
 
void SetType (ELECTRICAL_PINTYPE aType)
 
wxString const GetCanonicalElectricalTypeName () const
 
wxString const GetElectricalTypeName () const
 
bool IsVisible () const
 
void SetVisible (bool aVisible)
 
const wxString & GetName () const
 
wxString GetShownName () const
 
void SetName (const wxString &aName)
 
const wxString & GetNumber () const
 
wxString GetShownNumber () const
 
void SetNumber (const wxString &aNumber)
 
int GetNameTextSize () const
 
void SetNameTextSize (int aSize)
 
int GetNumberTextSize () const
 
void SetNumberTextSize (int aSize)
 
std::map< wxString, ALT > & GetAlternates ()
 
ALT GetAlt (const wxString &aAlt)
 
void print (const RENDER_SETTINGS *aSettings, const wxPoint &aOffset, void *aData, const TRANSFORM &aTransform) override
 Print a pin, with or without the pin texts. More...
 
int PinDrawOrient (const TRANSFORM &aTransform) const
 Return the pin real orientation (PIN_UP, PIN_DOWN, PIN_RIGHT, PIN_LEFT), according to its orientation and the matrix transform (rot, mirror) aTransform. More...
 
 LIB_PIN (LIB_SYMBOL *aParent)
 
 LIB_PIN (LIB_SYMBOL *aParent, const wxString &aName, const wxString &aNumber, int aOrientation, ELECTRICAL_PINTYPE aPinType, int aLength, int aNameTextSize, int aNumTextSize, int aConvert, const wxPoint &aPos, int aUnit)
 
bool HitTest (const wxPoint &aPosition, int aAccuracy=0) const override
 Test if aPosition is contained within or on the bounding box of an item. More...
 
bool HitTest (const EDA_RECT &aRect, bool aContained, int aAccuracy=0) const override
 Test if aRect intersects or is contained within the bounding box of an item. More...
 
void GetMsgPanelInfo (EDA_DRAW_FRAME *aFrame, std::vector< MSG_PANEL_ITEM > &aList) override
 Display basic info (type, part and convert) about the current item in message panel. More...
 
const EDA_RECT GetBoundingBox () const override
 
const EDA_RECT GetBoundingBox (bool aIncludeInvisibles, bool aPinOnly=false) const
 
bool IsPowerConnection () const
 Return whether this pin forms an implicit power connection: i.e., is hidden and of type POWER_IN. More...
 
int GetPenWidth () const override
 
void PlotPinTexts (PLOTTER *aPlotter, const wxPoint &aPinPos, int aPinOrient, int aTextInside, bool aDrawPinNum, bool aDrawPinName) const
 Plot the pin number and pin text info, given the pin line coordinates. More...
 
void PlotSymbol (PLOTTER *aPlotter, const wxPoint &aPosition, int aOrientation) const
 
void Offset (const wxPoint &aOffset) override
 Set the drawing object by aOffset from the current position. More...
 
void MoveTo (const wxPoint &aNewPosition) override
 Move a draw object to aPosition. More...
 
wxPoint GetPosition () const override
 
void SetPosition (const wxPoint &aPos) override
 
void MirrorHorizontal (const wxPoint &aCenter) override
 Mirror the draw object along the horizontal (X) axis about aCenter point. More...
 
void MirrorVertical (const wxPoint &aCenter) override
 Mirror the draw object along the MirrorVertical (Y) axis about aCenter point. More...
 
void Rotate (const wxPoint &aCenter, bool aRotateCCW=true) override
 Rotate the object about aCenter point. More...
 
void Plot (PLOTTER *aPlotter, const wxPoint &aPffset, bool aFill, const TRANSFORM &aTransform) const override
 Plot the draw item using the plot object. More...
 
int GetWidth () const override
 
void SetWidth (int aWidth) override
 
BITMAPS GetMenuImage () const override
 Return a pointer to an image to be used in menus. More...
 
wxString GetSelectMenuText (EDA_UNITS aUnits) const override
 Return the text to display to be used in the selection clarification context menu when multiple items are found at the current cursor position. More...
 
EDA_ITEMClone () const override
 Create a duplicate of this item with linked list members set to NULL. More...
 
void CalcEdit (const wxPoint &aPosition) override
 Calculate the attributes of an item at aPosition when it is being edited. More...
 
virtual void BeginEdit (const wxPoint &aPosition)
 Begin drawing a symbol library draw item at aPosition. More...
 
virtual bool ContinueEdit (const wxPoint &aPosition)
 Continue an edit in progress at aPosition. More...
 
virtual void EndEdit ()
 End an object editing action. More...
 
virtual void Print (const RENDER_SETTINGS *aSettings, const wxPoint &aOffset, void *aData, const TRANSFORM &aTransform)
 Draw an item. More...
 
LIB_SYMBOLGetParent () const
 
void ViewGetLayers (int aLayers[], int &aCount) const override
 Return the all the layers within the VIEW the object is painted on. More...
 
bool operator== (const LIB_ITEM &aOther) const
 Test LIB_ITEM objects for equivalence. More...
 
bool operator== (const LIB_ITEM *aOther) const
 
bool operator< (const LIB_ITEM &aOther) const
 Test if another draw item is less than this draw object. More...
 
bool operator< (const EDA_ITEM &aItem) const
 Test if another item is less than this object. More...
 
bool IsFillable () const
 Check if draw object can be filled. More...
 
void SetUnit (int aUnit)
 
int GetUnit () const
 
void SetConvert (int aConvert)
 
int GetConvert () const
 
void SetFillMode (FILL_TYPE aFillMode)
 
FILL_TYPE GetFillMode () const
 
KICAD_T Type () const
 Returns the type of object. More...
 
virtual void SetParent (EDA_ITEM *aParent)
 
bool IsModified () const
 
bool IsNew () const
 
bool IsMoving () const
 
bool IsDragging () const
 
bool IsWireImage () const
 
bool IsSelected () const
 
bool IsEntered () const
 
bool IsResized () const
 
bool IsBrightened () const
 
void SetWireImage ()
 
void SetSelected ()
 
void SetBrightened ()
 
void ClearSelected ()
 
void ClearBrightened ()
 
void SetModified ()
 
int GetState (EDA_ITEM_FLAGS type) const
 
void SetState (EDA_ITEM_FLAGS type, bool state)
 
EDA_ITEM_FLAGS GetStatus () const
 
void SetStatus (EDA_ITEM_FLAGS aStatus)
 
void SetFlags (EDA_ITEM_FLAGS aMask)
 
void ClearFlags (EDA_ITEM_FLAGS aMask=EDA_ITEM_ALL_FLAGS)
 
EDA_ITEM_FLAGS GetFlags () const
 
bool HasFlag (EDA_ITEM_FLAGS aFlag) const
 
EDA_ITEM_FLAGS GetEditFlags () const
 
void ClearTempFlags ()
 
void ClearEditFlags ()
 
virtual bool IsType (const KICAD_T aScanTypes[]) const
 Check whether the item is one of the listed types. More...
 
void SetForceVisible (bool aEnable)
 Set and clear force visible flag used to force the item to be drawn even if it's draw attribute is set to not visible. More...
 
bool IsForceVisible () const
 
virtual const wxPoint GetFocusPosition () const
 Similar to GetPosition, but allows items to return their visual center rather than their anchor. More...
 
virtual SEARCH_RESULT Visit (INSPECTOR inspector, void *testData, const KICAD_T scanTypes[])
 May be re-implemented for each derived class in order to handle all the types given by its member data. More...
 
virtual bool Matches (const wxFindReplaceData &aSearchData, void *aAuxData) const
 Compare the item against the search criteria in aSearchData. More...
 
virtual bool Replace (const wxFindReplaceData &aSearchData, void *aAuxData=nullptr)
 Perform a text replace using the find and replace criteria in aSearchData on items that support text find and replace. More...
 
virtual bool IsReplaceable () const
 Override this method in any derived object that supports test find and replace. More...
 
virtual const BOX2I ViewBBox () const override
 Return the bounding box of the item covering all its layers. More...
 
virtual void ViewDraw (int aLayer, VIEW *aView) const
 Draw the parts of the object belonging to layer aLayer. More...
 
virtual double ViewGetLOD (int aLayer, VIEW *aView) const
 Return the level of detail (LOD) of the item. More...
 
VIEW_ITEM_DATA * viewPrivData () const
 
void ClearViewPrivData ()
 
bool Set (PROPERTY_BASE *aProperty, wxAny &aValue)
 
template<typename T >
bool Set (PROPERTY_BASE *aProperty, T aValue)
 
template<typename T >
bool Set (const wxString &aProperty, T aValue)
 
wxAny Get (PROPERTY_BASE *aProperty)
 
template<typename T >
Get (PROPERTY_BASE *aProperty)
 
template<typename T >
boost::optional< T > Get (const wxString &aProperty)
 

Static Public Member Functions

static const wxString GetCanonicalElectricalTypeName (ELECTRICAL_PINTYPE aType)
 Return a string giving the electrical type of a pin. More...
 
template<class T >
static SEARCH_RESULT IterateForward (std::deque< T > &aList, INSPECTOR inspector, void *testData, const KICAD_T scanTypes[])
 This changes first parameter to avoid the DList and use the main queue instead. More...
 
template<class T >
static SEARCH_RESULT IterateForward (std::vector< T > &aList, INSPECTOR inspector, void *testData, const KICAD_T scanTypes[])
 Change first parameter to avoid the DList and use std::vector instead. More...
 
static bool Replace (const wxFindReplaceData &aSearchData, wxString &aText)
 Perform a text replace on aText using the find and replace criteria in aSearchData on items that support text find and replace. More...
 
static bool Sort (const EDA_ITEM *aLeft, const EDA_ITEM *aRight)
 Helper function to be used by the C++ STL sort algorithm for sorting a STL container of EDA_ITEM pointers. More...
 

Public Attributes

const KIID m_Uuid
 

Protected Member Functions

void printPinSymbol (const RENDER_SETTINGS *aSettings, const wxPoint &aPos, int aOrientation)
 Print the pin symbol without text. More...
 
void printPinTexts (const RENDER_SETTINGS *aSettings, wxPoint &aPinPos, int aPinOrient, int aTextInside, bool aDrawPinNum, bool aDrawPinName)
 Put the pin number and pin text info, given the pin line coordinates. More...
 
void printPinElectricalTypeName (const RENDER_SETTINGS *aSettings, wxPoint &aPosition, int aOrientation)
 Draw the electrical type text of the pin (only for the footprint editor) More...
 
bool Matches (const wxString &aText, const wxFindReplaceData &aSearchData) const
 Compare aText against search criteria in aSearchData. More...
 

Protected Attributes

wxPoint m_position
 
int m_length
 
int m_orientation
 
GRAPHIC_PINSHAPE m_shape
 
ELECTRICAL_PINTYPE m_type
 
int m_attributes
 
wxString m_name
 
wxString m_number
 
int m_numTextSize
 
int m_nameTextSize
 
std::map< wxString, ALTm_alternates
 
int m_unit
 Unit identification for multiple parts per package. More...
 
int m_convert
 Shape identification for alternate body styles. More...
 
FILL_TYPE m_fill
 The body fill type. More...
 
bool m_isFillable
 
EDA_ITEM_FLAGS m_status
 
EDA_ITEMm_parent
 Linked list: Link (parent struct) More...
 
bool m_forceVisible
 
EDA_ITEM_FLAGS m_flags
 

Private Member Functions

int compare (const LIB_ITEM &aOther, LIB_ITEM::COMPARE_FLAGS aCompareFlags=LIB_ITEM::COMPARE_FLAGS::NORMAL) const override
 Provide the draw object specific comparison called by the == and < operators. More...
 

Detailed Description

Definition at line 53 of file lib_pin.h.

Member Enumeration Documentation

◆ COMPARE_FLAGS

enum LIB_ITEM::COMPARE_FLAGS : int
inherited

The list of flags used by the compare function.

  • NORMAL This compares everything between two LIB_ITEM objects.
  • UNIT This compare flag ignores unit and convert and pin number information when comparing LIB_ITEM objects for unit comparison.
Enumerator
NORMAL 
UNIT 

Definition at line 81 of file lib_item.h.

81 : int { NORMAL = 0x00, UNIT = 0x01 };

◆ LIB_CONVERT

enum LIB_ITEM::LIB_CONVERT : int
inherited
Enumerator
BASE 
DEMORGAN 

Definition at line 72 of file lib_item.h.

72 : int { BASE = 1, DEMORGAN = 2 };

Constructor & Destructor Documentation

◆ ~LIB_PIN()

LIB_PIN::~LIB_PIN ( )
inline

Definition at line 63 of file lib_pin.h.

63 { }

◆ LIB_PIN() [1/2]

LIB_PIN::LIB_PIN ( LIB_SYMBOL aParent)

Definition at line 93 of file lib_pin.cpp.

93  :
94  LIB_ITEM( LIB_PIN_T, aParent ),
98  m_attributes( 0 )
99 {
100  // Use the application settings for pin sizes if exists.
101  // pgm can be nullptr when running a shared lib from a script, not from a kicad appl
102  PGM_BASE* pgm = PgmOrNull();
103 
104  if( pgm )
105  {
106  auto* settings = pgm->GetSettingsManager().GetAppSettings<SYMBOL_EDITOR_SETTINGS>();
107  m_length = Mils2iu( settings->m_Defaults.pin_length );
108  m_numTextSize = Mils2iu( settings->m_Defaults.pin_num_size );
109  m_nameTextSize = Mils2iu( settings->m_Defaults.pin_name_size );
110  }
111  else // Use hardcoded eeschema defaults: symbol_editor settings are not existing.
112  {
113  m_length = Mils2iu( DEFAULT_PIN_LENGTH );
114  m_numTextSize = Mils2iu( DEFAULT_PINNUM_SIZE );
116  }
117 }
virtual SETTINGS_MANAGER & GetSettingsManager() const
Definition: pgm_base.h:129
int m_nameTextSize
Definition: lib_pin.h:289
GRAPHIC_PINSHAPE m_shape
Definition: lib_pin.h:283
int m_numTextSize
Definition: lib_pin.h:288
Container for data for KiCad programs.
Definition: pgm_base.h:93
unknown electrical properties: creates always a warning when connected
#define DEFAULT_PIN_LENGTH
The default pin number size when creating pins(can be changed in preference menu)
int m_length
Definition: lib_pin.h:281
int m_orientation
Definition: lib_pin.h:282
PGM_BASE * PgmOrNull()
similar to PGM_BASE& Pgm(), but return a reference that can be nullptr when running a shared lib from...
Definition: cvpcb.cpp:112
AppSettings * GetAppSettings(bool aLoadNow=true)
Returns a handle to the a given settings by type If the settings have already been loaded,...
#define DEFAULT_PINNUM_SIZE
The default pin name size when creating pins(can be changed in preference menu)
#define DEFAULT_PINNAME_SIZE
The default selection highlight thickness (can be changed in preference menu)
LIB_ITEM(KICAD_T aType, LIB_SYMBOL *aSymbol=nullptr, int aUnit=0, int aConvert=0, FILL_TYPE aFillType=FILL_TYPE::NO_FILL)
Definition: lib_item.cpp:35
int m_attributes
Definition: lib_pin.h:285
ELECTRICAL_PINTYPE m_type
Definition: lib_pin.h:284

References DEFAULT_PIN_LENGTH, DEFAULT_PINNAME_SIZE, DEFAULT_PINNUM_SIZE, SETTINGS_MANAGER::GetAppSettings(), PGM_BASE::GetSettingsManager(), LINE, m_length, m_nameTextSize, m_numTextSize, PgmOrNull(), and PT_UNSPECIFIED.

Referenced by Clone().

◆ LIB_PIN() [2/2]

LIB_PIN::LIB_PIN ( LIB_SYMBOL aParent,
const wxString &  aName,
const wxString &  aNumber,
int  aOrientation,
ELECTRICAL_PINTYPE  aPinType,
int  aLength,
int  aNameTextSize,
int  aNumTextSize,
int  aConvert,
const wxPoint &  aPos,
int  aUnit 
)

Definition at line 120 of file lib_pin.cpp.

122  :
123  LIB_ITEM( LIB_PIN_T, aParent ),
124  m_position( aPos ),
125  m_length( aLength ),
126  m_orientation( aOrientation ),
128  m_type( aPinType ),
129  m_attributes( 0 ),
130  m_numTextSize( aNumTextSize ),
131  m_nameTextSize( aNameTextSize )
132 {
133  SetName( aName );
134  SetNumber( aNumber );
135  SetUnit( aUnit );
136  SetConvert( aConvert );
137 }
int m_nameTextSize
Definition: lib_pin.h:289
GRAPHIC_PINSHAPE m_shape
Definition: lib_pin.h:283
int m_numTextSize
Definition: lib_pin.h:288
int m_length
Definition: lib_pin.h:281
void SetNumber(const wxString &aNumber)
Definition: lib_pin.h:118
int m_orientation
Definition: lib_pin.h:282
void SetConvert(int aConvert)
Definition: lib_item.h:261
LIB_ITEM(KICAD_T aType, LIB_SYMBOL *aSymbol=nullptr, int aUnit=0, int aConvert=0, FILL_TYPE aFillType=FILL_TYPE::NO_FILL)
Definition: lib_item.cpp:35
int m_attributes
Definition: lib_pin.h:285
void SetUnit(int aUnit)
Definition: lib_item.h:258
wxPoint m_position
Definition: lib_pin.h:280
void SetName(const wxString &aName)
Definition: lib_pin.h:108
ELECTRICAL_PINTYPE m_type
Definition: lib_pin.h:284

References LINE, LIB_ITEM::SetConvert(), SetName(), SetNumber(), and LIB_ITEM::SetUnit().

Member Function Documentation

◆ BeginEdit()

virtual void LIB_ITEM::BeginEdit ( const wxPoint &  aPosition)
inlinevirtualinherited

Begin drawing a symbol library draw item at aPosition.

It typically would be called on a left click when a draw tool is selected in the symbol library editor and one of the graphics tools is selected.

Parameters
aPositionThe position in drawing coordinates where the drawing was started. May or may not be required depending on the item being drawn.

Reimplemented in LIB_FIELD, LIB_TEXT, LIB_POLYLINE, LIB_ARC, LIB_RECTANGLE, and LIB_CIRCLE.

Definition at line 98 of file lib_item.h.

98 {}

Referenced by SYMBOL_EDITOR_DRAWING_TOOLS::DrawShape().

◆ CalcEdit()

void LIB_PIN::CalcEdit ( const wxPoint &  aPosition)
overridevirtual

Calculate the attributes of an item at aPosition when it is being edited.

This method gets called by the Draw() method when the item is being edited. This probably should be a pure virtual method but bezier curves are not yet editable in the symbol library editor. Therefore, the default method does nothing.

Parameters
aPositionThe current mouse position in drawing coordinates.

Reimplemented from LIB_ITEM.

Definition at line 1209 of file lib_pin.cpp.

1210 {
1211  if( IsMoving() )
1212  MoveTo( aPosition );
1213 }
void MoveTo(const wxPoint &aNewPosition) override
Move a draw object to aPosition.
Definition: lib_pin.cpp:941
bool IsMoving() const
Definition: eda_item.h:120

References EDA_ITEM::IsMoving(), and MoveTo().

◆ ClearBrightened()

void EDA_ITEM::ClearBrightened ( )
inlineinherited

◆ ClearEditFlags()

◆ ClearFlags()

void EDA_ITEM::ClearFlags ( EDA_ITEM_FLAGS  aMask = EDA_ITEM_ALL_FLAGS)
inlineinherited

Definition at line 154 of file eda_item.h.

154 { m_flags &= ~aMask; }
EDA_ITEM_FLAGS m_flags
Definition: eda_item.h:481

References EDA_ITEM::m_flags.

Referenced by FOOTPRINT_VIEWER_FRAME::AddFootprintToPCB(), PNS_KICAD_IFACE::AddItem(), SCH_EDIT_FRAME::AddItemToScreenAndUndoList(), SCH_MOVE_TOOL::AlignElements(), FOOTPRINT::BuildPolyCourtyards(), EDA_ITEM::ClearBrightened(), EDA_ITEM::ClearEditFlags(), EDA_ITEM::ClearSelected(), EDA_ITEM::ClearTempFlags(), ConvertOutlineToPolygon(), SCH_EDIT_FRAME::ConvertPart(), SYMBOL_EDITOR_EDIT_TOOL::Copy(), FOOTPRINT_EDITOR_CONTROL::CreateFootprint(), SYMBOL_EDITOR_PIN_TOOL::CreateImagePins(), MICROWAVE_TOOL::createMicrowaveInductor(), DIALOG_PAD_PROPERTIES::DIALOG_PAD_PROPERTIES(), KIGFX::SCH_PAINTER::draw(), SYMBOL_EDITOR_EDIT_TOOL::Duplicate(), SCH_ITEM::Duplicate(), PCB_EDIT_FRAME::ExchangeFootprint(), PCB_SELECTION_TOOL::ExitGroup(), SYMBOL_EDIT_FRAME::GetSymbolFromRedoList(), SYMBOL_EDIT_FRAME::GetSymbolFromUndoList(), FOOTPRINT_EDITOR_CONTROL::ImportFootprint(), FOOTPRINT_EDIT_FRAME::LoadFootprintFromBoard(), FOOTPRINT_EDIT_FRAME::LoadFootprintFromLibrary(), EE_SELECTION_TOOL::Main(), EE_SELECTION_TOOL::narrowSelection(), FOOTPRINT_EDITOR_CONTROL::NewFootprint(), FOOTPRINT_EDIT_FRAME::OpenProjectFiles(), PCB_BASE_FRAME::PlaceFootprint(), SYMBOL_EDITOR_PIN_TOOL::PlacePin(), BOARD_COMMIT::Push(), PCB_SELECTION_TOOL::RebuildSelection(), SCH_EDIT_TOOL::RepeatDrawItem(), SYMBOL_EDIT_FRAME::RollbackSymbolFromUndo(), SCH_EDIT_FRAME::SaveCopyForRepeatItem(), FOOTPRINT_EDIT_FRAME::SaveFootprintToBoard(), SCH_SEXPR_PLUGIN_CACHE::savePin(), SCH_EDIT_FRAME::SelectUnit(), DIALOG_SYMBOL_PROPERTIES::TransferDataFromWindow(), DIALOG_PAD_PROPERTIES::TransferDataFromWindow(), and SCH_DRAWING_TOOLS::TwoClickPlace().

◆ ClearSelected()

◆ ClearTempFlags()

void EDA_ITEM::ClearTempFlags ( )
inlineinherited

Definition at line 166 of file eda_item.h.

167  {
169  DO_NOT_DRAW );
170  }
#define DO_NOT_DRAW
Used to disable draw function.
#define STARTPOINT
When a line is selected, these flags indicate which.
#define ENDPOINT
ends. (Used to support dragging.)
#define IS_LINKED
Used in calculation to mark linked items (temporary use)
#define CANDIDATE
flag indicating that the structure is connected
void ClearFlags(EDA_ITEM_FLAGS aMask=EDA_ITEM_ALL_FLAGS)
Definition: eda_item.h:154
#define SKIP_STRUCT
flag indicating that the structure should be ignored
#define TEMP_SELECTED
flag indicating that the structure has already selected

References CANDIDATE, EDA_ITEM::ClearFlags(), DO_NOT_DRAW, ENDPOINT, IS_LINKED, SKIP_STRUCT, STARTPOINT, and TEMP_SELECTED.

Referenced by SCH_EDIT_FRAME::PutDataInPreviousState().

◆ ClearViewPrivData()

void KIGFX::VIEW_ITEM::ClearViewPrivData ( )
inlineinherited

Definition at line 148 of file view_item.h.

149  {
150  m_viewPrivData = nullptr;
151  }
VIEW_ITEM_DATA * m_viewPrivData
Definition: view_item.h:156

References KIGFX::VIEW_ITEM::m_viewPrivData.

Referenced by KIGFX::VIEW::OnDestroy().

◆ Clone()

EDA_ITEM * LIB_PIN::Clone ( ) const
overridevirtual

Create a duplicate of this item with linked list members set to NULL.

The default version will return NULL in release builds and likely crash the program. In debug builds, a warning message indicating the derived class has not implemented cloning. This really should be a pure virtual function. Due to the fact that there are so many objects derived from EDA_ITEM, the decision was made to return NULL until all the objects derived from EDA_ITEM implement cloning. Once that happens, this function should be made pure.

Returns
A clone of the item.

Reimplemented from EDA_ITEM.

Definition at line 851 of file lib_pin.cpp.

852 {
853  return new LIB_PIN( *this );
854 }
LIB_PIN(LIB_SYMBOL *aParent)
Definition: lib_pin.cpp:93

References LIB_PIN().

Referenced by SYMBOL_EDITOR_PIN_TOOL::CreateImagePins(), and SYMBOL_EDITOR_PIN_TOOL::RepeatPin().

◆ compare()

int LIB_PIN::compare ( const LIB_ITEM aOther,
LIB_ITEM::COMPARE_FLAGS  aCompareFlags = LIB_ITEM::COMPARE_FLAGS::NORMAL 
) const
overrideprivatevirtual

Provide the draw object specific comparison called by the == and < operators.

The base object sort order which always proceeds the derived object sort order is as follows:

  • Symbol alternate part (DeMorgan) number.
  • Symbol part number.
  • KICAD_T enum value.
  • Result of derived classes comparison.
Note
Make sure you call down to LIB_ITEM::compare before doing any derived object comparisons or you will break the sorting using the symbol library file format.
Parameters
aOtherA reference to the other LIB_ITEM to compare the arc against.
aCompareFlagsThe flags used to perform the comparison.
Returns
An integer value less than 0 if the object is less than aOther object, zero if the object is equal to aOther object, or greater than 0 if the object is greater than aOther object.

The pin specific sort order is as follows:

  • Pin number.
  • Pin name, case insensitive compare.
  • Pin horizontal (X) position.
  • Pin vertical (Y) position.

Reimplemented from LIB_ITEM.

Definition at line 857 of file lib_pin.cpp.

858 {
859  wxASSERT( aOther.Type() == LIB_PIN_T );
860 
861  int retv = LIB_ITEM::compare( aOther, aCompareFlags );
862 
863  if( retv )
864  return retv;
865 
866  const LIB_PIN* tmp = (LIB_PIN*) &aOther;
867 
868  // When comparing units, we do not compare the part numbers. If everything else is
869  // identical, then we can just renumber the parts for the inherited symbol.
870  if( !( aCompareFlags & COMPARE_FLAGS::UNIT ) && m_number != tmp->m_number )
871  return m_number.Cmp( tmp->m_number );
872 
873  int result = m_name.CmpNoCase( tmp->m_name );
874 
875  if( result )
876  return result;
877 
878  if( m_position.x != tmp->m_position.x )
879  return m_position.x - tmp->m_position.x;
880 
881  if( m_position.y != tmp->m_position.y )
882  return m_position.y - tmp->m_position.y;
883 
884  if( m_length != tmp->m_length )
885  return m_length - tmp->m_length;
886 
887  if( m_orientation != tmp->m_orientation )
888  return m_orientation - tmp->m_orientation;
889 
890  if( m_shape != tmp->m_shape )
891  return static_cast<int>( m_shape ) - static_cast<int>( tmp->m_shape );
892 
893  if( m_type != tmp->m_type )
894  return static_cast<int>( m_type ) - static_cast<int>( tmp->m_type );
895 
896  if( m_attributes != tmp->m_attributes )
897  return m_attributes - tmp->m_attributes;
898 
899  if( m_numTextSize != tmp->m_numTextSize )
900  return m_numTextSize - tmp->m_numTextSize;
901 
902  if( m_nameTextSize != tmp->m_nameTextSize )
903  return m_nameTextSize - tmp->m_nameTextSize;
904 
905  if( m_alternates.size() != tmp->m_alternates.size() )
906  return m_alternates.size() - tmp->m_alternates.size();
907 
908  auto lhsItem = m_alternates.begin();
909  auto rhsItem = tmp->m_alternates.begin();
910 
911  while( lhsItem != m_alternates.end() )
912  {
913  const ALT& lhsAlt = lhsItem->second;
914  const ALT& rhsAlt = rhsItem->second;
915 
916  retv = lhsAlt.m_Name.Cmp( rhsAlt.m_Name );
917 
918  if( retv )
919  return retv;
920 
921  if( lhsAlt.m_Type != rhsAlt.m_Type )
922  return static_cast<int>( lhsAlt.m_Type ) - static_cast<int>( rhsAlt.m_Type );
923 
924  if( lhsAlt.m_Shape != rhsAlt.m_Shape )
925  return static_cast<int>( lhsAlt.m_Shape ) - static_cast<int>( rhsAlt.m_Shape );
926 
927  ++lhsItem;
928  ++rhsItem;
929  }
930 
931  return 0;
932 }
int m_nameTextSize
Definition: lib_pin.h:289
GRAPHIC_PINSHAPE m_shape
Definition: lib_pin.h:283
int m_numTextSize
Definition: lib_pin.h:288
wxString m_name
Definition: lib_pin.h:286
int m_length
Definition: lib_pin.h:281
int m_orientation
Definition: lib_pin.h:282
wxString m_number
Definition: lib_pin.h:287
int m_attributes
Definition: lib_pin.h:285
std::map< wxString, ALT > m_alternates
Definition: lib_pin.h:291
wxPoint m_position
Definition: lib_pin.h:280
ELECTRICAL_PINTYPE m_type
Definition: lib_pin.h:284
virtual int compare(const LIB_ITEM &aOther, LIB_ITEM::COMPARE_FLAGS aCompareFlags=LIB_ITEM::COMPARE_FLAGS::NORMAL) const
Provide the draw object specific comparison called by the == and < operators.
Definition: lib_item.cpp:74
KICAD_T Type() const
Returns the type of object.
Definition: eda_item.h:113

References LIB_ITEM::compare(), LIB_PIN_T, m_alternates, m_attributes, m_length, LIB_PIN::ALT::m_Name, m_name, m_nameTextSize, m_number, m_numTextSize, m_orientation, m_position, LIB_PIN::ALT::m_Shape, m_shape, LIB_PIN::ALT::m_Type, m_type, and EDA_ITEM::Type().

◆ ContinueEdit()

virtual bool LIB_ITEM::ContinueEdit ( const wxPoint &  aPosition)
inlinevirtualinherited

Continue an edit in progress at aPosition.

This is used to perform the next action while drawing an item. This would be called for each additional left click when the mouse is captured while the item is being drawn.

Parameters
aPositionThe position of the mouse left click in drawing coordinates.
Returns
True if additional mouse clicks are required to complete the edit in progress.

Reimplemented in LIB_POLYLINE.

Definition at line 110 of file lib_item.h.

110 { return false; }

Referenced by SYMBOL_EDITOR_DRAWING_TOOLS::DrawShape().

◆ EndEdit()

virtual void LIB_ITEM::EndEdit ( )
inlinevirtualinherited

End an object editing action.

This is used to end or abort an edit action in progress initiated by BeginEdit().

Reimplemented in LIB_POLYLINE.

Definition at line 117 of file lib_item.h.

117 {}

Referenced by SYMBOL_EDITOR_DRAWING_TOOLS::DrawShape().

◆ Get() [1/3]

wxAny INSPECTABLE::Get ( PROPERTY_BASE aProperty)
inlineinherited

Definition at line 86 of file inspectable.h.

87  {
89  TYPE_ID thisType = TYPE_HASH( *this );
90  void* object = propMgr.TypeCast( this, thisType, aProperty->OwnerHash() );
91  return object ? aProperty->getter( object ) : wxAny();
92  }
static PROPERTY_MANAGER & Instance()
Definition: property_mgr.h:65
#define TYPE_HASH(x)
Definition: property.h:59
size_t TYPE_ID
Unique type identifier.
Definition: property_mgr.h:42
const void * TypeCast(const void *aSource, TYPE_ID aBase, TYPE_ID aTarget) const
Cast a type to another type.
virtual wxAny getter(void *aObject) const =0
Provide class metadata.Helper macro to map type hashes to names.
Definition: property_mgr.h:62
virtual size_t OwnerHash() const =0
Return type-id of the Owner class.

References PROPERTY_BASE::getter(), PROPERTY_MANAGER::Instance(), PROPERTY_BASE::OwnerHash(), TYPE_HASH, and PROPERTY_MANAGER::TypeCast().

Referenced by BOOST_AUTO_TEST_CASE(), CLASS_D_DESC::CLASS_D_DESC(), PCB_EXPR_VAR_REF::GetValue(), and PAD_DESC::PAD_DESC().

◆ Get() [2/3]

template<typename T >
T INSPECTABLE::Get ( PROPERTY_BASE aProperty)
inlineinherited

Definition at line 95 of file inspectable.h.

96  {
98  TYPE_ID thisType = TYPE_HASH( *this );
99  void* object = propMgr.TypeCast( this, thisType, aProperty->OwnerHash() );
100  return object ? aProperty->get<T>( object ) : T();
101  }
static PROPERTY_MANAGER & Instance()
Definition: property_mgr.h:65
#define TYPE_HASH(x)
Definition: property.h:59
size_t TYPE_ID
Unique type identifier.
Definition: property_mgr.h:42
const void * TypeCast(const void *aSource, TYPE_ID aBase, TYPE_ID aTarget) const
Cast a type to another type.
Provide class metadata.Helper macro to map type hashes to names.
Definition: property_mgr.h:62
T get(void *aObject)
Definition: property.h:268
virtual size_t OwnerHash() const =0
Return type-id of the Owner class.

References PROPERTY_BASE::get(), PROPERTY_MANAGER::Instance(), PROPERTY_BASE::OwnerHash(), TYPE_HASH, and PROPERTY_MANAGER::TypeCast().

◆ Get() [3/3]

template<typename T >
boost::optional<T> INSPECTABLE::Get ( const wxString &  aProperty)
inlineinherited

Definition at line 104 of file inspectable.h.

105  {
107  TYPE_ID thisType = TYPE_HASH( *this );
108  PROPERTY_BASE* prop = propMgr.GetProperty( thisType, aProperty );
109  boost::optional<T> ret;
110 
111  if( prop )
112  {
113  void* object = propMgr.TypeCast( this, thisType, prop->OwnerHash() );
114 
115  if( object )
116  ret = prop->get<T>( object );
117  }
118 
119  return ret;
120  }
static PROPERTY_MANAGER & Instance()
Definition: property_mgr.h:65
#define TYPE_HASH(x)
Definition: property.h:59
size_t TYPE_ID
Unique type identifier.
Definition: property_mgr.h:42
const void * TypeCast(const void *aSource, TYPE_ID aBase, TYPE_ID aTarget) const
Cast a type to another type.
PROPERTY_BASE * GetProperty(TYPE_ID aType, const wxString &aProperty) const
Return a property for a specific type.
Provide class metadata.Helper macro to map type hashes to names.
Definition: property_mgr.h:62
T get(void *aObject)
Definition: property.h:268
virtual size_t OwnerHash() const =0
Return type-id of the Owner class.

References PROPERTY_BASE::get(), PROPERTY_MANAGER::GetProperty(), PROPERTY_MANAGER::Instance(), PROPERTY_BASE::OwnerHash(), TYPE_HASH, and PROPERTY_MANAGER::TypeCast().

◆ GetAlt()

ALT LIB_PIN::GetAlt ( const wxString &  aAlt)
inline

Definition at line 134 of file lib_pin.h.

134 { return m_alternates[ aAlt ]; }
std::map< wxString, ALT > m_alternates
Definition: lib_pin.h:291

References m_alternates.

Referenced by SCH_PIN::GetShape(), and SCH_PIN::GetType().

◆ GetAlternates()

std::map<wxString, ALT>& LIB_PIN::GetAlternates ( )
inline

◆ GetBoundingBox() [1/2]

const EDA_RECT LIB_PIN::GetBoundingBox ( ) const
inlineoverridevirtual
Returns
the boundary box for this, in library coordinates

Reimplemented from LIB_ITEM.

Definition at line 174 of file lib_pin.h.

174 { return GetBoundingBox( false ); }
const EDA_RECT GetBoundingBox() const override
Definition: lib_pin.h:174

References GetBoundingBox().

Referenced by SCH_PIN::GetBoundingBox(), GetBoundingBox(), HitTest(), and DIALOG_PIN_PROPERTIES::OnPaintShowPanel().

◆ GetBoundingBox() [2/2]

const EDA_RECT LIB_PIN::GetBoundingBox ( bool  aIncludeInvisibles,
bool  aPinOnly = false 
) const
Parameters
aIncludeInvisibles- if false, do not include labels for invisible pins in the calculation.

Definition at line 1052 of file lib_pin.cpp.

1053 {
1054  EDA_RECT bbox;
1055  wxPoint begin;
1056  wxPoint end;
1057  int nameTextOffset = 0;
1058  wxString name = GetShownName();
1059  wxString number = GetShownNumber();
1060  bool showName = !name.IsEmpty();
1061  bool showNum = !number.IsEmpty();
1062  int minsizeV = TARGET_PIN_RADIUS;
1063 
1064  if( !aIncludeInvisibles && !IsVisible() )
1065  showName = false;
1066 
1067  if( GetParent() )
1068  {
1069  if( GetParent()->ShowPinNames() )
1070  nameTextOffset = GetParent()->GetPinNameOffset();
1071  else
1072  showName = false;
1073 
1074  if( !GetParent()->ShowPinNumbers() )
1075  showNum = false;
1076  }
1077 
1078  if( aPinOnly )
1079  {
1080  showName = false;
1081  showNum = false;
1082  }
1083 
1084  // First, calculate boundary box corners position
1085  int numberTextLength = showNum ? m_numTextSize * number.Len() : 0;
1086 
1087  // Actual text height is bigger than text size
1088  int numberTextHeight = showNum ? KiROUND( m_numTextSize * 1.1 ) : 0;
1089 
1091  minsizeV = std::max( TARGET_PIN_RADIUS, externalPinDecoSize( nullptr, *this ) );
1092 
1093  // calculate top left corner position
1094  // for the default pin orientation (PIN_RIGHT)
1095  begin.y = std::max( minsizeV, numberTextHeight + Mils2iu( PIN_TEXT_MARGIN ) );
1096  begin.x = std::min( -TARGET_PIN_RADIUS, m_length - (numberTextLength / 2) );
1097 
1098  // calculate bottom right corner position and adjust top left corner position
1099  int nameTextLength = 0;
1100  int nameTextHeight = 0;
1101 
1102  if( showName )
1103  {
1104  int length = name.Len();
1105 
1106  // TODO: exclude markup characters!
1107  nameTextLength = ( m_nameTextSize * length ) + nameTextOffset;
1108 
1109  // Actual text height are bigger than text size
1110  nameTextHeight = KiROUND( m_nameTextSize * 1.1 ) + Mils2iu( PIN_TEXT_MARGIN );
1111  }
1112 
1113  if( nameTextOffset ) // for values > 0, pin name is inside the body
1114  {
1115  end.x = m_length + nameTextLength + TARGET_PIN_RADIUS;
1116  end.y = std::min( -minsizeV, -nameTextHeight / 2 );
1117  }
1118  else // if value == 0:
1119  // pin name is outside the body, and above the pin line
1120  // pin num is below the pin line
1121  {
1122  end.x = std::max( m_length + TARGET_PIN_RADIUS, nameTextLength );
1123  end.y = -begin.y;
1124  begin.y = std::max( minsizeV, nameTextHeight );
1125  }
1126 
1127  // Now, calculate boundary box corners position for the actual pin orientation
1128  int orient = PinDrawOrient( DefaultTransform );
1129 
1130  /* Calculate the pin position */
1131  switch( orient )
1132  {
1133  case PIN_UP:
1134  // Pin is rotated and texts positions are mirrored
1135  RotatePoint( &begin, wxPoint( 0, 0 ), -900 );
1136  RotatePoint( &end, wxPoint( 0, 0 ), -900 );
1137  break;
1138 
1139  case PIN_DOWN:
1140  RotatePoint( &begin, wxPoint( 0, 0 ), 900 );
1141  RotatePoint( &end, wxPoint( 0, 0 ), 900 );
1142  begin.x = -begin.x;
1143  end.x = -end.x;
1144  break;
1145 
1146  case PIN_LEFT:
1147  begin.x = -begin.x;
1148  end.x = -end.x;
1149  break;
1150 
1151  case PIN_RIGHT:
1152  break;
1153  }
1154 
1155  begin += m_position;
1156  end += m_position;
1157 
1158  bbox.SetOrigin( begin );
1159  bbox.SetEnd( end );
1160  bbox.Normalize();
1161  bbox.Inflate( ( GetPenWidth() / 2 ) + 1 );
1162 
1163  // Draw Y axis is reversed in schematic:
1164  bbox.RevertYAxis();
1165 
1166  return bbox;
1167 }
int GetPinNameOffset() const
Definition: lib_symbol.h:561
int m_nameTextSize
Definition: lib_pin.h:289
wxString GetShownNumber() const
Definition: lib_pin.h:117
GRAPHIC_PINSHAPE m_shape
Definition: lib_pin.h:283
int m_numTextSize
Definition: lib_pin.h:288
void SetOrigin(const wxPoint &pos)
Definition: eda_rect.h:121
Definition: lib_pin.h:48
void RotatePoint(int *pX, int *pY, double angle)
Definition: trigo.cpp:228
int PinDrawOrient(const TRANSFORM &aTransform) const
Return the pin real orientation (PIN_UP, PIN_DOWN, PIN_RIGHT, PIN_LEFT), according to its orientation...
Definition: lib_pin.cpp:817
int m_length
Definition: lib_pin.h:281
void RevertYAxis()
Mirror the rectangle from the X axis (negate Y pos and size).
Definition: eda_rect.h:198
void SetEnd(int x, int y)
Definition: eda_rect.h:182
int GetPenWidth() const override
Definition: lib_pin.cpp:165
bool IsVisible() const
Definition: lib_pin.h:97
wxString GetShownName() const
Definition: lib_pin.cpp:171
void Normalize()
Ensures that the height ant width are positive.
Definition: eda_rect.cpp:35
LIB_SYMBOL * GetParent() const
Definition: lib_item.h:146
wxPoint m_position
Definition: lib_pin.h:280
TRANSFORM DefaultTransform
Definition: eeschema.cpp:56
const char * name
Definition: DXF_plotter.cpp:59
#define PIN_TEXT_MARGIN
Definition: lib_pin.cpp:37
static int externalPinDecoSize(const RENDER_SETTINGS *aSettings, const LIB_PIN &aPin)
Utility for getting the size of the 'external' pin decorators (as a radius)
Definition: lib_pin.cpp:82
Handle the component boundary box.
Definition: eda_rect.h:42
constexpr ret_type KiROUND(fp_type v)
Round a floating point number to an integer using "round halfway cases away from zero".
Definition: util.h:70
#define TARGET_PIN_RADIUS
Definition: lib_pin.h:36
EDA_RECT & Inflate(wxCoord dx, wxCoord dy)
Inflate the rectangle horizontally by dx and vertically by dy.
Definition: eda_rect.cpp:364

References DefaultTransform, externalPinDecoSize(), LIB_ITEM::GetParent(), GetPenWidth(), LIB_SYMBOL::GetPinNameOffset(), GetShownName(), GetShownNumber(), EDA_RECT::Inflate(), INVERTED, INVERTED_CLOCK, IsVisible(), KiROUND(), m_length, m_nameTextSize, m_numTextSize, m_position, m_shape, name, EDA_RECT::Normalize(), PIN_DOWN, PIN_LEFT, PIN_RIGHT, PIN_TEXT_MARGIN, PIN_UP, PinDrawOrient(), EDA_RECT::RevertYAxis(), RotatePoint(), EDA_RECT::SetEnd(), EDA_RECT::SetOrigin(), and TARGET_PIN_RADIUS.

◆ GetCanonicalElectricalTypeName() [1/2]

wxString const LIB_PIN::GetCanonicalElectricalTypeName ( ) const
inline

Definition at line 87 of file lib_pin.h.

88  {
90  }
ELECTRICAL_PINTYPE m_type
Definition: lib_pin.h:284
wxString const GetCanonicalElectricalTypeName() const
Definition: lib_pin.h:87

References m_type.

Referenced by SCH_PIN::GetCanonicalElectricalTypeName().

◆ GetCanonicalElectricalTypeName() [2/2]

const wxString LIB_PIN::GetCanonicalElectricalTypeName ( ELECTRICAL_PINTYPE  aType)
static

Return a string giving the electrical type of a pin.

Can be used when a known, not translated name is needed (for instance in net lists)

Parameters
aTypeis the electrical type (see enum ELECTRICAL_PINTYPE )
Returns
The electrical name for a pin type (see enun MsgPinElectricType for names).

Definition at line 39 of file lib_pin.cpp.

40 {
41  // These strings are the canonical name of the electrictal type
42  // Not translated, no space in name, only ASCII chars.
43  // to use when the string name must be known and well defined
44  // must have same order than enum ELECTRICAL_PINTYPE (see lib_pin.h)
45  static const wxChar* msgPinElectricType[] =
46  {
47  wxT( "input" ),
48  wxT( "output" ),
49  wxT( "bidirectional" ),
50  wxT( "tri_state" ),
51  wxT( "passive" ),
52  wxT( "free" ),
53  wxT( "unspecified" ),
54  wxT( "power_in" ),
55  wxT( "power_out" ),
56  wxT( "open_collector" ),
57  wxT( "open_emitter" ),
58  wxT( "no_connect" )
59  };
60 
61  return msgPinElectricType[static_cast<int>( aType )];
62 }

◆ GetClass()

wxString LIB_PIN::GetClass ( ) const
inlineoverridevirtual

Return the class name.

Implements EDA_ITEM.

Definition at line 65 of file lib_pin.h.

66  {
67  return wxT( "LIB_PIN" );
68  }

◆ GetConvert()

◆ GetEditFlags()

EDA_ITEM_FLAGS EDA_ITEM::GetEditFlags ( ) const
inlineinherited

Definition at line 158 of file eda_item.h.

159  {
160  constexpr int mask = ( IS_NEW | IS_PASTED | IS_MOVING | IS_RESIZING | IS_DRAGGING
162 
163  return m_flags & mask;
164  }
#define IS_NEW
New item, just created.
#define IS_RESIZING
Item being resized.
#define IS_DRAGGING
Item being dragged.
EDA_ITEM_FLAGS m_flags
Definition: eda_item.h:481
#define IS_PASTED
Modifier on IS_NEW which indicates it came from clipboard.
#define IS_MOVING
Item being moved.
#define STRUCT_DELETED
flag indication structures to be erased
#define IS_WIRE_IMAGE
Item to be drawn as wireframe while editing.

References IS_DRAGGING, IS_MOVING, IS_NEW, IS_PASTED, IS_RESIZING, IS_WIRE_IMAGE, EDA_ITEM::m_flags, and STRUCT_DELETED.

Referenced by EDA_ITEM::ClearEditFlags(), SCH_EDIT_FRAME::DeleteJunction(), SCH_EDIT_TOOL::editFieldText(), SYMBOL_EDITOR_PIN_TOOL::EditPinProperties(), SCH_EDITOR_CONTROL::EditWithSymbolEditor(), SCH_SYMBOL::GetMsgPanelInfo(), SELECTION_CONDITIONS::Idle(), SELECTION_CONDITIONS::IdleSelection(), SYMBOL_EDITOR_MOVE_TOOL::Main(), PCB_POINT_EDITOR::OnSelectionChange(), SYMBOL_EDITOR_EDIT_TOOL::Properties(), SCH_EDIT_TOOL::Properties(), PAD_TOOL::recombinePad(), SCH_EDIT_FRAME::SchematicCleanUp(), SCH_EDIT_FRAME::SelectUnit(), DIALOG_DIMENSION_PROPERTIES::TransferDataFromWindow(), DIALOG_TARGET_PROPERTIES::TransferDataFromWindow(), DIALOG_LABEL_EDITOR::TransferDataFromWindow(), DIALOG_FOOTPRINT_PROPERTIES::TransferDataFromWindow(), DIALOG_SYMBOL_PROPERTIES::TransferDataFromWindow(), and DIALOG_TEXT_PROPERTIES::TransferDataFromWindow().

◆ GetElectricalTypeName()

wxString const LIB_PIN::GetElectricalTypeName ( ) const
inline

Definition at line 92 of file lib_pin.h.

93  {
95  }
wxString ElectricalPinTypeGetText(ELECTRICAL_PINTYPE aType)
Definition: pin_type.cpp:237
ELECTRICAL_PINTYPE m_type
Definition: lib_pin.h:284

References ElectricalPinTypeGetText(), and m_type.

Referenced by KIGFX::SCH_PAINTER::draw(), GetSelectMenuText(), and printPinElectricalTypeName().

◆ GetFillMode()

◆ GetFlags()

◆ GetFocusPosition()

virtual const wxPoint EDA_ITEM::GetFocusPosition ( ) const
inlinevirtualinherited

Similar to GetPosition, but allows items to return their visual center rather than their anchor.

Reimplemented in BOARD, PCB_SHAPE, and PCB_TRACK.

Definition at line 259 of file eda_item.h.

259 { return GetPosition(); }
virtual wxPoint GetPosition() const
Definition: eda_item.h:252

References EDA_ITEM::GetPosition().

Referenced by PCB_BASE_FRAME::FocusOnItem(), and SCH_EDIT_FRAME::FocusOnItem().

◆ GetLength()

◆ GetMenuImage()

BITMAPS LIB_PIN::GetMenuImage ( ) const
overridevirtual

Return a pointer to an image to be used in menus.

The default version returns the right arrow image. Override this function to provide object specific menu images.

Returns
The menu image associated with the item.

Reimplemented from EDA_ITEM.

Definition at line 1170 of file lib_pin.cpp.

1171 {
1173 }
BITMAPS ElectricalPinTypeGetBitmap(ELECTRICAL_PINTYPE aType)
Definition: pin_type.cpp:247
ELECTRICAL_PINTYPE m_type
Definition: lib_pin.h:284

References ElectricalPinTypeGetBitmap(), and m_type.

◆ GetMsgPanelInfo()

void LIB_PIN::GetMsgPanelInfo ( EDA_DRAW_FRAME aFrame,
std::vector< MSG_PANEL_ITEM > &  aList 
)
overridevirtual

Display basic info (type, part and convert) about the current item in message panel.

This base function is used to display the information common to the all library items. Call the base class from the derived class or the common information will not be updated in the message panel.

Parameters
aListis the list to populate.

Reimplemented from LIB_ITEM.

Definition at line 1021 of file lib_pin.cpp.

1022 {
1023  LIB_ITEM::GetMsgPanelInfo( aFrame, aList );
1024 
1025  aList.push_back( MSG_PANEL_ITEM( _( "Name" ), GetShownName() ) );
1026  aList.push_back( MSG_PANEL_ITEM( _( "Number" ), GetShownNumber() ) );
1027  aList.push_back( MSG_PANEL_ITEM( _( "Type" ), ElectricalPinTypeGetText( m_type ) ) );
1028  aList.push_back( MSG_PANEL_ITEM( _( "Style" ), PinShapeGetText( m_shape ) ) );
1029 
1030  wxString text = IsVisible() ? _( "Yes" ) : _( "No" );
1031  aList.push_back( MSG_PANEL_ITEM( _( "Style" ), text ) );
1032 
1033  // Display pin length
1034  text = StringFromValue( aFrame->GetUserUnits(), m_length );
1035  aList.push_back( MSG_PANEL_ITEM( _( "Length" ), text ) );
1036 
1038  aList.push_back( MSG_PANEL_ITEM( _( "Orientation" ), text ) );
1039 
1040  wxPoint pinpos = GetPosition();
1041  pinpos.y = -pinpos.y; // Display coord are top to bottom
1042  // lib items coord are bottom to top
1043 
1044  text = MessageTextFromValue( aFrame->GetUserUnits(), pinpos.x );
1045  aList.push_back( MSG_PANEL_ITEM( _( "Pos X" ), text ) );
1046 
1047  text = MessageTextFromValue( aFrame->GetUserUnits(), pinpos.y );
1048  aList.push_back( MSG_PANEL_ITEM( _( "Pos Y" ), text ) );
1049 }
wxString MessageTextFromValue(EDA_UNITS aUnits, int aValue, bool aAddUnitLabel, EDA_DATA_TYPE aType)
Convert a value to a string using double notation.
Definition: base_units.cpp:103
wxString GetShownNumber() const
Definition: lib_pin.h:117
GRAPHIC_PINSHAPE m_shape
Definition: lib_pin.h:283
wxString ElectricalPinTypeGetText(ELECTRICAL_PINTYPE aType)
Definition: pin_type.cpp:237
int PinOrientationIndex(int code)
Definition: pin_type.cpp:147
wxString PinShapeGetText(GRAPHIC_PINSHAPE aShape)
Definition: pin_type.cpp:258
int m_length
Definition: lib_pin.h:281
wxString PinOrientationName(unsigned aPinOrientationCode)
Definition: pin_type.cpp:116
int m_orientation
Definition: lib_pin.h:282
#define _(s)
bool IsVisible() const
Definition: lib_pin.h:97
wxString GetShownName() const
Definition: lib_pin.cpp:171
void GetMsgPanelInfo(EDA_DRAW_FRAME *aFrame, std::vector< MSG_PANEL_ITEM > &aList) override
Display basic info (type, part and convert) about the current item in message panel.
Definition: lib_item.cpp:50
wxPoint GetPosition() const override
Definition: lib_pin.h:210
ELECTRICAL_PINTYPE m_type
Definition: lib_pin.h:284
wxString StringFromValue(EDA_UNITS aUnits, double aValue, bool aAddUnitSymbol, EDA_DATA_TYPE aType)
Convert a value to a string using double notation.
Definition: base_units.cpp:203
EDA_MSG_PANEL items for displaying messages.
Definition: msgpanel.h:53
EDA_UNITS GetUserUnits() const
Return the user units currently in use.

References _, ElectricalPinTypeGetText(), LIB_ITEM::GetMsgPanelInfo(), GetPosition(), GetShownName(), GetShownNumber(), EDA_BASE_FRAME::GetUserUnits(), IsVisible(), m_length, m_orientation, m_shape, m_type, MessageTextFromValue(), PinOrientationIndex(), PinOrientationName(), PinShapeGetText(), StringFromValue(), and text.

Referenced by SYMBOL_EDITOR_PIN_TOOL::EditPinProperties().

◆ GetName()

◆ GetNameTextSize()

◆ GetNumber()

◆ GetNumberTextSize()

◆ GetOrientation()

◆ GetParent()

◆ GetPenWidth()

int LIB_PIN::GetPenWidth ( ) const
overridevirtual

Implements LIB_ITEM.

Definition at line 165 of file lib_pin.cpp.

166 {
167  return 1;
168 }

Referenced by GetBoundingBox(), PlotPinTexts(), PlotSymbol(), printPinSymbol(), and printPinTexts().

◆ GetPosition()

◆ GetSelectMenuText()

wxString LIB_PIN::GetSelectMenuText ( EDA_UNITS  aUnits) const
overridevirtual

Return the text to display to be used in the selection clarification context menu when multiple items are found at the current cursor position.

The default version of this function raises an assertion in the debug mode and returns a string to indicate that it was not overridden to provide the object specific text.

Returns
The menu text string.

Reimplemented from EDA_ITEM.

Definition at line 1176 of file lib_pin.cpp.

1177 {
1178  if( !m_name.IsEmpty() )
1179  {
1180  return wxString::Format( _( "Pin %s [%s, %s, %s]" ),
1181  m_number,
1182  m_name,
1184  PinShapeGetText( m_shape ) );
1185  }
1186  else
1187  {
1188  return wxString::Format( _( "Pin %s [%s, %s]" ),
1189  m_number,
1191  PinShapeGetText( m_shape ) );
1192  }
1193 }
GRAPHIC_PINSHAPE m_shape
Definition: lib_pin.h:283
wxString m_name
Definition: lib_pin.h:286
wxString PinShapeGetText(GRAPHIC_PINSHAPE aShape)
Definition: pin_type.cpp:258
wxString m_number
Definition: lib_pin.h:287
wxString const GetElectricalTypeName() const
Definition: lib_pin.h:92
#define _(s)
void Format(OUTPUTFORMATTER *out, int aNestLevel, int aCtl, const CPTREE &aTree)
Output a PTREE into s-expression format via an OUTPUTFORMATTER derivative.
Definition: ptree.cpp:200

References _, Format(), GetElectricalTypeName(), m_name, m_number, m_shape, and PinShapeGetText().

Referenced by SCH_PIN::GetSelectMenuText().

◆ GetShape()

◆ GetShownName()

wxString LIB_PIN::GetShownName ( ) const

Definition at line 171 of file lib_pin.cpp.

172 {
173  if( m_name == "~" )
174  return wxEmptyString;
175  else
176  return m_name;
177 }
wxString m_name
Definition: lib_pin.h:286

References m_name.

Referenced by KIGFX::SCH_PAINTER::draw(), GetBoundingBox(), GetMsgPanelInfo(), PlotPinTexts(), and printPinTexts().

◆ GetShownNumber()

wxString LIB_PIN::GetShownNumber ( ) const
inline

Definition at line 117 of file lib_pin.h.

117 { return m_number; }
wxString m_number
Definition: lib_pin.h:287

References m_number.

Referenced by KIGFX::SCH_PAINTER::draw(), GetBoundingBox(), GetMsgPanelInfo(), PlotPinTexts(), printPinTexts(), and sortPinsByNumber().

◆ GetState()

int EDA_ITEM::GetState ( EDA_ITEM_FLAGS  type) const
inlineinherited

Definition at line 137 of file eda_item.h.

138  {
139  return m_status & type;
140  }
EDA_ITEM_FLAGS m_status
Definition: eda_item.h:478

References EDA_ITEM::m_status.

Referenced by BOARD_ITEM::IsLocked().

◆ GetStatus()

EDA_ITEM_FLAGS EDA_ITEM::GetStatus ( ) const
inlineinherited

Definition at line 150 of file eda_item.h.

150 { return m_status; }
EDA_ITEM_FLAGS m_status
Definition: eda_item.h:478

References EDA_ITEM::m_status.

◆ GetType()

◆ GetTypeName()

wxString LIB_PIN::GetTypeName ( ) const
inlineoverridevirtual

Provide a user-consumable name of the object type.

Perform localization when called so that run-time language selection works.

Implements LIB_ITEM.

Definition at line 70 of file lib_pin.h.

71  {
72  return _( "Pin" );
73  }
#define _(s)

References _.

◆ GetUnit()

◆ GetWidth()

int LIB_PIN::GetWidth ( ) const
inlineoverridevirtual

Implements LIB_ITEM.

Definition at line 221 of file lib_pin.h.

221 { return 1; }

◆ HasFlag()

◆ HitTest() [1/2]

bool LIB_PIN::HitTest ( const wxPoint &  aPosition,
int  aAccuracy = 0 
) const
overridevirtual

Test if aPosition is contained within or on the bounding box of an item.

Parameters
aPositionA reference to a wxPoint object containing the coordinates to test.
aAccuracyIncrease the item bounding box by this amount.
Returns
True if aPosition is within the item bounding box.

Reimplemented from LIB_ITEM.

Definition at line 140 of file lib_pin.cpp.

141 {
142  EDA_RECT rect = GetBoundingBox();
143 
144  return rect.Inflate( aAccuracy ).Contains( aPosition );
145 }
const EDA_RECT GetBoundingBox() const override
Definition: lib_pin.h:174
bool Contains(const wxPoint &aPoint) const
Definition: eda_rect.cpp:57
Handle the component boundary box.
Definition: eda_rect.h:42
EDA_RECT & Inflate(wxCoord dx, wxCoord dy)
Inflate the rectangle horizontally by dx and vertically by dy.
Definition: eda_rect.cpp:364

References EDA_RECT::Contains(), GetBoundingBox(), and EDA_RECT::Inflate().

◆ HitTest() [2/2]

bool LIB_PIN::HitTest ( const EDA_RECT aRect,
bool  aContained,
int  aAccuracy = 0 
) const
overridevirtual

Test if aRect intersects or is contained within the bounding box of an item.

Parameters
aRectA reference to a EDA_RECT object containing the rectangle to test.
aContainedSet to true to test for containment instead of an intersection.
aAccuracyIncrease aRect by this amount.
Returns
True if aRect contains or intersects the item bounding box.

Reimplemented from LIB_ITEM.

Definition at line 148 of file lib_pin.cpp.

149 {
150  if( m_flags & (STRUCT_DELETED | SKIP_STRUCT ) )
151  return false;
152 
153  EDA_RECT sel = aRect;
154 
155  if ( aAccuracy )
156  sel.Inflate( aAccuracy );
157 
158  if( aContained )
159  return sel.Contains( GetBoundingBox( false, true ) );
160 
161  return sel.Intersects( GetBoundingBox( false, true ) );
162 }
EDA_ITEM_FLAGS m_flags
Definition: eda_item.h:481
const EDA_RECT GetBoundingBox() const override
Definition: lib_pin.h:174
bool Contains(const wxPoint &aPoint) const
Definition: eda_rect.cpp:57
#define STRUCT_DELETED
flag indication structures to be erased
#define SKIP_STRUCT
flag indicating that the structure should be ignored
Handle the component boundary box.
Definition: eda_rect.h:42
bool Intersects(const EDA_RECT &aRect) const
Test for a common area between rectangles.
Definition: eda_rect.cpp:150
EDA_RECT & Inflate(wxCoord dx, wxCoord dy)
Inflate the rectangle horizontally by dx and vertically by dy.
Definition: eda_rect.cpp:364

References EDA_RECT::Contains(), GetBoundingBox(), EDA_RECT::Inflate(), EDA_RECT::Intersects(), EDA_ITEM::m_flags, SKIP_STRUCT, and STRUCT_DELETED.

◆ IsBrightened()

◆ IsDragging()

bool EDA_ITEM::IsDragging ( ) const
inlineinherited

Definition at line 121 of file eda_item.h.

121 { return m_flags & IS_DRAGGING; }
#define IS_DRAGGING
Item being dragged.
EDA_ITEM_FLAGS m_flags
Definition: eda_item.h:481

References IS_DRAGGING, and EDA_ITEM::m_flags.

Referenced by DIALOG_SYMBOL_PROPERTIES::DIALOG_SYMBOL_PROPERTIES().

◆ IsEntered()

bool EDA_ITEM::IsEntered ( ) const
inlineinherited

Definition at line 124 of file eda_item.h.

124 { return m_flags & ENTERED; }
EDA_ITEM_FLAGS m_flags
Definition: eda_item.h:481
#define ENTERED
indicates a group has been entered

References ENTERED, and EDA_ITEM::m_flags.

Referenced by KIGFX::PCB_PAINTER::draw().

◆ IsFillable()

bool LIB_ITEM::IsFillable ( ) const
inlineinherited

Check if draw object can be filled.

The default setting is false. If the derived object support filling, set the m_isFillable member to true.

Definition at line 256 of file lib_item.h.

256 { return m_isFillable; }
bool m_isFillable
Definition: lib_item.h:327

References LIB_ITEM::m_isFillable.

Referenced by formatFill(), DIALOG_LIB_EDIT_DRAW_ITEM::TransferDataFromWindow(), and DIALOG_LIB_EDIT_DRAW_ITEM::TransferDataToWindow().

◆ IsForceVisible()

bool EDA_ITEM::IsForceVisible ( ) const
inlineinherited

Definition at line 206 of file eda_item.h.

206 { return m_forceVisible; }
bool m_forceVisible
Definition: eda_item.h:480

References EDA_ITEM::m_forceVisible.

Referenced by KIGFX::SCH_PAINTER::draw(), and SCH_FIELD::Print().

◆ IsModified()

bool EDA_ITEM::IsModified ( ) const
inlineinherited

Definition at line 118 of file eda_item.h.

118 { return m_flags & IS_CHANGED; }
#define IS_CHANGED
Item was edited, and modified.
EDA_ITEM_FLAGS m_flags
Definition: eda_item.h:481

References IS_CHANGED, and EDA_ITEM::m_flags.

Referenced by PCB_EDIT_FRAME::OpenProjectFiles().

◆ IsMoving()

◆ IsNew()

◆ IsPowerConnection()

bool LIB_PIN::IsPowerConnection ( ) const
inline

Return whether this pin forms an implicit power connection: i.e., is hidden and of type POWER_IN.

Definition at line 186 of file lib_pin.h.

187  {
189  && ( !IsVisible() || (LIB_SYMBOL*) GetParent()->IsPower() );
190  }
power input (GND, VCC for ICs). Must be connected to a power output.
bool IsPower() const
Definition: lib_symbol.cpp:411
Define a library symbol object.
Definition: lib_symbol.h:96
bool IsVisible() const
Definition: lib_pin.h:97
ELECTRICAL_PINTYPE GetType() const
Definition: lib_pin.h:84
LIB_SYMBOL * GetParent() const
Definition: lib_item.h:146

References LIB_ITEM::GetParent(), GetType(), LIB_SYMBOL::IsPower(), IsVisible(), and PT_POWER_IN.

Referenced by KIGFX::SCH_PAINTER::draw(), SCH_PIN::GetDefaultNetName(), and SCH_PIN::IsPowerConnection().

◆ IsReplaceable()

virtual bool EDA_ITEM::IsReplaceable ( ) const
inlinevirtualinherited

Override this method in any derived object that supports test find and replace.

Returns
True if the item has replaceable text that can be modified using the find and replace dialog.

Reimplemented in SCH_SYMBOL, SCH_SHEET, SCH_LABEL, SCH_TEXT, SCH_FIELD, and SCH_SHEET_PIN.

Definition at line 403 of file eda_item.h.

403 { return false; }

Referenced by EDA_ITEM::Matches().

◆ IsResized()

bool EDA_ITEM::IsResized ( ) const
inlineinherited

Definition at line 125 of file eda_item.h.

125 { return m_flags & IS_RESIZING; }
#define IS_RESIZING
Item being resized.
EDA_ITEM_FLAGS m_flags
Definition: eda_item.h:481

References IS_RESIZING, and EDA_ITEM::m_flags.

◆ IsSelected()

bool EDA_ITEM::IsSelected ( ) const
inlineinherited

Definition at line 123 of file eda_item.h.

123 { return m_flags & SELECTED; }
EDA_ITEM_FLAGS m_flags
Definition: eda_item.h:481
#define SELECTED

References EDA_ITEM::m_flags, and SELECTED.

Referenced by ALIGN_DISTRIBUTE_TOOL::AlignBottom(), ALIGN_DISTRIBUTE_TOOL::AlignCenterX(), ALIGN_DISTRIBUTE_TOOL::AlignCenterY(), ALIGN_DISTRIBUTE_TOOL::AlignTop(), SCH_EDIT_FRAME::ConvertPart(), DIALOG_CHANGE_SYMBOLS::DIALOG_CHANGE_SYMBOLS(), ALIGN_DISTRIBUTE_TOOL::doAlignLeft(), ALIGN_DISTRIBUTE_TOOL::doAlignRight(), ALIGN_DISTRIBUTE_TOOL::doDistributeCentersHorizontally(), ALIGN_DISTRIBUTE_TOOL::doDistributeCentersVertically(), ALIGN_DISTRIBUTE_TOOL::doDistributeGapsHorizontally(), ALIGN_DISTRIBUTE_TOOL::doDistributeGapsVertically(), KIGFX::SCH_PAINTER::draw(), KIGFX::PCB_PAINTER::Draw(), KIGFX::PCB_PAINTER::draw(), DS_PROXY_UNDO_ITEM::DS_PROXY_UNDO_ITEM(), KIGFX::DS_RENDER_SETTINGS::GetColor(), KIGFX::GERBVIEW_RENDER_SETTINGS::GetColor(), KIGFX::PCB_RENDER_SETTINGS::GetColor(), SCH_MOVE_TOOL::getConnectedDragItems(), KIGFX::SCH_PAINTER::getLineWidth(), KIGFX::SCH_PAINTER::getRenderColor(), KIGFX::SCH_PAINTER::getTextThickness(), DIALOG_EXCHANGE_FOOTPRINTS::isMatch(), DIALOG_CHANGE_SYMBOLS::isMatch(), SCH_LINE::MergeOverlap(), SCH_EDIT_TOOL::Mirror(), EDIT_TOOL::MoveExact(), SCH_MOVE_TOOL::moveItem(), BOARD_COMMIT::Push(), PCB_SELECTION_TOOL::RebuildSelection(), EE_SELECTION_TOOL::RebuildSelection(), RENDER_3D_LEGACY::renderFootprint(), SCH_EDIT_TOOL::Rotate(), EE_TOOL_BASE< SCH_BASE_FRAME >::saveCopyInUndoList(), SCH_EDIT_FRAME::SchematicCleanUp(), GERBVIEW_SELECTION_TOOL::select(), PCB_SELECTION_TOOL::select(), PCB_SELECTION_TOOL::selectionContains(), EE_SELECTION_TOOL::selectMultiple(), PCB_SELECTION_TOOL::selectMultiple(), GERBVIEW_SELECTION_TOOL::selectPoint(), KIGFX::SCH_PAINTER::setDeviceColors(), and GERBVIEW_SELECTION_TOOL::unselect().

◆ IsType()

virtual bool EDA_ITEM::IsType ( const KICAD_T  aScanTypes[]) const
inlinevirtualinherited

Check whether the item is one of the listed types.

Parameters
aScanTypesList of item types
Returns
true if the item type is contained in the list aScanTypes

Reimplemented in PCB_VIA, SCH_LABEL, PCB_DIMENSION_BASE, PAD, SCH_FIELD, FP_TEXT, SCH_LINE, PCB_SHAPE, FP_SHAPE, and PCB_TEXT.

Definition at line 183 of file eda_item.h.

184  {
185  if( aScanTypes[0] == SCH_LOCATE_ANY_T )
186  return true;
187 
188  for( const KICAD_T* p = aScanTypes; *p != EOT; ++p )
189  {
190  if( m_structType == *p )
191  return true;
192  }
193 
194  return false;
195  }
search types array terminator (End Of Types)
Definition: typeinfo.h:81
KICAD_T
The set of class identification values stored in EDA_ITEM::m_structType.
Definition: typeinfo.h:77
KICAD_T m_structType
Run time identification, keep private so it can never be changed after a ctor sets it.
Definition: eda_item.h:488

References EOT, EDA_ITEM::m_structType, and SCH_LOCATE_ANY_T.

Referenced by ROUTER_TOOL::CanInlineDrag(), SCH_LINE_WIRE_BUS_TOOL::IsDrawingBus(), SCH_LINE_WIRE_BUS_TOOL::IsDrawingLine(), SCH_LINE_WIRE_BUS_TOOL::IsDrawingWire(), PCB_TEXT::IsType(), FP_SHAPE::IsType(), PCB_SHAPE::IsType(), SCH_LINE::IsType(), FP_TEXT::IsType(), SCH_FIELD::IsType(), PAD::IsType(), PCB_DIMENSION_BASE::IsType(), SCH_LABEL::IsType(), PCB_VIA::IsType(), EE_POINT_EDITOR::Main(), PL_POINT_EDITOR::Main(), EE_SELECTION_TOOL::RequestSelection(), SCH_BASE_FRAME::UpdateItem(), EDA_ITEM::Visit(), and DIALOG_GLOBAL_EDIT_TEXT_AND_GRAPHICS::visitItem().

◆ IsVisible()

◆ IsWireImage()

bool EDA_ITEM::IsWireImage ( ) const
inlineinherited

Definition at line 122 of file eda_item.h.

122 { return m_flags & IS_WIRE_IMAGE; }
EDA_ITEM_FLAGS m_flags
Definition: eda_item.h:481
#define IS_WIRE_IMAGE
Item to be drawn as wireframe while editing.

References IS_WIRE_IMAGE, and EDA_ITEM::m_flags.

◆ IterateForward() [1/2]

template<class T >
static SEARCH_RESULT EDA_ITEM::IterateForward ( std::deque< T > &  aList,
INSPECTOR  inspector,
void *  testData,
const KICAD_T  scanTypes[] 
)
inlinestaticinherited

This changes first parameter to avoid the DList and use the main queue instead.

Definition at line 295 of file eda_item.h.

299  {
300  for( auto it : aList )
301  {
302  if( static_cast<EDA_ITEM*>( it )->Visit( inspector, testData, scanTypes )
304  return SEARCH_RESULT::QUIT;
305  }
306 
308  }
virtual SEARCH_RESULT Visit(INSPECTOR inspector, void *testData, const KICAD_T scanTypes[])
May be re-implemented for each derived class in order to handle all the types given by its member dat...
Definition: eda_item.cpp:93

References CONTINUE, QUIT, and EDA_ITEM::Visit().

Referenced by GERBER_FILE_IMAGE::Visit().

◆ IterateForward() [2/2]

template<class T >
static SEARCH_RESULT EDA_ITEM::IterateForward ( std::vector< T > &  aList,
INSPECTOR  inspector,
void *  testData,
const KICAD_T  scanTypes[] 
)
inlinestaticinherited

Change first parameter to avoid the DList and use std::vector instead.

Definition at line 314 of file eda_item.h.

316  {
317  for( auto it : aList )
318  {
319  if( static_cast<EDA_ITEM*>( it )->Visit( inspector, testData, scanTypes )
321  return SEARCH_RESULT::QUIT;
322  }
323 
325  }
virtual SEARCH_RESULT Visit(INSPECTOR inspector, void *testData, const KICAD_T scanTypes[])
May be re-implemented for each derived class in order to handle all the types given by its member dat...
Definition: eda_item.cpp:93

References CONTINUE, QUIT, and EDA_ITEM::Visit().

◆ Matches() [1/2]

virtual bool EDA_ITEM::Matches ( const wxFindReplaceData &  aSearchData,
void *  aAuxData 
) const
inlinevirtualinherited

Compare the item against the search criteria in aSearchData.

The base class returns false since many of the objects derived from EDA_ITEM do not have any text to search.

Parameters
aSearchDataA reference to a wxFindReplaceData object containing the search criteria.
aAuxDataA pointer to optional data required for the search or NULL if not used.
Returns
True if the item's text matches the search criteria in aSearchData.

Reimplemented in SCH_SYMBOL, SCH_SHEET, SCH_TEXT, SCH_FIELD, SCH_SHEET_PIN, ZONE, SCH_PIN, SCH_MARKER, PCB_MARKER, FP_TEXT, and PCB_TEXT.

Definition at line 365 of file eda_item.h.

366  {
367  return false;
368  }

Referenced by SCH_EDITOR_CONTROL::HasMatch(), PCB_TEXT::Matches(), FP_TEXT::Matches(), PCB_MARKER::Matches(), SCH_MARKER::Matches(), SCH_PIN::Matches(), ZONE::Matches(), SCH_SHEET_PIN::Matches(), SCH_FIELD::Matches(), SCH_TEXT::Matches(), SCH_EDITOR_CONTROL::ReplaceAndFindNext(), and SCH_EDITOR_CONTROL::UpdateFind().

◆ Matches() [2/2]

bool EDA_ITEM::Matches ( const wxString &  aText,
const wxFindReplaceData &  aSearchData 
) const
protectedinherited

Compare aText against search criteria in aSearchData.

This is a helper function for simplify derived class logic.

Parameters
aTextA reference to a wxString object containing the string to test.
aSearchDataThe criteria to search against.
Returns
True if aText matches the search criteria in aSearchData.

Definition at line 118 of file eda_item.cpp.

119 {
120  wxString text = aText;
121  wxString searchText = aSearchData.GetFindString();
122 
123  // Don't match if searching for replaceable item and the item doesn't support text replace.
124  if( (aSearchData.GetFlags() & FR_SEARCH_REPLACE) && !IsReplaceable() )
125  return false;
126 
127  if( aSearchData.GetFlags() & wxFR_WHOLEWORD )
128  return aText.IsSameAs( searchText, aSearchData.GetFlags() & wxFR_MATCHCASE );
129 
130  if( aSearchData.GetFlags() & FR_MATCH_WILDCARD )
131  {
132  if( aSearchData.GetFlags() & wxFR_MATCHCASE )
133  return text.Matches( searchText );
134 
135  return text.MakeUpper().Matches( searchText.MakeUpper() );
136  }
137 
138  if( aSearchData.GetFlags() & wxFR_MATCHCASE )
139  return aText.Find( searchText ) != wxNOT_FOUND;
140 
141  return text.MakeUpper().Find( searchText.MakeUpper() ) != wxNOT_FOUND;
142 }
virtual bool IsReplaceable() const
Override this method in any derived object that supports test find and replace.
Definition: eda_item.h:403

References FR_MATCH_WILDCARD, FR_SEARCH_REPLACE, EDA_ITEM::IsReplaceable(), and text.

◆ MirrorHorizontal()

void LIB_PIN::MirrorHorizontal ( const wxPoint &  aCenter)
overridevirtual

Mirror the draw object along the horizontal (X) axis about aCenter point.

Parameters
aCenterPoint to mirror around.

Implements LIB_ITEM.

Definition at line 951 of file lib_pin.cpp.

952 {
953  m_position.x -= aCenter.x;
954  m_position.x *= -1;
955  m_position.x += aCenter.x;
956 
957  if( m_orientation == PIN_RIGHT )
959  else if( m_orientation == PIN_LEFT )
961 }
int m_orientation
Definition: lib_pin.h:282
wxPoint m_position
Definition: lib_pin.h:280

References m_orientation, m_position, PIN_LEFT, and PIN_RIGHT.

◆ MirrorVertical()

void LIB_PIN::MirrorVertical ( const wxPoint &  aCenter)
overridevirtual

Mirror the draw object along the MirrorVertical (Y) axis about aCenter point.

Parameters
aCenterPoint to mirror around.

Implements LIB_ITEM.

Definition at line 964 of file lib_pin.cpp.

965 {
966  m_position.y -= aCenter.y;
967  m_position.y *= -1;
968  m_position.y += aCenter.y;
969 
970  if( m_orientation == PIN_UP )
972  else if( m_orientation == PIN_DOWN )
974 }
Definition: lib_pin.h:48
int m_orientation
Definition: lib_pin.h:282
wxPoint m_position
Definition: lib_pin.h:280

References m_orientation, m_position, PIN_DOWN, and PIN_UP.

◆ MoveTo()

void LIB_PIN::MoveTo ( const wxPoint &  aPosition)
overridevirtual

Move a draw object to aPosition.

Parameters
aPositionPosition to move draw item to.

Implements LIB_ITEM.

Definition at line 941 of file lib_pin.cpp.

942 {
943  if( m_position != aNewPosition )
944  {
945  m_position = aNewPosition;
946  SetModified();
947  }
948 }
void SetModified()
Definition: eda_item.cpp:65
wxPoint m_position
Definition: lib_pin.h:280

References m_position, and EDA_ITEM::SetModified().

Referenced by CalcEdit().

◆ Offset()

void LIB_PIN::Offset ( const wxPoint &  aOffset)
overridevirtual

Set the drawing object by aOffset from the current position.

Parameters
aOffsetCoordinates to offset the item position.

Implements LIB_ITEM.

Definition at line 935 of file lib_pin.cpp.

936 {
937  m_position += aOffset;
938 }
wxPoint m_position
Definition: lib_pin.h:280

References m_position.

◆ operator<() [1/2]

bool LIB_ITEM::operator< ( const LIB_ITEM aOther) const
inherited

Test if another draw item is less than this draw object.

Parameters
aOther- Draw item to compare against.
Returns
- True if object is less than this object.

Definition at line 99 of file lib_item.cpp.

100 {
101  return ( compare( aOther ) < 0 );
102 }
virtual int compare(const LIB_ITEM &aOther, LIB_ITEM::COMPARE_FLAGS aCompareFlags=LIB_ITEM::COMPARE_FLAGS::NORMAL) const
Provide the draw object specific comparison called by the == and < operators.
Definition: lib_item.cpp:74

References LIB_ITEM::compare().

◆ operator<() [2/2]

bool EDA_ITEM::operator< ( const EDA_ITEM aItem) const
inherited

Test if another item is less than this object.

Parameters
aItem- Item to compare against.
Returns
- True if aItem is less than the item.

Definition at line 171 of file eda_item.cpp.

172 {
173  wxFAIL_MSG( wxString::Format( wxT( "Less than operator not defined for item type %s." ),
174  GetClass() ) );
175 
176  return false;
177 }
void Format(OUTPUTFORMATTER *out, int aNestLevel, int aCtl, const CPTREE &aTree)
Output a PTREE into s-expression format via an OUTPUTFORMATTER derivative.
Definition: ptree.cpp:200
virtual wxString GetClass() const =0
Return the class name.

References Format(), and EDA_ITEM::GetClass().

◆ operator==() [1/2]

bool LIB_ITEM::operator== ( const LIB_ITEM aOther) const
inherited

Test LIB_ITEM objects for equivalence.

Parameters
aOtherObject to test against.
Returns
True if object is identical to this object.

Definition at line 93 of file lib_item.cpp.

94 {
95  return compare( aOther ) == 0;
96 }
virtual int compare(const LIB_ITEM &aOther, LIB_ITEM::COMPARE_FLAGS aCompareFlags=LIB_ITEM::COMPARE_FLAGS::NORMAL) const
Provide the draw object specific comparison called by the == and < operators.
Definition: lib_item.cpp:74

References LIB_ITEM::compare().

◆ operator==() [2/2]

bool LIB_ITEM::operator== ( const LIB_ITEM aOther) const
inlineinherited

Definition at line 185 of file lib_item.h.

186  {
187  return *this == *aOther;
188  }

◆ PinDrawOrient()

int LIB_PIN::PinDrawOrient ( const TRANSFORM aTransform) const

Return the pin real orientation (PIN_UP, PIN_DOWN, PIN_RIGHT, PIN_LEFT), according to its orientation and the matrix transform (rot, mirror) aTransform.

Parameters
aTransformTransform matrix

Definition at line 817 of file lib_pin.cpp.

818 {
819  int orient;
820  wxPoint end; // position of pin end starting at 0,0 according to its orientation, length = 1
821 
822  switch( m_orientation )
823  {
824  case PIN_UP: end.y = 1; break;
825  case PIN_DOWN: end.y = -1; break;
826  case PIN_LEFT: end.x = -1; break;
827  case PIN_RIGHT: end.x = 1; break;
828  }
829 
830  // = pos of end point, according to the symbol orientation.
831  end = aTransform.TransformCoordinate( end );
832  orient = PIN_UP;
833 
834  if( end.x == 0 )
835  {
836  if( end.y > 0 )
837  orient = PIN_DOWN;
838  }
839  else
840  {
841  orient = PIN_RIGHT;
842 
843  if( end.x < 0 )
844  orient = PIN_LEFT;
845  }
846 
847  return orient;
848 }
Definition: lib_pin.h:48
wxPoint TransformCoordinate(const wxPoint &aPoint) const
Calculate a new coordinate according to the mirror/rotation transform.
Definition: transform.cpp:42
int m_orientation
Definition: lib_pin.h:282

References m_orientation, PIN_DOWN, PIN_LEFT, PIN_RIGHT, PIN_UP, and TRANSFORM::TransformCoordinate().

Referenced by GetBoundingBox(), AUTOPLACER::getPinSide(), Plot(), and print().

◆ Plot()

void LIB_PIN::Plot ( PLOTTER aPlotter,
const wxPoint &  aOffset,
bool  aFill,
const TRANSFORM aTransform 
) const
overridevirtual

Plot the draw item using the plot object.

Parameters
aPlotterThe plot object to plot to.
aOffsetPlot offset position.
aFillFlag to indicate whether or not the object is filled.
aTransformThe plot transform.

Implements LIB_ITEM.

Definition at line 1006 of file lib_pin.cpp.

1008 {
1009  if( !IsVisible() )
1010  return;
1011 
1012  int orient = PinDrawOrient( aTransform );
1013  wxPoint pos = aTransform.TransformCoordinate( m_position ) + aPffset;
1014 
1015  PlotSymbol( aPlotter, pos, orient );
1016  PlotPinTexts( aPlotter, pos, orient, GetParent()->GetPinNameOffset(),
1017  GetParent()->ShowPinNumbers(), GetParent()->ShowPinNames() );
1018 }
void PlotPinTexts(PLOTTER *aPlotter, const wxPoint &aPinPos, int aPinOrient, int aTextInside, bool aDrawPinNum, bool aDrawPinName) const
Plot the pin number and pin text info, given the pin line coordinates.
Definition: lib_pin.cpp:665
void PlotSymbol(PLOTTER *aPlotter, const wxPoint &aPosition, int aOrientation) const
Definition: lib_pin.cpp:536
int PinDrawOrient(const TRANSFORM &aTransform) const
Return the pin real orientation (PIN_UP, PIN_DOWN, PIN_RIGHT, PIN_LEFT), according to its orientation...
Definition: lib_pin.cpp:817
wxPoint TransformCoordinate(const wxPoint &aPoint) const
Calculate a new coordinate according to the mirror/rotation transform.
Definition: transform.cpp:42
bool IsVisible() const
Definition: lib_pin.h:97
LIB_SYMBOL * GetParent() const
Definition: lib_item.h:146
wxPoint m_position
Definition: lib_pin.h:280

References LIB_ITEM::GetParent(), IsVisible(), m_position, PinDrawOrient(), PlotPinTexts(), PlotSymbol(), and TRANSFORM::TransformCoordinate().

◆ PlotPinTexts()

void LIB_PIN::PlotPinTexts ( PLOTTER aPlotter,
const wxPoint &  aPinPos,
int  aPinOrient,
int  aTextInside,
bool  aDrawPinNum,
bool  aDrawPinName 
) const

Plot the pin number and pin text info, given the pin line coordinates.

Same as DrawPinTexts((), but output is the plotter The line must be vertical or horizontal. If TextInside then the text is been put inside (moving from x1, y1 in the opposite direction to x2,y2), otherwise all is drawn outside.

Definition at line 665 of file lib_pin.cpp.

667 {
668  wxString name = GetShownName();
669  wxString number = GetShownNumber();
670 
671  if( name.IsEmpty() )
672  aDrawPinName = false;
673 
674  if( number.IsEmpty() )
675  aDrawPinNum = false;
676 
677  if( !aDrawPinNum && !aDrawPinName )
678  return;
679 
680  int x, y;
681  wxSize pinNameSize = wxSize( m_nameTextSize, m_nameTextSize );
682  wxSize pinNumSize = wxSize( m_numTextSize, m_numTextSize );
683 
684  int namePenWidth = std::max( Clamp_Text_PenSize( GetPenWidth(), m_nameTextSize, false ),
685  aPlotter->RenderSettings()->GetDefaultPenWidth() );
686  int numPenWidth = std::max( Clamp_Text_PenSize( GetPenWidth(), m_numTextSize, false ),
687  aPlotter->RenderSettings()->GetDefaultPenWidth() );
688 
689  int name_offset = Mils2iu( PIN_TEXT_MARGIN ) + namePenWidth;
690  int num_offset = Mils2iu( PIN_TEXT_MARGIN ) + numPenWidth;
691 
692  /* Get the num and name colors */
693  COLOR4D nameColor = aPlotter->RenderSettings()->GetLayerColor( LAYER_PINNAM );
694  COLOR4D numColor = aPlotter->RenderSettings()->GetLayerColor( LAYER_PINNUM );
695 
696  int x1 = aPinPos.x;
697  int y1 = aPinPos.y;
698 
699  switch( aPinOrient )
700  {
701  case PIN_UP: y1 -= m_length; break;
702  case PIN_DOWN: y1 += m_length; break;
703  case PIN_LEFT: x1 -= m_length; break;
704  case PIN_RIGHT: x1 += m_length; break;
705  }
706 
707  /* Draw the text inside, but the pin numbers outside. */
708  if( aTextInside )
709  {
710  if( ( aPinOrient == PIN_LEFT) || ( aPinOrient == PIN_RIGHT) ) /* Its an horizontal line. */
711  {
712  if( aDrawPinName )
713  {
714  EDA_TEXT_HJUSTIFY_T hjustify;
715  if( aPinOrient == PIN_RIGHT )
716  {
717  x = x1 + aTextInside;
718  hjustify = GR_TEXT_HJUSTIFY_LEFT;
719  }
720  else // orient == PIN_LEFT
721  {
722  x = x1 - aTextInside;
723  hjustify = GR_TEXT_HJUSTIFY_RIGHT;
724  }
725 
726  aPlotter->Text( wxPoint( x, y1 ), nameColor, name, TEXT_ANGLE_HORIZ, pinNameSize,
727  hjustify, GR_TEXT_VJUSTIFY_CENTER, namePenWidth,
728  false, false );
729  }
730  if( aDrawPinNum )
731  {
732  aPlotter->Text( wxPoint( ( x1 + aPinPos.x) / 2, y1 - num_offset ), numColor,
733  number, TEXT_ANGLE_HORIZ, pinNumSize, GR_TEXT_HJUSTIFY_CENTER,
734  GR_TEXT_VJUSTIFY_BOTTOM, numPenWidth, false, false );
735  }
736  }
737  else /* Its a vertical line. */
738  {
739  if( aPinOrient == PIN_DOWN )
740  {
741  y = y1 + aTextInside;
742 
743  if( aDrawPinName )
744  aPlotter->Text( wxPoint( x1, y ), nameColor, name, TEXT_ANGLE_VERT,
746  namePenWidth, false, false );
747 
748  if( aDrawPinNum )
749  {
750  aPlotter->Text( wxPoint( x1 - num_offset, ( y1 + aPinPos.y) / 2 ), numColor,
751  number, TEXT_ANGLE_VERT, pinNumSize, GR_TEXT_HJUSTIFY_CENTER,
752  GR_TEXT_VJUSTIFY_BOTTOM, numPenWidth, false, false );
753  }
754  }
755  else /* PIN_UP */
756  {
757  y = y1 - aTextInside;
758 
759  if( aDrawPinName )
760  {
761  aPlotter->Text( wxPoint( x1, y ), nameColor, name, TEXT_ANGLE_VERT,
763  namePenWidth, false, false );
764  }
765 
766  if( aDrawPinNum )
767  {
768  aPlotter->Text( wxPoint( x1 - num_offset, ( y1 + aPinPos.y) / 2 ), numColor,
769  number, TEXT_ANGLE_VERT, pinNumSize, GR_TEXT_HJUSTIFY_CENTER,
770  GR_TEXT_VJUSTIFY_BOTTOM, numPenWidth, false, false );
771  }
772  }
773  }
774  }
775  else /* Draw num & text pin outside */
776  {
777  if(( aPinOrient == PIN_LEFT) || ( aPinOrient == PIN_RIGHT) )
778  {
779  /* Its an horizontal line. */
780  if( aDrawPinName )
781  {
782  x = ( x1 + aPinPos.x) / 2;
783  aPlotter->Text( wxPoint( x, y1 - name_offset ), nameColor, name,
785  GR_TEXT_VJUSTIFY_BOTTOM, namePenWidth, false, false );
786  }
787 
788  if( aDrawPinNum )
789  {
790  x = ( x1 + aPinPos.x ) / 2;
791  aPlotter->Text( wxPoint( x, y1 + num_offset ), numColor, number,
793  GR_TEXT_VJUSTIFY_TOP, numPenWidth, false, false );
794  }
795  }
796  else /* Its a vertical line. */
797  {
798  if( aDrawPinName )
799  {
800  y = ( y1 + aPinPos.y ) / 2;
801  aPlotter->Text( wxPoint( x1 - name_offset, y ), nameColor, name,
803  GR_TEXT_VJUSTIFY_BOTTOM, namePenWidth, false, false );
804  }
805 
806  if( aDrawPinNum )
807  {
808  aPlotter->Text( wxPoint( x1 + num_offset, ( y1 + aPinPos.y ) / 2 ), numColor,
809  number, TEXT_ANGLE_VERT, pinNumSize, GR_TEXT_HJUSTIFY_CENTER,
810  GR_TEXT_VJUSTIFY_TOP, numPenWidth, false, false );
811  }
812  }
813  }
814 }
#define TEXT_ANGLE_HORIZ
Frequent text rotations, used with {Set,Get}TextAngle(), in 0.1 degrees for now, hoping to migrate to...
Definition: eda_text.h:50
int m_nameTextSize
Definition: lib_pin.h:289
wxString GetShownNumber() const
Definition: lib_pin.h:117
EDA_TEXT_HJUSTIFY_T
Definition: eda_text.h:61
int m_numTextSize
Definition: lib_pin.h:288
const COLOR4D & GetLayerColor(int aLayer) const
Return the color used to draw a layer.
Definition: lib_pin.h:48
int m_length
Definition: lib_pin.h:281
int Clamp_Text_PenSize(int aPenSize, int aSize, bool aBold)
Don't allow text to become cluttered up in its own fatness.
Definition: gr_text.cpp:68
int GetPenWidth() const override
Definition: lib_pin.cpp:165
wxString GetShownName() const
Definition: lib_pin.cpp:171
RENDER_SETTINGS * RenderSettings()
Definition: plotter.h:156
const char * name
Definition: DXF_plotter.cpp:59
#define PIN_TEXT_MARGIN
Definition: lib_pin.cpp:37
int GetDefaultPenWidth() const
virtual void Text(const wxPoint &aPos, const COLOR4D &aColor, const wxString &aText, double aOrient, const wxSize &aSize, enum EDA_TEXT_HJUSTIFY_T aH_justify, enum EDA_TEXT_VJUSTIFY_T aV_justify, int aWidth, bool aItalic, bool aBold, bool aMultilineAllowed=false, void *aData=nullptr)
Draw text with the plotter.
Definition: gr_text.cpp:217
#define TEXT_ANGLE_VERT
Definition: eda_text.h:51
A color representation with 4 components: red, green, blue, alpha.
Definition: color4d.h:103

References Clamp_Text_PenSize(), KIGFX::RENDER_SETTINGS::GetDefaultPenWidth(), KIGFX::RENDER_SETTINGS::GetLayerColor(), GetPenWidth(), GetShownName(), GetShownNumber(), GR_TEXT_HJUSTIFY_CENTER, GR_TEXT_HJUSTIFY_LEFT, GR_TEXT_HJUSTIFY_RIGHT, GR_TEXT_VJUSTIFY_BOTTOM, GR_TEXT_VJUSTIFY_CENTER, GR_TEXT_VJUSTIFY_TOP, LAYER_PINNAM, LAYER_PINNUM, m_length, m_nameTextSize, m_numTextSize, name, PIN_DOWN, PIN_LEFT, PIN_RIGHT, PIN_TEXT_MARGIN, PIN_UP, PLOTTER::RenderSettings(), PLOTTER::Text(), TEXT_ANGLE_HORIZ, and TEXT_ANGLE_VERT.

Referenced by Plot().

◆ PlotSymbol()

void LIB_PIN::PlotSymbol ( PLOTTER aPlotter,
const wxPoint &  aPosition,
int  aOrientation 
) const

Definition at line 536 of file lib_pin.cpp.

537 {
538  int MapX1, MapY1, x1, y1;
540  int penWidth = std::max( GetPenWidth(), aPlotter->RenderSettings()->GetDefaultPenWidth() );
541 
542  aPlotter->SetColor( color );
543  aPlotter->SetCurrentLineWidth( penWidth );
544 
545  MapX1 = MapY1 = 0;
546  x1 = aPosition.x; y1 = aPosition.y;
547 
548  switch( aOrientation )
549  {
550  case PIN_UP: y1 = aPosition.y - m_length; MapY1 = 1; break;
551  case PIN_DOWN: y1 = aPosition.y + m_length; MapY1 = -1; break;
552  case PIN_LEFT: x1 = aPosition.x - m_length; MapX1 = 1; break;
553  case PIN_RIGHT: x1 = aPosition.x + m_length; MapX1 = -1; break;
554  }
555 
557  {
558  const int radius = externalPinDecoSize( aPlotter->RenderSettings(), *this );
559  aPlotter->Circle( wxPoint( MapX1 * radius + x1, MapY1 * radius + y1 ), radius * 2,
560  FILL_TYPE::NO_FILL, penWidth );
561 
562  aPlotter->MoveTo( wxPoint( MapX1 * radius * 2 + x1, MapY1 * radius * 2 + y1 ) );
563  aPlotter->FinishTo( aPosition );
564  }
566  {
567  const int deco_size = internalPinDecoSize( aPlotter->RenderSettings(), *this );
568  if( MapY1 == 0 ) /* MapX1 = +- 1 */
569  {
570  aPlotter->MoveTo( wxPoint( x1, y1 + deco_size ) );
571  aPlotter->LineTo( wxPoint( x1 + MapX1 * deco_size * 2, y1 ) );
572  aPlotter->FinishTo( wxPoint( x1, y1 - deco_size ) );
573  }
574  else /* MapX1 = 0 */
575  {
576  aPlotter->MoveTo( wxPoint( x1 + deco_size, y1 ) );
577  aPlotter->LineTo( wxPoint( x1, y1 + MapY1 * deco_size * 2 ) );
578  aPlotter->FinishTo( wxPoint( x1 - deco_size, y1 ) );
579  }
580 
581  aPlotter->MoveTo( wxPoint( MapX1 * deco_size * 2 + x1, MapY1 * deco_size * 2 + y1 ) );
582  aPlotter->FinishTo( aPosition );
583  }
584  else
585  {
586  aPlotter->MoveTo( wxPoint( x1, y1 ) );
587  aPlotter->FinishTo( aPosition );
588  }
589 
593  {
594  const int deco_size = internalPinDecoSize( aPlotter->RenderSettings(), *this );
595  if( MapY1 == 0 ) /* MapX1 = +- 1 */
596  {
597  aPlotter->MoveTo( wxPoint( x1, y1 + deco_size ) );
598  aPlotter->LineTo( wxPoint( x1 - MapX1 * deco_size * 2, y1 ) );
599  aPlotter->FinishTo( wxPoint( x1, y1 - deco_size ) );
600  }
601  else /* MapX1 = 0 */
602  {
603  aPlotter->MoveTo( wxPoint( x1 + deco_size, y1 ) );
604  aPlotter->LineTo( wxPoint( x1, y1 - MapY1 * deco_size * 2 ) );
605  aPlotter->FinishTo( wxPoint( x1 - deco_size, y1 ) );
606  }
607  }
608 
610  || m_shape == GRAPHIC_PINSHAPE::CLOCK_LOW ) /* IEEE symbol "Active Low Input" */
611  {
612  const int deco_size = externalPinDecoSize( aPlotter->RenderSettings(), *this );
613 
614  if( MapY1 == 0 ) /* MapX1 = +- 1 */
615  {
616  aPlotter->MoveTo( wxPoint( x1 + MapX1 * deco_size * 2, y1 ) );
617  aPlotter->LineTo( wxPoint( x1 + MapX1 * deco_size * 2, y1 - deco_size * 2 ) );
618  aPlotter->FinishTo( wxPoint( x1, y1 ) );
619  }
620  else /* MapX1 = 0 */
621  {
622  aPlotter->MoveTo( wxPoint( x1, y1 + MapY1 * deco_size * 2 ) );
623  aPlotter->LineTo( wxPoint( x1 - deco_size * 2, y1 + MapY1 * deco_size * 2 ) );
624  aPlotter->FinishTo( wxPoint( x1, y1 ) );
625  }
626  }
627 
628  if( m_shape == GRAPHIC_PINSHAPE::OUTPUT_LOW ) /* IEEE symbol "Active Low Output" */
629  {
630  const int symbol_size = externalPinDecoSize( aPlotter->RenderSettings(), *this );
631 
632  if( MapY1 == 0 ) /* MapX1 = +- 1 */
633  {
634  aPlotter->MoveTo( wxPoint( x1, y1 - symbol_size * 2 ) );
635  aPlotter->FinishTo( wxPoint( x1 + MapX1 * symbol_size * 2, y1 ) );
636  }
637  else /* MapX1 = 0 */
638  {
639  aPlotter->MoveTo( wxPoint( x1 - symbol_size * 2, y1 ) );
640  aPlotter->FinishTo( wxPoint( x1, y1 + MapY1 * symbol_size * 2 ) );
641  }
642  }
643  else if( m_shape == GRAPHIC_PINSHAPE::NONLOGIC ) /* NonLogic pin symbol */
644  {
645  const int deco_size = externalPinDecoSize( aPlotter->RenderSettings(), *this );
646  aPlotter->MoveTo( wxPoint( x1 - (MapX1 + MapY1) * deco_size, y1 - (MapY1 - MapX1) * deco_size ) );
647  aPlotter->FinishTo( wxPoint( x1 + (MapX1 + MapY1) * deco_size, y1 + (MapY1 - MapX1) * deco_size ) );
648  aPlotter->MoveTo( wxPoint( x1 - (MapX1 - MapY1) * deco_size, y1 - (MapY1 + MapX1) * deco_size ) );
649  aPlotter->FinishTo( wxPoint( x1 + (MapX1 - MapY1) * deco_size, y1 + (MapY1 + MapX1) * deco_size ) );
650  }
651 
652  if( m_type == ELECTRICAL_PINTYPE::PT_NC ) // Draw a N.C. symbol
653  {
654  const int deco_size = TARGET_PIN_RADIUS;
655  const int ex1 = aPosition.x;
656  const int ey1 = aPosition.y;
657  aPlotter->MoveTo( wxPoint( ex1 - deco_size, ey1 - deco_size ) );
658  aPlotter->FinishTo( wxPoint( ex1 + deco_size, ey1 + deco_size ) );
659  aPlotter->MoveTo( wxPoint( ex1 + deco_size, ey1 - deco_size ) );
660  aPlotter->FinishTo( wxPoint( ex1 - deco_size, ey1 + deco_size ) );
661  }
662 }
void FinishTo(const wxPoint &pos)
Definition: plotter.h:273
GRAPHIC_PINSHAPE m_shape
Definition: lib_pin.h:283
int color
Definition: DXF_plotter.cpp:60
const COLOR4D & GetLayerColor(int aLayer) const
Return the color used to draw a layer.
Definition: lib_pin.h:48
int m_length
Definition: lib_pin.h:281
void LineTo(const wxPoint &pos)
Definition: plotter.h:268
int GetPenWidth() const override
Definition: lib_pin.cpp:165
virtual void Circle(const wxPoint &pos, int diametre, FILL_TYPE fill, int width=USE_DEFAULT_LINE_WIDTH)=0
virtual void SetColor(const COLOR4D &color)=0
void MoveTo(const wxPoint &pos)
Definition: plotter.h:263
RENDER_SETTINGS * RenderSettings()
Definition: plotter.h:156
static int internalPinDecoSize(const RENDER_SETTINGS *aSettings, const LIB_PIN &aPin)
Utility for getting the size of the 'internal' pin decorators (as a radius)
Definition: lib_pin.cpp:69
static int externalPinDecoSize(const RENDER_SETTINGS *aSettings, const LIB_PIN &aPin)
Utility for getting the size of the 'external' pin decorators (as a radius)
Definition: lib_pin.cpp:82
#define TARGET_PIN_RADIUS
Definition: lib_pin.h:36
ELECTRICAL_PINTYPE m_type
Definition: lib_pin.h:284
int GetDefaultPenWidth() const
not connected (must be left open)
virtual void SetCurrentLineWidth(int width, void *aData=nullptr)=0
Set the line width for the next drawing.
A color representation with 4 components: red, green, blue, alpha.
Definition: color4d.h:103

References PLOTTER::Circle(), CLOCK, CLOCK_LOW, color, externalPinDecoSize(), FALLING_EDGE_CLOCK, PLOTTER::FinishTo(), KIGFX::RENDER_SETTINGS::GetDefaultPenWidth(), KIGFX::RENDER_SETTINGS::GetLayerColor(), GetPenWidth(), INPUT_LOW, internalPinDecoSize(), INVERTED, INVERTED_CLOCK, LAYER_PIN, PLOTTER::LineTo(), m_length, m_shape, m_type, PLOTTER::MoveTo(), NO_FILL, NONLOGIC, OUTPUT_LOW, PIN_DOWN, PIN_LEFT, PIN_RIGHT, PIN_UP, PT_NC, PLOTTER::RenderSettings(), PLOTTER::SetColor(), PLOTTER::SetCurrentLineWidth(), and TARGET_PIN_RADIUS.

Referenced by Plot().

◆ Print()

void LIB_ITEM::Print ( const RENDER_SETTINGS aSettings,
const wxPoint &  aOffset,
void *  aData,
const TRANSFORM aTransform 
)
virtualinherited

Draw an item.

Parameters
aDCDevice Context (can be null)
aOffsetOffset to draw
aDataValue or pointer used to pass others parameters, depending on body items. Used for some items to force to force no fill mode ( has meaning only for items what can be filled ). used in printing or moving objects mode or to pass reference to the lib symbol for pins.
aTransformTransform Matrix (rotation, mirror ..)

Definition at line 122 of file lib_item.cpp.

124 {
125  print( aSettings, aOffset, aData, aTransform );
126 }
virtual void print(const RENDER_SETTINGS *aSettings, const wxPoint &aOffset, void *aData, const TRANSFORM &aTransform)=0
Print the item to aDC.

References LIB_ITEM::print().

Referenced by DIALOG_PIN_PROPERTIES::OnPaintShowPanel().

◆ print()

void LIB_PIN::print ( const RENDER_SETTINGS aSettings,
const wxPoint &  aOffset,
void *  aData,
const TRANSFORM aTransform 
)
overridevirtual

Print a pin, with or without the pin texts.

Parameters
aOffsetOffset to draw
aData= used here as a boolean indicating whether or not to draw the pin electrical types
aTransformTransform Matrix (rotation, mirror ..)

Implements LIB_ITEM.

Definition at line 180 of file lib_pin.cpp.

182 {
183  LIB_SYMBOL_OPTIONS* opts = (LIB_SYMBOL_OPTIONS*) aData;
184  bool drawHiddenFields = opts ? opts->draw_hidden_fields : false;
185  bool showPinType = opts ? opts->show_elec_type : false;
186  bool show_connect_point = opts ? opts->show_connect_point : false;
187 
188  LIB_SYMBOL* part = GetParent();
189 
190  /* Calculate pin orient taking in account the symbol orientation. */
191  int orient = PinDrawOrient( aTransform );
192 
193  /* Calculate the pin position */
194  wxPoint pos1 = aTransform.TransformCoordinate( m_position ) + aOffset;
195 
196  if( IsVisible() || drawHiddenFields )
197  {
198  printPinSymbol( aSettings, pos1, orient );
199 
200  printPinTexts( aSettings, pos1, orient, part->GetPinNameOffset(), part->ShowPinNumbers(),
201  part->ShowPinNames() );
202 
203  if( showPinType )
204  printPinElectricalTypeName( aSettings, pos1, orient );
205 
206  if( show_connect_point )
207  {
208  wxDC* DC = aSettings->GetPrintDC();
210  GRCircle( nullptr, DC, pos1.x, pos1.y, TARGET_PIN_RADIUS, 0, color );
211  }
212  }
213 }
int GetPinNameOffset() const
Definition: lib_symbol.h:561
void printPinTexts(const RENDER_SETTINGS *aSettings, wxPoint &aPinPos, int aPinOrient, int aTextInside, bool aDrawPinNum, bool aDrawPinName)
Put the pin number and pin text info, given the pin line coordinates.
Definition: lib_pin.cpp:327
int color
Definition: DXF_plotter.cpp:60
bool ShowPinNumbers() const
Definition: lib_symbol.h:577
const COLOR4D & GetLayerColor(int aLayer) const
Return the color used to draw a layer.
int PinDrawOrient(const TRANSFORM &aTransform) const
Return the pin real orientation (PIN_UP, PIN_DOWN, PIN_RIGHT, PIN_LEFT), according to its orientation...
Definition: lib_pin.cpp:817
Define a library symbol object.
Definition: lib_symbol.h:96
wxPoint TransformCoordinate(const wxPoint &aPoint) const
Calculate a new coordinate according to the mirror/rotation transform.
Definition: transform.cpp:42
void printPinSymbol(const RENDER_SETTINGS *aSettings, const wxPoint &aPos, int aOrientation)
Print the pin symbol without text.
Definition: lib_pin.cpp:216
bool ShowPinNames() const
Definition: lib_symbol.h:569
wxDC * GetPrintDC() const
bool IsVisible() const
Definition: lib_pin.h:97
LIB_SYMBOL * GetParent() const
Definition: lib_item.h:146
wxPoint m_position
Definition: lib_pin.h:280
void printPinElectricalTypeName(const RENDER_SETTINGS *aSettings, wxPoint &aPosition, int aOrientation)
Draw the electrical type text of the pin (only for the footprint editor)
Definition: lib_pin.cpp:483
void GRCircle(EDA_RECT *ClipBox, wxDC *DC, int xc, int yc, int r, int width, COLOR4D Color)
Definition: gr_basic.cpp:594
#define TARGET_PIN_RADIUS
Definition: lib_pin.h:36
A color representation with 4 components: red, green, blue, alpha.
Definition: color4d.h:103

References color, LIB_SYMBOL_OPTIONS::draw_hidden_fields, KIGFX::RENDER_SETTINGS::GetLayerColor(), LIB_ITEM::GetParent(), LIB_SYMBOL::GetPinNameOffset(), KIGFX::RENDER_SETTINGS::GetPrintDC(), GRCircle(), IsVisible(), LAYER_HIDDEN, LAYER_PIN, m_position, PinDrawOrient(), printPinElectricalTypeName(), printPinSymbol(), printPinTexts(), LIB_SYMBOL_OPTIONS::show_connect_point, LIB_SYMBOL_OPTIONS::show_elec_type, LIB_SYMBOL::ShowPinNames(), LIB_SYMBOL::ShowPinNumbers(), TARGET_PIN_RADIUS, and TRANSFORM::TransformCoordinate().

◆ printPinElectricalTypeName()

void LIB_PIN::printPinElectricalTypeName ( const RENDER_SETTINGS aSettings,
wxPoint &  aPosition,
int  aOrientation 
)
protected

Draw the electrical type text of the pin (only for the footprint editor)

Definition at line 483 of file lib_pin.cpp.

485 {
486  wxDC* DC = aSettings->GetPrintDC();
487  wxString typeName = GetElectricalTypeName();
488 
489  // Use a reasonable (small) size to draw the text
490  int textSize = ( m_nameTextSize * 3 ) / 4;
491 
492  #define ETXT_MAX_SIZE Millimeter2iu( 0.7 )
493 
494  if( textSize > ETXT_MAX_SIZE )
495  textSize = ETXT_MAX_SIZE;
496 
497  // Use a reasonable pen size to draw the text
498  int pensize = textSize/6;
499 
500  // Get a suitable color
502 
503  wxPoint txtpos = aPosition;
504  int offset = Millimeter2iu( 0.4 );
506  int orient = TEXT_ANGLE_HORIZ;
507 
508  switch( aOrientation )
509  {
510  case PIN_UP:
511  txtpos.y += offset;
512  orient = TEXT_ANGLE_VERT;
513  hjustify = GR_TEXT_HJUSTIFY_RIGHT;
514  break;
515 
516  case PIN_DOWN:
517  txtpos.y -= offset;
518  orient = TEXT_ANGLE_VERT;
519  break;
520 
521  case PIN_LEFT:
522  txtpos.x += offset;
523  break;
524 
525  case PIN_RIGHT:
526  txtpos.x -= offset;
527  hjustify = GR_TEXT_HJUSTIFY_RIGHT;
528  break;
529  }
530 
531  GRText( DC, txtpos, color, typeName, orient, wxSize( textSize, textSize ), hjustify,
532  GR_TEXT_VJUSTIFY_CENTER, pensize, false, false, nullptr );
533 }
#define TEXT_ANGLE_HORIZ
Frequent text rotations, used with {Set,Get}TextAngle(), in 0.1 degrees for now, hoping to migrate to...
Definition: eda_text.h:50
int m_nameTextSize
Definition: lib_pin.h:289
EDA_TEXT_HJUSTIFY_T
Definition: eda_text.h:61
#define ETXT_MAX_SIZE
int color
Definition: DXF_plotter.cpp:60
const COLOR4D & GetLayerColor(int aLayer) const
Return the color used to draw a layer.
Definition: lib_pin.h:48
wxString const GetElectricalTypeName() const
Definition: lib_pin.h:92
wxDC * GetPrintDC() const
bool IsVisible() const
Definition: lib_pin.h:97
void GRText(wxDC *aDC, const wxPoint &aPos, COLOR4D aColor, const wxString &aText, double aOrient, const wxSize &aSize, enum EDA_TEXT_HJUSTIFY_T aH_justify, enum EDA_TEXT_VJUSTIFY_T aV_justify, int aWidth, bool aItalic, bool aBold, void(*aCallback)(int x0, int y0, int xf, int yf, void *aData), void *aCallbackData, PLOTTER *aPlotter)
Draw a graphic text (like footprint texts).
Definition: gr_text.cpp:130
#define TEXT_ANGLE_VERT
Definition: eda_text.h:51
static constexpr int Millimeter2iu(double mm)
A color representation with 4 components: red, green, blue, alpha.
Definition: color4d.h:103

References color, ETXT_MAX_SIZE, GetElectricalTypeName(), KIGFX::RENDER_SETTINGS::GetLayerColor(), KIGFX::RENDER_SETTINGS::GetPrintDC(), GR_TEXT_HJUSTIFY_LEFT, GR_TEXT_HJUSTIFY_RIGHT, GR_TEXT_VJUSTIFY_CENTER, GRText(), IsVisible(), LAYER_HIDDEN, LAYER_NOTES, m_nameTextSize, Millimeter2iu(), PIN_DOWN, PIN_LEFT, PIN_RIGHT, PIN_UP, TEXT_ANGLE_HORIZ, and TEXT_ANGLE_VERT.

Referenced by print().

◆ printPinSymbol()

void LIB_PIN::printPinSymbol ( const RENDER_SETTINGS aSettings,
const wxPoint &  aPos,
int  aOrientation 
)
protected

Print the pin symbol without text.

If aColor != 0, draw with aColor, else with the normal pin color.

Definition at line 216 of file lib_pin.cpp.

217 {
218  wxDC* DC = aSettings->GetPrintDC();
219  int MapX1, MapY1, x1, y1;
220  int width = std::max( GetPenWidth(), aSettings->GetDefaultPenWidth() );
221  int posX = aPos.x, posY = aPos.y, len = m_length;
223 
224  MapX1 = MapY1 = 0;
225  x1 = posX;
226  y1 = posY;
227 
228  switch( aOrient )
229  {
230  case PIN_UP: y1 = posY - len; MapY1 = 1; break;
231  case PIN_DOWN: y1 = posY + len; MapY1 = -1; break;
232  case PIN_LEFT: x1 = posX - len; MapX1 = 1; break;
233  case PIN_RIGHT: x1 = posX + len; MapX1 = -1; break;
234  }
235 
237  {
238  const int radius = externalPinDecoSize( aSettings, *this );
239  GRCircle( nullptr, DC, MapX1 * radius + x1, MapY1 * radius + y1, radius, width, color );
240 
241  GRMoveTo( MapX1 * radius * 2 + x1, MapY1 * radius * 2 + y1 );
242  GRLineTo( nullptr, DC, posX, posY, width, color );
243  }
244  else
245  {
246  GRMoveTo( x1, y1 );
247  GRLineTo( nullptr, DC, posX, posY, width, color );
248  }
249 
250  // Draw the clock shape (>)inside the symbol
255  {
256  const int clock_size = internalPinDecoSize( aSettings, *this );
257  if( MapY1 == 0 ) /* MapX1 = +- 1 */
258  {
259  GRMoveTo( x1, y1 + clock_size );
260  GRLineTo( nullptr, DC, x1 - MapX1 * clock_size * 2, y1, width, color );
261  GRLineTo( nullptr, DC, x1, y1 - clock_size, width, color );
262  }
263  else /* MapX1 = 0 */
264  {
265  GRMoveTo( x1 + clock_size, y1 );
266  GRLineTo( nullptr, DC, x1, y1 - MapY1 * clock_size * 2, width, color );
267  GRLineTo( nullptr, DC, x1 - clock_size, y1, width, color );
268  }
269  }
270 
271  // Draw the active low (or H to L active transition)
275  {
276  const int deco_size = externalPinDecoSize( aSettings, *this );
277  if( MapY1 == 0 ) /* MapX1 = +- 1 */
278  {
279  GRMoveTo( x1 + MapX1 * deco_size * 2, y1 );
280  GRLineTo( nullptr, DC, x1 + MapX1 * deco_size * 2, y1 - deco_size * 2, width, color );
281  GRLineTo( nullptr, DC, x1, y1, width, color );
282  }
283  else /* MapX1 = 0 */
284  {
285  GRMoveTo( x1, y1 + MapY1 * deco_size * 2 );
286  GRLineTo( nullptr, DC, x1 - deco_size * 2, y1 + MapY1 * deco_size * 2, width, color );
287  GRLineTo( nullptr, DC, x1, y1, width, color );
288  }
289  }
290 
291  if( m_shape == GRAPHIC_PINSHAPE::OUTPUT_LOW ) /* IEEE symbol "Active Low Output" */
292  {
293  const int deco_size = externalPinDecoSize( aSettings, *this );
294  if( MapY1 == 0 ) /* MapX1 = +- 1 */
295  {
296  GRMoveTo( x1, y1 - deco_size * 2 );
297  GRLineTo( nullptr, DC, x1 + MapX1 * deco_size * 2, y1, width, color );
298  }
299  else /* MapX1 = 0 */
300  {
301  GRMoveTo( x1 - deco_size * 2, y1 );
302  GRLineTo( nullptr, DC, x1, y1 + MapY1 * deco_size * 2, width, color );
303  }
304  }
305  else if( m_shape == GRAPHIC_PINSHAPE::NONLOGIC ) /* NonLogic pin symbol */
306  {
307  const int deco_size = externalPinDecoSize( aSettings, *this );
308  GRMoveTo( x1 - (MapX1 + MapY1) * deco_size, y1 - (MapY1 - MapX1) * deco_size );
309  GRLineTo( nullptr, DC, x1 + (MapX1 + MapY1) * deco_size,
310  y1 + ( MapY1 - MapX1 ) * deco_size, width, color );
311  GRMoveTo( x1 - (MapX1 - MapY1) * deco_size, y1 - (MapY1 + MapX1) * deco_size );
312  GRLineTo( nullptr, DC, x1 + (MapX1 - MapY1) * deco_size,
313  y1 + ( MapY1 + MapX1 ) * deco_size, width, color );
314  }
315 
316  if( m_type == ELECTRICAL_PINTYPE::PT_NC ) // Draw a N.C. symbol
317  {
318  const int deco_size = TARGET_PIN_RADIUS;
319  GRLine( nullptr, DC, posX - deco_size, posY - deco_size, posX + deco_size,
320  posY + deco_size, width, color );
321  GRLine( nullptr, DC, posX + deco_size, posY - deco_size, posX - deco_size,
322  posY + deco_size, width, color );
323  }
324 }
GRAPHIC_PINSHAPE m_shape
Definition: lib_pin.h:283
int color
Definition: DXF_plotter.cpp:60
const COLOR4D & GetLayerColor(int aLayer) const
Return the color used to draw a layer.
Definition: lib_pin.h:48
int m_length
Definition: lib_pin.h:281
void GRLineTo(EDA_RECT *ClipBox, wxDC *DC, int x, int y, int width, COLOR4D Color)
Definition: gr_basic.cpp:264
int GetPenWidth() const override
Definition: lib_pin.cpp:165
wxDC * GetPrintDC() const
bool IsVisible() const
Definition: lib_pin.h:97
void GRLine(EDA_RECT *ClipBox, wxDC *DC, int x1, int y1, int x2, int y2, int width, COLOR4D Color, wxPenStyle aStyle)
Definition: gr_basic.cpp:228
void GRMoveTo(int x, int y)
Definition: gr_basic.cpp:254
static int internalPinDecoSize(const RENDER_SETTINGS *aSettings, const LIB_PIN &aPin)
Utility for getting the size of the 'internal' pin decorators (as a radius)
Definition: lib_pin.cpp:69
static int externalPinDecoSize(const RENDER_SETTINGS *aSettings, const LIB_PIN &aPin)
Utility for getting the size of the 'external' pin decorators (as a radius)
Definition: lib_pin.cpp:82
void GRCircle(EDA_RECT *ClipBox, wxDC *DC, int xc, int yc, int r, int width, COLOR4D Color)
Definition: gr_basic.cpp:594
#define TARGET_PIN_RADIUS
Definition: lib_pin.h:36
ELECTRICAL_PINTYPE m_type
Definition: lib_pin.h:284
int GetDefaultPenWidth() const
not connected (must be left open)
A color representation with 4 components: red, green, blue, alpha.
Definition: color4d.h:103

References CLOCK, CLOCK_LOW, color, externalPinDecoSize(), FALLING_EDGE_CLOCK, KIGFX::RENDER_SETTINGS::GetDefaultPenWidth(), KIGFX::RENDER_SETTINGS::GetLayerColor(), GetPenWidth(), KIGFX::RENDER_SETTINGS::GetPrintDC(), GRCircle(), GRLine(), GRLineTo(), GRMoveTo(), INPUT_LOW, internalPinDecoSize(), INVERTED, INVERTED_CLOCK, IsVisible(), LAYER_HIDDEN, LAYER_PIN, m_length, m_shape, m_type, NONLOGIC, OUTPUT_LOW, PIN_DOWN, PIN_LEFT, PIN_RIGHT, PIN_UP, PT_NC, and TARGET_PIN_RADIUS.

Referenced by print().

◆ printPinTexts()

void LIB_PIN::printPinTexts ( const RENDER_SETTINGS aSettings,
wxPoint &  aPinPos,
int  aPinOrient,
int  aTextInside,
bool  aDrawPinNum,
bool  aDrawPinName 
)
protected

Put the pin number and pin text info, given the pin line coordinates.

The line must be vertical or horizontal. If aDrawPinName == false the pin name is not printed. If aDrawPinNum = false the pin number is not printed. If aTextInside then the text is been put inside,otherwise all is drawn outside. Pin Name: substring between '~' is negated

Definition at line 327 of file lib_pin.cpp.

329 {
330  if( !aDrawPinName && !aDrawPinNum )
331  return;
332 
333  int x, y;
334  wxDC* DC = aSettings->GetPrintDC();
335  wxSize PinNameSize( m_nameTextSize, m_nameTextSize );
336  wxSize PinNumSize( m_numTextSize, m_numTextSize );
337 
338  int namePenWidth = std::max( Clamp_Text_PenSize( GetPenWidth(), m_nameTextSize, false ),
339  aSettings->GetDefaultPenWidth() );
340  int numPenWidth = std::max( Clamp_Text_PenSize( GetPenWidth(), m_numTextSize, false ),
341  aSettings->GetDefaultPenWidth() );
342 
343  int name_offset = Mils2iu( PIN_TEXT_MARGIN ) + namePenWidth;
344  int num_offset = Mils2iu( PIN_TEXT_MARGIN ) + numPenWidth;
345 
346  /* Get the num and name colors */
347  COLOR4D NameColor = aSettings->GetLayerColor( IsVisible() ? LAYER_PINNAM : LAYER_HIDDEN );
348  COLOR4D NumColor = aSettings->GetLayerColor( IsVisible() ? LAYER_PINNUM : LAYER_HIDDEN );
349 
350  int x1 = aPinPos.x;
351  int y1 = aPinPos.y;
352 
353  switch( aPinOrient )
354  {
355  case PIN_UP: y1 -= m_length; break;
356  case PIN_DOWN: y1 += m_length; break;
357  case PIN_LEFT: x1 -= m_length; break;
358  case PIN_RIGHT: x1 += m_length; break;
359  }
360 
361  wxString name = GetShownName();
362  wxString number = GetShownNumber();
363 
364  if( name.IsEmpty() )
365  aDrawPinName = false;
366 
367  if( number.IsEmpty() )
368  aDrawPinNum = false;
369 
370  if( aTextInside ) // Draw the text inside, but the pin numbers outside.
371  {
372  if(( aPinOrient == PIN_LEFT) || ( aPinOrient == PIN_RIGHT) )
373  {
374  // It is an horizontal line
375  if( aDrawPinName )
376  {
377  if( aPinOrient == PIN_RIGHT )
378  {
379  x = x1 + aTextInside;
380  GRText( DC, wxPoint( x, y1 ), NameColor, name, TEXT_ANGLE_HORIZ, PinNameSize,
381  GR_TEXT_HJUSTIFY_LEFT, GR_TEXT_VJUSTIFY_CENTER, namePenWidth, false,
382  false );
383  }
384  else // Orient == PIN_LEFT
385  {
386  x = x1 - aTextInside;
387  GRText( DC, wxPoint( x, y1 ), NameColor, name, TEXT_ANGLE_HORIZ, PinNameSize,
388  GR_TEXT_HJUSTIFY_RIGHT, GR_TEXT_VJUSTIFY_CENTER, namePenWidth, false,
389  false );
390  }
391  }
392 
393  if( aDrawPinNum )
394  {
395  GRText( DC, wxPoint(( x1 + aPinPos.x) / 2, y1 - num_offset ), NumColor, number,
397  GR_TEXT_VJUSTIFY_BOTTOM, numPenWidth, false, false );
398  }
399  }
400  else /* Its a vertical line. */
401  {
402  // Text is drawn from bottom to top (i.e. to negative value for Y axis)
403  if( aPinOrient == PIN_DOWN )
404  {
405  y = y1 + aTextInside;
406 
407  if( aDrawPinName )
408  {
409  GRText( DC, wxPoint( x1, y ), NameColor, name, TEXT_ANGLE_VERT, PinNameSize,
410  GR_TEXT_HJUSTIFY_RIGHT, GR_TEXT_VJUSTIFY_CENTER, namePenWidth, false,
411  false );
412  }
413 
414  if( aDrawPinNum )
415  {
416  GRText( DC, wxPoint( x1 - num_offset, ( y1 + aPinPos.y) / 2 ), NumColor,
417  number, TEXT_ANGLE_VERT, PinNumSize, GR_TEXT_HJUSTIFY_CENTER,
418  GR_TEXT_VJUSTIFY_BOTTOM, numPenWidth, false, false );
419  }
420  }
421  else /* PIN_UP */
422  {
423  y = y1 - aTextInside;
424 
425  if( aDrawPinName )
426  {
427  GRText( DC, wxPoint( x1, y ), NameColor, name, TEXT_ANGLE_VERT, PinNameSize,
428  GR_TEXT_HJUSTIFY_LEFT, GR_TEXT_VJUSTIFY_CENTER, namePenWidth, false,
429  false );
430  }
431 
432  if( aDrawPinNum )
433  {
434  GRText( DC, wxPoint( x1 - num_offset, ( y1 + aPinPos.y) / 2 ), NumColor,
435  number, TEXT_ANGLE_VERT, PinNumSize, GR_TEXT_HJUSTIFY_CENTER,
436  GR_TEXT_VJUSTIFY_BOTTOM, numPenWidth, false, false );
437  }
438  }
439  }
440  }
441  else /**** Draw num & text pin outside ****/
442  {
443  if(( aPinOrient == PIN_LEFT) || ( aPinOrient == PIN_RIGHT) )
444  {
445  /* Its an horizontal line. */
446  if( aDrawPinName )
447  {
448  x = ( x1 + aPinPos.x) / 2;
449  GRText( DC, wxPoint( x, y1 - name_offset ), NameColor, name, TEXT_ANGLE_HORIZ,
451  namePenWidth, false, false );
452  }
453  if( aDrawPinNum )
454  {
455  x = ( x1 + aPinPos.x) / 2;
456  GRText( DC, wxPoint( x, y1 + num_offset ), NumColor, number, TEXT_ANGLE_HORIZ,
457  PinNumSize, GR_TEXT_HJUSTIFY_CENTER, GR_TEXT_VJUSTIFY_TOP, numPenWidth,
458  false, false );
459  }
460  }
461  else /* Its a vertical line. */
462  {
463  if( aDrawPinName )
464  {
465  y = ( y1 + aPinPos.y) / 2;
466  GRText( DC, wxPoint( x1 - name_offset, y ), NameColor, name, TEXT_ANGLE_VERT,
468  namePenWidth, false, false );
469  }
470 
471  if( aDrawPinNum )
472  {
473  GRText( DC, wxPoint( x1 + num_offset, ( y1 + aPinPos.y) / 2 ), NumColor, number,
475  numPenWidth, false, false );
476  }
477  }
478  }
479 }
#define TEXT_ANGLE_HORIZ
Frequent text rotations, used with {Set,Get}TextAngle(), in 0.1 degrees for now, hoping to migrate to...
Definition: eda_text.h:50
int m_nameTextSize
Definition: lib_pin.h:289
wxString GetShownNumber() const
Definition: lib_pin.h:117
int m_numTextSize
Definition: lib_pin.h:288
const COLOR4D & GetLayerColor(int aLayer) const
Return the color used to draw a layer.
Definition: lib_pin.h:48
int m_length
Definition: lib_pin.h:281
int Clamp_Text_PenSize(int aPenSize, int aSize, bool aBold)
Don't allow text to become cluttered up in its own fatness.
Definition: gr_text.cpp:68
int GetPenWidth() const override
Definition: lib_pin.cpp:165
wxDC * GetPrintDC() const
bool IsVisible() const
Definition: lib_pin.h:97
wxString GetShownName() const
Definition: lib_pin.cpp:171
void GRText(wxDC *aDC, const wxPoint &aPos, COLOR4D aColor, const wxString &aText, double aOrient, const wxSize &aSize, enum EDA_TEXT_HJUSTIFY_T aH_justify, enum EDA_TEXT_VJUSTIFY_T aV_justify, int aWidth, bool aItalic, bool aBold, void(*aCallback)(int x0, int y0, int xf, int yf, void *aData), void *aCallbackData, PLOTTER *aPlotter)
Draw a graphic text (like footprint texts).
Definition: gr_text.cpp:130
const char * name
Definition: DXF_plotter.cpp:59
#define PIN_TEXT_MARGIN
Definition: lib_pin.cpp:37
int GetDefaultPenWidth() const
#define TEXT_ANGLE_VERT
Definition: eda_text.h:51
A color representation with 4 components: red, green, blue, alpha.
Definition: color4d.h:103

References Clamp_Text_PenSize(), KIGFX::RENDER_SETTINGS::GetDefaultPenWidth(), KIGFX::RENDER_SETTINGS::GetLayerColor(), GetPenWidth(), KIGFX::RENDER_SETTINGS::GetPrintDC(), GetShownName(), GetShownNumber(), GR_TEXT_HJUSTIFY_CENTER, GR_TEXT_HJUSTIFY_LEFT, GR_TEXT_HJUSTIFY_RIGHT, GR_TEXT_VJUSTIFY_BOTTOM, GR_TEXT_VJUSTIFY_CENTER, GR_TEXT_VJUSTIFY_TOP, GRText(), IsVisible(), LAYER_HIDDEN, LAYER_PINNAM, LAYER_PINNUM, m_length, m_nameTextSize, m_numTextSize, name, PIN_DOWN, PIN_LEFT, PIN_RIGHT, PIN_TEXT_MARGIN, PIN_UP, TEXT_ANGLE_HORIZ, and TEXT_ANGLE_VERT.

Referenced by print().

◆ Replace() [1/2]

bool EDA_ITEM::Replace ( const wxFindReplaceData &  aSearchData,
wxString &  aText 
)
staticinherited

Perform a text replace on aText using the find and replace criteria in aSearchData on items that support text find and replace.

Parameters
aSearchDataA reference to a wxFindReplaceData object containing the search and replace criteria.
aTextA reference to a wxString object containing the text to be replaced.
Returns
True if aText was modified, otherwise false.

Definition at line 145 of file eda_item.cpp.

146 {
147  wxString searchString = (aSearchData.GetFlags() & wxFR_MATCHCASE) ? aText : aText.Upper();
148 
149  int result = searchString.Find( (aSearchData.GetFlags() & wxFR_MATCHCASE) ?
150  aSearchData.GetFindString() :
151  aSearchData.GetFindString().Upper() );
152 
153  if( result == wxNOT_FOUND )
154  return false;
155 
156  wxString prefix = aText.Left( result );
157  wxString suffix;
158 
159  if( aSearchData.GetFindString().length() + result < aText.length() )
160  suffix = aText.Right( aText.length() - ( aSearchData.GetFindString().length() + result ) );
161 
162  wxLogTrace( traceFindReplace, wxT( "Replacing '%s', prefix '%s', replace '%s', suffix '%s'." ),
163  aText, prefix, aSearchData.GetReplaceString(), suffix );
164 
165  aText = prefix + aSearchData.GetReplaceString() + suffix;
166 
167  return true;
168 }
const wxChar *const traceFindReplace
Flag to enable find and replace debug tracing.

References traceFindReplace.

Referenced by SCH_FIELD::Replace(), EDA_TEXT::Replace(), and SCH_EDITOR_CONTROL::ReplaceAndFindNext().

◆ Replace() [2/2]

virtual bool EDA_ITEM::Replace ( const wxFindReplaceData &  aSearchData,
void *  aAuxData = nullptr 
)
inlinevirtualinherited

Perform a text replace using the find and replace criteria in aSearchData on items that support text find and replace.

This function must be overridden for items that support text replace.

Parameters
aSearchDataA reference to a wxFindReplaceData object containing the search and replace criteria.
aAuxDataA pointer to optional data required for the search or NULL if not used.
Returns
True if the item text was modified, otherwise false.

Reimplemented in SCH_TEXT, SCH_FIELD, SCH_SHEET_PIN, and SCH_PIN.

Definition at line 392 of file eda_item.h.

393  {
394  return false;
395  }

◆ Rotate()

void LIB_PIN::Rotate ( const wxPoint &  aCenter,
bool  aRotateCCW = true 
)
overridevirtual

Rotate the object about aCenter point.

Parameters
aCenterPoint to rotate around.
aRotateCCWTrue to rotate counter clockwise. False to rotate clockwise.

Implements LIB_ITEM.

Definition at line 977 of file lib_pin.cpp.

978 {
979  int rot_angle = aRotateCCW ? -900 : 900;
980 
981  RotatePoint( &m_position, aCenter, rot_angle );
982 
983  if( aRotateCCW )
984  {
985  switch( m_orientation )
986  {
987  case PIN_RIGHT: m_orientation = PIN_UP; break;
988  case PIN_UP: m_orientation = PIN_LEFT; break;
989  case PIN_LEFT: m_orientation = PIN_DOWN; break;
990  case PIN_DOWN: m_orientation = PIN_RIGHT; break;
991  }
992  }
993  else
994  {
995  switch( m_orientation )
996  {
997  case PIN_RIGHT: m_orientation = PIN_DOWN; break;
998  case PIN_UP: m_orientation = PIN_RIGHT; break;
999  case PIN_LEFT: m_orientation = PIN_UP; break;
1000  case PIN_DOWN: m_orientation = PIN_LEFT; break;
1001  }
1002  }
1003 }
Definition: lib_pin.h:48
void RotatePoint(int *pX, int *pY, double angle)
Definition: trigo.cpp:228
int m_orientation
Definition: lib_pin.h:282
wxPoint m_position
Definition: lib_pin.h:280

References m_orientation, m_position, PIN_DOWN, PIN_LEFT, PIN_RIGHT, PIN_UP, and RotatePoint().

◆ Set() [1/3]

bool INSPECTABLE::Set ( PROPERTY_BASE aProperty,
wxAny &  aValue 
)
inlineinherited

Definition at line 42 of file inspectable.h.

43  {
45  TYPE_ID thisType = TYPE_HASH( *this );
46  void* object = propMgr.TypeCast( this, thisType, aProperty->OwnerHash() );
47 
48  if( object )
49  aProperty->setter( object, aValue );
50 
51  return object != nullptr;
52  }
static PROPERTY_MANAGER & Instance()
Definition: property_mgr.h:65
#define TYPE_HASH(x)
Definition: property.h:59
size_t TYPE_ID
Unique type identifier.
Definition: property_mgr.h:42
const void * TypeCast(const void *aSource, TYPE_ID aBase, TYPE_ID aTarget) const
Cast a type to another type.
virtual void setter(void *aObject, wxAny &aValue)=0
Provide class metadata.Helper macro to map type hashes to names.
Definition: property_mgr.h:62
virtual size_t OwnerHash() const =0
Return type-id of the Owner class.

References PROPERTY_MANAGER::Instance(), PROPERTY_BASE::OwnerHash(), PROPERTY_BASE::setter(), TYPE_HASH, and PROPERTY_MANAGER::TypeCast().

Referenced by isCoupledDiffPair().

◆ Set() [2/3]

template<typename T >
bool INSPECTABLE::Set ( PROPERTY_BASE aProperty,
aValue 
)
inlineinherited

Definition at line 55 of file inspectable.h.

56  {
58  TYPE_ID thisType = TYPE_HASH( *this );
59  void* object = propMgr.TypeCast( this, thisType, aProperty->OwnerHash() );
60 
61  if( object )
62  aProperty->set<T>( object, aValue );
63 
64  return object != nullptr;
65  }
static PROPERTY_MANAGER & Instance()
Definition: property_mgr.h:65
#define TYPE_HASH(x)
Definition: property.h:59
size_t TYPE_ID
Unique type identifier.
Definition: property_mgr.h:42
const void * TypeCast(const void *aSource, TYPE_ID aBase, TYPE_ID aTarget) const
Cast a type to another type.
Provide class metadata.Helper macro to map type hashes to names.
Definition: property_mgr.h:62
void set(void *aObject, T aValue)
Definition: property.h:261
virtual size_t OwnerHash() const =0
Return type-id of the Owner class.

References PROPERTY_MANAGER::Instance(), PROPERTY_BASE::OwnerHash(), PROPERTY_BASE::set(), TYPE_HASH, and PROPERTY_MANAGER::TypeCast().

◆ Set() [3/3]

template<typename T >
bool INSPECTABLE::Set ( const wxString &  aProperty,
aValue 
)
inlineinherited

Definition at line 68 of file inspectable.h.

69  {
71  TYPE_ID thisType = TYPE_HASH( *this );
72  PROPERTY_BASE* prop = propMgr.GetProperty( thisType, aProperty );
73  void* object = nullptr;
74 
75  if( prop )
76  {
77  object = propMgr.TypeCast( this, thisType, prop->OwnerHash() );
78 
79  if( object )
80  prop->set<T>( object, aValue );
81  }
82 
83  return object != nullptr;
84  }
static PROPERTY_MANAGER & Instance()
Definition: property_mgr.h:65
#define TYPE_HASH(x)
Definition: property.h:59
size_t TYPE_ID
Unique type identifier.
Definition: property_mgr.h:42
const void * TypeCast(const void *aSource, TYPE_ID aBase, TYPE_ID aTarget) const
Cast a type to another type.
PROPERTY_BASE * GetProperty(TYPE_ID aType, const wxString &aProperty) const
Return a property for a specific type.
Provide class metadata.Helper macro to map type hashes to names.
Definition: property_mgr.h:62
void set(void *aObject, T aValue)
Definition: property.h:261
virtual size_t OwnerHash() const =0
Return type-id of the Owner class.

References PROPERTY_MANAGER::GetProperty(), PROPERTY_MANAGER::Instance(), PROPERTY_BASE::OwnerHash(), PROPERTY_BASE::set(), TYPE_HASH, and PROPERTY_MANAGER::TypeCast().

◆ SetBrightened()

◆ SetConvert()

◆ SetFillMode()

◆ SetFlags()

void EDA_ITEM::SetFlags ( EDA_ITEM_FLAGS  aMask)
inlineinherited

Definition at line 153 of file eda_item.h.

153 { m_flags |= aMask; }
EDA_ITEM_FLAGS m_flags
Definition: eda_item.h:481

References EDA_ITEM::m_flags.

Referenced by SCH_EAGLE_PLUGIN::addBusEntries(), PCB_BASE_FRAME::AddFootprintToBoard(), FOOTPRINT_VIEWER_FRAME::AddFootprintToPCB(), SCH_MOVE_TOOL::AlignElements(), PCB_CONTROL::AppendBoard(), FOOTPRINT::BuildPolyCourtyards(), SCH_EDIT_TOOL::ChangeTextType(), GRAPHICS_CLEANER::cleanupSegments(), ConvertOutlineToPolygon(), SCH_EDIT_FRAME::ConvertPart(), SCH_DRAWING_TOOLS::createNewText(), SCH_DRAWING_TOOLS::createSheetPin(), SCH_EDIT_TOOL::DoDelete(), SCH_LINE_WIRE_BUS_TOOL::doDrawSegments(), SCH_LINE_WIRE_BUS_TOOL::doUnfoldBus(), EDIT_TOOL::DragArcTrack(), KIGFX::SCH_PAINTER::draw(), SYMBOL_EDITOR_DRAWING_TOOLS::DrawShape(), SCH_DRAWING_TOOLS::DrawSheet(), PCB_SELECTION_TOOL::EnterGroup(), PCB_SELECTION_TOOL::FilterCollectorForHierarchy(), SCH_MOVE_TOOL::getConnectedDragItems(), SYMBOL_EDIT_FRAME::GetSymbolFromRedoList(), SYMBOL_EDIT_FRAME::GetSymbolFromUndoList(), EE_SELECTION_TOOL::Main(), TRACKS_CLEANER::mergeCollinearSegments(), SYMBOL_EDITOR_MOVE_TOOL::moveItem(), SCH_MOVE_TOOL::moveItem(), EE_SELECTION_TOOL::narrowSelection(), KIGFX::ORIGIN_VIEWITEM::ORIGIN_VIEWITEM(), SCH_ALTIUM_PLUGIN::ParseBezier(), SCH_ALTIUM_PLUGIN::ParseBus(), SCH_ALTIUM_PLUGIN::ParseBusEntry(), SCH_ALTIUM_PLUGIN::ParseJunction(), SCH_ALTIUM_PLUGIN::ParseLine(), SCH_ALTIUM_PLUGIN::ParseNetLabel(), SCH_ALTIUM_PLUGIN::ParseNoERC(), SCH_ALTIUM_PLUGIN::ParsePolygon(), SCH_ALTIUM_PLUGIN::ParsePolyline(), SCH_ALTIUM_PLUGIN::ParsePort(), SCH_ALTIUM_PLUGIN::ParseRectangle(), SCH_ALTIUM_PLUGIN::ParseRoundRectangle(), SCH_ALTIUM_PLUGIN::ParseSheetSymbol(), SCH_ALTIUM_PLUGIN::ParseWire(), SYMBOL_EDITOR_EDIT_TOOL::Paste(), SCH_EDITOR_CONTROL::Paste(), BOARD_EDITOR_CONTROL::PlaceFootprint(), PL_DRAWING_TOOLS::PlaceItem(), DRAWING_TOOL::PlaceText(), BACK_ANNOTATE::processNetNameChange(), SCH_EDIT_FRAME::PutDataInPreviousState(), PCB_SELECTION_TOOL::RebuildSelection(), FOOTPRINT::Remove(), BOARD::Remove(), SCH_EDIT_TOOL::RepeatDrawItem(), SYMBOL_EDIT_FRAME::SaveCopyInUndoList(), EE_SELECTION_TOOL::selectMultiple(), SCH_EDIT_FRAME::SelectUnit(), EDA_ITEM::SetBrightened(), EDA_ITEM::SetModified(), EDA_ITEM::SetSelected(), EDA_ITEM::SetWireImage(), SCH_DRAWING_TOOLS::SingleClickPlace(), SCH_LINE_WIRE_BUS_TOOL::startSegments(), DS_DATA_ITEM::SyncDrawItems(), DS_DATA_ITEM_BITMAP::SyncDrawItems(), DIALOG_DIMENSION_PROPERTIES::TransferDataFromWindow(), DIALOG_TARGET_PROPERTIES::TransferDataFromWindow(), DIALOG_SYMBOL_PROPERTIES::TransferDataFromWindow(), DIALOG_TEXT_PROPERTIES::TransferDataFromWindow(), DIALOG_PAD_PROPERTIES::TransferDataFromWindow(), SYMBOL_EDITOR_DRAWING_TOOLS::TwoClickPlace(), and SCH_DRAWING_TOOLS::TwoClickPlace().

◆ SetForceVisible()

void EDA_ITEM::SetForceVisible ( bool  aEnable)
inlineinherited

Set and clear force visible flag used to force the item to be drawn even if it's draw attribute is set to not visible.

Parameters
aEnableTrue forces the item to be drawn. False uses the item's visibility setting to determine if the item is to be drawn.

Definition at line 204 of file eda_item.h.

204 { m_forceVisible = aEnable; }
bool m_forceVisible
Definition: eda_item.h:480

References EDA_ITEM::m_forceVisible.

Referenced by SCH_EDITOR_CONTROL::UpdateFind().

◆ SetLength()

void LIB_PIN::SetLength ( int  aLength)
inline

Definition at line 82 of file lib_pin.h.

82 { m_length = aLength; }
int m_length
Definition: lib_pin.h:281

References m_length.

Referenced by DIALOG_PIN_PROPERTIES::OnPropertiesChange(), and DIALOG_PIN_PROPERTIES::TransferDataFromWindow().

◆ SetModified()

void EDA_ITEM::SetModified ( )
inherited

Definition at line 65 of file eda_item.cpp.

66 {
68 
69  // If this a child object, then the parent modification state also needs to be set.
70  if( m_parent )
72 }
#define IS_CHANGED
Item was edited, and modified.
void SetModified()
Definition: eda_item.cpp:65
EDA_ITEM * m_parent
Linked list: Link (parent struct)
Definition: eda_item.h:479
void SetFlags(EDA_ITEM_FLAGS aMask)
Definition: eda_item.h:153

References IS_CHANGED, EDA_ITEM::m_parent, EDA_ITEM::SetFlags(), and EDA_ITEM::SetModified().

Referenced by SYMBOL_EDITOR_PIN_TOOL::EditPinProperties(), LEGACY_PLUGIN::loadZONE_CONTAINER(), SCH_LINE::Move(), SCH_SYMBOL::Move(), SCH_LINE::MoveEnd(), SCH_LINE::MoveStart(), MoveTo(), PCB_EDIT_FRAME::OpenProjectFiles(), ALTIUM_PCB::Parse(), SCH_ALTIUM_PLUGIN::ParseFileHeader(), LIB_SYMBOL::RemoveDrawItem(), SCH_SYMBOL::SetConvert(), SCH_SYMBOL::SetLibId(), EDA_ITEM::SetModified(), LIB_FIELD::SetName(), SCH_SYMBOL::SetTransform(), and SCH_SYMBOL::SetUnit().

◆ SetName()

void LIB_PIN::SetName ( const wxString &  aName)
inline

Definition at line 108 of file lib_pin.h.

109  {
110  m_name = aName;
111 
112  // pin name string does not support spaces
113  m_name.Replace( wxT( " " ), wxT( "_" ) );
114  }
wxString m_name
Definition: lib_pin.h:286

References m_name.

Referenced by KIGFX::SCH_PAINTER::draw(), LIB_PIN(), DIALOG_PIN_PROPERTIES::OnPropertiesChange(), TEST_SCH_PIN_FIXTURE::TEST_SCH_PIN_FIXTURE(), and DIALOG_PIN_PROPERTIES::TransferDataFromWindow().

◆ SetNameTextSize()

void LIB_PIN::SetNameTextSize ( int  aSize)
inline

Definition at line 127 of file lib_pin.h.

127 { m_nameTextSize = aSize; }
int m_nameTextSize
Definition: lib_pin.h:289

References m_nameTextSize.

Referenced by DIALOG_PIN_PROPERTIES::OnPropertiesChange(), and DIALOG_PIN_PROPERTIES::TransferDataFromWindow().

◆ SetNumber()

void LIB_PIN::SetNumber ( const wxString &  aNumber)
inline

Definition at line 118 of file lib_pin.h.

119  {
120  m_number = aNumber;
121 
122  // pin number string does not support spaces
123  m_number.Replace( wxT( " " ), wxT( "_" ) );
124  }
wxString m_number
Definition: lib_pin.h:287

References m_number.

Referenced by SYMBOL_EDITOR_PIN_TOOL::CreateImagePins(), LIB_PIN(), CADSTAR_SCH_ARCHIVE_LOADER::loadSchematicSymbol(), SCH_EAGLE_PLUGIN::loadSymbol(), DIALOG_PIN_PROPERTIES::OnPropertiesChange(), TEST_SCH_PIN_FIXTURE::TEST_SCH_PIN_FIXTURE(), and DIALOG_PIN_PROPERTIES::TransferDataFromWindow().

◆ SetNumberTextSize()

void LIB_PIN::SetNumberTextSize ( int  aSize)
inline

Definition at line 130 of file lib_pin.h.

130 { m_numTextSize = aSize; }
int m_numTextSize
Definition: lib_pin.h:288

References m_numTextSize.

Referenced by DIALOG_PIN_PROPERTIES::OnPropertiesChange(), and DIALOG_PIN_PROPERTIES::TransferDataFromWindow().

◆ SetOrientation()

void LIB_PIN::SetOrientation ( int  aOrientation)
inline

◆ SetParent()

virtual void EDA_ITEM::SetParent ( EDA_ITEM aParent)
inlinevirtualinherited

Reimplemented in PCB_DIMENSION_BASE.

Definition at line 116 of file eda_item.h.

116 { m_parent = aParent; }
EDA_ITEM * m_parent
Linked list: Link (parent struct)
Definition: eda_item.h:479

References EDA_ITEM::m_parent.

Referenced by FOOTPRINT::Add(), BOARD::Add(), FOOTPRINT_VIEWER_FRAME::AddFootprintToPCB(), BOARD_NETLIST_UPDATER::addNewFootprint(), SCH_SHEET::AddPin(), PAD::AddPrimitive(), PAD::AddPrimitiveArc(), PAD::AddPrimitiveCircle(), PAD::AddPrimitiveCurve(), PAD::AddPrimitivePoly(), PAD::AddPrimitiveRect(), PAD::AddPrimitiveSegment(), SYMBOL_EDITOR_CONTROL::AddSymbolToSchematic(), SCH_SCREEN::Append(), LIB_FIELD::Copy(), SYMBOL_EDIT_FRAME::CreateNewSymbol(), SCH_DRAWING_TOOLS::createNewText(), DIALOG_PAD_PROPERTIES::DIALOG_PAD_PROPERTIES(), SCH_LINE_WIRE_BUS_TOOL::doUnfoldBus(), PCB_EDIT_FRAME::ExchangeFootprint(), LIB_SYMBOL::Flatten(), FOOTPRINT::FOOTPRINT(), PCB_IO::FootprintSave(), DISPLAY_FOOTPRINTS_FRAME::GetFootprint(), CADSTAR_SCH_ARCHIVE_LOADER::getKiCadSchText(), LIB_SYMBOL::LIB_SYMBOL(), SCH_LEGACY_PLUGIN_CACHE::loadAliases(), FOOTPRINT_EDIT_FRAME::LoadFootprintFromBoard(), SCH_SEXPR_PLUGIN::loadHierarchy(), SCH_LEGACY_PLUGIN::loadHierarchy(), FOOTPRINT::operator=(), LIB_SYMBOL::operator=(), PCB_PARSER::parseFOOTPRINT_unchecked(), SCH_SEXPR_PARSER::ParseSchematic(), SCH_SEXPR_PARSER::ParseSymbol(), SYMBOL_EDITOR_EDIT_TOOL::Paste(), PCB_CONTROL::Paste(), SCH_EDITOR_CONTROL::Paste(), pasteFootprintItemsToFootprintEditor(), BOARD_EDITOR_CONTROL::PlaceFootprint(), BACK_ANNOTATE::processNetNameChange(), BOARD_COMMIT::Push(), SCH_SEXPR_PLUGIN_CACHE::removeSymbol(), SCH_LEGACY_PLUGIN_CACHE::removeSymbol(), PCB_BASE_EDIT_FRAME::SaveCopyInUndoList(), SaveCopyOfZones(), FOOTPRINT_EDIT_FRAME::SaveFootprintToBoard(), SCH_SHEET_PIN::SCH_SHEET_PIN(), LIB_SYMBOL::SetFields(), PCB_DIMENSION_BASE::SetParent(), SCH_DRAWING_TOOLS::SingleClickPlace(), SCH_LINE_WIRE_BUS_TOOL::startSegments(), SCH_SHEET::SwapData(), SCH_GLOBALLABEL::SwapData(), SCH_SYMBOL::SwapData(), and SwapItemData().

◆ SetPosition()

void LIB_PIN::SetPosition ( const wxPoint &  aPos)
inlineoverridevirtual

Reimplemented from LIB_ITEM.

Definition at line 211 of file lib_pin.h.

211 { m_position = aPos; }
wxPoint m_position
Definition: lib_pin.h:280

References m_position.

Referenced by DIALOG_LIB_EDIT_PIN_TABLE::OnAddRow(), TEST_SCH_PIN_FIXTURE::TEST_SCH_PIN_FIXTURE(), and DIALOG_PIN_PROPERTIES::TransferDataFromWindow().

◆ SetSelected()

◆ SetShape()

void LIB_PIN::SetShape ( GRAPHIC_PINSHAPE  aShape)
inline

◆ SetState()

void EDA_ITEM::SetState ( EDA_ITEM_FLAGS  type,
bool  state 
)
inlineinherited

Definition at line 142 of file eda_item.h.

143  {
144  if( state )
145  m_status |= type; // state = ON or OFF
146  else
147  m_status &= ~type;
148  }
EDA_ITEM_FLAGS m_status
Definition: eda_item.h:478

References EDA_ITEM::m_status.

Referenced by LEGACY_PLUGIN::loadTrackList(), TRACKS_CLEANER::mergeCollinearSegments(), and BOARD_ITEM::SetLocked().

◆ SetStatus()

void EDA_ITEM::SetStatus ( EDA_ITEM_FLAGS  aStatus)
inlineinherited

Definition at line 151 of file eda_item.h.

151 { m_status = aStatus; }
EDA_ITEM_FLAGS m_status
Definition: eda_item.h:478

References EDA_ITEM::m_status.

Referenced by BOARD_NETLIST_UPDATER::UpdateNetlist().

◆ SetType()

◆ SetUnit()

◆ SetVisible()

void LIB_PIN::SetVisible ( bool  aVisible)
inline

Definition at line 98 of file lib_pin.h.

99  {
100  if( aVisible )
102  else
104  }
#define PIN_INVISIBLE
Definition: lib_pin.h:39
int m_attributes
Definition: lib_pin.h:285

References m_attributes, and PIN_INVISIBLE.

Referenced by DIALOG_PIN_PROPERTIES::OnPropertiesChange(), DIALOG_PIN_PROPERTIES::TransferDataFromWindow(), and DIALOG_PIN_PROPERTIES::TransferDataToWindow().

◆ SetWidth()

void LIB_PIN::SetWidth ( int  aWidth)
inlineoverridevirtual

Implements LIB_ITEM.

Definition at line 222 of file lib_pin.h.

222 { };

◆ SetWireImage()

void EDA_ITEM::SetWireImage ( )
inlineinherited

Definition at line 128 of file eda_item.h.

128 { SetFlags( IS_WIRE_IMAGE ); }
void SetFlags(EDA_ITEM_FLAGS aMask)
Definition: eda_item.h:153
#define IS_WIRE_IMAGE
Item to be drawn as wireframe while editing.

References IS_WIRE_IMAGE, and EDA_ITEM::SetFlags().

◆ Sort()

static bool EDA_ITEM::Sort ( const EDA_ITEM aLeft,
const EDA_ITEM aRight 
)
inlinestaticinherited

Helper function to be used by the C++ STL sort algorithm for sorting a STL container of EDA_ITEM pointers.

Parameters
aLeftThe left hand item to compare.
aRightThe right hand item to compare.
Returns
True if aLeft is less than aRight.

Definition at line 421 of file eda_item.h.

421 { return *aLeft < *aRight; }

◆ Type()

KICAD_T EDA_ITEM::Type ( ) const
inlineinherited

Returns the type of object.

This attribute should never be changed after a ctor sets it, so there is no public "setter" method.

Returns
the type of object.

Definition at line 113 of file eda_item.h.

113 { return m_structType; }
KICAD_T m_structType
Run time identification, keep private so it can never be changed after a ctor sets it.
Definition: eda_item.h:488

References EDA_ITEM::m_structType.

Referenced by KIGFX::PCB_VIEW::Add(), FOOTPRINT::Add(), CN_CONNECTIVITY_ALGO::Add(), BOARD::Add(), CN_CLUSTER::Add(), PCB_POINT_EDITOR::addCorner(), CONNECTION_SUBGRAPH::AddItem(), SCH_EDIT_FRAME::AddItemToScreenAndUndoList(), SCH_LINE_WIRE_BUS_TOOL::AddJunctionsIfNeeded(), ZONE_FILLER::addKnockout(), SCH_SHEET::AddPin(), ALIGN_DISTRIBUTE_TOOL::AlignBottom(), ALIGN_DISTRIBUTE_TOOL::AlignCenterX(), ALIGN_DISTRIBUTE_TOOL::AlignCenterY(), ALIGN_DISTRIBUTE_TOOL::AlignTop(), CN_ITEM::AnchorCount(), SCH_SCREEN::Append(), CADSTAR_SCH_ARCHIVE_LOADER::applyTextSettings(), PNS::TOPOLOGY::AssembleTuningPath(), CONNECTION_GRAPH::buildConnectionGraph(), DIALOG_NET_INSPECTOR::buildNewItem(), SCH_SCREENS::buildScreenList(), BOARD_INSPECTION_TOOL::calculateSelectionRatsnest(), PCB_POINT_EDITOR::canAddCorner(), SCH_JUNCTION::CanConnect(), SCH_NO_CONNECT::CanConnect(), SCH_BUS_WIRE_ENTRY::CanConnect(), SCH_BUS_BUS_ENTRY::CanConnect(), SCH_LINE::CanConnect(), SCH_LABEL::CanConnect(), SCH_SHEET::CanConnect(), SCH_GLOBALLABEL::CanConnect(), SCH_HIERLABEL::CanConnect(), SCH_SYMBOL::CanConnect(), CN_VISITOR::checkZoneItemConnection(), SCH_MARKER::ClassOf(), SCH_JUNCTION::ClassOf(), SCH_PIN::ClassOf(), PCB_TEXT::ClassOf(), BOARD_CONNECTED_ITEM::ClassOf(), SCH_NO_CONNECT::ClassOf(), PCB_MARKER::ClassOf(), FP_SHAPE::ClassOf(), PCB_TARGET::ClassOf(), SCH_LINE::ClassOf(), PCB_SHAPE::ClassOf(), PCB_GROUP::ClassOf(), SCH_FIELD::ClassOf(), FP_TEXT::ClassOf(), SCH_SHEET::ClassOf(), NETINFO_ITEM::ClassOf(), SCH_SHEET_PIN::ClassOf(), ZONE::ClassOf(), SCH_BITMAP::ClassOf(), PCB_TRACK::ClassOf(), PAD::ClassOf(), SCH_SYMBOL::ClassOf(), SCH_SCREEN::ClassOf(), FOOTPRINT::ClassOf(), SCH_TEXT::ClassOf(), SCH_BUS_WIRE_ENTRY::ClassOf(), SCH_BUS_BUS_ENTRY::ClassOf(), BOARD::ClassOf(), PCB_ARC::ClassOf(), SCH_LABEL::ClassOf(), PCB_VIA::ClassOf(), SCH_GLOBALLABEL::ClassOf(), PCB_DIM_ALIGNED::ClassOf(), PCB_DIM_ORTHOGONAL::ClassOf(), SCH_HIERLABEL::ClassOf(), PCB_DIM_LEADER::ClassOf(), PCB_DIM_CENTER::ClassOf(), TRACKS_CLEANER::cleanup(), LIB_BEZIER::compare(), LIB_CIRCLE::compare(), LIB_RECTANGLE::compare(), LIB_POLYLINE::compare(), LIB_TEXT::compare(), LIB_ARC::compare(), LIB_FIELD::compare(), compare(), LIB_ITEM::compare(), LIB_SYMBOL::Compare(), EE_GRID_HELPER::computeAnchors(), PCB_GRID_HELPER::computeAnchors(), SCH_BUS_WIRE_ENTRY::ConnectionPropagatesTo(), EE_RTREE::contains(), BOARD::ConvertKIIDsToCrossReferences(), SCHEMATIC::ConvertKIIDsToRefs(), PAD_TOOL::copyPadSettings(), EDIT_TOOL::copyToClipboard(), FOOTPRINT::CoverageRatio(), BOARD_ADAPTER::createLayers(), PCB_BASE_FRAME::CreateNewFootprint(), SCH_DRAWING_TOOLS::createNewText(), ZONE_CREATE_HELPER::createNewZone(), BOARD_ADAPTER::createTrack(), SCH_SCREEN::DeleteItem(), DIALOG_DIMENSION_PROPERTIES::DIALOG_DIMENSION_PROPERTIES(), DIALOG_LABEL_EDITOR::DIALOG_LABEL_EDITOR(), DIALOG_SCH_EDIT_ONE_FIELD::DIALOG_SCH_EDIT_ONE_FIELD(), DIALOG_TEXT_PROPERTIES::DIALOG_TEXT_PROPERTIES(), ALIGN_DISTRIBUTE_TOOL::DistributeHorizontally(), ALIGN_DISTRIBUTE_TOOL::DistributeVertically(), ALIGN_DISTRIBUTE_TOOL::doAlignLeft(), ALIGN_DISTRIBUTE_TOOL::doAlignRight(), SCH_EDITOR_CONTROL::doCopy(), SCH_EDIT_TOOL::DoDelete(), ALIGN_DISTRIBUTE_TOOL::doDistributeCentersHorizontally(), ALIGN_DISTRIBUTE_TOOL::doDistributeCentersVertically(), ALIGN_DISTRIBUTE_TOOL::doDistributeGapsHorizontally(), ALIGN_DISTRIBUTE_TOOL::doDistributeGapsVertically(), APPEARANCE_CONTROLS::doesBoardItemNeedRebuild(), EDIT_TOOL::doMoveSelection(), EDIT_TOOL::Drag(), EDIT_TOOL::DragArcTrack(), KIGFX::SCH_PAINTER::draw(), KIGFX::GERBVIEW_PAINTER::Draw(), KIGFX::PCB_PAINTER::Draw(), DRAWING_TOOL::DrawDimension(), DRAWING_TOOL::DrawVia(), CONNECTION_SUBGRAPH::driverName(), CN_ITEM::Dump(), EDIT_TOOL::Duplicate(), FOOTPRINT::DuplicateItem(), EDA_ITEM_DESC::EDA_ITEM_DESC(), SCH_EDIT_TOOL::EditField(), SCH_EDIT_TOOL::editFieldText(), SYMBOL_EDITOR_EDIT_TOOL::editTextProperties(), CONNECTION_GRAPH::ercCheckBusToBusEntryConflicts(), CONNECTION_GRAPH::ercCheckBusToNetConflicts(), CONNECTION_GRAPH::ercCheckFloatingWires(), CONNECTION_GRAPH::ercCheckMultipleDrivers(), CONNECTION_GRAPH::ercCheckNoConnects(), DRC_ENGINE::EvalRules(), EDIT_TOOL::FilletTracks(), PCB_SELECTION_TOOL::FilterCollectorForHierarchy(), NETLIST_EXPORTER_BASE::findNextSymbol(), CADSTAR_ARCHIVE_PARSER::FixTextPositionNoAlignment(), PCB_BASE_FRAME::FocusOnItem(), EDIT_TOOL::FootprintFilter(), SCH_SEXPR_PLUGIN::Format(), SCH_LEGACY_PLUGIN::Format(), PCB_IO::Format(), PCB_IO::format(), FormatProbeItem(), FP_TEXT::FP_TEXT(), PCB_POINT_EDITOR::get45DegConstrainer(), CN_ITEM::GetAnchor(), BOARD_ITEM::GetBoard(), SCH_FIELD::GetBoundingBox(), PCB_TRACK::GetBoundingBox(), SCH_FIELD::GetCanonicalName(), KIGFX::GERBVIEW_RENDER_SETTINGS::GetColor(), KIGFX::PCB_RENDER_SETTINGS::GetColor(), SCH_MOVE_TOOL::getConnectedDragItems(), SCH_TEXT::GetConnectionPoints(), SCH_TEXT::GetContextualTextVars(), FOOTPRINT::GetCoverageArea(), CONNECTION_GRAPH::getDefaultConnection(), getDrilledHoleShape(), CONNECTION_SUBGRAPH::GetDriverPriority(), SCH_TEXT::GetEndPoints(), PL_EDITOR_FRAME::GetLayoutFromRedoList(), PL_EDITOR_FRAME::GetLayoutFromUndoList(), SCH_FIELD::GetMenuImage(), PCB_TRACK::GetMsgPanelInfo(), PCB_DIMENSION_BASE::GetMsgPanelInfo(), SCH_TEXT::GetMsgPanelInfo(), SCH_FIELD::GetName(), CONNECTIVITY_DATA::GetNetItems(), LIB_SYMBOL::GetNextDrawItem(), PCB_SHAPE::GetParentFootprint(), LIB_SYMBOL::GetPin(), SCH_SYMBOL::GetPinPhysicalPosition(), SCH_FIELD::GetPosition(), KIGFX::SCH_PAINTER::getRenderColor(), ALIGN_DISTRIBUTE_TOOL::GetSelections(), PCB_TRACK::GetSelectMenuText(), DRC_ENGINE::GetShape(), PCB_TEXT::GetShownText(), SCH_FIELD::GetShownText(), SCH_TEXT::GetShownText(), CONVERT_TOOL::getStartEndPoints(), getTopLevelGroup(), GROUP_TOOL::Group(), PCB_SELECTION_TOOL::GuessSelectionCandidates(), EE_SELECTION_TOOL::GuessSelectionCandidates(), hash_fp_item(), EE_SELECTION_TOOL::highlight(), PCB_SELECTION_TOOL::highlightInternal(), BOARD_INSPECTION_TOOL::HighlightItem(), BOARD_INSPECTION_TOOL::highlightNet(), highlightNet(), PCB_SELECTION_TOOL::hitTestDistance(), SCH_EDIT_TOOL::Init(), ROUTER_TOOL::InlineBreakTrack(), ROUTER_TOOL::InlineDrag(), EE_RTREE::insert(), DRC_RTREE::Insert(), insideArea(), insideBackCourtyard(), insideCourtyard(), insideFootprintCourtyard(), insideFrontCourtyard(), EE_COLLECTOR::Inspect(), GENERAL_COLLECTOR::Inspect(), BOARD_INSPECTION_TOOL::InspectClearance(), BOARD_INSPECTION_TOOL::InspectConstraints(), BOARD_INSPECTION_TOOL::InspectDRCError(), ARRAY_CREATOR::Invoke(), isCopper(), CN_ANCHOR::IsDangling(), SCH_LINE_WIRE_BUS_TOOL::IsDrawingLineWireOrBus(), PNS_KICAD_IFACE::IsFlashedOnLayer(), CADSTAR_PCB_ARCHIVE_LOADER::isFootprint(), SCH_FIELD::IsHypertext(), isKeepoutZone(), DRC_ENGINE::IsNetTie(), PCB_TRACK::IsNull(), SCH_LINE::IsParallel(), isPlated(), SCH_FIELD::IsReplaceable(), PNS::ROUTER::isStartingPointRoutable(), BOARD_ITEM::IsTrack(), itemIsIncludedByFilter(), PCB_SELECTION_TOOL::itemPassesFilter(), CONVERT_TOOL::LinesToPoly(), CLIPBOARD_IO::Load(), FOOTPRINT_EDIT_FRAME::LoadFootprintFromBoard(), CADSTAR_SCH_ARCHIVE_LOADER::loadHierarchicalSheetPins(), CADSTAR_SCH_ARCHIVE_LOADER::loadNets(), EE_POINT_EDITOR::Main(), SYMBOL_EDITOR_MOVE_TOOL::Main(), SCH_MOVE_TOOL::Main(), EE_SELECTION_TOOL::Main(), EDIT_POINTS_FACTORY::Make(), NETLIST_EXPORTER_XML::makeListOfNets(), PCB_POINT_EDITOR::makePoints(), SCH_SCREEN::MarkConnections(), CN_CONNECTIVITY_ALGO::markItemNetAsDirty(), CONNECTIVITY_DATA::MarkItemNetAsDirty(), SCH_FIELD::Matches(), memberOf(), SCH_LINE::MergeOverlap(), SCH_EDIT_TOOL::Mirror(), EDIT_TOOL::MoveExact(), SCH_MOVE_TOOL::moveItem(), SCH_EDITOR_CONTROL::nextMatch(), FOOTPRINT_EDIT_FRAME::OnEditItemRequest(), PCB_EDIT_FRAME::OnEditItemRequest(), EDA_3D_CANVAS::OnMouseMove(), PCB_POINT_EDITOR::OnSelectionChange(), PCB_TRACK::cmp_tracks::operator()(), CN_VISITOR::operator()(), PCB_SHAPE::cmp_drawings::operator()(), BOARD_ITEM::ptr_cmp::operator()(), FOOTPRINT::cmp_drawings::operator()(), SCH_BUS_ENTRY_BASE::operator<(), SCH_JUNCTION::operator<(), SCH_TEXT::operator<(), SCH_FIELD::operator<(), SCH_LINE::operator<(), SCH_SHEET::operator<(), SCH_ITEM::operator<(), SCH_SYMBOL::operator<(), SCH_BITMAP::operator=(), SCH_SHEET::operator=(), SCH_SYMBOL::operator=(), PAD::PAD(), EDIT_TOOL::PadFilter(), BOARD_COMMIT::parentObject(), PCB_CONTROL::Paste(), SCH_EDITOR_CONTROL::Paste(), DRAWING_TOOL::PlaceImportedGraphics(), SCH_FIELD::Plot(), SCH_SCREEN::Plot(), BRDITEMS_PLOTTER::PlotFootprintGraphicItem(), CONVERT_TOOL::PolyToLines(), POSITION_RELATIVE_TOOL::PositionRelative(), SCH_FIELD::Print(), SCH_SCREEN::Print(), DIALOG_GLOBAL_EDIT_TRACKS_AND_VIAS::processItem(), BACK_ANNOTATE::processNetNameChange(), SYMBOL_EDITOR_EDIT_TOOL::Properties(), SCH_EDIT_TOOL::Properties(), BOARD_COMMIT::Push(), PCB_BASE_EDIT_FRAME::PutDataInPreviousState(), SCH_EDIT_FRAME::PutDataInPreviousState(), PCB_GRID_HELPER::queryVisible(), SCH_CONNECTION::recacheName(), SCH_BASE_FRAME::RefreshSelection(), KIGFX::PCB_VIEW::Remove(), EE_RTREE::remove(), FOOTPRINT::Remove(), CN_CONNECTIVITY_ALGO::Remove(), SCH_SCREEN::Remove(), BOARD::Remove(), PCB_POINT_EDITOR::removeCorner(), PCB_POINT_EDITOR::removeCornerCondition(), LIB_SYMBOL::RemoveDrawItem(), SCH_SHEET::RemovePin(), SCH_EDIT_TOOL::RepeatDrawItem(), SCH_FIELD::Replace(), PCB_SELECTION_TOOL::RequestSelection(), SCHEMATIC::ResolveCrossReference(), PCB_PARSER::resolveGroups(), DS_PROXY_UNDO_ITEM::Restore(), PL_EDITOR_FRAME::RollbackFromUndo(), SCH_EDIT_TOOL::Rotate(), DRC_TEST_PROVIDER_MATCHED_LENGTH::runInternal(), SCH_SEXPR_PLUGIN_CACHE::saveArc(), SCH_LEGACY_PLUGIN_CACHE::saveArc(), SCH_SEXPR_PLUGIN_CACHE::saveBezier(), SCH_LEGACY_PLUGIN_CACHE::saveBezier(), SCH_SEXPR_PLUGIN_CACHE::saveCircle(), SCH_LEGACY_PLUGIN_CACHE::saveCircle(), PCB_BASE_EDIT_FRAME::SaveCopyInUndoList(), EE_TOOL_BASE< SCH_BASE_FRAME >::saveCopyInUndoList(), SCH_SEXPR_PLUGIN::saveField(), SCH_SEXPR_PLUGIN_CACHE::saveField(), SCH_LEGACY_PLUGIN_CACHE::saveField(), SCH_SEXPR_PLUGIN_CACHE::savePin(), SCH_LEGACY_PLUGIN_CACHE::savePin(), SCH_SEXPR_PLUGIN_CACHE::savePolyLine(), SCH_LEGACY_PLUGIN_CACHE::savePolyLine(), SCH_SEXPR_PLUGIN_CACHE::saveRectangle(), SCH_LEGACY_PLUGIN_CACHE::saveRectangle(), CLIPBOARD_IO::SaveSelection(), SCH_SEXPR_PLUGIN_CACHE::saveSymbolDrawItem(), SCH_SEXPR_PLUGIN::saveText(), SCH_SEXPR_PLUGIN_CACHE::saveText(), SCH_LEGACY_PLUGIN_CACHE::saveText(), SCH_SCREEN::Schematic(), SCH_ITEM::Schematic(), CONVERT_TOOL::SegmentToArc(), PCB_SELECTION_TOOL::select(), PCB_SELECTION_TOOL::Selectable(), EE_SELECTION_TOOL::Selectable(), PCB_SELECTION_TOOL::selectConnectedTracks(), SCH_FIELD::SetId(), ITEM_PICKER::SetItem(), SCH_FIELD::SetPosition(), DIALOG_LABEL_EDITOR::SetTitle(), PCB_EDIT_FRAME::SetTrackSegmentWidth(), BOARD_COMMIT::Stage(), SCH_JUNCTION::SwapData(), SCH_NO_CONNECT::SwapData(), SCH_BITMAP::SwapData(), PCB_TARGET::SwapData(), SCH_SHEET_PIN::SwapData(), SCH_FIELD::SwapData(), PCB_TEXT::SwapData(), PCB_GROUP::SwapData(), PCB_TRACK::SwapData(), SCH_SHEET::SwapData(), PCB_ARC::SwapData(), PCB_DIM_ALIGNED::SwapData(), PCB_DIM_ORTHOGONAL::SwapData(), SCH_SYMBOL::SwapData(), PCB_VIA::SwapData(), PCB_DIM_LEADER::SwapData(), PCB_DIM_CENTER::SwapData(), FOOTPRINT::SwapData(), PAD::SwapData(), ZONE::SwapData(), SwapItemData(), DRC_TEST_PROVIDER_COPPER_CLEARANCE::testItemAgainstZones(), ERC_TESTER::TestMultUnitPinConflicts(), DRC_TEST_PROVIDER_COPPER_CLEARANCE::testPadAgainstItem(), ERC_TESTER::TestPinToPin(), ERC_TESTER::TestSimilarLabels(), DRC_TEST_PROVIDER_COPPER_CLEARANCE::testTrackAgainstItem(), CONNECTIVITY_DATA::TestTrackEndpointDangling(), DIALOG_LABEL_EDITOR::TransferDataFromWindow(), DIALOG_FIELDS_EDITOR_GLOBAL::TransferDataToWindow(), DIALOG_DIMENSION_PROPERTIES::TransferDataToWindow(), DIALOG_LABEL_EDITOR::TransferDataToWindow(), DIALOG_TEXT_PROPERTIES::TransferDataToWindow(), PCB_TRACK::TransformShapeWithClearanceToPolygon(), SYMBOL_EDITOR_DRAWING_TOOLS::TwoClickPlace(), EE_SELECTION_TOOL::unhighlight(), PCB_SELECTION_TOOL::unhighlightInternal(), KIGFX::PCB_VIEW::Update(), SCH_TEXT::UpdateDanglingState(), DIALOG_DIMENSION_PROPERTIES::updateDimensionFromDialog(), DIALOG_SCH_EDIT_ONE_FIELD::UpdateField(), PL_POINT_EDITOR::updateItem(), PCB_POINT_EDITOR::updateItem(), EE_TOOL_BASE< SCH_BASE_FRAME >::updateItem(), SCH_BASE_FRAME::UpdateItem(), CONNECTION_GRAPH::updateItemConnectivity(), SCH_EDITOR_CONTROL::UpdateNetHighlighting(), EE_POINT_EDITOR::updateParentItem(), SCH_EDITOR_CONTROL::updatePastedSheet(), EE_POINT_EDITOR::updatePoints(), PL_POINT_EDITOR::updatePoints(), PCB_POINT_EDITOR::updatePoints(), SCH_BUS_ENTRY_BASE::ViewGetLayers(), PCB_GROUP::Visit(), PCB_TRACK::Visit(), GERBER_DRAW_ITEM::Visit(), SCH_GLOBALLABEL::Visit(), SCH_SHEET::Visit(), DIALOG_GLOBAL_EDIT_TEXT_AND_GRAPHICS::visitItem(), and NETLIST_EXPORTER_CADSTAR::writeListOfNets().

◆ ViewBBox()

const BOX2I EDA_ITEM::ViewBBox ( ) const
overridevirtualinherited

Return the bounding box of the item covering all its layers.

Returns
the current bounding box.

Implements KIGFX::VIEW_ITEM.

Reimplemented in PAD, FOOTPRINT, PCB_DIM_CENTER, EDIT_POINTS, PCB_SHAPE, PCB_DIMENSION_BASE, GERBER_DRAW_ITEM, FP_TEXT, PCB_TRACK, DS_PROXY_VIEW_ITEM, ROUTER_PREVIEW_ITEM, PCB_MARKER, MY_DRAWING, KIGFX::ORIGIN_VIEWITEM, KIGFX::PREVIEW::TWO_POINT_ASSISTANT, KIGFX::PREVIEW::CENTRELINE_RECT_ITEM, KIGFX::PREVIEW::SELECTION_AREA, KIGFX::PREVIEW::POLYGON_ITEM, RATSNEST_VIEW_ITEM, KIGFX::PREVIEW::RULER_ITEM, and KIGFX::PREVIEW::ARC_ASSISTANT.

Definition at line 192 of file eda_item.cpp.

193 {
194  // Basic fallback
195  EDA_RECT bbox = GetBoundingBox();
196 
197  return BOX2I( bbox.GetOrigin(), bbox.GetSize() );
198 }
BOX2< VECTOR2I > BOX2I
Definition: box2.h:512
const wxPoint GetOrigin() const
Definition: eda_rect.h:101
Handle the component boundary box.
Definition: eda_rect.h:42
virtual const EDA_RECT GetBoundingBox() const
Return the orthogonal bounding box of this object for display purposes.
Definition: eda_item.cpp:75
const wxSize GetSize() const
Definition: eda_rect.h:91

References EDA_ITEM::GetBoundingBox(), EDA_RECT::GetOrigin(), and EDA_RECT::GetSize().

Referenced by GERBVIEW_FRAME::GetDocumentExtents(), PCB_DIMENSION_BASE::ViewBBox(), and PCB_SHAPE::ViewBBox().

◆ ViewDraw()

virtual void KIGFX::VIEW_ITEM::ViewDraw ( int  aLayer,
VIEW aView 
) const
inlinevirtualinherited

Draw the parts of the object belonging to layer aLayer.

An alternative way for drawing objects if there is no #PAINTER assigned for the view or if the PAINTER doesn't know how to paint this particular implementation of VIEW_ITEM. The preferred way of drawing is to design an appropriate PAINTER object, the method below is intended only for quick hacks and debugging purposes.

Parameters
aLayeris the current drawing layer.
aViewis a pointer to the VIEW device we are drawing on.

Reimplemented in EDIT_POINTS, DS_PROXY_VIEW_ITEM, ROUTER_PREVIEW_ITEM, KIGFX::VIEW_GROUP, KIGFX::PREVIEW::SELECTION_AREA, MY_DRAWING, KIGFX::VIEW_OVERLAY, KIGFX::PREVIEW::SIMPLE_OVERLAY_ITEM, KIGFX::PREVIEW::TWO_POINT_ASSISTANT, KIGFX::ORIGIN_VIEWITEM, KIGFX::PREVIEW::ARC_ASSISTANT, KIGFX::PREVIEW::RULER_ITEM, and RATSNEST_VIEW_ITEM.

Definition at line 111 of file view_item.h.

112  {}

Referenced by KIGFX::VIEW::draw(), and KIGFX::VIEW::updateItemGeometry().

◆ ViewGetLayers()

void LIB_ITEM::ViewGetLayers ( int  aLayers[],
int &  aCount 
) const
overridevirtualinherited

Return the all the layers within the VIEW the object is painted on.

For instance, a PAD spans zero or more copper layers and a few technical layers. ViewDraw() or PAINTER::Draw() is repeatedly called for each of the layers returned by ViewGetLayers(), depending on the rendering order.

Parameters
aLayers[]is the output layer index array.
aCountis the number of layer indices in aLayers[].

Reimplemented from EDA_ITEM.

Reimplemented in LIB_TEXT.

Definition at line 129 of file lib_item.cpp.

130 {
131  // Basic fallback
132  aCount = 3;
133  aLayers[0] = LAYER_DEVICE;
134  aLayers[1] = LAYER_DEVICE_BACKGROUND;
135  aLayers[2] = LAYER_SELECTION_SHADOWS;
136 }

References LAYER_DEVICE, LAYER_DEVICE_BACKGROUND, and LAYER_SELECTION_SHADOWS.

◆ ViewGetLOD()

virtual double KIGFX::VIEW_ITEM::ViewGetLOD ( int  aLayer,
VIEW aView 
) const
inlinevirtualinherited

Return the level of detail (LOD) of the item.

A level of detail is the minimal VIEW scale that is sufficient for an item to be shown on a given layer.

Parameters
aLayeris the current drawing layer.
aViewis a pointer to the VIEW device we are drawing on.
Returns
the level of detail. 0 always show the item, because the actual zoom level (or VIEW scale) is always > 0

Reimplemented in FP_ZONE, PAD, FOOTPRINT, PCB_VIA, GERBER_DRAW_ITEM, FP_TEXT, PCB_TRACK, ZONE, PCB_GROUP, and FP_SHAPE.

Definition at line 137 of file view_item.h.

138  {
139  // By default always show the item
140  return 0.0;
141  }

Referenced by PNS_KICAD_IFACE::IsItemVisible(), KIGFX::VIEW::DRAW_ITEM_VISITOR::operator()(), EE_GRID_HELPER::queryVisible(), PCB_GRID_HELPER::queryVisible(), and PCB_SELECTION_TOOL::Selectable().

◆ viewPrivData()

◆ Visit()

SEARCH_RESULT EDA_ITEM::Visit ( INSPECTOR  inspector,
void *  testData,
const KICAD_T  scanTypes[] 
)
virtualinherited

May be re-implemented for each derived class in order to handle all the types given by its member data.

Implementations should call inspector->Inspect() on types in scanTypes[], and may use IterateForward() to do so on lists of such data.

Parameters
inspectorAn INSPECTOR instance to use in the inspection.
testDataArbitrary data used by the inspector.
scanTypesWhich# KICAD_T types are of interest and the order is significant too, terminated by EOT.
Returns
SEARCH_RESULT SEARCH_QUIT if the Iterator is to stop the scan, else #SCAN_CONTINUE, and determined by the inspector.

Reimplemented in BOARD, SCH_SYMBOL, FOOTPRINT, LIB_SYMBOL, SCH_SHEET, SCH_GLOBALLABEL, GERBER_FILE_IMAGE, GERBER_DRAW_ITEM, PCB_TRACK, PCB_GROUP, and GBR_LAYOUT.

Definition at line 93 of file eda_item.cpp.

94 {
95 #if 0 && defined(DEBUG)
96  std::cout << GetClass().mb_str() << ' ';
97 #endif
98 
99  if( IsType( scanTypes ) )
100  {
101  if( SEARCH_RESULT::QUIT == inspector( this, testData ) )
102  return SEARCH_RESULT::QUIT;
103  }
104 
106 }
virtual bool IsType(const KICAD_T aScanTypes[]) const
Check whether the item is one of the listed types.
Definition: eda_item.h:183
virtual wxString GetClass() const =0
Return the class name.

References CONTINUE, EDA_ITEM::GetClass(), EDA_ITEM::IsType(), and QUIT.

Referenced by GERBER_COLLECTOR::Collect(), GENERAL_COLLECTOR::Collect(), PCB_TYPE_COLLECTOR::Collect(), PCB_LAYER_COLLECTOR::Collect(), and EDA_ITEM::IterateForward().

Member Data Documentation

◆ m_alternates

std::map<wxString, ALT> LIB_PIN::m_alternates
protected

Definition at line 291 of file lib_pin.h.

Referenced by compare(), GetAlt(), and GetAlternates().

◆ m_attributes

int LIB_PIN::m_attributes
protected

Definition at line 285 of file lib_pin.h.

Referenced by compare(), IsVisible(), and SetVisible().

◆ m_convert

int LIB_ITEM::m_convert
protectedinherited

Shape identification for alternate body styles.

Set 0 if the item is common to all body styles. This is typially used for representing DeMorgan variants in KiCad.

Definition at line 320 of file lib_item.h.

Referenced by LIB_TEXT::Clone(), LIB_ITEM::compare(), LIB_ITEM::GetConvert(), LIB_ITEM::GetMsgPanelInfo(), LIB_ITEM::LIB_ITEM(), LIB_SYMBOL::SetConversion(), and LIB_ITEM::SetConvert().

◆ m_fill

◆ m_flags

◆ m_forceVisible

bool EDA_ITEM::m_forceVisible
protectedinherited

◆ m_isFillable

◆ m_length

int LIB_PIN::m_length
protected

◆ m_name

wxString LIB_PIN::m_name
protected

Definition at line 286 of file lib_pin.h.

Referenced by compare(), GetName(), GetSelectMenuText(), GetShownName(), and SetName().

◆ m_nameTextSize

int LIB_PIN::m_nameTextSize
protected

◆ m_number

wxString LIB_PIN::m_number
protected

Definition at line 287 of file lib_pin.h.

Referenced by compare(), GetNumber(), GetSelectMenuText(), GetShownNumber(), and SetNumber().

◆ m_numTextSize

int LIB_PIN::m_numTextSize
protected

◆ m_orientation

int LIB_PIN::m_orientation
protected

◆ m_parent

◆ m_position

wxPoint LIB_PIN::m_position
protected

◆ m_shape

GRAPHIC_PINSHAPE LIB_PIN::m_shape
protected

◆ m_status

◆ m_type

◆ m_unit

int LIB_ITEM::m_unit
protectedinherited

Unit identification for multiple parts per package.

Set to 0 if the item is common to all units.

Definition at line 314 of file lib_item.h.

Referenced by LIB_TEXT::Clone(), LIB_ITEM::compare(), LIB_ITEM::GetMsgPanelInfo(), LIB_ITEM::GetUnit(), LIB_ITEM::LIB_ITEM(), LIB_ITEM::SetUnit(), and LIB_SYMBOL::SetUnitCount().

◆ m_Uuid

const KIID EDA_ITEM::m_Uuid
inherited

Definition at line 475 of file eda_item.h.

Referenced by FIELDS_EDITOR_GRID_DATA_MODEL::AddColumn(), SCH_SYMBOL::AddHierarchicalReference(), RC_ITEM::AddItem(), SCH_EDIT_FRAME::AnnotateSymbols(), FIELDS_EDITOR_GRID_DATA_MODEL::ApplyData(), SCH_SHEET_PATH::Cmp(), SCHEMATIC::ConvertRefsToKIIDs(), MICROWAVE_TOOL::createMicrowaveInductor(), DRAWING_TOOL::DrawVia(), LIB_SYMBOL::Duplicate(), BOARD_ITEM::Duplicate(), SCH_ITEM::Duplicate(), FOOTPRINT::Duplicate(), FOOTPRINT::DuplicateItem(), PCB_EDIT_FRAME::ExchangeFootprint(), PAD_TOOL::explodePad(), BOARD_EDITOR_CONTROL::ExportNetlist(), BOARD::FillItemMap(), SCH_SHEET_LIST::FillItemMap(), PCB_BASE_FRAME::FocusOnItem(), SCH_EDIT_FRAME::FocusOnItem(), PCB_IO::format(), FormatProbeItem(), SCH_PIN::GetDefaultNetName(), BOARD::GetItem(), SCH_SHEET_LIST::GetItem(), PAD::GetMsgPanelInfo(), DIALOG_BOARD_REANNOTATE::GetNewRefDes(), FP_TEXT::GetParentAsString(), PAD::GetParentAsString(), FP_SHAPE::GetParentAsString(), SCH_REFERENCE::GetPath(), SCH_MARKER::GetUUID(), PCB_MARKER::GetUUID(), FIELDS_EDITOR_GRID_DATA_MODEL::groupMatch(), SCH_SHEET_PATH::IsContainedWithin(), LEGACY_PLUGIN::loadFOOTPRINT(), FOOTPRINT_EDIT_FRAME::LoadFootprintFromBoard(), PCB_EDIT_FRAME::LoadFootprints(), LEGACY_PLUGIN::loadPCB_TARGET(), LEGACY_PLUGIN::loadPCB_TEXT(), SCH_LEGACY_PLUGIN::loadSymbol(), LEGACY_PLUGIN::loadTrackList(), PNS::LOGGER::Log(), NETLIST_EXPORTER_XML::makeSymbols(), SCH_EDIT_FRAME::mapExistingAnnotation(), PCB_TRACK::cmp_tracks::operator()(), PCB_SHAPE::cmp_drawings::operator()(), BOARD_ITEM::ptr_cmp::operator()(), FOOTPRINT::cmp_drawings::operator()(), FOOTPRINT::cmp_pads::operator()(), SCH_ITEM::operator<(), SCH_SYMBOL::operator<(), PAD::PAD(), SCH_SEXPR_PARSER::parseSchSheetInstances(), SCH_EDITOR_CONTROL::Paste(), SCH_SHEET_PATH::PathAsString(), BOARD_REANNOTATE_TOOL::ReannotateDuplicatesInSelection(), SCH_SCREENS::ReplaceDuplicateTimeStamps(), SCH_SYMBOL::ReplaceInstanceSheetPath(), PCB_PARSER::resolveGroups(), SCH_SEXPR_PLUGIN::saveBitmap(), SCH_SEXPR_PLUGIN::saveBusEntry(), FOOTPRINT_EDIT_FRAME::SaveFootprintToBoard(), SCH_SEXPR_PLUGIN::saveLine(), SCH_SEXPR_PLUGIN::saveNoConnect(), SCH_EDIT_FRAME::SaveProject(), SCH_SEXPR_PLUGIN::saveSheet(), SCH_LEGACY_PLUGIN::saveSheet(), SCH_SEXPR_PLUGIN::saveSymbol(), SCH_LEGACY_PLUGIN::saveSymbol(), SCH_SEXPR_PLUGIN::saveText(), SCH_REFERENCE::SCH_REFERENCE(), SCH_SHEET::SCH_SHEET(), SCH_SYMBOL::SCH_SYMBOL(), RC_ITEM::SetItems(), SwapItemData(), DRC_TEST_PROVIDER_EDGE_CLEARANCE::testAgainstEdge(), testGroupEqual(), SCH_EDITOR_CONTROL::updatePastedSheet(), SCH_EDITOR_CONTROL::updatePastedSymbol(), and NETLIST_EXPORTER_ORCADPCB2::WriteNetlist().


The documentation for this class was generated from the following files: