Make the Image format available.
Methods
Class Public methods
new()
Link
# File ext/tk/sample/tkextlib/tkimg/demo.rb, line 16 def initialize img_version = Tk::Img.package_version @typeFrame = Hash.new @imgPriv = Hash.new root = TkRoot.new(:title=>'Tests for available image formats') root.winfo_children.each{|w| w.destroy} TkImage.names{|img| img.delete} f = TkFrame.new TkButton.new(f, :text=>'Dismiss', :command=>proc{exit}).pack(:side=>:left) f.pack(:side=>:top, :expand=>:y, :fill=>:both) TkMessage.new(:aspect=>900, :text=>format('This page shows the available image formats of the Img extension (Img version %s, using Tcl/Tk %s)', img_version, Tk::TK_PATCHLEVEL)).pack(:side=>:top, :expand=>:y, :fill=>:both) end
Instance Public methods
show_animated_gif(keys)
Link
# File ext/tk/sample/tkextlib/tkimg/demo.rb, line 76 def show_animated_gif(keys) w = TkLabel.new begin im = TkPhotoImage.new(keys.merge(:format=>[:gif, {:index=>0}])) im.configure(:data=>'', :file=>'', :format=>'') #free storage w.image(im) @imgPriv[w] ||= Hash.new @imgPriv[w][0] = im @imgPriv[w][:args] = keys Tk.update_idletasks Tk.after(20, proc{update_animated_gif(w, :image, 0)}) rescue => e w.configure(:text=>"error displaying animated gif:\n#{e.message}", :image=>'', :relief=>:ridge) end w.pack end
show_image(fmt, type, data)
Link
# File ext/tk/sample/tkextlib/tkimg/demo.rb, line 94 def show_image(fmt, type, data) fmt = fmt.to_s.capitalize unless @typeFrame[fmt] @typeFrame[fmt] = TkFrame.new.pack(:side=>:top, :expand=>true, :fill=>:x) TkLabel.new(@typeFrame[fmt], :text=>"#{fmt} : ").pack(:side=>:left) end begin f = TkFrame.new(@typeFrame[fmt], :borderwidth=>2, :relief=>:ridge).pack(:side=>:left) im = TkPhotoImage.new(:data=>data) im['data'] = '' TkLabel.new(f, :image=>im).pack TkLabel.new(f, :text=>type, :borderwidth=>0, :pady=>0, :padx=>2, :font=>'Helvetica 8').pack rescue => e TkMessage.new(f, :text=>"error displaying #{type} image: #{e.message}", :aspect=>250).pack end Tk.update end
update_animated_gif(w, method, num)
Link
# File ext/tk/sample/tkextlib/tkimg/demo.rb, line 36 def update_animated_gif(w, method, num) return unless @imgPriv[w] if @imgPriv[w][:args] im = TkPhotoImage.new im.copy(@imgPriv[w][num]) num += 1 begin im.configure(@imgPriv[w][:args].merge(:format=>[:gif, {:index=>num}])) im.configure(:data=>'', :file=>'') #free storage @imgPriv[w][num] = im rescue @imgPriv[w].delete(:args) if num > 1 num = 0 im = @imgPriv[w][num] else # this is not an animated GIF; just stop @imgPriv[w].delete(0) return end end else num += 1 num = 0 unless @imgPriv[w][num] im = @imgPriv[w][num] end begin w.__send__(method, im) Tk.update_idletasks Tk.after(20, proc{update_animated_gif(w, method, num)}) rescue @imgPriv[w].delete(:args) @imgPriv[w].each{|im| @im.delete @imgPriv.delete(im) } end end