KiCad PCB EDA Suite
Loading...
Searching...
No Matches
api_text_attributes.cpp
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 The KiCad Developers, see AUTHORS.txt for contributors.
5 *
6 * This program is free software: you can redistribute it and/or modify it
7 * under the terms of the GNU General Public License as published by the
8 * Free Software Foundation, either version 3 of the License, or (at your
9 * option) any later version.
10 *
11 * This program is distributed in the hope that it will be useful, but
12 * WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 * General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License along
17 * with this program. If not, see <http://www.gnu.org/licenses/>.
18 */
19
20#include <api/api_utils.h>
21#include <api/api_enums.h>
22#include <api/common/types/base_types.pb.h>
23
24#include <font/font.h>
26
27
29{
30
31void PackTextAttributes( types::TextAttributes& aOutput, const TEXT_ATTRIBUTES& aInput,
32 const EDA_IU_SCALE& aScale )
33{
34 if( aInput.m_Font )
35 aOutput.set_font_name( aInput.m_Font->GetName().ToStdString() );
36
37 aOutput.set_horizontal_alignment( ToProtoEnum<GR_TEXT_H_ALIGN_T, types::HorizontalAlignment>( aInput.m_Halign ) );
38 aOutput.set_vertical_alignment( ToProtoEnum<GR_TEXT_V_ALIGN_T, types::VerticalAlignment>( aInput.m_Valign ) );
39 aOutput.mutable_angle()->set_value_degrees( aInput.m_Angle.AsDegrees() );
40 aOutput.set_line_spacing( aInput.m_LineSpacing );
41 PackDistance( *aOutput.mutable_stroke_width(), aInput.m_StrokeWidth, aScale );
42 aOutput.set_italic( aInput.m_Italic );
43 aOutput.set_bold( aInput.m_Bold );
44 aOutput.set_underlined( aInput.m_Underlined );
45 aOutput.set_mirrored( aInput.m_Mirrored );
46 aOutput.set_multiline( aInput.m_Multiline );
47 aOutput.set_keep_upright( aInput.m_KeepUpright );
48
49 PackVector2( *aOutput.mutable_size(), aInput.m_Size, aScale );
50
52 PackColor( *aOutput.mutable_color(), aInput.m_Color );
53}
54
55
56void UnpackTextAttributes( TEXT_ATTRIBUTES& aOutput, const types::TextAttributes& aInput,
57 const EDA_IU_SCALE& aScale )
58{
59 aOutput.m_Bold = aInput.bold();
60 aOutput.m_Italic = aInput.italic();
61 aOutput.m_Underlined = aInput.underlined();
62 aOutput.m_Mirrored = aInput.mirrored();
63 aOutput.m_Multiline = aInput.multiline();
64 aOutput.m_KeepUpright = aInput.keep_upright();
65 aOutput.m_Size = UnpackVector2( aInput.size(), aScale );
66
67 if( !aInput.font_name().empty() )
68 {
69 aOutput.m_Font = KIFONT::FONT::GetFont( wxString::FromUTF8( aInput.font_name().c_str() ), aOutput.m_Bold,
70 aOutput.m_Italic );
71 }
72
73 aOutput.m_Angle = EDA_ANGLE( aInput.angle().value_degrees(), DEGREES_T );
74
75 if( aInput.has_line_spacing() )
76 aOutput.m_LineSpacing = aInput.line_spacing();
77 else
78 aOutput.m_LineSpacing = 1.0;
79
80 aOutput.m_StrokeWidth = UnpackDistance( aInput.stroke_width(), aScale );
81 aOutput.m_Halign = FromProtoEnum<GR_TEXT_H_ALIGN_T, types::HorizontalAlignment>( aInput.horizontal_alignment() );
82 aOutput.m_Valign = FromProtoEnum<GR_TEXT_V_ALIGN_T, types::VerticalAlignment>( aInput.vertical_alignment() );
83
84 if( aInput.has_color() )
85 aOutput.m_Color = UnpackColor( aInput.color() );
86 else
88}
89
90} // namespace kiapi::common
KICOMMON_API types::KiCadObjectType ToProtoEnum(KICAD_T aValue)
KICOMMON_API KICAD_T FromProtoEnum(types::KiCadObjectType aValue)
Definition api_enums.cpp:55
double AsDegrees() const
Definition eda_angle.h:116
static FONT * GetFont(const wxString &aFontName=wxEmptyString, bool aBold=false, bool aItalic=false, const std::vector< wxString > *aEmbeddedFiles=nullptr, bool aForDrawingSheet=false)
Definition font.cpp:143
const wxString & GetName() const
Definition font.h:112
static const COLOR4D UNSPECIFIED
For legacy support; used as a value to indicate color hasn't been set yet.
Definition color4d.h:399
KIGFX::COLOR4D m_Color
GR_TEXT_H_ALIGN_T m_Halign
GR_TEXT_V_ALIGN_T m_Valign
KIFONT::FONT * m_Font
@ DEGREES_T
Definition eda_angle.h:31
KICOMMON_API void PackColor(types::Color &aOutput, const KIGFX::COLOR4D &aInput)
KICOMMON_API int UnpackDistance(const types::Distance &aInput, const EDA_IU_SCALE &aScale)
KICOMMON_API KIGFX::COLOR4D UnpackColor(const types::Color &aInput)
KICOMMON_API VECTOR2I UnpackVector2(const types::Vector2 &aInput, const EDA_IU_SCALE &aScale)
KICOMMON_API void PackDistance(types::Distance &aOutput, int aInput, const EDA_IU_SCALE &aScale)
KICOMMON_API void PackVector2(types::Vector2 &aOutput, const VECTOR2I &aInput, const EDA_IU_SCALE &aScale)
void PackTextAttributes(types::TextAttributes &aOutput, const TEXT_ATTRIBUTES &aInput, const EDA_IU_SCALE &aScale)
void UnpackTextAttributes(TEXT_ATTRIBUTES &aOutput, const types::TextAttributes &aInput, const EDA_IU_SCALE &aScale)