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
 
void SetName (const wxString &aName)
 
const wxString & GetNumber () 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_PART *aParent)
 
 LIB_PIN (LIB_PART *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, wxPoint &aPinPos, int aPinOrient, int aTextInside, bool aDrawPinNum, bool aDrawPinName)
 Plot the pin number and pin text info, given the pin line coordinates. More...
 
void PlotSymbol (PLOTTER *aPlotter, const wxPoint &aPosition, int aOrientation)
 
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) override
 Plot the draw item using the plot object. More...
 
int GetWidth () const override
 
void SetWidth (int aWidth) override
 
BITMAP_DEF 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
 Calculates the attributes of an item at aPosition when it is being edited. More...
 
virtual void BeginEdit (const wxPoint aPosition)
 Begin drawing a component 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_PARTGetParent () 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 (int type) const
 
void SetState (int type, bool state)
 
STATUS_FLAGS GetStatus () const
 
void SetStatus (STATUS_FLAGS aStatus)
 
void SetFlags (STATUS_FLAGS aMask)
 
void ClearFlags (STATUS_FLAGS aMask=EDA_ITEM_ALL_FLAGS)
 
STATUS_FLAGS GetFlags () const
 
bool HasFlag (STATUS_FLAGS aFlag) const
 
STATUS_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
 
STATUS_FLAGS m_status
 
EDA_ITEMm_parent
 Linked list: Link (parent struct) More...
 
bool m_forceVisible
 
STATUS_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 55 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 everthing 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 84 of file lib_item.h.

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

◆ LIB_CONVERT

enum LIB_ITEM::LIB_CONVERT : int
inherited
Enumerator
BASE 
DEMORGAN 

Definition at line 75 of file lib_item.h.

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

Constructor & Destructor Documentation

◆ ~LIB_PIN()

LIB_PIN::~LIB_PIN ( )
inline

Definition at line 113 of file lib_pin.h.

113 { }

◆ LIB_PIN() [1/2]

LIB_PIN::LIB_PIN ( LIB_PART 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:167
int m_nameTextSize
Definition: lib_pin.h:75
GRAPHIC_PINSHAPE m_shape
Definition: lib_pin.h:69
int m_numTextSize
Definition: lib_pin.h:74
Container for data for KiCad programs.
Definition: pgm_base.h:131
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:67
int m_orientation
Definition: lib_pin.h:68
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)
int m_attributes
Definition: lib_pin.h:71
ELECTRICAL_PINTYPE m_type
Definition: lib_pin.h:70
LIB_ITEM(KICAD_T aType, LIB_PART *aComponent=NULL, int aUnit=0, int aConvert=0, FILL_TYPE aFillType=FILL_TYPE::NO_FILL)
Definition: lib_item.cpp:35

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

Referenced by Clone().

◆ LIB_PIN() [2/2]

LIB_PIN::LIB_PIN ( LIB_PART 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:75
GRAPHIC_PINSHAPE m_shape
Definition: lib_pin.h:69
int m_numTextSize
Definition: lib_pin.h:74
int m_length
Definition: lib_pin.h:67
void SetNumber(const wxString &aNumber)
Definition: lib_pin.h:166
int m_orientation
Definition: lib_pin.h:68
void SetConvert(int aConvert)
Definition: lib_item.h:264
int m_attributes
Definition: lib_pin.h:71
void SetUnit(int aUnit)
Definition: lib_item.h:261
wxPoint m_position
Definition: lib_pin.h:66
void SetName(const wxString &aName)
Definition: lib_pin.h:157
ELECTRICAL_PINTYPE m_type
Definition: lib_pin.h:70
LIB_ITEM(KICAD_T aType, LIB_PART *aComponent=NULL, int aUnit=0, int aConvert=0, FILL_TYPE aFillType=FILL_TYPE::NO_FILL)
Definition: lib_item.cpp:35

References 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 component library draw item at aPosition.

It typically would be called on a left click when a draw tool is selected in the component 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 101 of file lib_item.h.

101 {}

Referenced by SYMBOL_EDITOR_DRAWING_TOOLS::DrawShape().

◆ CalcEdit()

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

Calculates 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 component library editor. Therefore, the default method does nothing.

Parameters
aPositionThe current mouse position in drawing coordinates.

Reimplemented from LIB_ITEM.

Definition at line 1188 of file lib_pin.cpp.

1189 {
1190  if( IsMoving() )
1191  {
1192  MoveTo( aPosition );
1193  }
1194 }
void MoveTo(const wxPoint &aNewPosition) override
Move a draw object to aPosition.
Definition: lib_pin.cpp:915
bool IsMoving() const
Definition: eda_item.h:169

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

◆ ClearBrightened()

void EDA_ITEM::ClearBrightened ( )
inlineinherited

◆ ClearEditFlags()

◆ ClearFlags()

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

Definition at line 203 of file eda_item.h.

203 { m_flags &= ~aMask; }
STATUS_FLAGS m_flags
Definition: eda_item.h:530

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(), DRAWING_TOOL::PlaceText(), BOARD_COMMIT::Push(), PCB_SELECTION_TOOL::RebuildSelection(), SCH_EDIT_TOOL::RepeatDrawItem(), SYMBOL_EDITOR_PIN_TOOL::RepeatPin(), 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 215 of file eda_item.h.

216  {
218  DO_NOT_DRAW );
219  }
#define TEMP_SELECTED
flag indicating that the structure has already selected
Definition: eda_item.h:114
#define IS_LINKED
Used in calculation to mark linked items (temporary use)
Definition: eda_item.h:103
#define CANDIDATE
flag indicating that the structure is connected
Definition: eda_item.h:116
#define DO_NOT_DRAW
Used to disable draw function.
Definition: eda_item.h:118
#define STARTPOINT
When a line is selected, these flags indicate which.
Definition: eda_item.h:111
void ClearFlags(STATUS_FLAGS aMask=EDA_ITEM_ALL_FLAGS)
Definition: eda_item.h:203
#define ENDPOINT
ends. (Used to support dragging.)
Definition: eda_item.h:112
#define SKIP_STRUCT
flag indicating that the structure should be ignored
Definition: eda_item.h:117

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 825 of file lib_pin.cpp.

826 {
827  return new LIB_PIN( *this );
828 }
LIB_PIN(LIB_PART *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:

  • Component alternate part (DeMorgan) number.
  • Component 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 ojbect, 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 831 of file lib_pin.cpp.

832 {
833  wxASSERT( aOther.Type() == LIB_PIN_T );
834 
835  int retv = LIB_ITEM::compare( aOther, aCompareFlags );
836 
837  if( retv )
838  return retv;
839 
840  const LIB_PIN* tmp = (LIB_PIN*) &aOther;
841 
842  // When comparing units, we do not compare the part numbers. If everything else is
843  // identical, then we can just renumber the parts for the inherited symbol.
844  if( !( aCompareFlags & COMPARE_FLAGS::UNIT ) && m_number != tmp->m_number )
845  return m_number.Cmp( tmp->m_number );
846 
847  int result = m_name.CmpNoCase( tmp->m_name );
848 
849  if( result )
850  return result;
851 
852  if( m_position.x != tmp->m_position.x )
853  return m_position.x - tmp->m_position.x;
854 
855  if( m_position.y != tmp->m_position.y )
856  return m_position.y - tmp->m_position.y;
857 
858  if( m_length != tmp->m_length )
859  return m_length - tmp->m_length;
860 
861  if( m_orientation != tmp->m_orientation )
862  return m_orientation - tmp->m_orientation;
863 
864  if( m_shape != tmp->m_shape )
865  return static_cast<int>( m_shape ) - static_cast<int>( tmp->m_shape );
866 
867  if( m_type != tmp->m_type )
868  return static_cast<int>( m_type ) - static_cast<int>( tmp->m_type );
869 
870  if( m_attributes != tmp->m_attributes )
871  return m_attributes - tmp->m_attributes;
872 
873  if( m_numTextSize != tmp->m_numTextSize )
874  return m_numTextSize - tmp->m_numTextSize;
875 
876  if( m_nameTextSize != tmp->m_nameTextSize )
877  return m_nameTextSize - tmp->m_nameTextSize;
878 
879  if( m_alternates.size() != tmp->m_alternates.size() )
880  return m_alternates.size() - tmp->m_alternates.size();
881 
882  auto lhsItem = m_alternates.begin();
883  auto rhsItem = tmp->m_alternates.begin();
884 
885  while( lhsItem != m_alternates.end() )
886  {
887  const ALT& lhsAlt = lhsItem->second;
888  const ALT& rhsAlt = rhsItem->second;
889 
890  retv = lhsAlt.m_Name.Cmp( rhsAlt.m_Name );
891 
892  if( retv )
893  return retv;
894 
895  if( lhsAlt.m_Type != rhsAlt.m_Type )
896  return static_cast<int>( lhsAlt.m_Type ) - static_cast<int>( rhsAlt.m_Type );
897 
898  if( lhsAlt.m_Shape != rhsAlt.m_Shape )
899  return static_cast<int>( lhsAlt.m_Shape ) - static_cast<int>( rhsAlt.m_Shape );
900 
901  ++lhsItem;
902  ++rhsItem;
903  }
904 
905  return 0;
906 }
int m_nameTextSize
Definition: lib_pin.h:75
GRAPHIC_PINSHAPE m_shape
Definition: lib_pin.h:69
int m_numTextSize
Definition: lib_pin.h:74
wxString m_name
Definition: lib_pin.h:72
int m_length
Definition: lib_pin.h:67
int m_orientation
Definition: lib_pin.h:68
wxString m_number
Definition: lib_pin.h:73
int m_attributes
Definition: lib_pin.h:71
std::map< wxString, ALT > m_alternates
Definition: lib_pin.h:77
wxPoint m_position
Definition: lib_pin.h:66
ELECTRICAL_PINTYPE m_type
Definition: lib_pin.h:70
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:162

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 113 of file lib_item.h.

113 { 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 120 of file lib_item.h.

120 {}

Referenced by SYMBOL_EDITOR_DRAWING_TOOLS::DrawShape().

◆ Get() [1/3]

wxAny INSPECTABLE::Get ( PROPERTY_BASE aProperty)
inlineinherited

Definition at line 84 of file inspectable.h.

85  {
87  TYPE_ID thisType = TYPE_HASH( *this );
88  void* object = propMgr.TypeCast( this, thisType, aProperty->OwnerHash() );
89  return object ? aProperty->getter( object ) : wxAny();
90  }
static PROPERTY_MANAGER & Instance()
Definition: property_mgr.h:66
#define TYPE_HASH(x)
Definition: property.h:57
size_t TYPE_ID
Unique type identifier.
Definition: property_mgr.h:43
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:63
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 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 93 of file inspectable.h.

94  {
96  TYPE_ID thisType = TYPE_HASH( *this );
97  void* object = propMgr.TypeCast( this, thisType, aProperty->OwnerHash() );
98  return object ? aProperty->get<T>( object ) : T();
99  }
static PROPERTY_MANAGER & Instance()
Definition: property_mgr.h:66
#define TYPE_HASH(x)
Definition: property.h:57
size_t TYPE_ID
Unique type identifier.
Definition: property_mgr.h:43
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:63
T get(void *aObject)
Definition: property.h:266
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 102 of file inspectable.h.

103  {
105  TYPE_ID thisType = TYPE_HASH( *this );
106  PROPERTY_BASE* prop = propMgr.GetProperty( thisType, aProperty );
107  boost::optional<T> ret;
108 
109  if( prop )
110  {
111  void* object = propMgr.TypeCast( this, thisType, prop->OwnerHash() );
112 
113  if( object )
114  ret = prop->get<T>( object );
115  }
116 
117  return ret;
118  }
static PROPERTY_MANAGER & Instance()
Definition: property_mgr.h:66
#define TYPE_HASH(x)
Definition: property.h:57
size_t TYPE_ID
Unique type identifier.
Definition: property_mgr.h:43
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:63
T get(void *aObject)
Definition: property.h:266
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 182 of file lib_pin.h.

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

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 222 of file lib_pin.h.

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

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 1030 of file lib_pin.cpp.

1031 {
1032  EDA_RECT bbox;
1033  wxPoint begin;
1034  wxPoint end;
1035  int nameTextOffset = 0;
1036  bool showName = !m_name.IsEmpty() && ( m_name != wxT( "~" ) );
1037  bool showNum = !m_number.IsEmpty();
1038  int minsizeV = TARGET_PIN_RADIUS;
1039 
1040  if( !aIncludeInvisibles && !IsVisible() )
1041  showName = false;
1042 
1043  if( GetParent() )
1044  {
1045  if( GetParent()->ShowPinNames() )
1046  nameTextOffset = GetParent()->GetPinNameOffset();
1047  else
1048  showName = false;
1049 
1050  if( !GetParent()->ShowPinNumbers() )
1051  showNum = false;
1052  }
1053 
1054  if( aPinOnly )
1055  {
1056  showName = false;
1057  showNum = false;
1058  }
1059 
1060  // First, calculate boundary box corners position
1061  int numberTextLength = showNum ? m_numTextSize * m_number.Len() : 0;
1062 
1063  // Actual text height is bigger than text size
1064  int numberTextHeight = showNum ? KiROUND( m_numTextSize * 1.1 ) : 0;
1065 
1067  minsizeV = std::max( TARGET_PIN_RADIUS, externalPinDecoSize( nullptr, *this ) );
1068 
1069  // calculate top left corner position
1070  // for the default pin orientation (PIN_RIGHT)
1071  begin.y = std::max( minsizeV, numberTextHeight + Mils2iu( PIN_TEXT_MARGIN ) );
1072  begin.x = std::min( -TARGET_PIN_RADIUS, m_length - (numberTextLength / 2) );
1073 
1074  // calculate bottom right corner position and adjust top left corner position
1075  int nameTextLength = 0;
1076  int nameTextHeight = 0;
1077 
1078  if( showName )
1079  {
1080  int length = m_name.Len();
1081 
1082  // Don't count the line over text symbol.
1083  if( m_name.Left( 1 ) == wxT( "~" ) )
1084  length -= 1;
1085 
1086  nameTextLength = ( m_nameTextSize * length ) + nameTextOffset;
1087 
1088  // Actual text height are bigger than text size
1089  nameTextHeight = KiROUND( m_nameTextSize * 1.1 ) + Mils2iu( PIN_TEXT_MARGIN );
1090  }
1091 
1092  if( nameTextOffset ) // for values > 0, pin name is inside the body
1093  {
1094  end.x = m_length + nameTextLength + TARGET_PIN_RADIUS;
1095  end.y = std::min( -minsizeV, -nameTextHeight / 2 );
1096  }
1097  else // if value == 0:
1098  // pin name is outside the body, and above the pin line
1099  // pin num is below the pin line
1100  {
1101  end.x = std::max( m_length + TARGET_PIN_RADIUS, nameTextLength );
1102  end.y = -begin.y;
1103  begin.y = std::max( minsizeV, nameTextHeight );
1104  }
1105 
1106  // Now, calculate boundary box corners position for the actual pin orientation
1107  int orient = PinDrawOrient( DefaultTransform );
1108 
1109  /* Calculate the pin position */
1110  switch( orient )
1111  {
1112  case PIN_UP:
1113  // Pin is rotated and texts positions are mirrored
1114  RotatePoint( &begin, wxPoint( 0, 0 ), -900 );
1115  RotatePoint( &end, wxPoint( 0, 0 ), -900 );
1116  break;
1117 
1118  case PIN_DOWN:
1119  RotatePoint( &begin, wxPoint( 0, 0 ), 900 );
1120  RotatePoint( &end, wxPoint( 0, 0 ), 900 );
1121  begin.x = -begin.x;
1122  end.x = -end.x;
1123  break;
1124 
1125  case PIN_LEFT:
1126  begin.x = -begin.x;
1127  end.x = -end.x;
1128  break;
1129 
1130  case PIN_RIGHT:
1131  break;
1132  }
1133 
1134  begin += m_position;
1135  end += m_position;
1136 
1137  bbox.SetOrigin( begin );
1138  bbox.SetEnd( end );
1139  bbox.Normalize();
1140  bbox.Inflate( ( GetPenWidth() / 2 ) + 1 );
1141 
1142  // Draw Y axis is reversed in schematic:
1143  bbox.RevertYAxis();
1144 
1145  return bbox;
1146 }
int m_nameTextSize
Definition: lib_pin.h:75
GRAPHIC_PINSHAPE m_shape
Definition: lib_pin.h:69
int GetPinNameOffset()
Definition: lib_symbol.h:554
int m_numTextSize
Definition: lib_pin.h:74
LIB_PART * GetParent() const
Definition: lib_item.h:149
void SetOrigin(const wxPoint &pos)
Definition: eda_rect.h:126
wxString m_name
Definition: lib_pin.h:72
Definition: lib_pin.h:50
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:791
int m_length
Definition: lib_pin.h:67
void RevertYAxis()
Mirror the rectangle from the X axis (negate Y pos and size).
Definition: eda_rect.h:203
wxString m_number
Definition: lib_pin.h:73
void SetEnd(int x, int y)
Definition: eda_rect.h:187
int GetPenWidth() const override
Definition: lib_pin.cpp:165
bool IsVisible() const
Definition: lib_pin.h:147
void Normalize()
Ensures that the height ant width are positive.
Definition: eda_rect.cpp:35
wxPoint m_position
Definition: lib_pin.h:66
TRANSFORM DefaultTransform
Definition: eeschema.cpp:56
#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:68
#define TARGET_PIN_RADIUS
Definition: lib_pin.h:38
EDA_RECT & Inflate(wxCoord dx, wxCoord dy)
Inflate the rectangle horizontally by dx and vertically by dy.
Definition: eda_rect.cpp:363

References DefaultTransform, externalPinDecoSize(), LIB_ITEM::GetParent(), GetPenWidth(), LIB_PART::GetPinNameOffset(), EDA_RECT::Inflate(), INVERTED, INVERTED_CLOCK, IsVisible(), KiROUND(), m_length, m_name, m_nameTextSize, m_number, m_numTextSize, m_position, m_shape, 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(), LIB_PART::ShowPinNames(), LIB_PART::ShowPinNumbers(), and TARGET_PIN_RADIUS.

◆ GetCanonicalElectricalTypeName() [1/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 }

◆ GetCanonicalElectricalTypeName() [2/2]

wxString const LIB_PIN::GetCanonicalElectricalTypeName ( ) const
inline

Definition at line 137 of file lib_pin.h.

138  {
140  }
ELECTRICAL_PINTYPE m_type
Definition: lib_pin.h:70
wxString const GetCanonicalElectricalTypeName() const
Definition: lib_pin.h:137

References m_type.

Referenced by SCH_PIN::GetCanonicalElectricalTypeName().

◆ GetClass()

wxString LIB_PIN::GetClass ( ) const
inlineoverridevirtual

Return the class name.

Implements EDA_ITEM.

Definition at line 115 of file lib_pin.h.

116  {
117  return wxT( "LIB_PIN" );
118  }

◆ GetConvert()

◆ GetEditFlags()

STATUS_FLAGS EDA_ITEM::GetEditFlags ( ) const
inlineinherited

Definition at line 207 of file eda_item.h.

208  {
209  constexpr int mask = ( IS_NEW | IS_PASTED | IS_MOVED | IS_RESIZED | IS_DRAGGED |
211 
212  return m_flags & mask;
213  }
#define IS_RESIZED
Item being resized.
Definition: eda_item.h:107
#define STRUCT_DELETED
flag indication structures to be erased
Definition: eda_item.h:115
#define IS_MOVED
Item being moved.
Definition: eda_item.h:105
#define IS_DRAGGED
Item being dragged.
Definition: eda_item.h:108
#define IS_PASTED
Modifier on IS_NEW which indicates it came from clipboard.
Definition: eda_item.h:119
#define IS_WIRE_IMAGE
Item to be drawn as wireframe while editing.
Definition: eda_item.h:110
STATUS_FLAGS m_flags
Definition: eda_item.h:530
#define IS_NEW
New item, just created.
Definition: eda_item.h:106

References IS_DRAGGED, IS_MOVED, IS_NEW, IS_PASTED, IS_RESIZED, IS_WIRE_IMAGE, EDA_ITEM::m_flags, and STRUCT_DELETED.

Referenced by SCH_EDIT_TOOL::ChangeTextType(), EDA_ITEM::ClearEditFlags(), SCH_EDIT_FRAME::DeleteJunction(), SCH_EDIT_TOOL::editFieldText(), SYMBOL_EDITOR_PIN_TOOL::EditPinProperties(), SCH_EDITOR_CONTROL::EditWithSymbolEditor(), SCH_COMPONENT::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_SYMBOL_PROPERTIES::TransferDataFromWindow(), DIALOG_TEXT_PROPERTIES::TransferDataFromWindow(), DIALOG_LABEL_EDITOR::TransferDataFromWindow(), and DIALOG_FOOTPRINT_PROPERTIES::TransferDataFromWindow().

◆ GetElectricalTypeName()

wxString const LIB_PIN::GetElectricalTypeName ( ) const
inline

Definition at line 142 of file lib_pin.h.

143  {
145  }
wxString ElectricalPinTypeGetText(ELECTRICAL_PINTYPE aType)
Definition: pin_type.cpp:235
ELECTRICAL_PINTYPE m_type
Definition: lib_pin.h:70

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 TRACK.

Definition at line 308 of file eda_item.h.

308 { return GetPosition(); }
virtual wxPoint GetPosition() const
Definition: eda_item.h:301

References EDA_ITEM::GetPosition().

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

◆ GetLength()

◆ GetMenuImage()

BITMAP_DEF 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 1149 of file lib_pin.cpp.

1150 {
1152 }
BITMAP_DEF ElectricalPinTypeGetBitmap(ELECTRICAL_PINTYPE aType)
Definition: pin_type.cpp:245
ELECTRICAL_PINTYPE m_type
Definition: lib_pin.h:70

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 995 of file lib_pin.cpp.

996 {
997  wxString text = m_number.IsEmpty() ? wxT( "?" ) : m_number;
998 
999  LIB_ITEM::GetMsgPanelInfo( aFrame, aList );
1000 
1001  aList.push_back( MSG_PANEL_ITEM( _( "Name" ), m_name ) );
1002  aList.push_back( MSG_PANEL_ITEM( _( "Number" ), text ) );
1003  aList.push_back( MSG_PANEL_ITEM( _( "Type" ), ElectricalPinTypeGetText( m_type ) ) );
1004 
1005  text = PinShapeGetText( m_shape );
1006  aList.push_back( MSG_PANEL_ITEM( _( "Style" ), text ) );
1007 
1008  text = IsVisible() ? _( "Yes" ) : _( "No" );
1009  aList.push_back( MSG_PANEL_ITEM( _( "Visible" ), text ) );
1010 
1011  // Display pin length
1012  text = StringFromValue( aFrame->GetUserUnits(), m_length );
1013  aList.push_back( MSG_PANEL_ITEM( _( "Length" ), text ) );
1014 
1015  text = PinOrientationName( (unsigned) PinOrientationIndex( m_orientation ) );
1016  aList.push_back( MSG_PANEL_ITEM( _( "Orientation" ), text ) );
1017 
1018  wxPoint pinpos = GetPosition();
1019  pinpos.y = -pinpos.y; // Display coord are top to bottom
1020  // lib items coord are bottom to top
1021 
1022  text = MessageTextFromValue( aFrame->GetUserUnits(), pinpos.x );
1023  aList.push_back( MSG_PANEL_ITEM( _( "Pos X" ), text ) );
1024 
1025  text = MessageTextFromValue( aFrame->GetUserUnits(), pinpos.y );
1026  aList.push_back( MSG_PANEL_ITEM( _( "Pos Y" ), text ) );
1027 }
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:125
GRAPHIC_PINSHAPE m_shape
Definition: lib_pin.h:69
wxString ElectricalPinTypeGetText(ELECTRICAL_PINTYPE aType)
Definition: pin_type.cpp:235
int PinOrientationIndex(int code)
Definition: pin_type.cpp:145
wxString m_name
Definition: lib_pin.h:72
wxString PinShapeGetText(GRAPHIC_PINSHAPE aShape)
Definition: pin_type.cpp:255
int m_length
Definition: lib_pin.h:67
wxString PinOrientationName(unsigned aPinOrientationCode)
Definition: pin_type.cpp:114
int m_orientation
Definition: lib_pin.h:68
wxString m_number
Definition: lib_pin.h:73
bool IsVisible() const
Definition: lib_pin.h:147
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:258
#define _(s)
Definition: 3d_actions.cpp:33
ELECTRICAL_PINTYPE m_type
Definition: lib_pin.h:70
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:225
EDA_MSG_ITEM is used EDA_MSG_PANEL as the item type for displaying messages.
Definition: msgpanel.h:54
EDA_UNITS GetUserUnits() const
Return the user units currently in use.

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

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 1155 of file lib_pin.cpp.

1156 {
1157  if( !m_name.IsEmpty() )
1158  {
1159  return wxString::Format( _( "Pin %s [%s, %s, %s]" ),
1160  m_number,
1161  m_name,
1163  PinShapeGetText( m_shape ) );
1164  }
1165  else
1166  {
1167  return wxString::Format( _( "Pin %s [%s, %s]" ),
1168  m_number,
1170  PinShapeGetText( m_shape ) );
1171  }
1172 }
GRAPHIC_PINSHAPE m_shape
Definition: lib_pin.h:69
wxString m_name
Definition: lib_pin.h:72
wxString PinShapeGetText(GRAPHIC_PINSHAPE aShape)
Definition: pin_type.cpp:255
wxString m_number
Definition: lib_pin.h:73
wxString const GetElectricalTypeName() const
Definition: lib_pin.h:142
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
#define _(s)
Definition: 3d_actions.cpp:33

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

Referenced by SCH_PIN::GetSelectMenuText().

◆ GetShape()

◆ GetState()

int EDA_ITEM::GetState ( int  type) const
inlineinherited

Definition at line 186 of file eda_item.h.

187  {
188  return m_status & type;
189  }
STATUS_FLAGS m_status
Definition: eda_item.h:527

References EDA_ITEM::m_status.

Referenced by BOARD_ITEM::IsLocked().

◆ GetStatus()

STATUS_FLAGS EDA_ITEM::GetStatus ( ) const
inlineinherited

Definition at line 199 of file eda_item.h.

199 { return m_status; }
STATUS_FLAGS m_status
Definition: eda_item.h:527

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 120 of file lib_pin.h.

121  {
122  return _( "Pin" );
123  }
#define _(s)
Definition: 3d_actions.cpp:33

References _.

◆ GetUnit()

◆ GetWidth()

int LIB_PIN::GetWidth ( ) const
inlineoverridevirtual

Implements LIB_ITEM.

Definition at line 269 of file lib_pin.h.

269 { 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:222
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:363

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 }
const EDA_RECT GetBoundingBox() const override
Definition: lib_pin.h:222
bool Contains(const wxPoint &aPoint) const
Definition: eda_rect.cpp:57
#define STRUCT_DELETED
flag indication structures to be erased
Definition: eda_item.h:115
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
#define SKIP_STRUCT
flag indicating that the structure should be ignored
Definition: eda_item.h:117
STATUS_FLAGS m_flags
Definition: eda_item.h:530
EDA_RECT & Inflate(wxCoord dx, wxCoord dy)
Inflate the rectangle horizontally by dx and vertically by dy.
Definition: eda_rect.cpp:363

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 170 of file eda_item.h.

170 { return m_flags & IS_DRAGGED; }
#define IS_DRAGGED
Item being dragged.
Definition: eda_item.h:108
STATUS_FLAGS m_flags
Definition: eda_item.h:530

References IS_DRAGGED, and EDA_ITEM::m_flags.

Referenced by DIALOG_SYMBOL_PROPERTIES::DIALOG_SYMBOL_PROPERTIES(), and KIGFX::SCH_PAINTER::setDeviceColors().

◆ IsEntered()

bool EDA_ITEM::IsEntered ( ) const
inlineinherited

Definition at line 173 of file eda_item.h.

173 { return m_flags & ENTERED; }
#define ENTERED
indicates a group has been entered
Definition: eda_item.h:137
STATUS_FLAGS m_flags
Definition: eda_item.h:530

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 259 of file lib_item.h.

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

References LIB_ITEM::m_isFillable.

Referenced by SYMBOL_EDITOR_EDIT_TOOL::editGraphicProperties(), formatFill(), and DIALOG_LIB_EDIT_DRAW_ITEM::TransferDataToWindow().

◆ IsForceVisible()

bool EDA_ITEM::IsForceVisible ( ) const
inlineinherited

Definition at line 255 of file eda_item.h.

255 { return m_forceVisible; }
bool m_forceVisible
Definition: eda_item.h:529

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 167 of file eda_item.h.

167 { return m_flags & IS_CHANGED; }
#define IS_CHANGED
Item was edited, and modified.
Definition: eda_item.h:102
STATUS_FLAGS m_flags
Definition: eda_item.h:530

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 234 of file lib_pin.h.

235  {
237  && ( !IsVisible() || (LIB_PART*) GetParent()->IsPower() );
238  }
power input (GND, VCC for ICs). Must be connected to a power output.
LIB_PART * GetParent() const
Definition: lib_item.h:149
Define a library symbol object.
Definition: lib_symbol.h:93
bool IsVisible() const
Definition: lib_pin.h:147
ELECTRICAL_PINTYPE GetType() const
Definition: lib_pin.h:134
bool IsPower() const
Definition: lib_symbol.cpp:404

References LIB_ITEM::GetParent(), GetType(), LIB_PART::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_COMPONENT, SCH_SHEET, SCH_LABEL, SCH_TEXT, SCH_SHEET_PIN, and SCH_FIELD.

Definition at line 452 of file eda_item.h.

452 { return false; }

Referenced by EDA_ITEM::Matches().

◆ IsResized()

bool EDA_ITEM::IsResized ( ) const
inlineinherited

Definition at line 174 of file eda_item.h.

174 { return m_flags & IS_RESIZED; }
#define IS_RESIZED
Item being resized.
Definition: eda_item.h:107
STATUS_FLAGS m_flags
Definition: eda_item.h:530

References IS_RESIZED, and EDA_ITEM::m_flags.

Referenced by KIGFX::SCH_PAINTER::setDeviceColors().

◆ IsSelected()

◆ 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 VIA, SCH_LABEL, DIMENSION_BASE, PAD, PCB_SHAPE, SCH_FIELD, SCH_LINE, FP_TEXT, FP_SHAPE, and PCB_TEXT.

Definition at line 232 of file eda_item.h.

233  {
234  if( aScanTypes[0] == SCH_LOCATE_ANY_T )
235  return true;
236 
237  for( const KICAD_T* p = aScanTypes; *p != EOT; ++p )
238  {
239  if( m_structType == *p )
240  return true;
241  }
242 
243  return false;
244  }
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:537

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(), FP_TEXT::IsType(), SCH_LINE::IsType(), SCH_FIELD::IsType(), PCB_SHAPE::IsType(), PAD::IsType(), DIMENSION_BASE::IsType(), SCH_LABEL::IsType(), 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 171 of file eda_item.h.

171 { return m_flags & IS_WIRE_IMAGE; }
#define IS_WIRE_IMAGE
Item to be drawn as wireframe while editing.
Definition: eda_item.h:110
STATUS_FLAGS m_flags
Definition: eda_item.h:530

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 344 of file eda_item.h.

348  {
349  for( auto it : aList )
350  {
351  if( static_cast<EDA_ITEM*>( it )->Visit( inspector, testData, scanTypes )
353  return SEARCH_RESULT::QUIT;
354  }
355 
357  }
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:107

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 363 of file eda_item.h.

365  {
366  for( auto it : aList )
367  {
368  if( static_cast<EDA_ITEM*>( it )->Visit( inspector, testData, scanTypes )
370  return SEARCH_RESULT::QUIT;
371  }
372 
374  }
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:107

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_COMPONENT, SCH_SHEET, SCH_TEXT, SCH_SHEET_PIN, SCH_FIELD, ZONE, SCH_PIN, SCH_MARKER, PCB_MARKER, FP_TEXT, and PCB_TEXT.

Definition at line 414 of file eda_item.h.

415  {
416  return false;
417  }

Referenced by SCH_EDITOR_CONTROL::HasMatch(), PCB_TEXT::Matches(), FP_TEXT::Matches(), PCB_MARKER::Matches(), SCH_MARKER::Matches(), SCH_PIN::Matches(), ZONE::Matches(), SCH_FIELD::Matches(), SCH_SHEET_PIN::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 132 of file eda_item.cpp.

133 {
134  wxString text = aText;
135  wxString searchText = aSearchData.GetFindString();
136 
137  // Don't match if searching for replaceable item and the item doesn't support text replace.
138  if( (aSearchData.GetFlags() & FR_SEARCH_REPLACE) && !IsReplaceable() )
139  return false;
140 
141  if( aSearchData.GetFlags() & wxFR_WHOLEWORD )
142  return aText.IsSameAs( searchText, aSearchData.GetFlags() & wxFR_MATCHCASE );
143 
144  if( aSearchData.GetFlags() & FR_MATCH_WILDCARD )
145  {
146  if( aSearchData.GetFlags() & wxFR_MATCHCASE )
147  return text.Matches( searchText );
148 
149  return text.MakeUpper().Matches( searchText.MakeUpper() );
150  }
151 
152  if( aSearchData.GetFlags() & wxFR_MATCHCASE )
153  return aText.Find( searchText ) != wxNOT_FOUND;
154 
155  return text.MakeUpper().Find( searchText.MakeUpper() ) != wxNOT_FOUND;
156 }
virtual bool IsReplaceable() const
Override this method in any derived object that supports test find and replace.
Definition: eda_item.h:452

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

◆ 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 925 of file lib_pin.cpp.

926 {
927  m_position.x -= aCenter.x;
928  m_position.x *= -1;
929  m_position.x += aCenter.x;
930 
931  if( m_orientation == PIN_RIGHT )
933  else if( m_orientation == PIN_LEFT )
935 }
int m_orientation
Definition: lib_pin.h:68
wxPoint m_position
Definition: lib_pin.h:66

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 938 of file lib_pin.cpp.

939 {
940  m_position.y -= aCenter.y;
941  m_position.y *= -1;
942  m_position.y += aCenter.y;
943 
944  if( m_orientation == PIN_UP )
946  else if( m_orientation == PIN_DOWN )
948 }
Definition: lib_pin.h:50
int m_orientation
Definition: lib_pin.h:68
wxPoint m_position
Definition: lib_pin.h:66

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 915 of file lib_pin.cpp.

916 {
917  if( m_position != aNewPosition )
918  {
919  m_position = aNewPosition;
920  SetModified();
921  }
922 }
void SetModified()
Definition: eda_item.cpp:79
wxPoint m_position
Definition: lib_pin.h:66

References m_position, and EDA_ITEM::SetModified().

Referenced by CalcEdit(), and SYMBOL_EDITOR_PIN_TOOL::CreatePin().

◆ 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 909 of file lib_pin.cpp.

910 {
911  m_position += aOffset;
912 }
wxPoint m_position
Definition: lib_pin.h:66

References m_position.

Referenced by SYMBOL_EDITOR_PIN_TOOL::RepeatPin().

◆ 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  int result = m_convert - aOther.m_convert;
102 
103  if( result != 0 )
104  return result < 0;
105 
106  result = m_unit - aOther.m_unit;
107 
108  if( result != 0 )
109  return result < 0;
110 
111  result = Type() - aOther.Type();
112 
113  if( result != 0 )
114  return result < 0;
115 
116  return ( compare( aOther ) < 0 );
117 }
int m_unit
Unit identification for multiple parts per package.
Definition: lib_item.h:314
int m_convert
Shape identification for alternate body styles.
Definition: lib_item.h:320
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:162

References LIB_ITEM::compare(), LIB_ITEM::m_convert, LIB_ITEM::m_unit, and EDA_ITEM::Type().

◆ 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 185 of file eda_item.cpp.

186 {
187  wxFAIL_MSG( wxString::Format( wxT( "Less than operator not defined for item type %s." ),
188  GetClass() ) );
189 
190  return false;
191 }
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 188 of file lib_item.h.

189  {
190  return *this == *aOther;
191  }

◆ 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 791 of file lib_pin.cpp.

792 {
793  int orient;
794  wxPoint end; // position of pin end starting at 0,0 according to its orientation, length = 1
795 
796  switch( m_orientation )
797  {
798  case PIN_UP: end.y = 1; break;
799  case PIN_DOWN: end.y = -1; break;
800  case PIN_LEFT: end.x = -1; break;
801  case PIN_RIGHT: end.x = 1; break;
802  }
803 
804  // = pos of end point, according to the component orientation
805  end = aTransform.TransformCoordinate( end );
806  orient = PIN_UP;
807 
808  if( end.x == 0 )
809  {
810  if( end.y > 0 )
811  orient = PIN_DOWN;
812  }
813  else
814  {
815  orient = PIN_RIGHT;
816 
817  if( end.x < 0 )
818  orient = PIN_LEFT;
819  }
820 
821  return orient;
822 }
Definition: lib_pin.h:50
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:68

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 
)
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 980 of file lib_pin.cpp.

982 {
983  if( ! IsVisible() )
984  return;
985 
986  int orient = PinDrawOrient( aTransform );
987  wxPoint pos = aTransform.TransformCoordinate( m_position ) + aPffset;
988 
989  PlotSymbol( aPlotter, pos, orient );
990  PlotPinTexts( aPlotter, pos, orient, GetParent()->GetPinNameOffset(),
991  GetParent()->ShowPinNumbers(), GetParent()->ShowPinNames() );
992 }
LIB_PART * GetParent() const
Definition: lib_item.h:149
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:791
wxPoint TransformCoordinate(const wxPoint &aPoint) const
Calculate a new coordinate according to the mirror/rotation transform.
Definition: transform.cpp:42
void PlotSymbol(PLOTTER *aPlotter, const wxPoint &aPosition, int aOrientation)
Definition: lib_pin.cpp:513
bool IsVisible() const
Definition: lib_pin.h:147
void PlotPinTexts(PLOTTER *aPlotter, wxPoint &aPinPos, int aPinOrient, int aTextInside, bool aDrawPinNum, bool aDrawPinName)
Plot the pin number and pin text info, given the pin line coordinates.
Definition: lib_pin.cpp:642
wxPoint m_position
Definition: lib_pin.h:66

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

◆ PlotPinTexts()

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

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 642 of file lib_pin.cpp.

644 {
645  if( m_name.IsEmpty() || m_name == wxT( "~" ) )
646  aDrawPinName = false;
647 
648  if( m_number.IsEmpty() )
649  aDrawPinNum = false;
650 
651  if( !aDrawPinNum && !aDrawPinName )
652  return;
653 
654  int x, y;
655  wxSize pinNameSize = wxSize( m_nameTextSize, m_nameTextSize );
656  wxSize pinNumSize = wxSize( m_numTextSize, m_numTextSize );
657 
658  int namePenWidth = std::max( Clamp_Text_PenSize( GetPenWidth(), m_nameTextSize, false ),
659  aPlotter->RenderSettings()->GetDefaultPenWidth() );
660  int numPenWidth = std::max( Clamp_Text_PenSize( GetPenWidth(), m_numTextSize, false ),
661  aPlotter->RenderSettings()->GetDefaultPenWidth() );
662 
663  int name_offset = Mils2iu( PIN_TEXT_MARGIN ) + namePenWidth;
664  int num_offset = Mils2iu( PIN_TEXT_MARGIN ) + numPenWidth;
665 
666  /* Get the num and name colors */
667  COLOR4D nameColor = aPlotter->RenderSettings()->GetLayerColor( LAYER_PINNAM );
668  COLOR4D numColor = aPlotter->RenderSettings()->GetLayerColor( LAYER_PINNUM );
669 
670  int x1 = aPinPos.x;
671  int y1 = aPinPos.y;
672 
673  switch( aPinOrient )
674  {
675  case PIN_UP: y1 -= m_length; break;
676  case PIN_DOWN: y1 += m_length; break;
677  case PIN_LEFT: x1 -= m_length; break;
678  case PIN_RIGHT: x1 += m_length; break;
679  }
680 
681  /* Draw the text inside, but the pin numbers outside. */
682  if( aTextInside )
683  {
684  if( ( aPinOrient == PIN_LEFT) || ( aPinOrient == PIN_RIGHT) ) /* Its an horizontal line. */
685  {
686  if( aDrawPinName )
687  {
688  EDA_TEXT_HJUSTIFY_T hjustify;
689  if( aPinOrient == PIN_RIGHT )
690  {
691  x = x1 + aTextInside;
692  hjustify = GR_TEXT_HJUSTIFY_LEFT;
693  }
694  else // orient == PIN_LEFT
695  {
696  x = x1 - aTextInside;
697  hjustify = GR_TEXT_HJUSTIFY_RIGHT;
698  }
699 
700  aPlotter->Text( wxPoint( x, y1 ), nameColor, m_name, TEXT_ANGLE_HORIZ, pinNameSize,
701  hjustify, GR_TEXT_VJUSTIFY_CENTER, namePenWidth,
702  false, false );
703  }
704  if( aDrawPinNum )
705  {
706  aPlotter->Text( wxPoint( ( x1 + aPinPos.x) / 2, y1 - num_offset ), numColor,
708  GR_TEXT_VJUSTIFY_BOTTOM, numPenWidth, false, false );
709  }
710  }
711  else /* Its a vertical line. */
712  {
713  if( aPinOrient == PIN_DOWN )
714  {
715  y = y1 + aTextInside;
716 
717  if( aDrawPinName )
718  aPlotter->Text( wxPoint( x1, y ), nameColor, m_name, TEXT_ANGLE_VERT,
720  namePenWidth, false, false );
721 
722  if( aDrawPinNum )
723  {
724  aPlotter->Text( wxPoint( x1 - num_offset, ( y1 + aPinPos.y) / 2 ), numColor,
726  GR_TEXT_VJUSTIFY_BOTTOM, numPenWidth, false, false );
727  }
728  }
729  else /* PIN_UP */
730  {
731  y = y1 - aTextInside;
732 
733  if( aDrawPinName )
734  {
735  aPlotter->Text( wxPoint( x1, y ), nameColor, m_name, TEXT_ANGLE_VERT,
737  namePenWidth, false, false );
738  }
739 
740  if( aDrawPinNum )
741  {
742  aPlotter->Text( wxPoint( x1 - num_offset, ( y1 + aPinPos.y) / 2 ), numColor,
744  GR_TEXT_VJUSTIFY_BOTTOM, numPenWidth, false, false );
745  }
746  }
747  }
748  }
749  else /* Draw num & text pin outside */
750  {
751  if(( aPinOrient == PIN_LEFT) || ( aPinOrient == PIN_RIGHT) )
752  {
753  /* Its an horizontal line. */
754  if( aDrawPinName )
755  {
756  x = ( x1 + aPinPos.x) / 2;
757  aPlotter->Text( wxPoint( x, y1 - name_offset ), nameColor, m_name,
759  GR_TEXT_VJUSTIFY_BOTTOM, namePenWidth, false, false );
760  }
761 
762  if( aDrawPinNum )
763  {
764  x = ( x1 + aPinPos.x ) / 2;
765  aPlotter->Text( wxPoint( x, y1 + num_offset ), numColor, m_number,
767  GR_TEXT_VJUSTIFY_TOP, numPenWidth, false, false );
768  }
769  }
770  else /* Its a vertical line. */
771  {
772  if( aDrawPinName )
773  {
774  y = ( y1 + aPinPos.y ) / 2;
775  aPlotter->Text( wxPoint( x1 - name_offset, y ), nameColor, m_name,
777  GR_TEXT_VJUSTIFY_BOTTOM, namePenWidth, false, false );
778  }
779 
780  if( aDrawPinNum )
781  {
782  aPlotter->Text( wxPoint( x1 + num_offset, ( y1 + aPinPos.y ) / 2 ), numColor,
784  GR_TEXT_VJUSTIFY_TOP, numPenWidth, false, false );
785  }
786  }
787  }
788 }
#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:75
EDA_TEXT_HJUSTIFY_T
Definition: eda_text.h:61
int m_numTextSize
Definition: lib_pin.h:74
const COLOR4D & GetLayerColor(int aLayer) const
Return the color used to draw a layer.
wxString m_name
Definition: lib_pin.h:72
Definition: lib_pin.h:50
int m_length
Definition: lib_pin.h:67
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=NULL)
Draws text with the plotter.
Definition: gr_text.cpp:219
int Clamp_Text_PenSize(int aPenSize, int aSize, bool aBold)
Function Clamp_Text_PenSize Don't allow text to become cluttered up in its own fatness.
Definition: gr_text.cpp:69
wxString m_number
Definition: lib_pin.h:73
int GetPenWidth() const override
Definition: lib_pin.cpp:165
RENDER_SETTINGS * RenderSettings()
Definition: plotter.h:155
#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:98

References Clamp_Text_PenSize(), KIGFX::RENDER_SETTINGS::GetDefaultPenWidth(), KIGFX::RENDER_SETTINGS::GetLayerColor(), GetPenWidth(), 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_name, m_nameTextSize, m_number, m_numTextSize, 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 
)

Definition at line 513 of file lib_pin.cpp.

514 {
515  int MapX1, MapY1, x1, y1;
517  int penWidth = std::max( GetPenWidth(), aPlotter->RenderSettings()->GetDefaultPenWidth() );
518 
519  aPlotter->SetColor( color );
520  aPlotter->SetCurrentLineWidth( penWidth );
521 
522  MapX1 = MapY1 = 0;
523  x1 = aPosition.x; y1 = aPosition.y;
524 
525  switch( aOrientation )
526  {
527  case PIN_UP: y1 = aPosition.y - m_length; MapY1 = 1; break;
528  case PIN_DOWN: y1 = aPosition.y + m_length; MapY1 = -1; break;
529  case PIN_LEFT: x1 = aPosition.x - m_length; MapX1 = 1; break;
530  case PIN_RIGHT: x1 = aPosition.x + m_length; MapX1 = -1; break;
531  }
532 
534  {
535  const int radius = externalPinDecoSize( aPlotter->RenderSettings(), *this );
536  aPlotter->Circle( wxPoint( MapX1 * radius + x1, MapY1 * radius + y1 ), radius * 2,
537  FILL_TYPE::NO_FILL, penWidth );
538 
539  aPlotter->MoveTo( wxPoint( MapX1 * radius * 2 + x1, MapY1 * radius * 2 + y1 ) );
540  aPlotter->FinishTo( aPosition );
541  }
543  {
544  const int deco_size = internalPinDecoSize( aPlotter->RenderSettings(), *this );
545  if( MapY1 == 0 ) /* MapX1 = +- 1 */
546  {
547  aPlotter->MoveTo( wxPoint( x1, y1 + deco_size ) );
548  aPlotter->LineTo( wxPoint( x1 + MapX1 * deco_size * 2, y1 ) );
549  aPlotter->FinishTo( wxPoint( x1, y1 - deco_size ) );
550  }
551  else /* MapX1 = 0 */
552  {
553  aPlotter->MoveTo( wxPoint( x1 + deco_size, y1 ) );
554  aPlotter->LineTo( wxPoint( x1, y1 + MapY1 * deco_size * 2 ) );
555  aPlotter->FinishTo( wxPoint( x1 - deco_size, y1 ) );
556  }
557 
558  aPlotter->MoveTo( wxPoint( MapX1 * deco_size * 2 + x1, MapY1 * deco_size * 2 + y1 ) );
559  aPlotter->FinishTo( aPosition );
560  }
561  else
562  {
563  aPlotter->MoveTo( wxPoint( x1, y1 ) );
564  aPlotter->FinishTo( aPosition );
565  }
566 
570  {
571  const int deco_size = internalPinDecoSize( aPlotter->RenderSettings(), *this );
572  if( MapY1 == 0 ) /* MapX1 = +- 1 */
573  {
574  aPlotter->MoveTo( wxPoint( x1, y1 + deco_size ) );
575  aPlotter->LineTo( wxPoint( x1 - MapX1 * deco_size * 2, y1 ) );
576  aPlotter->FinishTo( wxPoint( x1, y1 - deco_size ) );
577  }
578  else /* MapX1 = 0 */
579  {
580  aPlotter->MoveTo( wxPoint( x1 + deco_size, y1 ) );
581  aPlotter->LineTo( wxPoint( x1, y1 - MapY1 * deco_size * 2 ) );
582  aPlotter->FinishTo( wxPoint( x1 - deco_size, y1 ) );
583  }
584  }
585 
587  || m_shape == GRAPHIC_PINSHAPE::CLOCK_LOW ) /* IEEE symbol "Active Low Input" */
588  {
589  const int deco_size = externalPinDecoSize( aPlotter->RenderSettings(), *this );
590 
591  if( MapY1 == 0 ) /* MapX1 = +- 1 */
592  {
593  aPlotter->MoveTo( wxPoint( x1 + MapX1 * deco_size * 2, y1 ) );
594  aPlotter->LineTo( wxPoint( x1 + MapX1 * deco_size * 2, y1 - deco_size * 2 ) );
595  aPlotter->FinishTo( wxPoint( x1, y1 ) );
596  }
597  else /* MapX1 = 0 */
598  {
599  aPlotter->MoveTo( wxPoint( x1, y1 + MapY1 * deco_size * 2 ) );
600  aPlotter->LineTo( wxPoint( x1 - deco_size * 2, y1 + MapY1 * deco_size * 2 ) );
601  aPlotter->FinishTo( wxPoint( x1, y1 ) );
602  }
603  }
604 
605  if( m_shape == GRAPHIC_PINSHAPE::OUTPUT_LOW ) /* IEEE symbol "Active Low Output" */
606  {
607  const int symbol_size = externalPinDecoSize( aPlotter->RenderSettings(), *this );
608 
609  if( MapY1 == 0 ) /* MapX1 = +- 1 */
610  {
611  aPlotter->MoveTo( wxPoint( x1, y1 - symbol_size * 2 ) );
612  aPlotter->FinishTo( wxPoint( x1 + MapX1 * symbol_size * 2, y1 ) );
613  }
614  else /* MapX1 = 0 */
615  {
616  aPlotter->MoveTo( wxPoint( x1 - symbol_size * 2, y1 ) );
617  aPlotter->FinishTo( wxPoint( x1, y1 + MapY1 * symbol_size * 2 ) );
618  }
619  }
620  else if( m_shape == GRAPHIC_PINSHAPE::NONLOGIC ) /* NonLogic pin symbol */
621  {
622  const int deco_size = externalPinDecoSize( aPlotter->RenderSettings(), *this );
623  aPlotter->MoveTo( wxPoint( x1 - (MapX1 + MapY1) * deco_size, y1 - (MapY1 - MapX1) * deco_size ) );
624  aPlotter->FinishTo( wxPoint( x1 + (MapX1 + MapY1) * deco_size, y1 + (MapY1 - MapX1) * deco_size ) );
625  aPlotter->MoveTo( wxPoint( x1 - (MapX1 - MapY1) * deco_size, y1 - (MapY1 + MapX1) * deco_size ) );
626  aPlotter->FinishTo( wxPoint( x1 + (MapX1 - MapY1) * deco_size, y1 + (MapY1 + MapX1) * deco_size ) );
627  }
628 
629  if( m_type == ELECTRICAL_PINTYPE::PT_NC ) // Draw a N.C. symbol
630  {
631  const int deco_size = TARGET_PIN_RADIUS;
632  const int ex1 = aPosition.x;
633  const int ey1 = aPosition.y;
634  aPlotter->MoveTo( wxPoint( ex1 - deco_size, ey1 - deco_size ) );
635  aPlotter->FinishTo( wxPoint( ex1 + deco_size, ey1 + deco_size ) );
636  aPlotter->MoveTo( wxPoint( ex1 + deco_size, ey1 - deco_size ) );
637  aPlotter->FinishTo( wxPoint( ex1 - deco_size, ey1 + deco_size ) );
638  }
639 }
void FinishTo(const wxPoint &pos)
Definition: plotter.h:267
GRAPHIC_PINSHAPE m_shape
Definition: lib_pin.h:69
virtual void SetColor(COLOR4D color)=0
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:50
int m_length
Definition: lib_pin.h:67
void LineTo(const wxPoint &pos)
Definition: plotter.h:262
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
void MoveTo(const wxPoint &pos)
Definition: plotter.h:257
RENDER_SETTINGS * RenderSettings()
Definition: plotter.h:155
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:38
ELECTRICAL_PINTYPE m_type
Definition: lib_pin.h:70
int GetDefaultPenWidth() const
not connected (must be left open)
virtual void SetCurrentLineWidth(int width, void *aData=NULL)=0
Set the line width for the next drawing.
A color representation with 4 components: red, green, blue, alpha.
Definition: color4d.h:98

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 component for pins.
aTransformTransform Matrix (rotation, mirror ..)

Definition at line 137 of file lib_item.cpp.

139 {
140  print( aSettings, aOffset, aData, aTransform );
141 }
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 171 of file lib_pin.cpp.

173 {
174  PART_DRAW_OPTIONS* opts = (PART_DRAW_OPTIONS*) aData;
175  bool drawHiddenFields = opts ? opts->draw_hidden_fields : false;
176  bool showPinType = opts ? opts->show_elec_type : false;
177 
178  LIB_PART* part = GetParent();
179 
180  /* Calculate pin orient taking in account the component orientation. */
181  int orient = PinDrawOrient( aTransform );
182 
183  /* Calculate the pin position */
184  wxPoint pos1 = aTransform.TransformCoordinate( m_position ) + aOffset;
185 
186  if( IsVisible() || drawHiddenFields )
187  {
188  printPinSymbol( aSettings, pos1, orient );
189 
190  printPinTexts( aSettings, pos1, orient, part->GetPinNameOffset(), part->ShowPinNumbers(),
191  part->ShowPinNames() );
192 
193  if( showPinType )
194  printPinElectricalTypeName( aSettings, pos1, orient );
195  }
196 }
int GetPinNameOffset()
Definition: lib_symbol.h:554
LIB_PART * GetParent() const
Definition: lib_item.h:149
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:310
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:791
bool draw_hidden_fields
Definition: lib_symbol.h:66
wxPoint TransformCoordinate(const wxPoint &aPoint) const
Calculate a new coordinate according to the mirror/rotation transform.
Definition: transform.cpp:42
bool ShowPinNames()
Definition: lib_symbol.h:562
void printPinSymbol(const RENDER_SETTINGS *aSettings, const wxPoint &aPos, int aOrientation)
Print the pin symbol without text.
Definition: lib_pin.cpp:199
bool ShowPinNumbers()
Definition: lib_symbol.h:570
Define a library symbol object.
Definition: lib_symbol.h:93
bool IsVisible() const
Definition: lib_pin.h:147
wxPoint m_position
Definition: lib_pin.h:66
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:460

References PART_DRAW_OPTIONS::draw_hidden_fields, LIB_ITEM::GetParent(), LIB_PART::GetPinNameOffset(), IsVisible(), m_position, PinDrawOrient(), printPinElectricalTypeName(), printPinSymbol(), printPinTexts(), PART_DRAW_OPTIONS::show_elec_type, LIB_PART::ShowPinNames(), LIB_PART::ShowPinNumbers(), 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 460 of file lib_pin.cpp.

462 {
463  wxDC* DC = aSettings->GetPrintDC();
464  wxString typeName = GetElectricalTypeName();
465 
466  // Use a reasonable (small) size to draw the text
467  int textSize = ( m_nameTextSize * 3 ) / 4;
468 
469  #define ETXT_MAX_SIZE Millimeter2iu( 0.7 )
470 
471  if( textSize > ETXT_MAX_SIZE )
472  textSize = ETXT_MAX_SIZE;
473 
474  // Use a reasonable pen size to draw the text
475  int pensize = textSize/6;
476 
477  // Get a suitable color
479 
480  wxPoint txtpos = aPosition;
481  int offset = Millimeter2iu( 0.4 );
483  int orient = TEXT_ANGLE_HORIZ;
484 
485  switch( aOrientation )
486  {
487  case PIN_UP:
488  txtpos.y += offset;
489  orient = TEXT_ANGLE_VERT;
490  hjustify = GR_TEXT_HJUSTIFY_RIGHT;
491  break;
492 
493  case PIN_DOWN:
494  txtpos.y -= offset;
495  orient = TEXT_ANGLE_VERT;
496  break;
497 
498  case PIN_LEFT:
499  txtpos.x += offset;
500  break;
501 
502  case PIN_RIGHT:
503  txtpos.x -= offset;
504  hjustify = GR_TEXT_HJUSTIFY_RIGHT;
505  break;
506  }
507 
508  GRText( DC, txtpos, color, typeName, orient, wxSize( textSize, textSize ), hjustify,
509  GR_TEXT_VJUSTIFY_CENTER, pensize, false, false, 0 );
510 }
#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:75
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:50
wxString const GetElectricalTypeName() const
Definition: lib_pin.h:142
wxDC * GetPrintDC() const
bool IsVisible() const
Definition: lib_pin.h:147
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)
Function GRText Draw a graphic text (like footprint texts)
Definition: gr_text.cpp:131
#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:98

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 199 of file lib_pin.cpp.

200 {
201  wxDC* DC = aSettings->GetPrintDC();
202  int MapX1, MapY1, x1, y1;
203  int width = std::max( GetPenWidth(), aSettings->GetDefaultPenWidth() );
204  int posX = aPos.x, posY = aPos.y, len = m_length;
206 
207  MapX1 = MapY1 = 0;
208  x1 = posX;
209  y1 = posY;
210 
211  switch( aOrient )
212  {
213  case PIN_UP: y1 = posY - len; MapY1 = 1; break;
214  case PIN_DOWN: y1 = posY + len; MapY1 = -1; break;
215  case PIN_LEFT: x1 = posX - len; MapX1 = 1; break;
216  case PIN_RIGHT: x1 = posX + len; MapX1 = -1; break;
217  }
218 
220  {
221  const int radius = externalPinDecoSize( aSettings, *this );
222  GRCircle( nullptr, DC, MapX1 * radius + x1, MapY1 * radius + y1, radius, width, color );
223 
224  GRMoveTo( MapX1 * radius * 2 + x1, MapY1 * radius * 2 + y1 );
225  GRLineTo( nullptr, DC, posX, posY, width, color );
226  }
227  else
228  {
229  GRMoveTo( x1, y1 );
230  GRLineTo( nullptr, DC, posX, posY, width, color );
231  }
232 
233  // Draw the clock shape (>)inside the symbol
238  {
239  const int clock_size = internalPinDecoSize( aSettings, *this );
240  if( MapY1 == 0 ) /* MapX1 = +- 1 */
241  {
242  GRMoveTo( x1, y1 + clock_size );
243  GRLineTo( nullptr, DC, x1 - MapX1 * clock_size * 2, y1, width, color );
244  GRLineTo( nullptr, DC, x1, y1 - clock_size, width, color );
245  }
246  else /* MapX1 = 0 */
247  {
248  GRMoveTo( x1 + clock_size, y1 );
249  GRLineTo( nullptr, DC, x1, y1 - MapY1 * clock_size * 2, width, color );
250  GRLineTo( nullptr, DC, x1 - clock_size, y1, width, color );
251  }
252  }
253 
254  // Draw the active low (or H to L active transition)
258  {
259  const int deco_size = externalPinDecoSize( aSettings, *this );
260  if( MapY1 == 0 ) /* MapX1 = +- 1 */
261  {
262  GRMoveTo( x1 + MapX1 * deco_size * 2, y1 );
263  GRLineTo( nullptr, DC, x1 + MapX1 * deco_size * 2, y1 - deco_size * 2, width, color );
264  GRLineTo( nullptr, DC, x1, y1, width, color );
265  }
266  else /* MapX1 = 0 */
267  {
268  GRMoveTo( x1, y1 + MapY1 * deco_size * 2 );
269  GRLineTo( nullptr, DC, x1 - deco_size * 2, y1 + MapY1 * deco_size * 2, width, color );
270  GRLineTo( nullptr, DC, x1, y1, width, color );
271  }
272  }
273 
274  if( m_shape == GRAPHIC_PINSHAPE::OUTPUT_LOW ) /* IEEE symbol "Active Low Output" */
275  {
276  const int deco_size = externalPinDecoSize( aSettings, *this );
277  if( MapY1 == 0 ) /* MapX1 = +- 1 */
278  {
279  GRMoveTo( x1, y1 - deco_size * 2 );
280  GRLineTo( nullptr, DC, x1 + MapX1 * deco_size * 2, y1, width, color );
281  }
282  else /* MapX1 = 0 */
283  {
284  GRMoveTo( x1 - deco_size * 2, y1 );
285  GRLineTo( nullptr, DC, x1, y1 + MapY1 * deco_size * 2, width, color );
286  }
287  }
288  else if( m_shape == GRAPHIC_PINSHAPE::NONLOGIC ) /* NonLogic pin symbol */
289  {
290  const int deco_size = externalPinDecoSize( aSettings, *this );
291  GRMoveTo( x1 - (MapX1 + MapY1) * deco_size, y1 - (MapY1 - MapX1) * deco_size );
292  GRLineTo( nullptr, DC, x1 + (MapX1 + MapY1) * deco_size,
293  y1 + ( MapY1 - MapX1 ) * deco_size, width, color );
294  GRMoveTo( x1 - (MapX1 - MapY1) * deco_size, y1 - (MapY1 + MapX1) * deco_size );
295  GRLineTo( nullptr, DC, x1 + (MapX1 - MapY1) * deco_size,
296  y1 + ( MapY1 + MapX1 ) * deco_size, width, color );
297  }
298 
299  if( m_type == ELECTRICAL_PINTYPE::PT_NC ) // Draw a N.C. symbol
300  {
301  const int deco_size = TARGET_PIN_RADIUS;
302  GRLine( nullptr, DC, posX - deco_size, posY - deco_size, posX + deco_size,
303  posY + deco_size, width, color );
304  GRLine( nullptr, DC, posX + deco_size, posY - deco_size, posX - deco_size,
305  posY + deco_size, width, color );
306  }
307 }
GRAPHIC_PINSHAPE m_shape
Definition: lib_pin.h:69
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:50
int m_length
Definition: lib_pin.h:67
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:147
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:38
ELECTRICAL_PINTYPE m_type
Definition: lib_pin.h:70
int GetDefaultPenWidth() const
not connected (must be left open)
A color representation with 4 components: red, green, blue, alpha.
Definition: color4d.h:98

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 310 of file lib_pin.cpp.

312 {
313  if( !aDrawPinName && !aDrawPinNum )
314  return;
315 
316  int x, y;
317  wxDC* DC = aSettings->GetPrintDC();
318  wxSize PinNameSize( m_nameTextSize, m_nameTextSize );
319  wxSize PinNumSize( m_numTextSize, m_numTextSize );
320 
321  int namePenWidth = std::max( Clamp_Text_PenSize( GetPenWidth(), m_nameTextSize, false ),
322  aSettings->GetDefaultPenWidth() );
323  int numPenWidth = std::max( Clamp_Text_PenSize( GetPenWidth(), m_numTextSize, false ),
324  aSettings->GetDefaultPenWidth() );
325 
326  int name_offset = Mils2iu( PIN_TEXT_MARGIN ) + namePenWidth;
327  int num_offset = Mils2iu( PIN_TEXT_MARGIN ) + numPenWidth;
328 
329  /* Get the num and name colors */
330  COLOR4D NameColor = aSettings->GetLayerColor( IsVisible() ? LAYER_PINNAM : LAYER_HIDDEN );
331  COLOR4D NumColor = aSettings->GetLayerColor( IsVisible() ? LAYER_PINNUM : LAYER_HIDDEN );
332 
333  int x1 = aPinPos.x;
334  int y1 = aPinPos.y;
335 
336  switch( aPinOrient )
337  {
338  case PIN_UP: y1 -= m_length; break;
339  case PIN_DOWN: y1 += m_length; break;
340  case PIN_LEFT: x1 -= m_length; break;
341  case PIN_RIGHT: x1 += m_length; break;
342  }
343 
344  if( m_name.IsEmpty() )
345  aDrawPinName = false;
346 
347  if( aTextInside ) // Draw the text inside, but the pin numbers outside.
348  {
349  if(( aPinOrient == PIN_LEFT) || ( aPinOrient == PIN_RIGHT) )
350  {
351  // It is an horizontal line
352  if( aDrawPinName )
353  {
354  if( aPinOrient == PIN_RIGHT )
355  {
356  x = x1 + aTextInside;
357  GRText( DC, wxPoint( x, y1 ), NameColor, m_name, TEXT_ANGLE_HORIZ,
359  namePenWidth, false, false );
360  }
361  else // Orient == PIN_LEFT
362  {
363  x = x1 - aTextInside;
364  GRText( DC, wxPoint( x, y1 ), NameColor, m_name, TEXT_ANGLE_HORIZ,
366  namePenWidth, false, false );
367  }
368  }
369 
370  if( aDrawPinNum )
371  {
372  GRText( DC, wxPoint(( x1 + aPinPos.x) / 2, y1 - num_offset ), NumColor, m_number,
374  GR_TEXT_VJUSTIFY_BOTTOM, numPenWidth, false, false );
375  }
376  }
377  else /* Its a vertical line. */
378  {
379  // Text is drawn from bottom to top (i.e. to negative value for Y axis)
380  if( aPinOrient == PIN_DOWN )
381  {
382  y = y1 + aTextInside;
383 
384  if( aDrawPinName )
385  {
386  GRText( DC, wxPoint( x1, y ), NameColor, m_name, TEXT_ANGLE_VERT, PinNameSize,
387  GR_TEXT_HJUSTIFY_RIGHT, GR_TEXT_VJUSTIFY_CENTER, namePenWidth, false,
388  false );
389  }
390 
391  if( aDrawPinNum )
392  {
393  GRText( DC, wxPoint( x1 - num_offset, ( y1 + aPinPos.y) / 2 ), NumColor,
395  GR_TEXT_VJUSTIFY_BOTTOM, numPenWidth, false, false );
396  }
397  }
398  else /* PIN_UP */
399  {
400  y = y1 - aTextInside;
401 
402  if( aDrawPinName )
403  {
404  GRText( DC, wxPoint( x1, y ), NameColor, m_name, TEXT_ANGLE_VERT, PinNameSize,
405  GR_TEXT_HJUSTIFY_LEFT, GR_TEXT_VJUSTIFY_CENTER, namePenWidth, false,
406  false );
407  }
408 
409  if( aDrawPinNum )
410  {
411  GRText( DC, wxPoint( x1 - num_offset, ( y1 + aPinPos.y) / 2 ), NumColor,
413  GR_TEXT_VJUSTIFY_BOTTOM, numPenWidth, false, false );
414  }
415  }
416  }
417  }
418  else /**** Draw num & text pin outside ****/
419  {
420  if(( aPinOrient == PIN_LEFT) || ( aPinOrient == PIN_RIGHT) )
421  {
422  /* Its an horizontal line. */
423  if( aDrawPinName )
424  {
425  x = ( x1 + aPinPos.x) / 2;
426  GRText( DC, wxPoint( x, y1 - name_offset ), NameColor, m_name, TEXT_ANGLE_HORIZ,
428  namePenWidth, false, false );
429  }
430  if( aDrawPinNum )
431  {
432  x = ( x1 + aPinPos.x) / 2;
433  GRText( DC, wxPoint( x, y1 + num_offset ), NumColor, m_number, TEXT_ANGLE_HORIZ,
434  PinNumSize, GR_TEXT_HJUSTIFY_CENTER, GR_TEXT_VJUSTIFY_TOP, numPenWidth,
435  false, false );
436  }
437  }
438  else /* Its a vertical line. */
439  {
440  if( aDrawPinName )
441  {
442  y = ( y1 + aPinPos.y) / 2;
443  GRText( DC, wxPoint( x1 - name_offset, y ), NameColor, m_name, TEXT_ANGLE_VERT,
445  namePenWidth, false, false );
446  }
447 
448  if( aDrawPinNum )
449  {
450  GRText( DC, wxPoint( x1 + num_offset, ( y1 + aPinPos.y) / 2 ), NumColor, m_number,
452  numPenWidth, false, false );
453  }
454  }
455  }
456 }
#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:75
int m_numTextSize
Definition: lib_pin.h:74
const COLOR4D & GetLayerColor(int aLayer) const
Return the color used to draw a layer.
wxString m_name
Definition: lib_pin.h:72
Definition: lib_pin.h:50
int m_length
Definition: lib_pin.h:67
int Clamp_Text_PenSize(int aPenSize, int aSize, bool aBold)
Function Clamp_Text_PenSize Don't allow text to become cluttered up in its own fatness.
Definition: gr_text.cpp:69
wxString m_number
Definition: lib_pin.h:73
int GetPenWidth() const override
Definition: lib_pin.cpp:165
wxDC * GetPrintDC() const
bool IsVisible() const
Definition: lib_pin.h:147
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)
Function GRText Draw a graphic text (like footprint texts)
Definition: gr_text.cpp:131
#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:98

References Clamp_Text_PenSize(), KIGFX::RENDER_SETTINGS::GetDefaultPenWidth(), KIGFX::RENDER_SETTINGS::GetLayerColor(), GetPenWidth(), KIGFX::RENDER_SETTINGS::GetPrintDC(), 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_name, m_nameTextSize, m_number, m_numTextSize, 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 159 of file eda_item.cpp.

160 {
161  wxString searchString = (aSearchData.GetFlags() & wxFR_MATCHCASE) ? aText : aText.Upper();
162 
163  int result = searchString.Find( (aSearchData.GetFlags() & wxFR_MATCHCASE) ?
164  aSearchData.GetFindString() :
165  aSearchData.GetFindString().Upper() );
166 
167  if( result == wxNOT_FOUND )
168  return false;
169 
170  wxString prefix = aText.Left( result );
171  wxString suffix;
172 
173  if( aSearchData.GetFindString().length() + result < aText.length() )
174  suffix = aText.Right( aText.length() - ( aSearchData.GetFindString().length() + result ) );
175 
176  wxLogTrace( traceFindReplace, wxT( "Replacing '%s', prefix '%s', replace '%s', suffix '%s'." ),
177  aText, prefix, aSearchData.GetReplaceString(), suffix );
178 
179  aText = prefix + aSearchData.GetReplaceString() + suffix;
180 
181  return true;
182 }
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_SHEET_PIN, SCH_FIELD, and SCH_PIN.

Definition at line 441 of file eda_item.h.

442  {
443  return false;
444  }

◆ 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 951 of file lib_pin.cpp.

952 {
953  int rot_angle = aRotateCCW ? -900 : 900;
954 
955  RotatePoint( &m_position, aCenter, rot_angle );
956 
957  if( aRotateCCW )
958  {
959  switch( m_orientation )
960  {
961  case PIN_RIGHT: m_orientation = PIN_UP; break;
962  case PIN_UP: m_orientation = PIN_LEFT; break;
963  case PIN_LEFT: m_orientation = PIN_DOWN; break;
964  case PIN_DOWN: m_orientation = PIN_RIGHT; break;
965  }
966  }
967  else
968  {
969  switch( m_orientation )
970  {
971  case PIN_RIGHT: m_orientation = PIN_DOWN; break;
972  case PIN_UP: m_orientation = PIN_RIGHT; break;
973  case PIN_LEFT: m_orientation = PIN_UP; break;
974  case PIN_DOWN: m_orientation = PIN_LEFT; break;
975  }
976  }
977 }
Definition: lib_pin.h:50
void RotatePoint(int *pX, int *pY, double angle)
Definition: trigo.cpp:228
int m_orientation
Definition: lib_pin.h:68
wxPoint m_position
Definition: lib_pin.h:66

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 40 of file inspectable.h.

41  {
43  TYPE_ID thisType = TYPE_HASH( *this );
44  void* object = propMgr.TypeCast( this, thisType, aProperty->OwnerHash() );
45 
46  if( object )
47  aProperty->setter( object, aValue );
48 
49  return object != nullptr;
50  }
static PROPERTY_MANAGER & Instance()
Definition: property_mgr.h:66
#define TYPE_HASH(x)
Definition: property.h:57
size_t TYPE_ID
Unique type identifier.
Definition: property_mgr.h:43
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:63
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().

◆ Set() [2/3]

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

Definition at line 53 of file inspectable.h.

54  {
56  TYPE_ID thisType = TYPE_HASH( *this );
57  void* object = propMgr.TypeCast( this, thisType, aProperty->OwnerHash() );
58 
59  if( object )
60  aProperty->set<T>( object, aValue );
61 
62  return object != nullptr;
63  }
static PROPERTY_MANAGER & Instance()
Definition: property_mgr.h:66
#define TYPE_HASH(x)
Definition: property.h:57
size_t TYPE_ID
Unique type identifier.
Definition: property_mgr.h:43
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:63
void set(void *aObject, T aValue)
Definition: property.h:259
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 66 of file inspectable.h.

67  {
69  TYPE_ID thisType = TYPE_HASH( *this );
70  PROPERTY_BASE* prop = propMgr.GetProperty( thisType, aProperty );
71  void* object = nullptr;
72 
73  if( prop )
74  {
75  object = propMgr.TypeCast( this, thisType, prop->OwnerHash() );
76 
77  if( object )
78  prop->set<T>( object, aValue );
79  }
80 
81  return object != nullptr;
82  }
static PROPERTY_MANAGER & Instance()
Definition: property_mgr.h:66
#define TYPE_HASH(x)
Definition: property.h:57
size_t TYPE_ID
Unique type identifier.
Definition: property_mgr.h:43
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:63
void set(void *aObject, T aValue)
Definition: property.h:259
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()

void EDA_ITEM::SetBrightened ( )
inlineinherited

◆ SetConvert()

◆ SetFillMode()

◆ SetFlags()

void EDA_ITEM::SetFlags ( STATUS_FLAGS  aMask)
inlineinherited

Definition at line 202 of file eda_item.h.

202 { m_flags |= aMask; }
STATUS_FLAGS m_flags
Definition: eda_item.h:530

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(), TRACKS_CLEANER::cleanup(), GRAPHICS_CLEANER::cleanupSegments(), ConvertOutlineToPolygon(), SCH_EDIT_FRAME::ConvertPart(), SCH_DRAWING_TOOLS::createNewText(), SYMBOL_EDITOR_PIN_TOOL::CreatePin(), 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(), SCH_EDIT_TOOL::Duplicate(), PCB_SELECTION_TOOL::EnterGroup(), 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::ParseLabel(), 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(), SCH_DRAWING_TOOLS::PlaceComponent(), BOARD_EDITOR_CONTROL::PlaceFootprint(), SCH_DRAWING_TOOLS::PlaceImage(), 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_EDITOR_PIN_TOOL::RepeatPin(), 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_TEXT::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 253 of file eda_item.h.

253 { m_forceVisible = aEnable; }
bool m_forceVisible
Definition: eda_item.h:529

References EDA_ITEM::m_forceVisible.

Referenced by SCH_EDITOR_CONTROL::UpdateFind().

◆ SetLength()

◆ SetModified()

void EDA_ITEM::SetModified ( )
inherited

Definition at line 79 of file eda_item.cpp.

80 {
82 
83  // If this a child object, then the parent modification state also needs to be set.
84  if( m_parent )
86 }
void SetModified()
Definition: eda_item.cpp:79
EDA_ITEM * m_parent
Linked list: Link (parent struct)
Definition: eda_item.h:528
#define IS_CHANGED
Item was edited, and modified.
Definition: eda_item.h:102
void SetFlags(STATUS_FLAGS aMask)
Definition: eda_item.h:202

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_COMPONENT::Move(), SCH_LINE::MoveEnd(), SCH_LINE::MoveStart(), MoveTo(), PCB_EDIT_FRAME::OpenProjectFiles(), SCH_ALTIUM_PLUGIN::Parse(), ALTIUM_PCB::Parse(), LIB_PART::RemoveDrawItem(), SCH_COMPONENT::SetConvert(), SCH_COMPONENT::SetLibId(), EDA_ITEM::SetModified(), LIB_FIELD::SetName(), SCH_COMPONENT::SetTransform(), and SCH_COMPONENT::SetUnit().

◆ SetName()

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

◆ SetNameTextSize()

void LIB_PIN::SetNameTextSize ( int  aSize)
inline

◆ SetNumber()

◆ SetNumberTextSize()

void LIB_PIN::SetNumberTextSize ( int  aSize)
inline

◆ SetOrientation()

◆ SetParent()

virtual void EDA_ITEM::SetParent ( EDA_ITEM aParent)
inlinevirtualinherited

Reimplemented in DIMENSION_BASE.

Definition at line 165 of file eda_item.h.

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

References EDA_ITEM::m_parent.

Referenced by FOOTPRINT::Add(), BOARD::Add(), FOOTPRINT_VIEWER_FRAME::AddFootprintToPCB(), BOARD_NETLIST_UPDATER::addNewComponent(), 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::CreateNewPart(), SCH_DRAWING_TOOLS::createNewText(), DIALOG_PAD_PROPERTIES::DIALOG_PAD_PROPERTIES(), SCH_LINE_WIRE_BUS_TOOL::doUnfoldBus(), SCH_EDIT_TOOL::Duplicate(), PCB_EDIT_FRAME::ExchangeFootprint(), LIB_PART::Flatten(), FOOTPRINT::FOOTPRINT(), GPCB_PLUGIN::FootprintLoad(), LEGACY_PLUGIN::FootprintLoad(), EAGLE_PLUGIN::FootprintLoad(), PCB_IO::FootprintLoad(), PCB_IO::FootprintSave(), DISPLAY_FOOTPRINTS_FRAME::GetFootprint(), LIB_PART::LIB_PART(), SCH_LEGACY_PLUGIN_CACHE::loadAliases(), FOOTPRINT_EDIT_FRAME::LoadFootprintFromBoard(), SCH_SEXPR_PLUGIN::loadHierarchy(), SCH_LEGACY_PLUGIN::loadHierarchy(), FOOTPRINT::operator=(), LIB_PART::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(), SCH_DRAWING_TOOLS::PlaceComponent(), 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_PART::SetFields(), DIMENSION_BASE::SetParent(), SCH_DRAWING_TOOLS::SingleClickPlace(), SCH_LINE_WIRE_BUS_TOOL::startSegments(), SCH_GLOBALLABEL::SwapData(), SCH_SHEET::SwapData(), SCH_COMPONENT::SwapData(), and SwapItemData().

◆ SetPosition()

◆ SetSelected()

◆ SetShape()

◆ SetState()

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

Definition at line 191 of file eda_item.h.

192  {
193  if( state )
194  m_status |= type; // state = ON or OFF
195  else
196  m_status &= ~type;
197  }
STATUS_FLAGS m_status
Definition: eda_item.h:527

References EDA_ITEM::m_status.

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

◆ SetStatus()

void EDA_ITEM::SetStatus ( STATUS_FLAGS  aStatus)
inlineinherited

Definition at line 200 of file eda_item.h.

200 { m_status = aStatus; }
STATUS_FLAGS m_status
Definition: eda_item.h:527

References EDA_ITEM::m_status.

Referenced by BOARD_NETLIST_UPDATER::UpdateNetlist().

◆ SetType()

◆ SetUnit()

◆ SetVisible()

◆ SetWidth()

void LIB_PIN::SetWidth ( int  aWidth)
inlineoverridevirtual

Implements LIB_ITEM.

Definition at line 270 of file lib_pin.h.

270 { };

◆ SetWireImage()

void EDA_ITEM::SetWireImage ( )
inlineinherited

Definition at line 177 of file eda_item.h.

177 { SetFlags( IS_WIRE_IMAGE ); }
void SetFlags(STATUS_FLAGS aMask)
Definition: eda_item.h:202
#define IS_WIRE_IMAGE
Item to be drawn as wireframe while editing.
Definition: eda_item.h:110

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 470 of file eda_item.h.

470 { 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 162 of file eda_item.h.

162 { 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:537

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(), 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_GLOBALLABEL::CanConnect(), SCH_HIERLABEL::CanConnect(), SCH_SHEET::CanConnect(), SCH_COMPONENT::CanConnect(), SCH_EDIT_TOOL::ChangeTextType(), CN_VISITOR::checkZoneItemConnection(), SCH_MARKER::ClassOf(), PCB_TEXT::ClassOf(), PCB_MARKER::ClassOf(), FP_SHAPE::ClassOf(), BOARD_CONNECTED_ITEM::ClassOf(), SCH_JUNCTION::ClassOf(), SCH_NO_CONNECT::ClassOf(), PCB_GROUP::ClassOf(), PCB_TARGET::ClassOf(), SCH_PIN::ClassOf(), SCH_LINE::ClassOf(), FP_TEXT::ClassOf(), SCH_FIELD::ClassOf(), NETINFO_ITEM::ClassOf(), PCB_SHAPE::ClassOf(), ZONE::ClassOf(), SCH_BITMAP::ClassOf(), PAD::ClassOf(), TRACK::ClassOf(), SCH_SHEET_PIN::ClassOf(), FOOTPRINT::ClassOf(), SCH_BUS_WIRE_ENTRY::ClassOf(), SCH_COMPONENT::ClassOf(), SCH_SCREEN::ClassOf(), SCH_BUS_BUS_ENTRY::ClassOf(), SCH_TEXT::ClassOf(), SCH_SHEET::ClassOf(), BOARD::ClassOf(), ARC::ClassOf(), SCH_LABEL::ClassOf(), VIA::ClassOf(), ALIGNED_DIMENSION::ClassOf(), SCH_GLOBALLABEL::ClassOf(), ORTHOGONAL_DIMENSION::ClassOf(), SCH_HIERLABEL::ClassOf(), LEADER::ClassOf(), CENTER_DIMENSION::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(), 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(), EDIT_TOOL::CreateArray(), 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::ercCheckLabels(), CONNECTION_GRAPH::ercCheckMultipleDrivers(), CONNECTION_GRAPH::ercCheckNoConnects(), DRC_ENGINE::EvalRules(), EDIT_TOOL::FilletTracks(), PCB_SELECTION_TOOL::FilterCollectorForGroups(), NETLIST_EXPORTER_BASE::findNextSymbol(), EDIT_TOOL::Flip(), 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(), 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(), DIMENSION_BASE::GetMsgPanelInfo(), SCH_TEXT::GetMsgPanelInfo(), SCH_FIELD::GetName(), CONNECTIVITY_DATA::GetNetItems(), LIB_PART::GetNextDrawItem(), PCB_SHAPE::GetParentFootprint(), LIB_PART::GetPin(), SCH_COMPONENT::GetPinPhysicalPosition(), SCH_FIELD::GetPosition(), KIGFX::SCH_PAINTER::getRenderColor(), ALIGN_DISTRIBUTE_TOOL::GetSelections(), DRC_ENGINE::GetShape(), PCB_TEXT::GetShownText(), SCH_FIELD::GetShownText(), SCH_TEXT::GetShownText(), CONVERT_TOOL::getStartEndPoints(), 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(), insideCourtyard(), EE_COLLECTOR::Inspect(), GENERAL_COLLECTOR::Inspect(), BOARD_INSPECTION_TOOL::InspectClearance(), BOARD_INSPECTION_TOOL::InspectConstraints(), 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(), 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::Mirror(), EDIT_TOOL::MoveExact(), SCH_MOVE_TOOL::moveItem(), SCH_EDITOR_CONTROL::nextMatch(), FOOTPRINT_EDIT_FRAME::OnEditItemRequest(), PCB_EDIT_FRAME::OnEditItemRequest(), EDA_3D_CANVAS::OnMouseMove(), TRACK::cmp_tracks::operator()(), CN_VISITOR::operator()(), BOARD_ITEM::ptr_cmp::operator()(), PCB_SHAPE::cmp_drawings::operator()(), FOOTPRINT::cmp_drawings::operator()(), SCH_BUS_ENTRY_BASE::operator<(), SCH_JUNCTION::operator<(), LIB_ITEM::operator<(), SCH_FIELD::operator<(), SCH_LINE::operator<(), SCH_TEXT::operator<(), SCH_ITEM::operator<(), SCH_SHEET::operator<(), SCH_COMPONENT::operator<(), SCH_BITMAP::operator=(), SCH_SHEET::operator=(), SCH_COMPONENT::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_PART::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(), 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(), PCB_GROUP::SwapData(), SCH_FIELD::SwapData(), PCB_TEXT::SwapData(), TRACK::SwapData(), ARC::SwapData(), ALIGNED_DIMENSION::SwapData(), ORTHOGONAL_DIMENSION::SwapData(), SCH_SHEET::SwapData(), LEADER::SwapData(), VIA::SwapData(), SCH_COMPONENT::SwapData(), CENTER_DIMENSION::SwapData(), PAD::SwapData(), FOOTPRINT::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(), PCB_GROUP::TopLevelGroup(), DIALOG_LABEL_EDITOR::TransferDataFromWindow(), DIALOG_DIMENSION_PROPERTIES::TransferDataToWindow(), DIALOG_FIELDS_EDITOR_GLOBAL::TransferDataToWindow(), DIALOG_TEXT_PROPERTIES::TransferDataToWindow(), DIALOG_LABEL_EDITOR::TransferDataToWindow(), 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::updatePastedInstances(), EE_POINT_EDITOR::updatePoints(), PL_POINT_EDITOR::updatePoints(), PCB_POINT_EDITOR::updatePoints(), PCB_BRIGHT_BOX::ViewDraw(), SCH_BUS_ENTRY_BASE::ViewGetLayers(), PCB_GROUP::Visit(), TRACK::Visit(), GERBER_DRAW_ITEM::Visit(), SCH_GLOBALLABEL::Visit(), SCH_SHEET::Visit(), DIALOG_GLOBAL_EDIT_TEXT_AND_GRAPHICS::visitItem(), PCB_GROUP::WithinScope(), 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, CENTER_DIMENSION, EDIT_POINTS, PCB_SHAPE, DIMENSION_BASE, GERBER_DRAW_ITEM, FP_TEXT, 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, BRIGHT_BOX, and KIGFX::PREVIEW::ARC_ASSISTANT.

Definition at line 206 of file eda_item.cpp.

207 {
208  // Basic fallback
209  EDA_RECT bbox = GetBoundingBox();
210 
211  return BOX2I( bbox.GetOrigin(), bbox.GetSize() );
212 }
BOX2< VECTOR2I > BOX2I
Definition: box2.h:522
const wxPoint GetOrigin() const
Definition: eda_rect.h:106
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:89
const wxSize GetSize() const
Definition: eda_rect.h:96

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

Referenced by GERBVIEW_FRAME::GetDocumentExtents(), BRIGHT_BOX::ViewBBox(), DIMENSION_BASE::ViewBBox(), PCB_SHAPE::ViewBBox(), and BRIGHT_BOX::ViewDraw().

◆ 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, BRIGHT_BOX, KIGFX::PREVIEW::ARC_ASSISTANT, KIGFX::PREVIEW::RULER_ITEM, RATSNEST_VIEW_ITEM, and PCB_BRIGHT_BOX.

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 144 of file lib_item.cpp.

145 {
146  // Basic fallback
147  aCount = 3;
148  aLayers[0] = LAYER_DEVICE;
149  aLayers[1] = LAYER_DEVICE_BACKGROUND;
150  aLayers[2] = LAYER_SELECTION_SHADOWS;
151 }

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, VIA, GERBER_DRAW_ITEM, FP_TEXT, 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::drawItem::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_COMPONENT, SCH_SHEET, FOOTPRINT, LIB_PART, SCH_GLOBALLABEL, GERBER_FILE_IMAGE, GERBER_DRAW_ITEM, TRACK, PCB_GROUP, and GBR_LAYOUT.

Definition at line 107 of file eda_item.cpp.

108 {
109 #if 0 && defined(DEBUG)
110  std::cout << GetClass().mb_str() << ' ';
111 #endif
112 
113  if( IsType( scanTypes ) )
114  {
115  if( SEARCH_RESULT::QUIT == inspector( this, testData ) )
116  return SEARCH_RESULT::QUIT;
117  }
118 
120 }
virtual bool IsType(const KICAD_T aScanTypes[]) const
Check whether the item is one of the listed types.
Definition: eda_item.h:232
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 77 of file lib_pin.h.

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

◆ m_attributes

int LIB_PIN::m_attributes
protected

Definition at line 71 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_ITEM::operator<(), LIB_PART::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

◆ m_nameTextSize

int LIB_PIN::m_nameTextSize
protected

◆ m_number

wxString LIB_PIN::m_number
protected

◆ 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

STATUS_FLAGS EDA_ITEM::m_status
protectedinherited

◆ 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::operator<(), LIB_ITEM::SetUnit(), and LIB_PART::SetUnitCount().

◆ m_Uuid

const KIID EDA_ITEM::m_Uuid
inherited

Definition at line 524 of file eda_item.h.

Referenced by FIELDS_EDITOR_GRID_DATA_MODEL::AddColumn(), SCH_COMPONENT::AddHierarchicalReference(), RC_ITEM::AddItem(), SCH_EDIT_FRAME::AnnotateComponents(), FIELDS_EDITOR_GRID_DATA_MODEL::ApplyData(), SCH_SHEET_PATH::Cmp(), SCHEMATIC::ConvertRefsToKIIDs(), MICROWAVE_TOOL::createMicrowaveInductor(), DRAWING_TOOL::DrawVia(), LIB_PART::Duplicate(), BOARD_ITEM::Duplicate(), SCH_ITEM::Duplicate(), FOOTPRINT::Duplicate(), FOOTPRINT::DuplicateItem(), PAD_TOOL::EditPad(), PCB_EDIT_FRAME::ExchangeFootprint(), PAD_TOOL::explodePad(), SCH_SHEET_LIST::FillItemMap(), BOARD::FillItemMap(), PCB_BASE_FRAME::FocusOnItem(), SCH_EDIT_FRAME::FocusOnItem(), PCB_IO::format(), FormatProbeItem(), SCH_PIN::GetDefaultNetName(), SCH_SHEET_LIST::GetItem(), BOARD::GetItem(), 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_LEGACY_PLUGIN::loadComponent(), LEGACY_PLUGIN::loadFOOTPRINT(), FOOTPRINT_EDIT_FRAME::LoadFootprintFromBoard(), PCB_EDIT_FRAME::LoadFootprints(), LEGACY_PLUGIN::loadPCB_TARGET(), LEGACY_PLUGIN::loadPCB_TEXT(), LEGACY_PLUGIN::loadTrackList(), NETLIST_EXPORTER_XML::makeSymbols(), SCH_EDIT_FRAME::mapExistingAnnotation(), TRACK::cmp_tracks::operator()(), BOARD_ITEM::ptr_cmp::operator()(), PCB_SHAPE::cmp_drawings::operator()(), FOOTPRINT::cmp_drawings::operator()(), FOOTPRINT::cmp_pads::operator()(), SCH_ITEM::operator<(), SCH_COMPONENT::operator<(), PAD::PAD(), PCB_PARSER::parseDIMENSION(), PCB_PARSER::parseFOOTPRINT_unchecked(), SCH_SEXPR_PARSER::parseSchSheetInstances(), SCH_EDITOR_CONTROL::Paste(), SCH_SHEET_PATH::PathAsString(), SCH_SCREENS::ReplaceDuplicateTimeStamps(), SCH_COMPONENT::ReplaceInstanceSheetPath(), PCB_PARSER::resolveGroups(), SCH_SEXPR_PLUGIN::saveBitmap(), SCH_SEXPR_PLUGIN::saveBusEntry(), SCH_LEGACY_PLUGIN::saveComponent(), 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_SEXPR_PLUGIN::saveText(), SCH_COMPONENT::SCH_COMPONENT(), SCH_REFERENCE::SCH_REFERENCE(), SCH_SHEET::SCH_SHEET(), RC_ITEM::SetItems(), SwapItemData(), DRC_TEST_PROVIDER_EDGE_CLEARANCE::testAgainstEdge(), testGroupEqual(), SCH_EDITOR_CONTROL::updatePastedInstances(), and NETLIST_EXPORTER_ORCADPCB2::WriteNetlist().


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