KiCad PCB EDA Suite
Loading...
Searching...
No Matches
sch_symbol.h
Go to the documentation of this file.
1/*
2 * This program source code file is part of KiCad, a free EDA CAD application.
3 *
4 * Copyright (C) 2015 Jean-Pierre Charras, jp.charras at wanadoo.fr
5 * Copyright (C) 2014 Dick Hollenbeck, [email protected]
6 * Copyright (C) 2015 Wayne Stambaugh <[email protected]>
7 * Copyright (C) 2022 CERN
8 * Copyright The KiCad Developers, see AUTHORS.txt for contributors.
9 *
10 * This program is free software; you can redistribute it and/or
11 * modify it under the terms of the GNU General Public License
12 * as published by the Free Software Foundation; either version 2
13 * of the License, or (at your option) any later version.
14 *
15 * This program is distributed in the hope that it will be useful,
16 * but WITHOUT ANY WARRANTY; without even the implied warranty of
17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18 * GNU General Public License for more details.
19 *
20 * You should have received a copy of the GNU General Public License
21 * along with this program. If not, see <https://www.gnu.org/licenses/>.
22 */
23
24#ifndef SCH_SYMBOL_H
25#define SCH_SYMBOL_H
26
27#include <eda_item.h>
28#include <core/typeinfo.h>
29#include <layer_ids.h>
30#include <lib_id.h>
31
32#include <memory>
33#include <string>
34#include <unordered_map>
35#include <vector>
36#include <wx/arrstr.h>
37#include <wx/chartype.h>
38#include <wx/string.h>
39
40#include <schematic.h>
41#include <symbol.h>
42#include <sch_field.h>
43#include <sch_pin.h>
44#include <sch_sheet_path.h> // SCH_SYMBOL_INSTANCE
45#include <transform.h>
46
47struct PICKED_SYMBOL;
48class KIID_PATH;
49class SCH_SCREEN;
50class LIB_SYMBOL;
51class MSG_PANEL_ITEM;
54class SCH_SCREEN;
55class SCH_COMMIT;
56class SCH_SHAPE;
57
58
59typedef std::weak_ptr<LIB_SYMBOL> PART_REF;
60
61
62extern std::string toUTFTildaText( const wxString& txt );
63
64
68class SCH_SYMBOL : public SYMBOL
69{
70public:
71 SCH_SYMBOL();
72
83 SCH_SYMBOL( const LIB_SYMBOL& aSymbol, const LIB_ID& aLibId, const SCH_SHEET_PATH* aSheet,
84 int aUnit, int aBodyStyle = 0, const VECTOR2I& aPosition = VECTOR2I( 0, 0 ),
85 EDA_ITEM* aParent = nullptr );
86
87 SCH_SYMBOL( const LIB_SYMBOL& aSymbol, const SCH_SHEET_PATH* aSheet, const PICKED_SYMBOL& aSel,
88 const VECTOR2I& aPosition = VECTOR2I( 0, 0 ), EDA_ITEM* aParent = nullptr );
89
99 SCH_SYMBOL( const SCH_SYMBOL& aSymbol );
100
101 ~SCH_SYMBOL();
102
103 static inline bool ClassOf( const EDA_ITEM* aItem )
104 {
105 return aItem && SCH_SYMBOL_T == aItem->Type();
106 }
107
108 wxString GetClass() const override
109 {
110 return wxT( "SCH_SYMBOL" );
111 }
112
126 bool IsMissingLibSymbol() const;
127
128 const std::vector<SCH_SYMBOL_INSTANCE>& GetInstances() const
129 {
130 return m_instances;
131 }
132
133 bool GetInstance( SCH_SYMBOL_INSTANCE& aInstance,
134 const KIID_PATH& aSheetPath, bool aTestFromEnd = false ) const;
135
136 void RemoveInstance( const SCH_SHEET_PATH& aInstancePath );
137
138 void RemoveInstance( const KIID_PATH& aInstancePath );
139
154 bool IsMovableFromAnchorPoint() const override;
155
156 void SetLibId( const LIB_ID& aName );
157
158 const LIB_ID& GetLibId() const override { return m_lib_id; }
159
160 wxString GetSymbolIDAsString() const { return m_lib_id.Format(); }
161
173 void SetSchSymbolLibraryName( const wxString& aName ) { m_schLibSymbolName = aName; }
174 wxString GetSchSymbolLibraryName() const;
175 bool UseLibIdLookup() const { return m_schLibSymbolName.IsEmpty(); }
176
177 std::unique_ptr< LIB_SYMBOL >& GetLibSymbolRef() { return m_part; }
178 const std::unique_ptr< LIB_SYMBOL >& GetLibSymbolRef() const { return m_part; }
179
196 void SetLibSymbol( LIB_SYMBOL* aLibSymbol );
197
201 wxString GetDescription() const override;
202 wxString GetShownDescription( int aDepth = 0 ) const override;
203
207 wxString GetKeyWords() const override;
208 wxString GetShownKeyWords( int aDepth = 0 ) const override;
209
213 wxString GetDatasheet() const;
214
218 void UpdatePins();
219
225 wxString GetUnitDisplayName( int aUnit, bool aLabel ) const override;
226
227 wxString GetBodyStyleDescription( int aBodyStyle, bool aLabel ) const override;
228
229 void SetBodyStyle( int aBodyStyle ) override;
230
231 wxString GetPrefix() const { return m_prefix; }
232 void SetPrefix( const wxString& aPrefix ) { m_prefix = aPrefix; }
233
237 void UpdatePrefix();
238
239 wxString SubReference( int aUnit, bool aAddSeparator = true ) const;
240
246 int GetUnitCount() const override;
247
248 bool IsMultiUnit() const override { return GetUnitCount() > 1; }
249
255 int GetBodyStyleCount() const override;
256
257 bool IsMultiBodyStyle() const override { return GetBodyStyleCount() > 1; }
258
259 bool HasDeMorganBodyStyles() const override;
260
267 void SetOrientation( int aOrientation );
268
284 int GetOrientation() const override;
285
290 {
291 int mirroring = GetOrientation();
292
294
295 SetOrientation( aAngle | mirroring );
296 }
297
314
315 void SetMirrorX( bool aMirror )
316 {
317 int orientation = GetOrientation();
318
319 if( aMirror )
321 else
323
324 SetOrientation( orientation );
325 }
326
327 bool GetMirrorX() const
328 {
330 }
331
332 void SetMirrorY( bool aMirror )
333 {
334 int orientation = GetOrientation();
335
336 if( aMirror )
338 else
340
341 SetOrientation( orientation );
342 }
343
344 bool GetMirrorY() const
345 {
347 }
348
352 void GetContextualTextVars( wxArrayString* aVars ) const;
353
361 bool ResolveTextVar( const SCH_SHEET_PATH* aPath, wxString* token, int aDepth = 0 ) const;
362
371 bool ResolveTextVar( const SCH_SHEET_PATH* aPath, wxString* token,
372 const wxString& aVariantName, int aDepth = 0 ) const;
373
374 void GetMsgPanelInfo( EDA_DRAW_FRAME* aFrame, std::vector<MSG_PANEL_ITEM>& aList ) override;
375
386 void ClearAnnotation( const SCH_SHEET_PATH* aSheetPath, bool aResetPrefix );
387
399 bool AddSheetPathReferenceEntryIfMissing( const KIID_PATH& aSheetPath );
400
401
402 const BOX2I GetBoundingBox() const override;
403
407 BOX2I GetBodyBoundingBox() const override;
408
412 BOX2I GetBodyAndPinsBoundingBox() const override;
413
414
415 //-----<Fields>-----------------------------------------------------------
416
421 SCH_FIELD* GetField( FIELD_T aFieldType );
422 const SCH_FIELD* GetField( FIELD_T aFieldNdx ) const;
423
431 SCH_FIELD* GetField( const wxString& aFieldName );
432 const SCH_FIELD* GetField( const wxString& aFieldName ) const;
433
440 void GetFields( std::vector<SCH_FIELD*>& aVector, bool aVisibleOnly ) const override;
441
445 std::vector<SCH_FIELD>& GetFields() { return m_fields; }
446 const std::vector<SCH_FIELD>& GetFields() const { return m_fields; }
447
455 SCH_FIELD* AddField( const SCH_FIELD& aField );
456
462 void RemoveField( const wxString& aFieldName );
463
464 void RemoveField( SCH_FIELD* aField )
465 {
466 if( aField )
467 RemoveField( aField->GetName() );
468 }
469
477 SCH_FIELD* FindFieldCaseInsensitive( const wxString& aFieldName );
478 const SCH_FIELD* FindFieldCaseInsensitive( const wxString& aFieldName ) const;
479
483 const wxString GetRef( const SCH_SHEET_PATH* aSheet,
484 bool aIncludeUnit = false ) const override;
485
489 const wxString GetValue( bool aResolve, const SCH_SHEET_PATH* aPath,
490 bool aAllowExtraText, const wxString& aVariantName = wxEmptyString ) const override;
491
492 void SetValueFieldText( const wxString& aValue, const SCH_SHEET_PATH* aInstance = nullptr,
493 const wxString& aVariantName = wxEmptyString );
494
495 const wxString GetFootprintFieldText( bool aResolve, const SCH_SHEET_PATH* aPath,
496 bool aAllowExtraText, const wxString& aVariantName = wxEmptyString ) const;
497 void SetFootprintFieldText( const wxString& aFootprint );
498
499 /*
500 * Field access for property manager
501 */
502 wxString GetRefProp() const
503 {
504 return GetRef( &Schematic()->CurrentSheet() );
505 }
506
507 void SetRefProp( const wxString& aRef );
508
509 wxString GetValueProp() const
510 {
511 return GetValue( false, &Schematic()->CurrentSheet(), false, Schematic()->GetCurrentVariant() );
512 }
513
514 void SetValueProp( const wxString& aValue ); // Implemented in sch_symbol.cpp for tracing
515
516 int GetUnitProp() const
517 {
518 return GetUnitSelection( &Schematic()->CurrentSheet() );
519 }
520
521 void SetFieldText( const wxString& aFieldName, const wxString& aFieldText, const SCH_SHEET_PATH* aPath = nullptr,
522 const wxString& aVariantName = wxEmptyString );
523
524 wxString GetFieldText( const wxString& aFieldName, const SCH_SHEET_PATH* aPath = nullptr,
525 const wxString& aVariantName = wxEmptyString ) const;
526
527 void SetUnitProp( int aUnit )
528 {
529 SetUnitSelection( &Schematic()->CurrentSheet(), aUnit );
530 SetUnit( aUnit );
531 }
532
533 wxString GetBodyStyleProp() const override
534 {
535 return GetBodyStyleDescription( GetBodyStyle(), false );
536 }
537
538 void SetBodyStyleProp( const wxString& aBodyStyle ) override
539 {
540 for( int bodyStyle = 1; bodyStyle <= GetBodyStyleCount(); bodyStyle++ )
541 {
542 if( GetBodyStyleDescription( bodyStyle, false ) == aBodyStyle )
543 {
544 SetBodyStyle( bodyStyle );
545 return;
546 }
547 }
548 }
549
560 void UpdateFields( const SCH_SHEET_PATH* aPath, bool aUpdateStyle, bool aUpdateRef,
561 bool aUpdateOtherFields, bool aResetRef, bool aResetOtherFields );
562
572 void SyncOtherUnits( const SCH_SHEET_PATH& aSourceSheet, SCH_COMMIT& aCommit,
573 PROPERTY_BASE* aProperty,
574 const wxString& aVariantName = wxEmptyString );
575
579 int GetNextFieldOrdinal() const;
580
587 void AutoplaceFields( SCH_SCREEN* aScreen, AUTOPLACE_ALGO aAlgo ) override;
588
589 void RunOnChildren( const std::function<void( SCH_ITEM* )>& aFunction, RECURSE_MODE aMode ) override;
590
591
592 //-----</Fields>----------------------------------------------------------
593
594
601 SCH_PIN* GetPin( const wxString& number ) const;
602
610 SCH_PIN* GetPinByEffectivePadNumber( const wxString& aPadNumber, const SCH_SHEET_PATH* aSheet,
611 const wxString& aVariantName = wxEmptyString ) const;
612
622 std::vector<SCH_PIN*> GetPinsByNumber( const wxString& aNumber ) const;
623
630 std::vector<SCH_PIN*> GetLibPins() const;
631
636 std::vector<SCH_PIN*> GetAllLibPins() const;
637
641 size_t GetFullPinCount() const;
642
646 SCH_PIN* GetPin( SCH_PIN* aLibPin ) const;
647
655 const SCH_PIN* GetPin( const VECTOR2I& aPosition ) const;
656
665 std::vector<const SCH_PIN*> GetPins( const SCH_SHEET_PATH* aSheet ) const;
666 std::vector<SCH_PIN*> GetPins( const SCH_SHEET_PATH* aSheet );
667
668 std::vector<SCH_PIN*> GetPins() const override;
669
670
671 std::vector<std::unique_ptr<SCH_PIN>>& GetRawPins() { return m_pins; }
672
679 void SetRef( const SCH_SHEET_PATH* aSheet, const wxString& aReference );
680
687 bool IsAnnotated( const SCH_SHEET_PATH* aSheet ) const;
688
700 void AddHierarchicalReference( const KIID_PATH& aPath,
701 const wxString& aRef,
702 int aUnit );
703
704 void AddHierarchicalReference( const SCH_SYMBOL_INSTANCE& aInstance );
705
707 int GetUnitSelection( const SCH_SHEET_PATH* aSheet ) const;
708
710 void SetUnitSelection( const SCH_SHEET_PATH* aSheet, int aUnitSelection );
711
713 void SetUnitSelection( int aUnitSelection );
714
715 virtual void SetDNP( bool aEnable, const SCH_SHEET_PATH* aInstance = nullptr,
716 const wxString& aVariantName = wxEmptyString ) override;
717 virtual bool GetDNP( const SCH_SHEET_PATH* aInstance = nullptr,
718 const wxString& aVariantName = wxEmptyString ) const override;
719
720 bool GetDNPProp() const { return GetDNP( &Schematic()->CurrentSheet(), Schematic()->GetCurrentVariant() ); }
721
722 void SetDNPProp( bool aEnable ) { SetDNP( aEnable, &Schematic()->CurrentSheet(),
723 Schematic()->GetCurrentVariant() ); }
724
731 void SetPinMapOverride( const PIN_MAP_INSTANCE_OVERRIDE& aOverride, const SCH_SHEET_PATH* aInstance = nullptr,
732 const wxString& aVariantName = wxEmptyString );
733
741 const wxString& aVariantName = wxEmptyString ) const;
742
743 void SetExcludedFromBOM( bool aEnable, const SCH_SHEET_PATH* aInstance = nullptr,
744 const wxString& aVariantName = wxEmptyString ) override;
745 bool GetExcludedFromBOM( const SCH_SHEET_PATH* aInstance = nullptr,
746 const wxString& aVariantName = wxEmptyString ) const override;
747
749 {
750 return GetExcludedFromBOM( &Schematic()->CurrentSheet(), Schematic()->GetCurrentVariant() );
751 }
752
753 void SetExcludedFromBOMProp( bool aEnable )
754 {
755 SetExcludedFromBOM( aEnable, &Schematic()->CurrentSheet(), Schematic()->GetCurrentVariant() );
756 }
757
758 void SetExcludedFromSim( bool aEnable, const SCH_SHEET_PATH* aInstance = nullptr,
759 const wxString& aVariantName = wxEmptyString ) override;
760 bool GetExcludedFromSim( const SCH_SHEET_PATH* aInstance = nullptr,
761 const wxString& aVariantName = wxEmptyString ) const override;
762
764 {
765 return GetExcludedFromSim( &Schematic()->CurrentSheet(), Schematic()->GetCurrentVariant() );
766 }
767
768 void SetExcludedFromSimProp( bool aEnable )
769 {
770 SetExcludedFromSim( aEnable, &Schematic()->CurrentSheet(), Schematic()->GetCurrentVariant() );
771 }
772
773 void SetExcludedFromBoard( bool aEnable, const SCH_SHEET_PATH* aInstance = nullptr,
774 const wxString& aVariantName = wxEmptyString ) override;
775 bool GetExcludedFromBoard( const SCH_SHEET_PATH* aInstance = nullptr,
776 const wxString& aVariantName = wxEmptyString ) const override;
777
779 {
780 return GetExcludedFromBoard( &Schematic()->CurrentSheet(), Schematic()->GetCurrentVariant() );
781 }
782
783 void SetExcludedFromBoardProp( bool aEnable )
784 {
785 SetExcludedFromBoard( aEnable, &Schematic()->CurrentSheet(), Schematic()->GetCurrentVariant() );
786 }
787
788 void SetExcludedFromPosFiles( bool aEnable, const SCH_SHEET_PATH* aInstance = nullptr,
789 const wxString& aVariantName = wxEmptyString ) override;
790 bool GetExcludedFromPosFiles( const SCH_SHEET_PATH* aInstance = nullptr,
791 const wxString& aVariantName = wxEmptyString ) const override;
792
794 {
795 return GetExcludedFromPosFiles( &Schematic()->CurrentSheet(), Schematic()->GetCurrentVariant() );
796 }
797
798 void SetExcludedFromPosFilesProp( bool aEnable )
799 {
800 SetExcludedFromPosFiles( aEnable, &Schematic()->CurrentSheet(), Schematic()->GetCurrentVariant() );
801 }
802
808
809 void Move( const VECTOR2I& aMoveVector ) override
810 {
811 if( aMoveVector == VECTOR2I( 0, 0 ) )
812 return;
813
814 m_pos += aMoveVector;
815
816 for( SCH_FIELD& field : m_fields )
817 field.Move( aMoveVector );
818 }
819
820 void MirrorHorizontally( int aCenter ) override;
821 void MirrorVertically( int aCenter ) override;
822 void Rotate( const VECTOR2I& aCenter, bool aRotateCCW ) override;
823
824 bool Matches( const EDA_SEARCH_DATA& aSearchData, void* aAuxData ) const override;
825
826 void GetEndPoints( std::vector<DANGLING_END_ITEM>& aItemList ) override;
827
838 bool UpdateDanglingState( std::vector<DANGLING_END_ITEM>& aItemListByType,
839 std::vector<DANGLING_END_ITEM>& aItemListByPos,
840 const SCH_SHEET_PATH* aPath = nullptr ) override;
841
842 VECTOR2I GetPinPhysicalPosition( const SCH_PIN* Pin ) const;
843
844 bool IsConnectable() const override { return true; }
845
846 bool HasConnectivityChanges( const SCH_ITEM* aItem,
847 const SCH_SHEET_PATH* aInstance = nullptr ) const override;
848
849 bool CanConnect( const SCH_ITEM* aItem ) const override
850 {
851 return ( aItem->Type() == SCH_LINE_T && aItem->GetLayer() == LAYER_WIRE ) ||
852 ( aItem->Type() == SCH_NO_CONNECT_T ) ||
853 ( aItem->Type() == SCH_JUNCTION_T ) ||
854 ( aItem->Type() == SCH_SYMBOL_T ) ||
855 ( aItem->Type() == SCH_DIRECTIVE_LABEL_T ) ||
856 ( aItem->Type() == SCH_LABEL_T ) ||
857 ( aItem->Type() == SCH_HIER_LABEL_T ) ||
858 ( aItem->Type() == SCH_GLOBAL_LABEL_T );
859 }
860
864 bool IsInNetlist() const;
865
872
875
876 // Back-compat helpers used by existing code and old file formats
878 void SetPassthrough( bool aEnable )
879 {
881 }
882
883 const wxString& GetNetChainName() const { return m_signalName; }
884 void SetNetChainName( const wxString& aName ) { m_signalName = aName; }
885
886 std::vector<VECTOR2I> GetConnectionPoints() const override;
887
888 INSPECT_RESULT Visit( INSPECTOR inspector, void* testData,
889 const std::vector<KICAD_T>& aScanTypes ) override;
890
898 SCH_ITEM* GetDrawItem( const VECTOR2I& aPosition, KICAD_T aType = TYPE_NOT_INIT );
899
900 wxString GetItemDescription( UNITS_PROVIDER* aUnitsProvider, bool aFull ) const override;
901
902 BITMAPS GetMenuImage() const override;
903
904 bool operator <( const SCH_ITEM& aItem ) const override;
905
906 bool operator==( const SCH_SYMBOL& aSymbol) const;
907 bool operator!=( const SCH_SYMBOL& aSymbol) const;
908
909 SCH_SYMBOL& operator=( const SCH_SYMBOL& aItem );
910
911 bool IsReplaceable() const override { return true; }
912
913 VECTOR2I GetPosition() const override { return m_pos; }
914 void SetPosition( const VECTOR2I& aPosition ) override { Move( aPosition - m_pos ); }
915
916 int GetX() const { return GetPosition().x; };
917 void SetX( int aX ) { SetPosition( VECTOR2I( aX, GetY() ) ); }
918
919 int GetY() const { return GetPosition().y; }
920 void SetY( int aY ) { SetPosition( VECTOR2I( GetX(), aY ) ); }
921
922 bool HitTest( const VECTOR2I& aPosition, int aAccuracy = 0 ) const override;
923 bool HitTest( const BOX2I& aRect, bool aContained, int aAccuracy = 0 ) const override;
924 bool HitTest( const SHAPE_LINE_CHAIN& aPoly, bool aContained ) const override;
925
926 void Plot( PLOTTER* aPlotter, bool aBackground, const SCH_PLOT_OPTS& aPlotOpts,
927 int aUnit, int aBodyStyle, const VECTOR2I& aOffset, bool aDimmed ) override;
928
936 void PlotPins( PLOTTER* aPlotter, bool aDnp ) const;
937
943 void PlotLocalPowerIconShape( PLOTTER* aPlotter ) const;
944
951 void PlotDNP( PLOTTER* aPlotter ) const;
952
962 static void BuildLocalPowerIconShape( std::vector<SCH_SHAPE>& aShapeList, const VECTOR2D& aPos,
963 double aSize, double aLineWidth, bool aHorizontal );
964
965 EDA_ITEM* Clone() const override;
966
967 void Serialize( google::protobuf::Any& aContainer ) const override;
968 bool Deserialize( const google::protobuf::Any& aContainer ) override;
969
970#if defined(DEBUG)
971 void Show( int nestLevel, std::ostream& os ) const override;
972#endif
973
974 void ClearBrightenedPins();
975
976 bool HasBrightenedPins();
977
978 bool IsPointClickableAnchor( const VECTOR2I& aPos ) const override;
979
985 bool IsSymbolLikePowerGlobalLabel() const;
986 bool IsSymbolLikePowerLocalLabel() const;
987
988 bool IsGlobalPower() const override;
989 bool IsLocalPower() const override;
990 bool IsPower() const override;
991 bool IsNormal() const override;
992
993 bool GetShowPinNames() const override;
994 void SetShowPinNames( bool aShow ) override;
995
996 bool GetShowPinNumbers() const override;
997 void SetShowPinNumbers( bool aShow ) override;
998
999 double Similarity( const SCH_ITEM& aOther ) const override;
1000
1002 std::unordered_set<wxString> GetComponentClassNames( const SCH_SHEET_PATH* aPath ) const;
1003
1004 void DeleteVariant( const KIID_PATH& aPath, const wxString& aVariantName );
1005
1006 void RenameVariant( const KIID_PATH& aPath, const wxString& aOldName, const wxString& aNewName );
1007
1008 void CopyVariant( const KIID_PATH& aPath, const wxString& aSourceVariant,
1009 const wxString& aNewVariant );
1010
1011 std::optional<SCH_SYMBOL_VARIANT> GetVariant( const SCH_SHEET_PATH& aInstance, const wxString& aVariantName ) const;
1012 void AddVariant( const SCH_SHEET_PATH& aInstance, const SCH_SYMBOL_VARIANT& aVariant );
1013
1014 void DeleteVariant( const SCH_SHEET_PATH& aInstance, const wxString& aVariantName )
1015 {
1016 DeleteVariant( aInstance.Path(), aVariantName );
1017 }
1018
1019 void RenameVariant( const SCH_SHEET_PATH& aInstance, const wxString& aOldName,
1020 const wxString& aNewName )
1021 {
1022 RenameVariant( aInstance.Path(), aOldName, aNewName );
1023 }
1024
1025 void CopyVariant( const SCH_SHEET_PATH& aInstance, const wxString& aSourceVariant,
1026 const wxString& aNewVariant )
1027 {
1028 CopyVariant( aInstance.Path(), aSourceVariant, aNewVariant );
1029 }
1030
1031 bool operator==( const SCH_ITEM& aOther ) const override;
1032
1033protected:
1034 void swapData( SCH_ITEM* aItem ) override;
1035
1036private:
1037 BOX2I doGetBoundingBox( bool aIncludePins, bool aIncludeFields ) const;
1038
1039 bool doIsConnected( const VECTOR2I& aPosition ) const override;
1040
1041 void Init( const VECTOR2I& pos = VECTOR2I( 0, 0 ) );
1042
1043 SCH_SYMBOL_INSTANCE* getInstance( const KIID_PATH& aPath );
1044 const SCH_SYMBOL_INSTANCE* getInstance( const KIID_PATH& aPath ) const;
1045
1046 SCH_SYMBOL_INSTANCE* getInstance( const SCH_SHEET_PATH& aPath ) { return getInstance( aPath.Path() ); }
1047 const SCH_SYMBOL_INSTANCE* getInstance( const SCH_SHEET_PATH& aPath ) const { return getInstance( aPath.Path() ); }
1048
1051 const wxString& aVariantName ) const;
1052
1053private:
1056 wxString m_prefix;
1060
1069
1070 std::vector<SCH_FIELD> m_fields;
1071
1072 std::unique_ptr<LIB_SYMBOL> m_part;
1075
1077
1079
1080 std::vector<std::unique_ptr<SCH_PIN>> m_pins;
1081 std::unordered_map<SCH_PIN*, SCH_PIN*> m_pinMap;
1082
1086
1092 std::vector<SCH_SYMBOL_INSTANCE> m_instances;
1093
1098 std::unordered_map<KIID_PATH, size_t> m_instancePathIndex;
1099
1101
1103 static std::unordered_map<TRANSFORM, int> s_transformToOrientationCache;
1104};
1105
1106
1107#endif /* SCH_SYMBOL_H */
BITMAPS
A list of all bitmap identifiers.
BOX2< VECTOR2I > BOX2I
Definition box2.h:918
The base class for create windows for drawing purpose.
A base class for most all the KiCad significant classes used in schematics and boards.
Definition eda_item.h:96
KICAD_T Type() const
Returns the type of object.
Definition eda_item.h:108
EDA_ITEM(EDA_ITEM *parent, KICAD_T idType, bool isSCH_ITEM=false, bool isBOARD_ITEM=false)
Definition eda_item.cpp:37
A collection of #SYMBOL_LIB objects.
Object used to load, save, search, and otherwise manipulate symbol library files.
A logical library item identifier and consists of various portions much like a URI.
Definition lib_id.h:45
Define a library symbol object.
Definition lib_symbol.h:80
EDA_MSG_PANEL items for displaying messages.
Definition msgpanel.h:50
Base plotter engine class.
Definition plotter.h:133
wxString GetName(bool aUseDefaultName=true) const
Return the field name (not translated).
Base class for any item which can be embedded within the SCHEMATIC container class,...
Definition sch_item.h:162
SCHEMATIC * Schematic() const
Search the item hierarchy to find a SCHEMATIC.
Definition sch_item.cpp:268
int GetBodyStyle() const
Definition sch_item.h:242
friend class LIB_SYMBOL
Definition sch_item.h:797
SCH_LAYER_ID GetLayer() const
Return the layer this item is on.
Definition sch_item.h:338
virtual void SetUnit(int aUnit)
Definition sch_item.h:232
SCH_ITEM(EDA_ITEM *aParent, KICAD_T aType, int aUnit=0, int aBodyStyle=0)
Definition sch_item.cpp:52
Handle access to a stack of flattened SCH_SHEET objects by way of a path for creating a flattened sch...
KIID_PATH Path() const
Get the sheet path as an KIID_PATH.
Variant information for a schematic symbol.
Schematic symbol object.
Definition sch_symbol.h:69
wxString GetUnitDisplayName(int aUnit, bool aLabel) const override
Return the display name for a given unit aUnit.
SCH_SYMBOL & operator=(const SCH_SYMBOL &aItem)
int GetUnitProp() const
Definition sch_symbol.h:516
size_t GetFullPinCount() const
std::vector< SCH_SYMBOL_INSTANCE > m_instances
Define the hierarchical path and reference of the symbol.
void UpdatePrefix()
Set the prefix based on the current reference designator.
wxString m_prefix
C, R, U, Q etc - the first character(s) which typically indicate what the symbol is.
wxString GetDescription() const override
std::unordered_map< SCH_PIN *, SCH_PIN * > m_pinMap
Library pin pointer : SCH_PIN indices.
void SetMirrorX(bool aMirror)
Definition sch_symbol.h:315
bool IsSymbolLikePowerGlobalLabel() const
VECTOR2I m_pos
PASSTHROUGH_MODE GetPassthroughMode() const
Definition sch_symbol.h:873
EMBEDDED_FILES * GetEmbeddedFiles() override
SCH_SYMBOLs don't currently support embedded files, but their LIB_SYMBOL counterparts do.
wxString GetSymbolIDAsString() const
Definition sch_symbol.h:160
LIB_ID m_lib_id
Name and library the symbol was loaded from, i.e. 74xx:74LS00.
bool GetExcludedFromSim(const SCH_SHEET_PATH *aInstance=nullptr, const wxString &aVariantName=wxEmptyString) const override
bool HitTest(const VECTOR2I &aPosition, int aAccuracy=0) const override
Test if aPosition is inside or on the boundary of this item.
bool GetShowPinNumbers() const override
wxString GetDatasheet() const
Return the documentation text for the given part alias.
double Similarity(const SCH_ITEM &aOther) const override
Return a measure of how likely the other object is to represent the same object.
void SetLibId(const LIB_ID &aName)
bool HasBrightenedPins()
std::vector< SCH_FIELD > & GetFields()
Return a reference to the vector holding the symbol's fields.
Definition sch_symbol.h:445
BOX2I GetBodyAndPinsBoundingBox() const override
Return a bounding box for the symbol body and pins but not the fields.
wxString GetBodyStyleProp() const override
Definition sch_symbol.h:533
void SetRefProp(const wxString &aRef)
INSPECT_RESULT Visit(INSPECTOR inspector, void *testData, const std::vector< KICAD_T > &aScanTypes) override
May be re-implemented for each derived class in order to handle all the types given by its member dat...
virtual void SetDNP(bool aEnable, const SCH_SHEET_PATH *aInstance=nullptr, const wxString &aVariantName=wxEmptyString) override
void Serialize(google::protobuf::Any &aContainer) const override
Serializes this object to the given Any message.
SCH_ITEM * GetDrawItem(const VECTOR2I &aPosition, KICAD_T aType=TYPE_NOT_INIT)
Return the symbol library item at aPosition that is part of this symbol.
void GetMsgPanelInfo(EDA_DRAW_FRAME *aFrame, std::vector< MSG_PANEL_ITEM > &aList) override
Populate aList of MSG_PANEL_ITEM objects with it's internal state for display purposes.
std::vector< std::unique_ptr< SCH_PIN > > & GetRawPins()
Definition sch_symbol.h:671
const std::vector< SCH_SYMBOL_INSTANCE > & GetInstances() const
Definition sch_symbol.h:128
void SetPosition(const VECTOR2I &aPosition) override
Definition sch_symbol.h:914
void PlotDNP(PLOTTER *aPlotter) const
Plot the red 'X' over the symbol.
bool operator!=(const SCH_SYMBOL &aSymbol) const
void SetShowPinNumbers(bool aShow) override
Set or clear the pin number visibility flag.
wxString m_signalName
bool IsConnectable() const override
Definition sch_symbol.h:844
SYMBOL_ORIENTATION_PROP GetOrientationProp() const
Definition sch_symbol.h:298
int GetY() const
Definition sch_symbol.h:919
SCH_SYMBOL_INSTANCE * getInstance(const KIID_PATH &aPath)
wxString SubReference(int aUnit, bool aAddSeparator=true) const
wxString GetClass() const override
Return the class name.
Definition sch_symbol.h:108
void RemoveInstance(const SCH_SHEET_PATH &aInstancePath)
void SetFieldText(const wxString &aFieldName, const wxString &aFieldText, const SCH_SHEET_PATH *aPath=nullptr, const wxString &aVariantName=wxEmptyString)
void CopyVariant(const SCH_SHEET_PATH &aInstance, const wxString &aSourceVariant, const wxString &aNewVariant)
bool IsAnnotated(const SCH_SHEET_PATH *aSheet) const
Check if the symbol has a valid annotation (reference) for the given sheet path.
void SetMirrorY(bool aMirror)
Definition sch_symbol.h:332
void SetBodyStyleProp(const wxString &aBodyStyle) override
Definition sch_symbol.h:538
bool UseLibIdLookup() const
Definition sch_symbol.h:175
int GetX() const
Definition sch_symbol.h:916
std::vector< SCH_PIN * > GetPins() const override
bool IsMultiBodyStyle() const override
Definition sch_symbol.h:257
bool GetExcludedFromPosFilesProp() const
Definition sch_symbol.h:793
void RemoveField(const wxString &aFieldName)
Remove a user field from the symbol.
void AutoplaceFields(SCH_SCREEN *aScreen, AUTOPLACE_ALGO aAlgo) override
Automatically orient all the fields in the symbol.
wxString GetFieldText(const wxString &aFieldName, const SCH_SHEET_PATH *aPath=nullptr, const wxString &aVariantName=wxEmptyString) const
void SetExcludedFromSim(bool aEnable, const SCH_SHEET_PATH *aInstance=nullptr, const wxString &aVariantName=wxEmptyString) override
Set or clear the exclude from simulation flag.
void SetExcludedFromSimProp(bool aEnable)
Definition sch_symbol.h:768
void SetBodyStyle(int aBodyStyle) override
void SetShowPinNames(bool aShow) override
Set or clear the pin name visibility flag.
wxString GetKeyWords() const override
wxString GetSchSymbolLibraryName() const
wxString GetShownKeyWords(int aDepth=0) const override
const wxString & GetNetChainName() const
Definition sch_symbol.h:883
static bool ClassOf(const EDA_ITEM *aItem)
Definition sch_symbol.h:103
void DeleteVariant(const SCH_SHEET_PATH &aInstance, const wxString &aVariantName)
PASSTHROUGH_MODE m_passthroughMode
bool IsInNetlist() const
void Move(const VECTOR2I &aMoveVector) override
Move the item by aMoveVector to a new position.
Definition sch_symbol.h:809
std::optional< SCH_SYMBOL_VARIANT > GetVariant(const SCH_SHEET_PATH &aInstance, const wxString &aVariantName) const
PIN_MAP_INSTANCE_OVERRIDE GetPinMapOverride(const SCH_SHEET_PATH *aInstance=nullptr, const wxString &aVariantName=wxEmptyString) const
bool GetExcludedFromBoardProp() const
Definition sch_symbol.h:778
void ClearBrightenedPins()
void SetY(int aY)
Definition sch_symbol.h:920
EDA_ITEM * Clone() const override
Create a duplicate of this item with linked list members set to NULL.
bool HasConnectivityChanges(const SCH_ITEM *aItem, const SCH_SHEET_PATH *aInstance=nullptr) const override
Check if aItem has connectivity changes against this object.
bool GetExcludedFromSimProp() const
Definition sch_symbol.h:763
bool GetExcludedFromBOM(const SCH_SHEET_PATH *aInstance=nullptr, const wxString &aVariantName=wxEmptyString) const override
bool IsGlobalPower() const override
bool GetMirrorX() const
Definition sch_symbol.h:327
wxString GetRefProp() const
Definition sch_symbol.h:502
void SetPassthrough(bool aEnable)
Definition sch_symbol.h:878
void SetPinMapOverride(const PIN_MAP_INSTANCE_OVERRIDE &aOverride, const SCH_SHEET_PATH *aInstance=nullptr, const wxString &aVariantName=wxEmptyString)
Set the per-instance pin-to-pad map override (issue #2282).
wxString GetBodyStyleDescription(int aBodyStyle, bool aLabel) const override
bool AddSheetPathReferenceEntryIfMissing(const KIID_PATH &aSheetPath)
Add an instance to the alternate references list (m_instances), if this entry does not already exist.
bool Matches(const EDA_SEARCH_DATA &aSearchData, void *aAuxData) const override
Compare the item against the search criteria in aSearchData.
void SetExcludedFromBOMProp(bool aEnable)
Definition sch_symbol.h:753
static std::unordered_map< TRANSFORM, int > s_transformToOrientationCache
void UpdatePins()
Updates the cache of SCH_PIN objects for each pin.
SCH_FIELD * FindFieldCaseInsensitive(const wxString &aFieldName)
Search for a SCH_FIELD with aFieldName.
const std::unique_ptr< LIB_SYMBOL > & GetLibSymbolRef() const
Definition sch_symbol.h:178
void MirrorVertically(int aCenter) override
Mirror item vertically about aCenter.
bool IsPointClickableAnchor(const VECTOR2I &aPos) const override
void UpdateFields(const SCH_SHEET_PATH *aPath, bool aUpdateStyle, bool aUpdateRef, bool aUpdateOtherFields, bool aResetRef, bool aResetOtherFields)
Restore fields to the original library values.
wxString m_schLibSymbolName
The name used to look up a symbol in the symbol library embedded in a schematic.
void SetRef(const SCH_SHEET_PATH *aSheet, const wxString &aReference)
Set the reference for the given sheet path for this symbol.
const wxString GetValue(bool aResolve, const SCH_SHEET_PATH *aPath, bool aAllowExtraText, const wxString &aVariantName=wxEmptyString) const override
void ClearAnnotation(const SCH_SHEET_PATH *aSheetPath, bool aResetPrefix)
Clear exiting symbol annotation.
SCH_PIN * GetPinByEffectivePadNumber(const wxString &aPadNumber, const SCH_SHEET_PATH *aSheet, const wxString &aVariantName=wxEmptyString) const
Find the pin whose effective footprint pad number (issue #2282) is aPadNumber on aSheet,...
void RenameVariant(const KIID_PATH &aPath, const wxString &aOldName, const wxString &aNewName)
bool IsMultiUnit() const override
Definition sch_symbol.h:248
void SetOrientationProp(SYMBOL_ORIENTATION_PROP aAngle)
Orientation/mirroring access for property manager.
Definition sch_symbol.h:289
bool GetShowPinNames() const override
bool HasDeMorganBodyStyles() const override
std::vector< SCH_FIELD > m_fields
Variable length list of fields.
std::vector< SCH_PIN * > GetAllLibPins() const
const wxString GetFootprintFieldText(bool aResolve, const SCH_SHEET_PATH *aPath, bool aAllowExtraText, const wxString &aVariantName=wxEmptyString) const
int GetBodyStyleCount() const override
Return the number of body styles of the symbol.
void SetOrientation(int aOrientation)
Compute the new transform matrix based on aOrientation for the symbol which is applied to the current...
bool GetDNPProp() const
Definition sch_symbol.h:720
void PlotPins(PLOTTER *aPlotter, bool aDnp) const
Plot just the symbol pins.
const BOX2I GetBoundingBox() const override
Return the orthogonal bounding box of this object for display purposes.
void SetFootprintFieldText(const wxString &aFootprint)
bool doIsConnected(const VECTOR2I &aPosition) const override
Provide the object specific test to see if it is connected to aPosition.
void AddHierarchicalReference(const KIID_PATH &aPath, const wxString &aRef, int aUnit)
Add a full hierarchical reference to this symbol.
std::unordered_map< KIID_PATH, size_t > m_instancePathIndex
Index from an instance's sheet path to its position in m_instances for O(1) lookups.
bool IsMissingLibSymbol() const
Check to see if the library symbol is set to the dummy library symbol.
VECTOR2I GetPosition() const override
Definition sch_symbol.h:913
PIN_MAP_INSTANCE_OVERRIDE resolveDelegatedPinMapOverride(const SCH_SHEET_PATH &aSheet, const wxString &aVariantName) const
Return unit 1's pin-map override for a unit that delegates to it (issue #2282).
std::unique_ptr< LIB_SYMBOL > m_part
A flattened copy of the LIB_SYMBOL from the PROJECT object's libraries.
int GetNextFieldOrdinal() const
Return the next ordinal for a user field for this symbol.
void SetExcludedFromPosFiles(bool aEnable, const SCH_SHEET_PATH *aInstance=nullptr, const wxString &aVariantName=wxEmptyString) override
void rebuildInstancePathIndex()
void swapData(SCH_ITEM *aItem) override
Swap the internal data structures aItem with the schematic item.
bool ResolveTextVar(const SCH_SHEET_PATH *aPath, wxString *token, int aDepth=0) const
Resolve any references to system tokens supported by the symbol.
const std::vector< SCH_FIELD > & GetFields() const
Definition sch_symbol.h:446
SCH_SYMBOL_INSTANCE * getInstance(const SCH_SHEET_PATH &aPath)
bool CanConnect(const SCH_ITEM *aItem) const override
Definition sch_symbol.h:849
void SyncOtherUnits(const SCH_SHEET_PATH &aSourceSheet, SCH_COMMIT &aCommit, PROPERTY_BASE *aProperty, const wxString &aVariantName=wxEmptyString)
Keep fields other than the reference, include/exclude flags, and alternate pin assignments in sync in...
void Init(const VECTOR2I &pos=VECTOR2I(0, 0))
void SetExcludedFromPosFilesProp(bool aEnable)
Definition sch_symbol.h:798
wxString GetShownDescription(int aDepth=0) const override
const LIB_ID & GetLibId() const override
Definition sch_symbol.h:158
bool operator<(const SCH_ITEM &aItem) const override
bool GetPassthrough() const
Definition sch_symbol.h:877
static void BuildLocalPowerIconShape(std::vector< SCH_SHAPE > &aShapeList, const VECTOR2D &aPos, double aSize, double aLineWidth, bool aHorizontal)
Build the local power pin indicator icon shape, at coordinate aPos.
void GetContextualTextVars(wxArrayString *aVars) const
Return the list of system text vars & fields for this symbol.
void SetValueProp(const wxString &aValue)
void SetUnitProp(int aUnit)
Definition sch_symbol.h:527
void RenameVariant(const SCH_SHEET_PATH &aInstance, const wxString &aOldName, const wxString &aNewName)
void SetSchSymbolLibraryName(const wxString &aName)
The name of the symbol in the schematic library symbol list.
Definition sch_symbol.h:173
bool Deserialize(const google::protobuf::Any &aContainer) override
Deserializes the given protobuf message into this object.
void MirrorHorizontally(int aCenter) override
Mirror item horizontally about aCenter.
void SetValueFieldText(const wxString &aValue, const SCH_SHEET_PATH *aInstance=nullptr, const wxString &aVariantName=wxEmptyString)
std::vector< SCH_PIN * > GetLibPins() const
Populate a vector with all the pins from the library object that match the current unit and bodyStyle...
bool UpdateDanglingState(std::vector< DANGLING_END_ITEM > &aItemListByType, std::vector< DANGLING_END_ITEM > &aItemListByPos, const SCH_SHEET_PATH *aPath=nullptr) override
Test if the symbol's dangling state has changed for all pins.
bool GetExcludedFromPosFiles(const SCH_SHEET_PATH *aInstance=nullptr, const wxString &aVariantName=wxEmptyString) const override
bool GetInstance(SCH_SYMBOL_INSTANCE &aInstance, const KIID_PATH &aSheetPath, bool aTestFromEnd=false) const
void AddVariant(const SCH_SHEET_PATH &aInstance, const SCH_SYMBOL_VARIANT &aVariant)
BOX2I doGetBoundingBox(bool aIncludePins, bool aIncludeFields) const
bool GetMirrorY() const
Definition sch_symbol.h:344
SCH_FIELD * AddField(const SCH_FIELD &aField)
Add a field to the symbol.
void SetDNPProp(bool aEnable)
Definition sch_symbol.h:722
bool GetExcludedFromBoard(const SCH_SHEET_PATH *aInstance=nullptr, const wxString &aVariantName=wxEmptyString) const override
std::vector< SCH_PIN * > GetPinsByNumber(const wxString &aNumber) const
Find all symbol pins with the given number.
void GetEndPoints(std::vector< DANGLING_END_ITEM > &aItemList) override
Add the schematic item end points to aItemList if the item has end points.
void SetNetChainName(const wxString &aName)
Definition sch_symbol.h:884
void RemoveField(SCH_FIELD *aField)
Definition sch_symbol.h:464
void SetPassthroughMode(PASSTHROUGH_MODE aMode)
Definition sch_symbol.h:874
void SetX(int aX)
Definition sch_symbol.h:917
std::vector< VECTOR2I > GetConnectionPoints() const override
Add all the connection points for this item to aPoints.
BITMAPS GetMenuImage() const override
Return a pointer to an image to be used in menus.
const SCH_SYMBOL_INSTANCE * getInstance(const SCH_SHEET_PATH &aPath) const
PIN_MAP_INSTANCE_OVERRIDE m_pinMapOverride
Base (no-variant) pin-to-pad map override applied when no variant override exists for the sheet path ...
bool m_isInNetlist
True if the symbol should appear in netlist.
int GetUnitSelection(const SCH_SHEET_PATH *aSheet) const
Return the instance-specific unit selection for the given sheet path.
SCH_PIN * GetPin(const wxString &number) const
Find a symbol pin by number.
wxString GetValueProp() const
Definition sch_symbol.h:509
bool IsLocalPower() const override
void RunOnChildren(const std::function< void(SCH_ITEM *)> &aFunction, RECURSE_MODE aMode) override
int GetUnitCount() const override
Return the number of units per package of the symbol.
void SetPrefix(const wxString &aPrefix)
Definition sch_symbol.h:232
int GetOrientation() const override
Get the display symbol orientation.
void Plot(PLOTTER *aPlotter, bool aBackground, const SCH_PLOT_OPTS &aPlotOpts, int aUnit, int aBodyStyle, const VECTOR2I &aOffset, bool aDimmed) override
Plot the item to aPlotter.
bool IsSymbolLikePowerLocalLabel() const
bool GetExcludedFromBOMProp() const
Definition sch_symbol.h:748
void SetUnitSelection(const SCH_SHEET_PATH *aSheet, int aUnitSelection)
Set the selected unit of this symbol on one sheet.
void SetExcludedFromBoardProp(bool aEnable)
Definition sch_symbol.h:783
void SetExcludedFromBOM(bool aEnable, const SCH_SHEET_PATH *aInstance=nullptr, const wxString &aVariantName=wxEmptyString) override
Set or clear the exclude from schematic bill of materials flag.
void PlotLocalPowerIconShape(PLOTTER *aPlotter) const
Plot the local power pin indicator icon shape.
bool IsNormal() const override
std::unique_ptr< LIB_SYMBOL > & GetLibSymbolRef()
Definition sch_symbol.h:177
std::unordered_set< wxString > GetComponentClassNames(const SCH_SHEET_PATH *aPath) const
Return the component classes this symbol belongs in.
std::vector< std::unique_ptr< SCH_PIN > > m_pins
A SCH_PIN for every #LIB_PIN.
void DeleteVariant(const KIID_PATH &aPath, const wxString &aVariantName)
bool IsReplaceable() const override
Override this method in any derived object that supports test find and replace.
Definition sch_symbol.h:911
void SetLibSymbol(LIB_SYMBOL *aLibSymbol)
Set this schematic symbol library symbol reference to aLibSymbol.
VECTOR2I GetPinPhysicalPosition(const SCH_PIN *Pin) const
BOX2I GetBodyBoundingBox() const override
Return a bounding box for the symbol body but not the pins or fields.
virtual bool GetDNP(const SCH_SHEET_PATH *aInstance=nullptr, const wxString &aVariantName=wxEmptyString) const override
Set or clear the 'Do Not Populate' flag.
const wxString GetRef(const SCH_SHEET_PATH *aSheet, bool aIncludeUnit=false) const override
wxString GetPrefix() const
Definition sch_symbol.h:231
void Rotate(const VECTOR2I &aCenter, bool aRotateCCW) override
Rotate the item around aCenter 90 degrees in the clockwise direction.
wxString GetItemDescription(UNITS_PROVIDER *aUnitsProvider, bool aFull) const override
Return a user-visible description string of this item.
bool IsMovableFromAnchorPoint() const override
Return true for items which are moved with the anchor point at mouse cursor and false for items moved...
bool IsPower() const override
void SetExcludedFromBoard(bool aEnable, const SCH_SHEET_PATH *aInstance=nullptr, const wxString &aVariantName=wxEmptyString) override
void CopyVariant(const KIID_PATH &aPath, const wxString &aSourceVariant, const wxString &aNewVariant)
bool operator==(const SCH_SYMBOL &aSymbol) const
SCH_FIELD * GetField(FIELD_T aFieldType)
Return a mandatory field in this symbol.
Represent a polyline containing arcs as well as line segments: A chain of connected line and/or arc s...
SYMBOL(KICAD_T idType)
Definition symbol.h:61
RECURSE_MODE
Definition eda_item.h:48
INSPECT_RESULT
Definition eda_item.h:42
const INSPECTOR_FUNC & INSPECTOR
std::function passed to nested users by ref, avoids copying std::function.
Definition eda_item.h:89
@ LAYER_WIRE
Definition layer_ids.h:450
AUTOPLACE_ALGO
Definition sch_item.h:65
Definition of the SCH_SHEET_PATH and SCH_SHEET_LIST classes for Eeschema.
std::string toUTFTildaText(const wxString &txt)
Convert a wxString to UTF8 and replace any control characters with a ~, where a control character is ...
std::weak_ptr< LIB_SYMBOL > PART_REF
Definition sch_symbol.h:59
Per-instance override of the active pin map and a sparse delta on top.
Definition pin_map.h:199
A simple container for schematic symbol instance information.
SYMBOL_ORIENTATION_PROP
Definition symbol.h:47
@ SYMBOL_ANGLE_180
Definition symbol.h:50
@ SYMBOL_ANGLE_0
Definition symbol.h:48
@ SYMBOL_ANGLE_90
Definition symbol.h:49
@ SYMBOL_ANGLE_270
Definition symbol.h:51
SYMBOL_ORIENTATION_T
enum used in RotationMiroir()
Definition symbol.h:31
@ SYM_ORIENT_270
Definition symbol.h:38
@ SYM_MIRROR_Y
Definition symbol.h:40
@ SYM_ORIENT_180
Definition symbol.h:37
@ SYM_MIRROR_X
Definition symbol.h:39
@ SYM_NORMAL
Definition symbol.h:32
@ SYM_ORIENT_90
Definition symbol.h:36
@ SYM_ORIENT_0
Definition symbol.h:35
FIELD_T
The set of all field indices assuming an array like sequence that a SCH_COMPONENT or LIB_PART can hol...
KICAD_T
The set of class identification values stored in EDA_ITEM::m_structType.
Definition typeinfo.h:71
@ SCH_LINE_T
Definition typeinfo.h:160
@ SCH_NO_CONNECT_T
Definition typeinfo.h:157
@ TYPE_NOT_INIT
Definition typeinfo.h:74
@ SCH_SYMBOL_T
Definition typeinfo.h:169
@ SCH_DIRECTIVE_LABEL_T
Definition typeinfo.h:168
@ SCH_LABEL_T
Definition typeinfo.h:164
@ SCH_HIER_LABEL_T
Definition typeinfo.h:166
@ SCH_GLOBAL_LABEL_T
Definition typeinfo.h:165
@ SCH_JUNCTION_T
Definition typeinfo.h:156
VECTOR2< int32_t > VECTOR2I
Definition vector2d.h:683
VECTOR2< double > VECTOR2D
Definition vector2d.h:682