class GDAL::Transformers::GCPTransformer

Attributes

c_pointer[R]

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

Public Class Methods

function() click to toggle source

@return [FFI::Function]

# File lib/gdal/transformers/gcp_transformer.rb, line 7
def self.function
  FFI::GDAL::Alg::GCPTransform
end
new(gcp_list, requested_polynomial_order, reversed: false, tolerance: nil, minimum_gcps: nil) click to toggle source

@param gcp_list [Array<FFI::GDAL::GCP>] @param requested_polynomial_order [Integer] 1, 2, or 3. @param reversed [Boolean]

# File lib/gdal/transformers/gcp_transformer.rb, line 24
def initialize(gcp_list, requested_polynomial_order, reversed: false, tolerance: nil, minimum_gcps: nil)
  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 = if tolerance || minimum_gcps
              FFI::GDAL::Alg.GDALCreateGCPRefineTransformer(
                gcp_list.size,
                gcp_list_ptr,
                requested_polynomial_order,
                reversed
              )
            else
              FFI::GDAL::Alg.GDALCreateGCPTransformer(
                gcp_list.size,
                gcp_list_ptr,
                requested_polynomial_order,
                reversed
              )
            end

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

@param pointer [FFI::Pointer]

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

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

Public Instance Methods

destroy!() click to toggle source
# File lib/gdal/transformers/gcp_transformer.rb, line 51
def destroy!
  GCPTransformer.release(@c_pointer)

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

@return [FFI::Function]

# File lib/gdal/transformers/gcp_transformer.rb, line 58
def function
  self.class.function
end