gosu 0.14.5 → 0.15.2
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/.yardopts +1 -0
- data/COPYING +1 -1
- data/Gosu/Channel.h +25 -0
- data/Gosu/Color.h +38 -0
- data/Gosu/Font.h +36 -0
- data/Gosu/Gosu.h +79 -0
- data/Gosu/Image.h +54 -0
- data/Gosu/Sample.h +19 -0
- data/Gosu/Song.h +24 -0
- data/Gosu/TextInput.h +30 -0
- data/Gosu/Version.hpp +2 -2
- data/Gosu/Window.h +61 -0
- data/Gosu/Window.hpp +3 -2
- data/README.md +1 -1
- data/ext/gosu/extconf.rb +3 -0
- data/lib/gosu/compat.rb +12 -7
- data/lib/gosu/patches.rb +8 -2
- data/lib/gosu/swig_patches.rb +20 -9
- data/rdoc/gosu.rb +28 -7
- data/src/ChannelWrapper.cpp +50 -0
- data/src/ColorWrapper.cpp +126 -0
- data/src/Constants.cpp +287 -0
- data/src/Font.cpp +1 -0
- data/src/FontWrapper.cpp +74 -0
- data/src/GosuWrapper.cpp +232 -0
- data/src/Graphics.cpp +4 -1
- data/src/GraphicsImpl.hpp +0 -1
- data/src/ImageWrapper.cpp +168 -0
- data/src/LargeImageData.cpp +1 -0
- data/src/MarkupParser.cpp +11 -3
- data/src/RubyGosu.cxx +185 -121
- data/src/RubyGosu.h +2 -2
- data/src/SampleWrapper.cpp +30 -0
- data/src/SongWrapper.cpp +52 -0
- data/src/TexChunk.cpp +29 -19
- data/src/Text.cpp +2 -0
- data/src/TextBuilder.cpp +3 -3
- data/src/TextInputWrapper.cpp +101 -0
- data/src/TrueTypeFont.cpp +1 -0
- data/src/Window.cpp +62 -28
- data/src/WindowUIKit.cpp +8 -4
- data/src/WindowWrapper.cpp +289 -0
- data/src/stb_image.h +153 -56
- data/src/stb_image_write.h +111 -60
- data/src/stb_truetype.h +74 -39
- data/src/stb_vorbis.c +55 -15
- data/src/utf8proc.c +47 -29
- data/src/utf8proc.h +46 -24
- data/src/utf8proc_data.h +10043 -9609
- metadata +23 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: '0296b3949deeaa56bbd8b81beb0e584871dc1b27c0a9898efd8d72e79a7dc367'
|
4
|
+
data.tar.gz: d5066f88ba59903e0fc3c5a536dae0f3bf218814e83449c2a0a657837be8ea82
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3f6f8143b4eb39d6c0763467b5294597f5c351076f8453b213d670a055192439d9d676204928db75704584334619c9ec51a0c3ea6177bb88dfda098c5b9e2104
|
7
|
+
data.tar.gz: ab8c0af903bebc74660cdf32bb9b803e09759017a5faeefdd5a69ca0f1e190e4bdb0e44e0df36f8171fecbeb167c0f010f04221bdc74743145b72e88a28abb94
|
data/.yardopts
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
rdoc/gosu.rb - README.md COPYING
|
data/COPYING
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
Copyright (C) 2001-
|
1
|
+
Copyright (C) 2001-2020 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/Gosu/Channel.h
ADDED
@@ -0,0 +1,25 @@
|
|
1
|
+
#pragma once
|
2
|
+
|
3
|
+
#ifdef __cplusplus
|
4
|
+
extern "C" {
|
5
|
+
#endif
|
6
|
+
|
7
|
+
typedef struct Gosu_Channel Gosu_Channel;
|
8
|
+
|
9
|
+
Gosu_Channel* Gosu_Channel_create(Gosu_Channel* channel);
|
10
|
+
void Gosu_Channel_destroy(Gosu_Channel* channel);
|
11
|
+
|
12
|
+
void Gosu_Channel_play(Gosu_Channel *channel);
|
13
|
+
bool Gosu_Channel_playing(Gosu_Channel *channel);
|
14
|
+
void Gosu_Channel_pause(Gosu_Channel *channel);
|
15
|
+
bool Gosu_Channel_paused(Gosu_Channel *channel);
|
16
|
+
void Gosu_Channel_resume(Gosu_Channel *channel);
|
17
|
+
void Gosu_Channel_stop(Gosu_Channel *channel);
|
18
|
+
|
19
|
+
void Gosu_Channel_set_volume(Gosu_Channel *channel, double volume);
|
20
|
+
void Gosu_Channel_set_speed(Gosu_Channel *channel, double speed);
|
21
|
+
void Gosu_Channel_set_pan(Gosu_Channel *channel, double pan);
|
22
|
+
|
23
|
+
#ifdef __cplusplus
|
24
|
+
}
|
25
|
+
#endif
|
data/Gosu/Color.h
ADDED
@@ -0,0 +1,38 @@
|
|
1
|
+
#pragma once
|
2
|
+
|
3
|
+
#ifdef __cplusplus
|
4
|
+
extern "C" {
|
5
|
+
#endif
|
6
|
+
|
7
|
+
typedef unsigned char Gosu_Color_Channel;
|
8
|
+
|
9
|
+
unsigned Gosu_Color_create(unsigned argb);
|
10
|
+
unsigned Gosu_Color_create_argb(Gosu_Color_Channel a, Gosu_Color_Channel r, Gosu_Color_Channel g, Gosu_Color_Channel b);
|
11
|
+
unsigned Gosu_Color_create_from_hsv(double h, double s, double v);
|
12
|
+
unsigned Gosu_Color_create_from_ahsv(Gosu_Color_Channel alpha, double h, double s, double v);
|
13
|
+
|
14
|
+
Gosu_Color_Channel Gosu_Color_alpha(unsigned color);
|
15
|
+
Gosu_Color_Channel Gosu_Color_red(unsigned color);
|
16
|
+
Gosu_Color_Channel Gosu_Color_green(unsigned color);
|
17
|
+
Gosu_Color_Channel Gosu_Color_blue(unsigned color);
|
18
|
+
unsigned Gosu_Color_set_alpha(unsigned color, Gosu_Color_Channel value);
|
19
|
+
unsigned Gosu_Color_set_red(unsigned color, Gosu_Color_Channel value);
|
20
|
+
unsigned Gosu_Color_set_green(unsigned color, Gosu_Color_Channel value);
|
21
|
+
unsigned Gosu_Color_set_blue(unsigned color, Gosu_Color_Channel value);
|
22
|
+
|
23
|
+
double Gosu_Color_hue(unsigned color);
|
24
|
+
double Gosu_Color_saturation(unsigned color);
|
25
|
+
double Gosu_Color_value(unsigned color);
|
26
|
+
unsigned Gosu_Color_set_hue(unsigned color, double value);
|
27
|
+
unsigned Gosu_Color_set_saturation(unsigned color, double value);
|
28
|
+
unsigned Gosu_Color_set_value(unsigned color, double value);
|
29
|
+
|
30
|
+
unsigned Gosu_Color_argb(unsigned color);
|
31
|
+
unsigned Gosu_Color_bgr(unsigned color);
|
32
|
+
unsigned Gosu_Color_abgr(unsigned color);
|
33
|
+
|
34
|
+
unsigned Gosu_Color_gl(unsigned color);
|
35
|
+
|
36
|
+
#ifdef __cplusplus
|
37
|
+
}
|
38
|
+
#endif
|
data/Gosu/Font.h
ADDED
@@ -0,0 +1,36 @@
|
|
1
|
+
#pragma once
|
2
|
+
|
3
|
+
#ifdef __cplusplus
|
4
|
+
extern "C" {
|
5
|
+
#endif
|
6
|
+
|
7
|
+
typedef struct Gosu_Font Gosu_Font;
|
8
|
+
|
9
|
+
Gosu_Font* Gosu_Font_create(int height, const char* name, unsigned flags);
|
10
|
+
|
11
|
+
const char *Gosu_Font_name(Gosu_Font* font);
|
12
|
+
int Gosu_Font_height(Gosu_Font* font);
|
13
|
+
unsigned Gosu_Font_flags(Gosu_Font* font);
|
14
|
+
|
15
|
+
double Gosu_Font_text_width(Gosu_Font* font, const char* text);
|
16
|
+
double Gosu_Font_markup_width(Gosu_Font* font, const char* text);
|
17
|
+
|
18
|
+
void Gosu_Font_draw_text(Gosu_Font* font, const char* text, double x, double y, double z,
|
19
|
+
double scale_x, double scale_y, unsigned c, unsigned mode);
|
20
|
+
void Gosu_Font_draw_markup(Gosu_Font* font, const char* text, double x, double y, double z,
|
21
|
+
double scale_x, double scale_y, unsigned c, unsigned mode);
|
22
|
+
|
23
|
+
void Gosu_Font_draw_text_rel(Gosu_Font* font, const char* text, double x, double y, double z,
|
24
|
+
double rel_x, double rel_y, double scale_x, double scale_y,
|
25
|
+
unsigned c, unsigned mode);
|
26
|
+
void Gosu_Font_draw_markup_rel(Gosu_Font* font, const char* text, double x, double y, double z,
|
27
|
+
double rel_x, double rel_y, double scale_x, double scale_y,
|
28
|
+
unsigned c, unsigned mode);
|
29
|
+
|
30
|
+
void Gosu_Font_set_image(Gosu_Font* font, const char* codepoint, unsigned font_flags, Gosu_Image* image);
|
31
|
+
|
32
|
+
void Gosu_Font_destroy(Gosu_Font* font);
|
33
|
+
|
34
|
+
#ifdef __cplusplus
|
35
|
+
}
|
36
|
+
#endif
|
data/Gosu/Gosu.h
ADDED
@@ -0,0 +1,79 @@
|
|
1
|
+
#pragma once
|
2
|
+
|
3
|
+
#ifdef __cplusplus
|
4
|
+
extern "C" {
|
5
|
+
#endif
|
6
|
+
|
7
|
+
#include <Gosu/Window.h>
|
8
|
+
#include <Gosu/Image.h>
|
9
|
+
#include <Gosu/Font.h>
|
10
|
+
#include <Gosu/Color.h>
|
11
|
+
#include <Gosu/TextInput.h>
|
12
|
+
#include <Gosu/Sample.h>
|
13
|
+
#include <Gosu/Song.h>
|
14
|
+
#include <Gosu/Channel.h>
|
15
|
+
|
16
|
+
// Graphics operations
|
17
|
+
void Gosu_gl_z(double z, void function(void *data), void* data);
|
18
|
+
void Gosu_gl(void function(void *data), void* data);
|
19
|
+
void Gosu_flush();
|
20
|
+
Gosu_Image* Gosu_render(int width, int height, void function(void *data), void* data, unsigned image_flags);
|
21
|
+
Gosu_Image* Gosu_record(int width, int height, void function(void *data), void* data);
|
22
|
+
void Gosu_clip_to(double x, double y, double width, double height, void function(void *data), void* data);
|
23
|
+
|
24
|
+
// Transformations
|
25
|
+
void Gosu_transform(double m0, double m1, double m2, double m3, double m4, double m5, double m6,
|
26
|
+
double m7, double m8, double m9, double m10, double m11, double m12, double m13,
|
27
|
+
double m14, double m15, void function(void *data), void* data);
|
28
|
+
void Gosu_translate(double x, double y, void function(void *data), void* data);
|
29
|
+
void Gosu_scale(double scale_x, double scale_y, double around_x, double around_y, void function(void *data), void* data);
|
30
|
+
void Gosu_rotate(double angle, double around_x, double around_y, void function(void *data), void* data);
|
31
|
+
|
32
|
+
void Gosu_clip_to(double x, double y, double width, double height, void function(void *data), void* data);
|
33
|
+
|
34
|
+
// Rendering
|
35
|
+
void Gosu_draw_line(double x1, double y1, unsigned c1,
|
36
|
+
double x2, double y2, unsigned c2,
|
37
|
+
double z, unsigned mode);
|
38
|
+
void Gosu_draw_triangle(double x1, double y1, unsigned c1,
|
39
|
+
double x2, double y2, unsigned c2,
|
40
|
+
double x3, double y3, unsigned c3,
|
41
|
+
double z, unsigned mode);
|
42
|
+
void Gosu_draw_rect(double x, double y, double width, double height, unsigned c, double z, unsigned mode);
|
43
|
+
void Gosu_draw_quad(double x1, double y1, unsigned c1,
|
44
|
+
double x2, double y2, unsigned c2,
|
45
|
+
double x3, double y3, unsigned c3,
|
46
|
+
double x4, double y4, unsigned c4,
|
47
|
+
double z, unsigned mode);
|
48
|
+
|
49
|
+
// Math functions
|
50
|
+
double Gosu_distance(double x1, double y1, double x2, double y2);
|
51
|
+
|
52
|
+
double Gosu_angle(double from_x, double from_y, double to_x, double to_y);
|
53
|
+
double Gosu_angle_diff(double from, double to);
|
54
|
+
|
55
|
+
double Gosu_offset_x(double angle, double radius);
|
56
|
+
double Gosu_offset_y(double angle, double radius);
|
57
|
+
|
58
|
+
double Gosu_random(double min, double max);
|
59
|
+
|
60
|
+
// Window/Screen information
|
61
|
+
unsigned Gosu_available_width(Gosu_Window* window);
|
62
|
+
unsigned Gosu_available_height(Gosu_Window* window);
|
63
|
+
unsigned Gosu_screen_width(Gosu_Window* window);
|
64
|
+
unsigned Gosu_screen_height(Gosu_Window* window);
|
65
|
+
|
66
|
+
// Button querying
|
67
|
+
int Gosu_button_down(int id);
|
68
|
+
const char* Gosu_button_id_to_char(int id);
|
69
|
+
unsigned Gosu_button_char_to_id(const char* character);
|
70
|
+
|
71
|
+
// Misc
|
72
|
+
int Gosu_fps();
|
73
|
+
const char* Gosu_language();
|
74
|
+
long Gosu_milliseconds();
|
75
|
+
const char* Gosu_default_font_name();
|
76
|
+
|
77
|
+
#ifdef __cplusplus
|
78
|
+
}
|
79
|
+
#endif
|
data/Gosu/Image.h
ADDED
@@ -0,0 +1,54 @@
|
|
1
|
+
#pragma once
|
2
|
+
|
3
|
+
#ifdef __cplusplus
|
4
|
+
extern "C" {
|
5
|
+
#endif
|
6
|
+
|
7
|
+
typedef struct Gosu_Image Gosu_Image;
|
8
|
+
|
9
|
+
typedef struct Gosu_GLTexInfo {
|
10
|
+
int tex_name;
|
11
|
+
double left, right, top, bottom;
|
12
|
+
} Gosu_GLTexInfo;
|
13
|
+
|
14
|
+
// Constructor
|
15
|
+
Gosu_Image* Gosu_Image_create(const char *filename, unsigned image_flags);
|
16
|
+
Gosu_Image *Gosu_Image_create_from_blob(unsigned char *blob, int byte_count, int width, int height, unsigned image_flags); // support for RMagick blob objects
|
17
|
+
Gosu_Image *Gosu_Image_create_from_markup(const char *markup, const char *font, double font_height,
|
18
|
+
int width, double spacing, unsigned align, unsigned font_flags, unsigned image_flags);
|
19
|
+
Gosu_Image* Gosu_Image_create_from_text(const char *text, const char *font, double font_height,
|
20
|
+
int width, double spacing, unsigned align, unsigned font_flags, unsigned image_flags);
|
21
|
+
Gosu_Image* Gosu_Image_create_from_subimage(Gosu_Image *source, int left, int top, int width, int height);
|
22
|
+
|
23
|
+
void Gosu_Image_create_from_tiles(const char *source, int tile_width, int tile_height, void function(void* data, Gosu_Image* image), void *data, unsigned image_flags);
|
24
|
+
void Gosu_Image_create_tiles_from_image(Gosu_Image *image, int tile_width, int tile_height, void function(void *data, Gosu_Image *image), void *data, unsigned image_flags);
|
25
|
+
|
26
|
+
// Destructor
|
27
|
+
void Gosu_Image_destroy(Gosu_Image *image);
|
28
|
+
|
29
|
+
// Image properties
|
30
|
+
unsigned Gosu_Image_width(Gosu_Image *image);
|
31
|
+
unsigned Gosu_Image_height(Gosu_Image *image);
|
32
|
+
|
33
|
+
// Rendering
|
34
|
+
void Gosu_Image_draw(Gosu_Image *image, double x, double y, double z,
|
35
|
+
double scale_x, double scale_y, unsigned color, unsigned mode);
|
36
|
+
void Gosu_Image_draw_rot(Gosu_Image *image, double x, double y, double z,
|
37
|
+
double angle, double center_x, double center_y,
|
38
|
+
double scale_x, double scale_y, unsigned color, unsigned mode);
|
39
|
+
void Gosu_Image_draw_as_quad(Gosu_Image *image, double x1, double y1, unsigned color1,
|
40
|
+
double x2, double y2, unsigned color2,
|
41
|
+
double x3, double y3, unsigned color3,
|
42
|
+
double x4, double y4, unsigned color4,
|
43
|
+
double z, unsigned mode);
|
44
|
+
|
45
|
+
// Operations
|
46
|
+
void Gosu_Image_insert(Gosu_Image *image, Gosu_Image *source, int x, int y);
|
47
|
+
void Gosu_Image_save(Gosu_Image *image, const char *filename);
|
48
|
+
unsigned char* Gosu_Image_to_blob(Gosu_Image *image);
|
49
|
+
Gosu_GLTexInfo* Gosu_Image_gl_tex_info_create(Gosu_Image *image);
|
50
|
+
void Gosu_Image_gl_tex_info_destroy(Gosu_GLTexInfo *tex_info);
|
51
|
+
|
52
|
+
#ifdef __cplusplus
|
53
|
+
}
|
54
|
+
#endif
|
data/Gosu/Sample.h
ADDED
@@ -0,0 +1,19 @@
|
|
1
|
+
#pragma once
|
2
|
+
|
3
|
+
#include <Gosu/Channel.h>
|
4
|
+
|
5
|
+
#ifdef __cplusplus
|
6
|
+
extern "C" {
|
7
|
+
#endif
|
8
|
+
|
9
|
+
typedef struct Gosu_Sample Gosu_Sample;
|
10
|
+
|
11
|
+
Gosu_Sample* Gosu_Sample_create(const char* filename);
|
12
|
+
void Gosu_Sample_destroy(Gosu_Sample* sample);
|
13
|
+
|
14
|
+
Gosu_Channel* Gosu_Sample_play(Gosu_Sample *sample, double volume, double speed, bool looping);
|
15
|
+
Gosu_Channel* Gosu_Sample_play_pan(Gosu_Sample *sample, double pan, double volume, double speed, bool looping);
|
16
|
+
|
17
|
+
#ifdef __cplusplus
|
18
|
+
}
|
19
|
+
#endif
|
data/Gosu/Song.h
ADDED
@@ -0,0 +1,24 @@
|
|
1
|
+
#pragma once
|
2
|
+
|
3
|
+
#ifdef __cplusplus
|
4
|
+
extern "C" {
|
5
|
+
#endif
|
6
|
+
|
7
|
+
typedef struct Gosu_Song Gosu_Song;
|
8
|
+
|
9
|
+
Gosu_Song* Gosu_Song_create(const char* filename);
|
10
|
+
void Gosu_Song_destroy(Gosu_Song* song);
|
11
|
+
|
12
|
+
void Gosu_Song_pause(Gosu_Song* song);
|
13
|
+
bool Gosu_Song_paused(Gosu_Song* song);
|
14
|
+
void Gosu_Song_play(Gosu_Song* song, bool looping);
|
15
|
+
bool Gosu_Song_playing(Gosu_Song* song);
|
16
|
+
void Gosu_Song_stop(Gosu_Song* song);
|
17
|
+
double Gosu_Song_volume(Gosu_Song* song);
|
18
|
+
void Gosu_Song_set_volume(Gosu_Song* song, double volume);
|
19
|
+
|
20
|
+
Gosu_Song* Gosu_Song_current_song();
|
21
|
+
|
22
|
+
#ifdef __cplusplus
|
23
|
+
}
|
24
|
+
#endif
|
data/Gosu/TextInput.h
ADDED
@@ -0,0 +1,30 @@
|
|
1
|
+
#pragma once
|
2
|
+
|
3
|
+
#ifdef __cplusplus
|
4
|
+
extern "C" {
|
5
|
+
#endif
|
6
|
+
|
7
|
+
typedef struct Gosu_TextInput Gosu_TextInput;
|
8
|
+
|
9
|
+
Gosu_TextInput* Gosu_TextInput_create();
|
10
|
+
|
11
|
+
const char* Gosu_TextInput_text(Gosu_TextInput* text_input);
|
12
|
+
void Gosu_TextInput_set_text(Gosu_TextInput* text_input, const char* text);
|
13
|
+
|
14
|
+
unsigned Gosu_TextInput_caret_pos(Gosu_TextInput* text_input);
|
15
|
+
void Gosu_TextInput_set_caret_pos(Gosu_TextInput* text_input, unsigned pos);
|
16
|
+
|
17
|
+
unsigned Gosu_TextInput_selection_start(Gosu_TextInput* text_input);
|
18
|
+
void Gosu_TextInput_set_selection_start(Gosu_TextInput* text_input, unsigned pos);
|
19
|
+
|
20
|
+
void Gosu_TextInput_set_filter(Gosu_TextInput *text_input, void function(void* data, const char* text), void* data);
|
21
|
+
void Gosu_TextInput_set_filter_result(Gosu_TextInput *text_input, const char* result);
|
22
|
+
void Gosu_TextInput_insert_text(Gosu_TextInput *text_input, const char* text);
|
23
|
+
void Gosu_TextInput_delete_backward(Gosu_TextInput *text_input);
|
24
|
+
void Gosu_TextInput_delete_forward(Gosu_TextInput *text_input);
|
25
|
+
|
26
|
+
void Gosu_TextInput_destroy(Gosu_TextInput* text_input);
|
27
|
+
|
28
|
+
#ifdef __cplusplus
|
29
|
+
}
|
30
|
+
#endif
|
data/Gosu/Version.hpp
CHANGED
data/Gosu/Window.h
ADDED
@@ -0,0 +1,61 @@
|
|
1
|
+
#pragma once
|
2
|
+
#include <stdbool.h>
|
3
|
+
#include "TextInput.h"
|
4
|
+
|
5
|
+
#ifdef __cplusplus
|
6
|
+
extern "C" {
|
7
|
+
#endif
|
8
|
+
|
9
|
+
typedef struct Gosu_Window Gosu_Window;
|
10
|
+
|
11
|
+
// Constructor
|
12
|
+
Gosu_Window* Gosu_Window_create(int width, int height, bool fullscreen, double update_interval, bool resizable);
|
13
|
+
|
14
|
+
// callbacks
|
15
|
+
void Gosu_Window_set_update(Gosu_Window *window, void function(void *data), void* data);
|
16
|
+
void Gosu_Window_set_draw(Gosu_Window *window, void function(void *data), void* data);
|
17
|
+
void Gosu_Window_set_button_down(Gosu_Window *window, void function(void *data, unsigned btn), void* data);
|
18
|
+
void Gosu_Window_set_button_up(Gosu_Window *window, void function(void *data, unsigned btn), void* data);
|
19
|
+
void Gosu_Window_set_drop(Gosu_Window *window, void function(void *data, const char *filename), void* data);
|
20
|
+
void Gosu_Window_set_needs_redraw(Gosu_Window *window, bool function(void *data), void* data);
|
21
|
+
void Gosu_Window_set_needs_cursor(Gosu_Window *window, bool function(void *data), void* data);
|
22
|
+
void Gosu_Window_set_close(Gosu_Window *window, void function(void *data), void* data);
|
23
|
+
|
24
|
+
void Gosu_Window_default_button_down(Gosu_Window* window, unsigned btn);
|
25
|
+
|
26
|
+
// Properties
|
27
|
+
int Gosu_Window_width(Gosu_Window* window);
|
28
|
+
int Gosu_Window_height(Gosu_Window* window);
|
29
|
+
bool Gosu_Window_is_fullscreen(Gosu_Window* window);
|
30
|
+
bool Gosu_Window_is_resizable(Gosu_Window* window);
|
31
|
+
double Gosu_Window_update_interval(Gosu_Window* window);
|
32
|
+
const char* Gosu_Window_caption(Gosu_Window* window);
|
33
|
+
|
34
|
+
Gosu_TextInput* Gosu_Window_text_input(Gosu_Window *window);
|
35
|
+
double Gosu_Window_mouse_x(Gosu_Window* window);
|
36
|
+
double Gosu_Window_mouse_y(Gosu_Window* window);
|
37
|
+
int Gosu_Window_is_button_down(Gosu_Window* window, unsigned btn);
|
38
|
+
|
39
|
+
// Setters
|
40
|
+
void Gosu_Window_set_text_input(Gosu_Window *window, Gosu_TextInput *text_input);
|
41
|
+
void Gosu_Window_set_caption(Gosu_Window* window, const char* caption);
|
42
|
+
void Gosu_Window_set_update_interval(Gosu_Window* window, double update_interval);
|
43
|
+
void Gosu_Window_set_mouse_x(Gosu_Window* window, double width);
|
44
|
+
void Gosu_Window_set_mouse_y(Gosu_Window* window, double height);
|
45
|
+
void Gosu_Window_set_width(Gosu_Window* window, int width);
|
46
|
+
void Gosu_Window_set_height(Gosu_Window* window, int height);
|
47
|
+
|
48
|
+
void Gosu_Window_resize(Gosu_Window* window, int width, int height, bool fullscreen);
|
49
|
+
|
50
|
+
// Main Loop
|
51
|
+
void Gosu_Window_show(Gosu_Window* window);
|
52
|
+
void Gosu_Window_close_immediately(Gosu_Window* window);
|
53
|
+
bool Gosu_Window_tick(Gosu_Window* window);
|
54
|
+
|
55
|
+
// Destructor
|
56
|
+
void Gosu_Window_destroy(Gosu_Window* window);
|
57
|
+
|
58
|
+
|
59
|
+
#ifdef __cplusplus
|
60
|
+
}
|
61
|
+
#endif
|
data/Gosu/Window.hpp
CHANGED
@@ -34,14 +34,15 @@ namespace Gosu
|
|
34
34
|
//! \param update_interval Interval in milliseconds between two calls to the update member
|
35
35
|
//! function.
|
36
36
|
Window(unsigned width, unsigned height, bool fullscreen = false,
|
37
|
-
double update_interval = 16.666666);
|
37
|
+
double update_interval = 16.666666, bool resizable = false);
|
38
38
|
virtual ~Window();
|
39
39
|
|
40
40
|
unsigned width() const;
|
41
41
|
unsigned height() const;
|
42
42
|
bool fullscreen() const;
|
43
|
+
bool resizable() const;
|
43
44
|
void resize(unsigned width, unsigned height, bool fullscreen);
|
44
|
-
|
45
|
+
|
45
46
|
double update_interval() const;
|
46
47
|
void set_update_interval(double update_interval);
|
47
48
|
|
data/README.md
CHANGED
@@ -18,7 +18,7 @@ or look at existing projects in the [Gosu Showcase](https://www.libgosu.org/cgi-
|
|
18
18
|
Community
|
19
19
|
---------
|
20
20
|
|
21
|
-
- There is a lively [Discord community](https://discord.gg/
|
21
|
+
- There is a lively [Discord community](https://discord.gg/5nEBXDc).
|
22
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
23
|
- Please file bugs and feature requests [on GitHub](https://github.com/gosu/gosu/issues).
|
24
24
|
|
data/ext/gosu/extconf.rb
CHANGED
@@ -46,6 +46,9 @@ if `uname`.chomp == 'Darwin'
|
|
46
46
|
$CXXFLAGS << " #{`sdl2-config --cflags`.chomp}"
|
47
47
|
# Prefer statically linking SDL 2.
|
48
48
|
$LDFLAGS << " #{`sdl2-config --static-libs`.chomp} -framework OpenGL -framework Metal -framework OpenAL"
|
49
|
+
# And yet another hack: `sdl2-config --static-libs` uses `-lSDL2` instead of linking to the static library,
|
50
|
+
# even if it exists. -> Manually replace it. (Ugh!)
|
51
|
+
$LDFLAGS.sub! " -lSDL2 ", " /usr/local/lib/libSDL2.a " if File.exist? "/usr/local/lib/libSDL2.a"
|
49
52
|
|
50
53
|
# Disable building of 32-bit slices in Apple's Ruby.
|
51
54
|
# (RbConfig::CONFIG['CXXFLAGS'] on 10.11: -arch x86_64 -arch i386 -g -Os -pipe)
|
data/lib/gosu/compat.rb
CHANGED
@@ -68,13 +68,18 @@ module Gosu
|
|
68
68
|
end
|
69
69
|
end
|
70
70
|
|
71
|
+
# These were useful for working with Direct3D and the Win32 API a long time ago,
|
72
|
+
# there was never a real reason to have them available in Ruby.
|
73
|
+
Gosu.deprecate Gosu::Color, :bgr, :none
|
74
|
+
Gosu.deprecate Gosu::Color, :abgr, :none
|
75
|
+
|
71
76
|
# No need to pass a Window to Image.
|
72
77
|
class Gosu::Image
|
73
|
-
|
78
|
+
alias_method :initialize_without_window, :initialize
|
74
79
|
|
75
80
|
def initialize(*args)
|
76
81
|
if args[0].is_a? Gosu::Window
|
77
|
-
Gosu.deprecation_message("Passing a Window to Image#initialize has been deprecated in Gosu 0.9 and this method now uses an options hash, see https://www.libgosu.org/rdoc/Gosu/Image.html
|
82
|
+
Gosu.deprecation_message("Passing a Window to Image#initialize has been deprecated in Gosu 0.9 and this method now uses an options hash, see https://www.libgosu.org/rdoc/Gosu/Image.html ")
|
78
83
|
if args.size == 7
|
79
84
|
initialize_without_window args[1], :tileable => args[2], :rect => args[3..-1]
|
80
85
|
else
|
@@ -86,15 +91,15 @@ class Gosu::Image
|
|
86
91
|
end
|
87
92
|
|
88
93
|
class << self
|
89
|
-
|
94
|
+
alias_method :from_text_without_window, :from_text
|
90
95
|
end
|
91
96
|
|
92
97
|
def self.from_text(*args)
|
93
98
|
if args.size == 4
|
94
|
-
Gosu.deprecation_message("Passing a Window to Image.from_text has been deprecated in Gosu 0.9 and this method now uses an options hash, see https://www.libgosu.org/rdoc/Gosu/Image.html
|
99
|
+
Gosu.deprecation_message("Passing a Window to Image.from_text has been deprecated in Gosu 0.9 and this method now uses an options hash, see https://www.libgosu.org/rdoc/Gosu/Image.html ")
|
95
100
|
from_text_without_window(args[1], args[3], :font => args[2])
|
96
101
|
elsif args.size == 7
|
97
|
-
Gosu.deprecation_message("Passing a Window to Image.from_text has been deprecated in Gosu 0.9 and this method now uses an options hash, see https://www.libgosu.org/rdoc/Gosu/Image.html
|
102
|
+
Gosu.deprecation_message("Passing a Window to Image.from_text has been deprecated in Gosu 0.9 and this method now uses an options hash, see https://www.libgosu.org/rdoc/Gosu/Image.html ")
|
98
103
|
from_text_without_window(args[1], args[3], :font => args[2],
|
99
104
|
:spacing => args[4], :width => args[5], :align => args[6])
|
100
105
|
else
|
@@ -105,7 +110,7 @@ end
|
|
105
110
|
|
106
111
|
# No need to pass a Window to Sample.
|
107
112
|
class Gosu::Sample
|
108
|
-
|
113
|
+
alias_method :initialize_without_window, :initialize
|
109
114
|
|
110
115
|
def initialize(*args)
|
111
116
|
if args.first.is_a? Gosu::Window
|
@@ -118,7 +123,7 @@ end
|
|
118
123
|
|
119
124
|
# No need to pass a Window to Song.
|
120
125
|
class Gosu::Song
|
121
|
-
|
126
|
+
alias_method :initialize_without_window, :initialize
|
122
127
|
|
123
128
|
def initialize(*args)
|
124
129
|
if args.first.is_a? Gosu::Window
|
data/lib/gosu/patches.rb
CHANGED
@@ -28,6 +28,12 @@ class Gosu::Font
|
|
28
28
|
end
|
29
29
|
|
30
30
|
class Gosu::Image
|
31
|
+
BlobHelper = Struct.new(:columns, :rows, :to_blob)
|
32
|
+
|
33
|
+
def self.from_blob(width, height, rgba = "\0\0\0\0" * (width * height))
|
34
|
+
self.new(BlobHelper.new(width, height, rgba))
|
35
|
+
end
|
36
|
+
|
31
37
|
# from_markup will stop parsing markup in Gosu 1.0.
|
32
38
|
def self.from_markup(*args)
|
33
39
|
self.from_text(*args)
|
@@ -54,7 +60,7 @@ module Gosu
|
|
54
60
|
FUCHSIA = Gosu::ImmutableColor.new(0xff_ff00ff)
|
55
61
|
CYAN = Gosu::ImmutableColor.new(0xff_00ffff)
|
56
62
|
|
57
|
-
|
63
|
+
alias_method :hash, :gl
|
58
64
|
def eql?(other)
|
59
65
|
gl == other.gl
|
60
66
|
end
|
@@ -65,7 +71,7 @@ class Gosu::Window
|
|
65
71
|
# Call Thread.pass every tick, which may or may not be necessary for friendly co-existence with
|
66
72
|
# Ruby's Thread class.
|
67
73
|
|
68
|
-
|
74
|
+
alias_method :_tick, :tick
|
69
75
|
|
70
76
|
def tick
|
71
77
|
Thread.pass
|
data/lib/gosu/swig_patches.rb
CHANGED
@@ -3,20 +3,21 @@
|
|
3
3
|
# compatible, but I just call protected_update etc. in the Ruby wrapper so I can add this
|
4
4
|
# custom debugging help:
|
5
5
|
class Gosu::Window
|
6
|
-
|
7
|
-
|
6
|
+
alias_method :initialize_without_hash, :initialize
|
7
|
+
|
8
8
|
def initialize width, height, *args
|
9
9
|
if args.empty? or args.first.is_a? Hash
|
10
10
|
options = args.first || {}
|
11
11
|
fullscreen = options[:fullscreen]
|
12
12
|
update_interval = options[:update_interval]
|
13
|
+
resizable = options[:resizable]
|
13
14
|
else
|
14
15
|
fullscreen, update_interval = *args
|
15
16
|
end
|
16
17
|
$gosu_gl_blocks = nil
|
17
|
-
initialize_without_hash width, height, !!fullscreen, update_interval || 16.666666
|
18
|
+
initialize_without_hash width, height, !!fullscreen, update_interval || 16.666666, !!resizable
|
18
19
|
end
|
19
|
-
|
20
|
+
|
20
21
|
%w(update draw needs_redraw? needs_cursor?
|
21
22
|
lose_focus button_down button_up).each do |callback|
|
22
23
|
define_method "protected_#{callback}" do |*args|
|
@@ -39,7 +40,7 @@ class Gosu::Window
|
|
39
40
|
$gosu_gl_blocks = nil
|
40
41
|
end
|
41
42
|
|
42
|
-
|
43
|
+
alias_method :show_internal, :show
|
43
44
|
def show
|
44
45
|
show_internal
|
45
46
|
# Try to format the message nicely, without any useless patching that we are
|
@@ -56,14 +57,24 @@ end
|
|
56
57
|
module Gosu
|
57
58
|
# Keep a reference to these blocks that is only cleared after Window#draw.
|
58
59
|
# Otherwise, the GC might free these blocks while Gosu is still rendering.
|
59
|
-
def self.gl(
|
60
|
+
def self.gl(z = nil, &block)
|
60
61
|
$gosu_gl_blocks ||= []
|
61
62
|
$gosu_gl_blocks << block
|
62
|
-
|
63
|
+
if z.nil?
|
64
|
+
unsafe_gl(&block)
|
65
|
+
else
|
66
|
+
unsafe_gl(z, &block)
|
67
|
+
end
|
63
68
|
end
|
64
69
|
end
|
65
70
|
|
66
|
-
# SWIG
|
71
|
+
# SWIG somehow maps the instance method "argb" as an overload of the class
|
72
|
+
# method of the same name.
|
73
|
+
class Gosu::Color
|
74
|
+
alias_method :argb, :to_i
|
75
|
+
end
|
76
|
+
|
77
|
+
# SWIG will not let me rename my method to '[]=', so use alias_method here.
|
67
78
|
class Gosu::Font
|
68
|
-
|
79
|
+
alias_method :[]=, :set_image
|
69
80
|
end
|