ruby-gr 0.72.9.0 → 0.73.17.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: 51280dfb8fb8ed2385148658651d3c4109307394f31c270cc715595097ccae3a
4
+ data.tar.gz: d6231ee72a5027eeb587f3b537568774458e07f336e4aa4363472f88b52f8aa4
5
5
  SHA512:
6
- metadata.gz: 53c0cef5add5333e520a34ab2fa923361a44acb0b3bc50ccfaf847153a9d0e404357904947fc2fa3abb125951eb967bcc1c78fb504c6bc9a5d9323f8238ebd31
7
- data.tar.gz: 0f3c0d93ff46b9f850154ee4e9318f55b9f20f9cfa546472c556cc7b2e41e7dc0b53090041f043e95993e2b2a15b9a884a27d1adfec3e661a05bd89024b58e6d
6
+ metadata.gz: 197d1aa2c250e109aae5c56973ff8ae1baa7bbdb963708763c789b286a5810c5a239f166507b72f75efc69f9b440db39a4b5df4c702a7a117ffeca6f4a8c9fc9
7
+ data.tar.gz: 50f09df9aed163d17b8f5fcea1ebb94f72abfffe28fd83bae262dcd64a706f4a4090203b38e04fc607bb6631ddb6f02c73c823363989e7f549454d110240d19d
data/README.md CHANGED
@@ -2,8 +2,8 @@
2
2
 
3
3
  [![Gem Version](https://img.shields.io/gem/v/ruby-gr?color=brightgreen)](https://rubygems.org/gems/ruby-gr)
4
4
  [![CI](https://github.com/red-data-tools/GR.rb/workflows/CI/badge.svg)](https://github.com/red-data-tools/GR.rb/actions)
5
- [![Gitter Chat](https://badges.gitter.im/red-data-tools/en.svg)](https://gitter.im/red-data-tools/en)
6
5
  [![Docs Latest](https://img.shields.io/badge/docs-latest-blue.svg)](https://red-data-tools.github.io/GR.rb/)
6
+ [![Lines of Code](https://img.shields.io/endpoint?url=https%3A%2F%2Ftokei.kojix2.net%2Fbadge%2Fgithub%2Fred-data-tools%2FGR.rb%2Flines)](https://tokei.kojix2.net/github/red-data-tools/GR.rb)
7
7
 
8
8
  [![rdatasets-1](https://i.imgur.com/XEQ6wKs.png)](examples/rdatasets.rb)
9
9
  [![stem](https://i.imgur.com/3w0Ejrm.png)](examples/fast_plots.rb)
data/lib/gr/ffi.rb CHANGED
@@ -125,8 +125,8 @@ module GR
125
125
  try_extern 'void gr_inqfillstyle(int *)'
126
126
  try_extern 'void gr_setfillcolorind(int)'
127
127
  try_extern 'void gr_inqfillcolorind(int *)'
128
- try_extern 'void gr_setresizebehaviour(int)'
129
- try_extern 'void gr_inqresizebehaviour(int *)'
128
+ try_extern 'void gr_setnominalsize(double)'
129
+ try_extern 'void gr_inqnominalsize(double *)'
130
130
  try_extern 'void gr_setcolorrep(int, double, double, double)'
131
131
  try_extern 'void gr_setwindow(double, double, double, double)'
132
132
  try_extern 'void gr_inqwindow(double *, double *, double *, double *)'
@@ -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,19 +205,28 @@ 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)'
206
212
  try_extern 'char *gr_getgraphics(void)'
207
213
  try_extern 'int gr_drawgraphics(char *)'
208
214
  try_extern 'int gr_startlistener(void)'
215
+ try_extern 'int gr_inqgrplotport(void)'
216
+ try_extern 'int gr_setgrplotport(int)'
209
217
  try_extern 'void gr_mathtex(double, double, char *)'
210
218
  try_extern 'void gr_inqmathtex(double, double, char *, double *, double *)'
219
+ try_extern 'void gr_mathtex3d(double, double, double, char *, int)'
220
+ try_extern 'void gr_inqmathtex3d(double, double, double, char *, int, double *, double *, double *, double *)'
211
221
  try_extern 'void gr_beginselection(int, int)'
212
222
  try_extern 'void gr_endselection(void)'
223
+ try_extern 'void gr_setbboxcallback(int, void (*)(int, double, double, double, double))'
224
+ try_extern 'void gr_cancelbboxcallback(void)'
213
225
  try_extern 'void gr_moveselection(double, double)'
214
226
  try_extern 'void gr_resizeselection(int, double, double)'
215
227
  try_extern 'void gr_inqbbox(double *, double *, double *, double *)'
228
+ try_extern 'void gr_setbackground(void)'
229
+ try_extern 'void gr_clearbackground(void)'
216
230
  try_extern 'double gr_precision(void)'
217
231
  try_extern 'int gr_text_maxsize(void)'
218
232
  try_extern 'void gr_setregenflags(int)'
@@ -230,7 +244,8 @@ module GR
230
244
  try_extern 'void gr_gradient(int, int, double *, double *, double *, double *, double *)'
231
245
  try_extern 'void gr_quiver(int, int, double *, double *, double *, double *, int)'
232
246
  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)'
247
+ ' int nxq, int nyq, const double *xq, const double *yq, double *zq,' \
248
+ ' interp2_method_t method, double extrapval)'
234
249
  try_extern 'const char *gr_version(void)'
235
250
  try_extern 'void gr_shade(int, double *, double *, int, int, double *, int, int, int *)'
236
251
  try_extern 'void gr_shadepoints(int, double *, double *, int, int, int)'
@@ -262,6 +277,7 @@ module GR
262
277
  try_extern 'void gr_setscalefactors3d(double, double, double)'
263
278
  try_extern 'void gr_inqscalefactors3d(double *, double *, double *)'
264
279
  try_extern 'void gr_setspace3d(double, double, double, double)'
280
+ try_extern 'void gr_inqspace3d(int *, double *, double *, double *, double *)'
265
281
  try_extern 'void gr_text3d(double, double, double, char *, int axis)'
266
282
  try_extern 'void gr_inqtext3d(double, double, double, char *, int axis, double *, double *)'
267
283
  try_extern 'void gr_settextencoding(int)'
@@ -282,10 +298,20 @@ module GR
282
298
  # typedef double (*radius_f)(const data_point3d_t *, const void *);
283
299
  typealias 'kernel_f', 'void*'
284
300
  typealias 'radius_f', 'void*'
301
+ typealias 'interp2_method_t', 'int'
285
302
  try_extern 'void gr_volume_nogrid(unsigned long, const data_point3d_t *, const void *, int, kernel_f, double *, double *, double, radius_f)'
286
303
  try_extern 'void gr_volume_interp_tri_linear_init(double, double, double)'
287
304
  try_extern 'void gr_volume_interp_gauss_init(double, double *)'
288
305
  try_extern 'double gr_volume_interp_tri_linear(const data_point3d_t *, const void *, const point3d_t *, const point3d_t *)'
289
306
  try_extern 'double gr_volume_interp_gauss(const data_point3d_t *, const void *, const point3d_t *, const point3d_t *)'
307
+ try_extern 'void gr_setmathfont(int font)'
308
+ try_extern 'void gr_inqmathfont(int *font)'
309
+ try_extern 'void gr_setclipregion(int region)'
310
+ try_extern 'void gr_inqclipregion(int *region)'
311
+ try_extern 'void gr_setclipsector(double start_angle, double end_angle)'
312
+ try_extern 'void gr_inqclipsector(double *start_angle, double *end_angle)'
313
+ try_extern 'void gr_settextoffset(double xoff, double yoff)'
314
+ try_extern 'char *gr_ftoa(char *string, double value, format_reference_t *reference)'
315
+ try_extern 'void gr_getformat(format_reference_t *result, double origin, double min, double max, double tick_width, int major)'
290
316
  end
291
317
  end
data/lib/gr.rb CHANGED
@@ -137,7 +137,7 @@ module GR
137
137
  # * 371 : Gtk
138
138
  # * 380 : wxWidgets
139
139
  # * 381 : Qt4
140
- # * 382 : Scaleable Vector Graphics (SVG)
140
+ # * 382 : Scalable Vector Graphics (SVG)
141
141
  # * 390 : Windows Metafile
142
142
  # * 400 : Quartz
143
143
  # * 410 : Socket driver
@@ -519,7 +519,7 @@ module GR
519
519
  inquiry_int { |pt| super(pt) }
520
520
  end
521
521
 
522
- # Specifiy the marker type for polymarkers.
522
+ # Specify the marker type for polymarkers.
523
523
  #
524
524
  # @param style [Integer] The polymarker marker type
525
525
  # * 1 : MARKERTYPE_DOT - Smallest displayable dot
@@ -732,7 +732,7 @@ module GR
732
732
  # * 3 : TEXT_HALIGN_RIGHT - Right justify
733
733
  #
734
734
  # @param vertical [Integer] Vertical text alignment
735
- # * 0 : TEXT_VALIGN_NORMAL  
735
+ # * 0 : TEXT_VALIGN_NORMAL
736
736
  # * 1 : TEXT_VALIGN_TOP - Align with the top of the characters
737
737
  # * 2 : TEXT_VALIGN_CAP - Aligned with the cap of the characters
738
738
  # * 3 : TEXT_VALIGN_HALF - Aligned with the half line of the characters
data/lib/gr3.rb CHANGED
@@ -288,7 +288,7 @@ module GR3
288
288
  #
289
289
  # This function does not return an error code, because of its asynchronous
290
290
  # nature. If gr3_getpixmap_() returns a GR3_ERROR_OPENGL_ERR, this might be
291
- # caused by this function saving unuseable data into the draw list.
291
+ # caused by this function saving unusable data into the draw list.
292
292
  #
293
293
  # @param mesh [Integer] The mesh to be drawn
294
294
  # @param n [Integer] The number of meshes to be drawn
@@ -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
 
@@ -34,7 +34,7 @@ module GRCommons
34
34
  #
35
35
  # @note Mainly used by developers for debugging.
36
36
  #
37
- # = How it works 
37
+ # = How it works
38
38
  # It prepend a module named Inspector to the singular class of the FFI module.
39
39
  # It will inspects the GR function call of the FFI module
40
40
  #
@@ -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.17.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 grm_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
 
@@ -37,6 +39,9 @@ module GRM
37
39
  try_extern 'void grm_dump(const grm_args_t *args, FILE *f)'
38
40
  try_extern 'void grm_dump_json(const grm_args_t *args, FILE *f)'
39
41
  try_extern 'char *grm_dump_json_str(void)'
42
+ try_extern 'char *grm_dump_html(char *plot_id)'
43
+ try_extern 'char *grm_dump_html_args(char *plot_id, grm_args_t *args)'
44
+ try_extern 'void grm_dump_bson(const grm_args_t *args, FILE *f)'
40
45
 
41
46
  # https://github.com/sciapp/gr/blob/master/lib/grm/include/grm/event.h
42
47
  typealias 'grm_event_type_t', 'int' # enum
@@ -51,6 +56,7 @@ module GRM
51
56
  try_extern 'grm_tooltip_info_t *grm_get_tooltip(int mouse_x, int mouse_y)'
52
57
  try_extern 'grm_tooltip_info_t **grm_get_tooltips_x(int mouse_x, int mouse_y, unsigned int *array_length)'
53
58
  try_extern 'grm_accumulated_tooltip_info_t *grm_get_accumulated_tooltip_x(int mouse_x, int mouse_y)'
59
+ try_extern 'int grm_get_hover_mode(int mouse_x, int mouse_y, int disable_movable_xform)'
54
60
 
55
61
  # https://github.com/sciapp/gr/blob/master/lib/grm/include/grm/net.h
56
62
  try_extern 'void *grm_open(int is_receiver, const char *name, unsigned int id, ' \
@@ -66,13 +72,30 @@ module GRM
66
72
  # https://github.com/sciapp/gr/blob/master/lib/grm/include/grm/plot.h
67
73
  try_extern 'void grm_finalize(void)'
68
74
  try_extern 'int grm_clear(void)'
69
- try_extern 'unsigned int grm_max_plotid(void)'
75
+ try_extern 'void grm_dump_graphics_tree(FILE *f)'
76
+ try_extern 'char *grm_dump_graphics_tree_str(void)'
77
+ try_extern 'unsigned int grm_max_plot_id(void)'
70
78
  try_extern 'int grm_merge(const grm_args_t *args)'
71
79
  try_extern 'int grm_merge_extended(const grm_args_t *args, int hold, const char *identificator)'
72
80
  try_extern 'int grm_merge_hold(const grm_args_t *args)'
73
81
  try_extern 'int grm_merge_named(const grm_args_t *args, const char *identificator)'
74
82
  try_extern 'int grm_plot(const grm_args_t *args)'
83
+ try_extern 'int grm_render(void)'
84
+ try_extern 'int grm_process_tree(void)'
75
85
  try_extern 'int grm_export(const char *file_path)'
76
86
  try_extern 'int grm_switch(unsigned int id)'
87
+ try_extern 'int grm_load_graphics_tree(FILE *file)'
88
+ try_extern 'int grm_validate(void)'
89
+ # The following functions use C++ types that cannot be parsed by Fiddle
90
+ # try_extern 'std::shared_ptr<GRM::Element> grm_get_document_root(void)'
91
+ # try_extern 'std::shared_ptr<GRM::Render> grm_get_render(void)'
92
+ # try_extern 'int grm_iterate_grid(GRM::Grid *grid, const std::shared_ptr<GRM::Element> &parent_dom_element, int plot_id)'
93
+ # try_extern 'int grm_plot_helper(GRM::GridElement *grid_element, GRM::Slice *slice, const std::shared_ptr<GRM::Element> &parent_dom_element, int plot_id)'
94
+ # try_extern 'std::shared_ptr<GRM::Element> grm_get_subplot_from_ndc_point_using_dom(double x, double y)'
95
+ # try_extern 'std::shared_ptr<GRM::Element> grm_get_subplot_from_ndc_points_using_dom(unsigned int n, const double *x, const double *y)'
96
+ # try_extern 'void grm_set_attribute_on_all_subplots(std::string attribute, int value)'
97
+ # try_extern 'int grm_get_focus_and_factor_from_dom(const int x1, const int y1, const int x2, const int y2, const int keep_aspect_ratio, double *factor_x, double *factor_y, double *focus_x, double *focus_y, std::shared_ptr<GRM::Element> &subplot_element)'
98
+ # try_extern 'std::map<std::string, std::list<std::string>> grm_get_context_data()'
99
+ # try_extern 'std::shared_ptr<GRM::Document> grm_load_graphics_tree_schema(bool with_private_attributes = false)'
77
100
  end
78
101
  end
data/lib/grm.rb CHANGED
@@ -61,6 +61,110 @@ 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
+ end
71
+ end
72
+ end
73
+
74
+ def initialize(**args)
75
+ @args = GRM.args_new
76
+ @args.free = FFI['grm_args_delete']
77
+ @references = []
78
+ args.each do |key, value|
79
+ push(key, value)
80
+ end
81
+ end
82
+
83
+ def push(key, value)
84
+ key = key.to_s if key.is_a?(Symbol)
85
+ case value
86
+ when String
87
+ GRM.args_push(@args, key, 's', :const_string, value)
88
+ when Integer
89
+ GRM.args_push(@args, key, 'i', :int, value)
90
+ when Float
91
+ GRM.args_push(@args, key, 'd', :double, value)
92
+ when Args
93
+ GRM.args_push(@args, key, 'a', :voidp, value.address)
94
+ value.to_gr.free = nil
95
+ when Array
96
+ case value[0]
97
+ when String
98
+ addresses = value.collect { |v| Fiddle::Pointer[v].to_i }
99
+ GRM.args_push(@args, key, 'nS',
100
+ :int, value.size,
101
+ :voidp, addresses.pack('J*'))
102
+ when Integer
103
+ GRM.args_push(@args, key, 'nI',
104
+ :int, value.size,
105
+ :voidp, value.pack('i*'))
106
+ when Float
107
+ GRM.args_push(@args, key, 'nD',
108
+ :int, value.size,
109
+ :voidp, value.pack('d*'))
110
+ when Args
111
+ GRM.args_push(@args, key, 'nA',
112
+ :int, value.size,
113
+ :voidp, value.collect(&:address).pack('J*'))
114
+ value.each do |v|
115
+ v.to_gr.free = nil
116
+ end
117
+ else
118
+ vs = value.collect { |v| Args.new(**v) }
119
+ @references.concat(vs)
120
+ GRM.args_push(@args, key, 'nA',
121
+ :int, value.size,
122
+ :voidp, vs.collect(&:address).pack('J*'))
123
+ vs.each do |v|
124
+ v.to_gr.free = nil
125
+ end
126
+ end
127
+ else
128
+ v = Args.new(**value)
129
+ @references << v
130
+ GRM.args_push(@args, key, 'a', :voidp, v.address)
131
+ v.to_gr.free = nil
132
+ end
133
+ end
134
+
135
+ def clear
136
+ GRM.args_clear(@args)
137
+ @references.clear
138
+ end
139
+
140
+ def address
141
+ @args.to_i
142
+ end
143
+
144
+ def to_gr
145
+ @args
146
+ end
147
+ end
148
+
64
149
  class << self
150
+ def merge(args = nil)
151
+ super(Args.try_convert(args) || args)
152
+ end
153
+
154
+ def merge_extended(args = nil, hold = 0, _identifiator = nil)
155
+ super(Args.try_convert(args) || args, hold, identificator)
156
+ end
157
+
158
+ def merge_hold(args = nil)
159
+ super(Args.try_convert(args) || args)
160
+ end
161
+
162
+ def merge_named(args = nil, _identifiator = nil)
163
+ super(Args.try_convert(args) || args, identificator)
164
+ end
165
+
166
+ def plot(args = nil)
167
+ super(Args.try_convert(args) || args)
168
+ end
65
169
  end
66
170
  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.17.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: 1980-01-02 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.7.1
106
103
  specification_version: 4
107
104
  summary: GR for Ruby
108
105
  test_files: []