gosu 0.10.5 → 0.10.6

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
  SHA1:
3
- metadata.gz: 720a938ad883a798d38bf7b3608f1869ea6f55c2
4
- data.tar.gz: 85a15c9e41c2e6717de163eb4ca45be8f498055f
3
+ metadata.gz: c7e0dac99c81c5a229672c489a3b4a7b4cadb588
4
+ data.tar.gz: 13fc464f740ed462b7669f27a19f912b19566692
5
5
  SHA512:
6
- metadata.gz: 13f5e85de7eaad925b20def734945a968fb620e6d64daa43d209097216ca4ace21dd279f9963c5683a4bb8adb4713417a1a96596f21901c5d21f687500945feb
7
- data.tar.gz: 8a4f69d223a28e10ba5616a1e23fc0f666affd62722fb89cad2d81a3bbce885190a158c606cbd0578d466d95dd1ca6ce7cdaac8d3e48f2dbccf2018270399ddf
6
+ metadata.gz: d4d75d8e44a3dac0d7cea92e1b09d5cfe9ec100de7483992e74c6292d6223e0de2d94d28aa8a56a7bce31c1b3dab7026b48504576de9fbc5325ebb367d9ff73d
7
+ data.tar.gz: a5e0d9396708b8706b5f0a90f2e2ba6a3294edd7361894665253cc4918295097cf1a43400e0a5ba60941e759a78f867c8940959556a2c24786253e18c8db1ee4
@@ -45,7 +45,7 @@ namespace Gosu
45
45
  Graphics(unsigned physicalWidth, unsigned physicalHeight, bool fullscreen);
46
46
  ~Graphics();
47
47
 
48
- void setResolution(unsigned virtualWidth, unsigned virtualHeight,
48
+ void setResolution(unsigned logicalWidth, unsigned logicalHeight,
49
49
  double horizontalBlackBarWidth = 0, double verticalBlackBarHeight = 0);
50
50
 
51
51
  unsigned width() const;
@@ -111,7 +111,10 @@ namespace Gosu
111
111
  double x3, double y3, Color c3,
112
112
  double x4, double y4, Color c4,
113
113
  ZPos z, AlphaMode mode = amDefault);
114
-
114
+
115
+ //! For internal use only.
116
+ void setPhysicalResolution(unsigned physicalWidth, unsigned physicalHeight);
117
+
115
118
  //! For internal use only.
116
119
  static void scheduleDrawOp(const DrawOp& op);
117
120
 
@@ -87,21 +87,7 @@ namespace Gosu
87
87
  ifRetro = 1 << 5
88
88
  };
89
89
 
90
- #ifdef GOSU_IS_MAC
91
- // TODO: Without this gigantic hack, Gosu crashes in the "scale" function,
92
- // but _only_ when used from Ruby 1.9. It is unclear what might cause this -
93
- // maybe a compiler bug that tries to use SSE functions with the wrong
94
- // alignment. Adding __attribute__((aligned(16))) does not help, though.
95
- struct Transform
96
- {
97
- double value[16];
98
- bool operator==(const Transform &other) { for (int i = 0; i < 16; ++i) if ((*this)[i] != other[i]) return false; return true; }
99
- const double &operator[](std::size_t idx) const { return value[idx]; }
100
- double &operator[](std::size_t idx) { return value[idx]; }
101
- };
102
- #else
103
90
  typedef std::tr1::array<double, 16> Transform;
104
- #endif
105
91
  Transform translate(double x, double y);
106
92
  Transform rotate(double angle, double aroundX = 0, double aroundY = 0);
107
93
  Transform scale(double factor);
@@ -3,8 +3,8 @@
3
3
 
4
4
  #define GOSU_MAJOR_VERSION 0
5
5
  #define GOSU_MINOR_VERSION 10
6
- #define GOSU_POINT_VERSION 5
7
- #define GOSU_VERSION "0.10.5"
6
+ #define GOSU_POINT_VERSION 6
7
+ #define GOSU_VERSION "0.10.6"
8
8
 
9
9
  #define GOSU_COPYRIGHT_NOTICE \
10
10
  "This software uses the following third-party libraries:\n" \
@@ -10977,8 +10977,8 @@ SWIGEXPORT void Init_gosu(void) {
10977
10977
  SWIG_RubyInitializeTrackings();
10978
10978
  rb_define_const(mGosu, "MAJOR_VERSION", SWIG_From_int(static_cast< int >(0)));
10979
10979
  rb_define_const(mGosu, "MINOR_VERSION", SWIG_From_int(static_cast< int >(10)));
10980
- rb_define_const(mGosu, "POINT_VERSION", SWIG_From_int(static_cast< int >(5)));
10981
- rb_define_const(mGosu, "VERSION", SWIG_FromCharPtr("0.10.5"));
10980
+ rb_define_const(mGosu, "POINT_VERSION", SWIG_From_int(static_cast< int >(6)));
10981
+ rb_define_const(mGosu, "VERSION", SWIG_FromCharPtr("0.10.6"));
10982
10982
  rb_define_const(mGosu, "GOSU_COPYRIGHT_NOTICE", SWIG_FromCharPtr("This software uses the following third-party libraries:\n\nGosu, http://www.libgosu.org, MIT License, http://opensource.org/licenses/MIT\nSDL 2, http://www.libsdl.org, MIT License, http://opensource.org/licenses/MIT\nlibsndfile, http://www.mega-nerd.com/libsndfile, GNU LGPL 3, http://www.gnu.org/copyleft/lesser.html\nOpenAL Soft, http://kcat.strangesoft.net/openal.html, GNU LGPL 2, http://www.gnu.org/licenses/old-licenses/lgpl-2.0.html\n"));
10983
10983
  rb_define_module_function(mGosu, "milliseconds", VALUEFUNC(_wrap_milliseconds), -1);
10984
10984
  rb_define_module_function(mGosu, "random", VALUEFUNC(_wrap_random), -1);
@@ -50,33 +50,34 @@ struct Gosu::Graphics::Impl
50
50
  Transform baseTransform;
51
51
 
52
52
  DrawOpQueueStack warmedUpQueues;
53
+
54
+ void updateBaseTransform()
55
+ {
56
+ double scaleX = 1.0 * physWidth / virtWidth;
57
+ double scaleY = 1.0 * physHeight / virtHeight;
58
+ double scaleFactor = std::min(scaleX, scaleY);
59
+
60
+ Transform scaleTransform = scale(scaleFactor);
61
+ Transform translateTransform = translate(blackWidth, blackHeight);
62
+ baseTransform = concat(translateTransform, scaleTransform);
63
+ }
53
64
  };
54
65
 
55
66
  Gosu::Graphics::Graphics(unsigned physWidth, unsigned physHeight, bool fullscreen)
56
67
  : pimpl(new Impl)
57
68
  {
58
- pimpl->physWidth = physWidth;
59
- pimpl->physHeight = physHeight;
60
69
  pimpl->virtWidth = physWidth;
61
70
  pimpl->virtHeight = physHeight;
62
71
  pimpl->fullscreen = fullscreen;
63
72
  pimpl->blackWidth = 0;
64
73
  pimpl->blackHeight = 0;
65
-
74
+
66
75
  // TODO: Should be merged into RenderState and removed from Graphics.
67
- glMatrixMode(GL_PROJECTION);
68
- glLoadIdentity();
69
- glViewport(0, 0, physWidth, physHeight);
70
- #ifdef GOSU_IS_OPENGLES
71
- glOrthof(0, physWidth, physHeight, 0, -1, 1);
72
- #else
73
- glOrtho(0, physWidth, physHeight, 0, -1, 1);
74
- #endif
75
-
76
76
  glMatrixMode(GL_MODELVIEW);
77
77
  glLoadIdentity();
78
-
79
78
  glEnable(GL_BLEND);
79
+
80
+ setPhysicalResolution(physWidth, physHeight);
80
81
  }
81
82
 
82
83
  Gosu::Graphics::~Graphics()
@@ -111,13 +112,7 @@ void Gosu::Graphics::setResolution(unsigned virtualWidth, unsigned virtualHeight
111
112
  pimpl->blackWidth = horizontalBlackBarWidth;
112
113
  pimpl->blackHeight = verticalBlackBarHeight;
113
114
 
114
- double scaleX = 1.0 * pimpl->physWidth / virtualWidth;
115
- double scaleY = 1.0 * pimpl->physHeight / virtualHeight;
116
- double scaleFactor = std::min(scaleX, scaleY);
117
-
118
- Transform scaleTransform = scale(scaleFactor);
119
- Transform translateTransform = translate(pimpl->blackWidth, pimpl->blackHeight);
120
- pimpl-> baseTransform = concat(translateTransform, scaleTransform);
115
+ pimpl->updateBaseTransform();
121
116
  }
122
117
 
123
118
  bool Gosu::Graphics::begin(Gosu::Color clearWithColor)
@@ -382,6 +377,23 @@ void Gosu::Graphics::scheduleDrawOp(const Gosu::DrawOp &op)
382
377
  currentQueue().scheduleDrawOp(op);
383
378
  }
384
379
 
380
+ void Gosu::Graphics::setPhysicalResolution(unsigned physWidth, unsigned physHeight)
381
+ {
382
+ pimpl->physWidth = physWidth;
383
+ pimpl->physHeight = physHeight;
384
+ // TODO: Should be merged into RenderState and removed from Graphics.
385
+ glMatrixMode(GL_PROJECTION);
386
+ glLoadIdentity();
387
+ glViewport(0, 0, physWidth, physHeight);
388
+ #ifdef GOSU_IS_OPENGLES
389
+ glOrthof(0, physWidth, physHeight, 0, -1, 1);
390
+ #else
391
+ glOrtho(0, physWidth, physHeight, 0, -1, 1);
392
+ #endif
393
+
394
+ pimpl->updateBaseTransform();
395
+ }
396
+
385
397
  GOSU_UNIQUE_PTR<Gosu::ImageData> Gosu::Graphics::createImage(
386
398
  const Bitmap& src, unsigned srcX, unsigned srcY,
387
399
  unsigned srcWidth, unsigned srcHeight, unsigned flags)
@@ -182,6 +182,13 @@ bool Gosu::Window::tick()
182
182
  {
183
183
  if (SDL_GetWindowFlags(sharedWindow()) & SDL_WINDOW_HIDDEN) {
184
184
  SDL_ShowWindow(sharedWindow());
185
+
186
+ // SDL_GL_GetDrawableSize returns different values before and after showing the window.
187
+ // -> When first showing the window, update the physical size of Graphics (=glViewport).
188
+ // Fixes https://github.com/gosu/gosu/issues/318
189
+ int width, height;
190
+ SDL_GL_GetDrawableSize(sharedWindow(), &width, &height);
191
+ graphics().setPhysicalResolution(width, height);
185
192
  }
186
193
 
187
194
  SDL_Event e;
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: 0.10.5
4
+ version: 0.10.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Julian Raschke
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-01-11 00:00:00.000000000 Z
11
+ date: 2016-02-26 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: |2
14
14
  2D game development library.
@@ -158,7 +158,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
158
158
  version: '0'
159
159
  requirements: []
160
160
  rubyforge_project:
161
- rubygems_version: 2.5.0
161
+ rubygems_version: 2.5.1
162
162
  signing_key:
163
163
  specification_version: 4
164
164
  summary: 2D game development library.