Index: rendercomp/rendercomp =================================================================== --- rendercomp/rendercomp (revision 31936) +++ rendercomp/rendercomp (nonexistent) @@ -1,153 +0,0 @@ -#!/bin/sh - -# sort objects within groups of a pcb-rnd generated svg so diff will return -# zero difference if only order of objects differ -# file is loaded on stdin, written to stdout -svg_sort() -{ - - awk ' - BEGIN { - sort = "sort" - } - - /^<.g>/ { - close(sort); - ingrp=0; - print $0; - next; - } - - (ingrp) { print $0 | sort; next } - - /^ $t1 - svg_sort < "$2" > $t2 - - diff -u $t1 $t2 - - rm $t1 $t2 -} - -# Compare pcb-rnd generated svg file $1 to $2, generate a visual difference -# file using $1 as canvas. Output written to stdout -svg_vis_comp() -{ - local td=`mktemp` - svg_diff "$@" > $td - awk -v "diff=$td" ' - /^", " opacity=\"0.25\">", line); - $0=line - } - /^<.svg/ { - print ""; - getline line < diff; - getline line < diff; - while(getline line < diff) { - color=""; - if (line ~ "^[+]") color = "red"; - else if (line ~ "^[-]") color = "blue"; - if (color != "") { - sub("^.", "", line); - sub("stroke=", "stroke=\"" color "\" old_stroke=", line); - sub("fill=", "fill=\"" color "\" old_fill=", line); - print line; - } - } - print "" - } - - { print $0 } - - ' < $1 -} - -pcb_rnd_test() -{ - local fn d - for fn in "$@" - do - pcb-rnd -x svg --outfile "$fn.svg" "$fn" - if test -f "$fn.ref" - then - d=`svg_diff $fn.ref $fn.svg` - if test ! -z "$d" - then - echo "$d" - svg_vis_comp "$fn.ref" "$fn.svg" > "$fn.diff.svg" - fi - else - echo "No ref svg available for $fn" >&2 - fi - done -} - -pcb_rnd_test_all() -{ - local d - - for d in "$@" - do - find "$d" -name '*.ref' - done | sort | uniq | while read fn - do - pcb_rnd_test ${fn%%.ref} - done -} - -help() -{ -echo 'pcb-rnd-svg - compare pcb-rnd svg renders -Syntax: pcb-rnd-svg command [args] -Commands available: - -svg-sort reads a pcb-rnd generated svg on stdin, prints sorted svg -svg-diff s1 s2 soft pcb-rnd generated svgs s1 and s2 and print diff s1 s2 -svg-vis-comp s1 s2 generate a visual comparison of s1 and s2, diffs highlighted -test brd run pcb-rnd on brd and compare the resulting svg to brd.ref -test-all dir run test on all boards with a ref available under dir - -' -} - - - -### MAIN ### - -if test $# -lt 1 -then - help - exit 1 -fi - -cmd="$1" -shift 1 -case "$cmd" in - svg-sort|--svg-sort) svg_sort "$@" ;; - svg-diff|--svg-diff) svg_diff "$@" ;; - svg-vis-comp|--svg-vis-comp) svg_vis_comp "$@" ;; - test) pcb_rnd_test "$@" ;; - test-all|--test-all) - if test -z "$@" - then - pcb_rnd_test_all "." - else - pcb_rnd_test_all "$@" - fi - ;; - help) help "$@";; - *) echo "Unknown command $cmd; try --help" >&2; exit 1 ;; -esac Property changes on: rendercomp/rendercomp ___________________________________________________________________ Deleted: svn:executable ## -1 +0,0 ## -* \ No newline at end of property Index: pcb-rnd-svg =================================================================== --- pcb-rnd-svg (nonexistent) +++ pcb-rnd-svg (revision 31937) @@ -0,0 +1,153 @@ +#!/bin/sh + +# sort objects within groups of a pcb-rnd generated svg so diff will return +# zero difference if only order of objects differ +# file is loaded on stdin, written to stdout +svg_sort() +{ + + awk ' + BEGIN { + sort = "sort" + } + + /^<.g>/ { + close(sort); + ingrp=0; + print $0; + next; + } + + (ingrp) { print $0 | sort; next } + + /^ $t1 + svg_sort < "$2" > $t2 + + diff -u $t1 $t2 + + rm $t1 $t2 +} + +# Compare pcb-rnd generated svg file $1 to $2, generate a visual difference +# file using $1 as canvas. Output written to stdout +svg_vis_comp() +{ + local td=`mktemp` + svg_diff "$@" > $td + awk -v "diff=$td" ' + /^", " opacity=\"0.25\">", line); + $0=line + } + /^<.svg/ { + print ""; + getline line < diff; + getline line < diff; + while(getline line < diff) { + color=""; + if (line ~ "^[+]") color = "red"; + else if (line ~ "^[-]") color = "blue"; + if (color != "") { + sub("^.", "", line); + sub("stroke=", "stroke=\"" color "\" old_stroke=", line); + sub("fill=", "fill=\"" color "\" old_fill=", line); + print line; + } + } + print "" + } + + { print $0 } + + ' < $1 +} + +pcb_rnd_test() +{ + local fn d + for fn in "$@" + do + pcb-rnd -x svg --outfile "$fn.svg" "$fn" + if test -f "$fn.ref" + then + d=`svg_diff $fn.ref $fn.svg` + if test ! -z "$d" + then + echo "$d" + svg_vis_comp "$fn.ref" "$fn.svg" > "$fn.diff.svg" + fi + else + echo "No ref svg available for $fn" >&2 + fi + done +} + +pcb_rnd_test_all() +{ + local d + + for d in "$@" + do + find "$d" -name '*.ref' + done | sort | uniq | while read fn + do + pcb_rnd_test ${fn%%.ref} + done +} + +help() +{ +echo 'pcb-rnd-svg - compare pcb-rnd svg renders +Syntax: pcb-rnd-svg command [args] +Commands available: + +svg-sort reads a pcb-rnd generated svg on stdin, prints sorted svg +svg-diff s1 s2 soft pcb-rnd generated svgs s1 and s2 and print diff s1 s2 +svg-vis-comp s1 s2 generate a visual comparison of s1 and s2, diffs highlighted +test brd run pcb-rnd on brd and compare the resulting svg to brd.ref +test-all dir run test on all boards with a ref available under dir + +' +} + + + +### MAIN ### + +if test $# -lt 1 +then + help + exit 1 +fi + +cmd="$1" +shift 1 +case "$cmd" in + svg-sort|--svg-sort) svg_sort "$@" ;; + svg-diff|--svg-diff) svg_diff "$@" ;; + svg-vis-comp|--svg-vis-comp) svg_vis_comp "$@" ;; + test) pcb_rnd_test "$@" ;; + test-all|--test-all) + if test -z "$@" + then + pcb_rnd_test_all "." + else + pcb_rnd_test_all "$@" + fi + ;; + help) help "$@";; + *) echo "Unknown command $cmd; try --help" >&2; exit 1 ;; +esac Property changes on: pcb-rnd-svg ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property