cb-ffi-proj4 0.0.7 → 0.0.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/.gitignore ADDED
@@ -0,0 +1,11 @@
1
+ *.kpf
2
+ *.komodoproject
3
+ *~
4
+ .DS_Store
5
+ *tmp*
6
+ pkg/
7
+ doc/
8
+ *.orig
9
+ *.patch
10
+ .vimrc_local
11
+ Gemfile.lock
data/Gemfile ADDED
@@ -0,0 +1,3 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gemspec
data/MIT-LICENSE CHANGED
@@ -1,4 +1,4 @@
1
- Copyright (c) 2011 J Smith <dark.panda@gmail.com>
1
+ Copyright (c) 2012 J Smith <dark.panda@gmail.com>
2
2
 
3
3
  Permission is hereby granted, free of charge, to any person
4
4
  obtaining a copy of this software and associated documentation
data/Rakefile CHANGED
@@ -2,9 +2,13 @@
2
2
  # -*- ruby -*-
3
3
 
4
4
  require 'rubygems'
5
+
6
+ gem 'rdoc', '~> 3.12'
7
+
5
8
  require 'rubygems/package_task'
6
9
  require 'rake/testtask'
7
10
  require 'rdoc/task'
11
+ require 'bundler/gem_tasks'
8
12
 
9
13
  if RUBY_VERSION >= '1.9'
10
14
  begin
@@ -16,33 +20,17 @@ end
16
20
 
17
21
  $:.push 'lib'
18
22
 
19
- version = File.read('VERSION') rescue ''
20
-
21
- begin
22
- require 'jeweler'
23
- Jeweler::Tasks.new do |gem|
24
- gem.name = "cb-ffi-proj4"
25
- gem.summary = "An ffi wrapper for the PROJ.4 Cartographic Projections library."
26
- gem.description = gem.summary
27
- gem.email = "dark.panda@gmail.com"
28
- gem.homepage = "http://github.com/dark-panda/ffi-proj4"
29
- gem.authors = [ "J Smith" ]
30
- gem.add_dependency "ffi", "~> 1.0.0"
31
- end
32
- Jeweler::GemcutterTasks.new
33
- rescue LoadError
34
- puts "Jeweler (or a dependency) not available. Install it with: sudo gem install jeweler"
35
- end
23
+ version = Proj4::VERSION
36
24
 
37
- desc 'Test GEOS interface'
25
+ desc 'Test Proj4 interface'
38
26
  Rake::TestTask.new(:test) do |t|
39
27
  t.test_files = FileList['test/**/*_tests.rb']
40
28
  t.verbose = !!ENV['VERBOSE_TESTS']
29
+ t.warning = !!ENV['WARNINGS']
41
30
  end
42
31
 
43
32
  desc 'Build docs'
44
33
  Rake::RDocTask.new do |t|
45
- require 'rdoc'
46
34
  t.title ="ffi-proj4 #{version}"
47
35
  t.main = 'README.rdoc'
48
36
  t.rdoc_dir = 'doc'
data/ffi-proj4.gemspec ADDED
@@ -0,0 +1,24 @@
1
+ # -*- encoding: utf-8 -*-
2
+
3
+ require File.expand_path('../lib/ffi-proj4/version', __FILE__)
4
+
5
+ Gem::Specification.new do |s|
6
+ s.name = "cb-ffi-proj4"
7
+ s.version = Proj4::VERSION
8
+
9
+ s.required_rubygems_version = Gem::Requirement.new("> 1.3.1") if s.respond_to? :required_rubygems_version=
10
+ s.authors = ["J Smith"]
11
+ s.description = "An ffi wrapper for the PROJ.4 Cartographic Projections library."
12
+ s.summary = s.description
13
+ s.email = "dark.panda@gmail.com"
14
+ s.files = `git ls-files`.split($\)
15
+ s.executables = s.files.grep(%r{^bin/}).map { |f| File.basename(f) }
16
+ s.test_files = s.files.grep(%r{^(test|spec|features)/})
17
+ s.homepage = "http://github.com/dark-panda/ffi-proj4"
18
+ s.require_paths = ["lib"]
19
+
20
+ s.add_dependency("ffi", [">= 1.0.0"])
21
+ s.add_dependency("rdoc")
22
+ s.add_dependency("rake", ["~> 0.9"])
23
+ end
24
+
data/lib/ffi-proj4.rb CHANGED
@@ -2,6 +2,7 @@
2
2
  require 'rubygems'
3
3
  require 'ffi'
4
4
  require 'rbconfig'
5
+ require 'ffi-proj4/version'
5
6
 
6
7
  #ENV['PROJ_LIB'] = File.join(File.dirname(__FILE__), %w{ .. data }) unless ENV['PROJ_LIB']
7
8
  #p ENV['PROJ_LIB']
@@ -20,7 +21,7 @@ module Proj4
20
21
 
21
22
  module FFIProj4
22
23
  def self.proj4_library_path
23
- return @proj4_library_path if @proj4_library_path
24
+ return @proj4_library_path if defined?(@proj4_library_path)
24
25
 
25
26
  paths = if ENV['PROJ4_LIBRARY_PATH']
26
27
  [ ENV['PROJ4_LIBRARY_PATH'] ]
@@ -122,6 +123,10 @@ module Proj4
122
123
  :pj_datum_transform => [
123
124
  :int, :pointer, :pointer, :long, :int, :pointer, :pointer, :pointer
124
125
  ],
126
+
127
+ :setenv => [
128
+ :int, :string, :string, :int
129
+ ]
125
130
  }
126
131
 
127
132
  FFI_LAYOUT.each do |fun, ary|
@@ -145,16 +150,15 @@ module Proj4
145
150
 
146
151
  def proj_lib=(lib)
147
152
  @proj_lib = lib
148
- # if RUBY_PLATFORM == 'java'
149
- # FFIProj4.setenv('PROJ_LIB', lib, 1)
150
- # else
153
+ if RUBY_PLATFORM == 'java'
154
+ FFIProj4.setenv('PROJ_LIB', lib, 1)
155
+ else
151
156
  ENV['PROJ_LIB'] = lib
152
- # end
157
+ end
153
158
  end
154
159
  end
155
160
 
156
161
  module Constants
157
- VERSION = File.read(File.join(PROJ4_BASE, %w{ .. .. VERSION })).strip
158
162
  PROJ4_VERSION = if Proj4.version =~ /Rel\. (\d+)\.(\d+)\.(\d+)/
159
163
  "#{$1}#{$2}#{$3}".to_f
160
164
  end
@@ -89,7 +89,7 @@ module Proj4
89
89
  ret = FFIProj4.pj_fwd(xy, self.ptr)
90
90
  errno = FFIProj4.pj_get_errno_ref.read_int
91
91
  if errno == 0
92
- Point.new(ret.x, ret.y)
92
+ Point.new(ret[:x], ret[:y])
93
93
  else
94
94
  raise TransformError.new(FFIProj4.pj_strerrno(errno))
95
95
  end
@@ -123,11 +123,11 @@ module Proj4
123
123
 
124
124
  x_ptr = FFI::MemoryPointer.new(:double)
125
125
  y_ptr = FFI::MemoryPointer.new(:double)
126
- z_ptr = FFI::MemoryPointer.new(:double) unless z.nil?
126
+ z_ptr = FFI::MemoryPointer.new(:double)
127
127
 
128
128
  x_ptr.write_double(x)
129
129
  y_ptr.write_double(y)
130
- z_ptr.write_double(z) unless z.nil?
130
+ z_ptr.write_double(z.nil? ? 0 : z)
131
131
 
132
132
  result = FFIProj4.pj_transform(self.ptr, proj.ptr, 1, 1, x_ptr, y_ptr, z_ptr)
133
133
 
@@ -7,20 +7,15 @@ module Proj4
7
7
  )
8
8
 
9
9
  def initialize(*args)
10
- if args.first.is_a?(FFI::Pointer)
11
- super(*args)
12
- else
13
- self[:x] = if args.first.respond_to?(:read_double)
14
- args.first.read_double
10
+ case args.first
11
+ when FFI::Pointer, FFI::Buffer
12
+ super(*args)
13
+ when FFI::Buffer
14
+ super(*args)
15
15
  else
16
- args.first.to_f
17
- end
18
-
19
- self[:y] = if args[1].respond_to?(:read_double)
20
- args.first.read_double
21
- else
22
- args[1].to_f
23
- end
16
+ if !args.empty?
17
+ self[:x], self[:y] = args.map(&:to_f)
18
+ end
24
19
  end
25
20
  end
26
21
 
@@ -39,5 +34,10 @@ module Proj4
39
34
  def y
40
35
  self[:y]
41
36
  end
37
+
38
+ private
39
+ def is_ffi?(arg)
40
+ arg.is_a?(FFI::Pointer) || arg.is_a?(FFI::Buffer)
41
+ end
42
42
  end
43
43
  end
@@ -0,0 +1,5 @@
1
+
2
+ module Proj4
3
+ VERSION = "0.0.8"
4
+ end
5
+
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cb-ffi-proj4
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.7
4
+ version: 0.0.8
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,28 +9,66 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-01-31 00:00:00.000000000 Z
12
+ date: 2012-08-19 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: ffi
16
- requirement: &70270841744980 !ruby/object:Gem::Requirement
16
+ requirement: !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
- - - ~>
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: 1.0.0
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
20
28
  - !ruby/object:Gem::Version
21
29
  version: 1.0.0
30
+ - !ruby/object:Gem::Dependency
31
+ name: rdoc
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - ! '>='
36
+ - !ruby/object:Gem::Version
37
+ version: '0'
38
+ type: :runtime
39
+ prerelease: false
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: '0'
46
+ - !ruby/object:Gem::Dependency
47
+ name: rake
48
+ requirement: !ruby/object:Gem::Requirement
49
+ none: false
50
+ requirements:
51
+ - - ~>
52
+ - !ruby/object:Gem::Version
53
+ version: '0.9'
22
54
  type: :runtime
23
55
  prerelease: false
24
- version_requirements: *70270841744980
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ~>
60
+ - !ruby/object:Gem::Version
61
+ version: '0.9'
25
62
  description: An ffi wrapper for the PROJ.4 Cartographic Projections library.
26
63
  email: dark.panda@gmail.com
27
64
  executables: []
28
65
  extensions: []
29
66
  extra_rdoc_files: []
30
67
  files:
68
+ - .gitignore
69
+ - Gemfile
31
70
  - MIT-LICENSE
32
71
  - Rakefile
33
- - VERSION
34
72
  - data/GL27
35
73
  - data/MD
36
74
  - data/TN
@@ -54,11 +92,13 @@ files:
54
92
  - data/stlrnc
55
93
  - data/stpaul
56
94
  - data/world
95
+ - ffi-proj4.gemspec
57
96
  - lib/ffi-proj4.rb
58
97
  - lib/ffi-proj4/point.rb
59
98
  - lib/ffi-proj4/projection.rb
60
99
  - lib/ffi-proj4/projxy.rb
61
100
  - lib/ffi-proj4/tools.rb
101
+ - lib/ffi-proj4/version.rb
62
102
  - test/projection_tests.rb
63
103
  - test/test_helper.rb
64
104
  - test/transformation_tests.rb
@@ -74,16 +114,22 @@ required_ruby_version: !ruby/object:Gem::Requirement
74
114
  - - ! '>='
75
115
  - !ruby/object:Gem::Version
76
116
  version: '0'
117
+ segments:
118
+ - 0
119
+ hash: -4521183960401673612
77
120
  required_rubygems_version: !ruby/object:Gem::Requirement
78
121
  none: false
79
122
  requirements:
80
- - - ! '>='
123
+ - - ! '>'
81
124
  - !ruby/object:Gem::Version
82
- version: '0'
125
+ version: 1.3.1
83
126
  requirements: []
84
127
  rubyforge_project:
85
- rubygems_version: 1.8.15
128
+ rubygems_version: 1.8.24
86
129
  signing_key:
87
130
  specification_version: 3
88
131
  summary: An ffi wrapper for the PROJ.4 Cartographic Projections library.
89
- test_files: []
132
+ test_files:
133
+ - test/projection_tests.rb
134
+ - test/test_helper.rb
135
+ - test/transformation_tests.rb
data/VERSION DELETED
@@ -1 +0,0 @@
1
- 0.0.7