Mercurial > pidgin.yaz
diff pidgin/pixmaps/art-tools/render-pidgin-emotes.rb @ 23877:209da0d52824
First steps to one-canvas workflow.
author | Hylke Bons <hylkebons@gmail.com> |
---|---|
date | Thu, 21 Aug 2008 20:52:51 +0000 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pidgin/pixmaps/art-tools/render-pidgin-emotes.rb Thu Aug 21 20:52:51 2008 +0000 @@ -0,0 +1,48 @@ +#!/usr/bin/env ruby + +require "rexml/document" +require "ftools" +include REXML +INKSCAPE = '/usr/bin/inkscape' +SRC = "./svg" + +def renderit(file) + svg = Document.new(File.new("#{SRC}/#{file}", 'r')) + svg.root.each_element("//g[contains(@inkscape:label,'plate')]") do |icon| + filename = icon.attributes["label"] + filename = `echo -n #{filename} | sed -e 's/plate\-//g'` + puts "#{file} #{filename}.png" + icon.each_element("rect") do |box| + if box.attributes['inkscape:label'] == '22x22' + dir = "#{box.attributes['width']}x#{box.attributes['height']}/" + cmd = "#{INKSCAPE} -i #{box.attributes['id']} -e #{dir}/#{filename}.png #{SRC}/#{file} > /dev/null 2>&1" + File.makedirs(dir) unless File.exists?(dir) + system(cmd) + print "." + elsif box.attributes['inkscape:label'] == '24x24' + dir = "#{box.attributes['width']}x#{box.attributes['height']}/" + cmd = "#{INKSCAPE} -i #{box.attributes['id']} -e #{dir}/#{filename}.png #{SRC}/#{file} > /dev/null 2>&1" + File.makedirs(dir) unless File.exists?(dir) + system(cmd) + print "." + end + end + puts '' + end +end + +if (ARGV[0].nil?) #render all SVGs + puts "Rendering from SVGs in #{SRC}" + Dir.foreach(SRC) do |file| + renderit(file) if file.match(/svg$/) + end + puts "\nrendered all SVGs" +else #only render the SVG passed + file = "#{ARGV[0]}.svg" + if (File.exists?("#{SRC}/#{file}")) + renderit(file) + puts "\nrendered #{file}" + else + puts "[E] No such file (#{file})" + end +end