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 +11 -0
- data/Gemfile +3 -0
- data/MIT-LICENSE +1 -1
- data/Rakefile +7 -19
- data/ffi-proj4.gemspec +24 -0
- data/lib/ffi-proj4.rb +10 -6
- data/lib/ffi-proj4/projection.rb +3 -3
- data/lib/ffi-proj4/projxy.rb +13 -13
- data/lib/ffi-proj4/version.rb +5 -0
- metadata +56 -10
- data/VERSION +0 -1
data/.gitignore
ADDED
data/Gemfile
ADDED
data/MIT-LICENSE
CHANGED
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 =
|
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
|
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
|
-
|
149
|
-
|
150
|
-
|
153
|
+
if RUBY_PLATFORM == 'java'
|
154
|
+
FFIProj4.setenv('PROJ_LIB', lib, 1)
|
155
|
+
else
|
151
156
|
ENV['PROJ_LIB'] = lib
|
152
|
-
|
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
|
data/lib/ffi-proj4/projection.rb
CHANGED
@@ -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
|
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)
|
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
|
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
|
|
data/lib/ffi-proj4/projxy.rb
CHANGED
@@ -7,20 +7,15 @@ module Proj4
|
|
7
7
|
)
|
8
8
|
|
9
9
|
def initialize(*args)
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
args
|
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.
|
17
|
-
|
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
|
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.
|
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-
|
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:
|
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:
|
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:
|
125
|
+
version: 1.3.1
|
83
126
|
requirements: []
|
84
127
|
rubyforge_project:
|
85
|
-
rubygems_version: 1.8.
|
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
|