ruby-gr 0.71.7.0 → 0.73.6.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/gr/ffi.rb +52 -10
- data/lib/gr3/ffi.rb +26 -4
- data/lib/gr3.rb +8 -0
- data/lib/gr_commons/define_methods.rb +5 -1
- data/lib/gr_commons/fiddley.rb +4 -0
- data/lib/gr_commons/version.rb +1 -1
- data/lib/grm/ffi.rb +12 -1
- data/lib/grm.rb +106 -0
- metadata +3 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c49cfd6712b94567eebb2ae2b4e2f67c227acc0bce428c15d777419d4b6ba31b
|
4
|
+
data.tar.gz: ecd7816d1e8f9784169ee9b917189361b18f6424958c70498279731c42c985c0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 63bcc49377529b51fbf7d8005ee75c6b3af6961fd96ffd5ae769dbf495b75fbe064f6c50a3e180e1e8030dfa97297abdd4442c89e17b0fea49865e045dbfb464
|
7
|
+
data.tar.gz: 40024235f7e6599a5a9555dacac610a74e4abf1ee07332c7a82a834e3b070d9096d79408e453078014f7f59bdc58182f29a39e8e2afbf5d8b8536a3a6b86eabf
|
data/lib/gr/ffi.rb
CHANGED
@@ -22,35 +22,47 @@ module GR
|
|
22
22
|
|
23
23
|
Vertex = struct [
|
24
24
|
'double x',
|
25
|
-
'double y'
|
25
|
+
'double y'
|
26
26
|
]
|
27
27
|
|
28
28
|
# Three-dimensional coordinate
|
29
29
|
Point3d = struct [
|
30
30
|
'double x',
|
31
31
|
'double y',
|
32
|
-
'double z'
|
32
|
+
'double z'
|
33
33
|
]
|
34
34
|
|
35
35
|
# Data point for `gr_volume_nogrid`
|
36
36
|
DataPoint3d = struct [
|
37
|
-
{ pt: Point3d },
|
38
|
-
'double data'
|
37
|
+
{ pt: Point3d }, # Coordinates of data point
|
38
|
+
'double data' # Intensity of data point
|
39
39
|
]
|
40
40
|
|
41
41
|
# Provides optional extra data for `gr_volume_interp_gauss`
|
42
42
|
Guess = struct [
|
43
43
|
'double sqrt_det', # Square root of determinant of covariance matrix
|
44
|
-
{gauss_sig_1: Point3d},
|
45
|
-
{gauss_sig_2: Point3d},
|
46
|
-
{gauss_sig_3: Point3d}
|
44
|
+
{ gauss_sig_1: Point3d },
|
45
|
+
{ gauss_sig_2: Point3d },
|
46
|
+
{ gauss_sig_3: Point3d } # \f$\Sigma^{-\frac{1}{2}}\f$ encoded as three column vectors
|
47
47
|
]
|
48
48
|
|
49
49
|
# Provides optional extra data for `gr_volume_interp_tri_linear`
|
50
50
|
TriLinear = struct [
|
51
|
-
'double grid_x_re', # Reciproke of interpolation kernel extent in x-directionGrid resolution in x direction
|
51
|
+
'double grid_x_re', # Reciproke of interpolation kernel extent in x-directionGrid resolution in x direction
|
52
52
|
'double grid_y_re', # Reciproke of interpolation kernel extent in y-directionGrid resolution in y direction
|
53
|
-
'double grid_z_re'
|
53
|
+
'double grid_z_re' # Reciproke of interpolation kernel extent in z-directionGrid resolution in z direction
|
54
|
+
]
|
55
|
+
|
56
|
+
CpuBasedVolume2Pass = struct [
|
57
|
+
'double dmin',
|
58
|
+
'double dmax',
|
59
|
+
'cpubasedvolume_2pass_priv_t *priv'
|
60
|
+
]
|
61
|
+
|
62
|
+
Hexbin2Pass = struct [
|
63
|
+
'int nc',
|
64
|
+
'int nntmax',
|
65
|
+
'hexbin_2pass_priv_t *priv'
|
54
66
|
]
|
55
67
|
|
56
68
|
try_extern 'void gr_initgr(void)'
|
@@ -129,6 +141,7 @@ module GR
|
|
129
141
|
try_extern 'void gr_redrawsegws(void)'
|
130
142
|
try_extern 'void gr_setsegtran(int, double, double, double, double, double, double, double)'
|
131
143
|
try_extern 'void gr_closeseg(void)'
|
144
|
+
try_extern 'void gr_samplelocator(double *, double *, int *)'
|
132
145
|
try_extern 'void gr_emergencyclosegks(void)'
|
133
146
|
try_extern 'void gr_updategks(void)'
|
134
147
|
try_extern 'int gr_setspace(double, double, int, int)'
|
@@ -142,6 +155,10 @@ module GR
|
|
142
155
|
try_extern 'void gr_axeslbl(double, double, double, double, int, int, double,' \
|
143
156
|
' void (*)(double, double, const char *, double),' \
|
144
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 *)'
|
145
162
|
try_extern 'void gr_grid(double, double, double, double, int, int)'
|
146
163
|
try_extern 'void gr_grid3d(double, double, double, double, double, double, int, int, int)'
|
147
164
|
try_extern 'void gr_verrorbars(int, double *, double *, double *, double *)'
|
@@ -150,11 +167,13 @@ module GR
|
|
150
167
|
try_extern 'void gr_polymarker3d(int, double *, double *, double *)'
|
151
168
|
try_extern 'void gr_axes3d(double, double, double, double, double, double, int, int, int, double)'
|
152
169
|
try_extern 'void gr_titles3d(char *, char *, char *)'
|
170
|
+
try_extern 'void gr_settitles3d(char *, char *, char *)'
|
153
171
|
try_extern 'void gr_surface(int, int, double *, double *, double *, int)'
|
154
172
|
try_extern 'void gr_contour(int, int, int, double *, double *, double *, double *, int)'
|
155
173
|
try_extern 'void gr_contourf(int, int, int, double *, double *, double *, double *, int)'
|
156
174
|
try_extern 'void gr_tricontour(int, double *, double *, double *, int, double *)'
|
157
175
|
try_extern 'int gr_hexbin(int, double *, double *, int)'
|
176
|
+
try_extern 'const hexbin_2pass_t *gr_hexbin_2pass(int, double *, double *, int, const hexbin_2pass_t *)'
|
158
177
|
try_extern 'void gr_setcolormap(int)'
|
159
178
|
try_extern 'void gr_inqcolormap(int *)'
|
160
179
|
try_extern 'void gr_setcolormapfromrgb(int n, double *r, double *g, double *b, double *x)'
|
@@ -186,15 +205,21 @@ module GR
|
|
186
205
|
try_extern 'int gr_importgraphics(char *)'
|
187
206
|
try_extern 'void gr_setshadow(double, double, double)'
|
188
207
|
try_extern 'void gr_settransparency(double)'
|
208
|
+
try_extern 'void gr_inqtransparency(double *)'
|
189
209
|
try_extern 'void gr_setcoordxform(double[3][2])'
|
190
210
|
try_extern 'void gr_begingraphics(char *)'
|
191
211
|
try_extern 'void gr_endgraphics(void)'
|
192
212
|
try_extern 'char *gr_getgraphics(void)'
|
193
213
|
try_extern 'int gr_drawgraphics(char *)'
|
214
|
+
try_extern 'int gr_startlistener(void)'
|
194
215
|
try_extern 'void gr_mathtex(double, double, char *)'
|
195
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 *)'
|
196
219
|
try_extern 'void gr_beginselection(int, int)'
|
197
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)'
|
198
223
|
try_extern 'void gr_moveselection(double, double)'
|
199
224
|
try_extern 'void gr_resizeselection(int, double, double)'
|
200
225
|
try_extern 'void gr_inqbbox(double *, double *, double *, double *)'
|
@@ -204,8 +229,10 @@ module GR
|
|
204
229
|
try_extern 'int gr_inqregenflags(void)'
|
205
230
|
try_extern 'void gr_savestate(void)'
|
206
231
|
try_extern 'void gr_restorestate(void)'
|
232
|
+
try_extern 'void gr_savecontext(int)'
|
207
233
|
try_extern 'void gr_selectcontext(int)'
|
208
234
|
try_extern 'void gr_destroycontext(int)'
|
235
|
+
try_extern 'void gr_unselectcontext(void)'
|
209
236
|
try_extern 'int gr_uselinespec(char *)'
|
210
237
|
try_extern 'void gr_delaunay(int, const double *, const double *, int *, int **)'
|
211
238
|
try_extern 'void gr_reducepoints(int, const double *, const double *, int, double *, double *)'
|
@@ -213,7 +240,8 @@ module GR
|
|
213
240
|
try_extern 'void gr_gradient(int, int, double *, double *, double *, double *, double *)'
|
214
241
|
try_extern 'void gr_quiver(int, int, double *, double *, double *, double *, int)'
|
215
242
|
try_extern 'void gr_interp2(int nx, int ny, const double *x, const double *y, const double *z,' \
|
216
|
-
' int nxq, int nyq, const double *xq, const double *yq, double *zq,
|
243
|
+
' int nxq, int nyq, const double *xq, const double *yq, double *zq,' \
|
244
|
+
' interp2_method_t method, double extrapval)'
|
217
245
|
try_extern 'const char *gr_version(void)'
|
218
246
|
try_extern 'void gr_shade(int, double *, double *, int, int, double *, int, int, int *)'
|
219
247
|
try_extern 'void gr_shadepoints(int, double *, double *, int, int, int)'
|
@@ -245,6 +273,7 @@ module GR
|
|
245
273
|
try_extern 'void gr_setscalefactors3d(double, double, double)'
|
246
274
|
try_extern 'void gr_inqscalefactors3d(double *, double *, double *)'
|
247
275
|
try_extern 'void gr_setspace3d(double, double, double, double)'
|
276
|
+
try_extern 'void gr_inqspace3d(int *, double *, double *, double *, double *)'
|
248
277
|
try_extern 'void gr_text3d(double, double, double, char *, int axis)'
|
249
278
|
try_extern 'void gr_inqtext3d(double, double, double, char *, int axis, double *, double *)'
|
250
279
|
try_extern 'void gr_settextencoding(int)'
|
@@ -257,12 +286,25 @@ module GR
|
|
257
286
|
try_extern 'void gr_setapproximativecalculation(int)'
|
258
287
|
try_extern 'void gr_inqvolumeflags(int *, int *, int *, int *, int *)'
|
259
288
|
try_extern 'void gr_cpubasedvolume(int, int, int, double *, int, double *, double *, double *, double *)'
|
289
|
+
try_extern 'const cpubasedvolume_2pass_t *gr_cpubasedvolume_2pass(int, int, int, double *, int, double *, double *, double *, double *, const cpubasedvolume_2pass_t *)'
|
260
290
|
try_extern 'void gr_inqvpsize(int *, int *, double *)'
|
261
291
|
try_extern 'void gr_polygonmesh3d(int, const double *, const double *, const double *, int, const int *, const int *)'
|
292
|
+
# FIXME:
|
293
|
+
# typedef double (*kernel_f)(const data_point3d_t *, const void *, const point3d_t *, const point3d_t *);
|
294
|
+
# typedef double (*radius_f)(const data_point3d_t *, const void *);
|
295
|
+
typealias 'kernel_f', 'void*'
|
296
|
+
typealias 'radius_f', 'void*'
|
262
297
|
try_extern 'void gr_volume_nogrid(unsigned long, const data_point3d_t *, const void *, int, kernel_f, double *, double *, double, radius_f)'
|
263
298
|
try_extern 'void gr_volume_interp_tri_linear_init(double, double, double)'
|
264
299
|
try_extern 'void gr_volume_interp_gauss_init(double, double *)'
|
265
300
|
try_extern 'double gr_volume_interp_tri_linear(const data_point3d_t *, const void *, const point3d_t *, const point3d_t *)'
|
266
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)'
|
267
309
|
end
|
268
310
|
end
|
data/lib/gr3/ffi.rb
CHANGED
@@ -17,10 +17,28 @@ module GR3
|
|
17
17
|
|
18
18
|
extend GRCommons::TryExtern
|
19
19
|
|
20
|
-
typealias('GR3_MC_DTYPE', 'unsigned short')
|
21
|
-
|
22
20
|
# https://github.com/sciapp/gr/blob/master/lib/gr3/gr3.h
|
23
21
|
# keep same order
|
22
|
+
|
23
|
+
typealias('GR3_MC_DTYPE', 'unsigned short')
|
24
|
+
|
25
|
+
Coord = struct [
|
26
|
+
'float x',
|
27
|
+
'float y',
|
28
|
+
'float z'
|
29
|
+
]
|
30
|
+
|
31
|
+
Triangle = struct [
|
32
|
+
{ 'vertices[3]' => Coord },
|
33
|
+
{ 'normal[3]' => Coord }
|
34
|
+
]
|
35
|
+
|
36
|
+
Volume2Pass = struct [
|
37
|
+
'double dmin',
|
38
|
+
'double dmax',
|
39
|
+
'gr3_volume_2pass_priv_t *priv'
|
40
|
+
]
|
41
|
+
|
24
42
|
try_extern 'int gr3_init(int *attrib_list)'
|
25
43
|
try_extern 'void gr3_free(void *pointer)'
|
26
44
|
try_extern 'void gr3_terminate(void)'
|
@@ -29,7 +47,7 @@ module GR3
|
|
29
47
|
try_extern 'const char *gr3_geterrorstring(int error)'
|
30
48
|
try_extern 'void gr3_setlogcallback(void (*gr3_log_func)(const char *log_message))'
|
31
49
|
try_extern 'int gr3_clear(void)'
|
32
|
-
try_extern 'void gr3_usecurrentframebuffer()'
|
50
|
+
try_extern 'void gr3_usecurrentframebuffer(void)'
|
33
51
|
try_extern 'void gr3_useframebuffer(unsigned int framebuffer)'
|
34
52
|
try_extern 'int gr3_setquality(int quality)'
|
35
53
|
try_extern 'int gr3_getimage(int width, int height, int use_alpha, char *pixels)'
|
@@ -144,6 +162,8 @@ module GR3
|
|
144
162
|
try_extern 'void gr3_drawtrianglesurface(int n, const float *triangles)'
|
145
163
|
try_extern 'void gr_volume(int nx, int ny, int nz, double *data,' \
|
146
164
|
' int algorithm, double *dmin_ptr, double *dmax_ptr)'
|
165
|
+
try_extern 'const gr3_volume_2pass_t *gr_volume_2pass(int nx, int ny, int nz, double *data,' \
|
166
|
+
' int algorithm, double *dmin_ptr, double *dmax_ptr, const gr3_volume_2pass_t *context)'
|
147
167
|
try_extern 'void gr3_setorthographicprojection' \
|
148
168
|
'(float left, float right, float bottom, float top, float znear, float zfar)'
|
149
169
|
try_extern 'void gr3_setsurfaceoption(int option)'
|
@@ -152,7 +172,9 @@ module GR3
|
|
152
172
|
try_extern 'int gr3_setlightsources(int num_lights, float *positions, float *colors)'
|
153
173
|
try_extern 'void gr3_setlightparameters(float ambient, float diffuse, float specular, float specular_power)'
|
154
174
|
try_extern 'void gr3_getlightparameters(float *ambient, float *diffuse, float *specular, float *specular_power)'
|
155
|
-
try_extern 'void gr3_setdefaultlightparameters()'
|
175
|
+
try_extern 'void gr3_setdefaultlightparameters(void)'
|
176
|
+
try_extern 'int gr3_getalphamode(int *mode)'
|
177
|
+
try_extern 'void gr3_setalphamode(int mode)'
|
156
178
|
try_extern 'void gr3_setclipping(float xmin, float xmax, float ymin, float ymax, float zmin, float zmax)'
|
157
179
|
try_extern 'void gr3_getclipping(float *xmin, float *xmax, float *ymin, float *ymax, float *zmin, float *zmax)'
|
158
180
|
end
|
data/lib/gr3.rb
CHANGED
@@ -871,6 +871,14 @@ module GR3
|
|
871
871
|
SURFACE_GRCOLOR = 8
|
872
872
|
SURFACE_GRZSHADED = 16
|
873
873
|
|
874
|
+
TRANSPARENCY_OPAQUE = 0
|
875
|
+
TRANSPARENCY_TRANSMIT = 1
|
876
|
+
TRANSPARENCY_FILTER = 2
|
877
|
+
|
878
|
+
VOLUME_EMISSION = 0
|
879
|
+
VOLUME_ABSORPTION = 1
|
880
|
+
VOLUME_MIP = 2
|
881
|
+
|
874
882
|
ATOM_COLORS =
|
875
883
|
[[0, 0, 0],
|
876
884
|
[255, 255, 255], [217, 255, 255], [204, 128, 255],
|
@@ -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)
|
data/lib/gr_commons/fiddley.rb
CHANGED
data/lib/gr_commons/version.rb
CHANGED
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
|
|
@@ -48,7 +50,10 @@ module GRM
|
|
48
50
|
try_extern 'int grm_input(const grm_args_t *input_args)'
|
49
51
|
try_extern 'int grm_get_box(const int x1, const int y1, const int x2, const int y2, const int keep_aspect_ratio, int *x, int *y, int *w, int *h)'
|
50
52
|
try_extern 'int grm_is3d(const int x, const int y)'
|
51
|
-
try_extern 'grm_tooltip_info_t *grm_get_tooltip(
|
53
|
+
try_extern 'grm_tooltip_info_t *grm_get_tooltip(int mouse_x, int mouse_y)'
|
54
|
+
try_extern 'grm_tooltip_info_t **grm_get_tooltips_x(int mouse_x, int mouse_y, unsigned int *array_length)'
|
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)'
|
52
57
|
|
53
58
|
# https://github.com/sciapp/gr/blob/master/lib/grm/include/grm/net.h
|
54
59
|
try_extern 'void *grm_open(int is_receiver, const char *name, unsigned int id, ' \
|
@@ -64,12 +69,18 @@ module GRM
|
|
64
69
|
# https://github.com/sciapp/gr/blob/master/lib/grm/include/grm/plot.h
|
65
70
|
try_extern 'void grm_finalize(void)'
|
66
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)'
|
67
74
|
try_extern 'unsigned int grm_max_plotid(void)'
|
68
75
|
try_extern 'int grm_merge(const grm_args_t *args)'
|
69
76
|
try_extern 'int grm_merge_extended(const grm_args_t *args, int hold, const char *identificator)'
|
70
77
|
try_extern 'int grm_merge_hold(const grm_args_t *args)'
|
71
78
|
try_extern 'int grm_merge_named(const grm_args_t *args, const char *identificator)'
|
72
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)'
|
82
|
+
try_extern 'int grm_export(const char *file_path)'
|
73
83
|
try_extern 'int grm_switch(unsigned int id)'
|
84
|
+
try_extern 'int grm_load_graphics_tree(FILE *file)'
|
74
85
|
end
|
75
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.
|
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:
|
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.
|
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: []
|