diff options
author | nagai <nagai@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2004-12-23 16:23:30 +0000 |
---|---|---|
committer | nagai <nagai@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2004-12-23 16:23:30 +0000 |
commit | 532e34fcd243eaa906880c5c5a9fb77f19e0b7c1 (patch) | |
tree | e50a238f70f1071c9ae47fd79562d304bd55230d /ext/tk/lib/tkextlib/blt/bitmap.rb | |
parent | d34a65bc40ce303f8070bc043b490eee5881ebf1 (diff) | |
download | ruby-532e34fcd243eaa906880c5c5a9fb77f19e0b7c1.tar.gz |
* ext/tk/lib/tkextlib/blt.rb: add BLT extension support
* ext/tk/lib/tkextlib/blt/*.rb: ditto
* ext/tk/lib/tkextlib/blt/tile/*.rb: ditto
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@7645 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'ext/tk/lib/tkextlib/blt/bitmap.rb')
-rw-r--r-- | ext/tk/lib/tkextlib/blt/bitmap.rb | 84 |
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 |