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.
Files changed (51) hide show
  1. checksums.yaml +4 -4
  2. data/.yardopts +1 -0
  3. data/COPYING +1 -1
  4. data/Gosu/Channel.h +25 -0
  5. data/Gosu/Color.h +38 -0
  6. data/Gosu/Font.h +36 -0
  7. data/Gosu/Gosu.h +79 -0
  8. data/Gosu/Image.h +54 -0
  9. data/Gosu/Sample.h +19 -0
  10. data/Gosu/Song.h +24 -0
  11. data/Gosu/TextInput.h +30 -0
  12. data/Gosu/Version.hpp +2 -2
  13. data/Gosu/Window.h +61 -0
  14. data/Gosu/Window.hpp +3 -2
  15. data/README.md +1 -1
  16. data/ext/gosu/extconf.rb +3 -0
  17. data/lib/gosu/compat.rb +12 -7
  18. data/lib/gosu/patches.rb +8 -2
  19. data/lib/gosu/swig_patches.rb +20 -9
  20. data/rdoc/gosu.rb +28 -7
  21. data/src/ChannelWrapper.cpp +50 -0
  22. data/src/ColorWrapper.cpp +126 -0
  23. data/src/Constants.cpp +287 -0
  24. data/src/Font.cpp +1 -0
  25. data/src/FontWrapper.cpp +74 -0
  26. data/src/GosuWrapper.cpp +232 -0
  27. data/src/Graphics.cpp +4 -1
  28. data/src/GraphicsImpl.hpp +0 -1
  29. data/src/ImageWrapper.cpp +168 -0
  30. data/src/LargeImageData.cpp +1 -0
  31. data/src/MarkupParser.cpp +11 -3
  32. data/src/RubyGosu.cxx +185 -121
  33. data/src/RubyGosu.h +2 -2
  34. data/src/SampleWrapper.cpp +30 -0
  35. data/src/SongWrapper.cpp +52 -0
  36. data/src/TexChunk.cpp +29 -19
  37. data/src/Text.cpp +2 -0
  38. data/src/TextBuilder.cpp +3 -3
  39. data/src/TextInputWrapper.cpp +101 -0
  40. data/src/TrueTypeFont.cpp +1 -0
  41. data/src/Window.cpp +62 -28
  42. data/src/WindowUIKit.cpp +8 -4
  43. data/src/WindowWrapper.cpp +289 -0
  44. data/src/stb_image.h +153 -56
  45. data/src/stb_image_write.h +111 -60
  46. data/src/stb_truetype.h +74 -39
  47. data/src/stb_vorbis.c +55 -15
  48. data/src/utf8proc.c +47 -29
  49. data/src/utf8proc.h +46 -24
  50. data/src/utf8proc_data.h +10043 -9609
  51. metadata +23 -4
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 61b26106f2220170e6e8aaeeff303363a1ba74e7380902fdb994ca7cb5380e10
4
- data.tar.gz: 2c4c31879e62f94a6717b08e0b964294a3d969752867aa10e69b348ed1aa6b28
3
+ metadata.gz: '0296b3949deeaa56bbd8b81beb0e584871dc1b27c0a9898efd8d72e79a7dc367'
4
+ data.tar.gz: d5066f88ba59903e0fc3c5a536dae0f3bf218814e83449c2a0a657837be8ea82
5
5
  SHA512:
6
- metadata.gz: c2a5661e5da0003d5225299f386fb05cecc22ee66ee2b7e9bf7a91e8f81e41f2845807d1816a80e814fa128088154bad53f5887eed851d09cae0c1457e084c6e
7
- data.tar.gz: f68170c042c37db4f15a35c37f6f347076b26ed3c4582b45a7c9be896588479db07582fe3439206fdaf803142ff22709acd1c0e250fd2dae0a9abf2d5ff4f39c
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-2018 Julian Raschke, Jan Lücker and all contributors.
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
@@ -3,8 +3,8 @@
3
3
  #include <string>
4
4
 
5
5
  #define GOSU_MAJOR_VERSION 0
6
- #define GOSU_MINOR_VERSION 14
7
- #define GOSU_POINT_VERSION 5
6
+ #define GOSU_MINOR_VERSION 15
7
+ #define GOSU_POINT_VERSION 2
8
8
 
9
9
  namespace Gosu
10
10
  {
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/SZ4nbEd).
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
- alias initialize_without_window initialize
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
- alias from_text_without_window from_text
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
- alias initialize_without_window initialize
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
- alias initialize_without_window initialize
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
- alias hash gl
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
- alias _tick tick
74
+ alias_method :_tick, :tick
69
75
 
70
76
  def tick
71
77
  Thread.pass
@@ -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
- alias initialize_without_hash initialize
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
- alias show_internal show
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(*args, &block)
60
+ def self.gl(z = nil, &block)
60
61
  $gosu_gl_blocks ||= []
61
62
  $gosu_gl_blocks << block
62
- unsafe_gl(*args, &block)
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 will not let me rename my method to '[]=', so use alias here.
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
- alias []= set_image
79
+ alias_method :[]=, :set_image
69
80
  end