KiCad PCB EDA Suite
|
Implement a stroke font drawing. More...
#include <stroke_font.h>
Public Member Functions | |
STROKE_FONT () | |
bool | IsStroke () const override |
double | GetInterline (double aGlyphHeight, const METRICS &aFontMetrics) const override |
Compute the distance (interline) between 2 lines of text (for multiline texts). | |
VECTOR2I | GetTextAsGlyphs (BOX2I *aBoundingBox, std::vector< std::unique_ptr< GLYPH > > *aGlyphs, const wxString &aText, const VECTOR2I &aSize, const VECTOR2I &aPosition, const EDA_ANGLE &aAngle, bool aMirror, const VECTOR2I &aOrigin, TEXT_STYLE_FLAGS aTextStyle) const override |
Convert text string to an array of GLYPHs. | |
virtual bool | IsOutline () const |
virtual bool | IsBold () const |
virtual bool | IsItalic () const |
const wxString & | GetName () const |
const char * | NameAsToken () const |
void | Draw (KIGFX::GAL *aGal, const wxString &aText, const VECTOR2I &aPosition, const VECTOR2I &aCursor, const TEXT_ATTRIBUTES &aAttributes, const METRICS &aFontMetrics) const |
Draw a string. | |
void | Draw (KIGFX::GAL *aGal, const wxString &aText, const VECTOR2I &aPosition, const TEXT_ATTRIBUTES &aAttributes, const METRICS &aFontMetrics) const |
VECTOR2I | StringBoundaryLimits (const wxString &aText, const VECTOR2I &aSize, int aThickness, bool aBold, bool aItalic, const METRICS &aFontMetrics) const |
Compute the boundary limits of aText (the bounding box of all shapes). | |
void | LinebreakText (wxString &aText, int aColumnWidth, const VECTOR2I &aGlyphSize, int aThickness, bool aBold, bool aItalic) const |
Insert characters into text to ensure that no lines are wider than aColumnWidth. | |
Static Public Member Functions | |
static STROKE_FONT * | LoadFont (const wxString &aFontName) |
Load a stroke font. | |
static bool | IsStroke (const wxString &aFontName) |
static FONT * | GetFont (const wxString &aFontName=wxEmptyString, bool aBold=false, bool aItalic=false, const std::vector< wxString > *aEmbeddedFiles=nullptr, bool aForDrawingSheet=false) |
Protected Member Functions | |
unsigned | linesCount (const wxString &aText) const |
Returns number of lines for a given text. | |
void | drawSingleLineText (KIGFX::GAL *aGal, BOX2I *aBoundingBox, const wxString &aText, const VECTOR2I &aPosition, const VECTOR2I &aSize, const EDA_ANGLE &aAngle, bool aMirror, const VECTOR2I &aOrigin, bool aItalic, bool aUnderline, const METRICS &aFontMetrics) const |
Draws a single line of text. | |
VECTOR2I | boundingBoxSingleLine (BOX2I *aBBox, const wxString &aText, const VECTOR2I &aPosition, const VECTOR2I &aSize, bool aItalic, const METRICS &aFontMetrics) const |
Computes the bounding box for a single line of text. | |
void | getLinePositions (const wxString &aText, const VECTOR2I &aPosition, wxArrayString &aTextLines, std::vector< VECTOR2I > &aPositions, std::vector< VECTOR2I > &aExtents, const TEXT_ATTRIBUTES &aAttrs, const METRICS &aFontMetrics) const |
VECTOR2I | drawMarkup (BOX2I *aBoundingBox, std::vector< std::unique_ptr< GLYPH > > *aGlyphs, const wxString &aText, const VECTOR2I &aPosition, const VECTOR2I &aSize, const EDA_ANGLE &aAngle, bool aMirror, const VECTOR2I &aOrigin, TEXT_STYLE_FLAGS aTextStyle, const METRICS &aFontMetrics) const |
void | wordbreakMarkup (std::vector< std::pair< wxString, int > > *aWords, const wxString &aText, const VECTOR2I &aSize, TEXT_STYLE_FLAGS aTextStyle) const |
Protected Attributes | |
wxString | m_fontName |
Font name. | |
wxString | m_fontFileName |
Font file name. | |
Private Member Functions | |
void | loadNewStrokeFont (const char *const aNewStrokeFont[], int aNewStrokeFontSize) |
Load the standard KiCad stroke font. | |
Static Private Member Functions | |
static FONT * | getDefaultFont () |
Private Attributes | |
const std::vector< std::shared_ptr< GLYPH > > * | m_glyphs |
const std::vector< BOX2D > * | m_glyphBoundingBoxes |
double | m_maxGlyphWidth |
Static Private Attributes | |
static FONT * | s_defaultFont = nullptr |
static std::map< std::tuple< wxString, bool, bool, bool >, FONT * > | s_fontMap |
Implement a stroke font drawing.
A stroke font is composed of lines.
Definition at line 53 of file stroke_font.h.
STROKE_FONT::STROKE_FONT | ( | ) |
Definition at line 57 of file stroke_font.cpp.
Referenced by LoadFont().
|
protectedinherited |
Computes the bounding box for a single line of text.
Multiline texts should be split before using the function.
aBBox | is an optional pointer to be filled with the bounding box. |
aText | is the text to be drawn. |
aPosition | is text position. |
aSize | is the cap-height and em-width of the text. |
Definition at line 465 of file font.cpp.
References ANGLE_0, and KIFONT::FONT::drawMarkup().
Referenced by KIFONT::FONT::getLinePositions().
|
inlineinherited |
|
inherited |
Draw a string.
aGal | is the graphics context. |
aText | is the text to be drawn. |
aPosition | is the text position in world coordinates. |
aCursor | is the current text position (for multiple text blocks within a single text object, such as a run of superscript characters) |
aAttrs | are the styling attributes of the text, including its rotation |
aGal | |
aText | is the text to be drawn. |
aPosition | is the text object position in world coordinates. |
aCursor | is the current text position (for multiple text blocks within a single text object, such as a run of superscript characters) |
aAttrs | are the styling attributes of the text, including its rotation |
Definition at line 258 of file font.cpp.
References KIFONT::FONT::drawSingleLineText(), KIFONT::FONT::getLinePositions(), TEXT_ATTRIBUTES::m_Angle, TEXT_ATTRIBUTES::m_Italic, TEXT_ATTRIBUTES::m_Mirrored, TEXT_ATTRIBUTES::m_Size, TEXT_ATTRIBUTES::m_StrokeWidth, TEXT_ATTRIBUTES::m_Underlined, and KIGFX::GAL::SetLineWidth().
Referenced by BOARD_ADAPTER::addText(), KIGFX::GAL::BitmapText(), KIGFX::DS_PAINTER::draw(), KIGFX::PCB_PAINTER::draw(), KIGFX::PREVIEW::DrawTextNextToCursor(), drawTicksAlongLine(), EDA_TEXT::GetEffectiveTextShape(), GRPrintText(), KIGFX::knockoutText(), PLOTTER::PlotText(), KIGFX::PCB_PAINTER::strokeText(), KIGFX::strokeText(), PLOTTER::Text(), PCB_TEXT::TransformTextToPolySet(), PCB_TEXTBOX::TransformTextToPolySet(), TUNING_STATUS_VIEW_ITEM::ViewDraw(), ROUTER_STATUS_VIEW_ITEM::ViewDraw(), and KIGFX::ANCHOR_DEBUG::ViewDraw().
|
protectedinherited |
Definition at line 384 of file font.cpp.
References MARKUP_CACHE::Get(), MARKUP::MARKUP_PARSER::Parse(), MARKUP_CACHE::Put(), MARKUP_CACHE::ENTRY::root, s_markupCache, s_markupCacheMutex, MARKUP_CACHE::ENTRY::source, and TO_UTF8.
Referenced by KIFONT::FONT::boundingBoxSingleLine(), KIFONT::FONT::drawSingleLineText(), KIFONT::OUTLINE_FONT::GetLinesAsGlyphs(), and KIFONT::FONT::StringBoundaryLimits().
|
protectedinherited |
Draws a single line of text.
Multiline texts should be split before using the function.
aGal | is a pointer to the graphics abstraction layer, or nullptr (nothing is drawn) |
aBBox | is an optional pointer to be filled with the bounding box. |
aText | is the text to be drawn. |
aPosition | is text position. |
aSize | is the cap-height and em-width of the text |
aAngle | is text angle. |
aMirror | is true if text should be drawn mirrored, false otherwise. |
aOrigin | is the point around which the text should be rotated, mirrored, etc. |
Definition at line 410 of file font.cpp.
References KIGFX::GAL::DrawGlyphs(), and KIFONT::FONT::drawMarkup().
Referenced by KIFONT::FONT::Draw().
|
staticprivateinherited |
Definition at line 137 of file font.cpp.
References LoadFont(), and KIFONT::FONT::s_defaultFont.
Referenced by KIFONT::FONT::GetFont().
|
staticinherited |
Definition at line 146 of file font.cpp.
References KIFONT::FONT::getDefaultFont(), KICAD_FONT_NAME, KIFONT::OUTLINE_FONT::LoadFont(), and KIFONT::FONT::s_fontMap.
Referenced by LABEL_MANAGER::Add(), BOARD_ADAPTER::addText(), PCB_IO_IPC2581::addText(), SCH_EASYEDAPRO_PARSER::ApplyFontStyle(), KIGFX::GAL::BitmapText(), BOOST_AUTO_TEST_CASE(), KIGFX::boxText(), ALTIUM_PCB::ConvertTexts6ToEdaTextSettings(), PCB_TEXT::Deserialize(), KIGFX::DS_PAINTER::draw(), KIGFX::PCB_PAINTER::draw(), KIGFX::SCH_PAINTER::draw(), KIGFX::PREVIEW::DrawTextNextToCursor(), drawTicksAlongLine(), EDA_TEXT::getDrawFont(), SCH_FIELD::getDrawFont(), SCH_TEXT::getDrawFont(), SCH_TEXTBOX::getDrawFont(), KIGFX::SCH_PAINTER::getFont(), FONT_CHOICE::GetFontSelection(), SCH_FIELD::GetRenderCache(), GRPrintText(), GRTextWidth(), FEATURES_MANAGER::InitFeatureList(), KIGFX::knockoutText(), PCB_IO_KICAD_SEXPR_PARSER::Parse(), PCB_IO_EASYEDAPRO_PARSER::ParseBoard(), SCH_IO_KICAD_SEXPR_PARSER::ParseSchematic(), SCH_EASYEDA_PARSER::ParseSchematic(), SCH_IO_KICAD_SEXPR_PARSER::ParseSymbol(), SCH_EASYEDA_PARSER::ParseSymbolShapes(), DRAWING_SHEET_PARSER::parseText(), PCB_IO_EASYEDA_PARSER::ParseToBoardItemContainer(), SCH_FIELD::Plot(), SCH_LABEL_BASE::Plot(), SCH_TEXT::Plot(), PlotDrawingSheet(), SCH_PIN::PlotPinTexts(), BRDITEMS_PLOTTER::PlotText(), PLOTTER::PlotText(), SCH_FIELD::Print(), SCH_TEXT::Print(), EDA_TEXT::printOneLineOfText(), SCH_PIN::printPinElectricalTypeName(), SCH_PIN::printPinTexts(), DIALOG_GLOBAL_EDIT_TEXT_AND_GRAPHICS::processItem(), PIN_LAYOUT_CACHE::recomputeCaches(), SCH_IO_KICAD_SEXPR_PARSER::removeEntryInFontTextMap(), DRC_TEST_PROVIDER_TEXT_DIMS::Run(), EDA_TEXT::SetBold(), EDA_TEXT::SetFontIndex(), EDA_TEXT::SetItalic(), FIELDS_GRID_TABLE::SetValue(), KIGFX::PCB_PAINTER::strokeText(), KIGFX::strokeText(), PLOTTER::Text(), PDF_PLOTTER::Text(), TUNING_STATUS_VIEW_ITEM::ViewDraw(), ROUTER_STATUS_VIEW_ITEM::ViewDraw(), and KIGFX::ANCHOR_DEBUG::ViewDraw().
|
overridevirtual |
Compute the distance (interline) between 2 lines of text (for multiline texts).
This is the distance between baselines, not the space between line bounding boxes.
Implements KIFONT::FONT.
Definition at line 194 of file stroke_font.cpp.
References KIFONT::METRICS::GetInterline().
|
protectedinherited |
Definition at line 179 of file font.cpp.
References KIFONT::FONT::boundingBoxSingleLine(), KIFONT::FONT::GetInterline(), GR_TEXT_H_ALIGN_CENTER, GR_TEXT_H_ALIGN_INDETERMINATE, GR_TEXT_H_ALIGN_LEFT, GR_TEXT_H_ALIGN_RIGHT, GR_TEXT_V_ALIGN_BOTTOM, GR_TEXT_V_ALIGN_CENTER, GR_TEXT_V_ALIGN_INDETERMINATE, GR_TEXT_V_ALIGN_TOP, KIFONT::FONT::IsStroke(), TEXT_ATTRIBUTES::m_Halign, TEXT_ATTRIBUTES::m_Italic, TEXT_ATTRIBUTES::m_LineSpacing, TEXT_ATTRIBUTES::m_Size, TEXT_ATTRIBUTES::m_StrokeWidth, TEXT_ATTRIBUTES::m_Valign, wxStringSplit(), VECTOR2< T >::x, and VECTOR2< T >::y.
Referenced by KIFONT::FONT::Draw(), and KIFONT::OUTLINE_FONT::GetLinesAsGlyphs().
|
inlineinherited |
Definition at line 149 of file font.h.
Referenced by TEXT_ATTRIBUTES::Compare(), ALTIUM_PCB::ConvertTexts6ToEdaTextSettings(), DS_DATA_MODEL_IO::format(), EDA_TEXT::GetFontIndex(), EDA_TEXT::GetFontName(), FIELDS_GRID_TABLE::GetValue(), operator<<(), EDA_TEXT::SetBold(), FONT_CHOICE::SetFontSelection(), and EDA_TEXT::SetItalic().
|
overridevirtual |
Convert text string to an array of GLYPHs.
aBBox | pointer to a BOX2I that will set to the bounding box, or nullptr |
aGlyphs | storage for the returned GLYPHs |
aText | text to convert to polygon/polyline |
aSize | is the cap-height and em-width of the text |
aPosition | position of text (cursor position before this text) |
aAngle | text angle |
aMirror | is true if text should be drawn mirrored, false otherwise. |
aOrigin | is the point around which the text should be rotated, mirrored, etc. |
aTextStyle | text style flags |
Implements KIFONT::FONT.
Definition at line 202 of file stroke_font.cpp.
References KIFONT::STROKE_GLYPH::BoundingBox(), cursor, BOX2< Vec >::GetEnd(), ITALIC_TILT, KiROUND(), m_glyphBoundingBoxes, m_glyphs, BOX2< Vec >::Normalize(), BOX2< Vec >::SetEnd(), BOX2< Vec >::SetOrigin(), KIFONT::STROKE_GLYPH::Transform(), VECTOR2< T >::x, and VECTOR2< T >::y.
Referenced by BOOST_AUTO_TEST_CASE().
|
inlinevirtualinherited |
Reimplemented in KIFONT::OUTLINE_FONT.
Definition at line 140 of file font.h.
Referenced by operator<<().
|
inlinevirtualinherited |
Reimplemented in KIFONT::OUTLINE_FONT.
Definition at line 141 of file font.h.
Referenced by operator<<().
|
inlinevirtualinherited |
Reimplemented in KIFONT::OUTLINE_FONT.
Definition at line 139 of file font.h.
Referenced by ALTIUM_PCB::ConvertTexts6ToEdaTextSettings(), KIGFX::PCB_PAINTER::draw(), KIGFX::SCH_PAINTER::draw(), PCB_IO_KICAD_SEXPR::format(), EDA_TEXT::GetEffectiveTextShape(), EDA_TEXT::GetRenderCache(), SCH_FIELD::GetRenderCache(), operator<<(), SCH_TEXT::Plot(), SCH_TEXT::Print(), DRC_TEST_PROVIDER_TEXT_DIMS::Run(), KIFONT::FONT::StringBoundaryLimits(), KIGFX::PCB_PAINTER::strokeText(), and KIGFX::strokeText().
|
inlineoverridevirtual |
Reimplemented from KIFONT::FONT.
Definition at line 58 of file stroke_font.h.
|
staticinherited |
Definition at line 171 of file font.cpp.
References _, and KICAD_FONT_NAME.
|
inherited |
Insert
characters into text to ensure that no lines are wider than aColumnWidth.
Definition at line 589 of file font.cpp.
References ANGLE_0, KIFONT::FONT::GetTextAsGlyphs(), KIFONT::FONT::wordbreakMarkup(), wxStringSplit(), and VECTOR2< T >::x.
Referenced by PCB_TEXTBOX::GetShownText(), and SCH_TEXTBOX::GetShownText().
|
inlineprotectedinherited |
|
static |
Load a stroke font.
aFontName | is the name of the font. If empty, the standard KiCad stroke font is loaded. |
Definition at line 65 of file stroke_font.cpp.
References loadNewStrokeFont(), newstroke_font, newstroke_font_bufsize, and STROKE_FONT().
Referenced by BOOST_AUTO_TEST_CASE(), and KIFONT::FONT::getDefaultFont().
|
private |
Load the standard KiCad stroke font.
aNewStrokeFont | is the pointer to the font data. |
aNewStrokeFontSize | is the size of the font data. |
Definition at line 99 of file stroke_font.cpp.
References buildGlyphBoundingBox(), FONT_OFFSET, g_defaultFontGlyphBoundingBoxes, g_defaultFontGlyphs, g_defaultFontInitialized, g_defaultFontLoadMutex, KICAD_FONT_NAME, KIFONT::FONT::m_fontFileName, KIFONT::FONT::m_fontName, m_glyphBoundingBoxes, m_glyphs, m_maxGlyphWidth, STROKE_FONT_SCALE, VECTOR2< T >::x, and VECTOR2< T >::y.
Referenced by LoadFont().
|
inlineinherited |
Definition at line 150 of file font.h.
Referenced by DS_DATA_MODEL_IO::format().
|
inherited |
Compute the boundary limits of aText (the bounding box of all shapes).
Definition at line 435 of file font.cpp.
References ANGLE_0, boundingBox(), KIFONT::FONT::drawMarkup(), BOX2< Vec >::GetSize(), BOX2< Vec >::Inflate(), KIFONT::FONT::IsOutline(), KIFONT::FONT::IsStroke(), and KiROUND().
Referenced by LABEL_MANAGER::Add(), EDA_TEXT::GetTextBox(), KIGFX::GetTextExtents(), GRTextWidth(), PIN_LAYOUT_CACHE::recomputeExtentsCache(), PDF_PLOTTER::Text(), and SCH_PIN::validateExtentsCache().
|
protectedinherited |
Definition at line 568 of file font.cpp.
References MARKUP::MARKUP_PARSER::Parse(), TO_UTF8, and KIFONT::FONT::wordbreakMarkup().
Referenced by KIFONT::FONT::LinebreakText(), and KIFONT::FONT::wordbreakMarkup().
|
protectedinherited |
|
protectedinherited |
|
private |
Definition at line 90 of file stroke_font.h.
Referenced by GetTextAsGlyphs(), and loadNewStrokeFont().
|
private |
Definition at line 89 of file stroke_font.h.
Referenced by GetTextAsGlyphs(), and loadNewStrokeFont().
|
private |
Definition at line 91 of file stroke_font.h.
Referenced by loadNewStrokeFont().
|
staticprivateinherited |
Definition at line 282 of file font.h.
Referenced by KIFONT::FONT::getDefaultFont().
|
staticprivateinherited |
Definition at line 284 of file font.h.
Referenced by KIFONT::FONT::GetFont().