20#ifndef LIBREPCB_CORE_GERBERGENERATOR_H
21#define LIBREPCB_CORE_GERBERGENERATOR_H
26#include "../fileio/filepath.h"
27#include "../types/length.h"
28#include "../types/uuid.h"
40class GerberAttributeWriter;
66 const Uuid& projUuid,
const QString& projRevision)
noexcept;
84 const std::optional<QString>& net,
85 const QString& component)
noexcept;
87 Function function,
const std::optional<QString>& net,
88 const QString& component)
noexcept;
90 const std::optional<QString>& net,
91 const QString& component)
noexcept;
93 const QString& designator,
const QString& value,
94 MountType mountType,
const QString& manufacturer,
95 const QString& mpn,
const QString& footprintName,
98 Function function,
const std::optional<QString>& net,
99 const QString& component,
const QString& pin,
100 const QString& signal)
noexcept;
104 const std::optional<QString>& net,
const QString& component,
105 const QString& pin,
const QString& signal)
noexcept;
108 Function function,
const std::optional<QString>& net,
109 const QString& component,
const QString& pin,
110 const QString& signal)
noexcept;
114 const std::optional<QString>& net,
const QString& component,
115 const QString& pin,
const QString& signal)
noexcept;
118 const std::optional<QString>& net,
const QString& component,
119 const QString& pin,
const QString& signal)
noexcept;
121 const QString& designator,
const QString& value,
122 MountType mountType,
const QString& manufacturer,
124 const QString& footprintName)
noexcept;
126 const QString& designator,
const QString& value,
127 MountType mountType,
const QString& manufacturer,
128 const QString& mpn,
const QString& footprintName,
129 const QString& pin,
const QString& signal,
130 bool isPin1)
noexcept;
142 Function apertureFunction,
const std::optional<QString>& netName,
143 const QString& componentDesignator,
const QString& pinName,
144 const QString& pinSignal,
const QString& componentValue,
145 const std::optional<MountType>& componentMountType,
146 const QString& componentManufacturer,
const QString& componentMpn,
147 const QString& componentFootprint,
148 const std::optional<Angle>& componentRotation)
noexcept;
158 const
Point& end) noexcept;
The Angle class is used to represent an angle (for example 12.75 degrees)
Definition angle.h:76
This class represents absolute, well-formatted paths to files or directories.
Definition filepath.h:127
A helper class to generate the aperture definitions for a Gerber file.
Definition gerberaperturelist.h:68
std::optional< GerberAttribute::ApertureFunction > Function
Definition gerberaperturelist.h:73
A Gerber X2 attribute.
Definition gerberattribute.h:43
MountType
Definition gerberattribute.h:52
BoardSide
Definition gerberattribute.h:50
Polarity
Definition gerberattribute.h:49
CopperSide
Definition gerberattribute.h:51
A helper class to generate Gerber X2 attributes.
Definition gerberattributewriter.h:45
The GerberGenerator class.
Definition gerbergenerator.h:51
void setFileFunctionCopper(int layer, CopperSide side, Polarity polarity) noexcept
Definition gerbergenerator.cpp:73
void saveToFile(const FilePath &filepath) const
Definition gerbergenerator.cpp:409
GerberAttribute::CopperSide CopperSide
Definition gerbergenerator.h:58
void switchToLinearInterpolationModeG01() noexcept
Definition gerbergenerator.cpp:479
void drawLine(const Point &start, const Point &end, const UnsignedLength &width, Function function, const std::optional< QString > &net, const QString &component) noexcept
Definition gerbergenerator.cpp:124
void printApertureList() noexcept
Definition gerbergenerator.cpp:562
const QString & toStr() const noexcept
Definition gerbergenerator.h:70
GerberApertureList::Function Function
Definition gerbergenerator.h:59
int mCurrentApertureNumber
Definition gerbergenerator.h:175
~GerberGenerator() noexcept
Definition gerbergenerator.cpp:62
void generate()
Definition gerbergenerator.cpp:401
void setCurrentAttributes(Function apertureFunction, const std::optional< QString > &netName, const QString &componentDesignator, const QString &pinName, const QString &pinSignal, const QString &componentValue, const std::optional< MountType > &componentMountType, const QString &componentManufacturer, const QString &componentMpn, const QString &componentFootprint, const std::optional< Angle > &componentRotation) noexcept
Definition gerbergenerator.cpp:420
GerberGenerator(const GerberGenerator &other)=delete
void linearInterpolateToPosition(const Point &pos) noexcept
Definition gerbergenerator.cpp:496
void setFileFunctionGlue(BoardSide side, Polarity polarity) noexcept
Definition gerbergenerator.cpp:97
void interpolateBetween(const Vertex &from, const Vertex &to) noexcept
Definition gerbergenerator.cpp:510
GerberAttribute::MountType MountType
Definition gerbergenerator.h:60
void moveToPosition(const Point &pos) noexcept
Definition gerbergenerator.cpp:491
void switchToCircularCcwInterpolationModeG03() noexcept
Definition gerbergenerator.cpp:487
void setLayerPolarity(Polarity p) noexcept
Definition gerbergenerator.cpp:108
void setFileFunctionSolderMask(BoardSide side, Polarity polarity) noexcept
Definition gerbergenerator.cpp:79
void setFileFunctionComponent(int layer, BoardSide side) noexcept
Definition gerbergenerator.cpp:103
void setCurrentAperture(int number) noexcept
Definition gerbergenerator.cpp:464
void printContent() noexcept
Definition gerbergenerator.cpp:568
GerberGenerator & operator=(const GerberGenerator &rhs)=delete
void flashComponent(const Point &pos, const Angle &rot, const QString &designator, const QString &value, MountType mountType, const QString &manufacturer, const QString &mpn, const QString &footprintName) noexcept
Definition gerbergenerator.cpp:354
void flashRect(const Point &pos, const PositiveLength &w, const PositiveLength &h, const UnsignedLength &radius, const Angle &rot, Function function, const std::optional< QString > &net, const QString &component, const QString &pin, const QString &signal) noexcept
Definition gerbergenerator.cpp:264
GerberAttribute::BoardSide BoardSide
Definition gerbergenerator.h:57
QString mContent
Definition gerbergenerator.h:172
void printFooter() noexcept
Definition gerbergenerator.cpp:574
QString calcOutputMd5Checksum() const noexcept
Definition gerbergenerator.cpp:583
void setFileFunctionLegend(BoardSide side, Polarity polarity) noexcept
Definition gerbergenerator.cpp:85
void setRegionModeOn() noexcept
Definition gerbergenerator.cpp:471
void flashAtPosition(const Point &pos) noexcept
Definition gerbergenerator.cpp:528
void drawPathArea(const Path &path, Function function, const std::optional< QString > &net, const QString &component) noexcept
Definition gerbergenerator.cpp:175
void printHeader() noexcept
Definition gerbergenerator.cpp:533
void flashOctagon(const Point &pos, const PositiveLength &w, const PositiveLength &h, const UnsignedLength &radius, const Angle &rot, Function function, const std::optional< QString > &net, const QString &component, const QString &pin, const QString &signal) noexcept
Definition gerbergenerator.cpp:309
void drawPathOutline(const Path &path, const UnsignedLength &lineWidth, Function function, const std::optional< QString > &net, const QString &component) noexcept
Definition gerbergenerator.cpp:145
void setFileFunctionOutlines(bool plated) noexcept
Definition gerbergenerator.cpp:69
void setRegionModeOff() noexcept
Definition gerbergenerator.cpp:475
void flashCircle(const Point &pos, const PositiveLength &dia, Function function, const std::optional< QString > &net, const QString &component, const QString &pin, const QString &signal) noexcept
Definition gerbergenerator.cpp:242
void flashComponentPin(const Point &pos, const Angle &rot, const QString &designator, const QString &value, MountType mountType, const QString &manufacturer, const QString &mpn, const QString &footprintName, const QString &pin, const QString &signal, bool isPin1) noexcept
Definition gerbergenerator.cpp:376
void circularInterpolateToPosition(const Point &start, const Point ¢er, const Point &end) noexcept
Definition gerbergenerator.cpp:501
void setFileFunctionPaste(BoardSide side, Polarity polarity) noexcept
Definition gerbergenerator.cpp:91
void flashOutline(const Point &pos, const StraightAreaPath &path, const Angle &rot, Function function, const std::optional< QString > &net, const QString &component, const QString &pin, const QString &signal) noexcept
Definition gerbergenerator.cpp:332
QString mOutput
Definition gerbergenerator.h:171
void drawComponentOutline(const Path &path, const Angle &rot, const QString &designator, const QString &value, MountType mountType, const QString &manufacturer, const QString &mpn, const QString &footprintName, Function function) noexcept
Definition gerbergenerator.cpp:211
void flashObround(const Point &pos, const PositiveLength &w, const PositiveLength &h, const Angle &rot, Function function, const std::optional< QString > &net, const QString &component, const QString &pin, const QString &signal) noexcept
Definition gerbergenerator.cpp:287
QScopedPointer< GerberApertureList > mApertureList
Definition gerbergenerator.h:174
QVector< GerberAttribute > mFileAttributes
Definition gerbergenerator.h:168
QScopedPointer< GerberAttributeWriter > mAttributeWriter
Definition gerbergenerator.h:173
GerberAttribute::Polarity Polarity
Definition gerbergenerator.h:56
void switchToCircularCwInterpolationModeG02() noexcept
Definition gerbergenerator.cpp:483
The Path class represents a list of vertices connected by straight lines or circular arc segments.
Definition path.h:59
The Point class is used to represent a point/coordinate/vector, for example (1.2mm; 5....
Definition point.h:78
The Uuid class is a replacement for QUuid to get UUID strings without {} braces.
Definition uuid.h:56
The Vertex class.
Definition vertex.h:43
Definition occmodel.cpp:77
type_safe::constrained_type< Length, PositiveLengthConstraint, PositiveLengthVerifier > PositiveLength
Definition length.h:810
type_safe::constrained_type< Length, UnsignedLengthConstraint, UnsignedLengthVerifier > UnsignedLength
Definition length.h:694
type_safe::constrained_type< Path, StraightAreaPathConstraint, StraightAreaPathVerifier > StraightAreaPath
Definition path.h:281