Module: SimpleMapnik::FFI

Extended by:
FFI::Library
Included in:
Bounds, Coordinate, Map
Defined in:
lib/simple_mapnik.rb

Defined Under Namespace

Classes: MAPNIK_COORD_T

Constant Summary collapse

MAPNIK_FUNCTIONS =
{
  mapnik_register_datasources: [[:string, :pointer], :int],
  mapnik_register_fonts: [[:string, :pointer], :int],
  mapnik_map: [[:uint, :uint], :pointer],
  mapnik_map_free: [[:pointer], :void],
  # mapnik_map_reset_last_error: [[:pointer], :void],
  mapnik_map_get_srs: [[:pointer], :string],
  mapnik_map_set_srs: [[:pointer, :string], :int],
  mapnik_map_load: [[:pointer, :string], :int],
  mapnik_map_load_string: [[:pointer, :string], :int],
  mapnik_map_zoom_all: [[:pointer], :int],
  mapnik_map_render_to_file: [[:pointer, :string], :int],
  mapnik_map_resize: [[:pointer, :uint, :uint], :void],
  mapnik_map_set_buffer_size: [[:pointer, :int], :void],
  mapnik_map_last_error: [[:pointer], :string],
  mapnik_map_projection: [[:pointer], :pointer], # needs struct
  mapnik_projection_free: [[:pointer], :void],
  mapnik_projection_forward: [[:pointer, MAPNIK_COORD_T.by_value], :pointer],
  mapnik_bbox: [[:double, :double, :double, :double], :pointer],
  mapnik_bbox_free: [[:pointer], :void],
  mapnik_map_zoom_to_box: [[:pointer, :pointer], :void],
  mapnik_image_free: [[:pointer], :void],
  mapnik_map_render_to_image: [[:pointer], :pointer],
  mapnik_image_blob_free: [[:pointer], :void],
  mapnik_image_to_png_blob: [[:pointer], :pointer]
}.freeze

Class Method Summary collapse

Class Method Details

.attach_functionsObject



56
57
58
59
60
61
62
63
64
# File 'lib/simple_mapnik.rb', line 56

def self.attach_functions
  ffi_lib mapnik_c_api_path

  MAPNIK_FUNCTIONS.each do |func, params|
    attach_function func, params.first, params.last
  end
rescue LoadError, NoMethodError
  raise LoadError.new('Could not load Mapnik library and / or C API')
end

.find_lib(lib) ⇒ Object



13
14
15
16
# File 'lib/simple_mapnik.rb', line 13

def self.find_lib(lib)
  gem_root = Gem::Specification.find_by_name('simple_mapnik').gem_dir
  File.expand_path File.join(gem_root, "#{lib}.#{::FFI::Platform::LIBSUFFIX}")
end

.mapnik_c_api_pathObject



18
19
20
# File 'lib/simple_mapnik.rb', line 18

def self.mapnik_c_api_path
  find_lib 'libmapnik_c'
end