lib: add library to generate QR code footprints
This commit is contained in:
parent
6be506f497
commit
bc768d9d50
39
coraleda/subc/qr
Executable file
39
coraleda/subc/qr
Executable file
@ -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"
|
||||
|
62
coraleda/subc/qr.awk
Normal file
62
coraleda/subc/qr.awk
Normal file
@ -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
Block a user