graphics 1.0.1 → 1.1.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 14bae949dfda33879d99ceed119be4186210da6debdd9ea5b9c70e9cfb2597c8
4
- data.tar.gz: 594f95ce9bb7ebe278d3809aba41fb87a67e222cd1c002e8709e583f5c8cc6cd
3
+ metadata.gz: 7ce1c375e7fe1c41126f6ef3b87becdb997368618ab2a9bfab749edd488c8377
4
+ data.tar.gz: 2e05e558f38241be80074f7f7ac0f2518efddcde1cd333d3cf772980bab825cf
5
5
  SHA512:
6
- metadata.gz: 2af7d58cd09195410f4afe52e56be541a56098e8f53ae5ebc4966b1375b33df765234bfc8dfc378ed779be3f31208417a7ed59eec8e58be6231d3d3915347e91
7
- data.tar.gz: c901a48fa9a250c8ae16b6ea552548b646488f6d6477f04c55d2664f209a00842d08f2bddf747b21ed7acef140f2691bd36824819e3f9c4570ebc7dcf1a4bb0f
6
+ metadata.gz: 4ebf2dbe2d78397410bfb00769266c797a3b5da1d14c667eefc8b3396c81142c68c20fdabdbe776c85f843f8f020374f5015faa1b72f6dee9b483ea4c3dd8610
7
+ data.tar.gz: 0faaf2725fa511e98d2ee3f02b7e1d52d157ba626b6e16404dc6b872f2b4793c55ae1f965bf2779108bc3a72b25a8bc95b0081d42cd65246d11ade89dee9a9c5
checksums.yaml.gz.sig CHANGED
Binary file
data/History.rdoc CHANGED
@@ -1,3 +1,30 @@
1
+ === 1.1.1 / 2024-08-27
2
+
3
+ * 1 minor enhancement:
4
+
5
+ * Add basic package manager detection to deps script. (havenwood)
6
+
7
+ * 3 bug fixes:
8
+
9
+ * Fixed home link in readme/gemspec.
10
+ * Minor fix in ext/sdl/sge/sge_surface.cpp.
11
+ * Reorder installation instructions & format as code. (havenwood)
12
+
13
+ === 1.1.0 / 2023-07-26
14
+
15
+ * 3 minor enhancements:
16
+
17
+ * Added anti-aliasing to polygon. Want to add filling at some point.
18
+ * Requiring ruby 2.7+. Too many changes to ruby internals to try to maintain.
19
+ * polygon now takes an array of points.
20
+
21
+ * 4 bug fixes:
22
+
23
+ * Fixed a bunch of compiler warnings for ruby struct changes.
24
+ * Fixed font lookup on linux. (presidentbeef)
25
+ * Fixed graphics_setup.sh for obsolete build flag on sdl2_image. (NickSchimek)
26
+ * ruby 3.2: Fixed warning from ruby headers by explicitly removing alloc funcs.
27
+
1
28
  === 1.0.1 / 2018-11-14
2
29
 
3
30
  * 2 bug fixes:
data/README.rdoc CHANGED
@@ -1,6 +1,6 @@
1
1
  = graphics
2
2
 
3
- home :: https://github.com/zenspider/graphics
3
+ home :: https://github.com/seattlerb/graphics
4
4
  rdoc :: http://docs.seattlerb.org/graphics
5
5
 
6
6
  == DESCRIPTION:
@@ -86,8 +86,8 @@ up-to-date versions.
86
86
 
87
87
  == INSTALL:
88
88
 
89
- * sudo gem install graphics
90
- * `curl -L https://tinyurl.com/graphics-setup | bash`
89
+ curl -L https://tinyurl.com/graphics-setup | bash
90
+ sudo gem install graphics
91
91
 
92
92
  == LICENSE:
93
93
 
data/Rakefile CHANGED
@@ -16,6 +16,8 @@ Hoe.spec "graphics" do
16
16
 
17
17
  extension :sdl
18
18
 
19
+ require_ruby_version ">= 2.7"
20
+
19
21
  license "MIT"
20
22
  end
21
23
 
data/examples/logo.rb CHANGED
@@ -50,7 +50,7 @@ class Turtle < Graphics::Body
50
50
  p2 = w.project(x, y, a+90, 5)
51
51
  p3 = w.project(x, y, a-90, 5)
52
52
 
53
- w.polygon p1, p2, p3, :green
53
+ w.polygon [p1, p2, p3], :green
54
54
  end
55
55
  end
56
56
 
data/ext/sdl/sdl.c CHANGED
@@ -8,7 +8,7 @@
8
8
  #include <sge/sge_collision.h>
9
9
  #include <SDL_mixer.h>
10
10
 
11
- // https://github.com/google/protobuf/blob/master/ruby/ext/google/protobuf_c/defs.c
11
+ // https://github.com/ruby/ruby/blob/master/doc/extension.rdoc#c-struct-to-ruby-object-
12
12
 
13
13
  #define DEFINE_CLASS_(name, string_name, mark, free, memsize) \
14
14
  static void mark(void*); \
@@ -16,7 +16,15 @@
16
16
  static VALUE c##name; \
17
17
  static const rb_data_type_t _##name##_type = { \
18
18
  string_name, \
19
- { mark, free, memsize, { NULL, NULL }, }, NULL, NULL, \
19
+ { mark, \
20
+ free, \
21
+ memsize, \
22
+ NULL, /* compact */ \
23
+ { NULL } \
24
+ }, \
25
+ NULL, /* parent */ \
26
+ NULL, /* data */ \
27
+ 0, /* flags */ \
20
28
  }; \
21
29
  static SDL_##name* ruby_to_##name(VALUE val) { \
22
30
  SDL_##name* ret; \
@@ -30,7 +38,8 @@
30
38
  _##name##_mark, _##name##_free, _##name##_memsize)
31
39
 
32
40
  #define DEFINE_CLASS_0(name, string_name) \
33
- DEFINE_CLASS_(name, string_name, _##name##_mark, _##name##_free, NULL)
41
+ DEFINE_CLASS_(name, string_name, \
42
+ _##name##_mark, _##name##_free, NULL)
34
43
 
35
44
  #define DEFINE_SELF(type, var, rb_var) \
36
45
  SDL_##type* var = ruby_to_##type(rb_var)
@@ -321,7 +330,7 @@ static VALUE Key_s_press_p(VALUE mod, VALUE keycode_) {
321
330
  SDL_Keycode keycode = NUM2INT(keycode_);
322
331
  SDL_Scancode scancode = SDL_GetScancodeFromKey(keycode);
323
332
 
324
- if (0 >= scancode || scancode >= key_state_len)
333
+ if (0 >= scancode || scancode >= (SDL_Scancode)key_state_len)
325
334
  rb_raise(eSDLError, "%d (%d) is out of bounds: %d",
326
335
  keycode, scancode, key_state_len);
327
336
 
@@ -508,6 +517,10 @@ typedef int (*f_rxyxyc)(SDL_Renderer*,
508
517
  typedef int (*f_rxyrc)(SDL_Renderer*,
509
518
  Sint16, Sint16, Sint16,
510
519
  Uint32);
520
+ typedef int (*f_poly)(SDL_Renderer*,
521
+ const Sint16 *, const Sint16 *,
522
+ int,
523
+ Uint32);
511
524
 
512
525
  // TODO: ? maybe ?
513
526
  // int hlineColor (SDL_Renderer *renderer, Sint16 x1, Sint16 x2, Sint16 y, Uint32 color)
@@ -521,9 +534,7 @@ typedef int (*f_rxyrc)(SDL_Renderer*,
521
534
  // int trigonColor (SDL_Renderer *renderer, Sint16 x1, Sint16 y1, Sint16 x2, Sint16 y2, Sint16 x3, Sint16 y3, Uint32 color)
522
535
  // int aatrigonColor (SDL_Renderer *renderer, Sint16 x1, Sint16 y1, Sint16 x2, Sint16 y2, Sint16 x3, Sint16 y3, Uint32 color)
523
536
  // int filledTrigonColor (SDL_Renderer *renderer, Sint16 x1, Sint16 y1, Sint16 x2, Sint16 y2, Sint16 x3, Sint16 y3, Uint32 color)
524
- // int polygonColor (SDL_Renderer *renderer, const Sint16 *vx, const Sint16 *vy, int n, Uint32 color)
525
- // int aapolygonColor (SDL_Renderer *renderer, const Sint16 *vx, const Sint16 *vy, int n, Uint32 color)
526
- // int filledPolygonColor (SDL_Renderer *renderer, const Sint16 *vx, const Sint16 *vy, int n, Uint32 color)
537
+ // int filledPolygonColor (SDL_Renderer *renderer, const Sint16 *vx, const Sint16 *vy, int n, Uint32 color)
527
538
  // int texturedPolygon (SDL_Renderer *renderer, const Sint16 *vx, const Sint16 *vy, int n, SDL_Surface *texture, int texture_dx, int texture_dy)
528
539
  // void gfxPrimitivesSetFont (const void *fontdata, Uint32 cw, Uint32 ch)
529
540
  // void gfxPrimitivesSetFontRotation(Uint32 rotation)
@@ -648,6 +659,46 @@ static VALUE Renderer_draw_line(VALUE self,
648
659
  return Qnil;
649
660
  }
650
661
 
662
+ // int polygonColor (SDL_Renderer *renderer, const Sint16 *vx, const Sint16 *vy, int n, Uint32 color)
663
+ // int aapolygonColor (SDL_Renderer *renderer, const Sint16 *vx, const Sint16 *vy, int n, Uint32 color)
664
+
665
+ static f_poly f_polygon[] = { &polygonColor,
666
+ &aapolygonColor };
667
+
668
+ static VALUE Renderer_draw_polygon(VALUE self,
669
+ VALUE xs_,
670
+ VALUE ys_,
671
+ VALUE c,
672
+ VALUE aa) {
673
+ DEFINE_SELF(Renderer, renderer, self);
674
+
675
+ int xlen = RARRAY_LENINT(xs_);
676
+ int ylen = RARRAY_LENINT(ys_);
677
+
678
+ if (xlen != ylen)
679
+ rb_raise(rb_eArgError, "xs & ys are different length");
680
+
681
+ Sint16 *xs = malloc(xlen*sizeof(Sint16));
682
+ for (int i = 0; i < xlen; i++) {
683
+ xs[i] = NUM2SINT16(RARRAY_AREF(xs_, i));
684
+ }
685
+
686
+ Sint16 *ys = malloc(ylen*sizeof(Sint16));
687
+ for (int i = 0; i < ylen; i++) {
688
+ ys[i] = NUM2SINT16(RARRAY_AREF(ys_, i));
689
+ }
690
+
691
+ Uint8 idx = IDX1(RTEST(aa));
692
+
693
+ if (f_polygon[idx](renderer, xs, ys, xlen, VALUE2COLOR(c)))
694
+ FAILURE("draw_polygon");
695
+
696
+ free(xs);
697
+ free(ys);
698
+
699
+ return Qnil;
700
+ }
701
+
651
702
  static f_rxyxyc f_rect[] = { &rectangleColor,
652
703
  &boxColor };
653
704
 
@@ -1076,17 +1127,17 @@ void Init_sdl() {
1076
1127
  mKey = rb_define_module_under(mSDL, "Key");
1077
1128
  mMouse = rb_define_module_under(mSDL, "Mouse");
1078
1129
 
1079
- cAudio = rb_define_class_under(mSDL, "Audio", rb_cData);
1080
- cCollisionMap = rb_define_class_under(mSDL, "CollisionMap", rb_cData);
1130
+ cAudio = rb_define_class_under(mSDL, "Audio", rb_cObject);
1131
+ cCollisionMap = rb_define_class_under(mSDL, "CollisionMap", rb_cObject);
1081
1132
  cEvent = rb_define_class_under(mSDL, "Event", rb_cObject);
1082
- cPixelFormat = rb_define_class_under(mSDL, "PixelFormat", rb_cData);
1083
- cSurface = rb_define_class_under(mSDL, "Surface", rb_cData);
1084
- cTTFFont = rb_define_class_under(mSDL, "TTF", rb_cData); // TODO: Font
1133
+ cPixelFormat = rb_define_class_under(mSDL, "PixelFormat", rb_cObject);
1134
+ cSurface = rb_define_class_under(mSDL, "Surface", rb_cObject);
1135
+ cTTFFont = rb_define_class_under(mSDL, "TTF", rb_cObject); // TODO: Font
1085
1136
 
1086
1137
  cScreen = rb_define_class_under(mSDL, "Screen", cSurface);
1087
- cRenderer = rb_define_class_under(mSDL, "Renderer", rb_cData);
1088
- cWindow = rb_define_class_under(mSDL, "Window", rb_cData);
1089
- cTexture = rb_define_class_under(mSDL, "Texture", rb_cData);
1138
+ cRenderer = rb_define_class_under(mSDL, "Renderer", rb_cObject);
1139
+ cWindow = rb_define_class_under(mSDL, "Window", rb_cObject);
1140
+ cTexture = rb_define_class_under(mSDL, "Texture", rb_cObject);
1090
1141
 
1091
1142
  cEventQuit = rb_define_class_under(cEvent, "Quit", cEvent);
1092
1143
  cEventKeydown = rb_define_class_under(cEvent, "Keydown", cEvent);
@@ -1098,6 +1149,17 @@ void Init_sdl() {
1098
1149
 
1099
1150
  eSDLError = rb_define_class_under(mSDL, "Error", rb_eStandardError);
1100
1151
 
1152
+ //// T_DATA cleanup: (mirror DEFINE_CLASS* calls above)
1153
+
1154
+ rb_undef_alloc_func(cAudio);
1155
+ rb_undef_alloc_func(cSurface);
1156
+ rb_undef_alloc_func(cCollisionMap);
1157
+ rb_undef_alloc_func(cPixelFormat);
1158
+ rb_undef_alloc_func(cTTFFont);
1159
+ rb_undef_alloc_func(cRenderer);
1160
+ rb_undef_alloc_func(cWindow);
1161
+ rb_undef_alloc_func(cTexture);
1162
+
1101
1163
  //// SDL methods:
1102
1164
 
1103
1165
  rb_define_module_function(mSDL, "init", sdl_s_init, 1);
@@ -1185,6 +1247,7 @@ void Init_sdl() {
1185
1247
  rb_define_method(cRenderer, "draw_ellipse", Renderer_draw_ellipse, 7);
1186
1248
  rb_define_method(cRenderer, "draw_line", Renderer_draw_line, 6);
1187
1249
  rb_define_method(cRenderer, "draw_rect", Renderer_draw_rect, 6);
1250
+ rb_define_method(cRenderer, "draw_polygon", Renderer_draw_polygon, 4);
1188
1251
  rb_define_method(cRenderer, "fast_rect", Renderer_fast_rect, 5);
1189
1252
  rb_define_method(cRenderer, "h", Renderer_h, 0);
1190
1253
  rb_define_method(cRenderer, "new_texture", Renderer_new_texture, 0);
data/graphics_setup.sh CHANGED
@@ -2,39 +2,48 @@
2
2
 
3
3
  set -v
4
4
 
5
- case `uname` in
5
+ case "$(uname -s)" in
6
6
  Darwin)
7
- echo "I'm on OSX. Not using sudo"
8
- SUDO=
7
+ if command -v brew >/dev/null; then
8
+ echo "Detected macOS. Installing dependencies with brew."
9
+ sudo=""
9
10
 
10
- brew install sdl2
11
- brew install sdl2_mixer
12
- brew install sdl2_ttf
13
- brew install sdl2_image --without-webp
14
- brew install sdl2_gfx
11
+ brew install sdl2
12
+ brew install sdl2_mixer
13
+ brew install sdl2_ttf
14
+ brew install sdl2_image
15
+ brew install sdl2_gfx
16
+ else
17
+ echo "Detected macOS but not brew. Install Homebrew and try again."
18
+ exit 1
19
+ fi
15
20
  ;;
16
21
  Linux)
17
- echo "I'm on linux, using sudo where needed"
18
- SUDO=sudo
22
+ if command -v apt >/dev/null; then
23
+ echo "Detected Linux. Installing dependencies with apt."
24
+ sudo="sudo"
19
25
 
20
- $SUDO apt-get install --no-install-recommends --no-install-suggests libsdl1.2-dev libsdl-image1.2-dev libsdl-mixer1.2-dev libsdl-ttf2.0-dev gcc g++
21
- ;;
26
+ $sudo apt-get install --no-install-recommends --no-install-suggests libsdl1.2-dev libsdl-image1.2-dev libsdl-mixer1.2-dev libsdl-ttf2.0-dev gcc g++
27
+ else
28
+ echo "Detected macOS but not apt. Install sdl2 with your package manager."
29
+ exit 1
30
+ fi
31
+ ;;
22
32
  *)
23
- echo "Unknown OS $OSTYPE, aborting"
24
- exit 1
33
+ echo "Dependency installation not supported for your OS. Install sdl2 with your package manager."
34
+ exit 1
25
35
  ;;
26
36
  esac
27
37
 
28
- if [ -f $0 ]; then
29
- $SUDO gem update --system -N -V
30
- $SUDO gem install hoe --conservative
31
- $SUDO rake newb
38
+ if [ -f "$0" ]; then
39
+ $sudo gem install hoe --conservative
40
+ $sudo rake newb
32
41
  rake test
33
42
  rake clean package
34
- $SUDO gem install pkg/graphics*.gem
43
+ $sudo gem install pkg/graphics*.gem
35
44
  else
36
- $SUDO gem install graphics
45
+ $sudo gem install graphics
37
46
  fi
38
47
 
39
- echo "running a test... you should see a window show up."
48
+ echo "Running a graphics test... You should see a window appear."
40
49
  ruby -Ilib -rgraphics -e 'Class.new(Graphics::Simulation) { def draw n; clear :white; text "hit escape to quit", 100, 100, :black; end; }.new(500, 250, "Working!").run'
@@ -206,7 +206,7 @@ class Graphics::AbstractSimulation
206
206
  File.expand_path("~/Library/Fonts/"),
207
207
 
208
208
  # Ubuntu
209
- "/usr/share/fonts/truetype/**/",
209
+ "/usr/share/fonts/**/",
210
210
  ]
211
211
  FONT_GLOB = "{#{font_dirs.join(",")}}" # :nodoc:
212
212
 
@@ -497,11 +497,14 @@ class Graphics::AbstractSimulation
497
497
  # Draw a closed form polygon from an array of points in a particular
498
498
  # color.
499
499
 
500
- def polygon *points, color
500
+ def polygon points, c
501
+ return unless points.size > 1
502
+
501
503
  points << points.first
502
- points.each_cons(2) do |p1, p2|
503
- line(*p1, *p2, color)
504
- end
504
+
505
+ xs, ys = points.transpose
506
+
507
+ renderer.draw_polygon xs, ys.map { |y| h-y-1 }, c, :aa
505
508
  end
506
509
 
507
510
  ##
data/lib/graphics.rb CHANGED
@@ -2,7 +2,7 @@
2
2
  # The top-level namespace.
3
3
 
4
4
  class Graphics
5
- VERSION = "1.0.1" # :nodoc:
5
+ VERSION = "1.1.1" # :nodoc:
6
6
  end
7
7
 
8
8
  require "graphics/simulation"
data.tar.gz.sig CHANGED
Binary file
metadata CHANGED
@@ -1,18 +1,18 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: graphics
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.1
4
+ version: 1.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ryan Davis
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain:
11
11
  - |
12
12
  -----BEGIN CERTIFICATE-----
13
- MIIDPjCCAiagAwIBAgIBAjANBgkqhkiG9w0BAQUFADBFMRMwEQYDVQQDDApyeWFu
13
+ MIIDPjCCAiagAwIBAgIBCDANBgkqhkiG9w0BAQsFADBFMRMwEQYDVQQDDApyeWFu
14
14
  ZC1ydWJ5MRkwFwYKCZImiZPyLGQBGRYJemVuc3BpZGVyMRMwEQYKCZImiZPyLGQB
15
- GRYDY29tMB4XDTE3MTEyMTIxMTExMFoXDTE4MTEyMTIxMTExMFowRTETMBEGA1UE
15
+ GRYDY29tMB4XDTI0MDEwMjIxMjEyM1oXDTI1MDEwMTIxMjEyM1owRTETMBEGA1UE
16
16
  AwwKcnlhbmQtcnVieTEZMBcGCgmSJomT8ixkARkWCXplbnNwaWRlcjETMBEGCgmS
17
17
  JomT8ixkARkWA2NvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALda
18
18
  b9DCgK+627gPJkB6XfjZ1itoOQvpqH1EXScSaba9/S2VF22VYQbXU1xQXL/WzCkx
@@ -21,15 +21,15 @@ cert_chain:
21
21
  GiadM9GHRaDiaxuX0cIUBj19T01mVE2iymf9I6bEsiayK/n6QujtyCbTWsAS9Rqt
22
22
  qhtV7HJxNKuPj/JFH0D2cswvzznE/a5FOYO68g+YCuFi5L8wZuuM8zzdwjrWHqSV
23
23
  gBEfoTEGr7Zii72cx+sCAwEAAaM5MDcwCQYDVR0TBAIwADALBgNVHQ8EBAMCBLAw
24
- HQYDVR0OBBYEFEfFe9md/r/tj/Wmwpy+MI8d9k/hMA0GCSqGSIb3DQEBBQUAA4IB
25
- AQAfAXSQpsW7YSxd1csRtA/M4Zt0AMXFMd76GJ8Lgtg8G0+VFbdChRyDuDb0kPlW
26
- h9QQX/YABfCW8vxmssbMGrP+VGBAn7BbdTcfTlgCWrvMX1uL5aRL74nA4urKXqdW
27
- a0nP70K4958P3GffBdtE3KGkU5xstFnXGajxuBRnL66E15KU0BNehVxdG258bdPu
28
- EKN6MqBPftFiev3tuwqDV11r2GquDpniYcT+Mi8/PgeAgVT/afBeVgbB3KaZeTRR
29
- AhXhF6Wi2GTMezlj5jlI5XV7WsJUSwTp/YiVvcmT74ZaCRvexm6EnNhkrvJJ1Xeu
30
- V+HB+LYYhXWitInO/eXxDrFB
24
+ HQYDVR0OBBYEFEfFe9md/r/tj/Wmwpy+MI8d9k/hMA0GCSqGSIb3DQEBCwUAA4IB
25
+ AQCygvpmncmkiSs9r/Kceo4bBPDszhTv6iBi4LwMReqnFrpNLMOWJw7xi8x+3eL2
26
+ XS09ZPNOt2zm70KmFouBMgOysnDY4k2dE8uF6B8JbZOO8QfalW+CoNBliefOTcn2
27
+ bg5IOP7UoGM5lC174/cbDJrJnRG9bzig5FAP0mvsgA8zgTRXQzIUAZEo92D5K7p4
28
+ B4/O998ho6BSOgYBI9Yk1ttdCtti6Y+8N9+fZESsjtWMykA+WXWeGUScHqiU+gH8
29
+ S7043fq9EbQdBr2AXdj92+CDwuTfHI6/Hj5FVBDULufrJaan4xUgL70Hvc6pTTeW
30
+ deKfBjgVAq7EYHu1AczzlUly
31
31
  -----END CERTIFICATE-----
32
- date: 2018-11-15 00:00:00.000000000 Z
32
+ date: 2024-08-27 00:00:00.000000000 Z
33
33
  dependencies:
34
34
  - !ruby/object:Gem::Dependency
35
35
  name: rdoc
@@ -71,14 +71,14 @@ dependencies:
71
71
  requirements:
72
72
  - - "~>"
73
73
  - !ruby/object:Gem::Version
74
- version: '3.17'
74
+ version: '4.2'
75
75
  type: :development
76
76
  prerelease: false
77
77
  version_requirements: !ruby/object:Gem::Requirement
78
78
  requirements:
79
79
  - - "~>"
80
80
  - !ruby/object:Gem::Version
81
- version: '3.17'
81
+ version: '4.2'
82
82
  description: |-
83
83
  Graphics provides a simple framework to implement games and/or
84
84
  simulations and is designed to follow mathematical conventions, NOT
@@ -179,11 +179,12 @@ files:
179
179
  - test/test_graphics.rb
180
180
  - test/test_rainbows.rb
181
181
  - test/test_sdl.rb
182
- homepage: https://github.com/zenspider/graphics
182
+ homepage: https://github.com/seattlerb/graphics
183
183
  licenses:
184
184
  - MIT
185
- metadata: {}
186
- post_install_message:
185
+ metadata:
186
+ homepage_uri: https://github.com/seattlerb/graphics
187
+ post_install_message:
187
188
  rdoc_options:
188
189
  - "--main"
189
190
  - README.rdoc
@@ -193,16 +194,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
193
194
  requirements:
194
195
  - - ">="
195
196
  - !ruby/object:Gem::Version
196
- version: '0'
197
+ version: '2.7'
197
198
  required_rubygems_version: !ruby/object:Gem::Requirement
198
199
  requirements:
199
200
  - - ">="
200
201
  - !ruby/object:Gem::Version
201
202
  version: '0'
202
203
  requirements: []
203
- rubyforge_project:
204
- rubygems_version: 2.7.3
205
- signing_key:
204
+ rubygems_version: 3.5.15
205
+ signing_key:
206
206
  specification_version: 4
207
207
  summary: Graphics provides a simple framework to implement games and/or simulations
208
208
  and is designed to follow mathematical conventions, NOT game programming conventions
metadata.gz.sig CHANGED
@@ -1,2 +1 @@
1
- t��D�@P���>휭C�ۣ�����jV��"�������ndSH_<%�WP�j�
2
- }��(5cR�
1
+ 9�f:�>�uD��HrUlk�Y��+j 7�;ȥ����h� ��$