summaryrefslogtreecommitdiff
path: root/ext/tk/lib/tkextlib/blt/bitmap.rb
diff options
context:
space:
mode:
Diffstat (limited to 'ext/tk/lib/tkextlib/blt/bitmap.rb')
-rw-r--r--ext/tk/lib/tkextlib/blt/bitmap.rb84
1 files changed, 84 insertions, 0 deletions
diff --git a/ext/tk/lib/tkextlib/blt/bitmap.rb b/ext/tk/lib/tkextlib/blt/bitmap.rb
new file mode 100644
index 0000000000..11ad5883d0
--- /dev/null
+++ b/ext/tk/lib/tkextlib/blt/bitmap.rb
@@ -0,0 +1,84 @@
+#
+# tkextlib/blt/bitmap.rb
+# by Hidetoshi NAGAI (nagai@ai.kyutech.ac.jp)
+#
+
+require 'tk'
+require 'tkextlib/blt.rb'
+
+module Tk::BLT
+ class Bitmap < TkObject
+ extend TkCore
+
+ TkCommandNames = ['::blt::bitmap'.freeze].freeze
+
+ BITMAP_ID_TBL = TkCore::INTERP.create_table
+ BITMAP_ID = ['blt_bitmap_id'.freeze, '00000'.taint].freeze
+
+ def self.data(name)
+ dat = tk_simple_list(tk_call('::blt::bitmap', 'data', name))
+ [ tk_split_list(dat[0]), tk_simple_list(dat[1]) ]
+ end
+
+ def self.exist?(name)
+ bool(tk_call('::blt::bitmap', 'exists', name))
+ end
+
+ def self.height(name)
+ number(tk_call('::blt::bitmap', 'height', name))
+ end
+
+ def self.width(name)
+ number(tk_call('::blt::bitmap', 'width', name))
+ end
+
+ def self.source(name)
+ tk_simple_list(tk_call('::blt::bitmap', 'source', name))
+ end
+
+ #################################
+
+ class << self
+ alias _new new
+
+ def new(data, keys={})
+ _new(:data, data, keys)
+ end
+ alias define new
+
+ def compose(text, keys={})
+ _new(:text, text, keys)
+ end
+ end
+
+ def initialize(type, data, keys = {})
+ @id = BITMAP_ID.join(TkCore::INTERP._ip_id_)
+ BITMAP_ID[1].succ!
+ BITMAP_ID_TBL[@id] = self
+
+ @path = @id
+
+ if type == :text
+ tk_call('::blt::bitmap', 'compose', @id, *hash_kv(keys))
+ else # :data
+ tk_call('::blt::bitmap', 'define', @id, *hash_kv(keys))
+ end
+ end
+
+ def exist?
+ bool(tk_call('::blt::bitmap', 'exists', @id))
+ end
+
+ def height
+ number(tk_call('::blt::bitmap', 'height', @id))
+ end
+
+ def width
+ number(tk_call('::blt::bitmap', 'width', @id))
+ end
+
+ def source
+ tk_simple_list(tk_call('::blt::bitmap', 'source', @id))
+ end
+ end
+end