KiCad PCB EDA Suite
Loading...
Searching...
No Matches
eda_text.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) 2013 Jean-Pierre Charras, jp.charras at wanadoo.fr
5 * Copyright The KiCad Developers, see AUTHORS.txt for contributors.
6 *
7 * This program is free software; you can redistribute it and/or
8 * modify it under the terms of the GNU General Public License
9 * as published by the Free Software Foundation; either version 2
10 * of the License, or (at your option) any later version.
11 *
12 * This program is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 * GNU General Public License for more details.
16 *
17 * You should have received a copy of the GNU General Public License
18 * along with this program. If not, see <https://www.gnu.org/licenses/>.
19 */
20
21#pragma once
22
23#include <memory>
24#include <mutex>
25#include <vector>
26
27#include <eda_search_data.h>
28#include <font/glyph.h>
30#include <api/serializable.h>
31#include <text_var_dependency.h>
32#include <common.h>
33
34
35class OUTPUTFORMATTER;
36class SHAPE_COMPOUND;
37class SHAPE_POLY_SET;
38struct EDA_IU_SCALE;
39
41{
42 class Text;
43}
44
45
47{
48 wxString text;
49 const KIFONT::FONT* font = nullptr;
52 bool mirrored = false;
53 std::vector<std::unique_ptr<KIFONT::GLYPH>> glyphs;
54};
55
56
57// These are only here for algorithmic safety, not to tell the user what to do.
58// PL_EDITOR has the least resolution (its internal units are microns), so the min size is chosen
59// to yield 1 in PL_EDITOR.
60// The max size chosen is somewhat arbitrary, but no one has complained yet.
61#define TEXT_MIN_SIZE_MM 0.001
62#define TEXT_MAX_SIZE_MM 250.0
63
64
65namespace KIGFX
66{
67 class RENDER_SETTINGS;
68 class COLOR4D;
69}
70
71namespace KIFONT
72{
73 class METRICS;
74 }
75
77using KIGFX::COLOR4D;
78
79
84#define DEFAULT_SIZE_TEXT 50 // default text height (in mils, i.e. 1/1000")
85
86
93class EDA_TEXT : public SERIALIZABLE
94{
95public:
96 EDA_TEXT( const EDA_IU_SCALE& aIuScale, const wxString& aText = wxEmptyString );
97
98 EDA_TEXT( const EDA_TEXT& aText );
99
100 virtual ~EDA_TEXT();
101
102 EDA_TEXT& operator=( const EDA_TEXT& aItem );
103
104 void Serialize( google::protobuf::Any &aContainer ) const override;
105 bool Deserialize( const google::protobuf::Any &aContainer ) override;
106
107 void Serialize( google::protobuf::Any &aContainer, const EDA_IU_SCALE& aScale ) const;
108 bool Deserialize( const google::protobuf::Any &aContainer, const EDA_IU_SCALE& aScale );
109
110 void Serialize( kiapi::common::types::Text& aOutput, const EDA_IU_SCALE& aScale ) const;
111 bool Deserialize( const kiapi::common::types::Text& aInput, const EDA_IU_SCALE& aScale );
112
118 virtual const wxString& GetText() const { return m_text; }
119
128 virtual wxString GetShownText( RESOLUTION_CONTEXT aContext, int aDepth = 0 ) const
129 {
130 if( aContext == RAW_VALUE )
131 return m_text;
132
133 return m_shown_text;
134 }
135
140
148 const std::vector<TEXT_VAR_REF_KEY>& GetTextVarReferences() const;
149
150 virtual void SetText( const wxString& aText );
151
152 wxString EvaluateText( const wxString& aText ) const;
153
158 virtual void SetTextThickness( int aWidth );
159 virtual int GetTextThickness() const { return m_attributes.m_StrokeWidth; };
160
162 {
163 if( GetAutoThickness() )
165 else
166 return GetTextThickness();
167 }
168
169 void SetAutoThickness( bool aAuto );
170 bool GetAutoThickness() const { return GetTextThickness() == 0; };
171
175 int GetEffectiveTextPenWidth( int aDefaultPenWidth = 0 ) const;
176
177 virtual void SetTextAngle( const EDA_ANGLE& aAngle );
178 virtual EDA_ANGLE GetTextAngle() const { return m_attributes.m_Angle; }
179
180 // For property system:
181 void SetTextAngleDegrees( double aOrientation )
182 {
183 SetTextAngle( EDA_ANGLE( aOrientation, DEGREES_T ) );
184 }
185 double GetTextAngleDegrees() const { return m_attributes.m_Angle.AsDegrees(); }
186
192 void SetItalic( bool aItalic );
193
199 void SetItalicFlag( bool aItalic );
200 bool IsItalic() const { return m_attributes.m_Italic; }
201
207 void SetBold( bool aBold );
208
214 void SetBoldFlag( bool aBold );
215 bool IsBold() const { return m_attributes.m_Bold; }
216
224
225 virtual void SetVisible( bool aVisible );
226 virtual bool IsVisible() const { return m_visible; }
227
228 void SetMirrored( bool isMirrored );
229 bool IsMirrored() const { return m_attributes.m_Mirrored; }
230
235 void SetMultilineAllowed( bool aAllow );
236 bool IsMultilineAllowed() const { return m_attributes.m_Multiline; }
237
239 GR_TEXT_H_ALIGN_T GetHorizJustify() const { return m_attributes.m_Halign; };
240
241 void SetVertJustify( GR_TEXT_V_ALIGN_T aType );
242 GR_TEXT_V_ALIGN_T GetVertJustify() const { return m_attributes.m_Valign; };
243
244 void SetKeepUpright( bool aKeepUpright );
245 bool IsKeepUpright() const { return m_attributes.m_KeepUpright; }
246
254
258 void SetAttributes( const EDA_TEXT& aSrc, bool aSetPosition = true );
259
263 void SwapAttributes( EDA_TEXT& aTradingPartner );
264
265 void SwapText( EDA_TEXT& aTradingPartner );
266
267 void CopyText( const EDA_TEXT& aSrc );
268
269 void SetAttributes( const TEXT_ATTRIBUTES& aTextAttrs ) { m_attributes = aTextAttrs; }
270 const TEXT_ATTRIBUTES& GetAttributes() const { return m_attributes; }
271
281 bool Replace( const EDA_SEARCH_DATA& aSearchData );
282
283 bool IsDefaultFormatting() const;
284
285 void SetFont( KIFONT::FONT* aFont );
286 KIFONT::FONT* GetFont() const { return m_attributes.m_Font; }
287
288 void SetUnresolvedFontName( const wxString& aFontName ) { m_unresolvedFontName = aFontName; }
289 wxString GetUnresolvedFontName() const { return m_unresolvedFontName; }
290 bool ResolveFont( const std::vector<wxString>* aEmbeddedFonts );
291
292 wxString GetFontName() const;
293
294 void SetFontProp( const wxString& aFontName );
295 wxString GetFontProp() const;
296
297 void SetLineSpacing( double aLineSpacing );
298 double GetLineSpacing() const { return m_attributes.m_LineSpacing; }
299
300 virtual void SetTextSize( VECTOR2I aNewSize, bool aEnforceMinTextSize = true );
301 virtual VECTOR2I GetTextSize() const { return m_attributes.m_Size; }
302
303 virtual void SetTextWidth( int aWidth );
304 virtual int GetTextWidth() const { return GetTextSize().x; }
305
306 virtual void SetTextHeight( int aHeight );
307 virtual int GetTextHeight() const { return GetTextSize().y; }
308
309 void SetTextColor( const COLOR4D& aColor ) { m_attributes.m_Color = aColor; }
310 COLOR4D GetTextColor() const { return m_attributes.m_Color; }
311
312 virtual void SetTextPos( const VECTOR2I& aPoint );
313 virtual VECTOR2I GetTextPos() const { return m_pos; }
314
315 virtual void SetTextX( int aX );
316 virtual void SetTextY( int aY );
317
318 inline void SetActiveUrl( const wxString& aUrl ) const { m_activeUrl = aUrl; }
319
320 virtual void Offset( const VECTOR2I& aOffset );
321
322 void Empty();
323
324 static GR_TEXT_H_ALIGN_T MapHorizJustify( int aHorizJustify );
325 static GR_TEXT_V_ALIGN_T MapVertJustify( int aVertJustify );
326
334 void Print( const RENDER_SETTINGS* aSettings, const VECTOR2I& aOffset, const COLOR4D& aColor );
335
342 std::shared_ptr<SHAPE_COMPOUND> GetEffectiveTextShape( bool aTriangulate = true,
343 const BOX2I& aBBox = BOX2I(),
344 const EDA_ANGLE& aAngle = ANGLE_0 ) const;
345
353 virtual bool TextHitTest( const VECTOR2I& aPoint, int aAccuracy = 0 ) const;
354
363 virtual bool TextHitTest( const BOX2I& aRect, bool aContains, int aAccuracy = 0 ) const;
364
374 BOX2I GetTextBox( const RENDER_SETTINGS* aSettings, int aLine = -1 ) const;
375
383 int GetInterline( const RENDER_SETTINGS* aSettings ) const;
384
388 wxString GetTextStyleName() const;
389
397 void GetLinePositions( const RENDER_SETTINGS* aSettings, std::vector<VECTOR2I>& aPositions,
398 int aLineCount ) const;
399
405 double Levenshtein( const EDA_TEXT& aOther ) const;
406
407
408 double Similarity( const EDA_TEXT& aOther ) const;
409
417 virtual void Format( OUTPUTFORMATTER* aFormatter, int aControlBits ) const;
418
419 virtual EDA_ANGLE GetDrawRotation() const { return GetTextAngle(); }
420 virtual VECTOR2I GetDrawPos() const { return GetTextPos(); }
421
422 virtual KIFONT::FONT* GetDrawFont( const RENDER_SETTINGS* aSettings ) const;
423
424 virtual void ClearRenderCache();
425 virtual void ClearBoundingBoxCache();
426
427 std::vector<std::unique_ptr<KIFONT::GLYPH>>*
428 GetRenderCache( const KIFONT::FONT* aFont, const wxString& forResolvedText,
429 const VECTOR2I& aOffset = { 0, 0 } ) const;
430
431 // Support for reading the cache from disk.
432 void SetupRenderCache( const wxString& aResolvedText, const KIFONT::FONT* aFont,
433 const EDA_ANGLE& aAngle, const VECTOR2I& aOffset );
434 void AddRenderCacheGlyph( const SHAPE_POLY_SET& aPoly );
435
436 int Compare( const EDA_TEXT* aOther ) const;
437
438 bool operator==( const EDA_TEXT& aRhs ) const { return Compare( &aRhs ) == 0; }
439 bool operator<( const EDA_TEXT& aRhs ) const { return Compare( &aRhs ) < 0; }
440 bool operator>( const EDA_TEXT& aRhs ) const { return Compare( &aRhs ) > 0; }
441
442 virtual bool HasHyperlink() const { return !m_hyperlink.IsEmpty(); }
443 wxString GetHyperlink() const { return m_hyperlink; }
444 void SetHyperlink( wxString aLink ) { m_hyperlink = aLink; }
445 void RemoveHyperlink() { m_hyperlink = wxEmptyString; }
446
453 static bool ValidateHyperlink( const wxString& aURL );
454
463 static bool IsGotoPageHref( const wxString& aHref, wxString* aDestination = nullptr );
464
471 static wxString GotoPageHref( const wxString& aDestination );
472
473protected:
474 virtual const KIFONT::METRICS& getFontMetrics() const;
475
476 virtual void cacheShownText();
477
486 void printOneLineOfText( const RENDER_SETTINGS* aSettings, const VECTOR2I& aOffset,
487 const COLOR4D& aColor, const wxString& aText, const VECTOR2I& aPos );
488
489 bool containsURL() const;
490
495 bool isStrokeFont() const;
496
497protected:
501 wxString m_hyperlink;
502
503 mutable wxString m_activeUrl;
504
505private:
506 wxString m_text;
507 wxString m_shown_text; // Cache of unescaped text for efficient access
509
510 // Populated eagerly in cacheShownText() so reads from concurrent workers
511 // (connection graph, API server, painters) see immutable storage without a
512 // lock. Extracted from raw m_text (not m_shown_text) so backslash-escaped
513 // ${...} literals do not fabricate dependency edges.
514 std::vector<TEXT_VAR_REF_KEY> m_text_var_refs;
515
516 std::reference_wrapper<const EDA_IU_SCALE> m_IuScale;
517
518 mutable std::unique_ptr<EDA_TEXT_RENDER_CACHE_DATA> m_render_cache;
519
525
526 mutable std::map<int, BBOX_CACHE_ENTRY> m_bbox_cache;
527 mutable std::mutex m_bbox_cacheMutex;
528
532 bool m_visible; // For SCH_FIELDs and PCB_FIELDs
533};
534
535
536extern std::ostream& operator<<( std::ostream& aStream, const EDA_TEXT& aAttributes );
537
538
539template<>
540struct std::hash<EDA_TEXT>
541{
542 std::size_t operator()( const EDA_TEXT& aText ) const
543 {
544 return hash_val( aText.GetText(), aText.GetAttributes(), aText.GetTextPos().x,
545 aText.GetTextPos().y );
546 }
547};
BOX2< VECTOR2I > BOX2I
Definition box2.h:927
A mix-in class (via multiple inheritance) that handles texts such as labels, parts,...
Definition eda_text.h:94
std::unique_ptr< EDA_TEXT_RENDER_CACHE_DATA > m_render_cache
Definition eda_text.h:518
void Serialize(google::protobuf::Any &aContainer) const override
Serializes this object to the given Any message.
Definition eda_text.cpp:165
virtual VECTOR2I GetTextSize() const
Definition eda_text.h:301
void SetTextColor(const COLOR4D &aColor)
Definition eda_text.h:309
COLOR4D GetTextColor() const
Definition eda_text.h:310
wxString GetTextStyleName() const
virtual VECTOR2I GetTextPos() const
Definition eda_text.h:313
VECTOR2I m_pos
Definition eda_text.h:531
wxString m_text
Definition eda_text.h:506
std::map< int, BBOX_CACHE_ENTRY > m_bbox_cache
Definition eda_text.h:526
bool IsDefaultFormatting() const
static bool IsGotoPageHref(const wxString &aHref, wxString *aDestination=nullptr)
Check if aHref is a valid internal hyperlink.
void SetFontProp(const wxString &aFontName)
void SetActiveUrl(const wxString &aUrl) const
Definition eda_text.h:318
wxString GetFontName() const
virtual ~EDA_TEXT()
Definition eda_text.cpp:133
bool IsItalic() const
Definition eda_text.h:200
const std::vector< TEXT_VAR_REF_KEY > & GetTextVarReferences() const
Return the set of ${...} references extracted from the source text.
Definition eda_text.cpp:613
bool m_visible
Definition eda_text.h:532
virtual void SetTextSize(VECTOR2I aNewSize, bool aEnforceMinTextSize=true)
Definition eda_text.cpp:495
void SetUnresolvedFontName(const wxString &aFontName)
Definition eda_text.h:288
bool IsMultilineAllowed() const
Definition eda_text.h:236
virtual const wxString & GetText() const
Return the string associated with the text object.
Definition eda_text.h:118
bool IsKeepUpright() const
Definition eda_text.h:245
virtual bool IsVisible() const
Definition eda_text.h:226
virtual void SetTextPos(const VECTOR2I &aPoint)
Definition eda_text.cpp:539
virtual void SetTextX(int aX)
Definition eda_text.cpp:546
virtual int GetTextHeight() const
Definition eda_text.h:307
bool m_shown_text_has_text_var_refs
Definition eda_text.h:508
bool Deserialize(const google::protobuf::Any &aContainer) override
Deserializes the given protobuf message into this object.
Definition eda_text.cpp:195
KIFONT::FONT * GetFont() const
Definition eda_text.h:286
void SetAttributes(const TEXT_ATTRIBUTES &aTextAttrs)
Definition eda_text.h:269
bool ResolveFont(const std::vector< wxString > *aEmbeddedFonts)
Definition eda_text.cpp:466
void SetAttributes(const EDA_TEXT &aSrc, bool aSetPosition=true)
Set the text attributes from another instance.
Definition eda_text.cpp:389
wxString m_shown_text
Definition eda_text.h:507
wxString GetUnresolvedFontName() const
Definition eda_text.h:289
void SetMirrored(bool isMirrored)
Definition eda_text.cpp:349
wxString GetFontProp() const
virtual void SetTextY(int aY)
Definition eda_text.cpp:552
std::vector< std::unique_ptr< KIFONT::GLYPH > > * GetRenderCache(const KIFONT::FONT *aFont, const wxString &forResolvedText, const VECTOR2I &aOffset={ 0, 0 }) const
Definition eda_text.cpp:666
virtual EDA_ANGLE GetDrawRotation() const
Definition eda_text.h:419
wxString m_unresolvedFontName
Definition eda_text.h:530
virtual VECTOR2I GetDrawPos() const
Definition eda_text.h:420
EDA_TEXT & operator=(const EDA_TEXT &aItem)
Definition eda_text.cpp:138
wxString m_hyperlink
A hyperlink URL.
Definition eda_text.h:501
BOX2I GetTextBox(const RENDER_SETTINGS *aSettings, int aLine=-1) const
Useful in multiline texts to calculate the full text or a line area (for zones filling,...
Definition eda_text.cpp:737
virtual bool HasHyperlink() const
Definition eda_text.h:442
virtual wxString GetShownText(RESOLUTION_CONTEXT aContext, int aDepth=0) const
Return the string actually shown after processing of the base text.
Definition eda_text.h:128
void SetVertJustify(GR_TEXT_V_ALIGN_T aType)
Definition eda_text.cpp:373
wxString GetHyperlink() const
Definition eda_text.h:443
virtual void Offset(const VECTOR2I &aOffset)
Definition eda_text.cpp:558
virtual int GetTextWidth() const
Definition eda_text.h:304
virtual void Format(OUTPUTFORMATTER *aFormatter, int aControlBits) const
Output the object to aFormatter in s-expression form.
GR_TEXT_H_ALIGN_T GetHorizJustify() const
Definition eda_text.h:239
virtual void SetTextWidth(int aWidth)
Definition eda_text.cpp:517
virtual KIFONT::FONT * GetDrawFont(const RENDER_SETTINGS *aSettings) const
Definition eda_text.cpp:630
void SetBoldFlag(bool aBold)
Set only the bold flag, without changing the font.
Definition eda_text.cpp:319
bool Replace(const EDA_SEARCH_DATA &aSearchData)
Helper function used in search and replace dialog.
Definition eda_text.cpp:445
void SetupRenderCache(const wxString &aResolvedText, const KIFONT::FONT *aFont, const EDA_ANGLE &aAngle, const VECTOR2I &aOffset)
Definition eda_text.cpp:705
int Compare(const EDA_TEXT *aOther) const
std::reference_wrapper< const EDA_IU_SCALE > m_IuScale
Definition eda_text.h:516
bool HasTextVars() const
Indicates the ShownText has text var references which need to be processed.
Definition eda_text.h:139
bool operator>(const EDA_TEXT &aRhs) const
Definition eda_text.h:440
std::mutex m_bbox_cacheMutex
Definition eda_text.h:527
virtual void SetVisible(bool aVisible)
Definition eda_text.cpp:342
bool containsURL() const
Definition eda_text.cpp:992
EDA_TEXT(const EDA_IU_SCALE &aIuScale, const wxString &aText=wxEmptyString)
Definition eda_text.cpp:98
static wxString GotoPageHref(const wxString &aDestination)
Generate a href to a page in the current schematic.
void MigrateLegacyBoldStrokeWidth()
Migrate a pre-v11 bold stroke text so its stored thickness holds the base (non-bold) width.
Definition eda_text.cpp:327
wxString m_activeUrl
Definition eda_text.h:503
virtual void ClearBoundingBoxCache()
Definition eda_text.cpp:658
bool GetAutoThickness() const
Definition eda_text.h:170
double GetLineSpacing() const
Definition eda_text.h:298
double Similarity(const EDA_TEXT &aOther) const
void SetLineSpacing(double aLineSpacing)
Definition eda_text.cpp:487
wxString EvaluateText(const wxString &aText) const
Definition eda_text.cpp:619
void AddRenderCacheGlyph(const SHAPE_POLY_SET &aPoly)
Definition eda_text.cpp:720
void Empty()
Definition eda_text.cpp:580
virtual void SetTextThickness(int aWidth)
The TextThickness is that set by the user.
Definition eda_text.cpp:245
virtual bool TextHitTest(const VECTOR2I &aPoint, int aAccuracy=0) const
Test if aPoint is within the bounds of this object.
Definition eda_text.cpp:873
void FlipHJustify()
Definition eda_text.h:247
virtual void SetTextHeight(int aHeight)
Definition eda_text.cpp:528
virtual void cacheShownText()
Definition eda_text.cpp:587
static GR_TEXT_H_ALIGN_T MapHorizJustify(int aHorizJustify)
Definition eda_text.cpp:70
virtual void ClearRenderCache()
Definition eda_text.cpp:652
virtual EDA_ANGLE GetTextAngle() const
Definition eda_text.h:178
void RemoveHyperlink()
Definition eda_text.h:445
const TEXT_ATTRIBUTES & GetAttributes() const
Definition eda_text.h:270
void SetBold(bool aBold)
Set the text to be bold - this will also update the font if needed.
Definition eda_text.cpp:305
static bool ValidateHyperlink(const wxString &aURL)
Check if aURL is a valid hyperlink.
void SetItalicFlag(bool aItalic)
Set only the italic flag, without changing the font.
Definition eda_text.cpp:297
void SetAutoThickness(bool aAuto)
Definition eda_text.cpp:253
bool IsMirrored() const
Definition eda_text.h:229
int GetEffectiveTextPenWidth(int aDefaultPenWidth=0) const
The EffectiveTextPenWidth uses the text thickness if > 1 or aDefaultPenWidth.
Definition eda_text.cpp:422
void SwapAttributes(EDA_TEXT &aTradingPartner)
Swap the text attributes of the two involved instances.
Definition eda_text.cpp:409
void Print(const RENDER_SETTINGS *aSettings, const VECTOR2I &aOffset, const COLOR4D &aColor)
Print this text object to the device context aDC.
Definition eda_text.cpp:892
double GetTextAngleDegrees() const
Definition eda_text.h:185
void GetLinePositions(const RENDER_SETTINGS *aSettings, std::vector< VECTOR2I > &aPositions, int aLineCount) const
Populate aPositions with the position of each line of a multiline text, according to the vertical jus...
Definition eda_text.cpp:914
virtual const KIFONT::METRICS & getFontMetrics() const
Definition eda_text.cpp:646
std::shared_ptr< SHAPE_COMPOUND > GetEffectiveTextShape(bool aTriangulate=true, const BOX2I &aBBox=BOX2I(), const EDA_ANGLE &aAngle=ANGLE_0) const
build a list of segments (SHAPE_SEGMENT) to describe a text shape.
bool operator<(const EDA_TEXT &aRhs) const
Definition eda_text.h:439
bool IsBold() const
Definition eda_text.h:215
bool isStrokeFont() const
Return true if this text is (or, while a font resolution is still pending, is named as) a stroke font...
Definition eda_text.cpp:271
void SetTextAngleDegrees(double aOrientation)
Definition eda_text.h:181
void SetHyperlink(wxString aLink)
Definition eda_text.h:444
static GR_TEXT_V_ALIGN_T MapVertJustify(int aVertJustify)
Definition eda_text.cpp:84
void SetKeepUpright(bool aKeepUpright)
Definition eda_text.cpp:381
void CopyText(const EDA_TEXT &aSrc)
Definition eda_text.cpp:238
GR_TEXT_V_ALIGN_T GetVertJustify() const
Definition eda_text.h:242
int GetInterline(const RENDER_SETTINGS *aSettings) const
Return the distance between two lines of text.
Definition eda_text.cpp:730
int GetTextThicknessProperty() const
Definition eda_text.h:161
virtual int GetTextThickness() const
Definition eda_text.h:159
virtual void SetText(const wxString &aText)
Definition eda_text.cpp:231
double Levenshtein(const EDA_TEXT &aOther) const
Return the levenstein distance between two texts.
virtual void SetTextAngle(const EDA_ANGLE &aAngle)
Definition eda_text.cpp:263
std::vector< TEXT_VAR_REF_KEY > m_text_var_refs
Definition eda_text.h:514
void SetItalic(bool aItalic)
Set the text to be italic - this will also update the font if needed.
Definition eda_text.cpp:285
void SwapText(EDA_TEXT &aTradingPartner)
Definition eda_text.cpp:401
bool operator==(const EDA_TEXT &aRhs) const
Definition eda_text.h:438
void SetMultilineAllowed(bool aAllow)
Definition eda_text.cpp:357
void SetFont(KIFONT::FONT *aFont)
Definition eda_text.cpp:458
void printOneLineOfText(const RENDER_SETTINGS *aSettings, const VECTOR2I &aOffset, const COLOR4D &aColor, const wxString &aText, const VECTOR2I &aPos)
Print each line of this EDA_TEXT.
Definition eda_text.cpp:959
void SetHorizJustify(GR_TEXT_H_ALIGN_T aType)
Definition eda_text.cpp:365
TEXT_ATTRIBUTES m_attributes
Definition eda_text.h:529
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.
An interface used to output 8 bit text in a convenient way.
Definition richio.h:294
Interface for objects that can be serialized to Protobuf messages.
Represent a set of closed polygons.
RESOLUTION_CONTEXT
Definition common.h:87
@ RAW_VALUE
Definition common.h:94
static constexpr EDA_ANGLE ANGLE_0
Definition eda_angle.h:422
@ DEGREES_T
Definition eda_angle.h:31
std::ostream & operator<<(std::ostream &aStream, const EDA_TEXT &aAttributes)
static constexpr std::size_t hash_val(const Types &... args)
Definition hash.h:47
The Cairo implementation of the graphics abstraction layer.
Definition eda_group.h:30
Definition eda_text.h:521
VECTOR2I m_pos
Definition eda_text.h:522
BOX2I m_bbox
Definition eda_text.h:523
const KIFONT::FONT * font
Definition eda_text.h:49
std::vector< std::unique_ptr< KIFONT::GLYPH > > glyphs
Definition eda_text.h:53
std::size_t operator()(const EDA_TEXT &aText) const
Definition eda_text.h:542
GR_TEXT_H_ALIGN_T
This is API surface mapped to common.types.HorizontalAlignment.
@ GR_TEXT_H_ALIGN_RIGHT
@ GR_TEXT_H_ALIGN_LEFT
GR_TEXT_V_ALIGN_T
This is API surface mapped to common.types.VertialAlignment.
VECTOR2< int32_t > VECTOR2I
Definition vector2d.h:683