Make the Image format available.

Methods
N
S
U
Class Public methods
new()
# 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)
# 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)
# 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)
# 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