KiCad PCB EDA Suite
LIB_PIN Class Reference

#include <lib_pin.h>

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

Classes

struct  ALT
 

Public Types

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

Public Member Functions

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

Static Public Member Functions

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

Public Attributes

const KIID m_Uuid
 

Protected Member Functions

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

Protected Attributes

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

Private Member Functions

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

Detailed Description

Definition at line 53 of file lib_pin.h.

Member Enumeration Documentation

◆ COMPARE_FLAGS

enum LIB_ITEM::COMPARE_FLAGS : int
inherited

The list of flags used by the compare function.

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

Definition at line 81 of file lib_item.h.

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

◆ LIB_CONVERT

enum LIB_ITEM::LIB_CONVERT : int
inherited
Enumerator
BASE 
DEMORGAN 

Definition at line 72 of file lib_item.h.

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

Constructor & Destructor Documentation

◆ ~LIB_PIN()

LIB_PIN::~LIB_PIN ( )
inline

Definition at line 63 of file lib_pin.h.

63 { }

◆ LIB_PIN() [1/2]

LIB_PIN::LIB_PIN ( LIB_SYMBOL aParent)

Definition at line 94 of file lib_pin.cpp.

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

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

Referenced by Clone().

◆ LIB_PIN() [2/2]

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

Definition at line 121 of file lib_pin.cpp.

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

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

Member Function Documentation

◆ BeginEdit()

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

Begin drawing a symbol library draw item at aPosition.

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

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

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

Definition at line 98 of file lib_item.h.

98 {}

Referenced by SYMBOL_EDITOR_DRAWING_TOOLS::DrawShape().

◆ CalcEdit()

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

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

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

Parameters
aPositionThe current mouse position in drawing coordinates.

Reimplemented from LIB_ITEM.

Definition at line 1210 of file lib_pin.cpp.

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

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

◆ ClearBrightened()

void EDA_ITEM::ClearBrightened ( )
inlineinherited

◆ ClearEditFlags()

◆ ClearFlags()

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

Definition at line 154 of file eda_item.h.

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

References EDA_ITEM::m_flags.

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

◆ ClearSelected()

◆ ClearTempFlags()

void EDA_ITEM::ClearTempFlags ( )
inlineinherited

Definition at line 166 of file eda_item.h.

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

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

Referenced by SCH_EDIT_FRAME::PutDataInPreviousState().

◆ ClearViewPrivData()

void KIGFX::VIEW_ITEM::ClearViewPrivData ( )
inlineinherited

Definition at line 148 of file view_item.h.

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

References KIGFX::VIEW_ITEM::m_viewPrivData.

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

◆ Clone()

EDA_ITEM * LIB_PIN::Clone ( ) const
overridevirtual

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

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

Returns
A clone of the item.

Reimplemented from EDA_ITEM.

Definition at line 852 of file lib_pin.cpp.

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

References LIB_PIN().

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

◆ compare()

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

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

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

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

The pin specific sort order is as follows:

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

Reimplemented from LIB_ITEM.

Definition at line 858 of file lib_pin.cpp.

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

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

◆ ContinueEdit()

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

Continue an edit in progress at aPosition.

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

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

Reimplemented in LIB_POLYLINE.

Definition at line 110 of file lib_item.h.

110 { return false; }

Referenced by SYMBOL_EDITOR_DRAWING_TOOLS::DrawShape().

◆ EndEdit()

virtual void LIB_ITEM::EndEdit ( )
inlinevirtualinherited

End an object editing action.

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

Reimplemented in LIB_POLYLINE.

Definition at line 117 of file lib_item.h.

117 {}

Referenced by SYMBOL_EDITOR_DRAWING_TOOLS::DrawShape().

◆ Get() [1/3]

wxAny INSPECTABLE::Get ( PROPERTY_BASE aProperty)
inlineinherited

Definition at line 86 of file inspectable.h.

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

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

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

◆ Get() [2/3]

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

Definition at line 95 of file inspectable.h.

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

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

◆ Get() [3/3]

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

Definition at line 104 of file inspectable.h.

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

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

◆ GetAlt()

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

Definition at line 134 of file lib_pin.h.

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

References m_alternates.

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

◆ GetAlternates()

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

◆ GetBoundingBox() [1/2]

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

Reimplemented from LIB_ITEM.

Definition at line 174 of file lib_pin.h.

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

References GetBoundingBox().

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

◆ GetBoundingBox() [2/2]

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

Definition at line 1053 of file lib_pin.cpp.

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

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

◆ GetCanonicalElectricalTypeName() [1/2]

wxString const LIB_PIN::GetCanonicalElectricalTypeName ( ) const
inline

Definition at line 87 of file lib_pin.h.

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

References m_type.

Referenced by SCH_PIN::GetCanonicalElectricalTypeName().

◆ GetCanonicalElectricalTypeName() [2/2]

const wxString LIB_PIN::GetCanonicalElectricalTypeName ( ELECTRICAL_PINTYPE  aType)
static

Return a string giving the electrical type of a pin.

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

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

Definition at line 40 of file lib_pin.cpp.

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

◆ GetClass()

wxString LIB_PIN::GetClass ( ) const
inlineoverridevirtual

Return the class name.

Implements EDA_ITEM.

Definition at line 65 of file lib_pin.h.

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

◆ GetConvert()

◆ GetEditFlags()

EDA_ITEM_FLAGS EDA_ITEM::GetEditFlags ( ) const
inlineinherited

Definition at line 158 of file eda_item.h.

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

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

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

◆ GetEffectivePenWidth()

virtual int LIB_ITEM::GetEffectivePenWidth ( const RENDER_SETTINGS aSettings) const
inlinevirtualinherited

Definition at line 146 of file lib_item.h.

147  {
148  // For historical reasons, a stored value of 0 means "default width" and negative
149  // numbers meant "don't stroke".
150 
151  if( GetPenWidth() < 0 && GetFillMode() != FILL_TYPE::NO_FILL )
152  return 0;
153  else if( GetPenWidth() == 0 )
154  return aSettings->GetDefaultPenWidth();
155  else
156  return std::max( GetPenWidth(), aSettings->GetMinPenWidth() );
157  }
virtual int GetPenWidth() const =0
FILL_TYPE GetFillMode() const
Definition: lib_item.h:278
int GetDefaultPenWidth() const

References KIGFX::RENDER_SETTINGS::GetDefaultPenWidth(), LIB_ITEM::GetFillMode(), KIGFX::RENDER_SETTINGS::GetMinPenWidth(), LIB_ITEM::GetPenWidth(), and NO_FILL.

Referenced by KIGFX::SCH_PAINTER::getLineWidth(), LIB_CIRCLE::Plot(), LIB_RECTANGLE::Plot(), LIB_ARC::Plot(), LIB_BEZIER::Plot(), LIB_POLYLINE::Plot(), LIB_FIELD::Plot(), PlotSymbol(), LIB_BEZIER::print(), LIB_CIRCLE::print(), LIB_RECTANGLE::print(), LIB_POLYLINE::print(), LIB_ARC::print(), LIB_FIELD::print(), and printPinSymbol().

◆ GetElectricalTypeName()

wxString const LIB_PIN::GetElectricalTypeName ( ) const
inline

Definition at line 92 of file lib_pin.h.

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

References ElectricalPinTypeGetText(), and m_type.

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

◆ GetFillMode()

◆ GetFlags()

◆ GetFocusPosition()

virtual const wxPoint EDA_ITEM::GetFocusPosition ( ) const
inlinevirtualinherited

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

Reimplemented in BOARD, PCB_SHAPE, and PCB_TRACK.

Definition at line 259 of file eda_item.h.

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

References EDA_ITEM::GetPosition().

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

◆ GetLength()

◆ GetMenuImage()

BITMAPS LIB_PIN::GetMenuImage ( ) const
overridevirtual

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

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

Returns
The menu image associated with the item.

Reimplemented from EDA_ITEM.

Definition at line 1171 of file lib_pin.cpp.

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

References ElectricalPinTypeGetBitmap(), and m_type.

◆ GetMsgPanelInfo()

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

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

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

Parameters
aListis the list to populate.

Reimplemented from LIB_ITEM.

Definition at line 1022 of file lib_pin.cpp.

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

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

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

167 {
168  return 0;
169 }

Referenced by GetBoundingBox(), PlotPinTexts(), 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 1177 of file lib_pin.cpp.

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

References _, Format(), GetElectricalTypeName(), GetShownName(), GetShownNumber(), m_name, m_shape, PinShapeGetText(), and UnescapeString().

Referenced by SCH_PIN::GetSelectMenuText().

◆ GetShape()

◆ GetShownName()

wxString LIB_PIN::GetShownName ( ) const

Definition at line 172 of file lib_pin.cpp.

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

References m_name.

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

◆ GetShownNumber()

wxString LIB_PIN::GetShownNumber ( ) const
inline

Definition at line 117 of file lib_pin.h.

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

References m_number.

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

◆ GetState()

int EDA_ITEM::GetState ( EDA_ITEM_FLAGS  type) const
inlineinherited

Definition at line 137 of file eda_item.h.

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

References EDA_ITEM::m_status.

Referenced by BOARD_ITEM::IsLocked().

◆ GetStatus()

EDA_ITEM_FLAGS EDA_ITEM::GetStatus ( ) const
inlineinherited

Definition at line 150 of file eda_item.h.

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

References EDA_ITEM::m_status.

◆ GetType()

◆ GetTypeName()

wxString LIB_PIN::GetTypeName ( ) const
inlineoverridevirtual

Provide a user-consumable name of the object type.

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

Implements LIB_ITEM.

Definition at line 70 of file lib_pin.h.

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

References _.

◆ GetUnit()

◆ GetWidth()

int LIB_PIN::GetWidth ( ) const
inlineoverridevirtual

Implements LIB_ITEM.

Definition at line 221 of file lib_pin.h.

221 { return 1; }

◆ HasFlag()

◆ HitTest() [1/2]

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

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

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

Reimplemented from LIB_ITEM.

Definition at line 141 of file lib_pin.cpp.

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

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

◆ HitTest() [2/2]

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

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

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

Reimplemented from LIB_ITEM.

Definition at line 149 of file lib_pin.cpp.

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

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

◆ IsBrightened()

◆ IsDragging()

bool EDA_ITEM::IsDragging ( ) const
inlineinherited

Definition at line 121 of file eda_item.h.

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

References IS_DRAGGING, and EDA_ITEM::m_flags.

Referenced by DIALOG_SYMBOL_PROPERTIES::DIALOG_SYMBOL_PROPERTIES().

◆ IsEntered()

bool EDA_ITEM::IsEntered ( ) const
inlineinherited

Definition at line 124 of file eda_item.h.

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

References ENTERED, and EDA_ITEM::m_flags.

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

◆ IsFillable()

bool LIB_ITEM::IsFillable ( ) const
inlineinherited

Check if draw object can be filled.

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

Definition at line 269 of file lib_item.h.

269 { return m_isFillable; }
bool m_isFillable
Definition: lib_item.h:340

References LIB_ITEM::m_isFillable.

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

◆ IsForceVisible()

bool EDA_ITEM::IsForceVisible ( ) const
inlineinherited

Definition at line 206 of file eda_item.h.

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

References EDA_ITEM::m_forceVisible.

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

◆ IsModified()

bool EDA_ITEM::IsModified ( ) const
inlineinherited

Definition at line 118 of file eda_item.h.

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

References IS_CHANGED, and EDA_ITEM::m_flags.

Referenced by PCB_EDIT_FRAME::OpenProjectFiles().

◆ IsMoving()

◆ IsNew()

◆ IsPowerConnection()

bool LIB_PIN::IsPowerConnection ( ) const
inline

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

Definition at line 186 of file lib_pin.h.

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

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

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

◆ IsReplaceable()

virtual bool EDA_ITEM::IsReplaceable ( ) const
inlinevirtualinherited

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

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

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

Definition at line 403 of file eda_item.h.

403 { return false; }

Referenced by EDA_ITEM::Matches().

◆ IsResized()

bool EDA_ITEM::IsResized ( ) const
inlineinherited

Definition at line 125 of file eda_item.h.

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

References IS_RESIZING, and EDA_ITEM::m_flags.

◆ IsSelected()

bool EDA_ITEM::IsSelected ( ) const
inlineinherited

Definition at line 123 of file eda_item.h.

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

References EDA_ITEM::m_flags, and SELECTED.

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

◆ IsType()

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

Check whether the item is one of the listed types.

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

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

Definition at line 183 of file eda_item.h.

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

References EOT, EDA_ITEM::m_structType, and SCH_LOCATE_ANY_T.

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

◆ IsVisible()

◆ IsWireImage()

bool EDA_ITEM::IsWireImage ( ) const
inlineinherited

Definition at line 122 of file eda_item.h.

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

References IS_WIRE_IMAGE, and EDA_ITEM::m_flags.

◆ IterateForward() [1/2]

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

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

Definition at line 295 of file eda_item.h.

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

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

Referenced by GERBER_FILE_IMAGE::Visit().

◆ IterateForward() [2/2]

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

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

Definition at line 314 of file eda_item.h.

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

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

◆ Matches() [1/2]

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

Compare the item against the search criteria in aSearchData.

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

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

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

Definition at line 365 of file eda_item.h.

366  {
367  return false;
368  }

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

◆ Matches() [2/2]

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

Compare aText against search criteria in aSearchData.

This is a helper function for simplify derived class logic.

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

Definition at line 118 of file eda_item.cpp.

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

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

◆ MirrorHorizontal()

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

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

Parameters
aCenterPoint to mirror around.

Implements LIB_ITEM.

Definition at line 952 of file lib_pin.cpp.

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

References m_orientation, m_position, PIN_LEFT, and PIN_RIGHT.

◆ MirrorVertical()

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

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

Parameters
aCenterPoint to mirror around.

Implements LIB_ITEM.

Definition at line 965 of file lib_pin.cpp.

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

References m_orientation, m_position, PIN_DOWN, and PIN_UP.

◆ MoveTo()

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

Move a draw object to aPosition.

Parameters
aPositionPosition to move draw item to.

Implements LIB_ITEM.

Definition at line 942 of file lib_pin.cpp.

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

References m_position, and EDA_ITEM::SetModified().

Referenced by CalcEdit().

◆ Offset()

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

Set the drawing object by aOffset from the current position.

Parameters
aOffsetCoordinates to offset the item position.

Implements LIB_ITEM.

Definition at line 936 of file lib_pin.cpp.

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

References m_position.

◆ operator<() [1/2]

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

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

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

Definition at line 99 of file lib_item.cpp.

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

References LIB_ITEM::compare().

◆ operator<() [2/2]

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

Test if another item is less than this object.

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

Definition at line 171 of file eda_item.cpp.

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

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

◆ operator==() [1/2]

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

Test LIB_ITEM objects for equivalence.

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

Definition at line 93 of file lib_item.cpp.

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

References LIB_ITEM::compare().

◆ operator==() [2/2]

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

Definition at line 198 of file lib_item.h.

199  {
200  return *this == *aOther;
201  }

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

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

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

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

◆ Plot()

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

Plot the draw item using the plot object.

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

Implements LIB_ITEM.

Definition at line 1007 of file lib_pin.cpp.

1009 {
1010  if( !IsVisible() )
1011  return;
1012 
1013  int orient = PinDrawOrient( aTransform );
1014  wxPoint pos = aTransform.TransformCoordinate( m_position ) + aPffset;
1015 
1016  PlotSymbol( aPlotter, pos, orient );
1017  PlotPinTexts( aPlotter, pos, orient, GetParent()->GetPinNameOffset(),
1018  GetParent()->ShowPinNumbers(), GetParent()->ShowPinNames() );
1019 }
void PlotPinTexts(PLOTTER *aPlotter, const wxPoint &aPinPos, int aPinOrient, int aTextInside, bool aDrawPinNum, bool aDrawPinName) const
Plot the pin number and pin text info, given the pin line coordinates.
Definition: lib_pin.cpp:666
void PlotSymbol(PLOTTER *aPlotter, const wxPoint &aPosition, int aOrientation) const
Definition: lib_pin.cpp:537
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:818
wxPoint TransformCoordinate(const wxPoint &aPoint) const
Calculate a new coordinate according to the mirror/rotation transform.
Definition: transform.cpp:42
bool IsVisible() const
Definition: lib_pin.h:97
LIB_SYMBOL * GetParent() const
Definition: lib_item.h:159
wxPoint m_position
Definition: lib_pin.h:280

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

◆ PlotPinTexts()

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

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

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

Definition at line 666 of file lib_pin.cpp.

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

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

Referenced by Plot().

◆ PlotSymbol()

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

Definition at line 537 of file lib_pin.cpp.

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

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

Referenced by Plot().

◆ Print()

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

Draw an item.

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

Definition at line 122 of file lib_item.cpp.

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

References LIB_ITEM::print().

Referenced by DIALOG_PIN_PROPERTIES::OnPaintShowPanel().

◆ print()

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

Print a pin, with or without the pin texts.

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

Implements LIB_ITEM.

Definition at line 181 of file lib_pin.cpp.

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

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

◆ printPinElectricalTypeName()

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

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

Definition at line 484 of file lib_pin.cpp.

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

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

Referenced by print().

◆ printPinSymbol()

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

Print the pin symbol without text.

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

Definition at line 217 of file lib_pin.cpp.

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

References CLOCK, CLOCK_LOW, color, externalPinDecoSize(), FALLING_EDGE_CLOCK, LIB_ITEM::GetEffectivePenWidth(), KIGFX::RENDER_SETTINGS::GetLayerColor(), 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 328 of file lib_pin.cpp.

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

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

Referenced by print().

◆ Replace() [1/2]

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

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

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

Definition at line 145 of file eda_item.cpp.

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

References traceFindReplace.

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

◆ Replace() [2/2]

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

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

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

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

Reimplemented in SCH_TEXT, SCH_FIELD, SCH_SHEET_PIN, and SCH_PIN.

Definition at line 392 of file eda_item.h.

393  {
394  return false;
395  }

◆ Rotate()

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

Rotate the object about aCenter point.

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

Implements LIB_ITEM.

Definition at line 978 of file lib_pin.cpp.

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

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

◆ Set() [1/3]

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

Definition at line 42 of file inspectable.h.

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

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

◆ Set() [2/3]

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

Definition at line 55 of file inspectable.h.

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

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

◆ Set() [3/3]

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

Definition at line 68 of file inspectable.h.

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

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

◆ SetBrightened()

◆ SetConvert()

◆ SetFillMode()

◆ SetFlags()

void EDA_ITEM::SetFlags ( EDA_ITEM_FLAGS  aMask)
inlineinherited

Definition at line 153 of file eda_item.h.

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

References EDA_ITEM::m_flags.

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

◆ SetForceVisible()

void EDA_ITEM::SetForceVisible ( bool  aEnable)
inlineinherited

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

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

Definition at line 204 of file eda_item.h.

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

References EDA_ITEM::m_forceVisible.

Referenced by SCH_EDITOR_CONTROL::UpdateFind().

◆ SetLength()

void LIB_PIN::SetLength ( int  aLength)
inline

Definition at line 82 of file lib_pin.h.

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

References m_length.

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

◆ SetModified()

void EDA_ITEM::SetModified ( )
inherited

Definition at line 65 of file eda_item.cpp.

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

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

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

◆ SetName()

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

Definition at line 108 of file lib_pin.h.

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

References m_name.

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

◆ SetNameTextSize()

void LIB_PIN::SetNameTextSize ( int  aSize)
inline

Definition at line 127 of file lib_pin.h.

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

References m_nameTextSize.

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

◆ SetNumber()

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

Definition at line 118 of file lib_pin.h.

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

References m_number.

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

◆ SetNumberTextSize()

void LIB_PIN::SetNumberTextSize ( int  aSize)
inline

Definition at line 130 of file lib_pin.h.

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

References m_numTextSize.

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

◆ SetOrientation()

void LIB_PIN::SetOrientation ( int  aOrientation)
inline

◆ SetParent()

virtual void EDA_ITEM::SetParent ( EDA_ITEM aParent)
inlinevirtualinherited

Reimplemented in PCB_DIMENSION_BASE.

Definition at line 116 of file eda_item.h.

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

References EDA_ITEM::m_parent.

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

◆ SetPosition()

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

Reimplemented from LIB_ITEM.

Definition at line 211 of file lib_pin.h.

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

References m_position.

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

◆ SetSelected()

◆ SetShape()

void LIB_PIN::SetShape ( GRAPHIC_PINSHAPE  aShape)
inline

◆ SetState()

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

Definition at line 142 of file eda_item.h.

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

References EDA_ITEM::m_status.

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

◆ SetStatus()

void EDA_ITEM::SetStatus ( EDA_ITEM_FLAGS  aStatus)
inlineinherited

Definition at line 151 of file eda_item.h.

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

References EDA_ITEM::m_status.

Referenced by BOARD_NETLIST_UPDATER::UpdateNetlist().

◆ SetType()

◆ SetUnit()

◆ SetVisible()

void LIB_PIN::SetVisible ( bool  aVisible)
inline

Definition at line 98 of file lib_pin.h.

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

References m_attributes, and PIN_INVISIBLE.

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

◆ SetWidth()

void LIB_PIN::SetWidth ( int  aWidth)
inlineoverridevirtual

Implements LIB_ITEM.

Definition at line 222 of file lib_pin.h.

222 { };

◆ SetWireImage()

void EDA_ITEM::SetWireImage ( )
inlineinherited

Definition at line 128 of file eda_item.h.

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

References IS_WIRE_IMAGE, and EDA_ITEM::SetFlags().

◆ Sort()

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

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

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

Definition at line 421 of file eda_item.h.

421 { return *aLeft < *aRight; }

◆ Type()

KICAD_T EDA_ITEM::Type ( ) const
inlineinherited

Returns the type of object.

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

Returns
the type of object.

Definition at line 113 of file eda_item.h.

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

References EDA_ITEM::m_structType.

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

◆ ViewBBox()

const BOX2I EDA_ITEM::ViewBBox ( ) const
overridevirtualinherited

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

Returns
the current bounding box.

Implements KIGFX::VIEW_ITEM.

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

Definition at line 194 of file eda_item.cpp.

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

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

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

◆ ViewDraw()

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

Draw the parts of the object belonging to layer aLayer.

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

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

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

Definition at line 111 of file view_item.h.

112  {}

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

◆ ViewGetLayers()

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

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

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

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

Reimplemented from EDA_ITEM.

Reimplemented in LIB_TEXT.

Definition at line 129 of file lib_item.cpp.

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

References LAYER_DEVICE, LAYER_DEVICE_BACKGROUND, and LAYER_SELECTION_SHADOWS.

◆ ViewGetLOD()

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

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

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

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

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

Definition at line 137 of file view_item.h.

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

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

◆ viewPrivData()

◆ Visit()

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

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

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

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

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

Definition at line 93 of file eda_item.cpp.

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

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

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

Member Data Documentation

◆ m_alternates

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

Definition at line 291 of file lib_pin.h.

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

◆ m_attributes

int LIB_PIN::m_attributes
protected

Definition at line 285 of file lib_pin.h.

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

◆ m_convert

int LIB_ITEM::m_convert
protectedinherited

Shape identification for alternate body styles.

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

Definition at line 333 of file lib_item.h.

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

◆ m_fill

◆ m_flags

◆ m_forceVisible

bool EDA_ITEM::m_forceVisible
protectedinherited

◆ m_isFillable

◆ m_length

int LIB_PIN::m_length
protected

◆ m_name

wxString LIB_PIN::m_name
protected

Definition at line 286 of file lib_pin.h.

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

◆ m_nameTextSize

int LIB_PIN::m_nameTextSize
protected

◆ m_number

wxString LIB_PIN::m_number
protected

Definition at line 287 of file lib_pin.h.

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

◆ m_numTextSize

int LIB_PIN::m_numTextSize
protected

◆ m_orientation

int LIB_PIN::m_orientation
protected

◆ m_parent

◆ m_position

wxPoint LIB_PIN::m_position
protected

◆ m_shape

GRAPHIC_PINSHAPE LIB_PIN::m_shape
protected

◆ m_status

◆ m_type

◆ m_unit

int LIB_ITEM::m_unit
protectedinherited

Unit identification for multiple parts per package.

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

Definition at line 327 of file lib_item.h.

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

◆ m_Uuid

const KIID EDA_ITEM::m_Uuid
inherited

Definition at line 475 of file eda_item.h.

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


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