KiCad PCB EDA Suite
Loading...
Searching...
No Matches
sch_field.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) 2022 CERN
6 * Copyright The KiCad Developers, see AUTHORS.txt for contributors.
7 *
8 * This program is free software; you can redistribute it and/or
9 * modify it under the terms of the GNU General Public License
10 * as published by the Free Software Foundation; either version 2
11 * of the License, or (at your option) any later version.
12 *
13 * This program is distributed in the hope that it will be useful,
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 * GNU General Public License for more details.
17 *
18 * You should have received a copy of the GNU General Public License
19 * along with this program. If not, see <https://www.gnu.org/licenses/>.
20 */
21
22#pragma once
23
24
25#include <eda_text.h>
26#include <sch_item.h>
27#include <template_fieldnames.h>
28#include <general.h>
29#include <string_utils.h>
30#include <algorithm>
31
33class wxStyledTextEvent;
34class SCH_EDIT_FRAME;
35class SCH_TEXT;
36
38{
39 class SchematicField;
40}
41
42
44{
46 std::vector<std::unique_ptr<KIFONT::GLYPH>> glyphs;
47};
48
49
50class SCH_FIELD : public SCH_ITEM, public EDA_TEXT
51{
52public:
53 SCH_FIELD(); // For std::map::operator[]
54
55 explicit SCH_FIELD( SCH_ITEM* aParent, FIELD_T aFieldId = FIELD_T::USER, const wxString& aName = wxEmptyString );
56
57 explicit SCH_FIELD( SCH_ITEM* aParent, SCH_TEXT* aText );
58
59 SCH_FIELD( const SCH_FIELD& aText );
60
61 void Serialize( google::protobuf::Any& aContainer ) const override;
62 bool Deserialize( const google::protobuf::Any& aContainer ) override;
63
64 void Serialize( kiapi::schematic::types::SchematicField& aOutput,
65 const EDA_IU_SCALE& aScale ) const;
66 bool Deserialize( const kiapi::schematic::types::SchematicField& aInput,
67 const EDA_IU_SCALE& aScale );
68
69 ~SCH_FIELD() override
70 { }
71
72 SCH_FIELD& operator=( const SCH_FIELD& aField );
73
74 static bool ClassOf( const EDA_ITEM* aItem )
75 {
76 return aItem && SCH_FIELD_T == aItem->Type();
77 }
78
79 wxString GetClass() const override
80 {
81 return wxT( "SCH_FIELD" );
82 }
83
84 bool IsType( const std::vector<KICAD_T>& aScanTypes ) const override
85 {
86 if( SCH_ITEM::IsType( aScanTypes ) )
87 return true;
88
89 for( KICAD_T scanType : aScanTypes )
90 {
92 return true;
93 else if ( scanType == SCH_FIELD_LOCATE_VALUE_T && m_id == FIELD_T::VALUE )
94 return true;
95 else if ( scanType == SCH_FIELD_LOCATE_FOOTPRINT_T && m_id == FIELD_T::FOOTPRINT )
96 return true;
97 else if ( scanType == SCH_FIELD_LOCATE_DATASHEET_T && m_id == FIELD_T::DATASHEET )
98 return true;
99 }
100
101 return false;
102 }
103
104 wxString GetFriendlyName() const override
105 {
106 return _( "Field" );
107 }
108
109 bool HasHypertext() const override;
110
111 void DoHypertextAction( EDA_DRAW_FRAME* aFrame, const VECTOR2I& aMousePos ) const override;
112
119 wxString GetName( bool aUseDefaultName = true ) const;
120
124 wxString GetUntranslatedName() const;
125
131 static bool IsNetclassLabelFieldName( const wxString& aName );
132
133 void SetName( const wxString& aName );
134
135 void SetText( const wxString& aText ) override;
136
137 void SetText( const wxString& aText, const SCH_SHEET_PATH* aPath, const wxString& aVariantName = wxEmptyString );
138
139 virtual const wxString& GetText() const override { return EDA_TEXT::GetText(); }
140
141 wxString GetText( const SCH_SHEET_PATH* aPath, const wxString& aVariantName = wxEmptyString ) const;
142
143 FIELD_T GetId() const { return m_id; }
144
145 int GetOrdinal() const
146 {
147 return IsMandatory() ? (int) m_id : m_ordinal;
148 }
149 void SetOrdinal( int aOrdinal, FIELD_T aType )
150 {
151 m_id = aType;
152 m_ordinal = aOrdinal;
153 }
154
160 wxString GetShownName() const;
161 wxString GetShownText( const SCH_SHEET_PATH* aPath, RESOLUTION_CONTEXT aContext,
162 const wxString& aVariantName = wxEmptyString, int aDepth = 0 ) const;
163
164 wxString GetShownText( RESOLUTION_CONTEXT aContextx, int aDepth = 0 ) const override;
165
175 wxString GetFullText( int unit = 1 ) const;
176
182 bool IsEmpty()
183 {
184 wxString name( m_name );
185 wxString value( GetText() );
186
187 return name.Trim().empty() && value.Trim().empty();
188 }
189
190 int GetSchTextSize() const { return GetTextWidth(); }
191 void SetSchTextSize( int aSize ) { SetTextSize( VECTOR2I( aSize, aSize ) ); }
192
193 COLOR4D GetFieldColor() const;
194
195 void SetLastResolvedState( const SCH_ITEM* aItem ) override
196 {
197 const SCH_FIELD* aField = dynamic_cast<const SCH_FIELD*>( aItem );
198
199 if( aField )
201 }
202
203 std::vector<int> ViewGetLayers() const override;
204
206
210 EDA_ANGLE GetDrawRotation() const override;
211
212 KIFONT::FONT* GetDrawFont( const RENDER_SETTINGS* aSettings ) const override;
213
214 const BOX2I GetBoundingBox() const override;
215
220 bool IsHorizJustifyFlipped() const;
221 bool IsVertJustifyFlipped() const;
222
225
228
229 bool IsNameShown() const { return m_showName; }
230 void SetNameShown( bool aShown = true ) { m_showName = aShown; }
231
238 bool IsGeneratedField() const { return m_isGeneratedField; }
239
240 bool CanAutoplace() const { return m_allowAutoPlace; }
241 void SetCanAutoplace( bool aCanPlace ) { m_allowAutoPlace = aCanPlace; }
242
243 void swapData( SCH_ITEM* aItem ) override;
244
245 int GetPenWidth() const override;
246
247 bool IsAutoAdded() const { return m_autoAdded; }
248 void SetAutoAdded( bool aAutoAdded ) { m_autoAdded = aAutoAdded; }
249
250 bool ShowInChooser() const { return m_showInChooser; }
251 void SetShowInChooser( bool aShow = true ) { m_showInChooser = aShow; }
252
253 void ClearCaches() override;
254 void ClearRenderCache() override;
255
256 std::vector<std::unique_ptr<KIFONT::GLYPH>>*
257 GetRenderCache( const wxString& forResolvedText, const VECTOR2I& forPosition, TEXT_ATTRIBUTES& aAttrs ) const;
258
259 void Move( const VECTOR2I& aMoveVector ) override
260 {
261 Offset( aMoveVector );
262 }
263
264 void Rotate( const VECTOR2I& aCenter, bool aRotateCCW ) override;
265
266 void MirrorVertically( int aCenter ) override;
267 void MirrorHorizontally( int aCenter ) override;
268
269 void BeginEdit( const VECTOR2I& aStartPoint ) override;
270 void CalcEdit( const VECTOR2I& aPosition ) override;
271
272 void OnScintillaCharAdded( SCINTILLA_TRICKS* aScintillaTricks, wxStyledTextEvent &aEvent ) const;
273
274 bool Matches( const EDA_SEARCH_DATA& aSearchData, void* aAuxData ) const override;
275
276 bool Replace( const EDA_SEARCH_DATA& aSearchData, void* aAuxData = nullptr ) override;
277
278 wxString GetItemDescription( UNITS_PROVIDER* aUnitsProvider, bool aFull ) const override;
279 void GetMsgPanelInfo( EDA_DRAW_FRAME* aFrame, std::vector<MSG_PANEL_ITEM>& aList ) override;
280
281 BITMAPS GetMenuImage() const override;
282
283 bool IsReplaceable() const override;
284
285 bool IsLocked() const override;
286
288
289 VECTOR2I GetPosition() const override;
290 void SetPosition( const VECTOR2I& aPosition ) override;
291
293
294 bool HitTest( const VECTOR2I& aPosition, int aAccuracy = 0 ) const override;
295 bool HitTest( const BOX2I& aRect, bool aContained, int aAccuracy = 0 ) const override;
296 bool HitTest( const SHAPE_LINE_CHAIN& aPoly, bool aContained ) const override;
297
298 void Plot( PLOTTER* aPlotter, bool aBackground, const SCH_PLOT_OPTS& aPlotOpts,
299 int aUnit, int aBodyStyle, const VECTOR2I& aOffset, bool aDimmed ) override;
300
301 EDA_ITEM* Clone() const override;
302
310 void ImportValues( const SCH_FIELD& aSource );
311
319 void Copy( SCH_FIELD* aTarget ) const;
320
321 bool IsMandatory() const;
322
323 bool operator <( const SCH_ITEM& aItem ) const override;
324
325 double Similarity( const SCH_ITEM& aItem ) const override;
326
327 bool operator==( const SCH_ITEM& aItem ) const override;
328 bool operator==( const SCH_FIELD& aItem ) const;
329
334 bool HasSameContent( const SCH_FIELD& aOther ) const;
335
336#if defined(DEBUG)
337 void Show( int nestLevel, std::ostream& os ) const override { ShowDummy( os ); }
338#endif
339
340protected:
342
343 const KIFONT::METRICS& getFontMetrics() const override { return GetFontMetrics(); }
344
357 int compare( const SCH_ITEM& aOther, int aCompareFlags = 0 ) const override;
358
359 void setId( FIELD_T aId );
360
361 wxString getUnescapedText( const SCH_SHEET_PATH* aPath = nullptr,
362 const wxString& aVariantName = wxEmptyString ) const;
363
364private:
367 wxString m_name;
368
373
376
377 mutable std::unique_ptr<SCH_FIELD_RENDER_CACHE_DATA> m_renderCache;
378
380};
381
382
383inline int NextFieldOrdinal( const std::vector<SCH_FIELD>& aFields )
384{
385 int ordinal = 42; // Arbitrarily larger than any mandatory FIELD_T id
386
387 for( const SCH_FIELD& field : aFields )
388 ordinal = std::max( ordinal, field.GetOrdinal() + 1 );
389
390 return ordinal;
391}
392
393
394inline const SCH_FIELD* FindField( const std::vector<SCH_FIELD>& aFields, FIELD_T aFieldId )
395{
396 for( const SCH_FIELD& field : aFields )
397 {
398 if( field.GetId() == aFieldId )
399 return &field;
400 }
401
402 return nullptr;
403}
404
405
406inline SCH_FIELD* FindField( std::vector<SCH_FIELD>& aFields, FIELD_T aFieldId )
407{
408 const std::vector<SCH_FIELD>& constFields = const_cast<const std::vector<SCH_FIELD>&>( aFields );
409 return const_cast<SCH_FIELD*>( FindField( constFields, aFieldId ) );
410}
411
412
413inline const SCH_FIELD* FindField( const std::vector<SCH_FIELD>& aFields, const wxString& aFieldName )
414{
415 for( const SCH_FIELD& field : aFields )
416 {
417 if( field.GetName() == aFieldName )
418 return &field;
419 }
420
421 return nullptr;
422}
423
424
425inline SCH_FIELD* FindField( std::vector<SCH_FIELD>& aFields, const wxString& aFieldName )
426{
427 const std::vector<SCH_FIELD>& constFields = const_cast<const std::vector<SCH_FIELD>&>( aFields );
428 return const_cast<SCH_FIELD*>( FindField( constFields, aFieldName ) );
429}
430
431
432inline wxString GetFieldValue( const std::vector<SCH_FIELD>* aFields, FIELD_T aFieldType )
433{
434 if( !aFields )
435 return wxEmptyString;
436
437 if( const SCH_FIELD* field = FindField( *aFields, aFieldType ) )
438 return field->GetText();
439
440 return wxEmptyString;
441}
442
443
444inline std::string GetFieldValue( const std::vector<SCH_FIELD>* aFields, const wxString& aFieldName,
445 bool aResolve, int aDepth )
446{
447 if( !aFields )
448 return "";
449
450 if( const SCH_FIELD* field = FindField( *aFields, aFieldName ) )
451 return ( aResolve ? field->GetShownText( INTERNAL, aDepth ) : field->GetText() ).ToStdString();
452
453 return "";
454}
455
456
457inline void SetFieldValue( std::vector<SCH_FIELD>& aFields, const wxString& aFieldName,
458 const std::string& aValue, bool aIsVisible = true,
459 const SCH_SHEET_PATH* aSheetPath = nullptr, const wxString& aVariantName = wxEmptyString )
460{
461 if( !aSheetPath || aVariantName.empty() )
462 {
463 // Without a sheet path this is a local write (usually to the Symbol Properties dialog's copy of the
464 // fields). Variant handling will apply only when the local fields are written back to the symbol.
465
466 if( aValue == "" )
467 {
468 std::erase_if( aFields, [&]( const SCH_FIELD& field )
469 {
470 return field.GetName() == aFieldName;
471 } );
472 return;
473 }
474
475 if( SCH_FIELD* field = FindField( aFields, aFieldName ) )
476 {
477 field->SetText( aValue );
478 return;
479 }
480
481 SCH_ITEM* parent = static_cast<SCH_ITEM*>( aFields.at( 0 ).GetParent() );
482 aFields.emplace_back( parent, FIELD_T::USER, aFieldName );
483
484 aFields.back().SetText( aValue );
485 aFields.back().SetVisible( aIsVisible );
486 return;
487 }
488
489 if( SCH_FIELD* field = FindField( aFields, aFieldName ) )
490 {
491 field->SetText( aValue, aSheetPath, aVariantName );
492 return;
493 }
494
495 SCH_ITEM* parent = static_cast<SCH_ITEM*>( aFields.at( 0 ).GetParent() );
496 aFields.emplace_back( parent, FIELD_T::USER, aFieldName );
497
498 // Since the default variant doesn't have this field at all, we're going to set it to the same value
499 // and visibility as specified for the variant. We therefore don't really have a variant at all, so we
500 // can ignore variant processing here.
501 aFields.back().SetText( aValue );
502 aFields.back().SetVisible( aIsVisible );
503}
const char * name
BITMAPS
A list of all bitmap identifiers.
BOX2< VECTOR2I > BOX2I
Definition box2.h:914
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:98
KICAD_T Type() const
Returns the type of object.
Definition eda_item.h:110
EDA_ITEM(EDA_ITEM *parent, KICAD_T idType, bool isSCH_ITEM=false, bool isBOARD_ITEM=false)
Definition eda_item.cpp:84
virtual VECTOR2I GetTextPos() const
Definition eda_text.h:313
virtual void SetTextSize(VECTOR2I aNewSize, bool aEnforceMinTextSize=true)
Definition eda_text.cpp:512
virtual const wxString & GetText() const
Return the string associated with the text object.
Definition eda_text.h:118
virtual void Offset(const VECTOR2I &aOffset)
Definition eda_text.cpp:575
virtual int GetTextWidth() const
Definition eda_text.h:304
EDA_TEXT(const EDA_IU_SCALE &aIuScale, const wxString &aText=wxEmptyString)
Definition eda_text.cpp:98
FONT is an abstract base class for both outline and stroke fonts.
Definition font.h:94
A color representation with 4 components: red, green, blue, alpha.
Definition color4d.h:101
Container for all the knowledge about how graphical objects are drawn on any output surface/device.
Base plotter engine class.
Definition plotter.h:136
Schematic editor (Eeschema) main window.
friend class SCH_IO_KICAD_SEXPR_PARSER
Definition sch_field.h:341
void ClearRenderCache() override
int compare(const SCH_ITEM &aOther, int aCompareFlags=0) const override
Provide the draw object specific comparison called by the == and < operators.
wxString GetClass() const override
Return the class name.
Definition sch_field.h:79
COLOR4D m_lastResolvedColor
Definition sch_field.h:379
bool IsAutoAdded() const
Definition sch_field.h:247
GR_TEXT_V_ALIGN_T GetEffectiveVertJustify() const
bool IsMandatory() const
wxString GetItemDescription(UNITS_PROVIDER *aUnitsProvider, bool aFull) const override
Return a user-visible description string of this item.
bool HasSameContent(const SCH_FIELD &aOther) const
Test if this field has the same name, content and presentation as another field, ignoring the owning ...
void Rotate(const VECTOR2I &aCenter, bool aRotateCCW) override
Rotate the item around aCenter 90 degrees in the clockwise direction.
wxString GetFullText(int unit=1) const
Return the text of a field.
~SCH_FIELD() override
Definition sch_field.h:69
const BOX2I GetBoundingBox() const override
Return the orthogonal bounding box of this object for display purposes.
bool IsLocked() const override
void swapData(SCH_ITEM *aItem) override
Swap the internal data structures aItem with the schematic item.
VECTOR2I GetPosition() const override
void SetEffectiveHorizJustify(GR_TEXT_H_ALIGN_T)
int GetSchTextSize() const
Definition sch_field.h:190
bool Replace(const EDA_SEARCH_DATA &aSearchData, void *aAuxData=nullptr) override
Perform a text replace using the find and replace criteria in aSearchData on items that support text ...
void SetLastResolvedState(const SCH_ITEM *aItem) override
Definition sch_field.h:195
bool m_showName
Render the field name in addition to its value.
Definition sch_field.h:369
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 IsType(const std::vector< KICAD_T > &aScanTypes) const override
Check whether the item is one of the listed types.
Definition sch_field.h:84
EDA_ITEM * Clone() const override
Create a duplicate of this item with linked list members set to NULL.
BITMAPS GetMenuImage() const override
Return a pointer to an image to be used in menus.
static bool ClassOf(const EDA_ITEM *aItem)
Definition sch_field.h:74
bool IsNameShown() const
Definition sch_field.h:229
bool m_autoAdded
Was this field automatically added to a LIB_SYMBOL?
Definition sch_field.h:374
double Similarity(const SCH_ITEM &aItem) const override
Return a measure of how likely the other object is to represent the same object.
std::unique_ptr< SCH_FIELD_RENDER_CACHE_DATA > m_renderCache
Definition sch_field.h:377
bool IsGeneratedField() const
Generated fields are fields whose names are variables like ${VAR}.
Definition sch_field.h:238
bool HitTest(const VECTOR2I &aPosition, int aAccuracy=0) const override
Test if aPosition is inside or on the boundary of this item.
SCH_LAYER_ID GetDefaultLayer() const
bool HasHypertext() const override
Indicates that the item has at least one hypertext action.
bool IsHorizJustifyFlipped() const
Return whether the field will be rendered with the horizontal justification inverted due to rotation ...
bool IsVertJustifyFlipped() const
EDA_ANGLE GetDrawRotation() const override
Adjusters to allow EDA_TEXT to draw/print/etc.
void SetEffectiveVertJustify(GR_TEXT_V_ALIGN_T)
void CalcEdit(const VECTOR2I &aPosition) override
Calculate the attributes of an item at aPosition when it is being edited.
void SetOrdinal(int aOrdinal, FIELD_T aType)
Definition sch_field.h:149
virtual const wxString & GetText() const override
Return the string associated with the text object.
Definition sch_field.h:139
bool Matches(const EDA_SEARCH_DATA &aSearchData, void *aAuxData) const override
Compare the item against the search criteria in aSearchData.
void MirrorVertically(int aCenter) override
Mirror item vertically about aCenter.
FIELD_T GetId() const
Definition sch_field.h:143
void SetCanAutoplace(bool aCanPlace)
Definition sch_field.h:241
int GetPenWidth() const override
bool m_isGeneratedField
If the field name is a variable name (e.g.
Definition sch_field.h:371
int m_ordinal
Sort order for non-mandatory fields.
Definition sch_field.h:366
COLOR4D GetFieldColor() const
wxString getUnescapedText(const SCH_SHEET_PATH *aPath=nullptr, const wxString &aVariantName=wxEmptyString) const
wxString GetFriendlyName() const override
Definition sch_field.h:104
bool operator==(const SCH_ITEM &aItem) const override
SCH_FIELD & operator=(const SCH_FIELD &aField)
void ImportValues(const SCH_FIELD &aSource)
Copy parameters from a SCH_FIELD source.
void SetAutoAdded(bool aAutoAdded)
Definition sch_field.h:248
wxString GetUntranslatedName() const
Get the untranslated field name for storage, variable look-up, etc.
bool operator<(const SCH_ITEM &aItem) const override
FIELD_T m_id
Field id,.
Definition sch_field.h:365
void DoHypertextAction(EDA_DRAW_FRAME *aFrame, const VECTOR2I &aMousePos) const override
wxString GetShownName() const
Get the field's name as displayed on the schematic or in the symbol fields table.
bool Deserialize(const google::protobuf::Any &aContainer) override
Deserializes the given protobuf message into this object.
VECTOR2I GetLibPosition() const
Definition sch_field.h:287
void setId(FIELD_T aId)
int GetOrdinal() const
Definition sch_field.h:145
bool IsEmpty()
Return true if both the name and value of the field are empty.
Definition sch_field.h:182
KIFONT::FONT * GetDrawFont(const RENDER_SETTINGS *aSettings) const override
void BeginEdit(const VECTOR2I &aStartPoint) override
Begin drawing a symbol library draw item at aPosition.
void SetShowInChooser(bool aShow=true)
Definition sch_field.h:251
bool IsReplaceable() const override
Override this method in any derived object that supports test find and replace.
void SetSchTextSize(int aSize)
Definition sch_field.h:191
wxString GetShownText(const SCH_SHEET_PATH *aPath, RESOLUTION_CONTEXT aContext, const wxString &aVariantName=wxEmptyString, int aDepth=0) const
GR_TEXT_H_ALIGN_T GetEffectiveHorizJustify() const
std::vector< int > ViewGetLayers() const override
Return the all the layers within the VIEW the object is painted on.
wxString GetName(bool aUseDefaultName=true) const
Return the field name (not translated).
void SetPosition(const VECTOR2I &aPosition) override
void SetName(const wxString &aName)
void Move(const VECTOR2I &aMoveVector) override
Move the item by aMoveVector to a new position.
Definition sch_field.h:259
bool CanAutoplace() const
Definition sch_field.h:240
std::vector< std::unique_ptr< KIFONT::GLYPH > > * GetRenderCache(const wxString &forResolvedText, const VECTOR2I &forPosition, TEXT_ATTRIBUTES &aAttrs) const
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.
bool ShowInChooser() const
Definition sch_field.h:250
void ClearCaches() override
void SetText(const wxString &aText) override
VECTOR2I GetParentPosition() const
const KIFONT::METRICS & getFontMetrics() const override
Definition sch_field.h:343
bool m_showInChooser
This field is available as a data column for the chooser.
Definition sch_field.h:375
void OnScintillaCharAdded(SCINTILLA_TRICKS *aScintillaTricks, wxStyledTextEvent &aEvent) const
wxString m_name
Definition sch_field.h:367
void SetNameShown(bool aShown=true)
Definition sch_field.h:230
void Serialize(google::protobuf::Any &aContainer) const override
Serializes this object to the given Any message.
static bool IsNetclassLabelFieldName(const wxString &aName)
Test whether aName is one of the known translations of the directive-label net class field name (used...
void MirrorHorizontally(int aCenter) override
Mirror item horizontally about aCenter.
void Copy(SCH_FIELD *aTarget) const
Copy parameters of this field to another field.
bool m_allowAutoPlace
This field can be autoplaced.
Definition sch_field.h:370
Base class for any item which can be embedded within the SCHEMATIC container class,...
Definition sch_item.h:170
SCH_ITEM(EDA_ITEM *aParent, KICAD_T aType, int aUnit=0, int aBodyStyle=0)
Definition sch_item.cpp:65
const KIFONT::METRICS & GetFontMetrics() const
bool IsType(const std::vector< KICAD_T > &aScanTypes) const override
Check whether the item is one of the listed types.
Definition sch_item.h:185
Handle access to a stack of flattened SCH_SHEET objects by way of a path for creating a flattened sch...
Add cut/copy/paste, dark theme, autocomplete and brace highlighting to a wxStyleTextCtrl instance.
Represent a polyline containing arcs as well as line segments: A chain of connected line and/or arc s...
RESOLUTION_CONTEXT
Definition common.h:89
@ INTERNAL
Definition common.h:94
#define _(s)
SCH_LAYER_ID
Eeschema drawing layers.
Definition layer_ids.h:471
void SetFieldValue(std::vector< SCH_FIELD > &aFields, const wxString &aFieldName, const std::string &aValue, bool aIsVisible=true, const SCH_SHEET_PATH *aSheetPath=nullptr, const wxString &aVariantName=wxEmptyString)
Definition sch_field.h:457
wxString GetFieldValue(const std::vector< SCH_FIELD > *aFields, FIELD_T aFieldType)
Definition sch_field.h:432
const SCH_FIELD * FindField(const std::vector< SCH_FIELD > &aFields, FIELD_T aFieldId)
Definition sch_field.h:394
int NextFieldOrdinal(const std::vector< SCH_FIELD > &aFields)
Definition sch_field.h:383
std::vector< std::unique_ptr< KIFONT::GLYPH > > glyphs
Definition sch_field.h:46
FIELD_T
The set of all field indices assuming an array like sequence that a SCH_COMPONENT or LIB_PART can hol...
@ USER
The field ID hasn't been set yet; field is invalid.
@ FOOTPRINT
Field Name Module PCB, i.e. "16DIP300".
@ DATASHEET
name of datasheet
@ REFERENCE
Field Reference of part, i.e. "IC21".
@ VALUE
Field Value of part, i.e. "3.3K".
GR_TEXT_H_ALIGN_T
This is API surface mapped to common.types.HorizontalAlignment.
GR_TEXT_V_ALIGN_T
This is API surface mapped to common.types.VertialAlignment.
KICAD_T
The set of class identification values stored in EDA_ITEM::m_structType.
Definition typeinfo.h:70
@ SCH_FIELD_LOCATE_REFERENCE_T
Definition typeinfo.h:176
@ SCH_FIELD_LOCATE_FOOTPRINT_T
Definition typeinfo.h:178
@ SCH_FIELD_T
Definition typeinfo.h:146
@ SCH_FIELD_LOCATE_VALUE_T
Definition typeinfo.h:177
@ SCH_FIELD_LOCATE_DATASHEET_T
Definition typeinfo.h:179
VECTOR2< int32_t > VECTOR2I
Definition vector2d.h:708