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