ruby-gr 0.72.9.0 → 0.73.6.0

Sign up to get free protection for your applications and to get access to all the features.
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: []