gosu 1.1.1.1 → 1.2.0

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: 444c045288619f5db21634cb5bbdd24bf16c93799d16dc84147cab982282804b
4
- data.tar.gz: cab4e8823a7b19893cfd3f5b280176ed2b99f76c76278859fe5957bec8aa283a
3
+ metadata.gz: b9f867c68587f182be0ba872daf669724376a55b6f7e0c3853eca5f350dc413f
4
+ data.tar.gz: f24639563ba937303f9a81dd22a78ad5a22fa9243d980c629d163605656be0b2
5
5
  SHA512:
6
- metadata.gz: c4c1168ca82b6e0c969ca8943469010d1eeadc32908ac3b78fc4b61567e0905076dedc2e4509bb55abedccf9ba4f3ccf79ae900093f1de996112548bc0fbad31
7
- data.tar.gz: 6f7b1cea866fecc2b8bde836790f684fff6990dc89844a66f7a304f7f405625a33200bb6ffe2db987444ecc53e7a8ddee26cb75f7e77f7891393fd564e2ae81b
6
+ metadata.gz: 6bb10eafcfa8742066e246e607ada383af5d2f3a461910e386064b27788d5620ab289b2081e0e4652240df9faf7cb1bb8d669fb95b7bcfbfb040e767c4354edd
7
+ data.tar.gz: dc56b6a28a0f8980027c3f3bc5fd110e806617a4b22b3d6e918fa24f99d59cea98cd03d85af875968bcc7b98bc283ac810aca7a37e199ff1f4aaaaea1de7fc80
@@ -44,11 +44,11 @@ namespace Gosu
44
44
  //! Draws text so the top left corner of the text is at (x; y).
45
45
  void draw_text(const std::string& text, double x, double y, ZPos z,
46
46
  double scale_x = 1, double scale_y = 1, Color c = Color::WHITE,
47
- AlphaMode mode = AM_DEFAULT) const;
47
+ BlendMode mode = BM_DEFAULT) const;
48
48
  //! Draws markup so the top left corner of the text is at (x; y).
49
49
  void draw_markup(const std::string& markup, double x, double y, ZPos z,
50
50
  double scale_x = 1, double scale_y = 1, Color c = Color::WHITE,
51
- AlphaMode mode = AM_DEFAULT) const;
51
+ BlendMode mode = BM_DEFAULT) const;
52
52
 
53
53
  //! Draws text at a position relative to (x; y).
54
54
  //! \param rel_x Determines where the text is drawn horizontally. If
@@ -58,7 +58,7 @@ namespace Gosu
58
58
  //! \param rel_y See rel_x.
59
59
  void draw_text_rel(const std::string& text, double x, double y, ZPos z,
60
60
  double rel_x, double rel_y, double scale_x = 1, double scale_y = 1,
61
- Color c = Color::WHITE, AlphaMode mode = AM_DEFAULT) const;
61
+ Color c = Color::WHITE, BlendMode mode = BM_DEFAULT) const;
62
62
  //! Draws text at a position relative to (x; y).
63
63
  //! \param rel_x Determines where the text is drawn horizontally. If
64
64
  //! rel_x is 0.0, the text will be to the right of x, if it is 1.0,
@@ -67,7 +67,7 @@ namespace Gosu
67
67
  //! \param rel_y See rel_x.
68
68
  void draw_markup_rel(const std::string& markup, double x, double y, ZPos z,
69
69
  double rel_x, double rel_y, double scale_x = 1, double scale_y = 1,
70
- Color c = Color::WHITE, AlphaMode mode = AM_DEFAULT) const;
70
+ Color c = Color::WHITE, BlendMode mode = BM_DEFAULT) const;
71
71
 
72
72
  //! Maps a letter to a specific image, instead of generating one using
73
73
  //! Gosu's built-in text rendering.
@@ -78,21 +78,23 @@ namespace Gosu
78
78
  //! image to simulate lines, or contribute a better draw_line to Gosu.
79
79
  static void draw_line(double x1, double y1, Color c1,
80
80
  double x2, double y2, Color c2,
81
- ZPos z, AlphaMode mode = AM_DEFAULT);
81
+ ZPos z, BlendMode mode = BM_DEFAULT);
82
82
 
83
83
  static void draw_triangle(double x1, double y1, Color c1,
84
84
  double x2, double y2, Color c2,
85
85
  double x3, double y3, Color c3,
86
- ZPos z, AlphaMode mode = AM_DEFAULT);
86
+ ZPos z,
87
+ BlendMode mode = BM_DEFAULT);
87
88
 
88
89
  static void draw_quad(double x1, double y1, Color c1,
89
90
  double x2, double y2, Color c2,
90
91
  double x3, double y3, Color c3,
91
92
  double x4, double y4, Color c4,
92
- ZPos z, AlphaMode mode = AM_DEFAULT);
93
+ ZPos z, BlendMode mode = BM_DEFAULT);
93
94
 
94
95
  static void draw_rect(double x, double y, double width, double height,
95
- Color c, ZPos z, AlphaMode mode = AM_DEFAULT);
96
+ Color c, ZPos z,
97
+ BlendMode mode = BM_DEFAULT);
96
98
 
97
99
  //! For internal use only.
98
100
  void set_physical_resolution(unsigned physical_width, unsigned physical_height);
@@ -15,18 +15,18 @@ namespace Gosu
15
15
 
16
16
  //! Determines the way colors are combined when one is drawn onto
17
17
  //! another.
18
- enum AlphaMode
18
+ enum BlendMode
19
19
  {
20
- AM_DEFAULT,
20
+ BM_DEFAULT,
21
21
  //! The color's channels will be interpolated. The alpha channel
22
22
  //! specifies the opacity of the new color, 255 is full opacity.
23
- AM_INTERPOLATE = AM_DEFAULT,
23
+ BM_INTERPOLATE = BM_DEFAULT,
24
24
  //! The colors' channels will be added. The alpha channel specifies
25
25
  //! the percentage of the new color's channels that will be added
26
26
  //! to the old color's channels.
27
- AM_ADD,
27
+ BM_ADD,
28
28
  //! The color's channels will be multiplied with each other.
29
- AM_MULTIPLY
29
+ BM_MULTIPLY
30
30
  };
31
31
 
32
32
  enum FontFlags
@@ -50,7 +50,7 @@ namespace Gosu
50
50
  {
51
51
  IF_SMOOTH = 0,
52
52
 
53
- // Note: No constant for '1', but Gosu treats '1' as if_tileable for
53
+ // Note: No constant for '1', but Gosu treats '1' as IF_TILEABLE for
54
54
  // backward compatibility reasons (this parameter used to be a bool).
55
55
 
56
56
  IF_TILEABLE_LEFT = 1 << 1,
@@ -49,10 +49,10 @@ namespace Gosu
49
49
 
50
50
  //! Draws the image so its upper left corner is at (x; y).
51
51
  void draw(double x, double y, ZPos z = 0, double scale_x = 1, double scale_y = 1,
52
- Color c = Color::WHITE, AlphaMode mode = AM_DEFAULT) const;
52
+ Color c = Color::WHITE, BlendMode mode = BM_DEFAULT) const;
53
53
  //! Like draw(), but with modulation colors for all four corners.
54
54
  void draw_mod(double x, double y, ZPos z, double scale_x, double scale_y,
55
- Color c1, Color c2, Color c3, Color c4, AlphaMode mode = AM_DEFAULT) const;
55
+ Color c1, Color c2, Color c3, Color c4, BlendMode mode = BM_DEFAULT) const;
56
56
 
57
57
  //! Draws the image rotated by the given angle so that its rotation
58
58
  //! center is at (x; y). Note that this is different from how all the
@@ -65,7 +65,7 @@ namespace Gosu
65
65
  //! \param center_y See center_x.
66
66
  void draw_rot(double x, double y, ZPos z = 0, double angle = 0,
67
67
  double center_x = 0.5, double center_y = 0.5, double scale_x = 1, double scale_y = 1,
68
- Color c = Color::WHITE, AlphaMode mode = AM_DEFAULT) const;
68
+ Color c = Color::WHITE, BlendMode mode = BM_DEFAULT) const;
69
69
 
70
70
  #ifndef SWIG
71
71
  //! Provides access to the underlying image data object.
@@ -44,7 +44,7 @@ namespace Gosu
44
44
  double x2, double y2, Color c2,
45
45
  double x3, double y3, Color c3,
46
46
  double x4, double y4, Color c4,
47
- ZPos z, AlphaMode mode) const = 0;
47
+ ZPos z, BlendMode mode) const = 0;
48
48
 
49
49
  virtual const GLTexInfo* gl_tex_info() const = 0;
50
50
 
@@ -1,19 +1,21 @@
1
1
  #pragma once
2
2
 
3
3
  #include <string>
4
+ #include <vector>
4
5
 
5
6
  namespace Gosu
6
7
  {
7
8
  std::u32string utf8_to_composed_utc4(const std::string& utf8);
8
-
9
- //! Returns true if the filename has the given extension.
10
- //! The comparison is case-insensitive, but you must pass the extension in lower case.
9
+
10
+ /// Returns true if the filename has the given extension.
11
+ /// The comparison is case-insensitive, but you must pass the extension in lower case.
11
12
  bool has_extension(std::string_view filename, std::string_view extension);
12
-
13
- //! Returns the user's preferred language, at the moment of calling the function. Expect return
14
- //! values such as 'en_US', 'de_DE.UTF-8', 'ja', 'zh-Hans'.
15
- //! The first two letters will always be a language code.
16
- std::string language();
13
+
14
+ /// Returns the user's preferred user_languages/locales, e.g. {"en_US", "de_DE", "ja"}.
15
+ /// The first two letters of each element will always be a language code.
16
+ /// This value is not cached. Please memorize the specific value that you are interested in,
17
+ /// typically the first language in the returned array that your game supports.
18
+ std::vector<std::string> user_languages();
17
19
 
18
20
  class Noncopyable
19
21
  {
@@ -3,8 +3,8 @@
3
3
  #include <string>
4
4
 
5
5
  #define GOSU_MAJOR_VERSION 1
6
- #define GOSU_MINOR_VERSION 1
7
- #define GOSU_POINT_VERSION 1
6
+ #define GOSU_MINOR_VERSION 2
7
+ #define GOSU_POINT_VERSION 0
8
8
 
9
9
  namespace Gosu
10
10
  {
data/lib/gosu/compat.rb CHANGED
@@ -202,4 +202,8 @@ module Gosu
202
202
  # Also import old-style constants into Gosu::Button.
203
203
  Gosu::Button.const_set old_name, Gosu.const_get(new_name)
204
204
  end
205
+
206
+ def self.language
207
+ @language_cache ||= (user_languages.first || "en_US")
208
+ end
205
209
  end
@@ -22,7 +22,7 @@ namespace Gosu
22
22
  double, double, Color,
23
23
  double, double, Color,
24
24
  double, double, Color,
25
- ZPos, AlphaMode) const override
25
+ ZPos, BlendMode) const override
26
26
  {
27
27
  }
28
28
 
data/src/Font.cpp CHANGED
@@ -112,13 +112,13 @@ double Gosu::Font::markup_width(const string& markup) const
112
112
  }
113
113
 
114
114
  void Gosu::Font::draw_text(const string& text, double x, double y, ZPos z,
115
- double scale_x, double scale_y, Color c, AlphaMode mode) const
115
+ double scale_x, double scale_y, Color c, BlendMode mode) const
116
116
  {
117
117
  draw_markup(escape_markup(text), x, y, z, scale_x, scale_y, c, mode);
118
118
  }
119
119
 
120
120
  void Gosu::Font::draw_markup(const string& markup, double x, double y, ZPos z,
121
- double scale_x, double scale_y, Color c, AlphaMode mode) const
121
+ double scale_x, double scale_y, Color c, BlendMode mode) const
122
122
  {
123
123
  double current_y = y;
124
124
 
@@ -142,7 +142,7 @@ void Gosu::Font::draw_markup(const string& markup, double x, double y, ZPos z,
142
142
 
143
143
  void Gosu::Font::draw_text_rel(const string& text, double x, double y, ZPos z,
144
144
  double rel_x, double rel_y, double scale_x, double scale_y,
145
- Color c, AlphaMode mode) const
145
+ Color c, BlendMode mode) const
146
146
  {
147
147
  if (rel_x) x -= text_width(text) * scale_x * rel_x;
148
148
  if (rel_y) y -= height() * scale_y * rel_y;
@@ -152,7 +152,7 @@ void Gosu::Font::draw_text_rel(const string& text, double x, double y, ZPos z,
152
152
 
153
153
  void Gosu::Font::draw_markup_rel(const string& markup, double x, double y, ZPos z,
154
154
  double rel_x, double rel_y, double scale_x, double scale_y,
155
- Color c, AlphaMode mode) const
155
+ Color c, BlendMode mode) const
156
156
  {
157
157
  if (rel_x) x -= markup_width(markup) * scale_x * rel_x;
158
158
  if (rel_y) y -= height() * scale_y * rel_y;
data/src/Graphics.cpp CHANGED
@@ -330,7 +330,7 @@ void Gosu::Graphics::transform(const Gosu::Transform& transform, const function<
330
330
  }
331
331
 
332
332
  void Gosu::Graphics::draw_line(double x1, double y1, Color c1,
333
- double x2, double y2, Color c2, ZPos z, AlphaMode mode)
333
+ double x2, double y2, Color c2, ZPos z, BlendMode mode)
334
334
  {
335
335
  DrawOp op;
336
336
  op.render_state.mode = mode;
@@ -343,7 +343,7 @@ void Gosu::Graphics::draw_line(double x1, double y1, Color c1,
343
343
  }
344
344
 
345
345
  void Gosu::Graphics::draw_triangle(double x1, double y1, Color c1, double x2, double y2, Color c2,
346
- double x3, double y3, Color c3, ZPos z, AlphaMode mode)
346
+ double x3, double y3, Color c3, ZPos z, BlendMode mode)
347
347
  {
348
348
  DrawOp op;
349
349
  op.render_state.mode = mode;
@@ -361,7 +361,7 @@ void Gosu::Graphics::draw_triangle(double x1, double y1, Color c1, double x2, do
361
361
  }
362
362
 
363
363
  void Gosu::Graphics::draw_quad(double x1, double y1, Color c1, double x2, double y2, Color c2,
364
- double x3, double y3, Color c3, double x4, double y4, Color c4, ZPos z, AlphaMode mode)
364
+ double x3, double y3, Color c3, double x4, double y4, Color c4, ZPos z, BlendMode mode)
365
365
  {
366
366
  normalize_coordinates(x1, y1, x2, y2, x3, y3, c3, x4, y4, c4);
367
367
 
@@ -384,7 +384,7 @@ void Gosu::Graphics::draw_quad(double x1, double y1, Color c1, double x2, double
384
384
  }
385
385
 
386
386
  void Gosu::Graphics::draw_rect(double x, double y, double width, double height, Color c,
387
- ZPos z, Gosu::AlphaMode mode)
387
+ ZPos z, Gosu::BlendMode mode)
388
388
  {
389
389
  draw_quad(x, y, c, x + width, y, c, x, y + height, c, x + width, y + height, c, z, mode);
390
390
  }
data/src/Image.cpp CHANGED
@@ -57,7 +57,7 @@ unsigned Gosu::Image::height() const
57
57
  }
58
58
 
59
59
  void Gosu::Image::draw(double x, double y, ZPos z, double scale_x, double scale_y, Color c,
60
- AlphaMode mode) const
60
+ BlendMode mode) const
61
61
  {
62
62
  double x2 = x + width() * scale_x;
63
63
  double y2 = y + height() * scale_y;
@@ -66,7 +66,7 @@ void Gosu::Image::draw(double x, double y, ZPos z, double scale_x, double scale_
66
66
  }
67
67
 
68
68
  void Gosu::Image::draw_mod(double x, double y, ZPos z, double scale_x, double scale_y, Color c1,
69
- Color c2, Color c3, Color c4, AlphaMode mode) const
69
+ Color c2, Color c3, Color c4, BlendMode mode) const
70
70
  {
71
71
  double x2 = x + width() * scale_x;
72
72
  double y2 = y + height() * scale_y;
@@ -75,7 +75,8 @@ void Gosu::Image::draw_mod(double x, double y, ZPos z, double scale_x, double sc
75
75
  }
76
76
 
77
77
  void Gosu::Image::draw_rot(double x, double y, ZPos z, double angle,
78
- double center_x, double center_y, double scale_x, double scale_y, Color c, AlphaMode mode) const
78
+ double center_x, double center_y, double scale_x, double scale_y, Color c,
79
+ BlendMode mode) const
79
80
  {
80
81
  double size_x = width() * scale_x;
81
82
  double size_y = height() * scale_y;
@@ -69,7 +69,7 @@ void Gosu::LargeImageData::draw(double x1, double y1, Color c1,
69
69
  double x2, double y2, Color c2,
70
70
  double x3, double y3, Color c3,
71
71
  double x4, double y4, Color c4,
72
- ZPos z, AlphaMode mode) const
72
+ ZPos z, BlendMode mode) const
73
73
  {
74
74
  normalize_coordinates(x1, y1, x2, y2, x3, y3, c3, x4, y4, c4);
75
75
 
@@ -25,7 +25,7 @@ public:
25
25
  double x2, double y2, Color c2,
26
26
  double x3, double y3, Color c3,
27
27
  double x4, double y4, Color c4,
28
- ZPos z, AlphaMode mode) const override;
28
+ ZPos z, BlendMode mode) const override;
29
29
 
30
30
  const GLTexInfo* gl_tex_info() const override { return nullptr; }
31
31
 
data/src/Macro.cpp CHANGED
@@ -162,7 +162,7 @@ int Gosu::Macro::height() const
162
162
  }
163
163
 
164
164
  void Gosu::Macro::draw(double x1, double y1, Color c1, double x2, double y2, Color c2,
165
- double x3, double y3, Color c3, double x4, double y4, Color c4, ZPos z, AlphaMode mode) const
165
+ double x3, double y3, Color c3, double x4, double y4, Color c4, ZPos z, BlendMode mode) const
166
166
  {
167
167
  if (c1 != Color::WHITE || c2 != Color::WHITE || c3 != Color::WHITE || c4 != Color::WHITE) {
168
168
  throw invalid_argument("Macros cannot be tinted with colors");
@@ -185,7 +185,7 @@ Gosu::Bitmap Gosu::Macro::to_bitmap() const
185
185
  pimpl->width, 0, Color::WHITE,
186
186
  0, pimpl->height, Color::WHITE,
187
187
  pimpl->width, pimpl->height, Color::WHITE,
188
- 0, AM_DEFAULT);
188
+ 0, BM_DEFAULT);
189
189
  }).data().to_bitmap();
190
190
  }
191
191
 
data/src/Macro.hpp CHANGED
@@ -18,7 +18,7 @@ public:
18
18
 
19
19
  void draw(double x1, double y1, Color c1, double x2, double y2, Color c2,
20
20
  double x3, double y3, Color c3, double x4, double y4, Color c4, ZPos z,
21
- AlphaMode mode) const override;
21
+ BlendMode mode) const override;
22
22
 
23
23
  const Gosu::GLTexInfo* gl_tex_info() const override;
24
24
 
data/src/RenderState.hpp CHANGED
@@ -10,10 +10,10 @@ struct Gosu::RenderState
10
10
  std::shared_ptr<Texture> texture;
11
11
  const Transform* transform;
12
12
  ClipRect clip_rect;
13
- AlphaMode mode;
13
+ BlendMode mode;
14
14
 
15
15
  RenderState()
16
- : transform(0), mode(AM_DEFAULT)
16
+ : transform(0), mode(BM_DEFAULT)
17
17
  {
18
18
  clip_rect.width = NO_CLIPPING;
19
19
  }
@@ -39,10 +39,10 @@ struct Gosu::RenderState
39
39
 
40
40
  void apply_alpha_mode() const
41
41
  {
42
- if (mode == AM_ADD) {
42
+ if (mode == BM_ADD) {
43
43
  glBlendFunc(GL_SRC_ALPHA, GL_ONE);
44
44
  }
45
- else if (mode == AM_MULTIPLY) {
45
+ else if (mode == BM_MULTIPLY) {
46
46
  glBlendFunc(GL_DST_COLOR, GL_ZERO);
47
47
  }
48
48
  else {
@@ -174,7 +174,7 @@ public:
174
174
  }
175
175
  }
176
176
 
177
- void set_alpha_mode(AlphaMode new_mode)
177
+ void set_alpha_mode(BlendMode new_mode)
178
178
  {
179
179
  if (new_mode == mode) return;
180
180
 
data/src/RubyGosu.cxx CHANGED
@@ -1,6 +1,6 @@
1
1
  /* ----------------------------------------------------------------------------
2
2
  * This file was automatically generated by SWIG (http://www.swig.org).
3
- * Version 4.1.0
3
+ * Version 4.0.2
4
4
  *
5
5
  * This file is not intended to be easily readable and contains a number of
6
6
  * coding conventions designed to improve portability and efficiency. Do not make
@@ -2203,7 +2203,7 @@ static VALUE mGosu;
2203
2203
  #define SWIG_RUBY_THREAD_END_BLOCK
2204
2204
 
2205
2205
 
2206
- #define SWIGVERSION 0x040100
2206
+ #define SWIGVERSION 0x040002
2207
2207
  #define SWIG_VERSION SWIGVERSION
2208
2208
 
2209
2209
 
@@ -2353,7 +2353,7 @@ namespace Gosu
2353
2353
  {
2354
2354
  void draw_line(double x1, double y1, Gosu::Color c1,
2355
2355
  double x2, double y2, Gosu::Color c2,
2356
- Gosu::ZPos z = 0, Gosu::AlphaMode mode = Gosu::AM_DEFAULT)
2356
+ Gosu::ZPos z = 0, Gosu::BlendMode mode = Gosu::BM_DEFAULT)
2357
2357
  {
2358
2358
  Gosu::Graphics::draw_line(x1, y1, c1, x2, y2, c2, z, mode);
2359
2359
  }
@@ -2361,7 +2361,7 @@ namespace Gosu
2361
2361
  void draw_triangle(double x1, double y1, Gosu::Color c1,
2362
2362
  double x2, double y2, Gosu::Color c2,
2363
2363
  double x3, double y3, Gosu::Color c3,
2364
- Gosu::ZPos z = 0, Gosu::AlphaMode mode = Gosu::AM_DEFAULT)
2364
+ Gosu::ZPos z = 0, Gosu::BlendMode mode = Gosu::BM_DEFAULT)
2365
2365
  {
2366
2366
  Gosu::Graphics::draw_triangle(x1, y1, c1, x2, y2, c2, x3, y3, c3, z, mode);
2367
2367
  }
@@ -2370,13 +2370,13 @@ namespace Gosu
2370
2370
  double x2, double y2, Gosu::Color c2,
2371
2371
  double x3, double y3, Gosu::Color c3,
2372
2372
  double x4, double y4, Gosu::Color c4,
2373
- Gosu::ZPos z = 0, Gosu::AlphaMode mode = Gosu::AM_DEFAULT)
2373
+ Gosu::ZPos z = 0, Gosu::BlendMode mode = Gosu::BM_DEFAULT)
2374
2374
  {
2375
2375
  Gosu::Graphics::draw_quad(x1, y1, c1, x2, y2, c2, x3, y3, c3, x4, y4, c4, z, mode);
2376
2376
  }
2377
2377
 
2378
2378
  void draw_rect(double x, double y, double width, double height, Gosu::Color c,
2379
- Gosu::ZPos z = 0, Gosu::AlphaMode mode = Gosu::AM_DEFAULT)
2379
+ Gosu::ZPos z = 0, Gosu::BlendMode mode = Gosu::BM_DEFAULT)
2380
2380
  {
2381
2381
  Gosu::Graphics::draw_rect(x, y, width, height, c, z, mode);
2382
2382
  }
@@ -2519,7 +2519,7 @@ SWIG_ruby_failed(VALUE SWIGUNUSEDPARM(arg1), VALUE SWIGUNUSEDPARM(arg2))
2519
2519
  }
2520
2520
 
2521
2521
 
2522
- /*@SWIG:/usr/local/Cellar/swig/HEAD-975f8fc/share/swig/4.1.0/ruby/rubyprimtypes.swg,19,%ruby_aux_method@*/
2522
+ /*@SWIG:/opt/homebrew/Cellar/swig/4.0.2/share/swig/4.0.2/ruby/rubyprimtypes.swg,19,%ruby_aux_method@*/
2523
2523
  SWIGINTERN VALUE SWIG_AUX_NUM2DBL(VALUE arg)
2524
2524
  {
2525
2525
  VALUE *args = (VALUE *)arg;
@@ -2562,7 +2562,7 @@ SWIG_From_unsigned_SS_int (unsigned int value)
2562
2562
  #include <string>
2563
2563
 
2564
2564
 
2565
- /*@SWIG:/usr/local/Cellar/swig/HEAD-975f8fc/share/swig/4.1.0/ruby/rubyprimtypes.swg,19,%ruby_aux_method@*/
2565
+ /*@SWIG:/opt/homebrew/Cellar/swig/4.0.2/share/swig/4.0.2/ruby/rubyprimtypes.swg,19,%ruby_aux_method@*/
2566
2566
  SWIGINTERN VALUE SWIG_AUX_NUM2ULONG(VALUE arg)
2567
2567
  {
2568
2568
  VALUE *args = (VALUE *)arg;
@@ -2768,7 +2768,7 @@ SWIG_AsPtr_std_string (VALUE obj, std::string **val)
2768
2768
  }
2769
2769
 
2770
2770
 
2771
- /*@SWIG:/usr/local/Cellar/swig/HEAD-975f8fc/share/swig/4.1.0/ruby/rubyprimtypes.swg,19,%ruby_aux_method@*/
2771
+ /*@SWIG:/opt/homebrew/Cellar/swig/4.0.2/share/swig/4.0.2/ruby/rubyprimtypes.swg,19,%ruby_aux_method@*/
2772
2772
  SWIGINTERN VALUE SWIG_AUX_NUM2LONG(VALUE arg)
2773
2773
  {
2774
2774
  VALUE *args = (VALUE *)arg;
@@ -2923,7 +2923,7 @@ SWIGINTERN Gosu::Image *new_Gosu_Image(VALUE source,VALUE options=0){
2923
2923
 
2924
2924
  return new Gosu::Image(bmp, src_x, src_y, src_width, src_height, flags);
2925
2925
  }
2926
- SWIGINTERN void Gosu_Image_draw_as_quad(Gosu::Image *self,double x1,double y1,Gosu::Color c1,double x2,double y2,Gosu::Color c2,double x3,double y3,Gosu::Color c3,double x4,double y4,Gosu::Color c4,Gosu::ZPos z,Gosu::AlphaMode mode=Gosu::AM_DEFAULT){
2926
+ SWIGINTERN void Gosu_Image_draw_as_quad(Gosu::Image *self,double x1,double y1,Gosu::Color c1,double x2,double y2,Gosu::Color c2,double x3,double y3,Gosu::Color c3,double x4,double y4,Gosu::Color c4,Gosu::ZPos z,Gosu::BlendMode mode=Gosu::BM_DEFAULT){
2927
2927
  self->data().draw(x1, y1, c1, x2, y2, c2, x3, y3, c3, x4, y4, c4, z, mode);
2928
2928
  }
2929
2929
  SWIGINTERN Gosu::GLTexInfo *Gosu_Image_gl_tex_info(Gosu::Image const *self){
@@ -3300,7 +3300,7 @@ std::string SwigDirector_TextInput::filter(std::string text) const {
3300
3300
  }
3301
3301
 
3302
3302
 
3303
- SwigDirector_Window::SwigDirector_Window(VALUE self,int width,int height,unsigned int window_flags,double update_interval): Gosu::Window(width, height, window_flags, update_interval), Swig::Director(self) {
3303
+ SwigDirector_Window::SwigDirector_Window(VALUE self, int width, int height, unsigned int window_flags, double update_interval): Gosu::Window(width, height, window_flags, update_interval), Swig::Director(self) {
3304
3304
 
3305
3305
  }
3306
3306
 
@@ -3864,8 +3864,8 @@ fail:
3864
3864
 
3865
3865
 
3866
3866
  SWIGINTERN VALUE
3867
- _wrap_language(int argc, VALUE *argv, VALUE self) {
3868
- std::string result;
3867
+ _wrap_user_languages(int argc, VALUE *argv, VALUE self) {
3868
+ SwigValueWrapper< std::vector< std::string > > result;
3869
3869
  VALUE vresult = Qnil;
3870
3870
 
3871
3871
  if ((argc < 0) || (argc > 0)) {
@@ -3873,15 +3873,17 @@ _wrap_language(int argc, VALUE *argv, VALUE self) {
3873
3873
  }
3874
3874
  {
3875
3875
  try {
3876
- result = Gosu::language();
3876
+ result = Gosu::user_languages();
3877
3877
  }
3878
3878
  catch (const std::exception& e) {
3879
3879
  SWIG_exception(SWIG_RuntimeError, e.what());
3880
3880
  }
3881
3881
  }
3882
3882
  {
3883
- vresult = rb_str_new2((&result)->c_str());
3884
- ENFORCE_UTF8(vresult);
3883
+ vresult = rb_ary_new2((&result)->size());
3884
+ for (std::size_t i = 0; i < (&result)->size(); i++) {
3885
+ rb_ary_store(vresult, i, rb_str_new2((*&result)[i].c_str()));
3886
+ }
3885
3887
  }
3886
3888
  return vresult;
3887
3889
  fail:
@@ -5373,7 +5375,7 @@ _wrap_Font_draw_text(int argc, VALUE *argv, VALUE self) {
5373
5375
  double arg6 = (double) 1 ;
5374
5376
  double arg7 = (double) 1 ;
5375
5377
  Gosu::Color arg8 = (Gosu::Color) Gosu::Color::WHITE ;
5376
- Gosu::AlphaMode arg9 = (Gosu::AlphaMode) Gosu::AM_DEFAULT ;
5378
+ Gosu::BlendMode arg9 = (Gosu::BlendMode) Gosu::BM_DEFAULT ;
5377
5379
  void *argp1 = 0 ;
5378
5380
  int res1 = 0 ;
5379
5381
  int res2 = SWIG_OLDOBJ ;
@@ -5461,16 +5463,16 @@ _wrap_Font_draw_text(int argc, VALUE *argv, VALUE self) {
5461
5463
  const char* cstr = Gosu::cstr_from_symbol(argv[7]);
5462
5464
 
5463
5465
  if (!strcmp(cstr, "default")) {
5464
- arg9 = Gosu::AM_DEFAULT;
5466
+ arg9 = Gosu::BM_DEFAULT;
5465
5467
  }
5466
5468
  else if (!strcmp(cstr, "add") || !strcmp(cstr, "additive")) {
5467
- arg9 = Gosu::AM_ADD;
5469
+ arg9 = Gosu::BM_ADD;
5468
5470
  }
5469
5471
  else if (!strcmp(cstr, "multiply")) {
5470
- arg9 = Gosu::AM_MULTIPLY;
5472
+ arg9 = Gosu::BM_MULTIPLY;
5471
5473
  }
5472
5474
  else {
5473
- SWIG_exception_fail(SWIG_ValueError, "invalid alpha mode (expected one of :default, :add, "
5475
+ SWIG_exception_fail(SWIG_ValueError, "invalid blend mode (expected one of :default, :add, "
5474
5476
  ":multiply)");
5475
5477
  }
5476
5478
  }
@@ -5501,7 +5503,7 @@ _wrap_Font_draw_markup(int argc, VALUE *argv, VALUE self) {
5501
5503
  double arg6 = (double) 1 ;
5502
5504
  double arg7 = (double) 1 ;
5503
5505
  Gosu::Color arg8 = (Gosu::Color) Gosu::Color::WHITE ;
5504
- Gosu::AlphaMode arg9 = (Gosu::AlphaMode) Gosu::AM_DEFAULT ;
5506
+ Gosu::BlendMode arg9 = (Gosu::BlendMode) Gosu::BM_DEFAULT ;
5505
5507
  void *argp1 = 0 ;
5506
5508
  int res1 = 0 ;
5507
5509
  int res2 = SWIG_OLDOBJ ;
@@ -5589,16 +5591,16 @@ _wrap_Font_draw_markup(int argc, VALUE *argv, VALUE self) {
5589
5591
  const char* cstr = Gosu::cstr_from_symbol(argv[7]);
5590
5592
 
5591
5593
  if (!strcmp(cstr, "default")) {
5592
- arg9 = Gosu::AM_DEFAULT;
5594
+ arg9 = Gosu::BM_DEFAULT;
5593
5595
  }
5594
5596
  else if (!strcmp(cstr, "add") || !strcmp(cstr, "additive")) {
5595
- arg9 = Gosu::AM_ADD;
5597
+ arg9 = Gosu::BM_ADD;
5596
5598
  }
5597
5599
  else if (!strcmp(cstr, "multiply")) {
5598
- arg9 = Gosu::AM_MULTIPLY;
5600
+ arg9 = Gosu::BM_MULTIPLY;
5599
5601
  }
5600
5602
  else {
5601
- SWIG_exception_fail(SWIG_ValueError, "invalid alpha mode (expected one of :default, :add, "
5603
+ SWIG_exception_fail(SWIG_ValueError, "invalid blend mode (expected one of :default, :add, "
5602
5604
  ":multiply)");
5603
5605
  }
5604
5606
  }
@@ -5631,7 +5633,7 @@ _wrap_Font_draw_text_rel(int argc, VALUE *argv, VALUE self) {
5631
5633
  double arg8 = (double) 1 ;
5632
5634
  double arg9 = (double) 1 ;
5633
5635
  Gosu::Color arg10 = (Gosu::Color) Gosu::Color::WHITE ;
5634
- Gosu::AlphaMode arg11 = (Gosu::AlphaMode) Gosu::AM_DEFAULT ;
5636
+ Gosu::BlendMode arg11 = (Gosu::BlendMode) Gosu::BM_DEFAULT ;
5635
5637
  void *argp1 = 0 ;
5636
5638
  int res1 = 0 ;
5637
5639
  int res2 = SWIG_OLDOBJ ;
@@ -5733,16 +5735,16 @@ _wrap_Font_draw_text_rel(int argc, VALUE *argv, VALUE self) {
5733
5735
  const char* cstr = Gosu::cstr_from_symbol(argv[9]);
5734
5736
 
5735
5737
  if (!strcmp(cstr, "default")) {
5736
- arg11 = Gosu::AM_DEFAULT;
5738
+ arg11 = Gosu::BM_DEFAULT;
5737
5739
  }
5738
5740
  else if (!strcmp(cstr, "add") || !strcmp(cstr, "additive")) {
5739
- arg11 = Gosu::AM_ADD;
5741
+ arg11 = Gosu::BM_ADD;
5740
5742
  }
5741
5743
  else if (!strcmp(cstr, "multiply")) {
5742
- arg11 = Gosu::AM_MULTIPLY;
5744
+ arg11 = Gosu::BM_MULTIPLY;
5743
5745
  }
5744
5746
  else {
5745
- SWIG_exception_fail(SWIG_ValueError, "invalid alpha mode (expected one of :default, :add, "
5747
+ SWIG_exception_fail(SWIG_ValueError, "invalid blend mode (expected one of :default, :add, "
5746
5748
  ":multiply)");
5747
5749
  }
5748
5750
  }
@@ -5775,7 +5777,7 @@ _wrap_Font_draw_markup_rel(int argc, VALUE *argv, VALUE self) {
5775
5777
  double arg8 = (double) 1 ;
5776
5778
  double arg9 = (double) 1 ;
5777
5779
  Gosu::Color arg10 = (Gosu::Color) Gosu::Color::WHITE ;
5778
- Gosu::AlphaMode arg11 = (Gosu::AlphaMode) Gosu::AM_DEFAULT ;
5780
+ Gosu::BlendMode arg11 = (Gosu::BlendMode) Gosu::BM_DEFAULT ;
5779
5781
  void *argp1 = 0 ;
5780
5782
  int res1 = 0 ;
5781
5783
  int res2 = SWIG_OLDOBJ ;
@@ -5877,16 +5879,16 @@ _wrap_Font_draw_markup_rel(int argc, VALUE *argv, VALUE self) {
5877
5879
  const char* cstr = Gosu::cstr_from_symbol(argv[9]);
5878
5880
 
5879
5881
  if (!strcmp(cstr, "default")) {
5880
- arg11 = Gosu::AM_DEFAULT;
5882
+ arg11 = Gosu::BM_DEFAULT;
5881
5883
  }
5882
5884
  else if (!strcmp(cstr, "add") || !strcmp(cstr, "additive")) {
5883
- arg11 = Gosu::AM_ADD;
5885
+ arg11 = Gosu::BM_ADD;
5884
5886
  }
5885
5887
  else if (!strcmp(cstr, "multiply")) {
5886
- arg11 = Gosu::AM_MULTIPLY;
5888
+ arg11 = Gosu::BM_MULTIPLY;
5887
5889
  }
5888
5890
  else {
5889
- SWIG_exception_fail(SWIG_ValueError, "invalid alpha mode (expected one of :default, :add, "
5891
+ SWIG_exception_fail(SWIG_ValueError, "invalid blend mode (expected one of :default, :add, "
5890
5892
  ":multiply)");
5891
5893
  }
5892
5894
  }
@@ -6625,7 +6627,7 @@ _wrap_Image_draw(int argc, VALUE *argv, VALUE self) {
6625
6627
  double arg5 = (double) 1 ;
6626
6628
  double arg6 = (double) 1 ;
6627
6629
  Gosu::Color arg7 = (Gosu::Color) Gosu::Color::WHITE ;
6628
- Gosu::AlphaMode arg8 = (Gosu::AlphaMode) Gosu::AM_DEFAULT ;
6630
+ Gosu::BlendMode arg8 = (Gosu::BlendMode) Gosu::BM_DEFAULT ;
6629
6631
  void *argp1 = 0 ;
6630
6632
  int res1 = 0 ;
6631
6633
  double val2 ;
@@ -6703,16 +6705,16 @@ _wrap_Image_draw(int argc, VALUE *argv, VALUE self) {
6703
6705
  const char* cstr = Gosu::cstr_from_symbol(argv[6]);
6704
6706
 
6705
6707
  if (!strcmp(cstr, "default")) {
6706
- arg8 = Gosu::AM_DEFAULT;
6708
+ arg8 = Gosu::BM_DEFAULT;
6707
6709
  }
6708
6710
  else if (!strcmp(cstr, "add") || !strcmp(cstr, "additive")) {
6709
- arg8 = Gosu::AM_ADD;
6711
+ arg8 = Gosu::BM_ADD;
6710
6712
  }
6711
6713
  else if (!strcmp(cstr, "multiply")) {
6712
- arg8 = Gosu::AM_MULTIPLY;
6714
+ arg8 = Gosu::BM_MULTIPLY;
6713
6715
  }
6714
6716
  else {
6715
- SWIG_exception_fail(SWIG_ValueError, "invalid alpha mode (expected one of :default, :add, "
6717
+ SWIG_exception_fail(SWIG_ValueError, "invalid blend mode (expected one of :default, :add, "
6716
6718
  ":multiply)");
6717
6719
  }
6718
6720
  }
@@ -6743,7 +6745,7 @@ _wrap_Image_draw_mod(int argc, VALUE *argv, VALUE self) {
6743
6745
  Gosu::Color arg8 ;
6744
6746
  Gosu::Color arg9 ;
6745
6747
  Gosu::Color arg10 ;
6746
- Gosu::AlphaMode arg11 = (Gosu::AlphaMode) Gosu::AM_DEFAULT ;
6748
+ Gosu::BlendMode arg11 = (Gosu::BlendMode) Gosu::BM_DEFAULT ;
6747
6749
  void *argp1 = 0 ;
6748
6750
  int res1 = 0 ;
6749
6751
  double val2 ;
@@ -6867,16 +6869,16 @@ _wrap_Image_draw_mod(int argc, VALUE *argv, VALUE self) {
6867
6869
  const char* cstr = Gosu::cstr_from_symbol(argv[9]);
6868
6870
 
6869
6871
  if (!strcmp(cstr, "default")) {
6870
- arg11 = Gosu::AM_DEFAULT;
6872
+ arg11 = Gosu::BM_DEFAULT;
6871
6873
  }
6872
6874
  else if (!strcmp(cstr, "add") || !strcmp(cstr, "additive")) {
6873
- arg11 = Gosu::AM_ADD;
6875
+ arg11 = Gosu::BM_ADD;
6874
6876
  }
6875
6877
  else if (!strcmp(cstr, "multiply")) {
6876
- arg11 = Gosu::AM_MULTIPLY;
6878
+ arg11 = Gosu::BM_MULTIPLY;
6877
6879
  }
6878
6880
  else {
6879
- SWIG_exception_fail(SWIG_ValueError, "invalid alpha mode (expected one of :default, :add, "
6881
+ SWIG_exception_fail(SWIG_ValueError, "invalid blend mode (expected one of :default, :add, "
6880
6882
  ":multiply)");
6881
6883
  }
6882
6884
  }
@@ -6907,7 +6909,7 @@ _wrap_Image_draw_rot(int argc, VALUE *argv, VALUE self) {
6907
6909
  double arg8 = (double) 1 ;
6908
6910
  double arg9 = (double) 1 ;
6909
6911
  Gosu::Color arg10 = (Gosu::Color) Gosu::Color::WHITE ;
6910
- Gosu::AlphaMode arg11 = (Gosu::AlphaMode) Gosu::AM_DEFAULT ;
6912
+ Gosu::BlendMode arg11 = (Gosu::BlendMode) Gosu::BM_DEFAULT ;
6911
6913
  void *argp1 = 0 ;
6912
6914
  int res1 = 0 ;
6913
6915
  double val2 ;
@@ -7012,16 +7014,16 @@ _wrap_Image_draw_rot(int argc, VALUE *argv, VALUE self) {
7012
7014
  const char* cstr = Gosu::cstr_from_symbol(argv[9]);
7013
7015
 
7014
7016
  if (!strcmp(cstr, "default")) {
7015
- arg11 = Gosu::AM_DEFAULT;
7017
+ arg11 = Gosu::BM_DEFAULT;
7016
7018
  }
7017
7019
  else if (!strcmp(cstr, "add") || !strcmp(cstr, "additive")) {
7018
- arg11 = Gosu::AM_ADD;
7020
+ arg11 = Gosu::BM_ADD;
7019
7021
  }
7020
7022
  else if (!strcmp(cstr, "multiply")) {
7021
- arg11 = Gosu::AM_MULTIPLY;
7023
+ arg11 = Gosu::BM_MULTIPLY;
7022
7024
  }
7023
7025
  else {
7024
- SWIG_exception_fail(SWIG_ValueError, "invalid alpha mode (expected one of :default, :add, "
7026
+ SWIG_exception_fail(SWIG_ValueError, "invalid blend mode (expected one of :default, :add, "
7025
7027
  ":multiply)");
7026
7028
  }
7027
7029
  }
@@ -7101,7 +7103,7 @@ _wrap_Image_draw_as_quad(int argc, VALUE *argv, VALUE self) {
7101
7103
  double arg12 ;
7102
7104
  Gosu::Color arg13 ;
7103
7105
  Gosu::ZPos arg14 ;
7104
- Gosu::AlphaMode arg15 = (Gosu::AlphaMode) Gosu::AM_DEFAULT ;
7106
+ Gosu::BlendMode arg15 = (Gosu::BlendMode) Gosu::BM_DEFAULT ;
7105
7107
  void *argp1 = 0 ;
7106
7108
  int res1 = 0 ;
7107
7109
  double val2 ;
@@ -7253,16 +7255,16 @@ _wrap_Image_draw_as_quad(int argc, VALUE *argv, VALUE self) {
7253
7255
  const char* cstr = Gosu::cstr_from_symbol(argv[13]);
7254
7256
 
7255
7257
  if (!strcmp(cstr, "default")) {
7256
- arg15 = Gosu::AM_DEFAULT;
7258
+ arg15 = Gosu::BM_DEFAULT;
7257
7259
  }
7258
7260
  else if (!strcmp(cstr, "add") || !strcmp(cstr, "additive")) {
7259
- arg15 = Gosu::AM_ADD;
7261
+ arg15 = Gosu::BM_ADD;
7260
7262
  }
7261
7263
  else if (!strcmp(cstr, "multiply")) {
7262
- arg15 = Gosu::AM_MULTIPLY;
7264
+ arg15 = Gosu::BM_MULTIPLY;
7263
7265
  }
7264
7266
  else {
7265
- SWIG_exception_fail(SWIG_ValueError, "invalid alpha mode (expected one of :default, :add, "
7267
+ SWIG_exception_fail(SWIG_ValueError, "invalid blend mode (expected one of :default, :add, "
7266
7268
  ":multiply)");
7267
7269
  }
7268
7270
  }
@@ -10987,7 +10989,7 @@ _wrap_draw_line(int argc, VALUE *argv, VALUE self) {
10987
10989
  double arg5 ;
10988
10990
  Gosu::Color arg6 ;
10989
10991
  Gosu::ZPos arg7 = (Gosu::ZPos) 0 ;
10990
- Gosu::AlphaMode arg8 = (Gosu::AlphaMode) Gosu::AM_DEFAULT ;
10992
+ Gosu::BlendMode arg8 = (Gosu::BlendMode) Gosu::BM_DEFAULT ;
10991
10993
  double val1 ;
10992
10994
  int ecode1 = 0 ;
10993
10995
  double val2 ;
@@ -11070,16 +11072,16 @@ _wrap_draw_line(int argc, VALUE *argv, VALUE self) {
11070
11072
  const char* cstr = Gosu::cstr_from_symbol(argv[7]);
11071
11073
 
11072
11074
  if (!strcmp(cstr, "default")) {
11073
- arg8 = Gosu::AM_DEFAULT;
11075
+ arg8 = Gosu::BM_DEFAULT;
11074
11076
  }
11075
11077
  else if (!strcmp(cstr, "add") || !strcmp(cstr, "additive")) {
11076
- arg8 = Gosu::AM_ADD;
11078
+ arg8 = Gosu::BM_ADD;
11077
11079
  }
11078
11080
  else if (!strcmp(cstr, "multiply")) {
11079
- arg8 = Gosu::AM_MULTIPLY;
11081
+ arg8 = Gosu::BM_MULTIPLY;
11080
11082
  }
11081
11083
  else {
11082
- SWIG_exception_fail(SWIG_ValueError, "invalid alpha mode (expected one of :default, :add, "
11084
+ SWIG_exception_fail(SWIG_ValueError, "invalid blend mode (expected one of :default, :add, "
11083
11085
  ":multiply)");
11084
11086
  }
11085
11087
  }
@@ -11110,7 +11112,7 @@ _wrap_draw_triangle(int argc, VALUE *argv, VALUE self) {
11110
11112
  double arg8 ;
11111
11113
  Gosu::Color arg9 ;
11112
11114
  Gosu::ZPos arg10 = (Gosu::ZPos) 0 ;
11113
- Gosu::AlphaMode arg11 = (Gosu::AlphaMode) Gosu::AM_DEFAULT ;
11115
+ Gosu::BlendMode arg11 = (Gosu::BlendMode) Gosu::BM_DEFAULT ;
11114
11116
  double val1 ;
11115
11117
  int ecode1 = 0 ;
11116
11118
  double val2 ;
@@ -11225,16 +11227,16 @@ _wrap_draw_triangle(int argc, VALUE *argv, VALUE self) {
11225
11227
  const char* cstr = Gosu::cstr_from_symbol(argv[10]);
11226
11228
 
11227
11229
  if (!strcmp(cstr, "default")) {
11228
- arg11 = Gosu::AM_DEFAULT;
11230
+ arg11 = Gosu::BM_DEFAULT;
11229
11231
  }
11230
11232
  else if (!strcmp(cstr, "add") || !strcmp(cstr, "additive")) {
11231
- arg11 = Gosu::AM_ADD;
11233
+ arg11 = Gosu::BM_ADD;
11232
11234
  }
11233
11235
  else if (!strcmp(cstr, "multiply")) {
11234
- arg11 = Gosu::AM_MULTIPLY;
11236
+ arg11 = Gosu::BM_MULTIPLY;
11235
11237
  }
11236
11238
  else {
11237
- SWIG_exception_fail(SWIG_ValueError, "invalid alpha mode (expected one of :default, :add, "
11239
+ SWIG_exception_fail(SWIG_ValueError, "invalid blend mode (expected one of :default, :add, "
11238
11240
  ":multiply)");
11239
11241
  }
11240
11242
  }
@@ -11268,7 +11270,7 @@ _wrap_draw_quad(int argc, VALUE *argv, VALUE self) {
11268
11270
  double arg11 ;
11269
11271
  Gosu::Color arg12 ;
11270
11272
  Gosu::ZPos arg13 = (Gosu::ZPos) 0 ;
11271
- Gosu::AlphaMode arg14 = (Gosu::AlphaMode) Gosu::AM_DEFAULT ;
11273
+ Gosu::BlendMode arg14 = (Gosu::BlendMode) Gosu::BM_DEFAULT ;
11272
11274
  double val1 ;
11273
11275
  int ecode1 = 0 ;
11274
11276
  double val2 ;
@@ -11415,16 +11417,16 @@ _wrap_draw_quad(int argc, VALUE *argv, VALUE self) {
11415
11417
  const char* cstr = Gosu::cstr_from_symbol(argv[13]);
11416
11418
 
11417
11419
  if (!strcmp(cstr, "default")) {
11418
- arg14 = Gosu::AM_DEFAULT;
11420
+ arg14 = Gosu::BM_DEFAULT;
11419
11421
  }
11420
11422
  else if (!strcmp(cstr, "add") || !strcmp(cstr, "additive")) {
11421
- arg14 = Gosu::AM_ADD;
11423
+ arg14 = Gosu::BM_ADD;
11422
11424
  }
11423
11425
  else if (!strcmp(cstr, "multiply")) {
11424
- arg14 = Gosu::AM_MULTIPLY;
11426
+ arg14 = Gosu::BM_MULTIPLY;
11425
11427
  }
11426
11428
  else {
11427
- SWIG_exception_fail(SWIG_ValueError, "invalid alpha mode (expected one of :default, :add, "
11429
+ SWIG_exception_fail(SWIG_ValueError, "invalid blend mode (expected one of :default, :add, "
11428
11430
  ":multiply)");
11429
11431
  }
11430
11432
  }
@@ -11451,7 +11453,7 @@ _wrap_draw_rect(int argc, VALUE *argv, VALUE self) {
11451
11453
  double arg4 ;
11452
11454
  Gosu::Color arg5 ;
11453
11455
  Gosu::ZPos arg6 = (Gosu::ZPos) 0 ;
11454
- Gosu::AlphaMode arg7 = (Gosu::AlphaMode) Gosu::AM_DEFAULT ;
11456
+ Gosu::BlendMode arg7 = (Gosu::BlendMode) Gosu::BM_DEFAULT ;
11455
11457
  double val1 ;
11456
11458
  int ecode1 = 0 ;
11457
11459
  double val2 ;
@@ -11516,16 +11518,16 @@ _wrap_draw_rect(int argc, VALUE *argv, VALUE self) {
11516
11518
  const char* cstr = Gosu::cstr_from_symbol(argv[6]);
11517
11519
 
11518
11520
  if (!strcmp(cstr, "default")) {
11519
- arg7 = Gosu::AM_DEFAULT;
11521
+ arg7 = Gosu::BM_DEFAULT;
11520
11522
  }
11521
11523
  else if (!strcmp(cstr, "add") || !strcmp(cstr, "additive")) {
11522
- arg7 = Gosu::AM_ADD;
11524
+ arg7 = Gosu::BM_ADD;
11523
11525
  }
11524
11526
  else if (!strcmp(cstr, "multiply")) {
11525
- arg7 = Gosu::AM_MULTIPLY;
11527
+ arg7 = Gosu::BM_MULTIPLY;
11526
11528
  }
11527
11529
  else {
11528
- SWIG_exception_fail(SWIG_ValueError, "invalid alpha mode (expected one of :default, :add, "
11530
+ SWIG_exception_fail(SWIG_ValueError, "invalid blend mode (expected one of :default, :add, "
11529
11531
  ":multiply)");
11530
11532
  }
11531
11533
  }
@@ -12518,7 +12520,7 @@ SWIGEXPORT void Init_gosu(void) {
12518
12520
  rb_define_const(mGosu, "VERSION", SWIG_From_std_string(static_cast< std::string >(Gosu::VERSION)));
12519
12521
  rb_define_const(mGosu, "LICENSES", SWIG_From_std_string(static_cast< std::string >(Gosu::LICENSES)));
12520
12522
  rb_define_const(mGosu, "MAJOR_VERSION", SWIG_From_int(static_cast< int >(1)));
12521
- rb_define_const(mGosu, "MINOR_VERSION", SWIG_From_int(static_cast< int >(1)));
12523
+ rb_define_const(mGosu, "MINOR_VERSION", SWIG_From_int(static_cast< int >(2)));
12522
12524
  rb_define_const(mGosu, "POINT_VERSION", SWIG_From_int(static_cast< int >(0)));
12523
12525
  rb_define_module_function(mGosu, "milliseconds", VALUEFUNC(_wrap_milliseconds), -1);
12524
12526
  rb_define_module_function(mGosu, "random", VALUEFUNC(_wrap_random), -1);
@@ -12532,7 +12534,7 @@ SWIGEXPORT void Init_gosu(void) {
12532
12534
  rb_define_module_function(mGosu, "distance", VALUEFUNC(_wrap_distance), -1);
12533
12535
  rb_define_module_function(mGosu, "default_font_name", VALUEFUNC(_wrap_default_font_name), -1);
12534
12536
  rb_define_const(mGosu, "MAX_TEXTURE_SIZE", SWIG_From_unsigned_SS_int(static_cast< unsigned int >(Gosu::MAX_TEXTURE_SIZE)));
12535
- rb_define_module_function(mGosu, "language", VALUEFUNC(_wrap_language), -1);
12537
+ rb_define_module_function(mGosu, "user_languages", VALUEFUNC(_wrap_user_languages), -1);
12536
12538
  rb_define_module_function(mGosu, "enable_undocumented_retrofication", VALUEFUNC(_wrap_enable_undocumented_retrofication), -1);
12537
12539
 
12538
12540
  SwigClassColor.klass = rb_define_class_under(mGosu, "Color", rb_cObject);
data/src/RubyGosu.h CHANGED
@@ -1,6 +1,6 @@
1
1
  /* ----------------------------------------------------------------------------
2
2
  * This file was automatically generated by SWIG (http://www.swig.org).
3
- * Version 4.1.0
3
+ * Version 4.0.2
4
4
  *
5
5
  * This file is not intended to be easily readable and contains a number of
6
6
  * coding conventions designed to improve portability and efficiency. Do not make
@@ -28,7 +28,7 @@ public:
28
28
  class SwigDirector_Window : public Gosu::Window, public Swig::Director {
29
29
 
30
30
  public:
31
- SwigDirector_Window(VALUE self,int width,int height,unsigned int window_flags=Gosu::WF_WINDOWED,double update_interval=16.666666);
31
+ SwigDirector_Window(VALUE self, int width, int height, unsigned int window_flags = Gosu::WF_WINDOWED, double update_interval = 16.666666);
32
32
  virtual ~SwigDirector_Window();
33
33
  virtual void show();
34
34
  virtual bool tick();
data/src/TexChunk.cpp CHANGED
@@ -44,7 +44,7 @@ Gosu::TexChunk::~TexChunk()
44
44
  }
45
45
 
46
46
  void Gosu::TexChunk::draw(double x1, double y1, Color c1, double x2, double y2, Color c2,
47
- double x3, double y3, Color c3, double x4, double y4, Color c4, ZPos z, AlphaMode mode) const
47
+ double x3, double y3, Color c3, double x4, double y4, Color c4, ZPos z, BlendMode mode) const
48
48
  {
49
49
  DrawOp op;
50
50
  op.render_state.texture = texture;
data/src/TexChunk.hpp CHANGED
@@ -29,7 +29,7 @@ public:
29
29
  double x2, double y2, Color c2,
30
30
  double x3, double y3, Color c3,
31
31
  double x4, double y4, Color c4,
32
- ZPos z, AlphaMode mode) const override;
32
+ ZPos z, BlendMode mode) const override;
33
33
 
34
34
  const GLTexInfo* gl_tex_info() const override { return &info; }
35
35
 
@@ -24,8 +24,8 @@ const unsigned char* Gosu::ttf_data_by_name(const string& font_name, unsigned fo
24
24
  log("Trying to find a font named '%s', flags=%x", font_name.c_str(), font_flags);
25
25
 
26
26
  unsigned symbolic_traits = 0;
27
- if (font_flags & Gosu::FF_BOLD) symbolic_traits |= kCTFontBoldTrait;
28
- if (font_flags & Gosu::FF_ITALIC) symbolic_traits |= kCTFontItalicTrait;
27
+ if (font_flags & Gosu::FF_BOLD) symbolic_traits |= kCTFontTraitBold;
28
+ if (font_flags & Gosu::FF_ITALIC) symbolic_traits |= kCTFontTraitItalic;
29
29
 
30
30
  NSDictionary *attributes = @{
31
31
  ((__bridge id) kCTFontNameAttribute): [NSString stringWithUTF8String:font_name.c_str()],
@@ -39,6 +39,14 @@ const unsigned char* Gosu::ttf_data_by_name(const string& font_name, unsigned fo
39
39
  if (descriptor) {
40
40
  CTFontRef font = CTFontCreateWithFontDescriptorAndOptions(descriptor, 20, nullptr, 0);
41
41
  if (font) {
42
+ if ((CTFontGetSymbolicTraits(font) & symbolic_traits) != symbolic_traits) {
43
+ // For some reason the initial call to CTFontCreateWithFontDescriptorAndOptions does
44
+ // not respect the requested font traits. Explicitly requesting the traits again
45
+ // seems to help. Tested on macOS 11.2.2.
46
+ CTFontRef correct_font = CTFontCreateCopyWithSymbolicTraits(font, 0.0, nullptr, symbolic_traits, symbolic_traits);
47
+ CFRelease(font);
48
+ font = correct_font;
49
+ }
42
50
  NSURL *url = CFBridgingRelease(CTFontCopyAttribute(font, kCTFontURLAttribute));
43
51
  if (url && url.fileSystemRepresentation) {
44
52
  log("Loading file '%s'", url.fileSystemRepresentation);
data/src/Utility.cpp CHANGED
@@ -1,20 +1,20 @@
1
1
  #include <Gosu/Utility.hpp>
2
- #include <Gosu/Platform.hpp>
3
2
 
3
+ #include <SDL.h>
4
4
  #include <utf8proc.h>
5
5
 
6
6
  #include <cstring>
7
+ #include <memory>
7
8
  #include <stdexcept>
8
- using namespace std;
9
9
 
10
- u32string Gosu::utf8_to_composed_utc4(const string& utf8)
10
+ std::u32string Gosu::utf8_to_composed_utc4(const std::string& utf8)
11
11
  {
12
- u32string utc4;
12
+ std::u32string utc4;
13
13
  utc4.reserve(utf8.size());
14
-
15
- auto* current_byte = reinterpret_cast<const utf8proc_uint8_t*>(utf8.data());
14
+
15
+ const auto* current_byte = reinterpret_cast<const utf8proc_uint8_t*>(utf8.data());
16
16
  auto remaining_length = utf8.length();
17
-
17
+
18
18
  // First convert from UTF-8 to UTC-4.
19
19
  utf8proc_int32_t codepoint;
20
20
  while (remaining_length) {
@@ -30,35 +30,35 @@ u32string Gosu::utf8_to_composed_utc4(const string& utf8)
30
30
  remaining_length -= bytes_read;
31
31
  }
32
32
  }
33
-
33
+
34
34
  // Now compose characters in-place.
35
- auto utc4_data = reinterpret_cast<const utf8proc_int32_t*>(utc4.data());
36
- // Note that this const_cast will not be necessary anymore in C++17.
37
- auto writable_utc4_data = const_cast<utf8proc_int32_t*>(utc4_data);
35
+ auto* utc4_data = reinterpret_cast<utf8proc_int32_t*>(utc4.data());
38
36
  auto options = static_cast<utf8proc_option_t>(UTF8PROC_NLF2LF | UTF8PROC_COMPOSE);
39
- auto new_length = utf8proc_normalize_utf32(writable_utc4_data, utc4.length(), options);
37
+ auto new_length = utf8proc_normalize_utf32(utc4_data, utc4.length(), options);
40
38
  if (new_length < 0) {
41
- throw runtime_error("Could not normalize '" + utf8 + "': " + utf8proc_errmsg(new_length));
39
+ throw std::runtime_error{"Could not normalize '" + utf8 +
40
+ "': " + utf8proc_errmsg(new_length)};
42
41
  }
43
42
  utc4.resize(new_length);
44
-
43
+
45
44
  return utc4;
46
45
  }
47
46
 
48
- bool Gosu::has_extension(string_view filename, string_view extension)
47
+ bool Gosu::has_extension(std::string_view filename, std::string_view extension)
49
48
  {
50
- size_t ext_len = extension.length();
49
+ std::size_t ext_len = extension.length();
51
50
  if (ext_len > filename.length()) {
52
51
  return false;
53
52
  }
54
53
 
55
- string_view::iterator filename_iter = filename.end();
56
- string_view::iterator ext_iter = extension.end();
54
+ std::string_view::iterator filename_iter = filename.end();
55
+ std::string_view::iterator ext_iter = extension.end();
57
56
  while (ext_len--) {
58
57
  --filename_iter;
59
58
  --ext_iter;
60
59
 
61
- if (tolower((int) *filename_iter) != tolower((int) *ext_iter)) {
60
+ if (std::tolower(static_cast<int>(*filename_iter)) !=
61
+ std::tolower(static_cast<int>(*ext_iter))) {
62
62
  return false;
63
63
  }
64
64
  }
@@ -66,10 +66,39 @@ bool Gosu::has_extension(string_view filename, string_view extension)
66
66
  return true;
67
67
  }
68
68
 
69
- #if defined(GOSU_IS_UNIX) && !defined(GOSU_IS_MAC)
70
- string Gosu::language()
69
+ #if SDL_VERSION_ATLEAST(2, 0, 14)
70
+ std::vector<std::string> Gosu::user_languages()
71
+ {
72
+ std::vector<std::string> user_languages;
73
+
74
+ std::unique_ptr<SDL_Locale, decltype(SDL_free)*> locales{SDL_GetPreferredLocales(), SDL_free};
75
+ if (!locales) return user_languages;
76
+
77
+ for (const SDL_Locale* locale = locales.get(); locale->language != nullptr; ++locale) {
78
+ std::string language = locale->language;
79
+ if (locale->country) {
80
+ language += "_";
81
+ language += locale->country;
82
+ }
83
+ user_languages.emplace_back(std::move(language));
84
+ }
85
+
86
+ return user_languages;
87
+ }
88
+ #else
89
+ #include <cstdlib>
90
+ #include <regex>
91
+
92
+ std::vector<std::string> Gosu::user_languages()
71
93
  {
72
- const char* env = getenv("LANG");
73
- return env ? env : "en_US";
94
+ static const std::regex language_regex{"[a-z]{2}_[A-Z]{2}([^A-Z].*)?"};
95
+
96
+ const char* locale = std::getenv("LANG");
97
+
98
+ if (locale && std::regex_match(locale, language_regex)) {
99
+ return {std::string{locale, locale + 5}};
100
+ }
101
+
102
+ return {};
74
103
  }
75
104
  #endif
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gosu
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.1.1
4
+ version: 1.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Julian Raschke
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-02-13 00:00:00.000000000 Z
11
+ date: 2021-03-18 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: |2
14
14
  2D game development library.
@@ -286,8 +286,6 @@ files:
286
286
  - src/TrueTypeFontUnix.cpp
287
287
  - src/TrueTypeFontWin.cpp
288
288
  - src/Utility.cpp
289
- - src/UtilityApple.cpp
290
- - src/UtilityWin.cpp
291
289
  - src/Version.cpp
292
290
  - src/WinUtility.cpp
293
291
  - src/WinUtility.hpp
data/src/UtilityApple.cpp DELETED
@@ -1,16 +0,0 @@
1
- #include <Gosu/Platform.hpp>
2
- #if defined(GOSU_IS_MAC)
3
-
4
- #import <Gosu/Utility.hpp>
5
- #import <Foundation/Foundation.h>
6
- using namespace std;
7
-
8
- string Gosu::language()
9
- {
10
- @autoreleasepool {
11
- NSString* language = [NSLocale preferredLanguages][0];
12
- return language.UTF8String ?: "en";
13
- }
14
- }
15
-
16
- #endif
data/src/UtilityWin.cpp DELETED
@@ -1,17 +0,0 @@
1
- #include <Gosu/Platform.hpp>
2
- #if defined(GOSU_IS_WIN)
3
-
4
- #include <Gosu/Utility.hpp>
5
- #include "WinUtility.hpp"
6
- #include <windows.h>
7
- using namespace std;
8
-
9
- string Gosu::language()
10
- {
11
- LCID lcid = GetUserDefaultLCID();
12
- char buffer[9];
13
- winapi_check(GetLocaleInfoA(lcid, LOCALE_SISO639LANGNAME, buffer, sizeof buffer));
14
- return buffer;
15
- }
16
-
17
- #endif