gosu 1.4.1 → 1.4.4
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/dependencies/SDL_sound/SDL_sound.c +21 -63
- data/dependencies/SDL_sound/SDL_sound.h +2 -2
- data/dependencies/SDL_sound/SDL_sound_aiff.c +26 -23
- data/dependencies/SDL_sound/SDL_sound_au.c +8 -8
- data/dependencies/SDL_sound/SDL_sound_coreaudio.c +4 -5
- data/dependencies/SDL_sound/SDL_sound_flac.c +28 -30
- data/dependencies/SDL_sound/SDL_sound_internal.h +4 -4
- data/dependencies/SDL_sound/SDL_sound_modplug.c +1 -1
- data/dependencies/SDL_sound/SDL_sound_mp3.c +19 -23
- data/dependencies/SDL_sound/SDL_sound_raw.c +5 -6
- data/dependencies/SDL_sound/SDL_sound_shn.c +4 -4
- data/dependencies/SDL_sound/SDL_sound_voc.c +15 -15
- data/dependencies/SDL_sound/SDL_sound_vorbis.c +14 -7
- data/dependencies/SDL_sound/SDL_sound_wav.c +17 -17
- data/dependencies/SDL_sound/dr_flac.h +10840 -4779
- data/dependencies/SDL_sound/dr_mp3.h +2793 -1004
- data/dependencies/SDL_sound/libmodplug/fastmix.c +5 -0
- data/dependencies/SDL_sound/libmodplug/load_669.c +1 -1
- data/dependencies/SDL_sound/libmodplug/load_amf.c +1 -0
- data/dependencies/SDL_sound/libmodplug/load_ams.c +38 -22
- data/dependencies/SDL_sound/libmodplug/load_it.c +18 -14
- data/dependencies/SDL_sound/libmodplug/load_mdl.c +18 -9
- data/dependencies/SDL_sound/libmodplug/load_med.c +7 -6
- data/dependencies/SDL_sound/libmodplug/load_mt2.c +36 -17
- data/dependencies/SDL_sound/libmodplug/load_okt.c +51 -24
- data/dependencies/SDL_sound/libmodplug/load_psm.c +4 -2
- data/dependencies/SDL_sound/libmodplug/load_s3m.c +4 -4
- data/dependencies/SDL_sound/libmodplug/load_ult.c +4 -3
- data/dependencies/SDL_sound/libmodplug/load_xm.c +5 -5
- data/dependencies/SDL_sound/libmodplug/snd_fx.c +8 -1
- data/dependencies/SDL_sound/libmodplug/sndfile.c +21 -4
- data/dependencies/SDL_sound/stb_vorbis.h +10 -18
- data/dependencies/mojoAL/mojoal.c +260 -6
- data/dependencies/stb/stb_image.h +208 -73
- data/dependencies/stb/stb_image_write.h +57 -23
- data/dependencies/stb/stb_truetype.h +345 -279
- data/dependencies/utf8proc/utf8proc.c +37 -18
- data/dependencies/utf8proc/utf8proc.h +17 -5
- data/dependencies/utf8proc/utf8proc_data.h +12012 -10089
- data/ext/gosu/extconf.rb +6 -3
- data/include/Gosu/Buttons.hpp +103 -103
- data/include/Gosu/Directories.hpp +31 -24
- data/include/Gosu/Font.hpp +4 -2
- data/include/Gosu/Gosu.hpp +5 -8
- data/include/Gosu/IO.hpp +0 -3
- data/include/Gosu/Input.hpp +7 -1
- data/include/Gosu/Math.hpp +0 -3
- data/include/Gosu/TextInput.hpp +3 -3
- data/include/Gosu/Timing.hpp +3 -6
- data/include/Gosu/Version.hpp +1 -1
- data/include/Gosu/Window.hpp +3 -2
- data/rdoc/gosu.rb +16 -2
- data/src/Audio.cpp +2 -2
- data/src/AudioFileAudioToolbox.cpp +1 -1
- data/src/AudioFileSDLSound.cpp +1 -1
- data/src/AudioImpl.cpp +0 -7
- data/src/AudioImpl.hpp +1 -3
- data/src/BitmapIO.cpp +23 -2
- data/src/BlockAllocator.cpp +1 -1
- data/src/DirectoriesApple.cpp +25 -24
- data/src/DirectoriesUnix.cpp +14 -12
- data/src/DirectoriesWin.cpp +26 -30
- data/src/FileUnix.cpp +1 -1
- data/src/FileWin.cpp +1 -1
- data/src/Font.cpp +13 -3
- data/src/Graphics.cpp +1 -1
- data/src/Image.cpp +10 -15
- data/src/Input.cpp +16 -1
- data/src/InputUIKit.cpp +1 -1
- data/src/Macro.cpp +1 -1
- data/src/RubyGosu.cxx +76 -34
- data/src/TextInput.cpp +1 -1
- data/src/TimingApple.cpp +2 -2
- data/src/TimingUnix.cpp +3 -7
- data/src/TimingWin.cpp +1 -2
- data/src/TrueTypeFont.cpp +1 -1
- data/src/Window.cpp +5 -4
- data/src/WindowUIKit.cpp +1 -1
- metadata +3 -3
data/src/DirectoriesApple.cpp
CHANGED
@@ -4,65 +4,66 @@
|
|
4
4
|
#import <Gosu/Directories.hpp>
|
5
5
|
#import <Foundation/Foundation.h>
|
6
6
|
#import <unistd.h>
|
7
|
-
using namespace std;
|
8
7
|
|
9
8
|
void Gosu::use_resource_directory()
|
10
9
|
{
|
11
10
|
chdir(resource_prefix().c_str());
|
12
11
|
}
|
13
12
|
|
14
|
-
string Gosu::user_settings_prefix()
|
13
|
+
const std::string& Gosu::user_settings_prefix()
|
15
14
|
{
|
16
|
-
static string
|
15
|
+
static const std::string user_settings_prefix = [] {
|
17
16
|
@autoreleasepool {
|
18
17
|
NSString* library =
|
19
|
-
|
18
|
+
NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES)
|
19
|
+
.firstObject;
|
20
20
|
NSString* preferences = [library stringByAppendingPathComponent:@"Preferences"];
|
21
|
-
|
22
|
-
return string
|
21
|
+
|
22
|
+
return std::string{preferences.UTF8String ?: "."} + "/";
|
23
23
|
}
|
24
24
|
}();
|
25
|
-
return
|
25
|
+
return user_settings_prefix;
|
26
26
|
}
|
27
27
|
|
28
|
-
string Gosu::user_documents_prefix()
|
28
|
+
const std::string& Gosu::user_documents_prefix()
|
29
29
|
{
|
30
|
-
static string
|
30
|
+
static const std::string user_documents_prefix = [] {
|
31
31
|
@autoreleasepool {
|
32
32
|
NSString* documents =
|
33
|
-
|
34
|
-
|
35
|
-
|
33
|
+
NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)
|
34
|
+
.firstObject;
|
35
|
+
|
36
|
+
return std::string{documents.UTF8String ?: "."} + "/";
|
36
37
|
}
|
37
38
|
}();
|
38
|
-
return
|
39
|
+
return user_documents_prefix;
|
39
40
|
}
|
40
41
|
|
41
|
-
string Gosu::resource_prefix()
|
42
|
+
const std::string& Gosu::resource_prefix()
|
42
43
|
{
|
43
|
-
static string
|
44
|
+
static const std::string resource_prefix = [] {
|
44
45
|
@autoreleasepool {
|
45
46
|
NSString* resources = [NSBundle mainBundle].resourcePath;
|
46
|
-
return string
|
47
|
+
return std::string{resources.UTF8String ?: "."} + "/";
|
47
48
|
}
|
48
49
|
}();
|
49
|
-
return
|
50
|
+
return resource_prefix;
|
50
51
|
}
|
51
52
|
|
52
|
-
string Gosu::shared_resource_prefix()
|
53
|
+
const std::string& Gosu::shared_resource_prefix()
|
53
54
|
{
|
54
|
-
|
55
|
+
#ifdef GOSU_IS_IPHONE
|
55
56
|
return resource_prefix();
|
56
|
-
|
57
|
-
static string
|
57
|
+
#else
|
58
|
+
static const std::string shared_resource_prefix = [] {
|
58
59
|
@autoreleasepool {
|
59
60
|
NSString* bundle_path = [NSBundle mainBundle].bundlePath;
|
60
61
|
NSString* containing_path = [bundle_path stringByDeletingLastPathComponent];
|
61
|
-
return string
|
62
|
+
return std::string{containing_path.UTF8String ?: "."};
|
62
63
|
}
|
63
64
|
}();
|
64
|
-
return
|
65
|
-
|
65
|
+
return shared_resource_prefix;
|
66
|
+
#endif
|
66
67
|
}
|
67
68
|
|
68
69
|
#endif
|
data/src/DirectoriesUnix.cpp
CHANGED
@@ -7,13 +7,11 @@
|
|
7
7
|
#include <pwd.h>
|
8
8
|
#include <sys/types.h>
|
9
9
|
#include <unistd.h>
|
10
|
-
using namespace std;
|
11
10
|
|
12
|
-
static string home_dir()
|
11
|
+
static std::string home_dir()
|
13
12
|
{
|
14
13
|
passwd* pwd = getpwuid(geteuid());
|
15
|
-
|
16
|
-
return pwd->pw_dir;
|
14
|
+
return pwd && pwd->pw_dir ? pwd->pw_dir : ".";
|
17
15
|
}
|
18
16
|
|
19
17
|
void Gosu::use_resource_directory()
|
@@ -21,24 +19,28 @@ void Gosu::use_resource_directory()
|
|
21
19
|
// Do nothing, we expect the user to have the correct cwd on Linux.
|
22
20
|
}
|
23
21
|
|
24
|
-
string Gosu::resource_prefix()
|
22
|
+
const std::string& Gosu::resource_prefix()
|
25
23
|
{
|
26
|
-
|
24
|
+
static const std::string empty;
|
25
|
+
return empty;
|
27
26
|
}
|
28
27
|
|
29
|
-
string Gosu::shared_resource_prefix()
|
28
|
+
const std::string& Gosu::shared_resource_prefix()
|
30
29
|
{
|
31
|
-
|
30
|
+
static const std::string empty;
|
31
|
+
return empty;
|
32
32
|
}
|
33
33
|
|
34
|
-
string Gosu::user_settings_prefix()
|
34
|
+
const std::string& Gosu::user_settings_prefix()
|
35
35
|
{
|
36
|
-
|
36
|
+
static const std::string user_settings_prefix = home_dir() + "/.";
|
37
|
+
return user_settings_prefix;
|
37
38
|
}
|
38
39
|
|
39
|
-
string Gosu::user_documents_prefix()
|
40
|
+
const std::string& Gosu::user_documents_prefix()
|
40
41
|
{
|
41
|
-
|
42
|
+
static const std::string user_documents_prefix = home_dir() + "/";
|
43
|
+
return user_documents_prefix;
|
42
44
|
}
|
43
45
|
|
44
46
|
#endif
|
data/src/DirectoriesWin.cpp
CHANGED
@@ -1,21 +1,19 @@
|
|
1
1
|
#include <Gosu/Platform.hpp>
|
2
2
|
#if defined(GOSU_IS_WIN)
|
3
3
|
|
4
|
-
#include "WinUtility.hpp"
|
5
4
|
#include <Gosu/Directories.hpp>
|
6
5
|
#include <Gosu/Utility.hpp>
|
6
|
+
#include "WinUtility.hpp"
|
7
7
|
#include <cwchar>
|
8
|
-
#include <stdexcept>
|
9
8
|
#include <shlobj.h>
|
10
|
-
|
9
|
+
#include <stdexcept>
|
11
10
|
|
12
|
-
static string special_folder_path(int csidl)
|
11
|
+
static std::string special_folder_path(int csidl)
|
13
12
|
{
|
14
13
|
WCHAR buf[MAX_PATH + 2];
|
15
|
-
if (FAILED(SHGetFolderPathW(nullptr, csidl | CSIDL_FLAG_CREATE, nullptr, 0, buf)))
|
16
|
-
throw runtime_error
|
17
|
-
|
18
|
-
size_t len = wcslen(buf);
|
14
|
+
if (FAILED(SHGetFolderPathW(nullptr, csidl | CSIDL_FLAG_CREATE, nullptr, 0, buf)))
|
15
|
+
throw std::runtime_error{"Error getting special folder path"};
|
16
|
+
size_t len = std::wcslen(buf);
|
19
17
|
if (buf[len - 1] != L'\\') {
|
20
18
|
buf[len] = L'\\';
|
21
19
|
buf[len + 1] = 0;
|
@@ -23,16 +21,12 @@ static string special_folder_path(int csidl)
|
|
23
21
|
return Gosu::utf16_to_utf8(buf);
|
24
22
|
}
|
25
23
|
|
26
|
-
|
24
|
+
std::string exe_filename()
|
27
25
|
{
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
"getting the module filename");
|
33
|
-
result = Gosu::utf16_to_utf8(buffer);
|
34
|
-
}
|
35
|
-
return result;
|
26
|
+
WCHAR buffer[MAX_PATH * 2];
|
27
|
+
Gosu::winapi_check(GetModuleFileNameW(nullptr, buffer, MAX_PATH * 2),
|
28
|
+
"getting the module filename");
|
29
|
+
return Gosu::utf16_to_utf8(buffer);
|
36
30
|
}
|
37
31
|
|
38
32
|
void Gosu::use_resource_directory()
|
@@ -40,30 +34,32 @@ void Gosu::use_resource_directory()
|
|
40
34
|
SetCurrentDirectory(utf8_to_utf16(resource_prefix()).c_str());
|
41
35
|
}
|
42
36
|
|
43
|
-
string Gosu::resource_prefix()
|
37
|
+
const std::string& Gosu::resource_prefix()
|
44
38
|
{
|
45
|
-
static string
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
result
|
50
|
-
}
|
51
|
-
return
|
39
|
+
static const std::string resource_prefix = [] {
|
40
|
+
std::string result = exe_filename();
|
41
|
+
const auto last_delim = result.find_last_of("\\/");
|
42
|
+
result.resize(last_delim == std::string::npos ? 0 : last_delim + 1);
|
43
|
+
return result;
|
44
|
+
}();
|
45
|
+
return resource_prefix;
|
52
46
|
}
|
53
47
|
|
54
|
-
string Gosu::shared_resource_prefix()
|
48
|
+
const std::string& Gosu::shared_resource_prefix()
|
55
49
|
{
|
56
50
|
return resource_prefix();
|
57
51
|
}
|
58
52
|
|
59
|
-
string Gosu::user_settings_prefix()
|
53
|
+
const std::string& Gosu::user_settings_prefix()
|
60
54
|
{
|
61
|
-
|
55
|
+
static const std::string user_settings_prefix = special_folder_path(CSIDL_APPDATA);
|
56
|
+
return user_settings_prefix;
|
62
57
|
}
|
63
58
|
|
64
|
-
string Gosu::user_documents_prefix()
|
59
|
+
const std::string& Gosu::user_documents_prefix()
|
65
60
|
{
|
66
|
-
|
61
|
+
static const std::string user_documents_prefix = special_folder_path(CSIDL_PERSONAL);
|
62
|
+
return user_documents_prefix;
|
67
63
|
}
|
68
64
|
|
69
65
|
#endif
|
data/src/FileUnix.cpp
CHANGED
data/src/FileWin.cpp
CHANGED
data/src/Font.cpp
CHANGED
@@ -13,11 +13,12 @@
|
|
13
13
|
|
14
14
|
static const int FONT_RENDER_SCALE = 2;
|
15
15
|
|
16
|
-
struct Gosu::Font::Impl : Gosu::Noncopyable
|
16
|
+
struct Gosu::Font::Impl : private Gosu::Noncopyable
|
17
17
|
{
|
18
18
|
std::string name;
|
19
19
|
int height;
|
20
20
|
unsigned base_flags;
|
21
|
+
unsigned image_flags;
|
21
22
|
|
22
23
|
// The most common characters are stored directly in an array for maximum performance.
|
23
24
|
// (This is the start of the Basic Multilingual Plane, up until the part where right-to-left
|
@@ -39,6 +40,9 @@ struct Gosu::Font::Impl : Gosu::Noncopyable
|
|
39
40
|
// If this codepoint has not been rendered before, do it now.
|
40
41
|
if (image->width() == 0 && image->height() == 0) {
|
41
42
|
auto scaled_height = height * FONT_RENDER_SCALE;
|
43
|
+
// Optimization: Don't render higher-resolution versions if we use
|
44
|
+
// next neighbor interpolation anyway.
|
45
|
+
if (image_flags & IF_RETRO) scaled_height = height;
|
42
46
|
|
43
47
|
std::u32string string(1, codepoint);
|
44
48
|
Bitmap bitmap(scaled_height, scaled_height);
|
@@ -51,19 +55,20 @@ struct Gosu::Font::Impl : Gosu::Noncopyable
|
|
51
55
|
font_flags);
|
52
56
|
}
|
53
57
|
|
54
|
-
*image = Image(bitmap, 0, 0, required_width, scaled_height);
|
58
|
+
*image = Image(bitmap, 0, 0, required_width, scaled_height, image_flags);
|
55
59
|
}
|
56
60
|
|
57
61
|
return *image;
|
58
62
|
}
|
59
63
|
};
|
60
64
|
|
61
|
-
Gosu::Font::Font(int font_height, const std::string& font_name, unsigned font_flags)
|
65
|
+
Gosu::Font::Font(int font_height, const std::string& font_name, unsigned font_flags, unsigned image_flags)
|
62
66
|
: m_impl{new Impl}
|
63
67
|
{
|
64
68
|
m_impl->name = font_name;
|
65
69
|
m_impl->height = font_height;
|
66
70
|
m_impl->base_flags = font_flags;
|
71
|
+
m_impl->image_flags = image_flags;
|
67
72
|
}
|
68
73
|
|
69
74
|
const std::string& Gosu::Font::name() const
|
@@ -81,6 +86,11 @@ unsigned Gosu::Font::flags() const
|
|
81
86
|
return m_impl->base_flags;
|
82
87
|
}
|
83
88
|
|
89
|
+
unsigned Gosu::Font::image_flags() const
|
90
|
+
{
|
91
|
+
return m_impl->image_flags;
|
92
|
+
}
|
93
|
+
|
84
94
|
double Gosu::Font::text_width(const std::string& text) const
|
85
95
|
{
|
86
96
|
return markup_width(escape_markup(text));
|
data/src/Graphics.cpp
CHANGED
data/src/Image.cpp
CHANGED
@@ -8,39 +8,34 @@
|
|
8
8
|
#include <stdexcept>
|
9
9
|
|
10
10
|
Gosu::Image::Image()
|
11
|
-
: m_data
|
11
|
+
: m_data{EmptyImageData::instance_ptr()}
|
12
12
|
{
|
13
13
|
}
|
14
14
|
|
15
15
|
Gosu::Image::Image(const std::string& filename, unsigned image_flags)
|
16
|
+
: Image(load_image_file(filename), image_flags)
|
16
17
|
{
|
17
|
-
// Forward.
|
18
|
-
Bitmap bitmap = load_image_file(filename);
|
19
|
-
Image{bitmap, image_flags}.m_data.swap(m_data);
|
20
18
|
}
|
21
19
|
|
22
20
|
Gosu::Image::Image(const std::string& filename, int src_x, int src_y, int src_width, int src_height,
|
23
21
|
unsigned image_flags)
|
22
|
+
: Image(load_image_file(filename), src_x, src_y, src_width, src_height, image_flags)
|
24
23
|
{
|
25
|
-
// Forward.
|
26
|
-
Bitmap bitmap = load_image_file(filename);
|
27
|
-
Image{bitmap, src_x, src_y, src_width, src_height, image_flags}.m_data.swap(m_data);
|
28
24
|
}
|
29
25
|
|
30
26
|
Gosu::Image::Image(const Bitmap& source, unsigned image_flags)
|
27
|
+
: Image(source, 0, 0, source.width(), source.height(), image_flags)
|
31
28
|
{
|
32
|
-
// Forward.
|
33
|
-
Image{source, 0, 0, source.width(), source.height(), image_flags}.m_data.swap(m_data);
|
34
29
|
}
|
35
30
|
|
36
31
|
Gosu::Image::Image(const Bitmap& source, int src_x, int src_y, int src_width, int src_height,
|
37
32
|
unsigned image_flags)
|
38
|
-
: m_data
|
33
|
+
: m_data{Graphics::create_image(source, src_x, src_y, src_width, src_height, image_flags)}
|
39
34
|
{
|
40
35
|
}
|
41
36
|
|
42
37
|
Gosu::Image::Image(std::unique_ptr<ImageData>&& data)
|
43
|
-
: m_data
|
38
|
+
: m_data{data.release()}
|
44
39
|
{
|
45
40
|
if (!m_data) throw std::invalid_argument("Gosu::Image cannot be initialized with nullptr");
|
46
41
|
}
|
@@ -104,8 +99,8 @@ Gosu::ImageData& Gosu::Image::data() const
|
|
104
99
|
return *m_data;
|
105
100
|
}
|
106
101
|
|
107
|
-
std::vector<Gosu::Image> Gosu::load_tiles(const Bitmap& bmp,
|
108
|
-
unsigned flags)
|
102
|
+
std::vector<Gosu::Image> Gosu::load_tiles(const Bitmap& bmp, //
|
103
|
+
int tile_width, int tile_height, unsigned flags)
|
109
104
|
{
|
110
105
|
int tiles_x, tiles_y;
|
111
106
|
std::vector<Image> images;
|
@@ -136,8 +131,8 @@ std::vector<Gosu::Image> Gosu::load_tiles(const Bitmap& bmp, int tile_width, int
|
|
136
131
|
return images;
|
137
132
|
}
|
138
133
|
|
139
|
-
std::vector<Gosu::Image> Gosu::load_tiles(const std::string& filename,
|
140
|
-
int tile_height, unsigned flags)
|
134
|
+
std::vector<Gosu::Image> Gosu::load_tiles(const std::string& filename, //
|
135
|
+
int tile_width, int tile_height, unsigned flags)
|
141
136
|
{
|
142
137
|
Bitmap bmp = load_image_file(filename);
|
143
138
|
return load_tiles(bmp, tile_width, tile_height, flags);
|
data/src/Input.cpp
CHANGED
@@ -36,7 +36,7 @@ static vector<shared_ptr<SDL_GameController>> open_game_controllers;
|
|
36
36
|
// Stores joystick instance id or -1 if empty
|
37
37
|
static array<int, Gosu::NUM_GAMEPADS> gamepad_slots = {-1, -1, -1, -1};
|
38
38
|
|
39
|
-
struct Gosu::Input::Impl : Gosu::Noncopyable
|
39
|
+
struct Gosu::Input::Impl : private Gosu::Noncopyable
|
40
40
|
{
|
41
41
|
struct InputEvent
|
42
42
|
{
|
@@ -678,4 +678,19 @@ void Gosu::Input::set_text_input(TextInput* text_input)
|
|
678
678
|
pimpl->text_input = text_input;
|
679
679
|
}
|
680
680
|
|
681
|
+
std::string Gosu::Input::clipboard()
|
682
|
+
{
|
683
|
+
require_sdl_video();
|
684
|
+
|
685
|
+
std::shared_ptr<char> clipboard{SDL_GetClipboardText(), SDL_free};
|
686
|
+
return std::string{clipboard.get()};
|
687
|
+
}
|
688
|
+
|
689
|
+
void Gosu::Input::set_clipboard(const std::string& text)
|
690
|
+
{
|
691
|
+
require_sdl_video();
|
692
|
+
|
693
|
+
SDL_SetClipboardText(text.c_str());
|
694
|
+
}
|
695
|
+
|
681
696
|
#endif
|
data/src/InputUIKit.cpp
CHANGED
data/src/Macro.cpp
CHANGED
data/src/RubyGosu.cxx
CHANGED
@@ -2345,6 +2345,16 @@ namespace Gosu
|
|
2345
2345
|
{
|
2346
2346
|
return Gosu::Input::axis(btn);
|
2347
2347
|
}
|
2348
|
+
|
2349
|
+
std::string clipboard()
|
2350
|
+
{
|
2351
|
+
return Gosu::Input::clipboard();
|
2352
|
+
}
|
2353
|
+
|
2354
|
+
void set_clipboard(const std::string& text)
|
2355
|
+
{
|
2356
|
+
return Gosu::Input::set_clipboard(text);
|
2357
|
+
}
|
2348
2358
|
}
|
2349
2359
|
|
2350
2360
|
// Global graphics functions
|
@@ -2806,6 +2816,7 @@ SWIGINTERN Gosu::Font *new_Gosu_Font__SWIG_0(Gosu::Window &window,std::string co
|
|
2806
2816
|
SWIGINTERN Gosu::Font *new_Gosu_Font__SWIG_1(int height,VALUE options=0){
|
2807
2817
|
std::string font_name = Gosu::default_font_name();
|
2808
2818
|
unsigned font_flags = 0;
|
2819
|
+
unsigned image_flags = 0;
|
2809
2820
|
|
2810
2821
|
if (options) {
|
2811
2822
|
Check_Type(options, T_HASH);
|
@@ -2831,6 +2842,9 @@ SWIGINTERN Gosu::Font *new_Gosu_Font__SWIG_1(int height,VALUE options=0){
|
|
2831
2842
|
else if (!strcmp(key_string, "underline")) {
|
2832
2843
|
if (RTEST(value)) font_flags |= Gosu::FF_UNDERLINE;
|
2833
2844
|
}
|
2845
|
+
else if (!strcmp(key_string, "retro")) {
|
2846
|
+
if (RTEST(value)) image_flags |= Gosu::IF_RETRO;
|
2847
|
+
}
|
2834
2848
|
else {
|
2835
2849
|
static bool issued_warning = false;
|
2836
2850
|
if (!issued_warning) {
|
@@ -2841,7 +2855,7 @@ SWIGINTERN Gosu::Font *new_Gosu_Font__SWIG_1(int height,VALUE options=0){
|
|
2841
2855
|
}
|
2842
2856
|
}
|
2843
2857
|
|
2844
|
-
return new Gosu::Font(height, font_name, font_flags);
|
2858
|
+
return new Gosu::Font(height, font_name, font_flags, image_flags);
|
2845
2859
|
}
|
2846
2860
|
SWIGINTERN double Gosu_Font_text_width(Gosu::Font *self,std::string const &markup,double scale_x=1.0){
|
2847
2861
|
static bool issued_warning = false;
|
@@ -5258,37 +5272,6 @@ fail:
|
|
5258
5272
|
}
|
5259
5273
|
|
5260
5274
|
|
5261
|
-
SWIGINTERN VALUE
|
5262
|
-
_wrap_Font_flags(int argc, VALUE *argv, VALUE self) {
|
5263
|
-
Gosu::Font *arg1 = (Gosu::Font *) 0 ;
|
5264
|
-
void *argp1 = 0 ;
|
5265
|
-
int res1 = 0 ;
|
5266
|
-
unsigned int result;
|
5267
|
-
VALUE vresult = Qnil;
|
5268
|
-
|
5269
|
-
if ((argc < 0) || (argc > 0)) {
|
5270
|
-
rb_raise(rb_eArgError, "wrong # of arguments(%d for 0)",argc); SWIG_fail;
|
5271
|
-
}
|
5272
|
-
res1 = SWIG_ConvertPtr(self, &argp1,SWIGTYPE_p_Gosu__Font, 0 | 0 );
|
5273
|
-
if (!SWIG_IsOK(res1)) {
|
5274
|
-
SWIG_exception_fail(SWIG_ArgError(res1), Ruby_Format_TypeError( "", "Gosu::Font const *","flags", 1, self ));
|
5275
|
-
}
|
5276
|
-
arg1 = reinterpret_cast< Gosu::Font * >(argp1);
|
5277
|
-
{
|
5278
|
-
try {
|
5279
|
-
result = (unsigned int)((Gosu::Font const *)arg1)->flags();
|
5280
|
-
}
|
5281
|
-
catch (const std::exception& e) {
|
5282
|
-
SWIG_exception(SWIG_RuntimeError, e.what());
|
5283
|
-
}
|
5284
|
-
}
|
5285
|
-
vresult = SWIG_From_unsigned_SS_int(static_cast< unsigned int >(result));
|
5286
|
-
return vresult;
|
5287
|
-
fail:
|
5288
|
-
return Qnil;
|
5289
|
-
}
|
5290
|
-
|
5291
|
-
|
5292
5275
|
SWIGINTERN VALUE
|
5293
5276
|
_wrap_Font_draw_text(int argc, VALUE *argv, VALUE self) {
|
5294
5277
|
Gosu::Font *arg1 = (Gosu::Font *) 0 ;
|
@@ -10945,6 +10928,64 @@ fail:
|
|
10945
10928
|
}
|
10946
10929
|
|
10947
10930
|
|
10931
|
+
SWIGINTERN VALUE
|
10932
|
+
_wrap_clipboard(int argc, VALUE *argv, VALUE self) {
|
10933
|
+
std::string result;
|
10934
|
+
VALUE vresult = Qnil;
|
10935
|
+
|
10936
|
+
if ((argc < 0) || (argc > 0)) {
|
10937
|
+
rb_raise(rb_eArgError, "wrong # of arguments(%d for 0)",argc); SWIG_fail;
|
10938
|
+
}
|
10939
|
+
{
|
10940
|
+
try {
|
10941
|
+
result = Gosu::clipboard();
|
10942
|
+
}
|
10943
|
+
catch (const std::exception& e) {
|
10944
|
+
SWIG_exception(SWIG_RuntimeError, e.what());
|
10945
|
+
}
|
10946
|
+
}
|
10947
|
+
vresult = SWIG_From_std_string(static_cast< std::string >(result));
|
10948
|
+
return vresult;
|
10949
|
+
fail:
|
10950
|
+
return Qnil;
|
10951
|
+
}
|
10952
|
+
|
10953
|
+
|
10954
|
+
SWIGINTERN VALUE
|
10955
|
+
_wrap_clipboarde___(int argc, VALUE *argv, VALUE self) {
|
10956
|
+
std::string *arg1 = 0 ;
|
10957
|
+
int res1 = SWIG_OLDOBJ ;
|
10958
|
+
|
10959
|
+
if ((argc < 1) || (argc > 1)) {
|
10960
|
+
rb_raise(rb_eArgError, "wrong # of arguments(%d for 1)",argc); SWIG_fail;
|
10961
|
+
}
|
10962
|
+
{
|
10963
|
+
std::string *ptr = (std::string *)0;
|
10964
|
+
res1 = SWIG_AsPtr_std_string(argv[0], &ptr);
|
10965
|
+
if (!SWIG_IsOK(res1)) {
|
10966
|
+
SWIG_exception_fail(SWIG_ArgError(res1), Ruby_Format_TypeError( "", "std::string const &","Gosu::set_clipboard", 1, argv[0] ));
|
10967
|
+
}
|
10968
|
+
if (!ptr) {
|
10969
|
+
SWIG_exception_fail(SWIG_ValueError, Ruby_Format_TypeError("invalid null reference ", "std::string const &","Gosu::set_clipboard", 1, argv[0]));
|
10970
|
+
}
|
10971
|
+
arg1 = ptr;
|
10972
|
+
}
|
10973
|
+
{
|
10974
|
+
try {
|
10975
|
+
Gosu::set_clipboard((std::string const &)*arg1);
|
10976
|
+
}
|
10977
|
+
catch (const std::exception& e) {
|
10978
|
+
SWIG_exception(SWIG_RuntimeError, e.what());
|
10979
|
+
}
|
10980
|
+
}
|
10981
|
+
if (SWIG_IsNewObj(res1)) delete arg1;
|
10982
|
+
return Qnil;
|
10983
|
+
fail:
|
10984
|
+
if (SWIG_IsNewObj(res1)) delete arg1;
|
10985
|
+
return Qnil;
|
10986
|
+
}
|
10987
|
+
|
10988
|
+
|
10948
10989
|
SWIGINTERN VALUE
|
10949
10990
|
_wrap_draw_line(int argc, VALUE *argv, VALUE self) {
|
10950
10991
|
double arg1 ;
|
@@ -12486,7 +12527,7 @@ SWIGEXPORT void Init_gosu(void) {
|
|
12486
12527
|
rb_define_const(mGosu, "LICENSES", SWIG_From_std_string(static_cast< std::string >(Gosu::LICENSES)));
|
12487
12528
|
rb_define_const(mGosu, "MAJOR_VERSION", SWIG_From_int(static_cast< int >(1)));
|
12488
12529
|
rb_define_const(mGosu, "MINOR_VERSION", SWIG_From_int(static_cast< int >(4)));
|
12489
|
-
rb_define_const(mGosu, "POINT_VERSION", SWIG_From_int(static_cast< int >(
|
12530
|
+
rb_define_const(mGosu, "POINT_VERSION", SWIG_From_int(static_cast< int >(4)));
|
12490
12531
|
rb_define_module_function(mGosu, "milliseconds", VALUEFUNC(_wrap_milliseconds), -1);
|
12491
12532
|
rb_define_module_function(mGosu, "random", VALUEFUNC(_wrap_random), -1);
|
12492
12533
|
rb_define_module_function(mGosu, "degrees_to_radians", VALUEFUNC(_wrap_degrees_to_radians), -1);
|
@@ -12544,7 +12585,6 @@ SWIGEXPORT void Init_gosu(void) {
|
|
12544
12585
|
rb_define_method(SwigClassFont.klass, "initialize", VALUEFUNC(_wrap_new_Font), -1);
|
12545
12586
|
rb_define_method(SwigClassFont.klass, "name", VALUEFUNC(_wrap_Font_name), -1);
|
12546
12587
|
rb_define_method(SwigClassFont.klass, "height", VALUEFUNC(_wrap_Font_height), -1);
|
12547
|
-
rb_define_method(SwigClassFont.klass, "flags", VALUEFUNC(_wrap_Font_flags), -1);
|
12548
12588
|
rb_define_method(SwigClassFont.klass, "draw_text", VALUEFUNC(_wrap_Font_draw_text), -1);
|
12549
12589
|
rb_define_method(SwigClassFont.klass, "draw_markup", VALUEFUNC(_wrap_Font_draw_markup), -1);
|
12550
12590
|
rb_define_method(SwigClassFont.klass, "draw_text_rel", VALUEFUNC(_wrap_Font_draw_text_rel), -1);
|
@@ -12988,6 +13028,8 @@ SWIGEXPORT void Init_gosu(void) {
|
|
12988
13028
|
rb_define_module_function(mGosu, "button_name", VALUEFUNC(_wrap_button_name), -1);
|
12989
13029
|
rb_define_module_function(mGosu, "gamepad_name", VALUEFUNC(_wrap_gamepad_name), -1);
|
12990
13030
|
rb_define_module_function(mGosu, "axis", VALUEFUNC(_wrap_axis), -1);
|
13031
|
+
rb_define_module_function(mGosu, "clipboard", VALUEFUNC(_wrap_clipboard), -1);
|
13032
|
+
rb_define_module_function(mGosu, "clipboard=", VALUEFUNC(_wrap_clipboarde___), -1);
|
12991
13033
|
rb_define_module_function(mGosu, "draw_line", VALUEFUNC(_wrap_draw_line), -1);
|
12992
13034
|
rb_define_module_function(mGosu, "draw_triangle", VALUEFUNC(_wrap_draw_triangle), -1);
|
12993
13035
|
rb_define_module_function(mGosu, "draw_quad", VALUEFUNC(_wrap_draw_quad), -1);
|
data/src/TextInput.cpp
CHANGED
data/src/TimingApple.cpp
CHANGED
@@ -17,11 +17,11 @@ void Gosu::sleep(unsigned milliseconds)
|
|
17
17
|
unsigned long Gosu::milliseconds()
|
18
18
|
{
|
19
19
|
static mach_timebase_info_data_t info;
|
20
|
-
static uint64_t first_tick = [] {
|
20
|
+
static const uint64_t first_tick = [] {
|
21
21
|
mach_timebase_info(&info);
|
22
22
|
return mach_absolute_time();
|
23
23
|
}();
|
24
|
-
|
24
|
+
|
25
25
|
uint64_t runtime = mach_absolute_time() - first_tick;
|
26
26
|
return runtime * info.numer / info.denom / 1000000;
|
27
27
|
}
|
data/src/TimingUnix.cpp
CHANGED
@@ -12,16 +12,12 @@ void Gosu::sleep(unsigned milliseconds)
|
|
12
12
|
|
13
13
|
unsigned long Gosu::milliseconds()
|
14
14
|
{
|
15
|
-
static unsigned long start = 0;
|
16
|
-
|
17
15
|
timeval tp;
|
18
16
|
gettimeofday(&tp, nullptr);
|
17
|
+
unsigned long ms = tp.tv_usec / 1000UL + tp.tv_sec * 1000UL;
|
19
18
|
|
20
|
-
|
21
|
-
|
22
|
-
}
|
23
|
-
|
24
|
-
return tp.tv_usec / 1000UL + tp.tv_sec * 1000UL - start;
|
19
|
+
static unsigned long start = ms;
|
20
|
+
return ms - start;
|
25
21
|
}
|
26
22
|
|
27
23
|
#endif
|
data/src/TimingWin.cpp
CHANGED
@@ -2,7 +2,6 @@
|
|
2
2
|
#if defined(GOSU_IS_WIN)
|
3
3
|
|
4
4
|
#include <Gosu/Timing.hpp>
|
5
|
-
#include <cstdlib>
|
6
5
|
#include <windows.h>
|
7
6
|
|
8
7
|
void Gosu::sleep(unsigned milliseconds)
|
@@ -12,7 +11,7 @@ void Gosu::sleep(unsigned milliseconds)
|
|
12
11
|
|
13
12
|
unsigned long Gosu::milliseconds()
|
14
13
|
{
|
15
|
-
static unsigned long start = [] {
|
14
|
+
static const unsigned long start = [] {
|
16
15
|
timeBeginPeriod(1);
|
17
16
|
return timeGetTime();
|
18
17
|
}();
|