rays 0.1.29 → 0.1.31

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.
Files changed (52) hide show
  1. checksums.yaml +4 -4
  2. data/.doc/ext/rays/bitmap.cpp +1 -1
  3. data/.doc/ext/rays/bounds.cpp +1 -1
  4. data/.doc/ext/rays/camera.cpp +1 -1
  5. data/.doc/ext/rays/color.cpp +1 -1
  6. data/.doc/ext/rays/color_space.cpp +1 -1
  7. data/.doc/ext/rays/exception.cpp +1 -1
  8. data/.doc/ext/rays/font.cpp +1 -1
  9. data/.doc/ext/rays/image.cpp +1 -1
  10. data/.doc/ext/rays/matrix.cpp +1 -1
  11. data/.doc/ext/rays/native.cpp +35 -35
  12. data/.doc/ext/rays/noise.cpp +1 -1
  13. data/.doc/ext/rays/painter.cpp +1 -1
  14. data/.doc/ext/rays/point.cpp +1 -1
  15. data/.doc/ext/rays/polygon.cpp +1 -1
  16. data/.doc/ext/rays/polygon_line.cpp +1 -1
  17. data/.doc/ext/rays/polyline.cpp +1 -1
  18. data/.doc/ext/rays/shader.cpp +1 -1
  19. data/.github/workflows/release.yml +34 -0
  20. data/.github/workflows/tag.yml +35 -0
  21. data/.github/workflows/test.yml +32 -0
  22. data/.github/workflows/utils.rb +47 -0
  23. data/ChangeLog.md +20 -0
  24. data/Rakefile +4 -4
  25. data/VERSION +1 -1
  26. data/ext/rays/bitmap.cpp +1 -1
  27. data/ext/rays/bounds.cpp +1 -1
  28. data/ext/rays/camera.cpp +1 -1
  29. data/ext/rays/color.cpp +1 -1
  30. data/ext/rays/color_space.cpp +1 -1
  31. data/ext/rays/exception.cpp +1 -1
  32. data/ext/rays/extconf.rb +4 -4
  33. data/ext/rays/font.cpp +1 -1
  34. data/ext/rays/image.cpp +1 -1
  35. data/ext/rays/matrix.cpp +1 -1
  36. data/ext/rays/native.cpp +35 -35
  37. data/ext/rays/noise.cpp +1 -1
  38. data/ext/rays/painter.cpp +1 -1
  39. data/ext/rays/point.cpp +1 -1
  40. data/ext/rays/polygon.cpp +1 -1
  41. data/ext/rays/polygon_line.cpp +1 -1
  42. data/ext/rays/polyline.cpp +1 -1
  43. data/ext/rays/shader.cpp +1 -1
  44. data/lib/rays/{module.rb → extension.rb} +3 -3
  45. data/lib/rays.rb +1 -1
  46. data/rays.gemspec +11 -8
  47. data/src/opengl.cpp +2 -3
  48. data/src/painter.cpp +53 -91
  49. data/src/shader.cpp +4 -4
  50. data/src/texture.cpp +11 -6
  51. data/test/helper.rb +1 -1
  52. metadata +42 -9
data/ext/rays/painter.cpp CHANGED
@@ -656,7 +656,7 @@ RUCY_END
656
656
  static Class cPainter;
657
657
 
658
658
  void
659
- Init_painter ()
659
+ Init_rays_painter ()
660
660
  {
661
661
  Module mRays = define_module("Rays");
662
662
 
data/ext/rays/point.cpp CHANGED
@@ -272,7 +272,7 @@ RUCY_END
272
272
  static Class cPoint;
273
273
 
274
274
  void
275
- Init_point ()
275
+ Init_rays_point ()
276
276
  {
277
277
  Module mRays = define_module("Rays");
278
278
 
data/ext/rays/polygon.cpp CHANGED
@@ -249,7 +249,7 @@ RUCY_END
249
249
  static Class cPolygon;
250
250
 
251
251
  void
252
- Init_polygon ()
252
+ Init_rays_polygon ()
253
253
  {
254
254
  Module mRays = define_module("Rays");
255
255
 
@@ -42,7 +42,7 @@ RUCY_END
42
42
  static Class cPolygonLine;
43
43
 
44
44
  void
45
- Init_polygon_line ()
45
+ Init_rays_polygon_line ()
46
46
  {
47
47
  Module mRays = define_module("Rays");
48
48
  Class cPolygon = mRays.define_class("Polygon");
@@ -114,7 +114,7 @@ RUCY_END
114
114
  static Class cPolyline;
115
115
 
116
116
  void
117
- Init_polyline ()
117
+ Init_rays_polyline ()
118
118
  {
119
119
  Module mRays = define_module("Rays");
120
120
 
data/ext/rays/shader.cpp CHANGED
@@ -176,7 +176,7 @@ RUCY_END
176
176
  static Class cShader;
177
177
 
178
178
  void
179
- Init_shader ()
179
+ Init_rays_shader ()
180
180
  {
181
181
  Module mRays = define_module("Rays");
182
182
 
@@ -4,7 +4,7 @@
4
4
  module Rays
5
5
 
6
6
 
7
- module Module
7
+ module Extension
8
8
 
9
9
  module_function
10
10
 
@@ -13,7 +13,7 @@ module Rays
13
13
  end
14
14
 
15
15
  def version()
16
- open(root_dir 'VERSION') {|f| f.readline.chomp}
16
+ File.read(root_dir 'VERSION')[/[\d\.]+/]
17
17
  end
18
18
 
19
19
  def root_dir(path = '')
@@ -28,7 +28,7 @@ module Rays
28
28
  root_dir 'lib'
29
29
  end
30
30
 
31
- end# Module
31
+ end# Extension
32
32
 
33
33
 
34
34
  end# Rays
data/lib/rays.rb CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
 
4
4
  require 'rays/autoinit'
5
- require 'rays/module'
5
+ require 'rays/extension'
6
6
 
7
7
  require 'rays/point'
8
8
  require 'rays/bounds'
data/rays.gemspec CHANGED
@@ -1,10 +1,10 @@
1
1
  # -*- mode: ruby; coding: utf-8 -*-
2
2
 
3
3
 
4
- File.expand_path('../lib', __FILE__)
4
+ File.expand_path('lib', __dir__)
5
5
  .tap {|s| $:.unshift s if !$:.include?(s) && File.directory?(s)}
6
6
 
7
- require 'rays/module'
7
+ require 'rays/extension'
8
8
 
9
9
 
10
10
  Gem::Specification.new do |s|
@@ -12,24 +12,27 @@ Gem::Specification.new do |s|
12
12
  patterns.map {|pat| Dir.glob(pat).to_a}.flatten
13
13
  end
14
14
 
15
- mod = Rays::Module
16
- name = mod.name.downcase
15
+ ext = Rays::Extension
16
+ name = ext.name.downcase
17
17
  rdocs = glob.call *%w[README .doc/ext/**/*.cpp]
18
18
 
19
19
  s.name = name
20
20
  s.summary = 'A Drawing Engine using OpenGL.'
21
21
  s.description = 'This library helps you to develop graphics application with OpenGL.'
22
- s.version = mod.version
22
+ s.version = ext.version
23
23
 
24
24
  s.authors = %w[xordog]
25
25
  s.email = 'xordog@gmail.com'
26
26
  s.homepage = "https://github.com/xord/rays"
27
27
 
28
28
  s.platform = Gem::Platform::RUBY
29
- s.required_ruby_version = '>= 2.6.0'
29
+ s.required_ruby_version = '>= 2.7.0'
30
30
 
31
- s.add_runtime_dependency 'xot', '~> 0.1.29'
32
- s.add_runtime_dependency 'rucy', '~> 0.1.29'
31
+ s.add_runtime_dependency 'xot', '~> 0.1.31'
32
+ s.add_runtime_dependency 'rucy', '~> 0.1.31'
33
+
34
+ s.add_development_dependency 'rake'
35
+ s.add_development_dependency 'test-unit'
33
36
 
34
37
  s.files = `git ls-files`.split $/
35
38
  s.executables = s.files.grep(%r{^bin/}) {|f| File.basename f}
data/src/opengl.cpp CHANGED
@@ -24,7 +24,7 @@ namespace Rays
24
24
  case GL_INVALID_VALUE: return "GL_INVALID_VALUE";
25
25
  case GL_INVALID_OPERATION: return "GL_INVALID_OPERATION";
26
26
  case GL_OUT_OF_MEMORY: return "GL_OUT_OF_MEMORY";
27
- #if !defined(GL_VERSION_3_0)
27
+ #if !defined(GL_VERSION_3_0) && !defined(GL_ES_VERSION_2_0)
28
28
  case GL_STACK_OVERFLOW: return "GL_STACK_OVERFLOW";
29
29
  case GL_STACK_UNDERFLOW: return "GL_STACK_UNDERFLOW";
30
30
  case GL_INVALID_FRAMEBUFFER_OPERATION: return "GL_INVALID_FRAMEBUFFER_OPERATION";
@@ -45,11 +45,10 @@ namespace Rays
45
45
  void
46
46
  OpenGL_check_error (const char* file, int line, const char* format, ...)
47
47
  {
48
- XOT_STRINGF(format, s);
49
-
50
48
  GLenum e = glGetError();
51
49
  if (e != GL_NO_ERROR)
52
50
  {
51
+ XOT_STRINGF(format, s);
53
52
  opengl_error(
54
53
  file, line,
55
54
  "OpenGL error %s: %s", get_error_name(e).c_str(), s.c_str());
data/src/painter.cpp CHANGED
@@ -329,16 +329,18 @@ namespace Rays
329
329
 
330
330
  const auto& names = Shader_get_builtin_variable_names(shader);
331
331
  apply_builtin_uniforms(*program, names, texinfo);
332
- apply_attributes(*program, names, points, npoints, texcoords, color, [&]() {
333
- draw_indices(mode, indices, nindices, npoints);
334
- });
332
+ apply_attributes(*program, names, points, npoints, texcoords, color);
333
+ draw_indices(mode, indices, nindices, npoints);
334
+ cleanup();
335
335
 
336
336
  ShaderProgram_deactivate();
337
337
  }
338
338
 
339
339
  private:
340
340
 
341
- typedef std::vector<GLint> LocationList;
341
+ std::vector<GLint> locations;
342
+
343
+ std::vector<GLuint> buffers;
342
344
 
343
345
  void apply_builtin_uniforms (
344
346
  const ShaderProgram& program, const ShaderBuiltinVariableNames& names,
@@ -406,21 +408,16 @@ namespace Rays
406
408
 
407
409
  void apply_attributes (
408
410
  const ShaderProgram& program, const ShaderBuiltinVariableNames& names,
409
- const Coord3* points, size_t npoints, const Coord3* texcoords, const Color& color,
410
- std::function<void()> draw_fun)
411
+ const Coord3* points, size_t npoints, const Coord3* texcoords,
412
+ const Color& color)
411
413
  {
412
414
  assert(points && npoints > 0);
413
415
 
414
- std::vector<GLuint> buffers;
415
- LocationList locations;
416
-
417
416
  apply_attribute(
418
- &buffers, &locations,
419
417
  program, names.attribute_position_names,
420
418
  points, npoints);
421
419
 
422
420
  apply_attribute(
423
- &buffers, &locations,
424
421
  program, names.attribute_texcoord_names,
425
422
  texcoords ? texcoords : points, npoints);
426
423
 
@@ -429,54 +426,44 @@ namespace Rays
429
426
  // with specific glsl 'attribute' name.
430
427
  std::vector<Color> colors(npoints, color);
431
428
  apply_attribute(
432
- &buffers, &locations,
433
429
  program, names.attribute_color_names,
434
430
  (const Coord4*) &colors[0], npoints);
435
431
  #else
436
432
  for (const auto& name : names.attribute_color_names)
437
433
  {
438
- apply_attribute(NULL, program, name, [&](GLint loc) {
434
+ apply_attribute(program, name, [&](GLint loc) {
439
435
  glVertexAttrib4fv(loc, color.array);
440
436
  });
441
437
  }
442
438
  #endif
443
-
444
- draw_fun();
445
-
446
- for (auto loc : locations)
447
- {
448
- glDisableVertexAttribArray(loc);
449
- OpenGL_check_error(__FILE__, __LINE__);
450
- }
451
-
452
- glDeleteBuffers((GLsizei) buffers.size(), &buffers[0]);
453
- OpenGL_check_error(__FILE__, __LINE__);
454
439
  }
455
440
 
456
441
  template <typename CoordN>
457
442
  void apply_attribute(
458
- auto* buffers, LocationList* locations,
459
443
  const ShaderProgram& program, const auto& names,
460
444
  const CoordN* values, size_t nvalues)
461
445
  {
462
- assert(buffers);
463
-
464
446
  GLuint buffer = 0;
465
447
  for (const auto& name : names)
466
448
  {
467
- apply_attribute(locations, program, name, [&](GLint loc) {
449
+ #ifndef IOS
468
450
  if (buffer == 0)
469
451
  {
470
- buffer = create_and_bind_coordn_buffer(values, nvalues);
471
- buffers->push_back(buffer);
452
+ buffer = create_and_bind_buffer(
453
+ GL_ARRAY_BUFFER, values, sizeof(CoordN) * nvalues);
454
+ values = 0;
472
455
  }
456
+ #endif
473
457
 
458
+ apply_attribute(program, name, [&](GLint loc) {
474
459
  glEnableVertexAttribArray(loc);
475
- OpenGL_check_error(__FILE__, __LINE__, "loc: %d %s\n", loc, name.c_str());
460
+ OpenGL_check_error(
461
+ __FILE__, __LINE__, "loc: %d %s\n", loc, name.c_str());
476
462
 
477
463
  glVertexAttribPointer(
478
- loc, CoordN::SIZE, get_gl_type<coord>(),
479
- GL_FALSE, sizeof(CoordN), NULL);
464
+ loc, CoordN::SIZE, get_gl_type<coord>(), GL_FALSE, 0, values);
465
+
466
+ locations.push_back(loc);
480
467
  });
481
468
  }
482
469
 
@@ -485,26 +472,24 @@ namespace Rays
485
472
  }
486
473
 
487
474
  void apply_attribute (
488
- LocationList* locations, const ShaderProgram& program, const char* name,
489
- std::function<void(GLint)> apply)
475
+ const ShaderProgram& program, const char* name,
476
+ std::function<void(GLint)> apply_fun)
490
477
  {
491
478
  GLint loc = glGetAttribLocation(program.id(), name);
492
479
  if (loc < 0) return;
493
480
 
494
- apply(loc);
481
+ apply_fun(loc);
495
482
  OpenGL_check_error(__FILE__, __LINE__);
496
-
497
- if (locations) locations->push_back(loc);
498
483
  }
499
484
 
500
485
  void apply_uniform (
501
486
  const ShaderProgram& program, const char* name,
502
- std::function<void(GLint)> apply)
487
+ std::function<void(GLint)> apply_fun)
503
488
  {
504
489
  GLint loc = glGetUniformLocation(program.id(), name);
505
490
  if (loc < 0) return;
506
491
 
507
- apply(loc);
492
+ apply_fun(loc);
508
493
  OpenGL_check_error(__FILE__, __LINE__);
509
494
  }
510
495
 
@@ -518,75 +503,52 @@ namespace Rays
518
503
  nindices = npoints;
519
504
  }
520
505
 
521
- GLuint buffer = create_buffer();
522
- size_t size = sizeof(uint) * nindices;
523
-
524
- glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, buffer);
525
- OpenGL_check_error(__FILE__, __LINE__);
526
-
527
- glBufferData(GL_ELEMENT_ARRAY_BUFFER, size, indices, GL_STREAM_DRAW);
528
- OpenGL_check_error(__FILE__, __LINE__);
506
+ #ifdef IOS
507
+ glDrawElements(mode, (GLsizei) nindices, GL_UNSIGNED_INT, indices);
508
+ OpenGL_check_error(__FILE__, __LINE__);
509
+ #else
510
+ create_and_bind_buffer(
511
+ GL_ELEMENT_ARRAY_BUFFER, indices, sizeof(uint) * nindices);
529
512
 
530
- glDrawElements(mode, (GLsizei) nindices, GL_UNSIGNED_INT, NULL);
531
- OpenGL_check_error(__FILE__, __LINE__);
513
+ glDrawElements(mode, (GLsizei) nindices, GL_UNSIGNED_INT, 0);
514
+ OpenGL_check_error(__FILE__, __LINE__);
532
515
 
533
- glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0);
534
- OpenGL_check_error(__FILE__, __LINE__);
516
+ glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0);
517
+ OpenGL_check_error(__FILE__, __LINE__);
518
+ #endif
535
519
  }
536
520
 
537
- template <typename CoordN>
538
- GLuint create_and_bind_coordn_buffer (const CoordN* values, size_t nvalues)
521
+ GLuint create_and_bind_buffer (
522
+ GLenum target, const void* data, GLsizeiptr size)
539
523
  {
540
- GLuint id = create_buffer();
541
- size_t size = sizeof(CoordN) * nvalues;
542
-
543
- glBindBuffer(GL_ARRAY_BUFFER, id);
524
+ GLuint id = 0;
525
+ glGenBuffers(1, &id);
544
526
  OpenGL_check_error(__FILE__, __LINE__);
545
527
 
546
- glBufferData(GL_ARRAY_BUFFER, size, values, GL_STREAM_DRAW);
547
- OpenGL_check_error(__FILE__, __LINE__);
528
+ buffers.push_back(id);
548
529
 
549
- return id;
550
- }
530
+ glBindBuffer(target, id);
531
+ OpenGL_check_error(__FILE__, __LINE__);
551
532
 
552
- GLuint create_buffer ()
553
- {
554
- GLuint id;
555
- glGenBuffers(1, &id);
533
+ glBufferData(target, size, data, GL_STREAM_DRAW);
556
534
  OpenGL_check_error(__FILE__, __LINE__);
535
+
557
536
  return id;
558
537
  }
559
538
 
560
- void activate_texture (const Texture* texture)
539
+ void cleanup ()
561
540
  {
562
- if (!texture)
541
+ for (auto loc : locations)
563
542
  {
564
- glDisable(GL_TEXTURE_2D);
565
- return;
543
+ glDisableVertexAttribArray(loc);
544
+ OpenGL_check_error(__FILE__, __LINE__);
566
545
  }
567
546
 
568
- if (!*texture)
569
- argument_error(__FILE__, __LINE__, "invalid texture.");
570
-
571
- GLuint id = texture->id();
572
- if (id != get_current_texture_id())
573
- glBindTexture(GL_TEXTURE_2D, id);
574
-
575
- glEnable(GL_TEXTURE_2D);
576
- }
577
-
578
- GLuint get_current_texture_id ()
579
- {
580
- GLint id = 0;
581
- glGetIntegerv(GL_TEXTURE_BINDING_2D, &id);
582
- return (GLuint) id;
583
- }
584
-
585
- void deactivate_texture (const Texture* texture)
586
- {
587
- if (!texture) return;
547
+ glDeleteBuffers((GLsizei) buffers.size(), &buffers[0]);
548
+ OpenGL_check_error(__FILE__, __LINE__);
588
549
 
589
- glDisable(GL_TEXTURE_2D);
550
+ locations.clear();
551
+ buffers.clear();
590
552
  }
591
553
 
592
554
  };// Painter::Data
data/src/shader.cpp CHANGED
@@ -67,7 +67,7 @@ namespace Rays
67
67
  ShaderSource make_fragment_shader_source (const char* source)
68
68
  {
69
69
  #ifdef IOS
70
- static const String SHARED_HEADER = "precision mediump float;\n";
70
+ static const String SHARED_HEADER = "precision highp float;\n";
71
71
  static const std::regex PRECISION(R"(^\s*precision\s+\w+p\s+float\s*;)");
72
72
 
73
73
  if (!std::regex_search(source, PRECISION))
@@ -128,7 +128,7 @@ namespace Rays
128
128
  "void main ()\n"
129
129
  "{\n"
130
130
  " vec4 col__ = texture2D(" + U_TEXTURE + ", " + V_TEXCOORD + ".xy);\n"
131
- #ifdef OSX
131
+ #if defined(OSX) || defined(IOS)
132
132
  // restore premultiplied rgb values
133
133
  " vec3 rgb__ = col__.a != 0.0 ? col__.rgb / col__.a : col__.rgb;\n"
134
134
  " gl_FragColor = " + V_COLOR + " * vec4(rgb__, col__.a);\n"
@@ -386,8 +386,8 @@ namespace Rays
386
386
  "uniform mat4 " + U_TEXCOORD_MATRIX + ";\n"
387
387
  "void main ()\n"
388
388
  "{\n"
389
- " vec4 pos__ = vec4(" + A_POSITION + ", 1.0);\n"
390
- " vec4 texcoord__ = vec4(" + A_TEXCOORD + ", 1.0);\n"
389
+ " vec4 pos__ = vec4(" + A_POSITION + ", 1.0);\n"
390
+ " vec4 texcoord__ = vec4(" + A_TEXCOORD + ", 1.0);\n"
391
391
  " " + V_POSITION + " = pos__;\n"
392
392
  " " + V_TEXCOORD + " = " + U_TEXCOORD_MATRIX + " * texcoord__;\n"
393
393
  " " + V_COLOR + " = " + A_COLOR + ";\n"
data/src/texture.cpp CHANGED
@@ -181,7 +181,7 @@ namespace Rays
181
181
  static void
182
182
  setup_texture (
183
183
  Texture::Data* self, int width, int height, const ColorSpace& cs,
184
- const Bitmap* bitmap = NULL)
184
+ const Bitmap* bitmap = NULL, bool npot = false)
185
185
  {
186
186
  assert(self && !self->has_id());
187
187
 
@@ -205,11 +205,16 @@ namespace Rays
205
205
  GLenum format, type;
206
206
  ColorSpace_get_gl_format_and_type(&format, &type, cs);
207
207
 
208
- // create non-power-of-two texture
209
- glTexImage2D(
210
- GL_TEXTURE_2D, 0, format, width, height, 0, format, type,
211
- bitmap ? bitmap->pixels() : NULL);
212
- if (OpenGL_has_error())
208
+ if (npot)
209
+ {
210
+ // create non-power-of-two texture
211
+ glTexImage2D(
212
+ GL_TEXTURE_2D, 0, format, width, height, 0, format, type,
213
+ bitmap ? bitmap->pixels() : NULL);
214
+ npot = OpenGL_has_error();
215
+ }
216
+
217
+ if (!npot)
213
218
  {
214
219
  // create power-of-two texture
215
220
  int width_pow2 = min_pow2(width);
data/test/helper.rb CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
 
4
4
  %w[../xot ../rucy .]
5
- .map {|s| File.expand_path "../../#{s}/lib", __FILE__}
5
+ .map {|s| File.expand_path "../#{s}/lib", __dir__}
6
6
  .each {|s| $:.unshift s if !$:.include?(s) && File.directory?(s)}
7
7
 
8
8
  require 'test/unit'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rays
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.29
4
+ version: 0.1.31
5
5
  platform: ruby
6
6
  authors:
7
7
  - xordog
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-11-13 00:00:00.000000000 Z
11
+ date: 2023-02-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: xot
@@ -16,28 +16,56 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: 0.1.29
19
+ version: 0.1.31
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: 0.1.29
26
+ version: 0.1.31
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rucy
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: 0.1.29
33
+ version: 0.1.31
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: 0.1.29
40
+ version: 0.1.31
41
+ - !ruby/object:Gem::Dependency
42
+ name: rake
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: test-unit
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
41
69
  description: This library helps you to develop graphics application with OpenGL.
42
70
  email: xordog@gmail.com
43
71
  executables: []
@@ -83,6 +111,11 @@ files:
83
111
  - ".doc/ext/rays/polyline.cpp"
84
112
  - ".doc/ext/rays/rays.cpp"
85
113
  - ".doc/ext/rays/shader.cpp"
114
+ - ".github/workflows/release.yml"
115
+ - ".github/workflows/tag.yml"
116
+ - ".github/workflows/test.yml"
117
+ - ".github/workflows/utils.rb"
118
+ - ChangeLog.md
86
119
  - LICENSE
87
120
  - README.md
88
121
  - Rakefile
@@ -154,10 +187,10 @@ files:
154
187
  - lib/rays/color.rb
155
188
  - lib/rays/color_space.rb
156
189
  - lib/rays/ext.rb
190
+ - lib/rays/extension.rb
157
191
  - lib/rays/font.rb
158
192
  - lib/rays/image.rb
159
193
  - lib/rays/matrix.rb
160
- - lib/rays/module.rb
161
194
  - lib/rays/painter.rb
162
195
  - lib/rays/point.rb
163
196
  - lib/rays/polygon.rb
@@ -250,14 +283,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
250
283
  requirements:
251
284
  - - ">="
252
285
  - !ruby/object:Gem::Version
253
- version: 2.6.0
286
+ version: 2.7.0
254
287
  required_rubygems_version: !ruby/object:Gem::Requirement
255
288
  requirements:
256
289
  - - ">="
257
290
  - !ruby/object:Gem::Version
258
291
  version: '0'
259
292
  requirements: []
260
- rubygems_version: 3.2.33
293
+ rubygems_version: 3.4.6
261
294
  signing_key:
262
295
  specification_version: 4
263
296
  summary: A Drawing Engine using OpenGL.