Add -f/--flip-gerber-polarity option
This commit is contained in:
parent
0be9f4b3ba
commit
3288fb8345
4 changed files with 17 additions and 9 deletions
|
|
@ -402,10 +402,13 @@ Options:
|
|||
happy with too many digits. 5 or 6 is a reasonable choice.
|
||||
|
||||
``--clear-color``
|
||||
SVG color to use for "clear" areas (default: white)
|
||||
SVG color to use in SVG output for "clear" areas (default: white)
|
||||
|
||||
``--dark-color``
|
||||
SVG color to use for "dark" areas (default: black)
|
||||
SVG color to use in SVG output for "dark" areas (default: black)
|
||||
|
||||
``-f, --flip-gerber-polarity``
|
||||
Flip polarity of all output gerber primitives for --format gerber.
|
||||
|
||||
``-d, --trace-space``
|
||||
Minimum feature size of elements in vectorized graphics (trace/space) in mm. Default: 0.1mm.
|
||||
|
|
|
|||
|
|
@ -214,7 +214,7 @@ namespace gerbolyze {
|
|||
|
||||
class SimpleGerberOutput : public StreamPolygonSink {
|
||||
public:
|
||||
SimpleGerberOutput(std::ostream &out, bool only_polys=false, int digits_int=4, int digits_frac=6, double scale=1.0, d2p offset={0,0});
|
||||
SimpleGerberOutput(std::ostream &out, bool only_polys=false, int digits_int=4, int digits_frac=6, double scale=1.0, d2p offset={0,0}, bool flip_polarity=false);
|
||||
virtual ~SimpleGerberOutput() {}
|
||||
virtual SimpleGerberOutput &operator<<(const Polygon &poly);
|
||||
virtual SimpleGerberOutput &operator<<(GerberPolarityToken pol);
|
||||
|
|
@ -229,6 +229,7 @@ namespace gerbolyze {
|
|||
long long int m_gerber_scale;
|
||||
d2p m_offset;
|
||||
double m_scale;
|
||||
bool m_flip_pol;
|
||||
};
|
||||
|
||||
class SimpleSVGOutput : public StreamPolygonSink {
|
||||
|
|
|
|||
|
|
@ -39,6 +39,9 @@ int main(int argc, char **argv) {
|
|||
{"svg_dark_color", {"--dark-color"},
|
||||
"SVG color to use for \"dark\" areas (default: black)",
|
||||
1},
|
||||
{"flip_gerber_polarity", {"-f", "--flip-gerber-polarity"},
|
||||
"Flip polarity of all output gerber primitives for --format gerber.",
|
||||
0},
|
||||
{"min_feature_size", {"-d", "--trace-space"},
|
||||
"Minimum feature size of elements in vectorized graphics (trace/space) in mm. Default: 0.1mm.",
|
||||
1},
|
||||
|
|
@ -189,7 +192,7 @@ int main(int argc, char **argv) {
|
|||
} else if (fmt == "gbr" || fmt == "grb" || fmt == "gerber") {
|
||||
double scale = args["scale"].as<double>(1.0);
|
||||
cerr << "loading @scale=" << scale << endl;
|
||||
sink = new SimpleGerberOutput(*out_f, only_polys, 4, precision, scale);
|
||||
sink = new SimpleGerberOutput(*out_f, only_polys, 4, precision, scale, {0,0}, args["flip_gerber_polarity"]);
|
||||
|
||||
} else if (fmt == "s-exp" || fmt == "sexp" || fmt == "kicad") {
|
||||
if (!args["sexp_mod_name"]) {
|
||||
|
|
|
|||
|
|
@ -27,12 +27,13 @@
|
|||
using namespace gerbolyze;
|
||||
using namespace std;
|
||||
|
||||
SimpleGerberOutput::SimpleGerberOutput(ostream &out, bool only_polys, int digits_int, int digits_frac, double scale, d2p offset)
|
||||
SimpleGerberOutput::SimpleGerberOutput(ostream &out, bool only_polys, int digits_int, int digits_frac, double scale, d2p offset, bool flip_polarity)
|
||||
: StreamPolygonSink(out, only_polys),
|
||||
m_digits_int(digits_int),
|
||||
m_digits_frac(digits_frac),
|
||||
m_offset(offset),
|
||||
m_scale(scale)
|
||||
m_scale(scale),
|
||||
m_flip_pol(flip_polarity)
|
||||
{
|
||||
assert(1 <= digits_int && digits_int <= 9);
|
||||
assert(0 <= digits_frac && digits_frac <= 9);
|
||||
|
|
@ -58,12 +59,12 @@ void SimpleGerberOutput::header_impl(d2p origin, d2p size) {
|
|||
}
|
||||
|
||||
SimpleGerberOutput& SimpleGerberOutput::operator<<(GerberPolarityToken pol) {
|
||||
if (pol == GRB_POL_DARK) {
|
||||
assert(pol == GRB_POL_DARK || pol == GRB_POL_CLEAR);
|
||||
|
||||
if ((pol == GRB_POL_DARK) != m_flip_pol) {
|
||||
m_out << "%LPD*%" << endl;
|
||||
} else if (pol == GRB_POL_CLEAR) {
|
||||
m_out << "%LPC*%" << endl;
|
||||
} else {
|
||||
assert(false);
|
||||
}
|
||||
|
||||
return *this;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue