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 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