mirror of
https://github.com/infinitefusion/infinitefusion-e18.git
synced 2025-12-06 06:01:46 +00:00
122 lines
3.1 KiB
Ruby
122 lines
3.1 KiB
Ruby
#===============================================================================
|
|
# Displays an icon bitmap in a window. Supports animated images.
|
|
#===============================================================================
|
|
class IconWindow < SpriteWindow_Base
|
|
attr_reader :name
|
|
|
|
def initialize(x,y,width,height,viewport=nil)
|
|
super(x,y,width,height)
|
|
self.viewport=viewport
|
|
self.contents=nil
|
|
@name=""
|
|
@_iconbitmap=nil
|
|
end
|
|
|
|
def dispose
|
|
clearBitmaps()
|
|
super
|
|
end
|
|
|
|
def update
|
|
super
|
|
if @_iconbitmap
|
|
@_iconbitmap.update
|
|
self.contents=@_iconbitmap.bitmap
|
|
end
|
|
end
|
|
|
|
def clearBitmaps
|
|
@_iconbitmap.dispose if @_iconbitmap
|
|
@_iconbitmap=nil
|
|
self.contents=nil if !self.disposed?
|
|
end
|
|
|
|
# Sets the icon's filename. Alias for setBitmap.
|
|
def name=(value)
|
|
setBitmap(value)
|
|
end
|
|
|
|
# Sets the icon's filename.
|
|
def setBitmap(file,hue=0)
|
|
clearBitmaps()
|
|
@name=file
|
|
return if file==nil
|
|
if file!=""
|
|
@_iconbitmap=AnimatedBitmap.new(file,hue)
|
|
# for compatibility
|
|
self.contents=@_iconbitmap ? @_iconbitmap.bitmap : nil
|
|
else
|
|
@_iconbitmap=nil
|
|
end
|
|
end
|
|
end
|
|
|
|
|
|
|
|
#===============================================================================
|
|
# Displays an icon bitmap in a window. Supports animated images.
|
|
# Accepts bitmaps and paths to bitmap files in its constructor.
|
|
#===============================================================================
|
|
class PictureWindow < SpriteWindow_Base
|
|
def initialize(pathOrBitmap)
|
|
super(0,0,32,32)
|
|
self.viewport=viewport
|
|
self.contents=nil
|
|
@_iconbitmap=nil
|
|
setBitmap(pathOrBitmap)
|
|
end
|
|
|
|
def dispose
|
|
clearBitmaps()
|
|
super
|
|
end
|
|
|
|
def update
|
|
super
|
|
if @_iconbitmap
|
|
if @_iconbitmap.is_a?(Bitmap)
|
|
self.contents=@_iconbitmap
|
|
else
|
|
@_iconbitmap.update
|
|
self.contents=@_iconbitmap.bitmap
|
|
end
|
|
end
|
|
end
|
|
|
|
def clearBitmaps
|
|
@_iconbitmap.dispose if @_iconbitmap
|
|
@_iconbitmap=nil
|
|
self.contents=nil if !self.disposed?
|
|
end
|
|
|
|
# Sets the icon's bitmap or filename. (hue parameter
|
|
# is ignored unless pathOrBitmap is a filename)
|
|
def setBitmap(pathOrBitmap,hue=0)
|
|
clearBitmaps()
|
|
if pathOrBitmap!=nil && pathOrBitmap!=""
|
|
if pathOrBitmap.is_a?(Bitmap)
|
|
@_iconbitmap=pathOrBitmap
|
|
self.contents=@_iconbitmap
|
|
self.width=@_iconbitmap.width+self.borderX
|
|
self.height=@_iconbitmap.height+self.borderY
|
|
elsif pathOrBitmap.is_a?(AnimatedBitmap)
|
|
@_iconbitmap=pathOrBitmap
|
|
self.contents=@_iconbitmap.bitmap
|
|
self.width=@_iconbitmap.bitmap.width+self.borderX
|
|
self.height=@_iconbitmap.bitmap.height+self.borderY
|
|
else
|
|
@_iconbitmap=AnimatedBitmap.new(pathOrBitmap,hue)
|
|
self.contents=@_iconbitmap ? @_iconbitmap.bitmap : nil
|
|
self.width=@_iconbitmap ? @_iconbitmap.bitmap.width+self.borderX :
|
|
32+self.borderX
|
|
self.height=@_iconbitmap ? @_iconbitmap.bitmap.height+self.borderY :
|
|
32+self.borderY
|
|
end
|
|
else
|
|
@_iconbitmap=nil
|
|
self.width=32+self.borderX
|
|
self.height=32+self.borderY
|
|
end
|
|
end
|
|
end
|