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, you may find one here:
20 * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
21 * or you may search the http://www.gnu.org website for the version 2 license,
22 * or you may write to the Free Software Foundation, Inc.,
23 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
24 */
25
26#pragma once
27
28
29#include <eda_text.h>
30#include <sch_item.h>
31#include <template_fieldnames.h>
32#include <general.h>
33#include <string_utils.h>
34#include "scintilla_tricks.h"
35#include <algorithm>
36
37class SCH_EDIT_FRAME;
38class SCH_TEXT;
39
40
42{
44 std::vector<std::unique_ptr<KIFONT::GLYPH>> glyphs;
45};
46
47
48class SCH_FIELD : public SCH_ITEM, public EDA_TEXT
49{
50public:
51 SCH_FIELD(); // For std::map::operator[]
52
53 SCH_FIELD( SCH_ITEM* aParent, FIELD_T aFieldId = FIELD_T::USER,
54 const wxString& aName = wxEmptyString );
55
56 SCH_FIELD( SCH_ITEM* aParent, SCH_TEXT* aText );
57
58 SCH_FIELD( const SCH_FIELD& aText );
59
60 void Serialize( google::protobuf::Any& aContainer ) const override;
61 bool Deserialize( const google::protobuf::Any& aContainer ) override;
62
63 ~SCH_FIELD() override
64 { }
65
66 SCH_FIELD& operator=( const SCH_FIELD& aField );
67
68 static bool ClassOf( const EDA_ITEM* aItem )
69 {
70 return aItem && SCH_FIELD_T == aItem->Type();
71 }
72
73 wxString GetClass() const override
74 {
75 return wxT( "SCH_FIELD" );
76 }
77
78 bool IsType( const std::vector<KICAD_T>& aScanTypes ) const override
79 {
80 if( SCH_ITEM::IsType( aScanTypes ) )
81 return true;
82
83 for( KICAD_T scanType : aScanTypes )
84 {
86 return true;
87 else if ( scanType == SCH_FIELD_LOCATE_VALUE_T && m_id == FIELD_T::VALUE )
88 return true;
89 else if ( scanType == SCH_FIELD_LOCATE_FOOTPRINT_T && m_id == FIELD_T::FOOTPRINT )
90 return true;
91 else if ( scanType == SCH_FIELD_LOCATE_DATASHEET_T && m_id == FIELD_T::DATASHEET )
92 return true;
93 }
94
95 return false;
96 }
97
98 wxString GetFriendlyName() const override
99 {
100 return _( "Field" );
101 }
102
103 bool HasHypertext() const override;
104
105 void DoHypertextAction( EDA_DRAW_FRAME* aFrame, const VECTOR2I& aMousePos ) const override;
106
113 wxString GetName( bool aUseDefaultName = true ) const;
114
118 wxString GetCanonicalName() const;
119
120 void SetName( const wxString& aName );
121
122 void SetText( const wxString& aText ) override;
123
124 void SetText( const wxString& aText, const SCH_SHEET_PATH* aPath, const wxString& aVariantName = wxEmptyString );
125
126 virtual const wxString& GetText() const override { return EDA_TEXT::GetText(); }
127
128 wxString GetText( const SCH_SHEET_PATH* aPath, const wxString& aVariantName = wxEmptyString ) const;
129
130 FIELD_T GetId() const { return m_id; }
131
132 int GetOrdinal() const
133 {
134 return IsMandatory() ? (int) m_id : m_ordinal;
135 }
136 void SetOrdinal( int aOrdinal )
137 {
139 m_ordinal = aOrdinal;
140 }
141
147 wxString GetShownName() const;
148 wxString GetShownText( const SCH_SHEET_PATH* aPath, bool aAllowExtraText, int aDepth = 0,
149 const wxString& aVariantName = wxEmptyString ) const;
150
151 wxString GetShownText( bool aAllowExtraText, int aDepth = 0 ) const override;
152
162 wxString GetFullText( int unit = 1 ) const;
163
169 bool IsEmpty()
170 {
171 wxString name( m_name );
172 wxString value( GetText() );
173
174 return name.Trim().empty() && value.Trim().empty();
175 }
176
177 int GetSchTextSize() const { return GetTextWidth(); }
178 void SetSchTextSize( int aSize ) { SetTextSize( VECTOR2I( aSize, aSize ) ); }
179
180 COLOR4D GetFieldColor() const;
181
182 void SetLastResolvedState( const SCH_ITEM* aItem ) override
183 {
184 const SCH_FIELD* aField = dynamic_cast<const SCH_FIELD*>( aItem );
185
186 if( aField )
188 }
189
190 std::vector<int> ViewGetLayers() const override;
191
193
197 EDA_ANGLE GetDrawRotation() const override;
198
199 KIFONT::FONT* GetDrawFont( const RENDER_SETTINGS* aSettings ) const override;
200
201 const BOX2I GetBoundingBox() const override;
202
207 bool IsHorizJustifyFlipped() const;
208 bool IsVertJustifyFlipped() const;
209
212
215
216 bool IsNameShown() const { return m_showName; }
217 void SetNameShown( bool aShown = true ) { m_showName = aShown; }
218
225 bool IsGeneratedField() const { return m_isGeneratedField; }
226
227 bool CanAutoplace() const { return m_allowAutoPlace; }
228 void SetCanAutoplace( bool aCanPlace ) { m_allowAutoPlace = aCanPlace; }
229
230 void swapData( SCH_ITEM* aItem ) override;
231
232 int GetPenWidth() const override;
233
234 bool IsAutoAdded() const { return m_autoAdded; }
235 void SetAutoAdded( bool aAutoAdded ) { m_autoAdded = aAutoAdded; }
236
237 bool ShowInChooser() const { return m_showInChooser; }
238 void SetShowInChooser( bool aShow = true ) { m_showInChooser = aShow; }
239
240 void ClearCaches() override;
241 void ClearRenderCache() override;
242
243 std::vector<std::unique_ptr<KIFONT::GLYPH>>*
244 GetRenderCache( const wxString& forResolvedText, const VECTOR2I& forPosition, TEXT_ATTRIBUTES& aAttrs ) const;
245
246 void Move( const VECTOR2I& aMoveVector ) override
247 {
248 Offset( aMoveVector );
249 }
250
251 void Rotate( const VECTOR2I& aCenter, bool aRotateCCW ) override;
252
253 void MirrorVertically( int aCenter ) override;
254 void MirrorHorizontally( int aCenter ) override;
255
256 void BeginEdit( const VECTOR2I& aStartPoint ) override;
257 void CalcEdit( const VECTOR2I& aPosition ) override;
258
259 void OnScintillaCharAdded( SCINTILLA_TRICKS* aScintillaTricks, wxStyledTextEvent &aEvent ) const;
260
261 bool Matches( const EDA_SEARCH_DATA& aSearchData, void* aAuxData ) const override;
262
263 bool Replace( const EDA_SEARCH_DATA& aSearchData, void* aAuxData = nullptr ) override;
264
265 wxString GetItemDescription( UNITS_PROVIDER* aUnitsProvider, bool aFull ) const override;
266 void GetMsgPanelInfo( EDA_DRAW_FRAME* aFrame, std::vector<MSG_PANEL_ITEM>& aList ) override;
267
268 BITMAPS GetMenuImage() const override;
269
270 bool IsReplaceable() const override;
271
272 bool IsLocked() const override;
273
275
276 VECTOR2I GetPosition() const override;
277 void SetPosition( const VECTOR2I& aPosition ) override;
278
280
281 bool HitTest( const VECTOR2I& aPosition, int aAccuracy = 0 ) const override;
282 bool HitTest( const BOX2I& aRect, bool aContained, int aAccuracy = 0 ) const override;
283 bool HitTest( const SHAPE_LINE_CHAIN& aPoly, bool aContained ) const override;
284
285 void Plot( PLOTTER* aPlotter, bool aBackground, const SCH_PLOT_OPTS& aPlotOpts,
286 int aUnit, int aBodyStyle, const VECTOR2I& aOffset, bool aDimmed ) override;
287
288 EDA_ITEM* Clone() const override;
289
297 void ImportValues( const SCH_FIELD& aSource );
298
306 void Copy( SCH_FIELD* aTarget ) const;
307
308 bool IsMandatory() const;
309
310 bool operator <( const SCH_ITEM& aItem ) const override;
311
312 double Similarity( const SCH_ITEM& aItem ) const override;
313
314 bool operator==( const SCH_ITEM& aItem ) const override;
315 bool operator==( const SCH_FIELD& aItem ) const;
316
317#if defined(DEBUG)
318 void Show( int nestLevel, std::ostream& os ) const override { ShowDummy( os ); }
319#endif
320
321protected:
323
324 const KIFONT::METRICS& getFontMetrics() const override { return GetFontMetrics(); }
325
338 int compare( const SCH_ITEM& aOther, int aCompareFlags = 0 ) const override;
339
340 void setId( FIELD_T aId );
341
342 wxString getUnescapedText( const SCH_SHEET_PATH* aPath = nullptr,
343 const wxString& aVariantName = wxEmptyString ) const;
344
345private:
348 wxString m_name;
349
354
357
358 mutable std::unique_ptr<SCH_FIELD_RENDER_CACHE_DATA> m_renderCache;
359
361};
362
363
364inline int NextFieldOrdinal( const std::vector<SCH_FIELD>& aFields )
365{
366 int ordinal = 42; // Arbitrarily larger than any mandatory FIELD_T id
367
368 for( const SCH_FIELD& field : aFields )
369 ordinal = std::max( ordinal, field.GetOrdinal() + 1 );
370
371 return ordinal;
372}
373
374
375inline const SCH_FIELD* FindField( const std::vector<SCH_FIELD>& aFields, FIELD_T aFieldId )
376{
377 for( const SCH_FIELD& field : aFields )
378 {
379 if( field.GetId() == aFieldId )
380 return &field;
381 }
382
383 return nullptr;
384}
385
386
387inline SCH_FIELD* FindField( std::vector<SCH_FIELD>& aFields, FIELD_T aFieldId )
388{
389 const std::vector<SCH_FIELD>& constFields = const_cast<const std::vector<SCH_FIELD>&>( aFields );
390 return const_cast<SCH_FIELD*>( FindField( constFields, aFieldId ) );
391}
392
393
394inline const SCH_FIELD* FindField( const std::vector<SCH_FIELD>& aFields, const wxString& aFieldName )
395{
396 for( const SCH_FIELD& field : aFields )
397 {
398 if( field.GetName() == aFieldName )
399 return &field;
400 }
401
402 return nullptr;
403}
404
405
406inline SCH_FIELD* FindField( std::vector<SCH_FIELD>& aFields, const wxString& aFieldName )
407{
408 const std::vector<SCH_FIELD>& constFields = const_cast<const std::vector<SCH_FIELD>&>( aFields );
409 return const_cast<SCH_FIELD*>( FindField( constFields, aFieldName ) );
410}
411
412
413inline wxString GetFieldValue( const std::vector<SCH_FIELD>* aFields, FIELD_T aFieldType )
414{
415 if( !aFields )
416 return wxEmptyString;
417
418 if( const SCH_FIELD* field = FindField( *aFields, aFieldType ) )
419 return field->GetText();
420
421 return wxEmptyString;
422}
423
424
425inline std::string GetFieldValue( const std::vector<SCH_FIELD>* aFields, const wxString& aFieldName,
426 bool aResolve, int aDepth )
427{
428 if( !aFields )
429 return "";
430
431 if( const SCH_FIELD* field = FindField( *aFields, aFieldName ) )
432 return ( aResolve ? field->GetShownText( false, aDepth ) : field->GetText() ).ToStdString();
433
434 return "";
435}
436
437
438inline void SetFieldValue( std::vector<SCH_FIELD>& aFields, const wxString& aFieldName,
439 const std::string& aValue, bool aIsVisible = true,
440 const SCH_SHEET_PATH* aSheetPath = nullptr, const wxString& aVariantName = wxEmptyString )
441{
442 if( !aSheetPath || aVariantName.empty() )
443 {
444 // Without a sheet path this is a local write (usually to the Symbol Properties dialog's copy of the
445 // fields). Variant handling will apply only when the local fields are written back to the symbol.
446
447 if( aValue == "" )
448 {
449 std::erase_if( aFields, [&]( const SCH_FIELD& field )
450 {
451 return field.GetName() == aFieldName;
452 } );
453 return;
454 }
455
456 if( SCH_FIELD* field = FindField( aFields, aFieldName ) )
457 {
458 field->SetText( aValue );
459 return;
460 }
461
462 SCH_ITEM* parent = static_cast<SCH_ITEM*>( aFields.at( 0 ).GetParent() );
463 aFields.emplace_back( parent, FIELD_T::USER, aFieldName );
464
465 aFields.back().SetText( aValue );
466 aFields.back().SetVisible( aIsVisible );
467 return;
468 }
469
470 if( SCH_FIELD* field = FindField( aFields, aFieldName ) )
471 {
472 field->SetText( aValue, aSheetPath, aVariantName );
473 return;
474 }
475
476 SCH_ITEM* parent = static_cast<SCH_ITEM*>( aFields.at( 0 ).GetParent() );
477 aFields.emplace_back( parent, FIELD_T::USER, aFieldName );
478
479 // Since the default variant doesn't have this field at all, we're going to set it to the same value
480 // and visibility as specified for the variant. We therefore don't really have a variant at all, so we
481 // can ignore variant processing here.
482 aFields.back().SetText( aValue );
483 aFields.back().SetVisible( aIsVisible );
484}
const char * name
BITMAPS
A list of all bitmap identifiers.
BOX2< VECTOR2I > BOX2I
Definition box2.h:922
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:100
KICAD_T Type() const
Returns the type of object.
Definition eda_item.h:112
EDA_ITEM(EDA_ITEM *parent, KICAD_T idType, bool isSCH_ITEM=false, bool isBOARD_ITEM=false)
Definition eda_item.cpp:41
const VECTOR2I & GetTextPos() const
Definition eda_text.h:298
void SetTextSize(VECTOR2I aNewSize, bool aEnforceMinTextSize=true)
Definition eda_text.cpp:532
virtual const wxString & GetText() const
Return the string associated with the text object.
Definition eda_text.h:114
int GetTextWidth() const
Definition eda_text.h:289
void Offset(const VECTOR2I &aOffset)
Definition eda_text.cpp:594
EDA_TEXT(const EDA_IU_SCALE &aIuScale, const wxString &aText=wxEmptyString)
Definition eda_text.cpp:102
FONT is an abstract base class for both outline and stroke fonts.
Definition font.h:98
A color representation with 4 components: red, green, blue, alpha.
Definition color4d.h:105
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:322
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:73
void SetOrdinal(int aOrdinal)
Definition sch_field.h:136
COLOR4D m_lastResolvedColor
Definition sch_field.h:360
bool IsAutoAdded() const
Definition sch_field.h:234
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.
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:63
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:177
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:182
bool m_showName
Render the field name in addition to its value.
Definition sch_field.h:350
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:78
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:68
bool IsNameShown() const
Definition sch_field.h:216
bool m_autoAdded
Was this field automatically added to a LIB_SYMBOL?
Definition sch_field.h:355
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:358
bool IsGeneratedField() const
Generated fields are fields whose names are variables like ${VAR}.
Definition sch_field.h:225
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.
virtual const wxString & GetText() const override
Return the string associated with the text object.
Definition sch_field.h:126
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:130
void SetCanAutoplace(bool aCanPlace)
Definition sch_field.h:228
int GetPenWidth() const override
wxString GetCanonicalName() const
Get a non-language-specific name for a field which can be used for storage, variable look-up,...
bool m_isGeneratedField
If the field name is a variable name (e.g.
Definition sch_field.h:352
int m_ordinal
Sort order for non-mandatory fields.
Definition sch_field.h:347
COLOR4D GetFieldColor() const
wxString getUnescapedText(const SCH_SHEET_PATH *aPath=nullptr, const wxString &aVariantName=wxEmptyString) const
wxString GetFriendlyName() const override
Definition sch_field.h:98
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:235
bool operator<(const SCH_ITEM &aItem) const override
FIELD_T m_id
Field id,.
Definition sch_field.h:346
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:274
void setId(FIELD_T aId)
int GetOrdinal() const
Definition sch_field.h:132
bool IsEmpty()
Return true if both the name and value of the field are empty.
Definition sch_field.h:169
wxString GetShownText(const SCH_SHEET_PATH *aPath, bool aAllowExtraText, int aDepth=0, const wxString &aVariantName=wxEmptyString) const
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:238
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:178
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:246
bool CanAutoplace() const
Definition sch_field.h:227
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:237
void ClearCaches() override
void SetText(const wxString &aText) override
VECTOR2I GetParentPosition() const
const KIFONT::METRICS & getFontMetrics() const override
Definition sch_field.h:324
bool m_showInChooser
This field is available as a data column for the chooser.
Definition sch_field.h:356
void OnScintillaCharAdded(SCINTILLA_TRICKS *aScintillaTricks, wxStyledTextEvent &aEvent) const
wxString m_name
Definition sch_field.h:348
void SetNameShown(bool aShown=true)
Definition sch_field.h:217
void Serialize(google::protobuf::Any &aContainer) const override
Serializes this object to the given Any message.
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:351
Base class for any item which can be embedded within the SCHEMATIC container class,...
Definition sch_item.h:168
SCH_ITEM(EDA_ITEM *aParent, KICAD_T aType, int aUnit=0, int aBodyStyle=0)
Definition sch_item.cpp:56
const KIFONT::METRICS & GetFontMetrics() const
Definition sch_item.cpp:783
bool IsType(const std::vector< KICAD_T > &aScanTypes) const override
Check whether the item is one of the listed types.
Definition sch_item.h:183
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...
#define _(s)
SCH_LAYER_ID
Eeschema drawing layers.
Definition layer_ids.h:451
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:438
wxString GetFieldValue(const std::vector< SCH_FIELD > *aFields, FIELD_T aFieldType)
Definition sch_field.h:413
const SCH_FIELD * FindField(const std::vector< SCH_FIELD > &aFields, FIELD_T aFieldId)
Definition sch_field.h:375
int NextFieldOrdinal(const std::vector< SCH_FIELD > &aFields)
Definition sch_field.h:364
std::vector< std::unique_ptr< KIFONT::GLYPH > > glyphs
Definition sch_field.h:44
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:75
@ SCH_FIELD_LOCATE_REFERENCE_T
Definition typeinfo.h:181
@ SCH_FIELD_LOCATE_FOOTPRINT_T
Definition typeinfo.h:183
@ SCH_FIELD_T
Definition typeinfo.h:151
@ SCH_FIELD_LOCATE_VALUE_T
Definition typeinfo.h:182
@ SCH_FIELD_LOCATE_DATASHEET_T
Definition typeinfo.h:184
VECTOR2< int32_t > VECTOR2I
Definition vector2d.h:687