class GDAL::Transformers::TPSTransformer

Attributes

c_pointer[R]

@return [FFI::Pointer] C pointer to the C TPS transformer.

Public Class Methods

function() click to toggle source

@return [FFI::Function]

# File lib/gdal/transformers/tps_transformer.rb, line 7
def self.function
  FFI::GDAL::Alg::TPSTransform
end
new(gcp_list, reversed: false) click to toggle source

@param gcp_list [Array<FFI::GDAL::GCP>] @param reversed [Boolean]

# File lib/gdal/transformers/tps_transformer.rb, line 23
def initialize(gcp_list, reversed: false)
  gcp_list_ptr = FFI::MemoryPointer.new(:pointer, gcp_list.size)

  # TODO: fasterer: each_with_index is slower than loop
  gcp_list.each_with_index do |gcp, i|
    gcp_list_ptr[i].put_pointer(0, gcp.to_ptr)
  end

  pointer = FFI::GDAL::Alg.GDALCreateTPSTransformer(gcp_list.size, gcp_list_ptr, reversed)

  @c_pointer = FFI::AutoPointer.new(pointer, TPSTransformer.method(:release))
end
release(pointer) click to toggle source

@param pointer [FFI::Pointer]

# File lib/gdal/transformers/tps_transformer.rb, line 12
def self.release(pointer)
  return unless pointer && !pointer.null?

  FFI::GDAL::Alg.GDALDestroyTPSTransformer(pointer)
end

Public Instance Methods

destroy!() click to toggle source
# File lib/gdal/transformers/tps_transformer.rb, line 36
def destroy!
  TPSTransformer.release(@c_pointer)

  @c_pointer = nil
end
function() click to toggle source

@return [FFI::Function]

# File lib/gdal/transformers/tps_transformer.rb, line 43
def function
  self.class.function
end