1 # Copyright (c) 2009 Paolo Capriotti <p.capriotti@gmail.com>
3 # This program is free software; you can redistribute it and/or modify
4 # it under the terms of the GNU General Public License as published by
5 # the Free Software Foundation; either version 2 of the License, or
6 # (at your option) any later version.
10 class Item < Qt::GraphicsPixmapItem
11 attr_reader :name, :item
14 # name is whatever information the caller needs
15 # to recreate this piece with a different size
17 def initialize(name, pixmap, parent)
18 super(pixmap || Qt::Pixmap.new, parent)
23 def paint(p, options, widget)
27 super p, options, widget
38 scene.remove_item self
42 class ReloadableItem < Item
43 def initialize(name, reloader, parent)
44 super(name, nil, parent)
53 class AutoreloadableItem < Item
54 def initialize(name, pix_loader, parent)
55 super(name, nil, parent)
56 @pix_loader = pix_loader
59 def set_geometry(rect)
60 self.pos = rect.top_left.to_f
61 self.pixmap = @pix_loader[rect.size]
66 BACKGROUND_ZVALUE = -10
70 item_factory, arg = if opts[:reloader]
71 [ReloadableItem, opts[:reloader]]
72 elsif opts[:pix_loader]
73 [AutoreloadableItem, opts[:pix_loader]]
78 item = item_factory.new(opts[:name], arg, opts.fetch(:parent, item_parent))
79 item.pos = opts[:pos] || Qt::PointF.new(0, 0)
80 item.z_value = opts[:z] || 0
81 item.visible = false if opts[:hidden]
85 def destroy_item(item)
86 scene.remove_item item
90 item.z_value = TEMP_ZVALUE