Sha256: 22a4f46900a767202d8070b6962c88f839aa9f37aa1dc451c580c8d04c9f56bc

Contents?: true

Size: 833 Bytes

Versions: 2

Compression:

Stored size: 833 Bytes

Contents

module OGR
  module PointExtensions
    # @return [Array<Array>] An array of (x, y) or (x, y, z) points.
    def points
      return [[]] if empty?

      x_stride = 2
      y_stride = 2
      z_stride = coordinate_dimension == 3 ? 1 : 0

      buffer_size = FFI::Type::DOUBLE.size * 2 * point_count

      x_buffer = FFI::MemoryPointer.new(:buffer_out, buffer_size)
      y_buffer = FFI::MemoryPointer.new(:buffer_out, buffer_size)

      z_buffer = if coordinate_dimension == 3
                   z_size = FFI::Type::DOUBLE.size * point_count
                   FFI::MemoryPointer.new(:buffer_out, z_size)
                 end

      _num_points = FFI::OGR::API.OGR_G_GetPoints(@c_pointer,
        x_buffer,
        x_stride,
        y_buffer,
        y_stride,
        z_buffer,
        z_stride)

      [point]
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
ffi-gdal-1.0.0.beta5 lib/ogr/geometries/point_extensions.rb
ffi-gdal-1.0.0.beta4 lib/ogr/geometries/point_extensions.rb