gosu 0.13.3 → 0.14.0.pre2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gosu/Audio.hpp +15 -11
- data/Gosu/Font.hpp +24 -20
- data/Gosu/Fwd.hpp +1 -1
- data/Gosu/Graphics.hpp +8 -9
- data/Gosu/ImageData.hpp +1 -1
- data/Gosu/Input.hpp +1 -1
- data/Gosu/Math.hpp +0 -18
- data/Gosu/Text.hpp +22 -30
- data/Gosu/TextInput.hpp +13 -0
- data/Gosu/Utility.hpp +2 -0
- data/Gosu/Window.hpp +3 -3
- data/README.md +3 -4
- data/ext/gosu/extconf.rb +7 -9
- data/lib/gosu/swig_patches.rb +1 -4
- data/rdoc/gosu.rb +34 -9
- data/src/Audio.cpp +6 -6
- data/src/AudioImpl.cpp +2 -2
- data/src/Bitmap.cpp +1 -2
- data/src/BitmapIO.cpp +21 -2
- data/src/BlockAllocator.cpp +1 -1
- data/src/Channel.cpp +7 -1
- data/src/ClipRectStack.hpp +4 -1
- data/src/Color.cpp +2 -1
- data/src/DirectoriesWin.cpp +1 -1
- data/src/DrawOp.hpp +8 -4
- data/src/DrawOpQueue.hpp +13 -24
- data/src/FileUnix.cpp +3 -1
- data/src/Font.cpp +92 -96
- data/src/GosuGLView.cpp +59 -31
- data/src/GosuGLView.hpp +14 -0
- data/src/GosuViewController.cpp +21 -21
- data/src/{GosuViewController.h → GosuViewController.hpp} +2 -4
- data/src/Graphics.cpp +71 -38
- data/src/GraphicsImpl.hpp +12 -29
- data/src/Image.cpp +5 -7
- data/src/Input.cpp +7 -5
- data/src/InputUIKit.cpp +19 -37
- data/src/Macro.cpp +10 -2
- data/src/MarkupParser.cpp +241 -0
- data/src/MarkupParser.hpp +61 -0
- data/src/Math.cpp +1 -1
- data/src/OffScreenTarget.cpp +99 -0
- data/src/OffScreenTarget.hpp +23 -0
- data/src/OggFile.hpp +10 -0
- data/src/RenderState.hpp +0 -2
- data/src/Resolution.cpp +2 -2
- data/src/RubyGosu.cxx +457 -244
- data/src/TexChunk.cpp +8 -6
- data/src/Text.cpp +58 -345
- data/src/TextBuilder.cpp +138 -0
- data/src/TextBuilder.hpp +55 -0
- data/src/TextInput.cpp +27 -10
- data/src/Texture.cpp +22 -17
- data/src/Texture.hpp +19 -20
- data/src/TimingApple.cpp +5 -7
- data/src/TimingUnix.cpp +1 -4
- data/src/TimingWin.cpp +4 -1
- data/src/TrueTypeFont.cpp +282 -0
- data/src/TrueTypeFont.hpp +66 -0
- data/src/TrueTypeFontApple.cpp +65 -0
- data/src/TrueTypeFontUnix.cpp +91 -0
- data/src/TrueTypeFontWin.cpp +82 -0
- data/src/Utility.cpp +40 -0
- data/src/Window.cpp +7 -6
- data/src/WindowUIKit.cpp +9 -4
- data/src/stb_truetype.h +4589 -0
- data/src/utf8proc.c +755 -0
- data/src/utf8proc.h +699 -0
- data/src/utf8proc_data.h +14386 -0
- metadata +23 -16
- data/src/FormattedString.cpp +0 -237
- data/src/FormattedString.hpp +0 -47
- data/src/GosuAppDelegate.cpp +0 -30
- data/src/GosuAppDelegate.h +0 -8
- data/src/GosuGLView.h +0 -8
- data/src/TextApple.cpp +0 -212
- data/src/TextTTFWin.cpp +0 -197
- data/src/TextUnix.cpp +0 -280
- data/src/TextWin.cpp +0 -191
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: fae36fbf2c222327884fa9b34c5c2dc0a085a8fe7389dcc3c58d6d865b44a8f5
|
4
|
+
data.tar.gz: 843de673ab12f0d0ab72f29d560e29dd1262ecb8e4c1929118fc9dd770db5b77
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7a0f3a6bc482c1e30dbf2e04a4097ddde5fe630a8583875c9344463808d306b8f0c41131b70229bfc0f343e948d15714e65707bef077c18b434c434f9bd6a3e3
|
7
|
+
data.tar.gz: 2a1ec2451e8653b6dd7682faf8c4e7cf4b354a778234c0db51c4f0f17ad547a7a6356019c25d8458f1975d685c81f8e219cd384c2e81ed285f8053b5e2a61077
|
data/Gosu/Audio.hpp
CHANGED
@@ -11,26 +11,31 @@
|
|
11
11
|
|
12
12
|
namespace Gosu
|
13
13
|
{
|
14
|
-
//! Sample::play returns a Channel that represents the sound
|
15
|
-
//! This object can be used to stop sounds dynamically, or to check whether
|
14
|
+
//! Sample::play returns a Channel that represents the sound being played.
|
15
|
+
//! This object can be used to stop sounds dynamically, or to check whether playback has
|
16
|
+
//! finished.
|
16
17
|
class Channel
|
17
18
|
{
|
18
19
|
mutable int channel, token;
|
19
20
|
|
20
21
|
public:
|
22
|
+
//! This creates an "empty" Channel which is expired and cannot be resumed.
|
23
|
+
Channel();
|
21
24
|
//! For internal use only.
|
22
25
|
Channel(int channel, int token);
|
23
26
|
|
27
|
+
//! For internal use only.
|
24
28
|
int current_channel() const;
|
25
29
|
|
26
30
|
bool playing() const;
|
27
31
|
bool paused() const;
|
28
32
|
//! Pauses this instance to be resumed afterwards.
|
29
|
-
//!
|
33
|
+
//! Avoid leaving samples paused for too long, as they will still occupy one of Gosu's
|
34
|
+
//! limited channels.
|
30
35
|
void pause();
|
31
36
|
void resume();
|
32
|
-
//! Stops this
|
33
|
-
//!
|
37
|
+
//! Stops this channel if the sample is still being played.
|
38
|
+
//! If this method is called when playback has finished, it has no effect.
|
34
39
|
void stop();
|
35
40
|
|
36
41
|
//! \param volume Can be anything from 0.0 (silence) to 1.0 (full volume).
|
@@ -50,7 +55,7 @@ namespace Gosu
|
|
50
55
|
std::shared_ptr<SampleData> data;
|
51
56
|
|
52
57
|
public:
|
53
|
-
//! Constructs an empty sample that
|
58
|
+
//! Constructs an empty sample that is inaudible when played.
|
54
59
|
Sample();
|
55
60
|
|
56
61
|
//! Constructs a sample that can be played on the specified audio
|
@@ -82,7 +87,7 @@ namespace Gosu
|
|
82
87
|
bool looping = false) const;
|
83
88
|
};
|
84
89
|
|
85
|
-
//! Songs are less flexible than samples. Only Song can be played at any given time,
|
90
|
+
//! Songs are less flexible than samples. Only one Song can be played at any given time,
|
86
91
|
//! and there is no way to control its pan (stereo position) or speed.
|
87
92
|
class Song
|
88
93
|
{
|
@@ -98,8 +103,8 @@ namespace Gosu
|
|
98
103
|
|
99
104
|
public:
|
100
105
|
//! Constructs a song that can be played on the provided audio system
|
101
|
-
//! and loads the song from a file.
|
102
|
-
//! filename.
|
106
|
+
//! and loads the song from a file.
|
107
|
+
//! The file type is determined by the filename.
|
103
108
|
explicit Song(const std::string& filename);
|
104
109
|
|
105
110
|
//! Constructs a song of the specified type that can be played on the
|
@@ -129,8 +134,7 @@ namespace Gosu
|
|
129
134
|
bool playing() const;
|
130
135
|
//! Returns the current volume of the song.
|
131
136
|
double volume() const;
|
132
|
-
//! \param volume Can be anything from 0.0 (silence) to 1.0 (full
|
133
|
-
//! volume).
|
137
|
+
//! \param volume Can be anything from 0.0 (silence) to 1.0 (full volume).
|
134
138
|
void set_volume(double volume);
|
135
139
|
|
136
140
|
//! Called every tick by Window for management purposes.
|
data/Gosu/Font.hpp
CHANGED
@@ -29,14 +29,13 @@ namespace Gosu
|
|
29
29
|
//! \param font_height Height of the font, in pixels.
|
30
30
|
//! \param font_flags Flags used to render individual characters of
|
31
31
|
//! the font.
|
32
|
-
Font(
|
33
|
-
unsigned font_flags = FF_BOLD);
|
32
|
+
Font(int height, const std::string& name = default_font_name(), unsigned flags = FF_BOLD);
|
34
33
|
|
35
34
|
//! Returns the name of the font that was used to create it.
|
36
|
-
std::string name() const;
|
35
|
+
const std::string& name() const;
|
37
36
|
|
38
37
|
//! Returns the height of the font, in pixels.
|
39
|
-
|
38
|
+
int height() const;
|
40
39
|
|
41
40
|
//! Returns the flags used to create the font characters.
|
42
41
|
unsigned flags() const;
|
@@ -47,8 +46,8 @@ namespace Gosu
|
|
47
46
|
//! Draws text so the top left corner of the text is at (x; y).
|
48
47
|
//! \param text Formatted text without line-breaks.
|
49
48
|
void draw(const std::string& text, double x, double y, ZPos z,
|
50
|
-
|
51
|
-
|
49
|
+
double scale_x = 1, double scale_y = 1, Color c = Color::WHITE,
|
50
|
+
AlphaMode mode = AM_DEFAULT) const;
|
52
51
|
|
53
52
|
//! Draws text at a position relative to (x; y).
|
54
53
|
//! \param rel_x Determines where the text is drawn horizontally. If
|
@@ -57,25 +56,30 @@ namespace Gosu
|
|
57
56
|
//! centered on x. Of course, all real numbers are possible values.
|
58
57
|
//! \param rel_y See rel_x.
|
59
58
|
void draw_rel(const std::string& text, double x, double y, ZPos z,
|
60
|
-
|
61
|
-
|
62
|
-
|
59
|
+
double rel_x, double rel_y, double scale_x = 1, double scale_y = 1,
|
60
|
+
Color c = Color::WHITE, AlphaMode mode = AM_DEFAULT) const;
|
61
|
+
|
62
|
+
//! DEPRECATED: Analogous to draw, but rotates the text by a given angle.
|
63
|
+
//! Use Graphics::push_transform to achieve the same effect.
|
64
|
+
#ifndef SWIG
|
65
|
+
GOSU_DEPRECATED
|
66
|
+
#endif
|
67
|
+
void draw_rot(const std::string& text, double x, double y, ZPos z, double angle,
|
68
|
+
double scale_x = 1, double scale_y = 1, Color c = Color::WHITE,
|
69
|
+
AlphaMode mode = AM_DEFAULT) const;
|
70
|
+
|
63
71
|
//! Maps a letter to a specific image instead of generating one using
|
64
72
|
//! Gosu's built-in text rendering. This can only be called once per
|
65
73
|
//! character, and the character must not have been drawn before.
|
66
74
|
//! This ensures that Fonts are still (sort of) immutable.
|
67
|
-
|
75
|
+
#ifndef SWIG
|
76
|
+
GOSU_DEPRECATED
|
77
|
+
#endif
|
78
|
+
void set_image(std::string codepoint, unsigned font_flags, const Gosu::Image& image);
|
68
79
|
//! A shortcut for mapping a character to an image regardless of font_flags.
|
69
|
-
|
70
|
-
void set_image(wchar_t wc, const Gosu::Image& image);
|
71
|
-
|
72
|
-
#ifndef SWIG
|
80
|
+
#ifndef SWIG
|
73
81
|
GOSU_DEPRECATED
|
74
|
-
|
75
|
-
|
76
|
-
//! Use Graphics::push_transform to achieve the same effect.
|
77
|
-
void draw_rot(const std::string& text, double x, double y, ZPos z, double angle,
|
78
|
-
double scale_x = 1, double scale_y = 1, Color c = Color::WHITE,
|
79
|
-
AlphaMode mode = AM_DEFAULT) const;
|
82
|
+
#endif
|
83
|
+
void set_image(std::string codepoint, const Gosu::Image& image);
|
80
84
|
};
|
81
85
|
}
|
data/Gosu/Fwd.hpp
CHANGED
@@ -9,6 +9,7 @@ namespace Gosu
|
|
9
9
|
class Bitmap;
|
10
10
|
class Buffer;
|
11
11
|
class Button;
|
12
|
+
class Channel;
|
12
13
|
class Color;
|
13
14
|
class File;
|
14
15
|
class Font;
|
@@ -21,7 +22,6 @@ namespace Gosu
|
|
21
22
|
class Sample;
|
22
23
|
class Song;
|
23
24
|
class TextInput;
|
24
|
-
class Timer;
|
25
25
|
class Window;
|
26
26
|
class Writer;
|
27
27
|
}
|
data/Gosu/Graphics.hpp
CHANGED
@@ -24,9 +24,8 @@ namespace Gosu
|
|
24
24
|
class Graphics
|
25
25
|
{
|
26
26
|
struct Impl;
|
27
|
-
|
28
|
-
|
29
|
-
|
27
|
+
std::unique_ptr<Impl> pimpl;
|
28
|
+
|
30
29
|
public:
|
31
30
|
Graphics(unsigned physical_width, unsigned physical_height);
|
32
31
|
~Graphics();
|
@@ -60,11 +59,11 @@ namespace Gosu
|
|
60
59
|
static void clip_to(double x, double y, double width, double height,
|
61
60
|
const std::function<void ()>& f);
|
62
61
|
|
63
|
-
//!
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
62
|
+
//! Renders everything drawn in f onto a new Image of size (width, height).
|
63
|
+
static Gosu::Image render(int width, int height, const std::function<void ()>& f);
|
64
|
+
|
65
|
+
//! Records a macro and returns it as an Image.
|
66
|
+
static Gosu::Image record(int width, int height, const std::function<void ()>& f);
|
68
67
|
|
69
68
|
//! Pushes one transformation onto the transformation stack.
|
70
69
|
static void transform(const Transform& transform,
|
@@ -100,7 +99,7 @@ namespace Gosu
|
|
100
99
|
|
101
100
|
//! Turns a portion of a bitmap into something that can be drawn on a Graphics object.
|
102
101
|
static std::unique_ptr<ImageData> create_image(const Bitmap& src,
|
103
|
-
unsigned src_x,
|
102
|
+
unsigned src_x, unsigned src_y,
|
104
103
|
unsigned src_width, unsigned src_height,
|
105
104
|
unsigned image_flags);
|
106
105
|
};
|
data/Gosu/ImageData.hpp
CHANGED
data/Gosu/Input.hpp
CHANGED
@@ -59,7 +59,7 @@ namespace Gosu
|
|
59
59
|
public:
|
60
60
|
#ifdef GOSU_IS_IPHONE
|
61
61
|
Input(void* view, float update_interval);
|
62
|
-
void feed_touch_event(
|
62
|
+
void feed_touch_event(std::function<void (Touch)>& callback, void* touches);
|
63
63
|
#else
|
64
64
|
Input(void* window);
|
65
65
|
bool feed_sdl_event(void* event);
|
data/Gosu/Math.hpp
CHANGED
@@ -12,24 +12,6 @@
|
|
12
12
|
|
13
13
|
namespace Gosu
|
14
14
|
{
|
15
|
-
//! Truncates the fractional part of a real value. Equivalent to
|
16
|
-
//! static_cast<long>.
|
17
|
-
inline long trunc(double value)
|
18
|
-
{
|
19
|
-
return static_cast<long>(value);
|
20
|
-
}
|
21
|
-
|
22
|
-
//! Rounds a real value towards the next integer.
|
23
|
-
inline long round(double value)
|
24
|
-
{
|
25
|
-
if (value >= 0) {
|
26
|
-
return static_cast<long>(value + 0.5);
|
27
|
-
}
|
28
|
-
else {
|
29
|
-
return static_cast<long>(value - 0.5);
|
30
|
-
}
|
31
|
-
}
|
32
|
-
|
33
15
|
//! Returns a real value between min (inclusive) and max (exclusive).
|
34
16
|
//! Uses std::rand, so you should call std::srand before using it.
|
35
17
|
double random(double min, double max);
|
data/Gosu/Text.hpp
CHANGED
@@ -10,53 +10,45 @@
|
|
10
10
|
|
11
11
|
namespace Gosu
|
12
12
|
{
|
13
|
-
//! Returns the name of a neutral font that is available on the current
|
14
|
-
//! platform.
|
13
|
+
//! Returns the name of a neutral font that is available on the current platform.
|
15
14
|
std::string default_font_name();
|
16
15
|
|
17
16
|
//! Returns the width an unformatted line of text would span on a bitmap if it were drawn using
|
18
|
-
//! draw_text with the same arguments.
|
19
|
-
//!
|
20
|
-
//! \param
|
21
|
-
|
22
|
-
|
23
|
-
unsigned font_flags = 0);
|
17
|
+
//! draw_text with the same arguments.
|
18
|
+
//! \param text A UCS-4 string, normalization: NFC.
|
19
|
+
//! \param font_name Name of a system font, or filename of a TTF file (must contain '/' or '.').
|
20
|
+
double text_width(const std::u32string& text, const std::string& font_name, double font_height,
|
21
|
+
unsigned font_flags = 0);
|
24
22
|
|
25
23
|
//! Draws a line of unformatted text on a bitmap. This is a very low-level function that does
|
26
24
|
//! not understand any of Gosu's HTML-like markup.
|
27
|
-
//! \param text
|
28
|
-
//! \param font_name Name of a system font, or
|
25
|
+
//! \param text A UCS-4 string, normalization: NFC.
|
26
|
+
//! \param font_name Name of a system font, or filename of a TTF file (must contain '/' or '.').
|
29
27
|
//! \param font_height Height, in pixels, of the text.
|
30
|
-
//! \param font_flags Binary combination of members of the FontFlags
|
31
|
-
|
32
|
-
|
33
|
-
const std::string& font_name, unsigned font_height, unsigned font_flags = 0);
|
28
|
+
//! \param font_flags Binary combination of members of the FontFlags enum.
|
29
|
+
double draw_text(Bitmap& bitmap, double x, double y, Color c, const std::u32string& text,
|
30
|
+
const std::string& font_name, double font_height, unsigned font_flags = 0);
|
34
31
|
|
35
32
|
//! Creates a bitmap that is filled with a line of formatted text given to the function.
|
36
33
|
//! The line can contain line breaks and HTML-like markup.
|
37
34
|
//! \param text Formatted text.
|
38
|
-
//! \param font_name Name of a system font, or
|
35
|
+
//! \param font_name Name of a system font, or filename of a TTF file (must contain '/' or '.').
|
39
36
|
//! \param font_height Height of the font in pixels.
|
40
|
-
//! \param font_flags Binary combination of members of the FontFlags
|
41
|
-
|
42
|
-
|
43
|
-
unsigned font_flags = 0);
|
37
|
+
//! \param font_flags Binary combination of members of the FontFlags enum.
|
38
|
+
Bitmap create_text(const std::string& text, const std::string& font_name, double font_height,
|
39
|
+
unsigned font_flags = 0);
|
44
40
|
|
45
41
|
//! Creates a bitmap that is filled with the formatted text given to the function.
|
46
42
|
//! The line can contain line breaks and HTML-like markup.
|
47
43
|
//! \param text Formatted text.
|
48
|
-
//! \param font_name Name of a system font, or
|
44
|
+
//! \param font_name Name of a system font, or filename of a TTF file (must contain '/' or '.').
|
49
45
|
//! \param font_height Height of the font in pixels.
|
50
46
|
//! \param line_spacing Spacing between two lines of text in pixels. Can be negative to make
|
51
|
-
//!
|
52
|
-
//! \param width Width of the bitmap that will be returned.
|
53
|
-
//! lines to avoid drawing over the right border.
|
54
|
-
//! truncated.
|
47
|
+
//! text stick together more closely.
|
48
|
+
//! \param width Width of the bitmap that will be returned.
|
49
|
+
//! Text will be split into multiple lines to avoid drawing over the right border.
|
50
|
+
//! When a single word is too long, it will be truncated.
|
55
51
|
//! \param font_flags Binary combination of members of the FontFlags enum.
|
56
|
-
Bitmap create_text(const std::string& text, const std::string& font_name,
|
57
|
-
|
58
|
-
|
59
|
-
//! Registers a new HTML-style entity that can subsequently be used
|
60
|
-
//! with Gosu::Font and Gosu::create_text. The name is given without & and ;.
|
61
|
-
void register_entity(const std::string& name, const Bitmap& replacement);
|
52
|
+
Bitmap create_text(const std::string& text, const std::string& font_name, double font_height,
|
53
|
+
double line_spacing, int width, Alignment align, unsigned font_flags = 0);
|
62
54
|
}
|
data/Gosu/TextInput.hpp
CHANGED
@@ -49,8 +49,10 @@ namespace Gosu
|
|
49
49
|
//! Sets the start of the selection as returned by selection_start.
|
50
50
|
void set_selection_start(unsigned pos);
|
51
51
|
|
52
|
+
#ifndef GOSU_IS_IPHONE
|
52
53
|
// Platform-specific communication with Gosu::Input.
|
53
54
|
bool feed_sdl_event(void* event);
|
55
|
+
#endif
|
54
56
|
|
55
57
|
//! Overridable filter that is applied to all new text that is entered.
|
56
58
|
//! Allows for context-sensitive filtering/extending/... of new characters.
|
@@ -59,5 +61,16 @@ namespace Gosu
|
|
59
61
|
{
|
60
62
|
return text;
|
61
63
|
}
|
64
|
+
|
65
|
+
//! Replaces the current selection (if any) and inserts the given string at the current
|
66
|
+
//! caret position.
|
67
|
+
//! The filter method will not be applied before appending the string.
|
68
|
+
void insert_text(std::string text);
|
69
|
+
|
70
|
+
//! Deletes the current selection, if any, or the next character.
|
71
|
+
void delete_forward();
|
72
|
+
|
73
|
+
//! Deletes the current selection, if any, or the previous character.
|
74
|
+
void delete_backward();
|
62
75
|
};
|
63
76
|
}
|
data/Gosu/Utility.hpp
CHANGED
@@ -12,6 +12,8 @@ namespace Gosu
|
|
12
12
|
//! Converts an UCS-4 or UTF-16 to UTF-8, depending on the platform's interpretation of wstring.
|
13
13
|
std::string wstring_to_utf8(const std::wstring& ws);
|
14
14
|
|
15
|
+
std::u32string utf8_to_composed_utc4(const std::string& utf8);
|
16
|
+
|
15
17
|
//! Returns true if the filename has the given extension.
|
16
18
|
//! The comparison is case-insensitive, but you must pass the extension in lower case.
|
17
19
|
bool has_extension(const std::string& filename, const char* extension);
|
data/Gosu/Window.hpp
CHANGED
@@ -118,10 +118,10 @@ namespace Gosu
|
|
118
118
|
virtual void button_up(Gosu::Button) {}
|
119
119
|
|
120
120
|
//! Called when a file is dropped onto the window.
|
121
|
-
//! \param
|
121
|
+
//! \param filename The filename of the dropped file. When multiple files are dropped, this
|
122
122
|
//! method will be called several times.
|
123
123
|
virtual void drop(const std::string& filename) {}
|
124
|
-
|
124
|
+
|
125
125
|
// Ignore when SWIG is wrapping this class for Ruby/Gosu.
|
126
126
|
#ifndef SWIG
|
127
127
|
// Callbacks for touch events. So far these are only used on iOS.
|
@@ -138,7 +138,7 @@ namespace Gosu
|
|
138
138
|
#endif
|
139
139
|
|
140
140
|
#ifdef GOSU_IS_IPHONE
|
141
|
-
void*
|
141
|
+
void* uikit_window() const;
|
142
142
|
#endif
|
143
143
|
};
|
144
144
|
}
|
data/README.md
CHANGED
@@ -18,10 +18,9 @@ or look at existing projects in the [Gosu Showcase](https://www.libgosu.org/cgi-
|
|
18
18
|
Community
|
19
19
|
---------
|
20
20
|
|
21
|
-
-
|
22
|
-
-
|
23
|
-
|
24
|
-
- Please file bugs and request features [on GitHub](https://github.com/gosu/gosu/issues).
|
21
|
+
- There is a lively [Discord community](https://discord.gg/SZ4nbEd).
|
22
|
+
- If you want to discuss or announce something in a more permanent place than a chat room, we also have a [message board](https://www.libgosu.org/cgi-bin/mwf/forum.pl).
|
23
|
+
- Please file bugs and feature requests [on GitHub](https://github.com/gosu/gosu/issues).
|
25
24
|
|
26
25
|
Build Status
|
27
26
|
------------
|
data/ext/gosu/extconf.rb
CHANGED
@@ -24,16 +24,18 @@ $CFLAGS << " -DGOSU_DEPRECATED="
|
|
24
24
|
|
25
25
|
$CXXFLAGS ||= ""
|
26
26
|
$CXXFLAGS << " -std=gnu++11"
|
27
|
-
$CXXFLAGS << " -Wno-reserved-user-defined-literal" # see https://github.com/gosu/gosu/issues/424
|
28
27
|
|
29
28
|
# For #include <Gosu/...>
|
30
29
|
$INCFLAGS << " -I../.."
|
31
30
|
|
32
31
|
if `uname`.chomp == 'Darwin'
|
33
|
-
#
|
34
|
-
$CFLAGS << " -
|
32
|
+
# Disable assertions in C code.
|
33
|
+
$CFLAGS << " -DNDEBUG"
|
35
34
|
# Compile all C++ files as Objective C++ on macOS since mkmf does not support .mm files.
|
36
35
|
$CXXFLAGS << " -x objective-c++ -fobjc-arc -DNDEBUG"
|
36
|
+
# Prevents issues with Apple's pre-installed Ruby 2.3 on macOS 10.13.
|
37
|
+
# https://github.com/gosu/gosu/issues/424
|
38
|
+
$CXXFLAGS << " -Wno-reserved-user-defined-literal"
|
37
39
|
|
38
40
|
# Explicitly specify libc++ as the standard library.
|
39
41
|
# rvm will sometimes try to override this:
|
@@ -43,7 +45,7 @@ if `uname`.chomp == 'Darwin'
|
|
43
45
|
# Dependencies.
|
44
46
|
$CXXFLAGS << " #{`sdl2-config --cflags`.chomp}"
|
45
47
|
# Prefer statically linking SDL 2.
|
46
|
-
$LDFLAGS << " #{`sdl2-config --static-libs`.chomp} -framework OpenGL -framework OpenAL"
|
48
|
+
$LDFLAGS << " #{`sdl2-config --static-libs`.chomp} -framework OpenGL -framework Metal -framework OpenAL"
|
47
49
|
|
48
50
|
# Disable building of 32-bit slices in Apple's Ruby.
|
49
51
|
# (RbConfig::CONFIG['CXXFLAGS'] on 10.11: -arch x86_64 -arch i386 -g -Os -pipe)
|
@@ -65,19 +67,15 @@ else
|
|
65
67
|
end
|
66
68
|
|
67
69
|
pkg_config 'sdl2'
|
68
|
-
pkg_config 'pangoft2'
|
69
70
|
pkg_config 'vorbisfile'
|
70
71
|
pkg_config 'openal'
|
71
72
|
pkg_config 'sndfile'
|
72
73
|
pkg_config 'libmpg123'
|
74
|
+
pkg_config 'fontconfig'
|
73
75
|
|
74
|
-
have_header 'SDL_ttf.h' if have_library('SDL2_ttf', 'TTF_RenderUTF8_Blended')
|
75
76
|
have_header 'AL/al.h' if have_library('openal')
|
76
77
|
end
|
77
78
|
|
78
|
-
# This is necessary to build with stock Ruby on OS X 10.7.
|
79
|
-
CONFIG['CXXFLAGS'] ||= $CXXFLAGS
|
80
|
-
|
81
79
|
# Gem::Version#initialize is apparently broken in some versions of Ruby, so use a local helper.
|
82
80
|
def ruby_newer_than?(want_version)
|
83
81
|
have_parts = RUBY_VERSION.split('.').map { |part| part.to_i }
|