ruby-gr 0.0.13 → 0.0.14
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.
- checksums.yaml +4 -4
- data/lib/gr.rb +3 -3
- data/lib/gr/ffi.rb +4 -3
- data/lib/gr/plot.rb +29 -32
- data/lib/gr3.rb +1 -1
- data/lib/gr3/ffi.rb +4 -3
- data/lib/gr_commons/define_methods.rb +2 -2
- data/lib/gr_commons/extern.rb +2 -1
- data/lib/gr_commons/fiddley.rb +9 -10
- data/lib/gr_commons/gr_commons.rb +1 -1
- data/lib/gr_commons/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: cbb0e07aec1fa9f4377df0a4c6c0765802f56ca299975970716b86d8aebf2273
|
4
|
+
data.tar.gz: 61a995043b20ba81623a96f45ca4689a9be49e8a5451497bc997cbbdee412361
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 168285500cbd4c3a343001f3ad7649d03f37155da471546796569bf107018bd83d9c0b9af5c2a9c58b03b49163fc211f24156037abefc4f7bab459d4f1ed488a
|
7
|
+
data.tar.gz: da487fbc4d174d079b550e7fd2539defb66a4a9981c3af2b8d518e84f97dcc0bfecf52e83e9271817e2fe149252ef735b23132b33aa95a587009343951ad9d26
|
data/lib/gr.rb
CHANGED
@@ -36,7 +36,7 @@
|
|
36
36
|
# +------------------+
|
37
37
|
#
|
38
38
|
# The GR module works without Numo::Narrray.
|
39
|
-
|
39
|
+
#
|
40
40
|
# This is a procedural interface to the GR plotting library,
|
41
41
|
# https://github.com/sciapp/gr
|
42
42
|
module GR
|
@@ -1850,7 +1850,7 @@ module GR
|
|
1850
1850
|
end
|
1851
1851
|
end
|
1852
1852
|
|
1853
|
-
# Set the far and near clipping plane for perspective projection and the
|
1853
|
+
# Set the far and near clipping plane for perspective projection and the
|
1854
1854
|
# vertical field ov view.
|
1855
1855
|
# Switches projection type to perspective.
|
1856
1856
|
# @param near_plane [Numeric] distance to near clipping plane
|
@@ -1886,7 +1886,7 @@ module GR
|
|
1886
1886
|
end
|
1887
1887
|
end
|
1888
1888
|
|
1889
|
-
# Interface for interaction with the rotation of the model.
|
1889
|
+
# Interface for interaction with the rotation of the model.
|
1890
1890
|
# For this a virtual Arcball is used.
|
1891
1891
|
# @param start_mouse_pos_x [Numeric] x component of the start mouse position
|
1892
1892
|
# @param start_mouse_pos_y [Numeric] y component of the start mouse position
|
data/lib/gr/ffi.rb
CHANGED
@@ -3,7 +3,9 @@
|
|
3
3
|
require 'fiddle/import'
|
4
4
|
|
5
5
|
module GR
|
6
|
-
# FFI Wrapper module for GR
|
6
|
+
# FFI Wrapper module for GR.
|
7
|
+
# The functions for GR are listed here.
|
8
|
+
# Add functions here when a new version of GR is released.
|
7
9
|
module FFI
|
8
10
|
extend Fiddle::Importer
|
9
11
|
|
@@ -16,8 +18,7 @@ module GR
|
|
16
18
|
extend GRCommons::Extern
|
17
19
|
|
18
20
|
# https://github.com/sciapp/gr/blob/master/lib/gr/gr.h
|
19
|
-
#
|
20
|
-
|
21
|
+
# keep same order
|
21
22
|
try_extern 'void gr_initgr(void)'
|
22
23
|
try_extern 'void gr_opengks(void)'
|
23
24
|
try_extern 'void gr_closegks(void)'
|
data/lib/gr/plot.rb
CHANGED
@@ -8,7 +8,9 @@ autoload :GR3, 'gr3'
|
|
8
8
|
require 'numo/narray'
|
9
9
|
|
10
10
|
module GR
|
11
|
-
class
|
11
|
+
# This class offers a simple, matlab-style API built on top of the GR package.
|
12
|
+
# The class name Plot may be changed in the future.
|
13
|
+
class Plot
|
12
14
|
# Why is the Plot class NOT object-oriented?
|
13
15
|
#
|
14
16
|
# Because the code here is mainly ported from GR.jl.
|
@@ -36,10 +38,10 @@ module GR
|
|
36
38
|
|
37
39
|
# Keyword options conform to GR.jl.
|
38
40
|
KW_ARGS = %i[accelerate algorithm alpha backgroundcolor barwidth baseline
|
39
|
-
clabels color colormap figsize isovalue label labels
|
40
|
-
location nbins rotation size tilt title where xflip
|
41
|
-
xlim xlog yflip ylabel ylim ylog zflip zlabel zlim
|
42
|
-
subplot].freeze
|
41
|
+
clabels color colormap figsize horizontal isovalue label labels
|
42
|
+
levels location nbins rotation size tilt title where xflip
|
43
|
+
xform xlabel xlim xlog yflip ylabel ylim ylog zflip zlabel zlim
|
44
|
+
zlog clim subplot].freeze
|
43
45
|
|
44
46
|
@@last_plot = nil
|
45
47
|
def self.last_plot
|
@@ -397,11 +399,9 @@ module GR
|
|
397
399
|
end
|
398
400
|
|
399
401
|
def plot_polar(θ, ρ)
|
400
|
-
ρ = Numo::DFloat.cast(ρ) if ρ.is_a? Array
|
401
402
|
window = kvs[:window]
|
402
|
-
|
403
|
-
|
404
|
-
ρ = (ρ - rmin) / (rmax - rmin)
|
403
|
+
rmax = window[3].to_f
|
404
|
+
ρ = ρ.map { |i| i / rmax }
|
405
405
|
n = ρ.length
|
406
406
|
x = []
|
407
407
|
y = []
|
@@ -664,21 +664,18 @@ module GR
|
|
664
664
|
GR.fillrect(x[i], x[i + 1], ymin, y[i])
|
665
665
|
end
|
666
666
|
|
667
|
-
|
668
|
-
|
669
|
-
|
670
|
-
|
671
|
-
|
672
|
-
|
673
|
-
|
674
|
-
|
675
|
-
|
676
|
-
|
677
|
-
|
678
|
-
|
679
|
-
# GR.fillarea([0, ρ[i] * Math.cos(θ[i]), ρ[i] * Math.cos(θ[i + 1])],
|
680
|
-
# [0, ρ[i] * Math.sin(θ[i]), ρ[i] * Math.sin(θ[i + 1])])
|
681
|
-
# end
|
667
|
+
when :polarhist
|
668
|
+
ymax = kvs[:window][3].to_f
|
669
|
+
ρ = y.map { |i| i / ymax }
|
670
|
+
θ = x.map { |i| i * 180 / Math::PI }
|
671
|
+
(1...ρ.length).each do |i|
|
672
|
+
GR.setfillcolorind(989)
|
673
|
+
GR.setfillintstyle(GR::INTSTYLE_SOLID)
|
674
|
+
GR.fillarc(-ρ[i], ρ[i], -ρ[i], ρ[i], θ[i - 1], θ[i])
|
675
|
+
GR.setfillcolorind(1)
|
676
|
+
GR.setfillintstyle(GR::INTSTYLE_HOLLOW)
|
677
|
+
GR.fillarc(-ρ[i], ρ[i], -ρ[i], ρ[i], θ[i - 1], θ[i])
|
678
|
+
end
|
682
679
|
|
683
680
|
when :polarheatmap
|
684
681
|
w, h = z.shape
|
@@ -1163,14 +1160,14 @@ module GR
|
|
1163
1160
|
create_plot(:stem, *args)
|
1164
1161
|
end
|
1165
1162
|
|
1166
|
-
|
1167
|
-
|
1168
|
-
|
1169
|
-
|
1170
|
-
|
1171
|
-
|
1172
|
-
|
1173
|
-
|
1163
|
+
def polarhistogram(x, kv = {})
|
1164
|
+
plt = GR::Plot.new(x, kv)
|
1165
|
+
plt.kvs[:kind] = :polarhist
|
1166
|
+
nbins = plt.kvs[:nbins] || 0
|
1167
|
+
x, y = hist(x, nbins)
|
1168
|
+
plt.args = [[x, y, nil, nil, '']]
|
1169
|
+
plt.plot_data
|
1170
|
+
end
|
1174
1171
|
|
1175
1172
|
# Draw a heatmap.
|
1176
1173
|
def heatmap(*args)
|
data/lib/gr3.rb
CHANGED
@@ -81,7 +81,7 @@ module GR3
|
|
81
81
|
# a FFI::MemoryPointer in the GR3Base class.
|
82
82
|
extend GR3Base
|
83
83
|
|
84
|
-
# This module is for adding error checking to all methods in GR3
|
84
|
+
# This module is for adding error checking to all methods in GR3.
|
85
85
|
module CheckError
|
86
86
|
def geterror
|
87
87
|
line = GRCommons::Fiddley::MemoryPointer.new(:int)
|
data/lib/gr3/ffi.rb
CHANGED
@@ -3,7 +3,9 @@
|
|
3
3
|
require 'fiddle/import'
|
4
4
|
|
5
5
|
module GR3
|
6
|
-
# FFI Wrapper module for GR3
|
6
|
+
# FFI Wrapper module for GR3.
|
7
|
+
# The functions for GR3 are listed here.
|
8
|
+
# Add functions here when a new version of GR is released.
|
7
9
|
module FFI
|
8
10
|
extend Fiddle::Importer
|
9
11
|
|
@@ -16,8 +18,7 @@ module GR3
|
|
16
18
|
extend GRCommons::Extern
|
17
19
|
|
18
20
|
# https://github.com/sciapp/gr/blob/master/lib/gr3/gr3.h
|
19
|
-
#
|
20
|
-
|
21
|
+
# keep same order
|
21
22
|
try_extern 'int gr3_init(int *attrib_list)'
|
22
23
|
try_extern 'void gr3_free(void *pointer)'
|
23
24
|
try_extern 'void gr3_terminate(void)'
|
@@ -1,13 +1,13 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
module GRCommons
|
4
|
-
# This module
|
4
|
+
# This module provides a way to add FFI methods to the GRBase and GR3Base modules.
|
5
5
|
module DefineMethods
|
6
6
|
private
|
7
7
|
|
8
8
|
def define_ffi_methods(ffi_class, prefix: '', default_type: :double)
|
9
9
|
ffi_class.ffi_methods.each do |method|
|
10
|
-
# delete_prefix (Ruby >= 2.5)
|
10
|
+
# Use delete_prefix (Ruby >= 2.5)
|
11
11
|
method_name = method.to_s.sub(/^#{prefix}/, '')
|
12
12
|
|
13
13
|
# FIXME: Refactoring required
|
data/lib/gr_commons/extern.rb
CHANGED
@@ -5,9 +5,10 @@ module GRCommons
|
|
5
5
|
module Extern
|
6
6
|
attr_reader :ffi_methods
|
7
7
|
|
8
|
+
# Improved extern method.
|
8
9
|
# 1. Ignore functions that cannot be attached.
|
9
|
-
# For compatiblity with older versions of GR.
|
10
10
|
# 2. Available function (names) are stored in @ffi_methods.
|
11
|
+
# For compatiblity with older versions of GR.
|
11
12
|
def try_extern(signature, *opts)
|
12
13
|
@ffi_methods ||= []
|
13
14
|
begin
|
data/lib/gr_commons/fiddley.rb
CHANGED
@@ -1,18 +1,17 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
# Fiddley v0.0.8
|
4
|
-
# https://github.com/unak/fiddley
|
5
|
-
#
|
6
|
-
# Copyright (c) 2017 NAKAMURA Usaku usa@garbagecollect.jp
|
7
|
-
#
|
8
|
-
# Released under the 2-Clause BSD License.
|
9
|
-
|
10
|
-
# NOTE: kojix2 added, removed, and modified several methods.
|
11
|
-
|
12
3
|
require 'fiddle/import'
|
13
4
|
|
14
5
|
module GRCommons
|
15
|
-
#
|
6
|
+
# Fiddley v0.0.8
|
7
|
+
# https://github.com/unak/fiddley
|
8
|
+
#
|
9
|
+
# Copyright (c) 2017 NAKAMURA Usaku usa@garbagecollect.jp
|
10
|
+
#
|
11
|
+
# Released under the 2-Clause BSD License.
|
12
|
+
#
|
13
|
+
# NOTE: This module is only part of the original code.
|
14
|
+
# kojix2 adds, deletes, and modifies several methods.
|
16
15
|
module Fiddley
|
17
16
|
# NOTE: GR.rb supports 2.4 +. Unpack 1 does not work under 2.3.
|
18
17
|
|
data/lib/gr_commons/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ruby-gr
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.14
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- kojix2
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-03-
|
11
|
+
date: 2020-03-04 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|