ruby-gr 0.71.7.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 +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: []
|