Sha256: 52fe7c12cda22109057dc33878af04522d7471e47aa9e8ce7700278f0dfa44de
Contents?: true
Size: 1.8 KB
Versions: 3
Compression:
Stored size: 1.8 KB
Contents
require_relative '../ffi/gdal' module GDAL module MajorObject include FFI::GDAL # @return [Array<String>] def metadata_domain_list # I don't quite get it, but if #GDALGetMetadataDomainList isn't called # twice, the last domain in the list sometimes doesn't get read. GDALGetMetadataDomainList(c_pointer) list_pointer = GDALGetMetadataDomainList(c_pointer) return [] if list_pointer.null? strings = list_pointer.get_array_of_string(0) strings.compact.delete_if(&:empty?) end # @param domain [String] Name of the domain to get metadata for. # @return [Hash] def metadata_for_domain(domain='') m = GDALGetMetadata(c_pointer, domain) return {} if m.null? data_array = m.get_array_of_string(0) data_array.each_with_object({}) do |key_value_pair, obj| key, value = key_value_pair.split('=', 2) begin obj[key] = MultiXml.parse(value) rescue MultiXml::ParseError obj[key] = value end end end # @param name [String] # @param domain [String] # @return [String] def metadata_item(name, domain='') GDALGetMetadataItem(c_pointer, name, domain) end # @return [Hash{domain => Array<String>}] def all_metadata sub_metadata = metadata_domain_list.each_with_object({}) do |subdomain, obj| metadata_array = metadata_for_domain(subdomain) obj[subdomain] = metadata_array end { DEFAULT: metadata_for_domain }.merge(sub_metadata) end # @return [String] def description GDALGetDescription(c_pointer) end # @param new_description [String] def description=(new_description) GDALSetDescription(c_pointer, new_description.to_s) end def null? c_pointer.null? end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
ffi-gdal-0.0.3 | lib/ffi-gdal/major_object.rb |
ffi-gdal-0.0.2 | lib/ffi-gdal/major_object.rb |
ffi-gdal-0.0.1 | lib/ffi-gdal/major_object.rb |