Class: Vips::Region

Inherits:
Object show all
Defined in:
lib/vips/region.rb

Overview

A region on an image. Create one, then use fetch to quickly get a region of pixels.

For example:

ruby region = Vips::Region.new(image) pixels = region.fetch(10, 10, 100, 100)

Defined Under Namespace

Modules: RegionLayout Classes: ManagedStruct, Struct

Instance Attribute Summary

Attributes inherited from GObject::GObject

#ptr, #references

Instance Method Summary collapse

Methods inherited from Object

#get, #get_pspec, #get_typeof, #get_typeof_error, print_all, #set, #signal_connect

Methods inherited from GObject::GObject

#ffi_managed_struct, ffi_managed_struct, #ffi_struct, ffi_struct

Constructor Details

#initialize(name) ⇒ Region

Returns a new instance of Region.

Raises:



46
47
48
49
50
51
# File 'lib/vips/region.rb', line 46

def initialize(name)
  ptr = Vips.vips_region_new name
  raise Vips::Error if ptr.null?

  super ptr
end

Instance Method Details

#fetch(left, top, width, height) ⇒ Object

Fetch a region filled with pixel data.

Raises:



62
63
64
65
66
67
68
69
70
71
# File 'lib/vips/region.rb', line 62

def fetch(left, top, width, height)
  len = Vips::SizeStruct.new
  ptr = Vips.vips_region_fetch self, left, top, width, height, len
  raise Vips::Error if ptr.null?

  # wrap up as an autopointer
  ptr = FFI::AutoPointer.new(ptr, GLib::G_FREE)

  ptr.get_bytes 0, len[:value]
end

#heightObject



57
58
59
# File 'lib/vips/region.rb', line 57

def height
  Vips.vips_region_height self
end

#widthObject



53
54
55
# File 'lib/vips/region.rb', line 53

def width
  Vips.vips_region_width self
end