gosu 0.14.5 → 0.15.2
Sign up to get free protection for your applications and to get access to all the features.
- 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
|