KiCad PCB EDA Suite
Loading...
Searching...
No Matches
gbr_metadata.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) 2018 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, you may find one here:
19
* http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
20
* or you may search the http://www.gnu.org website for the version 2 license,
21
* or you may write to the Free Software Foundation, Inc.,
22
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
23
*/
24
34
#ifndef GBR_METADATA_H
35
#define GBR_METADATA_H
36
37
#include <
gbr_netlist_metadata.h
>
38
59
enum
GBR_NC_STRING_FORMAT
// Options for string format in some attribute strings
60
{
61
GBR_NC_STRING_FORMAT_X1
,
62
GBR_NC_STRING_FORMAT_X2
,
63
GBR_NC_STRING_FORMAT_GBRJOB
,
64
GBR_NC_STRING_FORMAT_NCDRILL
65
};
66
67
wxString
GbrMakeCreationDateAttributeString
(
GBR_NC_STRING_FORMAT
aFormat );
68
69
81
wxString
GbrMakeProjectGUIDfromString
(
const
wxString& aText );
82
83
84
// this class handle info which can be added in a gerber file as attribute
85
// of an aperture, by the %TA.AperFunction command
86
// This attribute is added when creating a new aperture (command %ADDxx)
87
// Only one aperture attribute can be added to a given aperture
88
//
89
class
GBR_APERTURE_METADATA
90
{
91
public
:
92
enum
GBR_APERTURE_ATTRIB
93
{
94
GBR_APERTURE_ATTRIB_NONE
,
95
GBR_APERTURE_ATTRIB_ETCHEDCMP
,
96
98
GBR_APERTURE_ATTRIB_CONDUCTOR
,
99
GBR_APERTURE_ATTRIB_EDGECUT
,
100
102
GBR_APERTURE_ATTRIB_NONCONDUCTOR
,
103
GBR_APERTURE_ATTRIB_VIAPAD
,
104
106
GBR_APERTURE_ATTRIB_COMPONENTPAD
,
107
109
GBR_APERTURE_ATTRIB_SMDPAD_SMDEF
,
110
112
GBR_APERTURE_ATTRIB_SMDPAD_CUDEF
,
113
115
GBR_APERTURE_ATTRIB_BGAPAD_SMDEF
,
116
118
GBR_APERTURE_ATTRIB_BGAPAD_CUDEF
,
119
121
GBR_APERTURE_ATTRIB_CONNECTORPAD
,
122
GBR_APERTURE_ATTRIB_WASHERPAD
,
123
GBR_APERTURE_ATTRIB_TESTPOINT
,
124
126
GBR_APERTURE_ATTRIB_FIDUCIAL_GLBL
,
127
129
GBR_APERTURE_ATTRIB_FIDUCIAL_LOCAL
,
130
132
GBR_APERTURE_ATTRIB_HEATSINKPAD
,
133
135
GBR_APERTURE_ATTRIB_CASTELLATEDPAD
,
136
138
GBR_APERTURE_ATTRIB_CASTELLATEDDRILL
,
139
140
GBR_APERTURE_ATTRIB_VIADRILL
,
141
GBR_APERTURE_ATTRIB_CMP_DRILL
,
142
144
GBR_APERTURE_ATTRIB_CMP_OBLONG_DRILL
,
145
147
GBR_APERTURE_ATTRIB_CMP_POSITION
,
148
150
GBR_APERTURE_ATTRIB_PAD1_POS
,
151
153
GBR_APERTURE_ATTRIB_PADOTHER_POS
,
154
156
GBR_APERTURE_ATTRIB_CMP_BODY
,
157
159
GBR_APERTURE_ATTRIB_CMP_LEAD2LEAD
,
160
162
GBR_APERTURE_ATTRIB_CMP_FOOTPRINT
,
163
165
GBR_APERTURE_ATTRIB_CMP_COURTYARD
,
166
GBR_APERTURE_ATTRIB_END
167
};
168
169
GBR_APERTURE_METADATA
()
170
:
m_ApertAttribute
(
GBR_APERTURE_ATTRIB_NONE
)
171
{}
172
176
static
std::string
GetAttributeName
(
GBR_APERTURE_ATTRIB
aAttribute );
177
std::string
GetAttributeName
()
178
{
179
return
GetAttributeName
(
m_ApertAttribute
);
180
}
181
189
static
std::string
FormatAttribute
(
GBR_APERTURE_ATTRIB
aAttribute,
190
bool
aUseX1StructuredComment );
191
192
std::string
FormatAttribute
(
bool
aUseX1StructuredComment )
193
{
194
return
FormatAttribute
(
m_ApertAttribute
, aUseX1StructuredComment );
195
}
196
197
// The id of the aperture attribute
198
GBR_APERTURE_ATTRIB
m_ApertAttribute
;
199
};
200
201
205
class
GBR_METADATA
206
{
207
public
:
208
GBR_METADATA
():
m_isCopper
( false) {}
209
210
void
SetApertureAttrib
(
GBR_APERTURE_METADATA::GBR_APERTURE_ATTRIB
aApertAttribute )
211
{
212
m_ApertureMetadata
.
m_ApertAttribute
= aApertAttribute;
213
}
214
215
GBR_APERTURE_METADATA::GBR_APERTURE_ATTRIB
GetApertureAttrib
()
216
{
217
return
m_ApertureMetadata
.
m_ApertAttribute
;
218
}
219
220
void
SetNetAttribType
(
int
aNetAttribType )
221
{
222
m_NetlistMetadata
.
m_NetAttribType
= aNetAttribType;
223
}
224
225
int
GetNetAttribType
()
const
226
{
227
return
m_NetlistMetadata
.
m_NetAttribType
;
228
}
229
230
void
SetNetName
(
const
wxString& aNetname ) {
m_NetlistMetadata
.
m_Netname
= aNetname; }
231
232
void
SetPadName
(
const
wxString& aPadname,
bool
aUseUTF8 =
false
,
bool
aEscapeString =
false
)
233
{
234
m_NetlistMetadata
.
m_Padname
.
SetField
( aPadname, aUseUTF8, aEscapeString );
235
}
236
237
void
SetPadPinFunction
(
const
wxString& aPadPinFunction,
bool
aUseUTF8,
bool
aEscapeString )
238
{
239
m_NetlistMetadata
.
m_PadPinFunction
.
SetField
( aPadPinFunction, aUseUTF8, aEscapeString );
240
}
241
242
void
SetCmpReference
(
const
wxString& aComponentRef )
243
{
244
m_NetlistMetadata
.
m_Cmpref
= aComponentRef;
245
}
246
252
bool
IsCopper
() {
return
m_isCopper
; }
253
void
SetCopper
(
bool
aValue ) {
m_isCopper
= aValue; }
254
258
GBR_APERTURE_METADATA
m_ApertureMetadata
;
259
263
GBR_NETLIST_METADATA
m_NetlistMetadata
;
264
265
private
:
271
bool
m_isCopper
;
272
};
273
274
284
std::string
FormatStringToGerber
(
const
wxString& aString );
285
286
298
wxString
ConvertNotAllowedCharsInGerber
(
const
wxString& aString,
bool
aAllowUtf8Chars,
299
bool
aQuoteString );
300
307
wxString
FormatStringFromGerber
(
const
wxString& aString );
308
325
bool
FormatNetAttribute
( std::string& aPrintedText, std::string& aLastNetAttributes,
326
const
GBR_NETLIST_METADATA
* aData,
bool
& aClearPreviousAttributes,
327
bool
aUseX1StructuredComment );
328
329
#endif
// GBR_METADATA_H
GBR_APERTURE_METADATA
Definition:
gbr_metadata.h:90
GBR_APERTURE_METADATA::m_ApertAttribute
GBR_APERTURE_ATTRIB m_ApertAttribute
Definition:
gbr_metadata.h:198
GBR_APERTURE_METADATA::GBR_APERTURE_ATTRIB
GBR_APERTURE_ATTRIB
Definition:
gbr_metadata.h:93
GBR_APERTURE_METADATA::GBR_APERTURE_ATTRIB_CMP_DRILL
@ GBR_APERTURE_ATTRIB_CMP_DRILL
Aperture used for pad holes in drill files.
Definition:
gbr_metadata.h:141
GBR_APERTURE_METADATA::GBR_APERTURE_ATTRIB_CONDUCTOR
@ GBR_APERTURE_ATTRIB_CONDUCTOR
Aperture used for connected items like tracks (not vias).
Definition:
gbr_metadata.h:98
GBR_APERTURE_METADATA::GBR_APERTURE_ATTRIB_VIAPAD
@ GBR_APERTURE_ATTRIB_VIAPAD
Aperture used for vias.
Definition:
gbr_metadata.h:103
GBR_APERTURE_METADATA::GBR_APERTURE_ATTRIB_ETCHEDCMP
@ GBR_APERTURE_ATTRIB_ETCHEDCMP
Aperture used for etched components.
Definition:
gbr_metadata.h:95
GBR_APERTURE_METADATA::GBR_APERTURE_ATTRIB_BGAPAD_CUDEF
@ GBR_APERTURE_ATTRIB_BGAPAD_CUDEF
Aperture used for BGA pad with a solder mask defined by the solder mask.
Definition:
gbr_metadata.h:118
GBR_APERTURE_METADATA::GBR_APERTURE_ATTRIB_PAD1_POS
@ GBR_APERTURE_ATTRIB_PAD1_POS
Aperture used for flashed pin 1 (or A1 or AA1) position in placement files.
Definition:
gbr_metadata.h:150
GBR_APERTURE_METADATA::GBR_APERTURE_ATTRIB_HEATSINKPAD
@ GBR_APERTURE_ATTRIB_HEATSINKPAD
Aperture used for heat sink pad (typically for SMDs).
Definition:
gbr_metadata.h:132
GBR_APERTURE_METADATA::GBR_APERTURE_ATTRIB_CMP_OBLONG_DRILL
@ GBR_APERTURE_ATTRIB_CMP_OBLONG_DRILL
Aperture used for pads oblong holes in drill files.
Definition:
gbr_metadata.h:144
GBR_APERTURE_METADATA::GBR_APERTURE_ATTRIB_CMP_COURTYARD
@ GBR_APERTURE_ATTRIB_CMP_COURTYARD
Aperture used to draw component outline courtyard in placement files.
Definition:
gbr_metadata.h:165
GBR_APERTURE_METADATA::GBR_APERTURE_ATTRIB_TESTPOINT
@ GBR_APERTURE_ATTRIB_TESTPOINT
Aperture used for test point pad (outer layers).
Definition:
gbr_metadata.h:123
GBR_APERTURE_METADATA::GBR_APERTURE_ATTRIB_SMDPAD_SMDEF
@ GBR_APERTURE_ATTRIB_SMDPAD_SMDEF
Aperture used for SMD pad. Excluded BGA pads which have their own type.
Definition:
gbr_metadata.h:109
GBR_APERTURE_METADATA::GBR_APERTURE_ATTRIB_SMDPAD_CUDEF
@ GBR_APERTURE_ATTRIB_SMDPAD_CUDEF
Aperture used for SMD pad with a solder mask defined by the solder mask.
Definition:
gbr_metadata.h:112
GBR_APERTURE_METADATA::GBR_APERTURE_ATTRIB_NONE
@ GBR_APERTURE_ATTRIB_NONE
uninitialized attribute.
Definition:
gbr_metadata.h:94
GBR_APERTURE_METADATA::GBR_APERTURE_ATTRIB_CONNECTORPAD
@ GBR_APERTURE_ATTRIB_CONNECTORPAD
Aperture used for edge connector pad (outer layers).
Definition:
gbr_metadata.h:121
GBR_APERTURE_METADATA::GBR_APERTURE_ATTRIB_CASTELLATEDDRILL
@ GBR_APERTURE_ATTRIB_CASTELLATEDDRILL
Aperture used for castellated pads in drill files.
Definition:
gbr_metadata.h:138
GBR_APERTURE_METADATA::GBR_APERTURE_ATTRIB_NONCONDUCTOR
@ GBR_APERTURE_ATTRIB_NONCONDUCTOR
Aperture used for not connected items (texts, outlines on copper).
Definition:
gbr_metadata.h:102
GBR_APERTURE_METADATA::GBR_APERTURE_ATTRIB_END
@ GBR_APERTURE_ATTRIB_END
sentinel: max value
Definition:
gbr_metadata.h:166
GBR_APERTURE_METADATA::GBR_APERTURE_ATTRIB_CMP_POSITION
@ GBR_APERTURE_ATTRIB_CMP_POSITION
Aperture used for flashed cmp position in placement files.
Definition:
gbr_metadata.h:147
GBR_APERTURE_METADATA::GBR_APERTURE_ATTRIB_CMP_BODY
@ GBR_APERTURE_ATTRIB_CMP_BODY
Aperture used to draw component physical body outline without pins in placement files.
Definition:
gbr_metadata.h:156
GBR_APERTURE_METADATA::GBR_APERTURE_ATTRIB_BGAPAD_SMDEF
@ GBR_APERTURE_ATTRIB_BGAPAD_SMDEF
Aperture used for BGA pads with a solder mask defined by the copper shape.
Definition:
gbr_metadata.h:115
GBR_APERTURE_METADATA::GBR_APERTURE_ATTRIB_WASHERPAD
@ GBR_APERTURE_ATTRIB_WASHERPAD
Aperture used for mechanical pads (NPTH).
Definition:
gbr_metadata.h:122
GBR_APERTURE_METADATA::GBR_APERTURE_ATTRIB_PADOTHER_POS
@ GBR_APERTURE_ATTRIB_PADOTHER_POS
Aperture used for flashed pads position in placement files.
Definition:
gbr_metadata.h:153
GBR_APERTURE_METADATA::GBR_APERTURE_ATTRIB_COMPONENTPAD
@ GBR_APERTURE_ATTRIB_COMPONENTPAD
Aperture used for through hole component on outer layer.
Definition:
gbr_metadata.h:106
GBR_APERTURE_METADATA::GBR_APERTURE_ATTRIB_VIADRILL
@ GBR_APERTURE_ATTRIB_VIADRILL
Aperture used for via holes in drill files.
Definition:
gbr_metadata.h:140
GBR_APERTURE_METADATA::GBR_APERTURE_ATTRIB_CMP_FOOTPRINT
@ GBR_APERTURE_ATTRIB_CMP_FOOTPRINT
Aperture used to draw component footprint bounding box in placement files.
Definition:
gbr_metadata.h:162
GBR_APERTURE_METADATA::GBR_APERTURE_ATTRIB_CMP_LEAD2LEAD
@ GBR_APERTURE_ATTRIB_CMP_LEAD2LEAD
Aperture used to draw component physical body outline with pins in placement files.
Definition:
gbr_metadata.h:159
GBR_APERTURE_METADATA::GBR_APERTURE_ATTRIB_FIDUCIAL_GLBL
@ GBR_APERTURE_ATTRIB_FIDUCIAL_GLBL
Aperture used for fiducial pad (outer layers), at board level.
Definition:
gbr_metadata.h:126
GBR_APERTURE_METADATA::GBR_APERTURE_ATTRIB_CASTELLATEDPAD
@ GBR_APERTURE_ATTRIB_CASTELLATEDPAD
Aperture used for castellated pads in copper layer files.
Definition:
gbr_metadata.h:135
GBR_APERTURE_METADATA::GBR_APERTURE_ATTRIB_FIDUCIAL_LOCAL
@ GBR_APERTURE_ATTRIB_FIDUCIAL_LOCAL
Aperture used for fiducial pad (outer layers), at footprint level.
Definition:
gbr_metadata.h:129
GBR_APERTURE_METADATA::GBR_APERTURE_ATTRIB_EDGECUT
@ GBR_APERTURE_ATTRIB_EDGECUT
Aperture used for board cutout,.
Definition:
gbr_metadata.h:99
GBR_APERTURE_METADATA::FormatAttribute
static std::string FormatAttribute(GBR_APERTURE_ATTRIB aAttribute, bool aUseX1StructuredComment)
Definition:
gbr_metadata.cpp:159
GBR_APERTURE_METADATA::GBR_APERTURE_METADATA
GBR_APERTURE_METADATA()
Definition:
gbr_metadata.h:169
GBR_APERTURE_METADATA::GetAttributeName
static std::string GetAttributeName(GBR_APERTURE_ATTRIB aAttribute)
GBR_APERTURE_METADATA::GetAttributeName
std::string GetAttributeName()
Definition:
gbr_metadata.h:177
GBR_APERTURE_METADATA::FormatAttribute
std::string FormatAttribute(bool aUseX1StructuredComment)
Definition:
gbr_metadata.h:192
GBR_DATA_FIELD::SetField
void SetField(const wxString &aField, bool aUseUTF8, bool aEscapeString)
Definition:
gbr_netlist_metadata.h:119
GBR_METADATA
Metadata which can be added in a gerber file as attribute in X2 format.
Definition:
gbr_metadata.h:206
GBR_METADATA::SetCopper
void SetCopper(bool aValue)
Definition:
gbr_metadata.h:253
GBR_METADATA::SetCmpReference
void SetCmpReference(const wxString &aComponentRef)
Definition:
gbr_metadata.h:242
GBR_METADATA::SetNetName
void SetNetName(const wxString &aNetname)
Definition:
gbr_metadata.h:230
GBR_METADATA::SetPadPinFunction
void SetPadPinFunction(const wxString &aPadPinFunction, bool aUseUTF8, bool aEscapeString)
Definition:
gbr_metadata.h:237
GBR_METADATA::GetApertureAttrib
GBR_APERTURE_METADATA::GBR_APERTURE_ATTRIB GetApertureAttrib()
Definition:
gbr_metadata.h:215
GBR_METADATA::IsCopper
bool IsCopper()
Allowed attributes are not the same on board copper layers and on other layers.
Definition:
gbr_metadata.h:252
GBR_METADATA::SetApertureAttrib
void SetApertureAttrib(GBR_APERTURE_METADATA::GBR_APERTURE_ATTRIB aApertAttribute)
Definition:
gbr_metadata.h:210
GBR_METADATA::GBR_METADATA
GBR_METADATA()
Definition:
gbr_metadata.h:208
GBR_METADATA::m_NetlistMetadata
GBR_NETLIST_METADATA m_NetlistMetadata
An item to handle object attribute.
Definition:
gbr_metadata.h:263
GBR_METADATA::GetNetAttribType
int GetNetAttribType() const
Definition:
gbr_metadata.h:225
GBR_METADATA::SetNetAttribType
void SetNetAttribType(int aNetAttribType)
Definition:
gbr_metadata.h:220
GBR_METADATA::m_ApertureMetadata
GBR_APERTURE_METADATA m_ApertureMetadata
An item to handle aperture attribute.
Definition:
gbr_metadata.h:258
GBR_METADATA::m_isCopper
bool m_isCopper
If the metadata is relative to a copper layer or not, this flag which can be set/reset when an attrib...
Definition:
gbr_metadata.h:271
GBR_METADATA::SetPadName
void SetPadName(const wxString &aPadname, bool aUseUTF8=false, bool aEscapeString=false)
Definition:
gbr_metadata.h:232
GBR_NETLIST_METADATA
Information which can be added in a gerber file as attribute of an object.
Definition:
gbr_netlist_metadata.h:152
GBR_NETLIST_METADATA::m_NetAttribType
int m_NetAttribType
the type of net info (used to define the gerber string to create)
Definition:
gbr_netlist_metadata.h:238
GBR_NETLIST_METADATA::m_Cmpref
wxString m_Cmpref
the component reference parent of the data
Definition:
gbr_netlist_metadata.h:245
GBR_NETLIST_METADATA::m_PadPinFunction
GBR_DATA_FIELD m_PadPinFunction
for a pad: the pin function (defined in schematic)
Definition:
gbr_netlist_metadata.h:244
GBR_NETLIST_METADATA::m_Padname
GBR_DATA_FIELD m_Padname
for a flashed pad: the pad name ((TO.P attribute)
Definition:
gbr_netlist_metadata.h:243
GBR_NETLIST_METADATA::m_Netname
wxString m_Netname
for items associated to a net: the netname
Definition:
gbr_netlist_metadata.h:246
GbrMakeProjectGUIDfromString
wxString GbrMakeProjectGUIDfromString(const wxString &aText)
Build a project GUID using format RFC4122 Version 1 or 4 from the project name, because a KiCad proje...
Definition:
gbr_metadata.cpp:84
GbrMakeCreationDateAttributeString
wxString GbrMakeCreationDateAttributeString(GBR_NC_STRING_FORMAT aFormat)
Definition:
gbr_metadata.cpp:37
FormatStringToGerber
std::string FormatStringToGerber(const wxString &aString)
Normalize aString and convert it to a Gerber std::string.
Definition:
gbr_metadata.cpp:515
GBR_NC_STRING_FORMAT
GBR_NC_STRING_FORMAT
Create a gerber TF.CreationDate attribute.
Definition:
gbr_metadata.h:60
GBR_NC_STRING_FORMAT_X1
@ GBR_NC_STRING_FORMAT_X1
Definition:
gbr_metadata.h:61
GBR_NC_STRING_FORMAT_NCDRILL
@ GBR_NC_STRING_FORMAT_NCDRILL
Definition:
gbr_metadata.h:64
GBR_NC_STRING_FORMAT_X2
@ GBR_NC_STRING_FORMAT_X2
Definition:
gbr_metadata.h:62
GBR_NC_STRING_FORMAT_GBRJOB
@ GBR_NC_STRING_FORMAT_GBRJOB
Definition:
gbr_metadata.h:63
ConvertNotAllowedCharsInGerber
wxString ConvertNotAllowedCharsInGerber(const wxString &aString, bool aAllowUtf8Chars, bool aQuoteString)
Normalize aString and convert it to a Gerber compatible wxString.
Definition:
gbr_metadata.cpp:438
FormatStringFromGerber
wxString FormatStringFromGerber(const wxString &aString)
Convert a gerber string into a 16 bit Unicode string.
Definition:
gbr_metadata.cpp:372
FormatNetAttribute
bool FormatNetAttribute(std::string &aPrintedText, std::string &aLastNetAttributes, const GBR_NETLIST_METADATA *aData, bool &aClearPreviousAttributes, bool aUseX1StructuredComment)
Generate the string to set a net attribute for a graphic object to print to a gerber file.
Definition:
gbr_metadata.cpp:545
gbr_netlist_metadata.h
src
include
gbr_metadata.h
Generated on Wed Jan 22 2025 00:04:54 for KiCad PCB EDA Suite by
1.9.6