cb-ffi-proj4 0.0.7 → 0.0.8
Sign up to get free protection for your applications and to get access to all the features.
- 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
|