ruby-gr 0.72.9.0 → 0.73.6.0

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 052e290dece0bbfbfb770da33ed8b55fbc9cb6bcf54e508245696d77bcc0138b
4
- data.tar.gz: 21d69942fcd3414a9367167b5d89dd48151a1019cf213b1e78293954439fb901
3
+ metadata.gz: c49cfd6712b94567eebb2ae2b4e2f67c227acc0bce428c15d777419d4b6ba31b
4
+ data.tar.gz: ecd7816d1e8f9784169ee9b917189361b18f6424958c70498279731c42c985c0
5
5
  SHA512:
6
- metadata.gz: 53c0cef5add5333e520a34ab2fa923361a44acb0b3bc50ccfaf847153a9d0e404357904947fc2fa3abb125951eb967bcc1c78fb504c6bc9a5d9323f8238ebd31
7
- data.tar.gz: 0f3c0d93ff46b9f850154ee4e9318f55b9f20f9cfa546472c556cc7b2e41e7dc0b53090041f043e95993e2b2a15b9a884a27d1adfec3e661a05bd89024b58e6d
6
+ metadata.gz: 63bcc49377529b51fbf7d8005ee75c6b3af6961fd96ffd5ae769dbf495b75fbe064f6c50a3e180e1e8030dfa97297abdd4442c89e17b0fea49865e045dbfb464
7
+ data.tar.gz: 40024235f7e6599a5a9555dacac610a74e4abf1ee07332c7a82a834e3b070d9096d79408e453078014f7f59bdc58182f29a39e8e2afbf5d8b8536a3a6b86eabf
data/lib/gr/ffi.rb CHANGED
@@ -155,6 +155,10 @@ module GR
155
155
  try_extern 'void gr_axeslbl(double, double, double, double, int, int, double,' \
156
156
  ' void (*)(double, double, const char *, double),' \
157
157
  ' void (*)(double, double, const char *, double))'
158
+ try_extern 'void gr_axis(char, axis_t *)'
159
+ try_extern 'void gr_drawaxis(char, axis_t *)'
160
+ try_extern 'void gr_drawaxes(axis_t *, axis_t *, int)'
161
+ try_extern 'void gr_freeaxis(axis_t *)'
158
162
  try_extern 'void gr_grid(double, double, double, double, int, int)'
159
163
  try_extern 'void gr_grid3d(double, double, double, double, double, double, int, int, int)'
160
164
  try_extern 'void gr_verrorbars(int, double *, double *, double *, double *)'
@@ -163,6 +167,7 @@ module GR
163
167
  try_extern 'void gr_polymarker3d(int, double *, double *, double *)'
164
168
  try_extern 'void gr_axes3d(double, double, double, double, double, double, int, int, int, double)'
165
169
  try_extern 'void gr_titles3d(char *, char *, char *)'
170
+ try_extern 'void gr_settitles3d(char *, char *, char *)'
166
171
  try_extern 'void gr_surface(int, int, double *, double *, double *, int)'
167
172
  try_extern 'void gr_contour(int, int, int, double *, double *, double *, double *, int)'
168
173
  try_extern 'void gr_contourf(int, int, int, double *, double *, double *, double *, int)'
@@ -200,6 +205,7 @@ module GR
200
205
  try_extern 'int gr_importgraphics(char *)'
201
206
  try_extern 'void gr_setshadow(double, double, double)'
202
207
  try_extern 'void gr_settransparency(double)'
208
+ try_extern 'void gr_inqtransparency(double *)'
203
209
  try_extern 'void gr_setcoordxform(double[3][2])'
204
210
  try_extern 'void gr_begingraphics(char *)'
205
211
  try_extern 'void gr_endgraphics(void)'
@@ -208,8 +214,12 @@ module GR
208
214
  try_extern 'int gr_startlistener(void)'
209
215
  try_extern 'void gr_mathtex(double, double, char *)'
210
216
  try_extern 'void gr_inqmathtex(double, double, char *, double *, double *)'
217
+ try_extern 'void gr_mathtex3d(double, double, double, char *, int)'
218
+ try_extern 'void gr_inqmathtex3d(double, double, double, char *, int, double *, double *, double *, double *)'
211
219
  try_extern 'void gr_beginselection(int, int)'
212
220
  try_extern 'void gr_endselection(void)'
221
+ try_extern 'void gr_setbboxcallback(int, void (*)(int, double, double, double, double))'
222
+ try_extern 'void gr_cancelbboxcallback(void)'
213
223
  try_extern 'void gr_moveselection(double, double)'
214
224
  try_extern 'void gr_resizeselection(int, double, double)'
215
225
  try_extern 'void gr_inqbbox(double *, double *, double *, double *)'
@@ -230,7 +240,8 @@ module GR
230
240
  try_extern 'void gr_gradient(int, int, double *, double *, double *, double *, double *)'
231
241
  try_extern 'void gr_quiver(int, int, double *, double *, double *, double *, int)'
232
242
  try_extern 'void gr_interp2(int nx, int ny, const double *x, const double *y, const double *z,' \
233
- ' int nxq, int nyq, const double *xq, const double *yq, double *zq, int method, double extrapval)'
243
+ ' int nxq, int nyq, const double *xq, const double *yq, double *zq,' \
244
+ ' interp2_method_t method, double extrapval)'
234
245
  try_extern 'const char *gr_version(void)'
235
246
  try_extern 'void gr_shade(int, double *, double *, int, int, double *, int, int, int *)'
236
247
  try_extern 'void gr_shadepoints(int, double *, double *, int, int, int)'
@@ -262,6 +273,7 @@ module GR
262
273
  try_extern 'void gr_setscalefactors3d(double, double, double)'
263
274
  try_extern 'void gr_inqscalefactors3d(double *, double *, double *)'
264
275
  try_extern 'void gr_setspace3d(double, double, double, double)'
276
+ try_extern 'void gr_inqspace3d(int *, double *, double *, double *, double *)'
265
277
  try_extern 'void gr_text3d(double, double, double, char *, int axis)'
266
278
  try_extern 'void gr_inqtext3d(double, double, double, char *, int axis, double *, double *)'
267
279
  try_extern 'void gr_settextencoding(int)'
@@ -287,5 +299,12 @@ module GR
287
299
  try_extern 'void gr_volume_interp_gauss_init(double, double *)'
288
300
  try_extern 'double gr_volume_interp_tri_linear(const data_point3d_t *, const void *, const point3d_t *, const point3d_t *)'
289
301
  try_extern 'double gr_volume_interp_gauss(const data_point3d_t *, const void *, const point3d_t *, const point3d_t *)'
302
+ try_extern 'void gr_setmathfont(int font)'
303
+ try_extern 'void gr_inqmathfont(int *font)'
304
+ try_extern 'void gr_setclipregion(int region)'
305
+ try_extern 'void gr_inqclipregion(int *region)'
306
+ try_extern 'void gr_settextoffset(double xoff, double yoff)'
307
+ try_extern 'char *gr_ftoa(char *string, double value, format_reference_t *reference)'
308
+ try_extern 'void gr_getformat(format_reference_t *result, double origin, double min, double max, double tick_width, int major)'
290
309
  end
291
310
  end
@@ -20,7 +20,11 @@ module GRCommons
20
20
  when ->(x) { defined?(Numo::NArray) && x.is_a?(Numo::NArray) }
21
21
  GRCommonUtils.public_send(default_type, arg)
22
22
  else
23
- arg
23
+ if arg.respond_to?(:to_gr)
24
+ arg.to_gr
25
+ else
26
+ arg
27
+ end
24
28
  end
25
29
  end
26
30
  ffi_module.public_send(method, *args)
@@ -198,6 +198,10 @@ module GRCommons
198
198
  @ptr
199
199
  end
200
200
 
201
+ def address
202
+ @ptr.to_i
203
+ end
204
+
201
205
  { 8 => 'c', 16 => 's', 32 => 'l', 64 => 'q' }.each do |bits, form|
202
206
  bytes = bits / 8
203
207
 
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module GRCommons
4
- VERSION = '0.72.9.0'
4
+ VERSION = '0.73.6.0'
5
5
  end
data/lib/grm/ffi.rb CHANGED
@@ -21,6 +21,7 @@ module GRM
21
21
  # header files.
22
22
 
23
23
  # https://github.com/sciapp/gr/blob/master/lib/grm/include/grm/args.h
24
+ try_extern 'grm_args_value_iterator_t *grm_arg_value_iter(const arg_t *arg)'
24
25
  try_extern 'grm_args_t *grm_args_new(void)'
25
26
  try_extern 'void grm_args_delete(grm_args_t *args)'
26
27
  try_extern 'int grm_args_push(grm_args_t *args, const char *key, const char *value_format, ...)'
@@ -30,6 +31,7 @@ module GRM
30
31
  try_extern 'int grm_args_values(const grm_args_t *args, const char *keyword, const char *expected_format, ...)'
31
32
  try_extern 'void grm_args_clear(grm_args_t *args)'
32
33
  try_extern 'void grm_args_remove(grm_args_t *args, const char *key)'
34
+ try_extern 'grm_args_iterator_t *grm_args_iter(const grm_args_t *args)'
33
35
  typealias 'grm_args_ptr_t', 'void*'
34
36
  try_extern 'grm_args_ptr_t grm_length(double value, const char *unit)'
35
37
 
@@ -51,6 +53,7 @@ module GRM
51
53
  try_extern 'grm_tooltip_info_t *grm_get_tooltip(int mouse_x, int mouse_y)'
52
54
  try_extern 'grm_tooltip_info_t **grm_get_tooltips_x(int mouse_x, int mouse_y, unsigned int *array_length)'
53
55
  try_extern 'grm_accumulated_tooltip_info_t *grm_get_accumulated_tooltip_x(int mouse_x, int mouse_y)'
56
+ try_extern 'int grm_get_hover_mode(int mouse_x, int mouse_y, int disable_movable_xform)'
54
57
 
55
58
  # https://github.com/sciapp/gr/blob/master/lib/grm/include/grm/net.h
56
59
  try_extern 'void *grm_open(int is_receiver, const char *name, unsigned int id, ' \
@@ -66,13 +69,18 @@ module GRM
66
69
  # https://github.com/sciapp/gr/blob/master/lib/grm/include/grm/plot.h
67
70
  try_extern 'void grm_finalize(void)'
68
71
  try_extern 'int grm_clear(void)'
72
+ try_extern 'void grm_dump_graphics_tree(FILE *f)'
73
+ try_extern 'char *grm_dump_graphics_tree_str(void)'
69
74
  try_extern 'unsigned int grm_max_plotid(void)'
70
75
  try_extern 'int grm_merge(const grm_args_t *args)'
71
76
  try_extern 'int grm_merge_extended(const grm_args_t *args, int hold, const char *identificator)'
72
77
  try_extern 'int grm_merge_hold(const grm_args_t *args)'
73
78
  try_extern 'int grm_merge_named(const grm_args_t *args, const char *identificator)'
74
79
  try_extern 'int grm_plot(const grm_args_t *args)'
80
+ try_extern 'int grm_render(void)'
81
+ try_extern 'int grm_process_tree(void)'
75
82
  try_extern 'int grm_export(const char *file_path)'
76
83
  try_extern 'int grm_switch(unsigned int id)'
84
+ try_extern 'int grm_load_graphics_tree(FILE *file)'
77
85
  end
78
86
  end
data/lib/grm.rb CHANGED
@@ -61,6 +61,112 @@ module GRM
61
61
  # a Fiddley::MemoryPointer in the GRBase class.
62
62
  extend GRMBase
63
63
 
64
+ class Args
65
+ class << self
66
+ def try_convert(value)
67
+ case value
68
+ when Hash
69
+ new(**value)
70
+ else
71
+ nil
72
+ end
73
+ end
74
+ end
75
+
76
+ def initialize(**args)
77
+ @args = GRM.args_new
78
+ @args.free = FFI["grm_args_delete"]
79
+ @references = []
80
+ args.each do |key, value|
81
+ push(key, value)
82
+ end
83
+ end
84
+
85
+ def push(key, value)
86
+ key = key.to_s if key.is_a?(Symbol)
87
+ case value
88
+ when String
89
+ GRM.args_push(@args, key, "s", :const_string, value)
90
+ when Integer
91
+ GRM.args_push(@args, key, "i", :int, value)
92
+ when Float
93
+ GRM.args_push(@args, key, "d", :double, value)
94
+ when Args
95
+ GRM.args_push(@args, key, "a", :voidp, value.address)
96
+ value.to_gr.free = nil
97
+ when Array
98
+ case value[0]
99
+ when String
100
+ addresses = value.collect {|v| Fiddle::Pointer[v].to_i}
101
+ GRM.args_push(@args, key, "nS",
102
+ :int, value.size,
103
+ :voidp, addresses.pack("J*"))
104
+ when Integer
105
+ GRM.args_push(@args, key, "nI",
106
+ :int, value.size,
107
+ :voidp, value.pack("i*"))
108
+ when Float
109
+ GRM.args_push(@args, key, "nD",
110
+ :int, value.size,
111
+ :voidp, value.pack("d*"))
112
+ when Args
113
+ GRM.args_push(@args, key, "nA",
114
+ :int, value.size,
115
+ :voidp, value.collect(&:address).pack("J*"))
116
+ value.each do |v|
117
+ v.to_gr.free = nil
118
+ end
119
+ else
120
+ vs = value.collect {|v| Args.new(**v)}
121
+ @references.concat(vs)
122
+ GRM.args_push(@args, key, "nA",
123
+ :int, value.size,
124
+ :voidp, vs.collect(&:address).pack("J*"))
125
+ vs.each do |v|
126
+ v.to_gr.free = nil
127
+ end
128
+ end
129
+ else
130
+ v = Args.new(**value)
131
+ @references << v
132
+ GRM.args_push(@args, key, "a", :voidp, v.address)
133
+ v.to_gr.free = nil
134
+ end
135
+ end
136
+
137
+ def clear
138
+ GRM.args_clear(@args)
139
+ @references.clear
140
+ end
141
+
142
+ def address
143
+ @args.to_i
144
+ end
145
+
146
+ def to_gr
147
+ @args
148
+ end
149
+ end
150
+
64
151
  class << self
152
+ def merge(args=nil)
153
+ super(Args.try_convert(args) || args)
154
+ end
155
+
156
+ def merge_extended(args=nil, hold=0, identifiator=nil)
157
+ super(Args.try_convert(args) || args, hold, identificator)
158
+ end
159
+
160
+ def merge_hold(args=nil)
161
+ super(Args.try_convert(args) || args)
162
+ end
163
+
164
+ def merge_named(args=nil, identifiator=nil)
165
+ super(Args.try_convert(args) || args, identificator)
166
+ end
167
+
168
+ def plot(args=nil)
169
+ super(Args.try_convert(args) || args)
170
+ end
65
171
  end
66
172
  end
metadata CHANGED
@@ -1,14 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ruby-gr
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.72.9.0
4
+ version: 0.73.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - kojix2
8
- autorequire:
9
8
  bindir: bin
10
9
  cert_chain: []
11
- date: 2023-07-19 00:00:00.000000000 Z
10
+ date: 2024-08-06 00:00:00.000000000 Z
12
11
  dependencies:
13
12
  - !ruby/object:Gem::Dependency
14
13
  name: fiddle
@@ -86,7 +85,6 @@ licenses:
86
85
  - MIT
87
86
  metadata:
88
87
  msys2_mingw_dependencies: gr
89
- post_install_message:
90
88
  rdoc_options: []
91
89
  require_paths:
92
90
  - lib
@@ -101,8 +99,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
101
99
  - !ruby/object:Gem::Version
102
100
  version: '0'
103
101
  requirements: []
104
- rubygems_version: 3.4.14
105
- signing_key:
102
+ rubygems_version: 3.6.0.dev
106
103
  specification_version: 4
107
104
  summary: GR for Ruby
108
105
  test_files: []