gosu 1.4.6 → 2.0.0.pre6

Sign up to get free protection for your applications and to get access to all the features.
Files changed (170) hide show
  1. checksums.yaml +4 -4
  2. data/COPYING +2 -1
  3. data/dependencies/SDL/include/SDL_atomic.h +2 -3
  4. data/dependencies/SDL/include/SDL_audio.h +7 -7
  5. data/dependencies/SDL/include/SDL_blendmode.h +1 -1
  6. data/dependencies/SDL/include/SDL_endian.h +3 -3
  7. data/dependencies/SDL/include/SDL_gamecontroller.h +4 -4
  8. data/dependencies/SDL/include/SDL_hints.h +72 -28
  9. data/dependencies/SDL/include/SDL_joystick.h +8 -5
  10. data/dependencies/SDL/include/SDL_keycode.h +1 -1
  11. data/dependencies/SDL/include/SDL_main.h +7 -0
  12. data/dependencies/SDL/include/SDL_mouse.h +6 -7
  13. data/dependencies/SDL/include/SDL_mutex.h +79 -5
  14. data/dependencies/SDL/include/SDL_opengl_glext.h +5 -1
  15. data/dependencies/SDL/include/SDL_power.h +7 -8
  16. data/dependencies/SDL/include/SDL_render.h +5 -0
  17. data/dependencies/SDL/include/SDL_revision.h +2 -2
  18. data/dependencies/SDL/include/SDL_sensor.h +1 -1
  19. data/dependencies/SDL/include/SDL_stdinc.h +19 -11
  20. data/dependencies/SDL/include/SDL_thread.h +2 -2
  21. data/dependencies/SDL/include/SDL_version.h +2 -2
  22. data/dependencies/SDL/include/SDL_video.h +30 -2
  23. data/dependencies/SDL/include/begin_code.h +7 -7
  24. data/dependencies/SDL/include/close_code.h +2 -2
  25. data/dependencies/SDL/lib/x64/libSDL2.dll.a +0 -0
  26. data/dependencies/SDL/lib/x86/libSDL2.dll.a +0 -0
  27. data/dependencies/SDL_sound/SDL_sound.h +1 -1
  28. data/dependencies/SDL_sound/dr_flac.h +48 -23
  29. data/dependencies/SDL_sound/dr_mp3.h +34 -14
  30. data/dependencies/SDL_sound/stb_vorbis.h +3 -2
  31. data/dependencies/mojoAL/mojoal.c +1 -1
  32. data/ext/{gosu → gosu-ffi}/extconf.rb +34 -33
  33. data/ext/gosu-ffi/gosu-ffi.def +464 -0
  34. data/ffi/Gosu.cpp +307 -0
  35. data/ffi/Gosu.h +84 -0
  36. data/ffi/Gosu_Channel.cpp +62 -0
  37. data/ffi/Gosu_Channel.h +17 -0
  38. data/ffi/Gosu_Color.cpp +132 -0
  39. data/ffi/Gosu_Color.h +31 -0
  40. data/ffi/Gosu_Constants.cpp +334 -0
  41. data/ffi/Gosu_FFI.h +34 -0
  42. data/ffi/Gosu_FFI_internal.h +161 -0
  43. data/ffi/Gosu_Font.cpp +92 -0
  44. data/ffi/Gosu_Font.h +32 -0
  45. data/ffi/Gosu_Image.cpp +206 -0
  46. data/ffi/Gosu_Image.h +60 -0
  47. data/ffi/Gosu_Sample.cpp +29 -0
  48. data/ffi/Gosu_Sample.h +14 -0
  49. data/ffi/Gosu_Song.cpp +69 -0
  50. data/ffi/Gosu_Song.h +18 -0
  51. data/ffi/Gosu_TextInput.cpp +94 -0
  52. data/ffi/Gosu_TextInput.h +25 -0
  53. data/ffi/Gosu_Window.cpp +314 -0
  54. data/ffi/Gosu_Window.h +78 -0
  55. data/include/Gosu/Audio.hpp +6 -11
  56. data/include/Gosu/Bitmap.hpp +38 -53
  57. data/include/Gosu/Buffer.hpp +54 -0
  58. data/include/Gosu/Color.hpp +27 -35
  59. data/include/Gosu/Directories.hpp +25 -28
  60. data/include/Gosu/Drawable.hpp +58 -0
  61. data/include/Gosu/Font.hpp +6 -5
  62. data/include/Gosu/Fwd.hpp +4 -6
  63. data/include/Gosu/Gosu.hpp +5 -5
  64. data/include/Gosu/Graphics.hpp +51 -61
  65. data/include/Gosu/GraphicsBase.hpp +1 -11
  66. data/include/Gosu/Image.hpp +11 -14
  67. data/include/Gosu/Math.hpp +50 -72
  68. data/include/Gosu/Transform.hpp +32 -0
  69. data/include/Gosu/Utility.hpp +51 -1
  70. data/include/Gosu/Version.hpp +3 -3
  71. data/include/Gosu/Window.hpp +15 -9
  72. data/lib/SDL2.dll +0 -0
  73. data/lib/gosu/channel.rb +49 -0
  74. data/lib/gosu/color.rb +150 -0
  75. data/lib/gosu/compat.rb +29 -8
  76. data/lib/gosu/constants.rb +386 -0
  77. data/lib/gosu/ffi.rb +258 -0
  78. data/lib/gosu/font.rb +56 -0
  79. data/lib/gosu/gl_tex_info.rb +33 -0
  80. data/lib/gosu/gosu.rb +210 -0
  81. data/lib/gosu/image.rb +141 -0
  82. data/lib/gosu/numeric.rb +17 -0
  83. data/lib/gosu/preview.rb +6 -6
  84. data/lib/gosu/sample.rb +24 -0
  85. data/lib/gosu/song.rb +56 -0
  86. data/lib/gosu/text_input.rb +69 -0
  87. data/lib/gosu/window.rb +228 -0
  88. data/lib/gosu.rb +29 -8
  89. data/lib64/SDL2.dll +0 -0
  90. data/rdoc/gosu.rb +0 -2
  91. data/src/Audio.cpp +12 -12
  92. data/src/AudioFile.hpp +5 -4
  93. data/src/AudioFileAudioToolbox.cpp +8 -8
  94. data/src/AudioFileSDLSound.cpp +7 -10
  95. data/src/BinPacker.cpp +187 -0
  96. data/src/BinPacker.hpp +55 -0
  97. data/src/Bitmap.cpp +166 -144
  98. data/src/BitmapIO.cpp +60 -86
  99. data/src/Buffer.cpp +159 -0
  100. data/src/Color.cpp +75 -80
  101. data/src/Directories.cpp +47 -0
  102. data/src/DirectoriesUIKit.cpp +50 -0
  103. data/src/DrawOp.hpp +9 -4
  104. data/src/DrawOpQueue.hpp +2 -2
  105. data/src/Drawable.cpp +95 -0
  106. data/src/EmptyDrawable.hpp +38 -0
  107. data/src/FPS.cpp +31 -0
  108. data/src/Font.cpp +104 -74
  109. data/src/GosuGLView.cpp +14 -6
  110. data/src/GosuViewController.cpp +2 -10
  111. data/src/Graphics.cpp +60 -126
  112. data/src/GraphicsImpl.hpp +17 -47
  113. data/src/Image.cpp +41 -35
  114. data/src/Input.cpp +7 -8
  115. data/src/Macro.cpp +6 -6
  116. data/src/Macro.hpp +4 -4
  117. data/src/MarkupParser.cpp +5 -5
  118. data/src/Math.cpp +35 -22
  119. data/src/OffScreenTarget.cpp +53 -49
  120. data/src/OffScreenTarget.hpp +13 -11
  121. data/src/OpenGLContext.cpp +117 -0
  122. data/src/OpenGLContext.hpp +41 -0
  123. data/src/RenderState.hpp +21 -19
  124. data/src/Resolution.cpp +23 -21
  125. data/src/TexChunk.cpp +35 -80
  126. data/src/TexChunk.hpp +44 -35
  127. data/src/Text.cpp +1 -1
  128. data/src/TextBuilder.cpp +35 -21
  129. data/src/TextBuilder.hpp +6 -9
  130. data/src/Texture.cpp +62 -80
  131. data/src/Texture.hpp +25 -23
  132. data/src/TiledDrawable.cpp +150 -0
  133. data/src/TiledDrawable.hpp +47 -0
  134. data/src/TimingApple.cpp +1 -1
  135. data/src/Transform.cpp +45 -50
  136. data/src/TransformStack.hpp +16 -16
  137. data/src/TrueTypeFont.cpp +59 -51
  138. data/src/TrueTypeFont.hpp +6 -7
  139. data/src/TrueTypeFontApple.cpp +28 -19
  140. data/src/TrueTypeFontUnix.cpp +27 -23
  141. data/src/TrueTypeFontWin.cpp +30 -30
  142. data/src/Utility.cpp +84 -21
  143. data/src/UtilityWin.cpp +45 -0
  144. data/src/Window.cpp +92 -142
  145. data/src/WindowUIKit.cpp +14 -14
  146. metadata +72 -31
  147. data/include/Gosu/IO.hpp +0 -254
  148. data/include/Gosu/ImageData.hpp +0 -53
  149. data/include/Gosu/Inspection.hpp +0 -7
  150. data/lib/gosu/patches.rb +0 -66
  151. data/lib/gosu/run.rb +0 -20
  152. data/lib/gosu/swig_patches.rb +0 -110
  153. data/src/BlockAllocator.cpp +0 -131
  154. data/src/BlockAllocator.hpp +0 -32
  155. data/src/DirectoriesApple.cpp +0 -69
  156. data/src/DirectoriesUnix.cpp +0 -46
  157. data/src/DirectoriesWin.cpp +0 -65
  158. data/src/EmptyImageData.hpp +0 -52
  159. data/src/FileUnix.cpp +0 -99
  160. data/src/FileWin.cpp +0 -88
  161. data/src/IO.cpp +0 -60
  162. data/src/Iconv.hpp +0 -51
  163. data/src/Inspection.cpp +0 -27
  164. data/src/LargeImageData.cpp +0 -215
  165. data/src/LargeImageData.hpp +0 -39
  166. data/src/Log.hpp +0 -19
  167. data/src/RubyGosu.cxx +0 -13100
  168. data/src/RubyGosu.h +0 -49
  169. data/src/WinUtility.cpp +0 -61
  170. data/src/WinUtility.hpp +0 -27
data/src/IO.cpp DELETED
@@ -1,60 +0,0 @@
1
- #include <Gosu/IO.hpp>
2
- #include <cassert>
3
- #include <cstring>
4
- using namespace std;
5
-
6
- void Gosu::Reader::read(void* dest, size_t length)
7
- {
8
- res->read(pos, length, dest);
9
- seek(length);
10
- }
11
-
12
- void Gosu::Writer::write(const void* source, size_t length)
13
- {
14
- // Try to resize the source if necessary.
15
- if (pos + length > res->size()) {
16
- res->resize(pos + length);
17
- }
18
-
19
- res->write(pos, length, source);
20
- seek(length);
21
- }
22
-
23
- size_t Gosu::Buffer::size() const
24
- {
25
- return buf.size();
26
- }
27
-
28
- void Gosu::Buffer::resize(size_t new_size)
29
- {
30
- buf.resize(new_size);
31
- }
32
-
33
- void Gosu::Buffer::read(size_t offset, size_t length, void* dest_buffer) const
34
- {
35
- assert (offset + length <= size());
36
- if (length) {
37
- memcpy(dest_buffer, &buf[offset], length);
38
- }
39
- }
40
-
41
- void Gosu::Buffer::write(size_t offset, size_t length, const void* source_buffer)
42
- {
43
- assert (offset + length <= size());
44
- if (length) {
45
- memcpy(&buf[offset], source_buffer, length);
46
- }
47
- }
48
-
49
- void Gosu::load_file(Buffer& buffer, const string& filename)
50
- {
51
- File file(filename);
52
- buffer.resize(file.size());
53
- file.read(0, buffer.size(), buffer.data());
54
- }
55
-
56
- void Gosu::save_file(const Buffer& buffer, const string& filename)
57
- {
58
- File file(filename, FM_REPLACE);
59
- file.write(0, buffer.size(), buffer.data());
60
- }
data/src/Iconv.hpp DELETED
@@ -1,51 +0,0 @@
1
- #pragma once
2
-
3
- #include <Gosu/Platform.hpp>
4
-
5
- #include <iconv.h>
6
- #include <errno.h>
7
-
8
- namespace Gosu
9
- {
10
- template<typename Out, const char* to, const char* from, typename In>
11
- Out iconvert(const In& in)
12
- {
13
- if (in.empty()) return Out();
14
-
15
- const size_t buffer_len = 128;
16
- typedef typename In::value_type InElem;
17
- typedef typename Out::value_type OutElem;
18
-
19
- static iconv_t cd = iconv_open(to, from);
20
-
21
- Out result;
22
- OutElem buffer[buffer_len];
23
-
24
- char* inbuf = const_cast<char*>(reinterpret_cast<const char*>(&in[0]));
25
- size_t inbytesleft = in.size() * sizeof(InElem);
26
- char* outbuf = reinterpret_cast<char*>(buffer);
27
- size_t outbytesleft = sizeof buffer;
28
-
29
- for (;;) {
30
- size_t ret = ::iconv(cd, &inbuf, &inbytesleft, &outbuf, &outbytesleft);
31
- if (ret == static_cast<size_t>(-1) && errno == EILSEQ) {
32
- // Skip illegal sequence part, repeat loop.
33
- // TODO: Or retry w/ different encoding?
34
- ++inbuf;
35
- --inbytesleft;
36
- }
37
- else if (ret == static_cast<size_t>(-1) && errno == E2BIG) {
38
- // Append new characters, reset out buffer, then repeat loop.
39
- result.insert(result.end(), buffer, buffer + buffer_len);
40
- outbuf = reinterpret_cast<char*>(buffer);
41
- outbytesleft = sizeof buffer;
42
- }
43
- else {
44
- // Append what's new in the buffer, then LEAVE loop.
45
- result.insert(result.end(), buffer,
46
- buffer + buffer_len - outbytesleft / sizeof(OutElem));
47
- return result;
48
- }
49
- }
50
- }
51
- }
data/src/Inspection.cpp DELETED
@@ -1,27 +0,0 @@
1
- #include <Gosu/Inspection.hpp>
2
- #include <Gosu/Timing.hpp>
3
-
4
- namespace Gosu
5
- {
6
- namespace FPS
7
- {
8
- int fps, accum;
9
- unsigned long sec;
10
-
11
- void register_frame()
12
- {
13
- ++accum;
14
- unsigned long new_sec = Gosu::milliseconds() / 1000;
15
- if (sec != new_sec) {
16
- sec = new_sec;
17
- fps = accum;
18
- accum = 0;
19
- }
20
- }
21
- }
22
-
23
- int fps()
24
- {
25
- return FPS::fps;
26
- }
27
- }
@@ -1,215 +0,0 @@
1
- #include "LargeImageData.hpp"
2
- #include <Gosu/Bitmap.hpp>
3
- #include <Gosu/Graphics.hpp>
4
- #include <Gosu/Math.hpp>
5
- #include <cmath>
6
- #include <stdexcept>
7
-
8
- const Gosu::ImageData& Gosu::LargeImageData::tile(int x, int y) const
9
- {
10
- return *m_tiles.at(static_cast<std::size_t>(y * m_tiles_x + x));
11
- }
12
-
13
- Gosu::LargeImageData::LargeImageData(const Bitmap& source, int tile_width, int tile_height,
14
- unsigned image_flags)
15
- {
16
- m_w = source.width();
17
- m_h = source.height();
18
- // Manual ceil() for integer division.
19
- m_tiles_x = (m_w + tile_width - 1) / tile_width;
20
- m_tiles_y = (m_h + tile_height - 1) / tile_height;
21
-
22
- // When there are no tiles, set both fields to 0 to avoid entering any for () loop in this class.
23
- if (m_tiles_x == 0 || m_tiles_y == 0) {
24
- m_tiles_x = m_tiles_y = 0;
25
- }
26
-
27
- m_tiles.reserve(m_tiles_x * m_tiles_y);
28
-
29
- for (int y = 0; y < m_tiles_y; ++y) {
30
- for (int x = 0; x < m_tiles_x; ++x) {
31
- int src_width = tile_width;
32
- if (x == m_tiles_x - 1 && m_w % tile_width != 0) {
33
- // The right-most parts don't necessarily have the full width.
34
- src_width = m_w % tile_width;
35
- }
36
-
37
- int src_height = tile_height;
38
- if (y == m_tiles_y - 1 && m_h % tile_height != 0) {
39
- // Same for the parts on the bottom.
40
- src_height = m_h % tile_height;
41
- }
42
-
43
- unsigned local_flags = IF_TILEABLE | image_flags;
44
-
45
- // Left edge, only tileable if requested in image_flags.
46
- if (x == 0) {
47
- local_flags &= ~IF_TILEABLE_LEFT;
48
- local_flags |= (image_flags & IF_TILEABLE_LEFT);
49
- }
50
- // Right edge, only tileable if requested in image_flags.
51
- if (x == m_tiles_x - 1) {
52
- local_flags &= ~IF_TILEABLE_RIGHT;
53
- local_flags |= (image_flags & IF_TILEABLE_RIGHT);
54
- }
55
- // Top edge, only tileable if requested in image_flags.
56
- if (y == 0) {
57
- local_flags &= ~IF_TILEABLE_TOP;
58
- local_flags |= (image_flags & IF_TILEABLE_TOP);
59
- }
60
- // Bottom edge, only tileable if requested in image_flags.
61
- if (y == m_tiles_y - 1) {
62
- local_flags &= ~IF_TILEABLE_BOTTOM;
63
- local_flags |= (image_flags & IF_TILEABLE_BOTTOM);
64
- }
65
-
66
- m_tiles.emplace_back(Graphics::create_image(source, x * tile_width, y * tile_height,
67
- src_width, src_height, local_flags));
68
- }
69
- }
70
- }
71
-
72
- void Gosu::LargeImageData::draw(double x1, double y1, Color c1, double x2, double y2, Color c2,
73
- double x3, double y3, Color c3, double x4, double y4, Color c4,
74
- ZPos z, BlendMode mode) const
75
- {
76
- normalize_coordinates(x1, y1, x2, y2, x3, y3, c3, x4, y4, c4);
77
-
78
- double y = 0;
79
- for (int ty = 0; ty < m_tiles_y; ++ty) {
80
- double x = 0;
81
- for (int tx = 0; tx < m_tiles_x; ++tx) {
82
- const ImageData& image = tile(tx, ty);
83
-
84
- double rel_x_l = x / m_w;
85
- double rel_x_r = (x + image.width()) / m_w;
86
- double rel_y_t = y / m_h;
87
- double rel_y_b = (y + image.height()) / m_h;
88
-
89
- // NOLINTNEXTLINE(cppcoreguidelines-macro-usage)
90
- #define LERP2D(what, x_weight, y_weight) \
91
- lerp(lerp(what##1, what##3, y_weight), lerp(what##2, what##4, y_weight), x_weight);
92
-
93
- double x_t_l = LERP2D(x, rel_x_l, rel_y_t);
94
- double x_t_r = LERP2D(x, rel_x_r, rel_y_t);
95
- double x_b_l = LERP2D(x, rel_x_l, rel_y_b);
96
- double x_b_r = LERP2D(x, rel_x_r, rel_y_b);
97
-
98
- double y_t_l = LERP2D(y, rel_x_l, rel_y_t);
99
- double y_t_r = LERP2D(y, rel_x_r, rel_y_t);
100
- double y_b_l = LERP2D(y, rel_x_l, rel_y_b);
101
- double y_b_r = LERP2D(y, rel_x_r, rel_y_b);
102
-
103
- Color c_t_l = LERP2D(c, rel_x_l, rel_y_t);
104
- Color c_t_r = LERP2D(c, rel_x_r, rel_y_t);
105
- Color c_b_l = LERP2D(c, rel_x_l, rel_y_b);
106
- Color c_b_r = LERP2D(c, rel_x_r, rel_y_b);
107
-
108
- image.draw(x_t_l, y_t_l, c_t_l, x_t_r, y_t_r, c_t_r, x_b_l, y_b_l, c_b_l, x_b_r, y_b_r,
109
- c_b_r, z, mode);
110
-
111
- x += image.width();
112
- }
113
- y += tile(0, ty).height();
114
- }
115
- }
116
-
117
- std::unique_ptr<Gosu::ImageData> Gosu::LargeImageData::subimage(int left, int top, int width,
118
- int height) const
119
- {
120
- if (left < 0 || top < 0 || left + width > m_w || top + height > m_h) {
121
- throw std::invalid_argument{"subimage bounds exceed those of its parent"};
122
- }
123
- if (width <= 0 || height <= 0) {
124
- throw std::invalid_argument{"cannot create empty subimage"};
125
- }
126
-
127
- int sub_tiles_y = 0;
128
- std::vector<std::unique_ptr<ImageData>> sub_tiles;
129
-
130
- int y = 0;
131
- for (int ty = 0; ty < m_tiles_y; ++ty) {
132
- int row_height = tile(0, ty).height();
133
-
134
- if (y + row_height <= top) {
135
- // Skip rows until we are at the requested Y coordinate.
136
- y += row_height;
137
- continue;
138
- }
139
- if (y >= top + height) {
140
- // Also skip all rows after reaching the bottom requested Y coordinate.
141
- break;
142
- }
143
-
144
- sub_tiles_y += 1;
145
-
146
- int x = 0;
147
- for (int tx = 0; tx < m_tiles_x; ++tx) {
148
- const ImageData& image = tile(tx, ty);
149
-
150
- if (x + image.width() <= left) {
151
- // Skip columns until we are at the requested X coordinate.
152
- x += image.width();
153
- continue;
154
- }
155
- if (x >= left + width) {
156
- // Also skip all columns after reaching the right-most requested Y coordinate.
157
- break;
158
- }
159
-
160
- int sub_left = std::max(0, left - x);
161
- int sub_top = std::max(0, top - y);
162
- int sub_right = std::min(image.width(), left + width - x);
163
- int sub_bottom = std::min(image.height(), top + height - y);
164
-
165
- sub_tiles.emplace_back(
166
- image.subimage(sub_left, sub_top, sub_right - sub_left, sub_bottom - sub_top));
167
-
168
- x += image.width();
169
- }
170
- y += tile(0, ty).height();
171
- }
172
-
173
- if (sub_tiles.size() == 1) {
174
- return move(sub_tiles[0]);
175
- }
176
- else {
177
- std::unique_ptr<LargeImageData> result(new LargeImageData());
178
- result->m_w = width;
179
- result->m_h = height;
180
- result->m_tiles_x = static_cast<int>(sub_tiles.size()) / sub_tiles_y;
181
- result->m_tiles_y = sub_tiles_y;
182
- result->m_tiles.swap(sub_tiles);
183
- return move(result);
184
- }
185
- }
186
-
187
- Gosu::Bitmap Gosu::LargeImageData::to_bitmap() const
188
- {
189
- Bitmap bitmap(width(), height());
190
- int y = 0;
191
- for (int ty = 0; ty < m_tiles_y; ++ty) {
192
- int x = 0;
193
- for (int tx = 0; tx < m_tiles_x; ++tx) {
194
- const ImageData& image = tile(tx, ty);
195
- bitmap.insert(x, y, image.to_bitmap());
196
- x += image.width();
197
- }
198
- y += tile(0, ty).height();
199
- }
200
- return bitmap;
201
- }
202
-
203
- void Gosu::LargeImageData::insert(const Bitmap& bitmap, int at_x, int at_y)
204
- {
205
- int y = 0;
206
- for (int ty = 0; ty < m_tiles_y; ++ty) {
207
- int x = 0;
208
- for (int tx = 0; tx < m_tiles_x; ++tx) {
209
- ImageData& image = *m_tiles[static_cast<std::size_t>(ty * m_tiles_x + tx)];
210
- image.insert(bitmap, at_x - x, at_y - y);
211
- x += image.width();
212
- }
213
- y += tile(0, ty).height();
214
- }
215
- }
@@ -1,39 +0,0 @@
1
- #pragma once
2
-
3
- #include <Gosu/Fwd.hpp>
4
- #include <Gosu/ImageData.hpp>
5
- #include <Gosu/Platform.hpp>
6
- #include "GraphicsImpl.hpp"
7
- #include <memory>
8
- #include <vector>
9
-
10
- class Gosu::LargeImageData : public Gosu::ImageData
11
- {
12
- int m_w, m_h;
13
- int m_tiles_x, m_tiles_y;
14
- std::vector<std::unique_ptr<ImageData>> m_tiles;
15
-
16
- LargeImageData() = default;
17
-
18
- const ImageData& tile(int x, int y) const;
19
-
20
- public:
21
- LargeImageData(const Bitmap& source, int tile_width, int tile_height, unsigned image_flags);
22
-
23
- int width() const override { return m_w; }
24
- int height() const override { return m_h; }
25
-
26
- void draw(double x1, double y1, Color c1, //
27
- double x2, double y2, Color c2, //
28
- double x3, double y3, Color c3, //
29
- double x4, double y4, Color c4, //
30
- ZPos z, BlendMode mode) const override;
31
-
32
- const GLTexInfo* gl_tex_info() const override { return nullptr; }
33
-
34
- std::unique_ptr<ImageData> subimage(int x, int y, int width, int height) const override;
35
-
36
- Bitmap to_bitmap() const override;
37
-
38
- void insert(const Bitmap& bitmap, int x, int y) override;
39
- };
data/src/Log.hpp DELETED
@@ -1,19 +0,0 @@
1
- #pragma once
2
-
3
- #include <cstdio>
4
- #include <cstdlib>
5
- #include <utility>
6
-
7
- namespace Gosu
8
- {
9
- template<class... Args>
10
- void log(const char* format, Args&&... args)
11
- {
12
- // NOLINTNEXTLINE(concurrency-mt-unsafe) - we don't even follow the pointer
13
- static bool enable_log = (std::getenv("GOSU_DEBUG") != nullptr);
14
- if (enable_log) {
15
- std::fprintf(stderr, format, std::forward<Args>(args)...);
16
- std::fprintf(stderr, "\n");
17
- }
18
- }
19
- }