Class: Rubyshop::Canvas
- Inherits:
-
Object
- Object
- Rubyshop::Canvas
- Defined in:
- lib/rubyshop/canvas.rb
Instance Attribute Summary collapse
-
#height ⇒ Object
readonly
Returns the value of attribute height.
-
#width ⇒ Object
readonly
Returns the value of attribute width.
Instance Method Summary collapse
- #flatten ⇒ Object
-
#initialize(width, height, &block) ⇒ Canvas
constructor
A new instance of Canvas.
- #layer(filename, &block) ⇒ Object
- #layer_set(name, &block) ⇒ Object
- #render ⇒ Object
- #save_as(filename) ⇒ Object
Constructor Details
#initialize(width, height, &block) ⇒ Canvas
Returns a new instance of Canvas.
5 6 7 8 9 10 11 12 13 |
# File 'lib/rubyshop/canvas.rb', line 5 def initialize(width, height, &block) @image = Magick::Image.new width, height @width = width @height = height @layers = [] @sets = {} self.instance_eval &block if block_given? end |
Instance Attribute Details
#height ⇒ Object (readonly)
Returns the value of attribute height.
3 4 5 |
# File 'lib/rubyshop/canvas.rb', line 3 def height @height end |
#width ⇒ Object (readonly)
Returns the value of attribute width.
3 4 5 |
# File 'lib/rubyshop/canvas.rb', line 3 def width @width end |
Instance Method Details
#flatten ⇒ Object
42 43 44 45 46 47 48 49 50 51 52 53 54 |
# File 'lib/rubyshop/canvas.rb', line 42 def flatten layers = @layers layers.reverse.each do |layer| if layer.is_a? Rubyshop::Layer @image.composite!(layer.image, layer.offset_x, layer.offset_y, layer.mode) elsif layer.is_a? Rubyshop::LayerSet layer.layers.reverse.each do |set_layer| image.composite!(set_layer.image, set_layer.offset_x, set_layer.offset_y, set_layer.mode) end end @layers.delete(layer) end end |
#layer(filename, &block) ⇒ Object
33 34 35 36 37 38 39 40 |
# File 'lib/rubyshop/canvas.rb', line 33 def layer(filename, &block) layer = Layer.new filename @layers << layer layer.instace_eval &block if block_given? return layer end |
#layer_set(name, &block) ⇒ Object
15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
# File 'lib/rubyshop/canvas.rb', line 15 def layer_set(name, &block) if name.is_a? Rubyshop::LayerSet set = name @layers << set @sets[set.name] = set elsif @sets[name] set = @sets[name] else set = LayerSet.new name @layers << set @sets[name] = set end set.instance_eval &block if block_given? return set end |
#render ⇒ Object
56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 |
# File 'lib/rubyshop/canvas.rb', line 56 def render image = @image @layers.reverse.each do |layer| if layer.is_a? Rubyshop::Layer image.composite!(layer.image, layer.offset_x, layer.offset_y, layer.mode) elsif layer.is_a? Rubyshop::LayerSet layer.layers.reverse.each do |set_layer| image.composite!(set_layer.image, set_layer.offset_x, set_layer.offset_y, set_layer.mode) end elsif layer.is_a? Rubyshop::AdjustmentLayer # nothing to do elsif layer.is_a? Rubyshop::FillLayer # nother to do end end return image end |
#save_as(filename) ⇒ Object
74 75 76 |
# File 'lib/rubyshop/canvas.rb', line 74 def save_as(filename) render.write(filename) end |