ruby-gr 0.73.24.0 → 0.73.27.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: 160f844394c8d7094012ff62b591a217cc427b8a39c5750bd9b092829e632795
4
- data.tar.gz: ec2cb05bb3a9b4997691d0e2db4faf88e5c69873f31986a24add3a7f2f8bb9f9
3
+ metadata.gz: d7b564823c22dddeb8ea0ae722a04d5339475dd85d048bb95d32116e3ffb95d4
4
+ data.tar.gz: cabe5b7131262dc2871ad4a2a4f836eba22f0a005bc77d7e97362177bd70fae6
5
5
  SHA512:
6
- metadata.gz: 077e1c882ccdea72597faf657dd41de18f3a3c004b3236f9fe96de81857cf4838ff46f3a43dd75784d157ca096475d39885a49ef2784733ddea6aac1ffa21cc2
7
- data.tar.gz: 6d82381e5d6c8172361d4a0af3bc6a4c747d5d7498d6671d95ebe291c190d2bb10e17539850cf1b4e0d8def478dfee8bebc434b2a14e73246353cdae9749ed6e
6
+ metadata.gz: 3f8643a6b2f367d444c2a1d03426d514309a1a5beff5ee07541e33f6769455776d3f11fdeed3936318bf44b9f9fd772b25a569a1f11ff24ec7b6d0802c41f7fc
7
+ data.tar.gz: d3c5f8a042f3d232741dda9e52db9fc2f4abc81d45100dff3beee5007f8ea98e75616834fbd79f4b703d02f18515746d1b72ad64713a78ed06bf76e5501fcc21
data/lib/gr/ffi.rb CHANGED
@@ -79,6 +79,7 @@ module GR
79
79
  ]
80
80
 
81
81
  Axis = struct [
82
+ 'char *spec',
82
83
  'double min_val', # min conflict with Enumerable min
83
84
  'double max_val', # max conflict with Enumerable max
84
85
  'double tick',
@@ -96,8 +97,8 @@ module GR
96
97
  ]
97
98
 
98
99
  FormatReference = struct [
99
- 'char *format',
100
- 'int length'
100
+ 'int scientific',
101
+ 'int decimal_digits'
101
102
  ]
102
103
 
103
104
  try_extern 'void gr_initgr(void)'
@@ -105,7 +106,7 @@ module GR
105
106
  try_extern 'void gr_opengks(void)'
106
107
  try_extern 'void gr_closegks(void)'
107
108
  try_extern 'void gr_inqdspsize(double *, double *, int *, int *)'
108
- try_extern 'void gr_openws(int, char *, int)'
109
+ try_extern 'void gr_openws(int, const char *, int)'
109
110
  try_extern 'void gr_closews(int)'
110
111
  try_extern 'void gr_activatews(int)'
111
112
  try_extern 'void gr_deactivatews(int)'
@@ -114,10 +115,10 @@ module GR
114
115
  try_extern 'void gr_updatews(void)'
115
116
  try_extern 'void gr_polyline(int, double *, double *)'
116
117
  try_extern 'void gr_polymarker(int, double *, double *)'
117
- try_extern 'void gr_text(double, double, char *)'
118
- try_extern 'void gr_textx(double, double, char *, int)'
119
- try_extern 'void gr_inqtext(double, double, char *, double *, double *)'
120
- try_extern 'void gr_inqtextx(double, double, char *, int, double *, double *)'
118
+ try_extern 'void gr_text(double, double, const char *)'
119
+ try_extern 'void gr_textx(double, double, const char *, int)'
120
+ try_extern 'void gr_inqtext(double, double, const char *, double *, double *)'
121
+ try_extern 'void gr_inqtextx(double, double, const char *, int, double *, double *)'
121
122
  try_extern 'void gr_fillarea(int, double *, double *)'
122
123
  try_extern 'void gr_cellarray(double, double, double, double,' \
123
124
  ' int, int, int, int, int, int, int *)'
@@ -183,15 +184,15 @@ module GR
183
184
  try_extern 'void gr_inqspace(double *, double *, int *, int *)'
184
185
  try_extern 'int gr_setscale(int)'
185
186
  try_extern 'void gr_inqscale(int *)'
186
- try_extern 'int gr_textext(double, double, char *)'
187
- try_extern 'void gr_inqtextext(double, double, char *, double *, double *)'
187
+ try_extern 'int gr_textext(double, double, const char *)'
188
+ try_extern 'void gr_inqtextext(double, double, const char *, double *, double *)'
188
189
  try_extern 'void gr_setscientificformat(int)'
189
190
  try_extern 'void gr_axes(double, double, double, double, int, int, double)'
190
191
  try_extern 'void gr_axeslbl(double, double, double, double, int, int, double,' \
191
192
  ' void (*)(double, double, const char *, double),' \
192
193
  ' void (*)(double, double, const char *, double))'
193
- try_extern 'void gr_axis(char, axis_t *)'
194
- try_extern 'void gr_drawaxis(char, axis_t *)'
194
+ try_extern 'void gr_axis(const char *, axis_t *)'
195
+ try_extern 'void gr_drawaxis(axis_t *)'
195
196
  try_extern 'void gr_drawaxes(axis_t *, axis_t *, int)'
196
197
  try_extern 'void gr_freeaxis(axis_t *)'
197
198
  try_extern 'void gr_grid(double, double, double, double, int, int)'
@@ -201,8 +202,8 @@ module GR
201
202
  try_extern 'void gr_polyline3d(int, double *, double *, double *)'
202
203
  try_extern 'void gr_polymarker3d(int, double *, double *, double *)'
203
204
  try_extern 'void gr_axes3d(double, double, double, double, double, double, int, int, int, double)'
204
- try_extern 'void gr_titles3d(char *, char *, char *)'
205
- try_extern 'void gr_settitles3d(char *, char *, char *)'
205
+ try_extern 'void gr_titles3d(const char *, const char *, const char *)'
206
+ try_extern 'void gr_settitles3d(const char *, const char *, const char *)'
206
207
  try_extern 'void gr_surface(int, int, double *, double *, double *, int)'
207
208
  try_extern 'void gr_contour(int, int, int, double *, double *, double *, double *, int)'
208
209
  try_extern 'void gr_contourf(int, int, int, double *, double *, double *, double *, int)'
@@ -221,8 +222,8 @@ module GR
221
222
  try_extern 'int gr_validaterange(double, double)'
222
223
  try_extern 'void gr_adjustlimits(double *, double *)'
223
224
  try_extern 'void gr_adjustrange(double *, double *)'
224
- try_extern 'void gr_beginprint(char *)'
225
- try_extern 'void gr_beginprintext(char *, char *, char *, char *)'
225
+ try_extern 'void gr_beginprint(const char *)'
226
+ try_extern 'void gr_beginprintext(const char *, const char *, const char *, const char *)'
226
227
  try_extern 'void gr_endprint(void)'
227
228
  try_extern 'void gr_ndctowc(double *, double *)'
228
229
  try_extern 'void gr_wctondc(double *, double *)'
@@ -235,24 +236,24 @@ module GR
235
236
  try_extern 'void gr_setarrowstyle(int)'
236
237
  try_extern 'void gr_setarrowsize(double)'
237
238
  try_extern 'void gr_drawarrow(double, double, double, double)'
238
- try_extern 'int gr_readimage(char *, int *, int *, int **)'
239
+ try_extern 'int gr_readimage(const char *, int *, int *, int **)'
239
240
  try_extern 'void gr_drawimage(double, double, double, double, int, int, int *, int)'
240
- try_extern 'int gr_importgraphics(char *)'
241
+ try_extern 'int gr_importgraphics(const char *)'
241
242
  try_extern 'void gr_setshadow(double, double, double)'
242
243
  try_extern 'void gr_settransparency(double)'
243
244
  try_extern 'void gr_inqtransparency(double *)'
244
245
  try_extern 'void gr_setcoordxform(double[3][2])'
245
- try_extern 'void gr_begingraphics(char *)'
246
+ try_extern 'void gr_begingraphics(const char *)'
246
247
  try_extern 'void gr_endgraphics(void)'
247
248
  try_extern 'char *gr_getgraphics(void)'
248
- try_extern 'int gr_drawgraphics(char *)'
249
+ try_extern 'int gr_drawgraphics(const char *)'
249
250
  try_extern 'int gr_startlistener(void)'
250
251
  try_extern 'int gr_inqgrplotport(void)'
251
252
  try_extern 'int gr_setgrplotport(int)'
252
- try_extern 'void gr_mathtex(double, double, char *)'
253
- try_extern 'void gr_inqmathtex(double, double, char *, double *, double *)'
254
- try_extern 'void gr_mathtex3d(double, double, double, char *, int)'
255
- try_extern 'void gr_inqmathtex3d(double, double, double, char *, int, double *, double *, double *, double *)'
253
+ try_extern 'void gr_mathtex(double, double, const char *)'
254
+ try_extern 'void gr_inqmathtex(double, double, const char *, double *, double *)'
255
+ try_extern 'void gr_mathtex3d(double, double, double, const char *, int)'
256
+ try_extern 'void gr_inqmathtex3d(double, double, double, const char *, int, double *, double *, double *, double *)'
256
257
  try_extern 'void gr_beginselection(int, int)'
257
258
  try_extern 'void gr_endselection(void)'
258
259
  try_extern 'void gr_setbboxcallback(int, void (*)(int, double, double, double, double),' \
@@ -276,7 +277,7 @@ module GR
276
277
  try_extern 'void gr_selectcontext(int)'
277
278
  try_extern 'void gr_destroycontext(int)'
278
279
  try_extern 'void gr_unselectcontext(void)'
279
- try_extern 'int gr_uselinespec(char *)'
280
+ try_extern 'int gr_uselinespec(const char *)'
280
281
  try_extern 'void gr_delaunay(int, const double *, const double *, int *, int **)'
281
282
  try_extern 'void gr_reducepoints(int, const double *, const double *, int, double *, double *)'
282
283
  try_extern 'void gr_trisurface(int, double *, double *, double *)'
@@ -319,11 +320,11 @@ module GR
319
320
  try_extern 'void gr_inqscalefactors3d(double *, double *, double *)'
320
321
  try_extern 'void gr_setspace3d(double, double, double, double)'
321
322
  try_extern 'void gr_inqspace3d(int *, double *, double *, double *, double *)'
322
- try_extern 'void gr_text3d(double, double, double, char *, int axis)'
323
- try_extern 'void gr_inqtext3d(double, double, double, char *, int axis, double *, double *)'
323
+ try_extern 'void gr_text3d(double, double, double, const char *, int axis)'
324
+ try_extern 'void gr_inqtext3d(double, double, double, const char *, int axis, double *, double *)'
324
325
  try_extern 'void gr_settextencoding(int)'
325
326
  try_extern 'void gr_inqtextencoding(int *)'
326
- try_extern 'void gr_loadfont(char *, int *)'
327
+ try_extern 'void gr_loadfont(const char *, int *)'
327
328
  try_extern 'void gr_setcallback(char *(*)(const char *))'
328
329
  try_extern 'void gr_setthreadnumber(int)'
329
330
  try_extern 'void gr_setpicturesizeforvolume(int, int)'
@@ -353,5 +354,11 @@ module GR
353
354
  try_extern 'void gr_settextoffset(double xoff, double yoff)'
354
355
  try_extern 'char *gr_ftoa(char *string, double value, format_reference_t *reference)'
355
356
  try_extern 'void gr_getformat(format_reference_t *result, double origin, double min, double max, double tick_width, int major)'
357
+ try_extern 'void gr_setcolorlimits(double, double)'
358
+ try_extern 'void gr_inqcolorlimits(double *, double *)'
359
+ try_extern 'void gr_setmetadata(const char *)'
360
+ try_extern 'char *gr_getmetadata(const char *)'
361
+ typealias 'FILE', 'void'
362
+ try_extern 'char *gr_getmetadatafromstream(FILE *fp)'
356
363
  end
357
364
  end
data/lib/gr.rb CHANGED
@@ -100,17 +100,18 @@ module GR
100
100
  end
101
101
 
102
102
  class GRAxis
103
- attr_accessor :min, :max, :tick, :org, :position,
103
+ attr_accessor :spec, :min, :max, :tick, :org, :position,
104
104
  :major_count, :num_ticks, :ticks,
105
105
  :tick_size, :tick_labels, :label_position,
106
106
  :draw_axis_line, :label_orientation
107
107
 
108
- def initialize(min: Float::NAN, max: Float::NAN, tick: Float::NAN,
108
+ def initialize(spec: nil, min: Float::NAN, max: Float::NAN, tick: Float::NAN,
109
109
  org: Float::NAN, position: Float::NAN,
110
110
  major_count: 1, num_ticks: 0, ticks: nil,
111
111
  tick_size: Float::NAN, tick_labels: nil,
112
112
  label_position: Float::NAN,
113
113
  draw_axis_line: 1, label_orientation: 0)
114
+ @spec = spec
114
115
  @min = min
115
116
  @max = max
116
117
  @tick = tick
@@ -1158,34 +1159,35 @@ module GR
1158
1159
 
1159
1160
  alias axes2d axes
1160
1161
 
1161
- def axis(option, **opts)
1162
+ def axis(spec, **opts)
1163
+ spec = spec.to_s
1164
+ raise ArgumentError, 'axis spec must not be empty' if spec.empty?
1165
+
1162
1166
  axis = GRAxis.new
1163
1167
  opts.each do |k, v|
1164
1168
  setter = "#{k}="
1165
1169
  axis.public_send(setter, v) if axis.respond_to?(setter)
1166
1170
  end
1167
1171
 
1168
- c_axis = __axis_to_c_axis(axis)
1169
-
1170
- str = option.to_s
1171
- raise ArgumentError, "axis option must be a single character, got #{str.inspect}" unless str.length == 1
1172
-
1173
- FFI.gr_axis(str.ord, c_axis)
1174
- __axis_from_c_axis(c_axis)
1172
+ c_axis = __axis_to_c_axis(axis, for_generation: true)
1173
+ begin
1174
+ FFI.gr_axis(spec, c_axis)
1175
+ __axis_from_c_axis(c_axis)
1176
+ ensure
1177
+ FFI.gr_freeaxis(c_axis)
1178
+ end
1175
1179
  end
1176
1180
 
1177
- def drawaxis(option, axis)
1178
- c_axis = __axis_to_c_axis(axis)
1179
-
1180
- str = option.to_s
1181
- raise ArgumentError, "axis option must be a single character, got #{str.inspect}" unless str.length == 1
1181
+ def drawaxis(axis)
1182
+ raise ArgumentError, 'axis spec must not be empty' if axis.spec.to_s.empty?
1182
1183
 
1183
- FFI.gr_drawaxis(str.ord, c_axis)
1184
+ c_axis = __axis_to_c_axis(axis)
1185
+ FFI.gr_drawaxis(c_axis)
1184
1186
  end
1185
1187
 
1186
1188
  def drawaxes(x_axis = nil, y_axis = nil, option = 1)
1187
- c_x = x_axis && __axis_to_c_axis(x_axis)
1188
- c_y = y_axis && __axis_to_c_axis(y_axis)
1189
+ c_x = x_axis && __axis_to_c_axis(x_axis, default_spec: 'X')
1190
+ c_y = y_axis && __axis_to_c_axis(y_axis, default_spec: 'Y')
1189
1191
  FFI.gr_drawaxes(c_x&.to_ptr, c_y&.to_ptr, option)
1190
1192
  end
1191
1193
 
@@ -2557,6 +2559,17 @@ module GR
2557
2559
  end
2558
2560
  end
2559
2561
 
2562
+ def inqcolorlimits
2563
+ inquiry %i[double double] do |*pts|
2564
+ super(*pts)
2565
+ end
2566
+ end
2567
+
2568
+ def getmetadata(path)
2569
+ metadata = super
2570
+ metadata.to_s unless metadata.null?
2571
+ end
2572
+
2560
2573
  def getformat(origin, min, max, tick_width, major)
2561
2574
  ref = FFI::FormatReference.malloc
2562
2575
  super(ref, origin, min, max, tick_width, major)
@@ -2572,11 +2585,22 @@ module GR
2572
2585
  private
2573
2586
 
2574
2587
  # Convert high-level GRAxis into low-level FFI::Axis
2575
- def __axis_to_c_axis(axis)
2588
+ def __axis_to_c_axis(axis, for_generation: false, default_spec: nil)
2576
2589
  c_axis = FFI::Axis.malloc
2577
2590
  # Keep references to allocated memory to prevent GC
2578
2591
  memory_refs = []
2579
2592
 
2593
+ spec = axis.spec || default_spec
2594
+ if !for_generation && spec
2595
+ spec_string = "#{spec}\0"
2596
+ spec_ptr = Fiddle::Pointer.malloc(spec_string.bytesize, Fiddle::RUBY_FREE)
2597
+ spec_ptr[0, spec_string.bytesize] = spec_string
2598
+ memory_refs << spec_ptr
2599
+ c_axis.spec = spec_ptr.to_i
2600
+ else
2601
+ c_axis.spec = 0
2602
+ end
2603
+
2580
2604
  c_axis.min_val = axis.min
2581
2605
  c_axis.max_val = axis.max
2582
2606
  c_axis.tick = axis.tick
@@ -2585,7 +2609,7 @@ module GR
2585
2609
  c_axis.major_count = axis.major_count
2586
2610
 
2587
2611
  # ticks
2588
- if axis.ticks && !axis.ticks.empty?
2612
+ if !for_generation && axis.ticks && !axis.ticks.empty?
2589
2613
  count = axis.ticks.size
2590
2614
  mem = Fiddle::Pointer.malloc(FFI::Tick.size * count, Fiddle::RUBY_FREE)
2591
2615
  memory_refs << mem
@@ -2604,7 +2628,7 @@ module GR
2604
2628
  c_axis.tick_size = axis.tick_size
2605
2629
 
2606
2630
  # tick labels
2607
- if axis.tick_labels && !axis.tick_labels.empty?
2631
+ if !for_generation && axis.tick_labels && !axis.tick_labels.empty?
2608
2632
  count = axis.tick_labels.size
2609
2633
  mem = Fiddle::Pointer.malloc(FFI::TickLabel.size * count, Fiddle::RUBY_FREE)
2610
2634
  memory_refs << mem
@@ -2612,7 +2636,7 @@ module GR
2612
2636
  lbl = FFI::TickLabel.new(mem + i * FFI::TickLabel.size)
2613
2637
  lbl.tick = tl.tick
2614
2638
  # Allocate persistent memory for label string
2615
- label_str = tl.label.to_s + "\0"
2639
+ label_str = "#{tl.label}\0"
2616
2640
  label_ptr = Fiddle::Pointer.malloc(label_str.bytesize, Fiddle::RUBY_FREE)
2617
2641
  memory_refs << label_ptr
2618
2642
  label_ptr[0, label_str.bytesize] = label_str
@@ -2638,6 +2662,9 @@ module GR
2638
2662
 
2639
2663
  # Convert low-level FFI::Axis back into high-level GRAxis
2640
2664
  def __axis_from_c_axis(c_axis)
2665
+ spec_ptr = Fiddle::Pointer[c_axis.spec]
2666
+ spec = spec_ptr.to_s unless spec_ptr.null?
2667
+
2641
2668
  ticks = if c_axis.num_ticks.positive? && !Fiddle::Pointer[c_axis.ticks].null?
2642
2669
  Array.new(c_axis.num_ticks) do |i|
2643
2670
  tick = FFI::Tick.new(c_axis.ticks + i * FFI::Tick.size)
@@ -2660,6 +2687,7 @@ module GR
2660
2687
  end
2661
2688
 
2662
2689
  GRAxis.new(
2690
+ spec: spec,
2663
2691
  min: c_axis.min_val,
2664
2692
  max: c_axis.max_val,
2665
2693
  tick: c_axis.tick,
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module GRCommons
4
- VERSION = '0.73.24.0'
4
+ VERSION = '0.73.27.0'
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ruby-gr
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.73.24.0
4
+ version: 0.73.27.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - kojix2
@@ -9,6 +9,20 @@ bindir: bin
9
9
  cert_chain: []
10
10
  date: 1980-01-02 00:00:00.000000000 Z
11
11
  dependencies:
12
+ - !ruby/object:Gem::Dependency
13
+ name: base64
14
+ requirement: !ruby/object:Gem::Requirement
15
+ requirements:
16
+ - - ">="
17
+ - !ruby/object:Gem::Version
18
+ version: '0'
19
+ type: :runtime
20
+ prerelease: false
21
+ version_requirements: !ruby/object:Gem::Requirement
22
+ requirements:
23
+ - - ">="
24
+ - !ruby/object:Gem::Version
25
+ version: '0'
12
26
  - !ruby/object:Gem::Dependency
13
27
  name: fiddle
14
28
  requirement: !ruby/object:Gem::Requirement
@@ -99,7 +113,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
99
113
  - !ruby/object:Gem::Version
100
114
  version: '0'
101
115
  requirements: []
102
- rubygems_version: 4.0.10
116
+ rubygems_version: 4.0.21
103
117
  specification_version: 4
104
118
  summary: GR for Ruby
105
119
  test_files: []