├── bin ├── id3thumb ├── convert_to_pdf ├── waveform ├── audiothumb └── thumbnailer ├── mkrelease.rb ├── lib ├── thumbnailer.rb └── thumbnailer │ └── icons │ ├── audio.svg │ ├── application-ogg.svg │ ├── default.svg │ ├── application.svg │ ├── application-x-executable.svg │ ├── application-x-ms-dos-executable.svg │ ├── video.svg │ ├── application-vnd.rn-realmedia-vbr.svg │ ├── application-vnd.rn-realmedia.svg │ ├── application-x-shockwave-flash.svg │ ├── application-vnd.rn-realmedia-secure.svg │ ├── image.svg │ ├── application-x-killustrator.svg │ └── text-x-vcard.svg ├── run_to_check_dependencies.rb ├── INSTALL └── README /bin/id3thumb: -------------------------------------------------------------------------------- 1 | #!/usr/bin/ruby 2 | retried = false 3 | begin 4 | require 'id3lib' 5 | rescue LoadError => e 6 | raise if retried 7 | retried = true 8 | begin 9 | require 'rubygems' 10 | rescue LoadError 11 | raise e 12 | end 13 | retry 14 | end 15 | 16 | def extract_pic(filename) 17 | t = ID3Lib::Tag.new(filename) 18 | pic = t.find{|f| f[:id] == :APIC } 19 | pic 20 | end 21 | 22 | filename = ARGV.shift 23 | pic = extract_pic(filename) 24 | if pic and pic[:data] 25 | STDOUT.write(pic[:data]) 26 | else 27 | exit!(1) 28 | end 29 | -------------------------------------------------------------------------------- /mkrelease.rb: -------------------------------------------------------------------------------- 1 | #!/usr/bin/ruby 2 | 3 | url = "http://dark.fhtr.org/repos" 4 | libname = 'thumbnailer' 5 | 6 | $LOAD_PATH.unshift "lib" 7 | require "./lib/#{libname}.rb" 8 | require 'fileutils' 9 | 10 | version = Thumbnailer::VERSION 11 | 12 | dn = "#{libname}-#{version}" 13 | FileUtils.mkdir(dn) 14 | %w(lib bin README INSTALL LICENSE setup.rb).each{|fn| 15 | FileUtils.cp_r(fn, dn) 16 | } 17 | `tar zcf #{dn}.tar.gz #{dn}` 18 | FileUtils.rm_r(dn) 19 | s = <<-EOF 20 | tarball: #{url}/#{libname}/#{dn}.tar.gz 21 | git: #{url}/#{libname} 22 | 23 | 24 | #{File.read('README')} 25 | EOF 26 | File.open("release_msg-#{version}.txt", "w"){|f| f.write s} 27 | -------------------------------------------------------------------------------- /lib/thumbnailer.rb: -------------------------------------------------------------------------------- 1 | # Thumbnailer - create thumbnails of files. 2 | # Copyright (C) 2007 Ilmari Heikkinen 3 | # 4 | # This program is free software: you can redistribute it and/or modify 5 | # it under the terms of the GNU General Public License as published by 6 | # the Free Software Foundation, either version 3 of the License, or 7 | # (at your option) any later version. 8 | # 9 | # This program is distributed in the hope that it will be useful, 10 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | # GNU General Public License for more details. 13 | # 14 | # You should have received a copy of the GNU General Public License 15 | # along with this program. If not, see . 16 | 17 | was_disabled = GC.disable 18 | require 'thumbnailer/thumbnailer' 19 | 20 | module Thumbnailer 21 | VERSION = "1.0" 22 | end 23 | GC.enable unless was_disabled -------------------------------------------------------------------------------- /bin/convert_to_pdf: -------------------------------------------------------------------------------- 1 | #!/usr/bin/ruby 2 | 3 | GC.disable 4 | 5 | require 'thumbnailer' 6 | 7 | usage = "#{$0} SRC DST" 8 | if ARGV.size != 2 || !File.exist?(ARGV[0]) 9 | STDERR.puts usage 10 | exit 1 11 | end 12 | src,dst = ARGV[0,2] 13 | 14 | mt = src.to_pn.mimetype 15 | converter = case mt.to_s 16 | when /[-\/]dvi$/ 17 | "dvi" 18 | when /postscript/ 19 | "postscript" 20 | when /^text/ 21 | "text" 22 | when /powerpoint|vnd\.oasis\.opendocument|msword|vnd\.openxml|ms-excel|rtf|x-tex|template|stardivision|comma-separated-values|dbf|vnd\.sun\.xml/ 23 | "unoconv" 24 | else 25 | nil 26 | end 27 | 28 | unless converter 29 | STDERR.puts "No converter found for #{src} (#{mt}) -> #{dst}" 30 | exit 2 31 | end 32 | 33 | tries = 3 34 | while tries > 0 35 | tries -= 1 36 | mt.__send__(converter + "_to_pdf", src, dst) 37 | break if File.exist?(dst) and File.size(dst) > 0 38 | STDERR.puts "Failed to convert #{src} to #{dst}, retrying." 39 | end 40 | 41 | if !File.exist?(dst) or File.size(dst) == 0 42 | File.unlink(dst) if File.exist?(dst) 43 | STDERR.puts "Conversion failed for #{src} (#{mt}) -> #{dst}" 44 | exit 4 45 | end 46 | -------------------------------------------------------------------------------- /run_to_check_dependencies.rb: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env ruby 2 | 3 | out = STDOUT.clone 4 | STDOUT.reopen "/dev/null" 5 | STDERR.reopen "/dev/null" 6 | 7 | $missing = [] 8 | 9 | def check(name, args, deb_package, expected = 0) 10 | system("#{name} #{args}") 11 | $missing << [name, deb_package] if $?.exitstatus != expected 12 | end 13 | 14 | check("convert", "-help", "imagemagick", 0) 15 | check("dcraw", "-v", "dcraw", 1) 16 | check("ffmpeg", "-h", "ffmpeg", 0) 17 | check("rsvg-convert", "--help", "librsvg2-bin", 0) 18 | check("test -n $(echo 'package require snack' | tclsh)", "", "libsnack2", 0) 19 | check("mplayer", "-v", "mplayer", 0) 20 | check("paps", "-?", "paps", 0) 21 | check("pdftoppm", "-v", "poppler-utils", 99) 22 | check("ps2pdf", "-h", "ghostscript", 1) 23 | check("unoconv", "-h", "python-uno (and unoconv)", 1) 24 | check("xvfb-run", "-h", "xvfb", 0) 25 | check("swfdec-thumbnailer", "-h", "swfdec-gnome", 0) 26 | check("sidplay2", "-h", "sidplay", 0) 27 | 28 | check("ruby -rimlib2", "-e nil", "libimlib2-ruby") 29 | 30 | $missing.each{|name, pkg| out.puts "Missing #{name} to be found in #{pkg}." } 31 | out.puts "All dependencies found." if $missing.empty? 32 | 33 | exit($missing.empty?) 34 | -------------------------------------------------------------------------------- /bin/waveform: -------------------------------------------------------------------------------- 1 | #!/usr/bin/wish 2 | 3 | if { $argc != 2 && $argc != 1 } { 4 | puts "USAGE: waveform SOUNDFILE PNGFILE" 5 | } else { 6 | package require snack 7 | package require Img 8 | 9 | set colormap {#000 #006 #00B #00F #03F #07F #0BF #0FF #0FB #0F7 #0F0 #3F0 #7F0 #BF0 #FF0 #FB0 #F70 #F30 #F00} 10 | 11 | snack::sound s -load [lindex $argv 0] 12 | 13 | set len [s length -unit SECONDS] 14 | set w [expr {int(($len / 300.0) * 512.0)}] 15 | set h [expr {int((512.0 * (512.0 / $w)))}] 16 | if { $w > 512 } { 17 | set w [expr {512}] 18 | } 19 | if { $h > 512 } { 20 | set h [expr {512}] 21 | } 22 | set wh [expr {int(($h * 0.25))}] 23 | set sh [expr {$h - $wh}] 24 | 25 | canvas .c -bg #000 -width $w -height $h 26 | pack .c 27 | 28 | .c create waveform 0 0 -sound s -width $w -height $wh -fill #08B 29 | .c create spectrogram 0 $wh -sound s -width $w -height $sh -colormap $colormap 30 | update 31 | 32 | if { $argc == 2 } { 33 | raise . 34 | set img [image create photo -format window -data .c] 35 | $img write [lindex $argv 1] -format PNG 36 | #.c postscript -file [lindex $argv 1] -width 514 -height 130 -x 0.0 -y 0.0 37 | exit 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /bin/audiothumb: -------------------------------------------------------------------------------- 1 | #!/usr/bin/ruby 2 | 3 | require 'imlib2' 4 | if di = ARGV.index("-display") 5 | ARGV.delete_at(di) 6 | display = ARGV[di] 7 | ARGV.delete_at(di) 8 | end 9 | 10 | if ARGV.size != 2 11 | puts "USAGE: audiothumb AUDIOFILE PNGFILE" 12 | else 13 | tmpfile = "/tmp/audiofile-temp-#{Process.pid}-#{Time.now.to_f}.png" 14 | tmpfile2 = "/tmp/audiofile-temp2-#{Process.pid}-#{Time.now.to_f}.png" 15 | if display 16 | system("waveform", "-display", display, ARGV[0], tmpfile) 17 | else 18 | system("waveform", ARGV[0], tmpfile) 19 | end 20 | if File.exist?(tmpfile) 21 | wf = Imlib2::Image.load(tmpfile) 22 | end 23 | thumb = `id3thumb #{ARGV[0].dump}` 24 | if thumb.size > 0 25 | File.open(tmpfile2, 'w'){|f| 26 | f.write thumb 27 | } 28 | tf = Imlib2::Image.load(tmpfile2) 29 | end 30 | File.unlink(tmpfile) if File.exist?(tmpfile) 31 | File.unlink(tmpfile2) if File.exist?(tmpfile2) 32 | if wf and tf 33 | image = Imlib2::Image.new(256,512) 34 | image.has_alpha = true 35 | image.clear_color!(Imlib2::Color::TRANSPARENT) 36 | larger = [tf.width, tf.height].max 37 | tw = (tf.width / larger.to_f) * 256 38 | th = (tf.height / larger.to_f) * 256 39 | image.blend!(tf, 40 | 0, 0, tf.width, tf.height, 41 | (image.width-tw)/2, 0, tw, th 42 | ) 43 | larger = [wf.width, wf.height].max 44 | ww = (wf.width / larger.to_f) * 256 45 | wh = (wf.height / larger.to_f) * 256 46 | image.blend!(wf, 47 | 0, 0, wf.width, wf.height, 48 | (image.width-ww)/2, th, ww, wh 49 | ) 50 | if th + wh < 512 51 | image.crop!(0,0, 256, th+wh) 52 | end 53 | image.save(ARGV[1]) 54 | elsif wf 55 | wf.save(ARGV[1]) 56 | elsif tf 57 | tf.save(ARGV[1]) 58 | else 59 | exit!(1) 60 | end 61 | end 62 | -------------------------------------------------------------------------------- /bin/thumbnailer: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env ruby 2 | 3 | # Thumbnailer - create thumbnails of files. 4 | # Copyright (C) 2007 Ilmari Heikkinen 5 | # 6 | # This program is free software: you can redistribute it and/or modify 7 | # it under the terms of the GNU General Public License as published by 8 | # the Free Software Foundation, either version 3 of the License, or 9 | # (at your option) any later version. 10 | # 11 | # This program is distributed in the hope that it will be useful, 12 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | # GNU General Public License for more details. 15 | # 16 | # You should have received a copy of the GNU General Public License 17 | # along with this program. If not, see . 18 | 19 | GC.disable 20 | 21 | require 'optparse' 22 | require 'thumbnailer' 23 | 24 | options = {:crop => '0x0+0+0'} 25 | opts = OptionParser.new do |opts| 26 | opts.banner = "USAGE: #{$0} [options] input_filename thumbnail_filename" 27 | 28 | opts.separator "" 29 | opts.on("-h", "--help", "Show this message"){ puts opts.help; exit!(0) } 30 | opts.on("-s", "--size SIZE", Integer, "Max dimension of output image"){|p| 31 | options[:size] = p.to_i 32 | } 33 | opts.on("-i", "--input-type TYPE", "Input file mimetype (overrides auto-detect)"){|p| 34 | options[:input_type] = p 35 | } 36 | # opts.on("-o", "--output-type TYPE", "Output image type (overrides filename)"){|p| 37 | # options[:output_type] = p } 38 | opts.on("-c", "--crop CROP", "Crop rectangle (WxH+X+Y)"){|p| 39 | options[:crop] = p 40 | } 41 | opts.on("-n", "--no-icon", "Don't use icon fallback."){|p| 42 | options[:no_icon] = true 43 | } 44 | opts.on("-p", "--page PAGENUM", Integer, "Page to thumbnail (time for videos)"){|p| 45 | options[:page] = (p =~ /\./ ? p.to_f : p.to_i) 46 | } 47 | opts.on("--inexisting", "Try thumbnailing even if the file doesn't exist"){ 48 | options[:allow_inexisting] = true 49 | } 50 | opts.on("-k", "--keep-temp", "Don't delete temp PDF files"){|p| Thumbnailer.keep_temp = true } 51 | opts.on("--pdf FILENAME", "Use given filename as temp PDF file"){|p| Thumbnailer.temp_pdf_filename = p.to_pn } 52 | opts.on("-q", "Don't print error messages"){|p| Thumbnailer.quiet = Metadata.quiet = true } 53 | opts.on("-v", "Verbose output to stderr"){|p| Thumbnailer.verbose = Metadata.verbose = true } 54 | end 55 | 56 | 57 | begin 58 | opts.parse!(ARGV) 59 | rescue => e 60 | STDERR.puts e.message 61 | STDERR.puts opts.help 62 | exit!(1) 63 | end 64 | 65 | filenames = ARGV 66 | 67 | if filenames.size != 2 68 | puts opts.banner 69 | exit!(1) 70 | end 71 | 72 | infile, outfile = ARGV[0,2] 73 | 74 | if File.exist?(infile) || options[:allow_inexisting] 75 | if options[:input_type] 76 | mt = Mimetype[options[:input_type]] 77 | else 78 | mt = infile.to_pn.mimetype 79 | end 80 | mt.thumbnail( 81 | infile, outfile, options[:size], options[:page], options[:crop], !options[:no_icon] 82 | ) 83 | else 84 | STDERR.puts("File does not exist: #{infile}") unless Thumbnailer.quiet 85 | exit!(2) 86 | end 87 | -------------------------------------------------------------------------------- /INSTALL: -------------------------------------------------------------------------------- 1 | Installing Programs with setup.rb 2 | ================================= 3 | 4 | Quick Start 5 | ----------- 6 | 7 | Type this (You might needs super user previledge): 8 | 9 | ($ su) 10 | # ruby setup.rb 11 | 12 | If you want to install a program in to your home directory 13 | ($HOME), use following instead: 14 | 15 | $ ruby setup.rb all --prefix=$HOME 16 | 17 | 18 | Detailed Installtion Process 19 | ---------------------------- 20 | 21 | setup.rb invokes installation by three steps. There are 22 | "config", "setup" and "install". You can invoke each steps 23 | separately as following: 24 | 25 | $ ruby setup.rb config 26 | $ ruby setup.rb setup 27 | # ruby setup.rb install 28 | 29 | You can controll installation process by giving detailed 30 | options for each tasks. For example, --bin-dir=$HOME/bin 31 | let setup.rb install commands in $HOME/bin. 32 | 33 | For details, see "Task Options". 34 | 35 | Global Options 36 | -------------- 37 | 38 | "Global Option" is a command line option which you can use 39 | for all tasks. You must give a global option before any task 40 | name. 41 | 42 | -q,--quiet 43 | suppress message outputs 44 | --verbose 45 | output messages verbosely (default) 46 | -h,--help 47 | prints help and quit 48 | -v,--version 49 | prints version and quit 50 | --copyright 51 | prints copyright and quit 52 | 53 | Tasks 54 | ----- 55 | These are acceptable tasks: 56 | all 57 | Invokes `config', `setup', then `install'. 58 | Task options for all is same with config. 59 | config 60 | Checks and saves configurations. 61 | show 62 | Prints current configurations. 63 | setup 64 | Compiles ruby extentions. 65 | install 66 | Installs files. 67 | clean 68 | Removes created files. 69 | distclean 70 | Removes all created files. 71 | 72 | Task Options for CONFIG/ALL 73 | --------------------------- 74 | 75 | --prefix=PATH 76 | a prefix of the installing directory path 77 | --stdruby=PATH 78 | the directory for standard ruby libraries 79 | --siterubycommon=PATH 80 | the directory for version-independent non-standard 81 | ruby libraries 82 | --siteruby=PATH 83 | the directory for non-standard ruby libraries 84 | --bindir=PATH 85 | the directory for commands 86 | --rbdir=PATH 87 | the directory for ruby scripts 88 | --sodir=PATH 89 | the directory for ruby extentions 90 | --datadir=PATH 91 | the directory for shared data 92 | --rubypath=PATH 93 | path to set to #! line 94 | --rubyprog=PATH 95 | the ruby program using for installation 96 | --makeprog=NAME 97 | the make program to compile ruby extentions 98 | --without-ext 99 | forces to setup.rb never to compile/install 100 | ruby extentions. 101 | --rbconfig=PATH 102 | your rbconfig.rb to load 103 | 104 | You can view default values of these options by typing 105 | 106 | $ ruby setup.rb --help 107 | 108 | 109 | If there's the directory named "packages", 110 | You can also use these options: 111 | --with=NAME,NAME,NAME... 112 | Package names which you want to install. 113 | --without=NAME,NAME,NAME... 114 | Package names which you do not want to install. 115 | 116 | [NOTE] You can pass options for extconf.rb like this: 117 | 118 | ruby setup.rb config -- --with-tklib=/usr/lib/libtk-ja.so.8.0 119 | 120 | 121 | Task Options for INSTALL 122 | ------------------------ 123 | 124 | --no-harm 125 | prints what to do and done nothing really. 126 | --prefix=PATH 127 | The prefix of the installing directory path. 128 | This option may help binary package maintainers. 129 | A default value is an empty string. 130 | -------------------------------------------------------------------------------- /README: -------------------------------------------------------------------------------- 1 | Description 2 | ----------- 3 | 4 | This package `Thumbnailer' comes with a library called `thumbnailer' and 5 | a program called `thumbnailer'. 6 | 7 | The thumbnailer library uses external thumbnailing programs to create an 8 | image of wanted size from a given file. Supported output formats are PNG 9 | and JPEG. 10 | 11 | As my own use for the thumbnailer is as a source of mipmapped textures, 12 | the default behaviour is to create a full-size thumbnail. E.g. if you 13 | have a 3039x2014 camera raw, you'll get a 3039x2014 jpeg or png out. For 14 | PDFs and videos, the default size is 2048px on the longest side. 15 | 16 | 17 | Usage 18 | ----- 19 | 20 | # create a full-size jpeg thumbnail 21 | $ thumbnailer foo.png foo.jpg 22 | $ thumbnailer bar.avi foo.jpg 23 | 24 | # create a png thumbnail that's scaled to fit in a 1024x1024 square 25 | $ thumbnailer -s 1024 foo.pdf foo_thumb.png 26 | 27 | 28 | irb> require 'thumbnailer' 29 | 30 | # fit the jpg inside a 256x256 square 31 | irb> Thumbnailer.thumbnail("foo.png", "foo_thumb.jpg", 256) 32 | 33 | # page five of the pdf 34 | irb> Thumbnailer.thumbnail("bar.pdf", "bar_thumb.png", 2048, 5) 35 | 36 | # take the main thumbnail at 30 seconds into the video 37 | irb> Thumbnailer.thumbnail("qux.avi", "qux_thumb.jpg", 1024, 30) 38 | 39 | 40 | List of supported formats 41 | ------------------------- 42 | 43 | Images 44 | Most image formats. PSDs probably not too accurately. 45 | 46 | Successfully tested: 47 | jpg, png, gif, svg, 48 | orf, nef, dng, crw, arw, raf, pef, cr2, 49 | tif, xpm, ppm, tga, pcx, bmp, 50 | psd 51 | 52 | Uses image icon: 53 | xcf 54 | 55 | Uses default icon: 56 | ai, exr 57 | 58 | 59 | Videos 60 | Anything mplayer / ffmpeg can play. 61 | 62 | Successfully tested: 63 | mkv, flv, avi, mpg, mov, wmv, ogg 64 | 65 | 66 | Audio 67 | Anything mplayer can play. 68 | 69 | The audio thumbnailing system is a wee bit peculiar. It relies 70 | on a Tcl/Tk app to create a waveform and spectrogram of the audio. 71 | 72 | Successfully tested: 73 | mp3, wav, m4a, flac, ra, ogg, wma 74 | 75 | Uses audio icon: 76 | ape 77 | 78 | 79 | Documents 80 | The document thumbnailer first converts the document into a PDF, then 81 | thumbnails the PDF. The PDF conversion requires ooffice for office 82 | documents. 83 | 84 | The HTML thumbnailer uses GtkMozEmbed. 85 | 86 | Successfully tested: 87 | pdf, html, ps, ps.gz, txt, sxi, odp, ppt, doc, xls 88 | 89 | Uses default icon: 90 | chm 91 | 92 | 93 | Others 94 | Thumbnailer uses a mimetype-specific icon from its icons-directory. 95 | If there's an SVG icon, the SVG icon will be used. Otherwise a PNG icon 96 | will be used. 97 | 98 | Successfully tested: 99 | directory, bz2, rar, tar.gz, ttf 100 | 101 | Uses default icon: 102 | sis, torrent, rb 103 | 104 | 105 | Requirements 106 | ------------ 107 | 108 | * Ruby 1.8 109 | 110 | * Metadata library for Ruby 111 | http://github.com/kig/metadata/tree/master 112 | 113 | * Tons of image converter programs and shared-mime-info. 114 | http://freedesktop.org/wiki/Software/shared-mime-info 115 | List of debian packages: 116 | inkscape 117 | xvfb 118 | openoffice.org 119 | python-uno 120 | libimlib2-ruby 121 | netpbm 122 | paps 123 | gs-common 124 | imagemagick 125 | mplayer 126 | ffmpeg 127 | libsnack2 128 | poppler-utils (v0.6 or later, http://poppler.freedesktop.org/) 129 | 130 | * You need the latest version of dcraw to handle some camera raw images. 131 | http://cybercom.net/~dcoffin/dcraw/ 132 | 133 | * You need unoconv for thumbnailing office documents: 134 | http://dag.wieers.com/home-made/unoconv/ 135 | 136 | 137 | Install 138 | ------- 139 | 140 | De-compress archive and enter its top directory. 141 | Then type: 142 | 143 | ($ su) 144 | # ruby setup.rb 145 | 146 | These simple step installs this program under the default 147 | location of Ruby libraries. You can also install files into 148 | your favorite directory by supplying setup.rb some options. 149 | Try "ruby setup.rb --help". 150 | 151 | 152 | License 153 | ------- 154 | 155 | GPL v3 156 | 157 | 158 | Ilmari Heikkinen 159 | -------------------------------------------------------------------------------- /lib/thumbnailer/icons/audio.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 20 | 22 | 25 | 29 | 33 | 34 | 37 | 41 | 45 | 46 | 57 | 68 | 79 | 80 | 100 | 102 | 103 | 105 | image/svg+xml 106 | 108 | Generic Audio 109 | 110 | 111 | Jakub Steiner 112 | 113 | 114 | 116 | 117 | 119 | 121 | 123 | 125 | 127 | 129 | 131 | 132 | 133 | 134 | 138 | 148 | 153 | 158 | 168 | 178 | 179 | 180 | -------------------------------------------------------------------------------- /lib/thumbnailer/icons/application-ogg.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 20 | 22 | 25 | 29 | 33 | 34 | 37 | 41 | 45 | 46 | 57 | 68 | 79 | 80 | 100 | 102 | 103 | 105 | image/svg+xml 106 | 108 | Generic Audio 109 | 110 | 111 | Jakub Steiner 112 | 113 | 114 | 116 | 117 | 119 | 121 | 123 | 125 | 127 | 129 | 131 | 132 | 133 | 134 | 138 | 148 | 153 | 158 | 168 | 178 | 179 | 180 | -------------------------------------------------------------------------------- /lib/thumbnailer/icons/default.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 20 | 22 | 24 | 28 | 32 | 33 | 40 | 44 | 48 | 49 | 59 | 70 | 71 | 90 | 92 | 93 | 95 | image/svg+xml 96 | 98 | Executable 99 | 100 | 101 | Jakub Steiner 102 | 103 | 104 | http://jimmac.musichall.cz/ 105 | 106 | 107 | executable 108 | program 109 | binary 110 | bin 111 | script 112 | shell 113 | 114 | 115 | 117 | 118 | 120 | 122 | 124 | 126 | 128 | 130 | 132 | 133 | 134 | 135 | 139 | 149 | 150 | 154 | 158 | 163 | 167 | 171 | 176 | 177 | 178 | -------------------------------------------------------------------------------- /lib/thumbnailer/icons/application.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 20 | 22 | 24 | 28 | 32 | 33 | 40 | 44 | 48 | 49 | 59 | 70 | 71 | 90 | 92 | 93 | 95 | image/svg+xml 96 | 98 | Executable 99 | 100 | 101 | Jakub Steiner 102 | 103 | 104 | http://jimmac.musichall.cz/ 105 | 106 | 107 | executable 108 | program 109 | binary 110 | bin 111 | script 112 | shell 113 | 114 | 115 | 117 | 118 | 120 | 122 | 124 | 126 | 128 | 130 | 132 | 133 | 134 | 135 | 139 | 149 | 150 | 154 | 158 | 163 | 167 | 171 | 176 | 177 | 178 | -------------------------------------------------------------------------------- /lib/thumbnailer/icons/application-x-executable.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 20 | 22 | 24 | 28 | 32 | 33 | 40 | 44 | 48 | 49 | 59 | 70 | 71 | 90 | 92 | 93 | 95 | image/svg+xml 96 | 98 | Executable 99 | 100 | 101 | Jakub Steiner 102 | 103 | 104 | http://jimmac.musichall.cz/ 105 | 106 | 107 | executable 108 | program 109 | binary 110 | bin 111 | script 112 | shell 113 | 114 | 115 | 117 | 118 | 120 | 122 | 124 | 126 | 128 | 130 | 132 | 133 | 134 | 135 | 139 | 149 | 150 | 154 | 158 | 163 | 167 | 171 | 176 | 177 | 178 | -------------------------------------------------------------------------------- /lib/thumbnailer/icons/application-x-ms-dos-executable.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 20 | 22 | 24 | 28 | 32 | 33 | 40 | 44 | 48 | 49 | 59 | 70 | 71 | 90 | 92 | 93 | 95 | image/svg+xml 96 | 98 | Executable 99 | 100 | 101 | Jakub Steiner 102 | 103 | 104 | http://jimmac.musichall.cz/ 105 | 106 | 107 | executable 108 | program 109 | binary 110 | bin 111 | script 112 | shell 113 | 114 | 115 | 117 | 118 | 120 | 122 | 124 | 126 | 128 | 130 | 132 | 133 | 134 | 135 | 139 | 149 | 150 | 154 | 158 | 163 | 167 | 171 | 176 | 177 | 178 | -------------------------------------------------------------------------------- /lib/thumbnailer/icons/video.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 22 | 24 | 27 | 31 | 35 | 36 | 38 | 42 | 46 | 47 | 50 | 54 | 58 | 59 | 62 | 66 | 70 | 71 | 79 | 83 | 87 | 88 | 99 | 102 | 106 | 110 | 111 | 120 | 130 | 141 | 150 | 160 | 161 | 182 | 184 | 185 | 187 | image/svg+xml 188 | 190 | 191 | 192 | Jakub Steiner 193 | 194 | 195 | http://jimmac.musichall.cz 196 | 198 | Generic Video 199 | 200 | 201 | video 202 | audio 203 | multimedia 204 | movie 205 | 206 | 207 | 208 | 210 | 212 | 214 | 216 | 218 | 220 | 222 | 223 | 224 | 225 | 229 | 241 | 253 | 265 | 272 | 284 | 290 | 302 | 309 | 316 | 317 | 318 | -------------------------------------------------------------------------------- /lib/thumbnailer/icons/application-vnd.rn-realmedia-vbr.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 22 | 24 | 27 | 31 | 35 | 36 | 38 | 42 | 46 | 47 | 50 | 54 | 58 | 59 | 62 | 66 | 70 | 71 | 79 | 83 | 87 | 88 | 99 | 102 | 106 | 110 | 111 | 120 | 130 | 141 | 150 | 160 | 161 | 182 | 184 | 185 | 187 | image/svg+xml 188 | 190 | 191 | 192 | Jakub Steiner 193 | 194 | 195 | http://jimmac.musichall.cz 196 | 198 | Generic Video 199 | 200 | 201 | video 202 | audio 203 | multimedia 204 | movie 205 | 206 | 207 | 208 | 210 | 212 | 214 | 216 | 218 | 220 | 222 | 223 | 224 | 225 | 229 | 241 | 253 | 265 | 272 | 284 | 290 | 302 | 309 | 316 | 317 | 318 | -------------------------------------------------------------------------------- /lib/thumbnailer/icons/application-vnd.rn-realmedia.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 22 | 24 | 27 | 31 | 35 | 36 | 38 | 42 | 46 | 47 | 50 | 54 | 58 | 59 | 62 | 66 | 70 | 71 | 79 | 83 | 87 | 88 | 99 | 102 | 106 | 110 | 111 | 120 | 130 | 141 | 150 | 160 | 161 | 182 | 184 | 185 | 187 | image/svg+xml 188 | 190 | 191 | 192 | Jakub Steiner 193 | 194 | 195 | http://jimmac.musichall.cz 196 | 198 | Generic Video 199 | 200 | 201 | video 202 | audio 203 | multimedia 204 | movie 205 | 206 | 207 | 208 | 210 | 212 | 214 | 216 | 218 | 220 | 222 | 223 | 224 | 225 | 229 | 241 | 253 | 265 | 272 | 284 | 290 | 302 | 309 | 316 | 317 | 318 | -------------------------------------------------------------------------------- /lib/thumbnailer/icons/application-x-shockwave-flash.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 22 | 24 | 27 | 31 | 35 | 36 | 38 | 42 | 46 | 47 | 50 | 54 | 58 | 59 | 62 | 66 | 70 | 71 | 79 | 83 | 87 | 88 | 99 | 102 | 106 | 110 | 111 | 120 | 130 | 141 | 150 | 160 | 161 | 182 | 184 | 185 | 187 | image/svg+xml 188 | 190 | 191 | 192 | Jakub Steiner 193 | 194 | 195 | http://jimmac.musichall.cz 196 | 198 | Generic Video 199 | 200 | 201 | video 202 | audio 203 | multimedia 204 | movie 205 | 206 | 207 | 208 | 210 | 212 | 214 | 216 | 218 | 220 | 222 | 223 | 224 | 225 | 229 | 241 | 253 | 265 | 272 | 284 | 290 | 302 | 309 | 316 | 317 | 318 | -------------------------------------------------------------------------------- /lib/thumbnailer/icons/application-vnd.rn-realmedia-secure.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 22 | 24 | 27 | 31 | 35 | 36 | 38 | 42 | 46 | 47 | 50 | 54 | 58 | 59 | 62 | 66 | 70 | 71 | 79 | 83 | 87 | 88 | 99 | 102 | 106 | 110 | 111 | 120 | 130 | 141 | 150 | 160 | 161 | 182 | 184 | 185 | 187 | image/svg+xml 188 | 190 | 191 | 192 | Jakub Steiner 193 | 194 | 195 | http://jimmac.musichall.cz 196 | 198 | Generic Video 199 | 200 | 201 | video 202 | audio 203 | multimedia 204 | movie 205 | 206 | 207 | 208 | 210 | 212 | 214 | 216 | 218 | 220 | 222 | 223 | 224 | 225 | 229 | 241 | 253 | 265 | 272 | 284 | 290 | 302 | 309 | 316 | 317 | 318 | -------------------------------------------------------------------------------- /lib/thumbnailer/icons/image.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 21 | 22 | 24 | image/svg+xml 25 | 26 | 27 | 28 | 30 | 31 | 32 | 33 | Genric Image 34 | 35 | 36 | Jakub Steiner 37 | 38 | 39 | 40 | imagepicturesnapshotphoto 41 | 42 | 44 | 45 | 46 | 47 | 48 | 49 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 150 | 154 | 155 | 156 | 157 | 158 | 162 | 163 | 164 | 165 | 166 | 182 | 183 | 191 | 195 | 196 | 197 | 198 | 199 | 203 | 204 | 205 | 206 | 207 | 208 | 209 | 210 | 211 | 212 | 213 | 221 | 225 | 226 | 227 | 228 | 229 | 233 | 234 | 235 | 236 | 237 | 238 | 239 | 240 | 241 | 242 | 243 | 244 | 245 | 246 | 247 | 255 | 259 | 260 | 261 | 262 | 263 | 267 | 268 | 269 | 270 | 271 | 272 | 273 | 274 | 275 | 276 | 277 | 278 | 279 | 280 | 281 | 282 | 283 | 284 | 285 | 286 | 287 | 288 | 289 | 290 | 291 | 292 | 293 | 294 | 295 | 369 | 370 | 371 | 372 | 389 | 390 | 391 | 392 | 393 | 394 | 416 | 417 | 418 | 419 | 420 | 421 | 422 | 423 | 424 | 425 | 426 | 427 | 428 | 429 | 430 | 431 | 432 | 433 | 434 | 435 | 436 | 437 | 438 | 439 | 440 | 441 | 442 | 443 | 444 | 445 | 446 | 447 | 448 | 449 | 450 | 451 | 452 | 453 | 454 | 455 | 456 | 457 | 458 | 459 | 460 | 461 | 462 | 463 | 464 | 465 | 466 | 467 | 468 | 480 | 482 | 486 | 487 | 488 | 489 | 490 | 494 | 495 | 496 | 497 | 498 | 502 | 503 | 504 | 505 | 506 | 510 | 511 | 512 | 513 | 514 | 518 | 519 | 520 | 521 | 522 | 526 | 527 | 528 | 529 | 530 | 534 | 535 | 536 | 537 | 538 | 539 | 540 | 541 | 542 | 543 | -------------------------------------------------------------------------------- /lib/thumbnailer/icons/application-x-killustrator.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 21 | 22 | 24 | image/svg+xml 25 | 26 | 27 | 28 | 30 | 31 | 32 | 33 | Genric Image 34 | 35 | 36 | Jakub Steiner 37 | 38 | 39 | 40 | imagepicturesnapshotphoto 41 | 42 | 44 | 45 | 46 | 47 | 48 | 49 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 150 | 154 | 155 | 156 | 157 | 158 | 162 | 163 | 164 | 165 | 166 | 182 | 183 | 191 | 195 | 196 | 197 | 198 | 199 | 203 | 204 | 205 | 206 | 207 | 208 | 209 | 210 | 211 | 212 | 213 | 221 | 225 | 226 | 227 | 228 | 229 | 233 | 234 | 235 | 236 | 237 | 238 | 239 | 240 | 241 | 242 | 243 | 244 | 245 | 246 | 247 | 255 | 259 | 260 | 261 | 262 | 263 | 267 | 268 | 269 | 270 | 271 | 272 | 273 | 274 | 275 | 276 | 277 | 278 | 279 | 280 | 281 | 282 | 283 | 284 | 285 | 286 | 287 | 288 | 289 | 290 | 291 | 292 | 293 | 294 | 295 | 369 | 370 | 371 | 372 | 389 | 390 | 391 | 392 | 393 | 394 | 416 | 417 | 418 | 419 | 420 | 421 | 422 | 423 | 424 | 425 | 426 | 427 | 428 | 429 | 430 | 431 | 432 | 433 | 434 | 435 | 436 | 437 | 438 | 439 | 440 | 441 | 442 | 443 | 444 | 445 | 446 | 447 | 448 | 449 | 450 | 451 | 452 | 453 | 454 | 455 | 456 | 457 | 458 | 459 | 460 | 461 | 462 | 463 | 464 | 465 | 466 | 467 | 468 | 480 | 482 | 486 | 487 | 488 | 489 | 490 | 494 | 495 | 496 | 497 | 498 | 502 | 503 | 504 | 505 | 506 | 510 | 511 | 512 | 513 | 514 | 518 | 519 | 520 | 521 | 522 | 526 | 527 | 528 | 529 | 530 | 534 | 535 | 536 | 537 | 538 | 539 | 540 | 541 | 542 | 543 | -------------------------------------------------------------------------------- /lib/thumbnailer/icons/text-x-vcard.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 19 | 21 | 32 | 35 | 39 | 43 | 44 | 55 | 57 | 61 | 65 | 69 | 70 | 80 | 82 | 86 | 90 | 94 | 95 | 105 | 108 | 112 | 116 | 117 | 120 | 124 | 128 | 129 | 131 | 135 | 139 | 140 | 142 | 146 | 150 | 151 | 153 | 157 | 161 | 162 | 172 | 182 | 192 | 202 | 213 | 214 | 235 | 237 | 238 | 240 | image/svg+xml 241 | 243 | Addess Book 244 | 245 | 246 | 247 | Jakub Steiner 248 | 249 | 250 | http://jimmac.musichall.cz 251 | 252 | 253 | address 254 | contact 255 | book 256 | office 257 | 258 | 259 | 261 | 262 | 264 | 266 | 268 | 270 | 272 | 274 | 276 | 277 | 278 | 279 | 283 | 288 | 293 | 298 | 303 | 308 | 313 | 317 | 324 | 329 | 334 | 335 | 340 | 344 | 349 | 357 | 362 | 366 | 367 | 368 | --------------------------------------------------------------------------------