gosu 1.1.0.pre2 → 1.3.0
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 +4 -4
- data/COPYING +1 -1
- data/ext/gosu/extconf.rb +5 -1
- data/include/Gosu/Color.hpp +48 -100
- data/include/Gosu/Font.hpp +7 -9
- data/include/Gosu/Fwd.hpp +1 -1
- data/include/Gosu/Graphics.hpp +6 -4
- data/include/Gosu/GraphicsBase.hpp +6 -6
- data/include/Gosu/Image.hpp +3 -3
- data/include/Gosu/ImageData.hpp +1 -1
- data/include/Gosu/Math.hpp +4 -16
- data/include/Gosu/Platform.hpp +1 -51
- data/include/Gosu/Text.hpp +37 -40
- data/include/Gosu/Utility.hpp +10 -8
- data/include/Gosu/Version.hpp +1 -1
- data/include/Gosu/Window.hpp +2 -0
- data/lib/gosu/compat.rb +4 -0
- data/lib/gosu/swig_patches.rb +31 -3
- data/rdoc/gosu.rb +9 -1
- data/src/Bitmap.cpp +13 -13
- data/src/Color.cpp +50 -46
- data/src/EmptyImageData.hpp +1 -1
- data/src/Font.cpp +4 -4
- data/src/GosuViewController.cpp +2 -0
- data/src/Graphics.cpp +4 -4
- data/src/Image.cpp +4 -3
- data/src/Input.cpp +1 -10
- data/src/LargeImageData.cpp +20 -20
- data/src/LargeImageData.hpp +1 -1
- data/src/Macro.cpp +100 -143
- data/src/Macro.hpp +1 -1
- data/src/RenderState.hpp +5 -5
- data/src/Resolution.cpp +107 -59
- data/src/RubyGosu.cxx +465 -496
- data/src/RubyGosu.h +3 -2
- data/src/TexChunk.cpp +1 -1
- data/src/TexChunk.hpp +1 -1
- data/src/Text.cpp +31 -32
- data/src/TrueTypeFont.cpp +1 -1
- data/src/TrueTypeFontApple.cpp +10 -3
- data/src/Utility.cpp +82 -23
- data/src/WinUtility.hpp +2 -1
- data/src/Window.cpp +9 -9
- data/src/WindowUIKit.cpp +2 -2
- metadata +5 -7
- data/src/UtilityApple.cpp +0 -16
- data/src/UtilityWin.cpp +0 -17
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7d58f7d332c57be8c599f33a6c60df54d7143e6ef2980eacd1a84f5d51f7a26a
|
4
|
+
data.tar.gz: e22cf468c5392985d6429aac77b958d71c63c33ac40a4a06b1f01187837bb224
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 69605aee52675d916c27e58ad596d294ea4268e24520b137a2afa184a38f92b4120646a1e0c3ada0e6293088db9f965adf907a99b164052ee741b81cfd2a779c
|
7
|
+
data.tar.gz: 55615664e9ababb8ee986af01191a296b364d53d42986fcd45a94436b33f4d59aa46643da62a14e0e0a960def6a699d782f03bf74876c70405e4f6ec4d8591df
|
data/COPYING
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
Copyright (C) 2001-
|
1
|
+
Copyright (C) 2001-2021 Julian Raschke, Jan Lücker and all contributors.
|
2
2
|
|
3
3
|
Permission is hereby granted, free of charge, to any person obtaining a
|
4
4
|
copy of this software and associated documentation files (the "Software"),
|
data/ext/gosu/extconf.rb
CHANGED
@@ -51,7 +51,7 @@ if windows
|
|
51
51
|
else
|
52
52
|
$LDFLAGS << " -L../../dependencies/al_soft/x86 -L../../dependencies/SDL/lib/x86"
|
53
53
|
end
|
54
|
-
$LDFLAGS << " -lgdi32 -lwinmm -lOpenGL32 -lOpenAL32 -lSDL2"
|
54
|
+
$LDFLAGS << " -lgdi32 -lwinmm -ldwmapi -lOpenGL32 -lOpenAL32 -lSDL2"
|
55
55
|
# Link libstdc++ statically to avoid having another DLL dependency when using Ocra.
|
56
56
|
$LDFLAGS << " -static-libstdc++"
|
57
57
|
elsif macos
|
@@ -62,6 +62,10 @@ elsif macos
|
|
62
62
|
# rvm will sometimes try to override this:
|
63
63
|
# https://github.com/shawn42/gamebox/issues/96
|
64
64
|
$CXXFLAGS << " -stdlib=libc++"
|
65
|
+
|
66
|
+
# Disable an error that is disabled by default and prevents Gosu from building with universal Ruby:
|
67
|
+
# https://trac.macports.org/ticket/58255 / https://github.com/gosu/gosu/issues/424
|
68
|
+
$CXXFLAGS << " -Wno-reserved-user-defined-literal"
|
65
69
|
|
66
70
|
# Dependencies.
|
67
71
|
$CFLAGS << " #{`sdl2-config --cflags`.chomp}"
|
data/include/Gosu/Color.hpp
CHANGED
@@ -1,6 +1,3 @@
|
|
1
|
-
//! \file Color.hpp
|
2
|
-
//! Interface of the Color class.
|
3
|
-
|
4
1
|
#pragma once
|
5
2
|
|
6
3
|
#include <Gosu/Platform.hpp>
|
@@ -8,154 +5,105 @@
|
|
8
5
|
|
9
6
|
namespace Gosu
|
10
7
|
{
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
//! The four-byte layout in memory is RGBA. On Big-Endian machines the unsigned int will look
|
15
|
-
//! like 0xrrggbbaa, on Little-Endian machines it is 0xaabbggrr.
|
16
|
-
class Color
|
8
|
+
/// Represents an RGBA color value with 8 bit for each channel.
|
9
|
+
/// Can be implicitly constructed from literals of the form 0xaarrggbb.
|
10
|
+
struct Color
|
17
11
|
{
|
18
|
-
std::uint32_t rep;
|
19
|
-
#ifdef GOSU_IS_LITTLE_ENDIAN
|
20
|
-
enum { RED_OFFSET = 0, GREEN_OFFSET = 8, BLUE_OFFSET = 16, ALPHA_OFFSET = 24 };
|
21
|
-
#else
|
22
|
-
enum { RED_OFFSET = 24, GREEN_OFFSET = 16, BLUE_OFFSET = 8, ALPHA_OFFSET = 0 };
|
23
|
-
#endif
|
24
|
-
|
25
|
-
public:
|
26
|
-
typedef std::uint8_t Channel;
|
27
12
|
static const unsigned GL_FORMAT = 0x1908; // GL_RGBA
|
28
|
-
|
29
|
-
//! The default constructor does not initialize the color to any value.
|
30
|
-
Color()
|
31
|
-
{
|
32
|
-
}
|
33
|
-
|
34
|
-
//! Conversion constructor for literals of the form 0xaarrggbb.
|
35
|
-
Color(unsigned argb)
|
36
|
-
: Color((argb >> 24) & 0xff, (argb >> 16) & 0xff, (argb >> 8) & 0xff, (argb >> 0) & 0xff)
|
37
|
-
{
|
38
|
-
}
|
39
|
-
|
40
|
-
Color(Channel red, Channel green, Channel blue)
|
41
|
-
: Color(0xff, red, green, blue)
|
42
|
-
{
|
43
|
-
}
|
44
|
-
|
45
|
-
Color(Channel alpha, Channel red, Channel green, Channel blue)
|
46
|
-
{
|
47
|
-
rep = (alpha << ALPHA_OFFSET) | (red << RED_OFFSET) |
|
48
|
-
(green << GREEN_OFFSET) | (blue << BLUE_OFFSET);
|
49
|
-
}
|
50
|
-
|
51
|
-
//! Constructs a color from the given hue/saturation/value triple.
|
52
|
-
//! Ranges of these values are given as 0..360, 0..1, and 0..1, respectively.
|
53
|
-
static Color from_hsv(double h, double s, double v);
|
54
|
-
|
55
|
-
//! Constructs a color from the given hue/saturation/value triple.
|
56
|
-
//! Ranges of these values are given as 0..360, 0..1, and 0..1, respectively.
|
57
|
-
static Color from_ahsv(Channel alpha, double h, double s, double v);
|
58
13
|
|
59
|
-
|
60
|
-
{
|
61
|
-
return static_cast<Channel>(rep >> RED_OFFSET);
|
62
|
-
}
|
63
|
-
|
64
|
-
Channel green() const
|
65
|
-
{
|
66
|
-
return static_cast<Channel>(rep >> GREEN_OFFSET);
|
67
|
-
}
|
14
|
+
typedef std::uint8_t Channel;
|
68
15
|
|
69
|
-
Channel blue
|
70
|
-
{
|
71
|
-
return static_cast<Channel>(rep >> BLUE_OFFSET);
|
72
|
-
}
|
16
|
+
Channel red, green, blue, alpha;
|
73
17
|
|
74
|
-
|
18
|
+
constexpr Color()
|
19
|
+
: red{0}, green{0}, blue{0}, alpha{0}
|
75
20
|
{
|
76
|
-
return static_cast<Channel>(rep >> ALPHA_OFFSET);
|
77
21
|
}
|
78
22
|
|
79
|
-
|
23
|
+
/// Conversion constructor for literals of the form 0xaarrggbb.
|
24
|
+
// NOLINTNEXTLINE: We want to allow implicit conversions.
|
25
|
+
constexpr Color(std::uint32_t argb)
|
26
|
+
: red{static_cast<Channel>(argb >> 16)}, green{static_cast<Channel>(argb >> 8)},
|
27
|
+
blue{static_cast<Channel>(argb >> 0)}, alpha{static_cast<Channel>(argb >> 24)}
|
80
28
|
{
|
81
|
-
rep &= ~(0xff << RED_OFFSET);
|
82
|
-
rep |= value << RED_OFFSET;
|
83
29
|
}
|
84
30
|
|
85
|
-
|
31
|
+
constexpr Color(Channel red, Channel green, Channel blue)
|
32
|
+
: red{red}, green{green}, blue{blue}, alpha{255}
|
86
33
|
{
|
87
|
-
rep &= ~(0xff << GREEN_OFFSET);
|
88
|
-
rep |= value << GREEN_OFFSET;
|
89
34
|
}
|
90
35
|
|
91
|
-
|
36
|
+
Color with_alpha(Channel new_alpha)
|
92
37
|
{
|
93
|
-
|
94
|
-
|
38
|
+
Color result = *this;
|
39
|
+
result.alpha = new_alpha;
|
40
|
+
return result;
|
95
41
|
}
|
96
42
|
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
rep |= value << ALPHA_OFFSET;
|
101
|
-
}
|
43
|
+
/// Constructs a color from the given hue/saturation/value triple.
|
44
|
+
/// Ranges of these values are given as 0..360, 0..1, and 0..1, respectively.
|
45
|
+
static Color from_hsv(double h, double s, double v);
|
102
46
|
|
103
|
-
|
47
|
+
/// Returns the hue of the color, in the usual range of 0..360.
|
104
48
|
double hue() const;
|
105
49
|
|
106
|
-
|
50
|
+
/// Changes the current color so hue() will return h.
|
107
51
|
void set_hue(double h);
|
108
52
|
|
109
|
-
|
53
|
+
/// Returns the saturation of the color, in the range of 0..1.
|
110
54
|
double saturation() const;
|
111
55
|
|
112
|
-
|
56
|
+
/// Changes the current color so saturation() will return s.
|
113
57
|
void set_saturation(double s);
|
114
58
|
|
115
|
-
|
59
|
+
/// Returns the value (brightness) of the color, in the range of 0..1.
|
116
60
|
double value() const;
|
117
61
|
|
118
|
-
|
62
|
+
/// Changes the current color so value() will return v.
|
119
63
|
void set_value(double v);
|
120
64
|
|
121
|
-
|
122
|
-
std::uint32_t argb() const { return alpha
|
65
|
+
/// Returns the color in 0xaarrggbb representation.
|
66
|
+
std::uint32_t argb() const { return alpha << 24 | red << 16 | green << 8 | blue; }
|
123
67
|
|
124
|
-
|
125
|
-
std::uint32_t bgr() const { return blue
|
68
|
+
/// Returns the color in 0x00bbggrr representation. Useful for Win32 programming.
|
69
|
+
std::uint32_t bgr() const { return blue << 16 | green << 8 | red; }
|
70
|
+
|
71
|
+
/// Returns the color in 0xaabbggrr representation.
|
72
|
+
std::uint32_t abgr() const { return alpha << 24 | blue << 16 | green << 8 | red; }
|
73
|
+
|
74
|
+
/// Returns the internal representation of the color (RGBA in memory).
|
75
|
+
std::uint32_t gl() const { return *reinterpret_cast<const std::uint32_t*>(this); }
|
126
76
|
|
127
|
-
//! Returns the color in 0xaabbggrr representation.
|
128
|
-
std::uint32_t abgr() const { return alpha() << 24 | blue() << 16 | green() << 8 | red(); }
|
129
|
-
|
130
|
-
//! Returns the internal representation of the color (RGBA in memory).
|
131
|
-
std::uint32_t gl() const { return rep; }
|
132
|
-
|
133
77
|
static const Color NONE;
|
134
78
|
static const Color BLACK;
|
135
79
|
static const Color GRAY;
|
136
80
|
static const Color WHITE;
|
137
|
-
|
81
|
+
|
82
|
+
/// Same as Color::CYAN.
|
138
83
|
static const Color AQUA;
|
139
84
|
static const Color RED;
|
140
85
|
static const Color GREEN;
|
141
86
|
static const Color BLUE;
|
142
87
|
static const Color YELLOW;
|
143
88
|
static const Color FUCHSIA;
|
89
|
+
/// Same as Color::AQUA.
|
144
90
|
static const Color CYAN;
|
145
91
|
};
|
92
|
+
|
93
|
+
// Ensure that we can pass vectors of Gosu::Color straight to OpenGL and back.
|
94
|
+
static_assert(sizeof(Color) == sizeof(std::uint32_t));
|
146
95
|
|
147
96
|
#ifndef SWIG
|
148
97
|
inline bool operator<(Color a, Color b) { return a.gl() < b.gl(); }
|
149
98
|
inline bool operator==(Color a, Color b) { return a.gl() == b.gl(); }
|
150
99
|
inline bool operator!=(Color a, Color b) { return a.gl() != b.gl(); }
|
151
100
|
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
Color interpolate(Color a, Color b, double weight = 0.5);
|
101
|
+
/// Interpolates linearly between two colors, with a given weight towards
|
102
|
+
/// the second color.
|
103
|
+
Color lerp(Color a, Color b, double t = 0.5);
|
156
104
|
|
157
|
-
|
158
|
-
|
105
|
+
/// Combines two colors as if their channels were mapped to the 0..1 range
|
106
|
+
/// and then multiplied with each other.
|
159
107
|
Color multiply(Color a, Color b);
|
160
108
|
#endif
|
161
109
|
}
|
data/include/Gosu/Font.hpp
CHANGED
@@ -22,11 +22,9 @@ namespace Gosu
|
|
22
22
|
|
23
23
|
public:
|
24
24
|
//! Constructs a font that can be drawn onto the graphics object.
|
25
|
-
//! \param
|
26
|
-
//!
|
27
|
-
//! \param
|
28
|
-
//! \param font_flags Flags used to render individual characters of
|
29
|
-
//! the font.
|
25
|
+
//! \param name Name of a system font, or a filename to a TTF file.
|
26
|
+
//! \param height Height of the font, in pixels.
|
27
|
+
//! \param flags Flags used to render individual characters of the font.
|
30
28
|
Font(int height, const std::string& name = default_font_name(), unsigned flags = 0);
|
31
29
|
|
32
30
|
//! Returns the name of the font that was used to create it.
|
@@ -46,11 +44,11 @@ namespace Gosu
|
|
46
44
|
//! Draws text so the top left corner of the text is at (x; y).
|
47
45
|
void draw_text(const std::string& text, double x, double y, ZPos z,
|
48
46
|
double scale_x = 1, double scale_y = 1, Color c = Color::WHITE,
|
49
|
-
|
47
|
+
BlendMode mode = BM_DEFAULT) const;
|
50
48
|
//! Draws markup so the top left corner of the text is at (x; y).
|
51
49
|
void draw_markup(const std::string& markup, double x, double y, ZPos z,
|
52
50
|
double scale_x = 1, double scale_y = 1, Color c = Color::WHITE,
|
53
|
-
|
51
|
+
BlendMode mode = BM_DEFAULT) const;
|
54
52
|
|
55
53
|
//! Draws text at a position relative to (x; y).
|
56
54
|
//! \param rel_x Determines where the text is drawn horizontally. If
|
@@ -60,7 +58,7 @@ namespace Gosu
|
|
60
58
|
//! \param rel_y See rel_x.
|
61
59
|
void draw_text_rel(const std::string& text, double x, double y, ZPos z,
|
62
60
|
double rel_x, double rel_y, double scale_x = 1, double scale_y = 1,
|
63
|
-
Color c = Color::WHITE,
|
61
|
+
Color c = Color::WHITE, BlendMode mode = BM_DEFAULT) const;
|
64
62
|
//! Draws text at a position relative to (x; y).
|
65
63
|
//! \param rel_x Determines where the text is drawn horizontally. If
|
66
64
|
//! rel_x is 0.0, the text will be to the right of x, if it is 1.0,
|
@@ -69,7 +67,7 @@ namespace Gosu
|
|
69
67
|
//! \param rel_y See rel_x.
|
70
68
|
void draw_markup_rel(const std::string& markup, double x, double y, ZPos z,
|
71
69
|
double rel_x, double rel_y, double scale_x = 1, double scale_y = 1,
|
72
|
-
Color c = Color::WHITE,
|
70
|
+
Color c = Color::WHITE, BlendMode mode = BM_DEFAULT) const;
|
73
71
|
|
74
72
|
//! Maps a letter to a specific image, instead of generating one using
|
75
73
|
//! Gosu's built-in text rendering.
|
data/include/Gosu/Fwd.hpp
CHANGED
data/include/Gosu/Graphics.hpp
CHANGED
@@ -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,
|
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,
|
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,
|
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,
|
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
|
18
|
+
enum BlendMode
|
19
19
|
{
|
20
|
-
|
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
|
-
|
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
|
-
|
27
|
+
BM_ADD,
|
28
28
|
//! The color's channels will be multiplied with each other.
|
29
|
-
|
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
|
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,
|
data/include/Gosu/Image.hpp
CHANGED
@@ -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,
|
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,
|
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,
|
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.
|
data/include/Gosu/ImageData.hpp
CHANGED
data/include/Gosu/Math.hpp
CHANGED
@@ -67,17 +67,7 @@ namespace Gosu
|
|
67
67
|
{
|
68
68
|
return value * value;
|
69
69
|
}
|
70
|
-
|
71
|
-
//! Returns min if value is smaller than min, max if value is larger than
|
72
|
-
//! max and value otherwise.
|
73
|
-
template<typename T>
|
74
|
-
T clamp(T value, T min, T max)
|
75
|
-
{
|
76
|
-
if (value < min) return min;
|
77
|
-
if (value > max) return max;
|
78
|
-
return value;
|
79
|
-
}
|
80
|
-
|
70
|
+
|
81
71
|
//! Returns (value-min) % (max-min) + min, where % always has a positive
|
82
72
|
//! result for max > min. The results are undefined for max <= min.
|
83
73
|
//! Note: This means that max is exclusive.
|
@@ -100,12 +90,10 @@ namespace Gosu
|
|
100
90
|
//! Returns the distance between two points.
|
101
91
|
double distance(double x1, double y1, double x2, double y2);
|
102
92
|
|
103
|
-
//!
|
104
|
-
//! Examples: interpolate(0, 10, 0.5) == 5, interpolate(-10, 10, 0.25) == 5,
|
105
|
-
//! interpolate(0, 10, -0.5) == -5.
|
93
|
+
//! Placeholder for std::lerp, will be removed when Gosu requires C++20.
|
106
94
|
template<typename T>
|
107
|
-
T
|
95
|
+
T lerp(T a, T b, double t = 0.5)
|
108
96
|
{
|
109
|
-
return a * (1.0 -
|
97
|
+
return a * (1.0 - t) + b * t;
|
110
98
|
}
|
111
99
|
}
|
data/include/Gosu/Platform.hpp
CHANGED
@@ -1,51 +1,5 @@
|
|
1
|
-
//! \file Platform.hpp
|
2
|
-
//! Macros and utility functions to facilitate programming on all of Gosu's supported platforms.
|
3
|
-
|
4
1
|
#pragma once
|
5
2
|
|
6
|
-
#ifdef __BIG_ENDIAN__
|
7
|
-
# define GOSU_IS_BIG_ENDIAN
|
8
|
-
# define IDENTITY_FUN big_to_native
|
9
|
-
# define IDENTITY_FUN2 native_to_big
|
10
|
-
# define CONV_FUN little_to_native
|
11
|
-
# define CONV_FUN2 native_to_little
|
12
|
-
#else
|
13
|
-
# define GOSU_IS_LITTLE_ENDIAN
|
14
|
-
# define IDENTITY_FUN little_to_native
|
15
|
-
# define IDENTITY_FUN2 native_to_little
|
16
|
-
# define CONV_FUN big_to_native
|
17
|
-
# define CONV_FUN2 native_to_big
|
18
|
-
#endif
|
19
|
-
|
20
|
-
#include <algorithm>
|
21
|
-
|
22
|
-
namespace Gosu
|
23
|
-
{
|
24
|
-
template<typename T> T IDENTITY_FUN(T t) { return t; }
|
25
|
-
template<typename T> T IDENTITY_FUN2(T t) { return t; }
|
26
|
-
|
27
|
-
template<typename T>
|
28
|
-
T CONV_FUN(T t)
|
29
|
-
{
|
30
|
-
char* begin = reinterpret_cast<char*>(&t);
|
31
|
-
std::reverse(begin, begin + sizeof t);
|
32
|
-
return t;
|
33
|
-
}
|
34
|
-
|
35
|
-
template<typename T> T CONV_FUN2(T t) { return CONV_FUN(t); }
|
36
|
-
}
|
37
|
-
|
38
|
-
#undef IDENTITY_FUN
|
39
|
-
#undef IDENTITY_FUN2
|
40
|
-
#undef CONV_FUN
|
41
|
-
#undef CONV_FUN2
|
42
|
-
|
43
|
-
#if defined(_MSC_VER)
|
44
|
-
# define GOSU_NORETURN __declspec(noreturn)
|
45
|
-
#elif defined(__GNUC__)
|
46
|
-
# define GOSU_NORETURN __attribute__ ((noreturn))
|
47
|
-
#endif
|
48
|
-
|
49
3
|
#if defined(WIN32) || defined(_WIN64)
|
50
4
|
# define GOSU_IS_WIN
|
51
5
|
#else
|
@@ -63,9 +17,5 @@ namespace Gosu
|
|
63
17
|
#endif
|
64
18
|
|
65
19
|
#ifndef GOSU_DEPRECATED
|
66
|
-
#
|
67
|
-
# define GOSU_DEPRECATED __declspec(deprecated)
|
68
|
-
# else
|
69
|
-
# define GOSU_DEPRECATED __attribute__((__deprecated__))
|
70
|
-
# endif
|
20
|
+
# define GOSU_DEPRECATED [[deprecated]]
|
71
21
|
#endif
|
data/include/Gosu/Text.hpp
CHANGED
@@ -1,6 +1,3 @@
|
|
1
|
-
//! \file Text.hpp
|
2
|
-
//! Functions to output text on bitmaps.
|
3
|
-
|
4
1
|
#pragma once
|
5
2
|
|
6
3
|
#include <Gosu/Fwd.hpp>
|
@@ -10,55 +7,55 @@
|
|
10
7
|
|
11
8
|
namespace Gosu
|
12
9
|
{
|
13
|
-
|
10
|
+
/// Returns the name of a neutral font that is available on the current platform.
|
14
11
|
std::string default_font_name();
|
15
12
|
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
13
|
+
/// Returns the width that an unformatted line of text would span on a bitmap if it were drawn
|
14
|
+
/// using draw_text with the same arguments.
|
15
|
+
/// @param text A UCS-4 string, normalization: NFC.
|
16
|
+
/// @param font_name Name of a system font, or filename of a TTF file (must contain '/' or '.').
|
20
17
|
double text_width(const std::u32string& text, const std::string& font_name, double font_height,
|
21
18
|
unsigned font_flags = 0);
|
22
19
|
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
20
|
+
/// Draws a line of plain text on a bitmap. This is a low-level function that does not
|
21
|
+
/// understand any of Gosu's HTML-like markup.
|
22
|
+
/// @param text A UCS-4 string, normalization: NFC.
|
23
|
+
/// @param font_name Name of a system font, or filename of a TTF file (must contain '/' or '.').
|
24
|
+
/// @param font_height Height, in pixels, of the text.
|
25
|
+
/// @param font_flags Binary combination of members of the FontFlags enum.
|
29
26
|
double draw_text(Bitmap& bitmap, double x, double y, Color c, const std::u32string& text,
|
30
27
|
const std::string& font_name, double font_height, unsigned font_flags = 0);
|
31
28
|
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
29
|
+
/// Creates a bitmap that is filled with the plain text given to the function.
|
30
|
+
/// The line can contain line breaks and HTML-like markup.
|
31
|
+
/// @param text Plain text.
|
32
|
+
/// @param font_name Name of a system font, or filename of a TTF file (must contain '/' or '.').
|
33
|
+
/// @param font_height Height of the font in pixels.
|
34
|
+
/// @param line_spacing Spacing between two lines of text in pixels. Can be negative to make
|
35
|
+
/// text stick together more closely.
|
36
|
+
/// @param width Width of the bitmap that will be returned.
|
37
|
+
/// Text will be split into multiple lines to avoid drawing over the right border.
|
38
|
+
/// When a single word is too long, it will be truncated.
|
39
|
+
/// A width smaller than 0 indicates that lines should not be wrapped, and the resulting
|
40
|
+
/// bitmap will be as wide as the widest line.
|
41
|
+
/// @param font_flags Binary combination of members of the FontFlags enum.
|
45
42
|
Bitmap layout_text(const std::string& text, const std::string& font_name,
|
46
43
|
double font_height, double line_spacing = 0,
|
47
44
|
int width = -1, Alignment align = AL_LEFT, unsigned font_flags = 0);
|
48
45
|
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
46
|
+
/// Creates a bitmap that is filled with the formatted text given to the function.
|
47
|
+
/// The line can contain line breaks and HTML-like markup.
|
48
|
+
/// @param markup Formatted text.
|
49
|
+
/// @param font_name Name of a system font, or filename of a TTF file (must contain '/' or '.').
|
50
|
+
/// @param font_height Height of the font in pixels.
|
51
|
+
/// @param line_spacing Spacing between two lines of text in pixels. Can be negative to make
|
52
|
+
/// text stick together more closely.
|
53
|
+
/// @param width Width of the bitmap that will be returned.
|
54
|
+
/// Text will be split into multiple lines to avoid drawing over the right border.
|
55
|
+
/// When a single word is too long, it will be truncated.
|
56
|
+
/// A width smaller than 0 indicates that lines should not be wrapped, and the resulting
|
57
|
+
/// bitmap will be as wide as the widest line.
|
58
|
+
/// @param font_flags Binary combination of members of the FontFlags enum.
|
62
59
|
Bitmap layout_markup(const std::string& markup, const std::string& font_name,
|
63
60
|
double font_height, double line_spacing = 0,
|
64
61
|
int width = -1, Alignment align = AL_LEFT, unsigned font_flags = 0);
|
data/include/Gosu/Utility.hpp
CHANGED
@@ -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
|
-
|
10
|
-
|
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
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
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
|
{
|