ruby-gr 0.0.2 → 0.0.3
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 +482 -47
- data/lib/gr/ffi.rb +10 -9
- data/lib/gr/version.rb +5 -0
- data/lib/gr3.rb +503 -7
- data/lib/gr3/ffi.rb +30 -23
- data/lib/gr3/version.rb +5 -0
- data/lib/gr_commons.rb +1 -0
- data/lib/gr_commons/attach_function.rb +1 -0
- data/lib/gr_commons/gr_common_utils.rb +26 -21
- data/lib/gr_commons/jupyter_support.rb +1 -2
- data/lib/gr_commons/version.rb +5 -0
- metadata +19 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a4952b2f2f30277b1fecfae2d49660addde63d4b1476aa63dacdba4643568294
|
4
|
+
data.tar.gz: a99aee8f75ff9f102ae713723e582aa9be12a1d1a5ef8fbede028df731d27ea3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0ba5e877d1363a6e27c986f5380ed169ea37615cb803633dea6fbb8e00a7d4c42bc7c52e9559e5d5719d094db6ed6b8cbe26d9a663cf94582545e9f0df715956
|
7
|
+
data.tar.gz: f2b76c28406593d64150e885a4f2d50731d3fb9d079677c94aaff7191a0a546d2bb23647352e729474ce9ebef619a12bac32b6d04045889a34cdbf0a44b21c6d
|
data/lib/gr.rb
CHANGED
@@ -25,6 +25,7 @@ module GR
|
|
25
25
|
end
|
26
26
|
|
27
27
|
require_relative 'gr_commons'
|
28
|
+
require_relative 'gr/version'
|
28
29
|
require_relative 'gr/ffi'
|
29
30
|
require_relative 'gr/grbase'
|
30
31
|
|
@@ -36,58 +37,118 @@ module GR
|
|
36
37
|
# a FFI::MemoryPointer in the GRBase class.
|
37
38
|
|
38
39
|
class << self
|
40
|
+
def initgr(*)
|
41
|
+
super
|
42
|
+
end
|
43
|
+
|
44
|
+
def opengks(*)
|
45
|
+
super
|
46
|
+
end
|
47
|
+
|
48
|
+
def closegks(*)
|
49
|
+
super
|
50
|
+
end
|
51
|
+
|
52
|
+
# inqdspsize
|
39
53
|
def inqdspsize
|
40
54
|
inquiry %i[double double int int] do |*pts|
|
41
55
|
super(*pts)
|
42
56
|
end
|
43
57
|
end
|
44
58
|
|
59
|
+
def openws(*)
|
60
|
+
super
|
61
|
+
end
|
62
|
+
|
63
|
+
def closews(*)
|
64
|
+
super
|
65
|
+
end
|
66
|
+
|
67
|
+
def activatews(*)
|
68
|
+
super
|
69
|
+
end
|
70
|
+
|
71
|
+
def deactivatews(*)
|
72
|
+
super
|
73
|
+
end
|
74
|
+
|
75
|
+
def configurews(*)
|
76
|
+
super
|
77
|
+
end
|
78
|
+
|
79
|
+
def clearws(*)
|
80
|
+
super
|
81
|
+
end
|
82
|
+
|
83
|
+
def updatews(*)
|
84
|
+
super
|
85
|
+
end
|
86
|
+
|
87
|
+
# Draw a polyline using the current line attributes,
|
88
|
+
# starting from the first data point and ending at the last data point.
|
45
89
|
def polyline(x, y)
|
46
90
|
n = equal_length(x, y)
|
47
91
|
super(n, x, y)
|
48
92
|
end
|
49
93
|
|
94
|
+
# Draw marker symbols centered at the given data points.
|
50
95
|
def polymarker(x, y)
|
51
96
|
n = equal_length(x, y)
|
52
97
|
super(n, x, y)
|
53
98
|
end
|
54
99
|
|
100
|
+
def text(*)
|
101
|
+
super
|
102
|
+
end
|
103
|
+
|
104
|
+
# inqtext
|
55
105
|
def inqtext(x, y, string)
|
56
106
|
inquiry [{ double: 4 }, { double: 4 }] do |tbx, tby|
|
57
107
|
super(x, y, string, tbx, tby)
|
58
108
|
end
|
59
109
|
end
|
60
110
|
|
111
|
+
# Allows you to specify a polygonal shape of an area to be filled.
|
61
112
|
def fillarea(x, y)
|
62
113
|
n = equal_length(x, y)
|
63
114
|
super(n, x, y)
|
64
115
|
end
|
65
116
|
|
117
|
+
# Display rasterlike images in a device-independent manner.
|
118
|
+
# The cell array function partitions a rectangle given by two corner points into DIMX X DIMY cells,
|
119
|
+
# each of them colored individually by the corresponding color index of the given cell array.
|
66
120
|
def cellarray(xmin, xmax, ymin, ymax, dimx, dimy, color)
|
67
121
|
super(xmin, xmax, ymin, ymax, dimx, dimy, 1, 1, dimx, dimy, int(color))
|
68
122
|
end
|
69
123
|
|
124
|
+
# Display a two dimensional color index array with nonuniform cell sizes.
|
70
125
|
def nonuniformcellarray(x, y, dimx, dimy, color)
|
71
|
-
raise ArgumentError unless length
|
126
|
+
raise ArgumentError unless x.length == dimx + 1 && y.length == dimy + 1
|
72
127
|
|
73
128
|
super(x, y, dimx, dimy, 1, 1, dimx, dimy, int(color))
|
74
129
|
end
|
75
130
|
|
131
|
+
# Display a two dimensional color index array mapped to a disk using polar coordinates.
|
76
132
|
def polarcellarray(x_org, y_org, phimin, phimax, rmin, rmax, dimphi, dimr, color)
|
77
133
|
super(x_org, y_org, phimin, phimax, rmin, rmax, dimphi, dimr, 1, 1, dimphi, dimr, int(color))
|
78
134
|
end
|
79
135
|
|
136
|
+
# Generates a generalized drawing primitive (GDP) of the type you specify,
|
137
|
+
# using specified points and any additional information contained in a data record.
|
80
138
|
def gdp(x, y, primid, datrec)
|
81
139
|
n = equal_length(x, y)
|
82
|
-
ldr = length
|
140
|
+
ldr = datrec.length
|
83
141
|
super(n, x, y, primid, ldr, datrec)
|
84
142
|
end
|
85
143
|
|
144
|
+
# Generate a cubic spline-fit,
|
145
|
+
# starting from the first data point and ending at the last data point.
|
86
146
|
def spline(px, py, m, method)
|
87
147
|
n = equal_length(px, py)
|
88
148
|
super(n, px, py, m, method)
|
89
149
|
end
|
90
150
|
|
151
|
+
# gridit
|
91
152
|
def gridit(xd, yd, zd, nx, ny)
|
92
153
|
nd = equal_length(xd, yd, zd)
|
93
154
|
inquiry [{ double: nx }, { double: ny }, { double: nx * ny }] do |px, py, pz|
|
@@ -95,169 +156,380 @@ module GR
|
|
95
156
|
end
|
96
157
|
end
|
97
158
|
|
159
|
+
def setlinetype(*)
|
160
|
+
super
|
161
|
+
end
|
162
|
+
|
163
|
+
# inqlinetype
|
98
164
|
def inqlinetype
|
99
165
|
inquiry_int { |pt| super(pt) }
|
100
166
|
end
|
101
167
|
|
168
|
+
def setlinewidth(*)
|
169
|
+
super
|
170
|
+
end
|
171
|
+
|
172
|
+
# inqlinewidth
|
102
173
|
def inqlinewidth
|
103
174
|
inquiry_double { |pt| super(pt) }
|
104
175
|
end
|
105
176
|
|
177
|
+
def setlinecolorind(*)
|
178
|
+
super
|
179
|
+
end
|
180
|
+
|
181
|
+
# inqlinecolorind
|
106
182
|
def inqlinecolorind
|
107
183
|
inquiry_int { |pt| super(pt) }
|
108
184
|
end
|
109
185
|
|
186
|
+
def setmarkertype(*)
|
187
|
+
super
|
188
|
+
end
|
189
|
+
|
190
|
+
# inqmarkertype
|
110
191
|
def inqmarkertype
|
111
192
|
inquiry_int { |pt| super(pt) }
|
112
193
|
end
|
113
194
|
|
195
|
+
def setmarkersize(*)
|
196
|
+
super
|
197
|
+
end
|
198
|
+
|
199
|
+
# inqmarkersize
|
200
|
+
def inqmarkersize
|
201
|
+
inquiry_double { |pt| super(pt) }
|
202
|
+
end
|
203
|
+
|
204
|
+
def setmarkercolorind(*)
|
205
|
+
super
|
206
|
+
end
|
207
|
+
|
208
|
+
# inqmarkercolorind
|
114
209
|
def inqmarkercolorind
|
115
210
|
inquiry_int { |pt| super(pt) }
|
116
211
|
end
|
117
212
|
|
213
|
+
def settextfontprec(*)
|
214
|
+
super
|
215
|
+
end
|
216
|
+
|
217
|
+
def setcharexpan(*)
|
218
|
+
super
|
219
|
+
end
|
220
|
+
|
221
|
+
def setcharspace(*)
|
222
|
+
super
|
223
|
+
end
|
224
|
+
|
225
|
+
def settextcolorind(*)
|
226
|
+
super
|
227
|
+
end
|
228
|
+
|
229
|
+
def setcharheight(*)
|
230
|
+
super
|
231
|
+
end
|
232
|
+
|
233
|
+
def setcharup(*)
|
234
|
+
super
|
235
|
+
end
|
236
|
+
|
237
|
+
def settextpath(*)
|
238
|
+
super
|
239
|
+
end
|
240
|
+
|
241
|
+
def settextalign(*)
|
242
|
+
super
|
243
|
+
end
|
244
|
+
|
245
|
+
def setfillintstyle(*)
|
246
|
+
super
|
247
|
+
end
|
248
|
+
|
249
|
+
# inqfillintstyle
|
118
250
|
def inqfillintstyle
|
119
251
|
inquiry_int { |pt| super(pt) }
|
120
252
|
end
|
121
253
|
|
254
|
+
def setfillstyle(*)
|
255
|
+
super
|
256
|
+
end
|
257
|
+
|
258
|
+
# inqfillstyle
|
122
259
|
def inqfillstyle
|
123
260
|
inquiry_int { |pt| super(pt) }
|
124
261
|
end
|
125
262
|
|
263
|
+
def setfillcolorind(*)
|
264
|
+
super
|
265
|
+
end
|
266
|
+
|
267
|
+
# inqfillcolorind
|
126
268
|
def inqfillcolorind
|
127
269
|
inquiry_int { |pt| super(pt) }
|
128
270
|
end
|
129
271
|
|
272
|
+
def setcolorrep(*)
|
273
|
+
super
|
274
|
+
end
|
275
|
+
|
276
|
+
def setscale(*)
|
277
|
+
super
|
278
|
+
end
|
279
|
+
|
280
|
+
# inqscale
|
130
281
|
def inqscale
|
131
282
|
inquiry_int { |pt| super(pt) }
|
132
283
|
end
|
133
284
|
|
134
|
-
def
|
135
|
-
|
136
|
-
super(x, y, string, tbx, tby)
|
137
|
-
end
|
285
|
+
def setwindow(*)
|
286
|
+
super
|
138
287
|
end
|
139
288
|
|
289
|
+
# inqwindow
|
140
290
|
def inqwindow
|
141
291
|
inquiry %i[double double double double] do |*pts|
|
142
292
|
super(*pts)
|
143
293
|
end
|
144
294
|
end
|
145
295
|
|
296
|
+
def setviewport(*)
|
297
|
+
super
|
298
|
+
end
|
299
|
+
|
300
|
+
# inqviewport
|
146
301
|
def inqviewport
|
147
302
|
inquiry %i[double double double double] do |*pts|
|
148
303
|
super(*pts)
|
149
304
|
end
|
150
305
|
end
|
151
306
|
|
307
|
+
def selntran(*)
|
308
|
+
super
|
309
|
+
end
|
310
|
+
|
311
|
+
def setclip(*)
|
312
|
+
super
|
313
|
+
end
|
314
|
+
|
315
|
+
def setwswindow(*)
|
316
|
+
super
|
317
|
+
end
|
318
|
+
|
319
|
+
def setwsviewport(*)
|
320
|
+
super
|
321
|
+
end
|
322
|
+
|
323
|
+
def createseg(*)
|
324
|
+
super
|
325
|
+
end
|
326
|
+
|
327
|
+
def copysegws(*)
|
328
|
+
super
|
329
|
+
end
|
330
|
+
|
331
|
+
def redrawsegws(*)
|
332
|
+
super
|
333
|
+
end
|
334
|
+
|
335
|
+
def setsegtran(*)
|
336
|
+
super
|
337
|
+
end
|
338
|
+
|
339
|
+
def closeseg(*)
|
340
|
+
super
|
341
|
+
end
|
342
|
+
|
343
|
+
def emergencyclosegks(*)
|
344
|
+
super
|
345
|
+
end
|
346
|
+
|
347
|
+
def updategks(*)
|
348
|
+
super
|
349
|
+
end
|
350
|
+
|
351
|
+
def setspace(*)
|
352
|
+
super
|
353
|
+
end
|
354
|
+
|
355
|
+
# inqspace
|
152
356
|
def inqspace
|
153
357
|
inquiry %i[double double int int] do |*pts|
|
154
358
|
super(*pts)
|
155
359
|
end
|
156
360
|
end
|
157
361
|
|
362
|
+
def textext(*)
|
363
|
+
super
|
364
|
+
end
|
365
|
+
|
366
|
+
# inqtextext
|
367
|
+
def inqtextext(x, y, string)
|
368
|
+
inquiry [{ double: 4 }, { double: 4 }] do |tbx, tby|
|
369
|
+
super(x, y, string, tbx, tby)
|
370
|
+
end
|
371
|
+
end
|
372
|
+
|
373
|
+
def axes(*)
|
374
|
+
super
|
375
|
+
end
|
376
|
+
|
158
377
|
alias axes2d axes
|
159
378
|
|
379
|
+
def grid(*)
|
380
|
+
super
|
381
|
+
end
|
382
|
+
|
383
|
+
def grid3d(*)
|
384
|
+
super
|
385
|
+
end
|
386
|
+
|
387
|
+
# Draw a standard vertical error bar graph.
|
160
388
|
def verrorbars(px, py, e1, e2)
|
161
389
|
n = equal_length(px, py, e1, e2)
|
162
390
|
super(n, px, py, e1, e2)
|
163
391
|
end
|
164
392
|
|
393
|
+
# Draw a standard horizontal error bar graph.
|
165
394
|
def herrorbars(px, py, e1, e2)
|
166
395
|
n = equal_length(px, py, e1, e2)
|
167
396
|
super(n, px, py, e1, e2)
|
168
397
|
end
|
169
398
|
|
399
|
+
# Draw a 3D curve using the current line attributes,
|
400
|
+
# starting from the first data point and ending at the last data point.
|
170
401
|
def polyline3d(px, py, pz)
|
171
402
|
n = equal_length(px, py, pz)
|
172
403
|
super(n, px, py, pz)
|
173
404
|
end
|
174
405
|
|
406
|
+
# Draw marker symbols centered at the given 3D data points.
|
175
407
|
def polymarker3d(px, py, pz)
|
176
408
|
n = equal_length(px, py, pz)
|
177
409
|
super(n, px, py, pz)
|
178
410
|
end
|
179
411
|
|
180
|
-
def
|
181
|
-
|
182
|
-
nx = length(px)
|
183
|
-
ny = length(py)
|
184
|
-
super(nx, ny, px, py, pz, option)
|
412
|
+
def axes3d(*)
|
413
|
+
super
|
185
414
|
end
|
186
415
|
|
187
|
-
def
|
188
|
-
|
189
|
-
super(n, px, py, pz)
|
416
|
+
def titles3d(*)
|
417
|
+
super
|
190
418
|
end
|
191
419
|
|
192
|
-
|
193
|
-
|
194
|
-
nx = length(x)
|
195
|
-
ny = length(y)
|
196
|
-
inquiry [{ double: nx * ny }, { double: nx * ny }] do |pu, pv|
|
197
|
-
super(nx, ny, x, y, z, pu, pv)
|
198
|
-
end
|
199
|
-
end
|
200
|
-
|
201
|
-
def quiver(x, y, u, v, color)
|
420
|
+
# Draw a three-dimensional surface plot for the given data points.
|
421
|
+
def surface(px, py, pz, option)
|
202
422
|
# TODO: check: Arrays have incorrect length or dimension.
|
203
|
-
nx = length
|
204
|
-
ny = length
|
205
|
-
super(nx, ny,
|
423
|
+
nx = px.length
|
424
|
+
ny = py.length
|
425
|
+
super(nx, ny, px, py, pz, option)
|
206
426
|
end
|
207
427
|
|
428
|
+
# Draw contours of a three-dimensional data set
|
429
|
+
# whose values are specified over a rectangular mesh.
|
430
|
+
# Contour lines may optionally be labeled.
|
208
431
|
def contour(px, py, h, pz, major_h)
|
209
432
|
# TODO: check: Arrays have incorrect length or dimension.
|
210
|
-
nx = length
|
211
|
-
ny = length
|
212
|
-
nh = h.
|
433
|
+
nx = px.length
|
434
|
+
ny = py.length
|
435
|
+
nh = h.length
|
213
436
|
super(nx, ny, nh, px, py, h, pz, major_h)
|
214
437
|
end
|
215
438
|
|
439
|
+
# Draw filled contours of a three-dimensional data set
|
440
|
+
# whose values are specified over a rectangular mesh.
|
216
441
|
def contourf(px, py, h, pz, major_h)
|
217
442
|
# TODO: check: Arrays have incorrect length or dimension.
|
218
|
-
nx = length
|
219
|
-
ny = length
|
220
|
-
nh = h.
|
443
|
+
nx = px.length
|
444
|
+
ny = py.length
|
445
|
+
nh = h.length
|
221
446
|
super(nx, ny, nh, px, py, h, pz, major_h)
|
222
447
|
end
|
223
448
|
|
449
|
+
# Draw a contour plot for the given triangle mesh.
|
224
450
|
def tricontour(x, y, z, levels)
|
225
|
-
npoints = length
|
226
|
-
nlevels = length
|
451
|
+
npoints = x.length # equal_length ?
|
452
|
+
nlevels = levels.length
|
227
453
|
super(npoints, x, y, z, nlevels, levels)
|
228
454
|
end
|
229
455
|
|
456
|
+
# hexbin
|
230
457
|
def hexbin(x, y, nbins)
|
231
|
-
n = length
|
458
|
+
n = x.length
|
232
459
|
super(n, x, y, nbins)
|
233
460
|
end
|
234
461
|
|
462
|
+
def setcolormap(*)
|
463
|
+
super
|
464
|
+
end
|
465
|
+
|
466
|
+
# inqcolormap
|
235
467
|
def inqcolormap
|
236
468
|
inquiry_int { |pt| super(pt) }
|
237
469
|
end
|
238
470
|
|
471
|
+
# Define a linear interpolated colormap by a list of RGB colors.
|
239
472
|
def setcolormapfromrgb(r, g, b, positions: nil)
|
240
473
|
n = equal_length(r, g, b)
|
241
474
|
if positions.nil?
|
242
475
|
positions = ::FFI::Pointer::NULL
|
243
476
|
else
|
244
|
-
raise if length
|
477
|
+
raise if positions.length != n
|
245
478
|
end
|
246
479
|
super(n, r, g, b, positions)
|
247
480
|
end
|
248
481
|
|
482
|
+
def colorbar(*)
|
483
|
+
super
|
484
|
+
end
|
485
|
+
|
486
|
+
# inqcolor
|
249
487
|
def inqcolor(color)
|
250
488
|
inquiry_int do |rgb|
|
251
489
|
super(color, rgb)
|
252
490
|
end
|
253
491
|
end
|
254
492
|
|
493
|
+
def inqcolorfromrgb(*)
|
494
|
+
super
|
495
|
+
end
|
496
|
+
|
497
|
+
# hsvtorgb
|
255
498
|
def hsvtorgb(h, s, v)
|
256
499
|
inquiry %i[double double double] do |r, g, b|
|
257
500
|
super(h, s, v, r, g, b)
|
258
501
|
end
|
259
502
|
end
|
260
503
|
|
504
|
+
def tick(*)
|
505
|
+
super
|
506
|
+
end
|
507
|
+
|
508
|
+
def validaterange(*)
|
509
|
+
super
|
510
|
+
end
|
511
|
+
|
512
|
+
def adjustlimits(*)
|
513
|
+
super
|
514
|
+
end
|
515
|
+
|
516
|
+
def adjustrange(*)
|
517
|
+
super
|
518
|
+
end
|
519
|
+
|
520
|
+
def beginprint(*)
|
521
|
+
super
|
522
|
+
end
|
523
|
+
|
524
|
+
def beginprintext(*)
|
525
|
+
super
|
526
|
+
end
|
527
|
+
|
528
|
+
def endprint(*)
|
529
|
+
super
|
530
|
+
end
|
531
|
+
|
532
|
+
# ndctowc
|
261
533
|
def ndctowc(x, y)
|
262
534
|
inquiry %i[double double] do |px, py|
|
263
535
|
px.write_double x
|
@@ -266,6 +538,7 @@ module GR
|
|
266
538
|
end
|
267
539
|
end
|
268
540
|
|
541
|
+
# wctondc
|
269
542
|
def wctondc(x, y)
|
270
543
|
inquiry %i[double double] do |px, py|
|
271
544
|
px.write_double x
|
@@ -274,6 +547,7 @@ module GR
|
|
274
547
|
end
|
275
548
|
end
|
276
549
|
|
550
|
+
# wc3towc
|
277
551
|
def wc3towc(x, y, z)
|
278
552
|
inquiry %i[double double double] do |px, py, pz|
|
279
553
|
px.write_double x
|
@@ -283,43 +557,156 @@ module GR
|
|
283
557
|
end
|
284
558
|
end
|
285
559
|
|
560
|
+
def drawrect(*)
|
561
|
+
super
|
562
|
+
end
|
563
|
+
|
564
|
+
def fillrect(*)
|
565
|
+
super
|
566
|
+
end
|
567
|
+
|
568
|
+
def drawarc(*)
|
569
|
+
super
|
570
|
+
end
|
571
|
+
|
572
|
+
def fillarc(*)
|
573
|
+
super
|
574
|
+
end
|
575
|
+
|
576
|
+
# Draw simple and compound outlines consisting of line segments and bezier curves.
|
286
577
|
def drawpath(points, codes, fill)
|
287
|
-
len = length
|
578
|
+
len = codes.length
|
288
579
|
super(len, points, uint8(codes), fill)
|
289
580
|
end
|
290
581
|
|
582
|
+
def setarrowstyle(*)
|
583
|
+
super
|
584
|
+
end
|
585
|
+
|
586
|
+
def setarrowsize(*)
|
587
|
+
super
|
588
|
+
end
|
589
|
+
|
590
|
+
def drawarrow(*)
|
591
|
+
super
|
592
|
+
end
|
593
|
+
|
594
|
+
# readimage
|
595
|
+
def readimage(path)
|
596
|
+
w, h, d = inquiry [:int, :int, :pointer] do |width, height, data|
|
597
|
+
# data is a pointer of a pointer
|
598
|
+
super(path, width, height, data)
|
599
|
+
end
|
600
|
+
[w, h, d.read_array_of_uint(w * h)]
|
601
|
+
end
|
602
|
+
|
603
|
+
# Draw an image into a given rectangular area.
|
291
604
|
def drawimage(xmin, xmax, ymin, ymax, width, height, data, model = 0)
|
292
|
-
super(xmin, xmax, ymin, ymax, width, height,
|
605
|
+
super(xmin, xmax, ymin, ymax, width, height, uint(data), model)
|
606
|
+
end
|
607
|
+
|
608
|
+
def importgraphics(*)
|
609
|
+
super
|
293
610
|
end
|
294
611
|
|
612
|
+
def setshadow(*)
|
613
|
+
super
|
614
|
+
end
|
615
|
+
|
616
|
+
def settransparency(*)
|
617
|
+
super
|
618
|
+
end
|
619
|
+
|
620
|
+
# Change the coordinate transformation according to the given matrix.
|
295
621
|
def setcoordxform(mat)
|
296
622
|
raise if mat.size != 6
|
297
623
|
|
298
624
|
super(mat)
|
299
625
|
end
|
300
626
|
|
627
|
+
def begingraphics(*)
|
628
|
+
super
|
629
|
+
end
|
630
|
+
|
631
|
+
def endgraphics(*)
|
632
|
+
super
|
633
|
+
end
|
634
|
+
|
635
|
+
def getgraphics(*)
|
636
|
+
super
|
637
|
+
end
|
638
|
+
|
639
|
+
def drawgraphics(*)
|
640
|
+
super
|
641
|
+
end
|
642
|
+
|
643
|
+
def mathtex(*)
|
644
|
+
super
|
645
|
+
end
|
646
|
+
|
647
|
+
# inqmathtex
|
301
648
|
def inqmathtex(x, y, string)
|
302
649
|
inquiry [{ double: 4 }, { double: 4 }] do |tbx, tby|
|
303
650
|
super(x, y, string, tbx, tby)
|
304
651
|
end
|
305
652
|
end
|
306
653
|
|
654
|
+
def beginselection(*)
|
655
|
+
super
|
656
|
+
end
|
657
|
+
|
658
|
+
def endselection(*)
|
659
|
+
super
|
660
|
+
end
|
661
|
+
|
662
|
+
def moveselection(*)
|
663
|
+
super
|
664
|
+
end
|
665
|
+
|
666
|
+
def resizeselection(*)
|
667
|
+
super
|
668
|
+
end
|
669
|
+
|
670
|
+
# inqbbox
|
307
671
|
def inqbbox
|
308
672
|
inquiry %i[double double double double] do |*pts|
|
309
673
|
super(*pts)
|
310
674
|
end
|
311
675
|
end
|
312
676
|
|
313
|
-
def
|
314
|
-
|
315
|
-
super(*pts)
|
316
|
-
end
|
677
|
+
def precision(*)
|
678
|
+
super
|
317
679
|
end
|
318
680
|
|
319
|
-
def
|
320
|
-
super
|
681
|
+
def setregenflags(*)
|
682
|
+
super
|
683
|
+
end
|
684
|
+
|
685
|
+
def inqregenflags(*)
|
686
|
+
super
|
687
|
+
end
|
688
|
+
|
689
|
+
def savestate(*)
|
690
|
+
super
|
691
|
+
end
|
692
|
+
|
693
|
+
def restorestate(*)
|
694
|
+
super
|
695
|
+
end
|
696
|
+
|
697
|
+
def selectcontext(*)
|
698
|
+
super
|
699
|
+
end
|
700
|
+
|
701
|
+
def destroycontext(*)
|
702
|
+
super
|
703
|
+
end
|
704
|
+
|
705
|
+
def uselinespec(*)
|
706
|
+
super
|
321
707
|
end
|
322
708
|
|
709
|
+
# Reduces the number of points of the x and y array.
|
323
710
|
def reducepoints(xd, yd, n)
|
324
711
|
nd = equal_length(xd, yd)
|
325
712
|
inquiry [{ double: n }, { double: n }] do |x, y|
|
@@ -328,18 +715,66 @@ module GR
|
|
328
715
|
end
|
329
716
|
end
|
330
717
|
|
718
|
+
# Draw a triangular surface plot for the given data points.
|
719
|
+
def trisurface(px, py, pz)
|
720
|
+
n = [px, py, pz].map(&:length).min
|
721
|
+
super(n, px, py, pz)
|
722
|
+
end
|
723
|
+
|
724
|
+
# gradient
|
725
|
+
def gradient(x, y, z)
|
726
|
+
# TODO: check: Arrays have incorrect length or dimension.
|
727
|
+
nx = x.length
|
728
|
+
ny = y.length
|
729
|
+
inquiry [{ double: nx * ny }, { double: nx * ny }] do |pu, pv|
|
730
|
+
super(nx, ny, x, y, z, pu, pv)
|
731
|
+
end
|
732
|
+
end
|
733
|
+
|
734
|
+
# quiver
|
735
|
+
def quiver(x, y, u, v, color)
|
736
|
+
# TODO: check: Arrays have incorrect length or dimension.
|
737
|
+
nx = x.length
|
738
|
+
ny = y.length
|
739
|
+
super(nx, ny, x, y, u, v, (color ? 1 : 0))
|
740
|
+
end
|
741
|
+
|
742
|
+
# interp2
|
743
|
+
def interp2(x, y, z, xq, yq, method, extrapval) # flatten
|
744
|
+
nx = x.length
|
745
|
+
ny = y.length
|
746
|
+
# nz = z.length
|
747
|
+
nxq = xq.length
|
748
|
+
nyq = yq.length
|
749
|
+
inquiry(double: nxq * nyq) do |zq|
|
750
|
+
super(nx, ny, x, y, z, nxq, nyq, xq, yq, zq, method, extrapval)
|
751
|
+
end
|
752
|
+
end
|
753
|
+
|
754
|
+
# version
|
755
|
+
def version
|
756
|
+
super.read_string
|
757
|
+
end
|
758
|
+
|
759
|
+
# Display a point set as a aggregated and rasterized image.
|
331
760
|
def shadepoints(x, y, dims: [1200, 1200], xform: 1)
|
332
|
-
n = length
|
761
|
+
n = x.length
|
333
762
|
w, h = dims
|
334
763
|
super(n, x, y, xform, w, h)
|
335
764
|
end
|
336
765
|
|
766
|
+
# Display a line set as an aggregated and rasterized image.
|
337
767
|
def shadelines(x, y, dims: [1200, 1200], xform: 1)
|
338
|
-
n = length
|
768
|
+
n = x.length
|
339
769
|
w, h = dims
|
340
770
|
super(n, x, y, xform, w, h)
|
341
771
|
end
|
342
772
|
|
773
|
+
def panzoom(*)
|
774
|
+
super
|
775
|
+
end
|
776
|
+
|
777
|
+
# panzoom
|
343
778
|
def panzoom(x, y, zoom)
|
344
779
|
inquiry %i[double double double double] do |xmin, xmax, ymin, ymax|
|
345
780
|
super(x, y, zoom, zoom, xmin, xmax, ymin, ymax)
|