BogaudioModules

BogaudioModules for VCV Rack
Log | Files | Refs | README | LICENSE

commit a0058d71a71a72972779848691d6ec07f4195833
parent 63cef6666249fb89e76cb5a40fcb7b5294a75286
Author: Matt Demanett <matt@demanett.net>
Date:   Sun,  2 Aug 2020 21:48:08 -0400

Fix svg_render.rb to process multiple files in one call, and with one invocation of Inkscape.

Diffstat:
Mres/AD.svg | 0
Mres/ADSR.svg | 0
Mres/AMRM.svg | 0
Mres/ASR.svg | 0
Mres/Additator.svg | 0
Mres/AddrSeq.svg | 0
Mres/Analyzer.svg | 0
Mres/AnalyzerXL.svg | 0
Mres/Arp.svg | 0
Mres/Assign.svg | 0
Mres/Blank3.svg | 0
Mres/Blank6.svg | 0
Mres/Bool.svg | 0
Mres/CVD.svg | 0
Mres/Clpr.svg | 0
Mres/Cmp.svg | 0
Mres/CmpDist.svg | 0
Mres/DADSRH.svg | 0
Mres/DADSRHPlus.svg | 0
Mres/DGate.svg | 0
Mres/Detune.svg | 0
Mres/EQ.svg | 0
Mres/EQS.svg | 0
Mres/Edge.svg | 0
Mres/EightFO.svg | 0
Mres/EightHP.svg | 0
Mres/EightOne.svg | 0
Mres/EighteenHP.svg | 0
Mres/FFB.svg | 0
Mres/FMOp.svg | 0
Mres/FifteenHP.svg | 0
Mres/FiveHP.svg | 0
Mres/FlipFlop.svg | 0
Mres/Follow.svg | 0
Mres/FourMan.svg | 0
Mres/Inv.svg | 0
Mres/LFO.svg | 0
Mres/LLFO.svg | 0
Mres/LVCF.svg | 0
Mres/LVCO.svg | 0
Mres/Lag.svg | 0
Mres/Lmtr.svg | 0
Mres/Manual.svg | 0
Mres/Matrix44.svg | 0
Mres/Matrix88.svg | 0
Mres/Mix1.svg | 0
Mres/Mix2.svg | 0
Mres/Mix4.svg | 0
Mres/Mix4x.svg | 0
Mres/Mix8.svg | 0
Mres/Mix8x.svg | 0
Mres/Mono.svg | 0
Mres/Mult.svg | 0
Mres/Mumix.svg | 0
Mres/Mute8.svg | 0
Mres/Noise.svg | 0
Mres/Nsgt.svg | 0
Mres/Offset.svg | 0
Mres/OneEight.svg | 0
Mres/PEQ.svg | 0
Mres/PEQ14.svg | 0
Mres/PEQ14XF.svg | 0
Mres/PEQ14XR.svg | 0
Mres/PEQ14XV.svg | 0
Mres/PEQ6.svg | 0
Mres/PEQ6XF.svg | 0
Mres/Pan.svg | 0
Mres/Pgmr.svg | 0
Mres/PgmrX.svg | 0
Mres/PolyCon16.svg | 0
Mres/PolyCon8.svg | 0
Mres/PolyMult.svg | 0
Mres/PolyOff16.svg | 0
Mres/PolyOff8.svg | 0
Mres/Pressor.svg | 0
Mres/Pulse.svg | 0
Mres/Reftone.svg | 0
Mres/SampleHold.svg | 0
Mres/Shaper.svg | 0
Mres/ShaperPlus.svg | 0
Mres/Sine.svg | 0
Mres/SixHP.svg | 0
Mres/SixteenHP.svg | 0
Mres/Slew.svg | 0
Mres/Stack.svg | 0
Mres/Sums.svg | 0
Mres/Switch.svg | 0
Mres/Switch1616.svg | 0
Mres/Switch44.svg | 0
Mres/Switch88.svg | 0
Mres/TenHP.svg | 0
Mres/Test.svg | 0
Mres/Test2.svg | 0
Mres/TestExpanderBase.svg | 0
Mres/TestExpanderExtension.svg | 0
Mres/TestVCF.svg | 0
Mres/ThirteenHP.svg | 0
Mres/ThirtyHP.svg | 0
Mres/ThreeHP.svg | 0
Mres/TwelveHP.svg | 0
Mres/TwentyFiveHP.svg | 0
Mres/TwentyHP.svg | 0
Mres/TwentyTwoHP.svg | 0
Mres/UMix.svg | 0
Mres/Unison.svg | 0
Mres/VCA.svg | 0
Mres/VCAmp.svg | 0
Mres/VCF.svg | 0
Mres/VCM.svg | 0
Mres/VCO.svg | 0
Mres/VU.svg | 0
Mres/Walk.svg | 0
Mres/Walk2.svg | 0
Mres/XCO.svg | 0
Mres/XFade.svg | 0
Mres/button_18px_0.svg | 0
Mres/button_18px_1.svg | 0
Mres/button_18px_1_green.svg | 0
Mres/button_18px_1_orange.svg | 0
Mres/button_9px_0.svg | 0
Mres/button_9px_1.svg | 0
Mres/button_9px_1_green.svg | 0
Mres/knob_16px.svg | 0
Mres/knob_19px.svg | 0
Mres/knob_26px.svg | 0
Mres/knob_29px.svg | 0
Mres/knob_38px.svg | 0
Mres/knob_45px.svg | 0
Mres/knob_68px.svg | 0
Mres/port.svg | 0
Mres/slider_switch_2_14px_0.svg | 0
Mres/slider_switch_2_14px_1.svg | 0
Mscripts/svg_render.rb | 88++++++++++++++++++++++++++++++++++++++++++++++---------------------------------
133 files changed, 51 insertions(+), 37 deletions(-)

diff --git a/res/AD.svg b/res/AD.svg Binary files differ. diff --git a/res/ADSR.svg b/res/ADSR.svg Binary files differ. diff --git a/res/AMRM.svg b/res/AMRM.svg Binary files differ. diff --git a/res/ASR.svg b/res/ASR.svg Binary files differ. diff --git a/res/Additator.svg b/res/Additator.svg Binary files differ. diff --git a/res/AddrSeq.svg b/res/AddrSeq.svg Binary files differ. diff --git a/res/Analyzer.svg b/res/Analyzer.svg Binary files differ. diff --git a/res/AnalyzerXL.svg b/res/AnalyzerXL.svg Binary files differ. diff --git a/res/Arp.svg b/res/Arp.svg Binary files differ. diff --git a/res/Assign.svg b/res/Assign.svg Binary files differ. diff --git a/res/Blank3.svg b/res/Blank3.svg Binary files differ. diff --git a/res/Blank6.svg b/res/Blank6.svg Binary files differ. diff --git a/res/Bool.svg b/res/Bool.svg Binary files differ. diff --git a/res/CVD.svg b/res/CVD.svg Binary files differ. diff --git a/res/Clpr.svg b/res/Clpr.svg Binary files differ. diff --git a/res/Cmp.svg b/res/Cmp.svg Binary files differ. diff --git a/res/CmpDist.svg b/res/CmpDist.svg Binary files differ. diff --git a/res/DADSRH.svg b/res/DADSRH.svg Binary files differ. diff --git a/res/DADSRHPlus.svg b/res/DADSRHPlus.svg Binary files differ. diff --git a/res/DGate.svg b/res/DGate.svg Binary files differ. diff --git a/res/Detune.svg b/res/Detune.svg Binary files differ. diff --git a/res/EQ.svg b/res/EQ.svg Binary files differ. diff --git a/res/EQS.svg b/res/EQS.svg Binary files differ. diff --git a/res/Edge.svg b/res/Edge.svg Binary files differ. diff --git a/res/EightFO.svg b/res/EightFO.svg Binary files differ. diff --git a/res/EightHP.svg b/res/EightHP.svg Binary files differ. diff --git a/res/EightOne.svg b/res/EightOne.svg Binary files differ. diff --git a/res/EighteenHP.svg b/res/EighteenHP.svg Binary files differ. diff --git a/res/FFB.svg b/res/FFB.svg Binary files differ. diff --git a/res/FMOp.svg b/res/FMOp.svg Binary files differ. diff --git a/res/FifteenHP.svg b/res/FifteenHP.svg Binary files differ. diff --git a/res/FiveHP.svg b/res/FiveHP.svg Binary files differ. diff --git a/res/FlipFlop.svg b/res/FlipFlop.svg Binary files differ. diff --git a/res/Follow.svg b/res/Follow.svg Binary files differ. diff --git a/res/FourMan.svg b/res/FourMan.svg Binary files differ. diff --git a/res/Inv.svg b/res/Inv.svg Binary files differ. diff --git a/res/LFO.svg b/res/LFO.svg Binary files differ. diff --git a/res/LLFO.svg b/res/LLFO.svg Binary files differ. diff --git a/res/LVCF.svg b/res/LVCF.svg Binary files differ. diff --git a/res/LVCO.svg b/res/LVCO.svg Binary files differ. diff --git a/res/Lag.svg b/res/Lag.svg Binary files differ. diff --git a/res/Lmtr.svg b/res/Lmtr.svg Binary files differ. diff --git a/res/Manual.svg b/res/Manual.svg Binary files differ. diff --git a/res/Matrix44.svg b/res/Matrix44.svg Binary files differ. diff --git a/res/Matrix88.svg b/res/Matrix88.svg Binary files differ. diff --git a/res/Mix1.svg b/res/Mix1.svg Binary files differ. diff --git a/res/Mix2.svg b/res/Mix2.svg Binary files differ. diff --git a/res/Mix4.svg b/res/Mix4.svg Binary files differ. diff --git a/res/Mix4x.svg b/res/Mix4x.svg Binary files differ. diff --git a/res/Mix8.svg b/res/Mix8.svg Binary files differ. diff --git a/res/Mix8x.svg b/res/Mix8x.svg Binary files differ. diff --git a/res/Mono.svg b/res/Mono.svg Binary files differ. diff --git a/res/Mult.svg b/res/Mult.svg Binary files differ. diff --git a/res/Mumix.svg b/res/Mumix.svg Binary files differ. diff --git a/res/Mute8.svg b/res/Mute8.svg Binary files differ. diff --git a/res/Noise.svg b/res/Noise.svg Binary files differ. diff --git a/res/Nsgt.svg b/res/Nsgt.svg Binary files differ. diff --git a/res/Offset.svg b/res/Offset.svg Binary files differ. diff --git a/res/OneEight.svg b/res/OneEight.svg Binary files differ. diff --git a/res/PEQ.svg b/res/PEQ.svg Binary files differ. diff --git a/res/PEQ14.svg b/res/PEQ14.svg Binary files differ. diff --git a/res/PEQ14XF.svg b/res/PEQ14XF.svg Binary files differ. diff --git a/res/PEQ14XR.svg b/res/PEQ14XR.svg Binary files differ. diff --git a/res/PEQ14XV.svg b/res/PEQ14XV.svg Binary files differ. diff --git a/res/PEQ6.svg b/res/PEQ6.svg Binary files differ. diff --git a/res/PEQ6XF.svg b/res/PEQ6XF.svg Binary files differ. diff --git a/res/Pan.svg b/res/Pan.svg Binary files differ. diff --git a/res/Pgmr.svg b/res/Pgmr.svg Binary files differ. diff --git a/res/PgmrX.svg b/res/PgmrX.svg Binary files differ. diff --git a/res/PolyCon16.svg b/res/PolyCon16.svg Binary files differ. diff --git a/res/PolyCon8.svg b/res/PolyCon8.svg Binary files differ. diff --git a/res/PolyMult.svg b/res/PolyMult.svg Binary files differ. diff --git a/res/PolyOff16.svg b/res/PolyOff16.svg Binary files differ. diff --git a/res/PolyOff8.svg b/res/PolyOff8.svg Binary files differ. diff --git a/res/Pressor.svg b/res/Pressor.svg Binary files differ. diff --git a/res/Pulse.svg b/res/Pulse.svg Binary files differ. diff --git a/res/Reftone.svg b/res/Reftone.svg Binary files differ. diff --git a/res/SampleHold.svg b/res/SampleHold.svg Binary files differ. diff --git a/res/Shaper.svg b/res/Shaper.svg Binary files differ. diff --git a/res/ShaperPlus.svg b/res/ShaperPlus.svg Binary files differ. diff --git a/res/Sine.svg b/res/Sine.svg Binary files differ. diff --git a/res/SixHP.svg b/res/SixHP.svg Binary files differ. diff --git a/res/SixteenHP.svg b/res/SixteenHP.svg Binary files differ. diff --git a/res/Slew.svg b/res/Slew.svg Binary files differ. diff --git a/res/Stack.svg b/res/Stack.svg Binary files differ. diff --git a/res/Sums.svg b/res/Sums.svg Binary files differ. diff --git a/res/Switch.svg b/res/Switch.svg Binary files differ. diff --git a/res/Switch1616.svg b/res/Switch1616.svg Binary files differ. diff --git a/res/Switch44.svg b/res/Switch44.svg Binary files differ. diff --git a/res/Switch88.svg b/res/Switch88.svg Binary files differ. diff --git a/res/TenHP.svg b/res/TenHP.svg Binary files differ. diff --git a/res/Test.svg b/res/Test.svg Binary files differ. diff --git a/res/Test2.svg b/res/Test2.svg Binary files differ. diff --git a/res/TestExpanderBase.svg b/res/TestExpanderBase.svg Binary files differ. diff --git a/res/TestExpanderExtension.svg b/res/TestExpanderExtension.svg Binary files differ. diff --git a/res/TestVCF.svg b/res/TestVCF.svg Binary files differ. diff --git a/res/ThirteenHP.svg b/res/ThirteenHP.svg Binary files differ. diff --git a/res/ThirtyHP.svg b/res/ThirtyHP.svg Binary files differ. diff --git a/res/ThreeHP.svg b/res/ThreeHP.svg Binary files differ. diff --git a/res/TwelveHP.svg b/res/TwelveHP.svg Binary files differ. diff --git a/res/TwentyFiveHP.svg b/res/TwentyFiveHP.svg Binary files differ. diff --git a/res/TwentyHP.svg b/res/TwentyHP.svg Binary files differ. diff --git a/res/TwentyTwoHP.svg b/res/TwentyTwoHP.svg Binary files differ. diff --git a/res/UMix.svg b/res/UMix.svg Binary files differ. diff --git a/res/Unison.svg b/res/Unison.svg Binary files differ. diff --git a/res/VCA.svg b/res/VCA.svg Binary files differ. diff --git a/res/VCAmp.svg b/res/VCAmp.svg Binary files differ. diff --git a/res/VCF.svg b/res/VCF.svg Binary files differ. diff --git a/res/VCM.svg b/res/VCM.svg Binary files differ. diff --git a/res/VCO.svg b/res/VCO.svg Binary files differ. diff --git a/res/VU.svg b/res/VU.svg Binary files differ. diff --git a/res/Walk.svg b/res/Walk.svg Binary files differ. diff --git a/res/Walk2.svg b/res/Walk2.svg Binary files differ. diff --git a/res/XCO.svg b/res/XCO.svg Binary files differ. diff --git a/res/XFade.svg b/res/XFade.svg Binary files differ. diff --git a/res/button_18px_0.svg b/res/button_18px_0.svg Binary files differ. diff --git a/res/button_18px_1.svg b/res/button_18px_1.svg Binary files differ. diff --git a/res/button_18px_1_green.svg b/res/button_18px_1_green.svg Binary files differ. diff --git a/res/button_18px_1_orange.svg b/res/button_18px_1_orange.svg Binary files differ. diff --git a/res/button_9px_0.svg b/res/button_9px_0.svg Binary files differ. diff --git a/res/button_9px_1.svg b/res/button_9px_1.svg Binary files differ. diff --git a/res/button_9px_1_green.svg b/res/button_9px_1_green.svg Binary files differ. diff --git a/res/knob_16px.svg b/res/knob_16px.svg Binary files differ. diff --git a/res/knob_19px.svg b/res/knob_19px.svg Binary files differ. diff --git a/res/knob_26px.svg b/res/knob_26px.svg Binary files differ. diff --git a/res/knob_29px.svg b/res/knob_29px.svg Binary files differ. diff --git a/res/knob_38px.svg b/res/knob_38px.svg Binary files differ. diff --git a/res/knob_45px.svg b/res/knob_45px.svg Binary files differ. diff --git a/res/knob_68px.svg b/res/knob_68px.svg Binary files differ. diff --git a/res/port.svg b/res/port.svg Binary files differ. diff --git a/res/slider_switch_2_14px_0.svg b/res/slider_switch_2_14px_0.svg Binary files differ. diff --git a/res/slider_switch_2_14px_1.svg b/res/slider_switch_2_14px_1.svg Binary files differ. diff --git a/scripts/svg_render.rb b/scripts/svg_render.rb @@ -1,57 +1,71 @@ #!/usr/bin/ruby INKSCAPE = '/Applications/Inkscape.app/Contents/MacOS/inkscape' -TMP_FILE = '/tmp/svg_render_tmp.svg' require 'nokogiri' -if ARGV.empty? - STDERR.puts "Usage: #{$0} <res-pp/MODULE-pp.svg>" - exit 1 -end - -svg_file = ARGV[0] -unless File.readable?(svg_file) - STDERR.puts "No such file: #{svg_file}" - exit 1 -end - -name = nil -if File.basename(svg_file) =~ /^(.*)-pp.svg$/ - name = $1 -else - STDERR.puts "Input file must be named *-pp.svg" - exit 1 -end -dir = File.dirname(svg_file) - def read_xml(fn) Nokogiri::XML(File.open(fn)) do |config| config.norecover.strict end end -Dir.glob(File.join(File.dirname(svg_file), "#{name}*-pp.svg")).each do |fn| - puts "Processing #{fn}..." - doc = read_xml(fn) +if ARGV.empty? + STDERR.puts "Usage: #{$0} <res-pp/MODULE-pp.svg> [...more files...]" + exit 1 +end - doc.css('use').each do |n| - id = n.attribute('id') - n.remove if id && id.to_s =~ /_(PARAM|INPUT|OUTPUT|LIGHT|WIDGET)$/ +svg_filenames = {} +svg_files = [] +ARGV.each do |file| + unless File.readable?(file) + STDERR.puts "No such file: #{file}" + exit 1 end - File.write(TMP_FILE, doc.to_xml) - out = `#{INKSCAPE} -g --actions='EditSelectAll;SelectionUnGroup;EditSelectAll;EditUnlinkClone;EditSelectAll;ObjectToPath;FileSave;FileQuit' '#{TMP_FILE}' 2>&1` - unless $?.success? - STDERR.puts "Calling Inkscape failed:\n#{out}" + name = nil + if File.basename(file) =~ /^(.*)-pp.svg$/ + name = $1 + else + STDERR.puts "Input file #{file} must be named *-pp.svg" exit 1 end - doc = read_xml(TMP_FILE) - doc.css('style').each(&:remove) + Dir.glob(File.join(File.dirname(file), "#{name}*-pp.svg")).each do |fn| + unless svg_filenames.key?(fn) + svg_filenames[fn] = true + + puts "Preparing #{fn}..." + doc = read_xml(fn) + doc.css('use').each do |n| + id = n.attribute('id') + n.remove if id && id.to_s =~ /_(PARAM|INPUT|OUTPUT|LIGHT|WIDGET)$/ + end + tmp_name = File.join('/tmp', "svg_render_#{File.basename(fn)}") + File.write(tmp_name, doc.to_xml) + + svg_files << { + name: fn, + out_name: File.join(File.dirname(fn).sub(/-pp\/?$/, ''), File.basename(fn).sub(/-pp.svg$/, '.svg')), + tmp_name: tmp_name + } + end + end +end + +puts 'Calling Inkscape...' +files = svg_files.map { |f| "'#{f[:tmp_name]}'" }.join(' ') +out = `#{INKSCAPE} -g --batch-process --actions='EditSelectAll;SelectionUnGroup;EditSelectAll;EditUnlinkClone;EditSelectAll;ObjectToPath;FileSave' #{files} 2>&1` +unless $?.success? + STDERR.puts "Calling Inkscape failed:\n#{out}" + exit 1 +end - out_file = File.join(dir.sub(/-pp\/?$/, ''), File.basename(fn).sub(/-pp.svg$/, '.svg')) - File.write(out_file, doc.to_xml) - File.unlink(TMP_FILE) - puts "Wrote #{out_file}" +puts 'Cleaning up...' +svg_files.each do |sf| + fn = sf[:tmp_name] + doc = read_xml(fn) + doc.css('style').each(&:remove) + File.write(sf[:out_name], doc.to_xml) + File.unlink(fn) end