Class: Magick::Image::View

Inherits:
Object
  • Object
show all
Defined in:
lib/RMagick.rb

Overview

Magick::Image::View class

Defined Under Namespace

Classes: Pixels, Rows

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(img, x, y, width, height) ⇒ View

Returns a new instance of View.



1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
# File 'lib/RMagick.rb', line 1014

def initialize(img, x, y, width, height)
    img.check_destroyed
    if width <= 0 || height <= 0
        Kernel.raise ArgumentError, "invalid geometry (#{width}x#{height}+#{x}+#{y})"
    end
    if x < 0 || y < 0 || (x+width) > img.columns || (y+height) > img.rows
        Kernel.raise RangeError, "geometry (#{width}x#{height}+#{x}+#{y}) exceeds image boundary"
    end
    @view = img.get_pixels(x, y, width, height)
    @img = img
    @x = x
    @y = y
    @width = width
    @height = height
    @dirty = false
end

Instance Attribute Details

#dirtyObject

Returns the value of attribute dirty.



1012
1013
1014
# File 'lib/RMagick.rb', line 1012

def dirty
  @dirty
end

#heightObject (readonly)

Returns the value of attribute height.



1011
1012
1013
# File 'lib/RMagick.rb', line 1011

def height
  @height
end

#widthObject (readonly)

Returns the value of attribute width.



1011
1012
1013
# File 'lib/RMagick.rb', line 1011

def width
  @width
end

#xObject (readonly)

Returns the value of attribute x.



1011
1012
1013
# File 'lib/RMagick.rb', line 1011

def x
  @x
end

#yObject (readonly)

Returns the value of attribute y.



1011
1012
1013
# File 'lib/RMagick.rb', line 1011

def y
  @y
end

Instance Method Details

#[](*args) ⇒ Object



1031
1032
1033
1034
1035
# File 'lib/RMagick.rb', line 1031

def [](*args)
    rows = Rows.new(@view, @width, @height, args)
    rows.add_observer(self)
    return rows
end

#sync(force = false) ⇒ Object

Store changed pixels back to image



1038
1039
1040
1041
# File 'lib/RMagick.rb', line 1038

def sync(force=false)
    @img.store_pixels(x, y, width, height, @view) if (@dirty || force)
    return (@dirty || force)
end

#update(rows) ⇒ Object

Get update from Rows - if @dirty ever becomes true, don’t change it back to false!



1045
1046
1047
1048
1049
# File 'lib/RMagick.rb', line 1045

def update(rows)
    @dirty = true
    rows.delete_observer(self)      # No need to tell us again.
    nil
end