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 | 39216670eb99d6d13f41d0ef9623f3d3fa2a08fd (patch) | |
tree | e50a238f70f1071c9ae47fd79562d304bd55230d /ext/tk/lib/tkextlib/blt/bitmap.rb | |
parent | 1ac3ca2fa44c29c44b4ae7724cfcf343963db194 (diff) | |
download | ruby-39216670eb99d6d13f41d0ef9623f3d3fa2a08fd.tar.gz ruby-39216670eb99d6d13f41d0ef9623f3d3fa2a08fd.tar.xz ruby-39216670eb99d6d13f41d0ef9623f3d3fa2a08fd.zip |
* 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: http://svn.ruby-lang.org/repos/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 000000000..11ad5883d --- /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 |