KiCad PCB EDA Suite
Loading...
Searching...
No Matches
api_utils.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) 2024 Jon Evans <[email protected]>
5 * Copyright The KiCad Developers, see AUTHORS.txt for contributors.
6 *
7 * This program is free software: you can redistribute it and/or modify it
8 * under the terms of the GNU General Public License as published by the
9 * Free Software Foundation, either version 3 of the License, or (at your
10 * option) any later version.
11 *
12 * This program is distributed in the hope that it will be useful, but
13 * WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 * 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#ifndef KICAD_API_UTILS_H
22#define KICAD_API_UTILS_H
23
24#include <optional>
25#include <google/protobuf/any.pb.h>
26#include <google/protobuf/repeated_field.h>
27
28#include <base_units.h>
29#include <core/typeinfo.h>
30#include <lib_id.h>
31#include <api/common/envelope.pb.h>
32#include <api/common/types/base_types.pb.h>
33#include <layer_ids.h>
35#include <math/vector2d.h>
36#include <math/vector3.h>
37#include <gal/color4d.h>
38
39class LINE_ENDING;
41class STROKE_PARAMS;
42class TEXT_ATTRIBUTES;
43class KIID_PATH;
44class EDA_ITEM;
45class PROJECT;
46
54extern const KICOMMON_API wxChar* const traceApi;
55
56namespace kiapi::common
57{
58
59KICOMMON_API ApiResponseStatus MakeResponseStatus( ApiStatusCode aCode, const std::string& aMessage = "" );
60
61KICOMMON_API std::optional<KICAD_T> TypeNameFromAny( const google::protobuf::Any& aMessage );
62
63KICOMMON_API LIB_ID UnpackLibId( const types::LibraryIdentifier& aId );
64
65KICOMMON_API void PackLibId( types::LibraryIdentifier* aOutput, const LIB_ID& aId );
66
67KICOMMON_API void PackVector2( types::Vector2& aOutput, const VECTOR2I& aInput,
68 const EDA_IU_SCALE& aScale = pcbIUScale );
69
70KICOMMON_API VECTOR2I UnpackVector2( const types::Vector2& aInput, const EDA_IU_SCALE& aScale = pcbIUScale );
71
72KICOMMON_API void PackVector3D( types::Vector3D& aOutput, const VECTOR3D& aInput );
73
74KICOMMON_API VECTOR3D UnpackVector3D( const types::Vector3D& aInput );
75
76KICOMMON_API void PackBox2( types::Box2& aOutput, const BOX2I& aInput, const EDA_IU_SCALE& aScale = pcbIUScale );
77
78KICOMMON_API BOX2I UnpackBox2( const types::Box2& aInput, const EDA_IU_SCALE& aScale = pcbIUScale );
79
80KICOMMON_API void PackPolyLine( types::PolyLine& aOutput, const SHAPE_LINE_CHAIN& aSlc,
81 const EDA_IU_SCALE& aScale = pcbIUScale );
82
83KICOMMON_API SHAPE_LINE_CHAIN UnpackPolyLine( const types::PolyLine& aInput, const EDA_IU_SCALE& aScale = pcbIUScale );
84
85KICOMMON_API void PackPolySet( types::PolySet& aOutput, const SHAPE_POLY_SET& aInput,
86 const EDA_IU_SCALE& aScale = pcbIUScale );
87
88KICOMMON_API SHAPE_POLY_SET UnpackPolySet( const types::PolySet& aInput, const EDA_IU_SCALE& aScale = pcbIUScale );
89
90KICOMMON_API void PackColor( types::Color& aOutput, const KIGFX::COLOR4D& aInput );
91
92KICOMMON_API KIGFX::COLOR4D UnpackColor( const types::Color& aInput );
93
94KICOMMON_API void PackDistance( types::Distance& aOutput, int aInput, const EDA_IU_SCALE& aScale = pcbIUScale );
95
96KICOMMON_API int UnpackDistance( const types::Distance& aInput, const EDA_IU_SCALE& aScale = pcbIUScale );
97
98KICOMMON_API void PackSheetPath( types::SheetPath& aOutput, const KIID_PATH& aInput );
99
100KICOMMON_API KIID_PATH UnpackSheetPath( const types::SheetPath& aInput );
101
102KICOMMON_API void PackStroke( kiapi::common::types::StrokeAttributes& aOutput, const STROKE_PARAMS& aInput,
103 const EDA_IU_SCALE& aScale = pcbIUScale );
104
105KICOMMON_API void UnpackStroke( STROKE_PARAMS& aOutput, const kiapi::common::types::StrokeAttributes& aInput,
106 const EDA_IU_SCALE& aScale = pcbIUScale );
107
108KICOMMON_API void PackLineEnding( kiapi::common::types::LineEnding& aOutput, const LINE_ENDING& aInput,
109 const EDA_IU_SCALE& aScale = pcbIUScale );
110
111KICOMMON_API LINE_ENDING UnpackLineEnding( const kiapi::common::types::LineEnding& aInput,
112 const EDA_IU_SCALE& aScale = pcbIUScale );
113
114KICOMMON_API void PackCustomProperties( google::protobuf::RepeatedPtrField<types::CustomProperty>* aOutput,
115 const EDA_ITEM& aItem );
116
117KICOMMON_API void UnpackCustomProperties( const google::protobuf::RepeatedPtrField<types::CustomProperty>& aInput,
118 EDA_ITEM& aItem );
119
120KICOMMON_API void PackProject( types::ProjectSpecifier& aOutput, const PROJECT& aInput );
121
122extern const KICOMMON_API std::string KiwayClientName;
123extern const KICOMMON_API std::string StandaloneCrossProbeClientName;
124
125KICOMMON_API bool PackKiwayApiMessage( const google::protobuf::Message& aMessage, std::string& aBytes );
126
127// Not KICOMMON_API: depends on font stuff in GAL for now
128void PackTextAttributes( kiapi::common::types::TextAttributes& aOutput, const TEXT_ATTRIBUTES& aInput,
129 const EDA_IU_SCALE& aScale = pcbIUScale );
130
131// Not KICOMMON_API: depends on font stuff in GAL for now
132void UnpackTextAttributes( TEXT_ATTRIBUTES& aOutput, const kiapi::common::types::TextAttributes& aInput,
133 const EDA_IU_SCALE& aScale = pcbIUScale );
134
135} // namespace kiapi::common
136
137#endif //KICAD_API_UTILS_H
constexpr EDA_IU_SCALE pcbIUScale
Definition base_units.h:121
BOX2< VECTOR2I > BOX2I
Definition box2.h:927
A base class for most all the KiCad significant classes used in schematics and boards.
Definition eda_item.h:98
Decorative shape (arrowhead, circle, square) at the start or end of a graphic line,...
Definition line_ending.h:62
Container for project specific data.
Definition project.h:63
Represent a polyline containing arcs as well as line segments: A chain of connected line and/or arc s...
Simple container to manage line stroke parameters.
const wxChar *const traceApi
Flag to enable debug output related to the IPC API and its plugin system.
Definition api_utils.cpp:33
#define KICOMMON_API
Definition kicommon.h:27
KICOMMON_API void PackLineEnding(types::LineEnding &aOutput, const LINE_ENDING &aInput, const EDA_IU_SCALE &aScale)
KICOMMON_API void PackProject(types::ProjectSpecifier &aOutput, const PROJECT &aInput)
KICOMMON_API void PackColor(types::Color &aOutput, const KIGFX::COLOR4D &aInput)
KICOMMON_API void UnpackStroke(STROKE_PARAMS &aOutput, const types::StrokeAttributes &aInput, const EDA_IU_SCALE &aScale)
KICOMMON_API int UnpackDistance(const types::Distance &aInput, const EDA_IU_SCALE &aScale)
KICOMMON_API KIID_PATH UnpackSheetPath(const types::SheetPath &aInput)
KICOMMON_API std::optional< KICAD_T > TypeNameFromAny(const google::protobuf::Any &aMessage)
Definition api_utils.cpp:50
KICOMMON_API void PackPolySet(types::PolySet &aOutput, const SHAPE_POLY_SET &aInput, const EDA_IU_SCALE &aScale)
KICOMMON_API VECTOR3D UnpackVector3D(const types::Vector3D &aInput)
KICOMMON_API LINE_ENDING UnpackLineEnding(const types::LineEnding &aInput, const EDA_IU_SCALE &aScale)
KICOMMON_API KIGFX::COLOR4D UnpackColor(const types::Color &aInput)
KICOMMON_API void PackCustomProperties(google::protobuf::RepeatedPtrField< types::CustomProperty > *aOutput, const EDA_ITEM &aItem)
KICOMMON_API ApiResponseStatus MakeResponseStatus(ApiStatusCode aCode, const std::string &aMessage)
Definition api_utils.cpp:39
KICOMMON_API VECTOR2I UnpackVector2(const types::Vector2 &aInput, const EDA_IU_SCALE &aScale)
KICOMMON_API void PackBox2(types::Box2 &aOutput, const BOX2I &aInput, const EDA_IU_SCALE &aScale)
KICOMMON_API void PackDistance(types::Distance &aOutput, int aInput, const EDA_IU_SCALE &aScale)
KICOMMON_API BOX2I UnpackBox2(const types::Box2 &aInput, const EDA_IU_SCALE &aScale)
KICOMMON_API void PackVector2(types::Vector2 &aOutput, const VECTOR2I &aInput, const EDA_IU_SCALE &aScale)
KICOMMON_API SHAPE_LINE_CHAIN UnpackPolyLine(const types::PolyLine &aInput, const EDA_IU_SCALE &aScale)
KICOMMON_API void PackStroke(types::StrokeAttributes &aOutput, const STROKE_PARAMS &aInput, const EDA_IU_SCALE &aScale)
KICOMMON_API void PackSheetPath(types::SheetPath &aOutput, const KIID_PATH &aInput)
KICOMMON_API void PackLibId(types::LibraryIdentifier *aOutput, const LIB_ID &aId)
KICOMMON_API LIB_ID UnpackLibId(const types::LibraryIdentifier &aId)
KICOMMON_API bool PackKiwayApiMessage(const google::protobuf::Message &aMessage, std::string &aBytes)
KICOMMON_API void UnpackCustomProperties(const google::protobuf::RepeatedPtrField< types::CustomProperty > &aInput, EDA_ITEM &aItem)
const KICOMMON_API std::string KiwayClientName
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)
KICOMMON_API void PackPolyLine(types::PolyLine &aOutput, const SHAPE_LINE_CHAIN &aSlc, const EDA_IU_SCALE &aScale)
KICOMMON_API SHAPE_POLY_SET UnpackPolySet(const types::PolySet &aInput, const EDA_IU_SCALE &aScale)
const KICOMMON_API std::string StandaloneCrossProbeClientName
KICOMMON_API void PackVector3D(types::Vector3D &aOutput, const VECTOR3D &aInput)
VECTOR2< int32_t > VECTOR2I
Definition vector2d.h:683
VECTOR3< double > VECTOR3D
Definition vector3.h:230