Class: GDAL::Transformers::TPSTransformer

Inherits:
Object
  • Object
show all
Defined in:
lib/gdal/transformers/tps_transformer.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(gcp_list, reversed: false) ⇒ TPSTransformer

Returns a new instance of TPSTransformer.

Parameters:

  • gcp_list (Array<FFI::GDAL::GCP>)
  • reversed (Boolean) (defaults to: false)


23
24
25
26
27
28
29
30
31
32
33
34
# 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

Instance Attribute Details

#c_pointerFFI::Pointer (readonly)

Returns C pointer to the C TPS transformer.

Returns:

  • (FFI::Pointer)

    C pointer to the C TPS transformer.



19
20
21
# File 'lib/gdal/transformers/tps_transformer.rb', line 19

def c_pointer
  @c_pointer
end

Class Method Details

.functionFFI::Function

Returns:

  • (FFI::Function)


7
8
9
# File 'lib/gdal/transformers/tps_transformer.rb', line 7

def self.function
  FFI::GDAL::Alg::TPSTransform
end

.release(pointer) ⇒ Object

Parameters:

  • pointer (FFI::Pointer)


12
13
14
15
16
# File 'lib/gdal/transformers/tps_transformer.rb', line 12

def self.release(pointer)
  return unless pointer && !pointer.null?

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

Instance Method Details

#destroy!Object



36
37
38
39
40
# File 'lib/gdal/transformers/tps_transformer.rb', line 36

def destroy!
  TPSTransformer.release(@c_pointer)

  @c_pointer = nil
end

#functionFFI::Function

Returns:

  • (FFI::Function)


43
44
45
# File 'lib/gdal/transformers/tps_transformer.rb', line 43

def function
  self.class.function
end