lib: add library to generate QR code footprints
This commit is contained in:
parent
6be506f497
commit
bc768d9d50
|
@ -0,0 +1,39 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
#@@example qr(hello world, 1mm)
|
||||||
|
|
||||||
|
#@@purpose Generate QR code on silk
|
||||||
|
|
||||||
|
#@@desc Generate the specified QR code as silk lines
|
||||||
|
#@@params text,pixel_size,level
|
||||||
|
#@@thumbsize 2
|
||||||
|
|
||||||
|
#@@param:text ASCII text to encode
|
||||||
|
|
||||||
|
#@@param:pixel_size width and height of each pixel
|
||||||
|
#@@dim:pixel_size
|
||||||
|
|
||||||
|
#@@param:level error correction level
|
||||||
|
#@@optional:level
|
||||||
|
#@@enum:level:L low
|
||||||
|
#@@enum:level:H high
|
||||||
|
#@@default:L
|
||||||
|
|
||||||
|
libdir=""
|
||||||
|
for n in $PCB_RND_PCBLIB/parametric `dirname $0` /usr/local/share/pcb-rnd/pcblib/parametric /usr/share/pcb-rnd/pcblib/parametric
|
||||||
|
do
|
||||||
|
if test -f "$n/common.awk"
|
||||||
|
then
|
||||||
|
libdir="$n"
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
if test -z "$libdir"
|
||||||
|
then
|
||||||
|
echo "pcblib/parametric/common.awk not found." >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
awk -f $libdir/common.awk -f `dirname $0`/qr.awk -v "args=$*" -v gen=`basename $0` -v "genfull=$0"
|
||||||
|
|
|
@ -0,0 +1,62 @@
|
||||||
|
function flush_line(x1, x2, y, w ,n,yy)
|
||||||
|
{
|
||||||
|
x1/=2
|
||||||
|
x2/=2
|
||||||
|
for(n = 0; n < 3; n++) {
|
||||||
|
yy = y*w + w/6 + w/3 * n
|
||||||
|
element_line(x1*w + w/6, yy, x2*w - w/6, yy, w/3)
|
||||||
|
}
|
||||||
|
|
||||||
|
element_line(x1*w + w/6, y*w + w/6, x1*w + w/6, (y+1)*w - w/6, w/3)
|
||||||
|
element_line(x2*w - w/6, y*w + w/6, x2*w - w/6, (y+1)*w - w/6, w/3)
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
BEGIN {
|
||||||
|
help_auto()
|
||||||
|
set_arg(P, "?pixel_size", "1mm")
|
||||||
|
|
||||||
|
proc_args(P, "text,pixel_size,level", "text")
|
||||||
|
|
||||||
|
pixel_size = parse_dim(P["pixel_size"])
|
||||||
|
|
||||||
|
element_begin("", "QR1", "qr(" P["text"] "," P["pixel_size"] "," P["level"] ")" ,0,0, 0,-mil(50))
|
||||||
|
|
||||||
|
print "# text=" P["text"]
|
||||||
|
cmd = "echo '" P["text"] "' | qrencode -t ASCII"
|
||||||
|
|
||||||
|
if (P["level"] != "") {
|
||||||
|
if (tolower(P["level"]) == "h")
|
||||||
|
cmd = cmd " -l H"
|
||||||
|
else if (tolower(P["level"]) == "l")
|
||||||
|
cmd = cmd " -l L"
|
||||||
|
}
|
||||||
|
|
||||||
|
y = 0;
|
||||||
|
while((cmd | getline line) > 0) {
|
||||||
|
line = line "-"
|
||||||
|
# print line
|
||||||
|
len = length(line)
|
||||||
|
start = ""
|
||||||
|
for(x = 1; x < len; x++) {
|
||||||
|
if (substr(line, x, 1) == "#") {
|
||||||
|
if (start == "")
|
||||||
|
start = x;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
if (start != "") {
|
||||||
|
flush_line(start, x, y, pixel_size)
|
||||||
|
start = ""
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (start != "")
|
||||||
|
flush_line(start, x, y, pixel_size)
|
||||||
|
y++;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
# dimension(+spacing/aspect, -dia, +spacing/aspect, dia, "@" spacing*1.2 ";0", "dia")
|
||||||
|
|
||||||
|
element_end()
|
||||||
|
}
|
Loading…
Reference in New Issue