1#
2# tk/textimage.rb - treat Tk text image object
3#
4require 'tk'
5require 'tk/text'
6
7class TkTextImage<TkObject
8  include Tk::Text::IndexModMethods
9
10  def initialize(parent, index, keys)
11    #unless parent.kind_of?(Tk::Text)
12    #  fail ArgumentError, "expect Tk::Text for 1st argument"
13    #end
14    @t = parent
15    if index == 'end' || index == :end
16      @path = TkTextMark.new(@t, tk_call(@t.path, 'index', 'end - 1 chars'))
17    elsif index.kind_of? TkTextMark
18      if tk_call_without_enc(@t.path,'index',index.path) == tk_call_without_enc(@t.path,'index','end')
19        @path = TkTextMark.new(@t, tk_call_without_enc(@t.path, 'index',
20                                                       'end - 1 chars'))
21      else
22        @path = TkTextMark.new(@t, tk_call_without_enc(@t.path, 'index',
23                                                       index.path))
24      end
25    else
26      @path = TkTextMark.new(@t, tk_call_without_enc(@t.path, 'index',
27                                                     _get_eval_enc_str(index)))
28    end
29    @path.gravity = 'left'
30    @index = @path.path
31    @id = tk_call_without_enc(@t.path, 'image', 'create', @index,
32                              *hash_kv(keys, true)).freeze
33    @path.gravity = 'right'
34  end
35
36  def id
37    Tk::Text::IndexString.new(@id)
38  end
39  def mark
40    @path
41  end
42
43  def [](slot)
44    cget(slot)
45  end
46  def []=(slot, value)
47    configure(slot, value)
48    value
49  end
50
51  def cget(slot)
52    @t.image_cget(@index, slot)
53  end
54
55  def cget_strict(slot)
56    @t.image_cget_strict(@index, slot)
57  end
58
59  def configure(slot, value=None)
60    @t.image_configure(@index, slot, value)
61    self
62  end
63#  def configure(slot, value)
64#    tk_call @t.path, 'image', 'configure', @index, "-#{slot}", value
65#  end
66
67  def configinfo(slot = nil)
68    @t.image_configinfo(@index, slot)
69  end
70
71  def current_configinfo(slot = nil)
72    @t.current_image_configinfo(@index, slot)
73  end
74
75  def image
76    img = tk_call_without_enc(@t.path, 'image', 'cget', @index, '-image')
77    TkImage::Tk_IMGTBL[img]? TkImage::Tk_IMGTBL[img] : img
78  end
79
80  def image=(value)
81    tk_call_without_enc(@t.path, 'image', 'configure', @index, '-image',
82                        _get_eval_enc_str(value))
83    #self
84    value
85  end
86end
87
88TktImage = TkTextImage
89