gosu 0.14.6.pre1 → 0.15.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gosu/Version.hpp +2 -2
- data/lib/gosu/compat.rb +9 -4
- data/lib/gosu/patches.rb +8 -2
- data/lib/gosu/swig_patches.rb +10 -4
- data/rdoc/gosu.rb +18 -1
- data/src/Graphics.cpp +4 -1
- data/src/GraphicsImpl.hpp +0 -1
- data/src/MarkupParser.cpp +11 -3
- data/src/RubyGosu.cxx +87 -80
- data/src/RubyGosu.h +1 -1
- data/src/TexChunk.cpp +29 -19
- data/src/Text.cpp +1 -0
- data/src/TextBuilder.cpp +3 -3
- metadata +5 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9ba5fe75439828dc20ce57aaeca27e464ae1aba262f743febf5405fc6fac738b
|
4
|
+
data.tar.gz: 7f7b333a69fb3435ebc09c3c6b2c7ebd647f68cdc2b689d85a13bd6e66583241
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 266afe66c7524c6b0efaca9c7c0eef37494c33f27bc896c2d6777ef8bbe86d2238ebb1c4866ad6a599f9e3d9a56a8304fe2c47b8c58e6295707152571828c5a6
|
7
|
+
data.tar.gz: '0038955bca0bbaa7bc374aa389abc4416786fe900b6eb9011db60194c1129b9823bdc6df896f4a929fde5258f0d0ddac746e0d8f44b3bff8617e3dacaedc89dc'
|
data/Gosu/Version.hpp
CHANGED
data/lib/gosu/compat.rb
CHANGED
@@ -68,9 +68,14 @@ 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
|
@@ -86,7 +91,7 @@ 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)
|
@@ -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,7 +3,7 @@
|
|
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
|
-
|
6
|
+
alias_method :initialize_without_hash, :initialize
|
7
7
|
|
8
8
|
def initialize width, height, *args
|
9
9
|
if args.empty? or args.first.is_a? Hash
|
@@ -40,7 +40,7 @@ class Gosu::Window
|
|
40
40
|
$gosu_gl_blocks = nil
|
41
41
|
end
|
42
42
|
|
43
|
-
|
43
|
+
alias_method :show_internal, :show
|
44
44
|
def show
|
45
45
|
show_internal
|
46
46
|
# Try to format the message nicely, without any useless patching that we are
|
@@ -68,7 +68,13 @@ module Gosu
|
|
68
68
|
end
|
69
69
|
end
|
70
70
|
|
71
|
-
# 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.
|
72
78
|
class Gosu::Font
|
73
|
-
|
79
|
+
alias_method :[]=, :set_image
|
74
80
|
end
|
data/rdoc/gosu.rb
CHANGED
@@ -190,10 +190,19 @@ module Gosu
|
|
190
190
|
|
191
191
|
# @!endgroup
|
192
192
|
|
193
|
-
|
193
|
+
##
|
194
|
+
# @return [Integer] a 32-bit representation of the color in 0xAARRGGBB format.
|
195
|
+
def argb; end
|
196
|
+
|
197
|
+
alias_method :to_i, :argb
|
198
|
+
|
199
|
+
# Returns a 32-bit representation of the color suitable for use with OpenGL calls. This color is stored in a fixed format in memory and its integer value may vary depending on your system's byte order.
|
194
200
|
#
|
195
201
|
# @return [Integer] a 32-bit OpenGL color.
|
196
202
|
def gl; end
|
203
|
+
|
204
|
+
# Returns an OpenGL integer constant that identifies the RGBA color format that Gosu uses.
|
205
|
+
GL_FORMAT = :some_integer
|
197
206
|
|
198
207
|
##
|
199
208
|
# @return [Color] a copy of the color.
|
@@ -348,6 +357,14 @@ module Gosu
|
|
348
357
|
# @see https://github.com/gosu/gosu/wiki/Basic-Concepts#tileability Tileability explained in the Gosu Wiki
|
349
358
|
def initialize(source, options = {}); end
|
350
359
|
|
360
|
+
##
|
361
|
+
# Creates a new image with the given dimensions and RGBA pixel data.
|
362
|
+
#
|
363
|
+
# @param [Integer] width Width of the image in pixels.
|
364
|
+
# @param [Integer] height Height of the image in pixels.
|
365
|
+
# @param [String] rgba A string containing raw binary image data, with either one byte ('uint8') or four bytes ('float') per RGBA component.
|
366
|
+
def self.from_blob(width, height, rgba = "\0\0\0\0" * (width * height)); end
|
367
|
+
|
351
368
|
##
|
352
369
|
# Creates a reusable image from one or more lines of text.
|
353
370
|
#
|
data/src/Graphics.cpp
CHANGED
@@ -68,7 +68,7 @@ struct Gosu::Graphics::Impl
|
|
68
68
|
{
|
69
69
|
glPushAttrib(GL_ALL_ATTRIB_BITS);
|
70
70
|
glDisable(GL_BLEND);
|
71
|
-
// Reset the
|
71
|
+
// Reset the color to white to avoid surprises.
|
72
72
|
// https://www.libgosu.org/cgi-bin/mwf/topic_show.pl?pid=9115#pid9115
|
73
73
|
glColor4ubv(reinterpret_cast<const GLubyte*>(&Color::WHITE));
|
74
74
|
while (glGetError() != GL_NO_ERROR);
|
@@ -287,13 +287,16 @@ Gosu::Image Gosu::Graphics::render(int width, int height, const function<void ()
|
|
287
287
|
|
288
288
|
// This is the actual render-to-texture step.
|
289
289
|
Image result = OffScreenTarget(width, height, image_flags).render([&] {
|
290
|
+
glPushAttrib(GL_ALL_ATTRIB_BITS);
|
290
291
|
glClearColor(0, 0, 0, 0);
|
291
292
|
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
|
293
|
+
glEnable(GL_BLEND);
|
292
294
|
queues.emplace_back(QM_RENDER_TO_TEXTURE);
|
293
295
|
f();
|
294
296
|
queues.back().perform_draw_ops_and_code();
|
295
297
|
queues.pop_back();
|
296
298
|
glFlush();
|
299
|
+
glPopAttrib();
|
297
300
|
});
|
298
301
|
|
299
302
|
// Restore previous matrix and glViewport.
|
data/src/GraphicsImpl.hpp
CHANGED
@@ -110,7 +110,6 @@ namespace Gosu
|
|
110
110
|
void ensure_current_context();
|
111
111
|
|
112
112
|
inline std::string escape_markup(const std::string& text) {
|
113
|
-
// Escape all markup and delegate to layout_markup.
|
114
113
|
auto markup = text;
|
115
114
|
for (std::string::size_type pos = 0; pos < markup.length(); ++pos) {
|
116
115
|
if (markup[pos] == '&') {
|
data/src/MarkupParser.cpp
CHANGED
@@ -119,17 +119,25 @@ bool Gosu::MarkupParser::parse_markup()
|
|
119
119
|
|
120
120
|
bool Gosu::MarkupParser::parse_escape_entity()
|
121
121
|
{
|
122
|
+
auto translate_to = [this](char ch) {
|
123
|
+
if (word_state == ADDING_WHITESPACE) {
|
124
|
+
flush_to_consumer();
|
125
|
+
word_state = ADDING_WORD;
|
126
|
+
}
|
127
|
+
add_composed_substring(u32string(1, ch));
|
128
|
+
};
|
129
|
+
|
122
130
|
// These are not entities (images) but escapes for markup characters.
|
123
131
|
if (match_and_skip("<")) {
|
124
|
-
|
132
|
+
translate_to('<');
|
125
133
|
return true;
|
126
134
|
}
|
127
135
|
if (match_and_skip(">")) {
|
128
|
-
|
136
|
+
translate_to('>');
|
129
137
|
return true;
|
130
138
|
}
|
131
139
|
if (match_and_skip("&")) {
|
132
|
-
|
140
|
+
translate_to('&');
|
133
141
|
return true;
|
134
142
|
}
|
135
143
|
|
data/src/RubyGosu.cxx
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
/* ----------------------------------------------------------------------------
|
2
2
|
* This file was automatically generated by SWIG (http://www.swig.org).
|
3
|
-
* Version
|
3
|
+
* Version 4.0.1
|
4
4
|
*
|
5
5
|
* This file is not intended to be easily readable and contains a number of
|
6
6
|
* coding conventions designed to improve portability and efficiency. Do not make
|
@@ -332,6 +332,7 @@ template <typename T> T SwigValueInit() {
|
|
332
332
|
/* Flags for pointer conversions */
|
333
333
|
#define SWIG_POINTER_DISOWN 0x1
|
334
334
|
#define SWIG_CAST_NEW_MEMORY 0x2
|
335
|
+
#define SWIG_POINTER_NO_NULL 0x4
|
335
336
|
|
336
337
|
/* Flags for new pointer objects */
|
337
338
|
#define SWIG_POINTER_OWN 0x1
|
@@ -970,6 +971,9 @@ SWIG_UnpackDataName(const char *c, void *ptr, size_t sz, const char *name) {
|
|
970
971
|
#ifndef RSTRUCT_PTR
|
971
972
|
# define RSTRUCT_PTR(x) RSTRUCT(x)->ptr
|
972
973
|
#endif
|
974
|
+
#ifndef RTYPEDDATA_P
|
975
|
+
# define RTYPEDDATA_P(x) (TYPE(x) != T_DATA)
|
976
|
+
#endif
|
973
977
|
|
974
978
|
|
975
979
|
|
@@ -1193,7 +1197,7 @@ void Ruby_Format_OverloadedError(
|
|
1193
1197
|
/* -----------------------------------------------------------------------------
|
1194
1198
|
* rubytracking.swg
|
1195
1199
|
*
|
1196
|
-
* This file contains support for tracking mappings from
|
1200
|
+
* This file contains support for tracking mappings from
|
1197
1201
|
* Ruby objects to C++ objects. This functionality is needed
|
1198
1202
|
* to implement mark functions for Ruby's mark and sweep
|
1199
1203
|
* garbage collector.
|
@@ -1220,7 +1224,7 @@ extern "C" {
|
|
1220
1224
|
#endif
|
1221
1225
|
|
1222
1226
|
/* Global hash table to store Trackings from C/C++
|
1223
|
-
structs to Ruby Objects.
|
1227
|
+
structs to Ruby Objects.
|
1224
1228
|
*/
|
1225
1229
|
static st_table* swig_ruby_trackings = NULL;
|
1226
1230
|
|
@@ -1234,7 +1238,7 @@ SWIGRUNTIME void SWIG_RubyInitializeTrackings(void) {
|
|
1234
1238
|
/* Create a hash table to store Trackings from C++
|
1235
1239
|
objects to Ruby objects. */
|
1236
1240
|
|
1237
|
-
/* Try to see if some other .so has already created a
|
1241
|
+
/* Try to see if some other .so has already created a
|
1238
1242
|
tracking hash table, which we keep hidden in an instance var
|
1239
1243
|
in the SWIG module.
|
1240
1244
|
This is done to allow multiple DSOs to share the same
|
@@ -1293,13 +1297,14 @@ SWIGRUNTIME void SWIG_RubyRemoveTracking(void* ptr) {
|
|
1293
1297
|
|
1294
1298
|
/* This is a helper method that unlinks a Ruby object from its
|
1295
1299
|
underlying C++ object. This is needed if the lifetime of the
|
1296
|
-
Ruby object is longer than the C++ object */
|
1300
|
+
Ruby object is longer than the C++ object. */
|
1297
1301
|
SWIGRUNTIME void SWIG_RubyUnlinkObjects(void* ptr) {
|
1298
1302
|
VALUE object = SWIG_RubyInstanceFor(ptr);
|
1299
1303
|
|
1300
1304
|
if (object != Qnil) {
|
1301
|
-
|
1302
|
-
|
1305
|
+
// object might have the T_ZOMBIE type, but that's just
|
1306
|
+
// because the GC has flagged it as such for a deferred
|
1307
|
+
// destruction. Until then, it's still a T_DATA object.
|
1303
1308
|
DATA_PTR(object) = 0;
|
1304
1309
|
}
|
1305
1310
|
}
|
@@ -1532,10 +1537,11 @@ SWIG_Ruby_NewPointerObj(void *ptr, swig_type_info *type, int flags)
|
|
1532
1537
|
swig_class *sklass;
|
1533
1538
|
VALUE klass;
|
1534
1539
|
VALUE obj;
|
1535
|
-
|
1540
|
+
|
1536
1541
|
if (!ptr)
|
1537
1542
|
return Qnil;
|
1538
|
-
|
1543
|
+
|
1544
|
+
assert(type);
|
1539
1545
|
if (type->clientdata) {
|
1540
1546
|
sklass = (swig_class *) type->clientdata;
|
1541
1547
|
|
@@ -1543,7 +1549,7 @@ SWIG_Ruby_NewPointerObj(void *ptr, swig_type_info *type, int flags)
|
|
1543
1549
|
track = sklass->trackObjects;
|
1544
1550
|
if (track) {
|
1545
1551
|
obj = SWIG_RubyInstanceFor(ptr);
|
1546
|
-
|
1552
|
+
|
1547
1553
|
/* Check the object's type and make sure it has the correct type.
|
1548
1554
|
It might not in cases where methods do things like
|
1549
1555
|
downcast methods. */
|
@@ -1575,7 +1581,7 @@ SWIG_Ruby_NewPointerObj(void *ptr, swig_type_info *type, int flags)
|
|
1575
1581
|
obj = Data_Wrap_Struct(klass, 0, 0, ptr);
|
1576
1582
|
}
|
1577
1583
|
rb_iv_set(obj, "@__swigtype__", rb_str_new2(type->name));
|
1578
|
-
|
1584
|
+
|
1579
1585
|
return obj;
|
1580
1586
|
}
|
1581
1587
|
|
@@ -1607,7 +1613,7 @@ typedef struct {
|
|
1607
1613
|
SWIGRUNTIME swig_ruby_owntype
|
1608
1614
|
SWIG_Ruby_AcquirePtr(VALUE obj, swig_ruby_owntype own) {
|
1609
1615
|
swig_ruby_owntype oldown = {0, 0};
|
1610
|
-
if (obj) {
|
1616
|
+
if (TYPE(obj) == T_DATA && !RTYPEDDATA_P(obj)) {
|
1611
1617
|
oldown.datafree = RDATA(obj)->dfree;
|
1612
1618
|
RDATA(obj)->dfree = own.datafree;
|
1613
1619
|
}
|
@@ -1626,9 +1632,9 @@ SWIG_Ruby_ConvertPtrAndOwn(VALUE obj, void **ptr, swig_type_info *ty, int flags,
|
|
1626
1632
|
if (NIL_P(obj)) {
|
1627
1633
|
if (ptr)
|
1628
1634
|
*ptr = 0;
|
1629
|
-
return SWIG_OK;
|
1635
|
+
return (flags & SWIG_POINTER_NO_NULL) ? SWIG_NullReferenceError : SWIG_OK;
|
1630
1636
|
} else {
|
1631
|
-
if (TYPE(obj) != T_DATA) {
|
1637
|
+
if (TYPE(obj) != T_DATA || (TYPE(obj) == T_DATA && RTYPEDDATA_P(obj))) {
|
1632
1638
|
return SWIG_ERROR;
|
1633
1639
|
}
|
1634
1640
|
Data_Get_Struct(obj, void, vptr);
|
@@ -1723,7 +1729,7 @@ SWIG_Ruby_NewPackedObj(void *ptr, int sz, swig_type_info *type) {
|
|
1723
1729
|
return rb_str_new2(result);
|
1724
1730
|
}
|
1725
1731
|
|
1726
|
-
/* Convert a packed
|
1732
|
+
/* Convert a packed pointer value */
|
1727
1733
|
SWIGRUNTIME int
|
1728
1734
|
SWIG_Ruby_ConvertPacked(VALUE obj, void *ptr, int sz, swig_type_info *ty) {
|
1729
1735
|
swig_cast_info *tc;
|
@@ -1995,43 +2001,6 @@ namespace Swig {
|
|
1995
2001
|
}
|
1996
2002
|
};
|
1997
2003
|
|
1998
|
-
/* unknown exception handler */
|
1999
|
-
class UnknownExceptionHandler {
|
2000
|
-
#ifdef SWIG_DIRECTOR_UEH
|
2001
|
-
static void handler() {
|
2002
|
-
try {
|
2003
|
-
throw;
|
2004
|
-
} catch (DirectorException& e) {
|
2005
|
-
std::cerr << "SWIG Director exception caught:" << std::endl
|
2006
|
-
<< e.what() << std::endl;
|
2007
|
-
} catch (std::exception& e) {
|
2008
|
-
std::cerr << "std::exception caught: "<< e.what() << std::endl;
|
2009
|
-
} catch (...) {
|
2010
|
-
std::cerr << "Unknown exception caught." << std::endl;
|
2011
|
-
}
|
2012
|
-
std::cerr << std::endl
|
2013
|
-
<< "Ruby interpreter traceback:" << std::endl;
|
2014
|
-
std::cerr << std::endl;
|
2015
|
-
std::cerr << "This exception was caught by the SWIG unexpected exception handler." << std::endl
|
2016
|
-
<< "Try using %feature(\"director:except\") to avoid reaching this point." << std::endl
|
2017
|
-
<< std::endl
|
2018
|
-
<< "Exception is being re-thrown, program will like abort/terminate." << std::endl;
|
2019
|
-
throw;
|
2020
|
-
}
|
2021
|
-
|
2022
|
-
public:
|
2023
|
-
std::unexpected_handler old;
|
2024
|
-
UnknownExceptionHandler(std::unexpected_handler nh = handler) {
|
2025
|
-
old = std::set_unexpected(nh);
|
2026
|
-
}
|
2027
|
-
|
2028
|
-
~UnknownExceptionHandler() {
|
2029
|
-
std::set_unexpected(old);
|
2030
|
-
}
|
2031
|
-
#endif
|
2032
|
-
};
|
2033
|
-
|
2034
|
-
|
2035
2004
|
/* Type mismatch in the return value from a Ruby method call */
|
2036
2005
|
class DirectorTypeMismatchException : public DirectorException {
|
2037
2006
|
public:
|
@@ -2221,7 +2190,7 @@ static VALUE mGosu;
|
|
2221
2190
|
#define SWIG_RUBY_THREAD_END_BLOCK
|
2222
2191
|
|
2223
2192
|
|
2224
|
-
#define SWIGVERSION
|
2193
|
+
#define SWIGVERSION 0x040001
|
2225
2194
|
#define SWIG_VERSION SWIGVERSION
|
2226
2195
|
|
2227
2196
|
|
@@ -2519,7 +2488,7 @@ SWIG_ruby_failed(void)
|
|
2519
2488
|
}
|
2520
2489
|
|
2521
2490
|
|
2522
|
-
/*@SWIG:/usr/local/Cellar/swig/
|
2491
|
+
/*@SWIG:/usr/local/Cellar/swig/4.0.1/share/swig/4.0.1/ruby/rubyprimtypes.swg,19,%ruby_aux_method@*/
|
2523
2492
|
SWIGINTERN VALUE SWIG_AUX_NUM2DBL(VALUE *args)
|
2524
2493
|
{
|
2525
2494
|
VALUE obj = args[0];
|
@@ -2561,7 +2530,7 @@ SWIG_From_unsigned_SS_int (unsigned int value)
|
|
2561
2530
|
#include <string>
|
2562
2531
|
|
2563
2532
|
|
2564
|
-
/*@SWIG:/usr/local/Cellar/swig/
|
2533
|
+
/*@SWIG:/usr/local/Cellar/swig/4.0.1/share/swig/4.0.1/ruby/rubyprimtypes.swg,19,%ruby_aux_method@*/
|
2565
2534
|
SWIGINTERN VALUE SWIG_AUX_NUM2ULONG(VALUE *args)
|
2566
2535
|
{
|
2567
2536
|
VALUE obj = args[0];
|
@@ -2628,6 +2597,9 @@ SWIGINTERN Gosu::Color Gosu_Color_argb__SWIG_1(Gosu::Color::Channel a,Gosu::Colo
|
|
2628
2597
|
SWIGINTERN Gosu::Color Gosu_Color_argb__SWIG_2(std::uint32_t argb){
|
2629
2598
|
return Gosu::Color(argb);
|
2630
2599
|
}
|
2600
|
+
SWIGINTERN std::uint32_t Gosu_Color_to_i(Gosu::Color const *self){
|
2601
|
+
return self->argb();
|
2602
|
+
}
|
2631
2603
|
SWIGINTERN Gosu::Color Gosu_Color_dup(Gosu::Color const *self){
|
2632
2604
|
return *self;
|
2633
2605
|
}
|
@@ -2763,7 +2735,7 @@ SWIG_AsPtr_std_string (VALUE obj, std::string **val)
|
|
2763
2735
|
}
|
2764
2736
|
|
2765
2737
|
|
2766
|
-
/*@SWIG:/usr/local/Cellar/swig/
|
2738
|
+
/*@SWIG:/usr/local/Cellar/swig/4.0.1/share/swig/4.0.1/ruby/rubyprimtypes.swg,19,%ruby_aux_method@*/
|
2767
2739
|
SWIGINTERN VALUE SWIG_AUX_NUM2LONG(VALUE *args)
|
2768
2740
|
{
|
2769
2741
|
VALUE obj = args[0];
|
@@ -3195,10 +3167,10 @@ SwigDirector_TextInput::~SwigDirector_TextInput() {
|
|
3195
3167
|
}
|
3196
3168
|
|
3197
3169
|
std::string SwigDirector_TextInput::filter(std::string text) const {
|
3198
|
-
std::string c_result ;
|
3199
3170
|
VALUE obj0 = Qnil ;
|
3200
3171
|
VALUE SWIGUNUSED result;
|
3201
3172
|
|
3173
|
+
std::string c_result;
|
3202
3174
|
obj0 = SWIG_From_std_string(static_cast< std::string >(text));
|
3203
3175
|
result = rb_funcall(swig_get_self(), rb_intern("filter"), 1,obj0);
|
3204
3176
|
std::string *swig_optr = 0;
|
@@ -3224,15 +3196,15 @@ SwigDirector_Window::~SwigDirector_Window() {
|
|
3224
3196
|
void SwigDirector_Window::show() {
|
3225
3197
|
VALUE SWIGUNUSED result;
|
3226
3198
|
|
3227
|
-
result = rb_funcall(swig_get_self(), rb_intern("show"), 0,
|
3199
|
+
result = rb_funcall(swig_get_self(), rb_intern("show"), 0, Qnil);
|
3228
3200
|
}
|
3229
3201
|
|
3230
3202
|
|
3231
3203
|
bool SwigDirector_Window::tick() {
|
3232
|
-
bool c_result ;
|
3204
|
+
bool c_result = SwigValueInit< bool >() ;
|
3233
3205
|
VALUE SWIGUNUSED result;
|
3234
3206
|
|
3235
|
-
result = rb_funcall(swig_get_self(), rb_intern("tick"), 0,
|
3207
|
+
result = rb_funcall(swig_get_self(), rb_intern("tick"), 0, Qnil);
|
3236
3208
|
bool swig_val;
|
3237
3209
|
int swig_res = SWIG_AsVal_bool(result, &swig_val);
|
3238
3210
|
if (!SWIG_IsOK(swig_res)) {
|
@@ -3246,29 +3218,29 @@ bool SwigDirector_Window::tick() {
|
|
3246
3218
|
void SwigDirector_Window::close() {
|
3247
3219
|
VALUE SWIGUNUSED result;
|
3248
3220
|
|
3249
|
-
result = rb_funcall(swig_get_self(), rb_intern("close"), 0,
|
3221
|
+
result = rb_funcall(swig_get_self(), rb_intern("close"), 0, Qnil);
|
3250
3222
|
}
|
3251
3223
|
|
3252
3224
|
|
3253
3225
|
void SwigDirector_Window::update() {
|
3254
3226
|
VALUE SWIGUNUSED result;
|
3255
3227
|
|
3256
|
-
result = rb_funcall(swig_get_self(), rb_intern("protected_update"), 0,
|
3228
|
+
result = rb_funcall(swig_get_self(), rb_intern("protected_update"), 0, Qnil);
|
3257
3229
|
}
|
3258
3230
|
|
3259
3231
|
|
3260
3232
|
void SwigDirector_Window::draw() {
|
3261
3233
|
VALUE SWIGUNUSED result;
|
3262
3234
|
|
3263
|
-
result = rb_funcall(swig_get_self(), rb_intern("protected_draw_2"), 0,
|
3235
|
+
result = rb_funcall(swig_get_self(), rb_intern("protected_draw_2"), 0, Qnil);
|
3264
3236
|
}
|
3265
3237
|
|
3266
3238
|
|
3267
3239
|
bool SwigDirector_Window::needs_redraw() const {
|
3268
|
-
bool c_result ;
|
3240
|
+
bool c_result = SwigValueInit< bool >() ;
|
3269
3241
|
VALUE SWIGUNUSED result;
|
3270
3242
|
|
3271
|
-
result = rb_funcall(swig_get_self(), rb_intern("protected_needs_redraw?"), 0,
|
3243
|
+
result = rb_funcall(swig_get_self(), rb_intern("protected_needs_redraw?"), 0, Qnil);
|
3272
3244
|
bool swig_val;
|
3273
3245
|
int swig_res = SWIG_AsVal_bool(result, &swig_val);
|
3274
3246
|
if (!SWIG_IsOK(swig_res)) {
|
@@ -3280,10 +3252,10 @@ bool SwigDirector_Window::needs_redraw() const {
|
|
3280
3252
|
|
3281
3253
|
|
3282
3254
|
bool SwigDirector_Window::needs_cursor() const {
|
3283
|
-
bool c_result ;
|
3255
|
+
bool c_result = SwigValueInit< bool >() ;
|
3284
3256
|
VALUE SWIGUNUSED result;
|
3285
3257
|
|
3286
|
-
result = rb_funcall(swig_get_self(), rb_intern("protected_needs_cursor?"), 0,
|
3258
|
+
result = rb_funcall(swig_get_self(), rb_intern("protected_needs_cursor?"), 0, Qnil);
|
3287
3259
|
bool swig_val;
|
3288
3260
|
int swig_res = SWIG_AsVal_bool(result, &swig_val);
|
3289
3261
|
if (!SWIG_IsOK(swig_res)) {
|
@@ -3297,14 +3269,14 @@ bool SwigDirector_Window::needs_cursor() const {
|
|
3297
3269
|
void SwigDirector_Window::lose_focus() {
|
3298
3270
|
VALUE SWIGUNUSED result;
|
3299
3271
|
|
3300
|
-
result = rb_funcall(swig_get_self(), rb_intern("protected_lose_focus"), 0,
|
3272
|
+
result = rb_funcall(swig_get_self(), rb_intern("protected_lose_focus"), 0, Qnil);
|
3301
3273
|
}
|
3302
3274
|
|
3303
3275
|
|
3304
3276
|
void SwigDirector_Window::release_memory() {
|
3305
3277
|
VALUE SWIGUNUSED result;
|
3306
3278
|
|
3307
|
-
result = rb_funcall(swig_get_self(), rb_intern("release_memory"), 0,
|
3279
|
+
result = rb_funcall(swig_get_self(), rb_intern("release_memory"), 0, Qnil);
|
3308
3280
|
}
|
3309
3281
|
|
3310
3282
|
|
@@ -5016,6 +4988,44 @@ fail:
|
|
5016
4988
|
}
|
5017
4989
|
|
5018
4990
|
|
4991
|
+
/*
|
4992
|
+
Document-method: Gosu::Color.to_i
|
4993
|
+
|
4994
|
+
call-seq:
|
4995
|
+
to_i -> std::uint32_t
|
4996
|
+
|
4997
|
+
Convert Color to an Integer.
|
4998
|
+
*/
|
4999
|
+
SWIGINTERN VALUE
|
5000
|
+
_wrap_Color_to_i(int argc, VALUE *argv, VALUE self) {
|
5001
|
+
Gosu::Color *arg1 = (Gosu::Color *) 0 ;
|
5002
|
+
void *argp1 = 0 ;
|
5003
|
+
int res1 = 0 ;
|
5004
|
+
std::uint32_t result;
|
5005
|
+
VALUE vresult = Qnil;
|
5006
|
+
|
5007
|
+
if ((argc < 0) || (argc > 0)) {
|
5008
|
+
rb_raise(rb_eArgError, "wrong # of arguments(%d for 0)",argc); SWIG_fail;
|
5009
|
+
}
|
5010
|
+
res1 = SWIG_ConvertPtr(self, &argp1,SWIGTYPE_p_Gosu__Color, 0 | 0 );
|
5011
|
+
if (!SWIG_IsOK(res1)) {
|
5012
|
+
SWIG_exception_fail(SWIG_ArgError(res1), Ruby_Format_TypeError( "", "Gosu::Color const *","to_i", 1, self ));
|
5013
|
+
}
|
5014
|
+
arg1 = reinterpret_cast< Gosu::Color * >(argp1);
|
5015
|
+
{
|
5016
|
+
try {
|
5017
|
+
result = Gosu_Color_to_i((Gosu::Color const *)arg1);
|
5018
|
+
}
|
5019
|
+
catch (const std::exception& e) {
|
5020
|
+
SWIG_exception(SWIG_RuntimeError, e.what());
|
5021
|
+
}
|
5022
|
+
}
|
5023
|
+
vresult = SWIG_From_unsigned_SS_long(static_cast< unsigned long >(result));
|
5024
|
+
return vresult;
|
5025
|
+
fail:
|
5026
|
+
return Qnil;
|
5027
|
+
}
|
5028
|
+
|
5019
5029
|
|
5020
5030
|
/*
|
5021
5031
|
Document-method: Gosu::Color.dup
|
@@ -5056,7 +5066,6 @@ fail:
|
|
5056
5066
|
}
|
5057
5067
|
|
5058
5068
|
|
5059
|
-
|
5060
5069
|
/*
|
5061
5070
|
Document-method: Gosu::Color.inspect
|
5062
5071
|
|
@@ -5096,7 +5105,6 @@ fail:
|
|
5096
5105
|
}
|
5097
5106
|
|
5098
5107
|
|
5099
|
-
|
5100
5108
|
/*
|
5101
5109
|
Document-method: Gosu::Color.==
|
5102
5110
|
|
@@ -5699,7 +5707,7 @@ SWIGINTERN VALUE _wrap_new_Font(int nargs, VALUE *args, VALUE self) {
|
|
5699
5707
|
if (argc == 3) {
|
5700
5708
|
int _v;
|
5701
5709
|
void *vptr = 0;
|
5702
|
-
int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_Gosu__Window,
|
5710
|
+
int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_Gosu__Window, SWIG_POINTER_NO_NULL);
|
5703
5711
|
_v = SWIG_CheckState(res);
|
5704
5712
|
if (_v) {
|
5705
5713
|
int res = SWIG_AsPtr_std_string(argv[1], (std::string**)(0));
|
@@ -7125,7 +7133,7 @@ SWIGINTERN VALUE _wrap_Image_load_tiles(int nargs, VALUE *args, VALUE self) {
|
|
7125
7133
|
if (argc == 5) {
|
7126
7134
|
int _v;
|
7127
7135
|
void *vptr = 0;
|
7128
|
-
int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_Gosu__Window,
|
7136
|
+
int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_Gosu__Window, SWIG_POINTER_NO_NULL);
|
7129
7137
|
_v = SWIG_CheckState(res);
|
7130
7138
|
if (_v) {
|
7131
7139
|
_v = (argv[1] != 0);
|
@@ -7298,7 +7306,6 @@ fail:
|
|
7298
7306
|
}
|
7299
7307
|
|
7300
7308
|
|
7301
|
-
|
7302
7309
|
/*
|
7303
7310
|
Document-method: Gosu::Image.insert
|
7304
7311
|
|
@@ -7353,7 +7360,6 @@ fail:
|
|
7353
7360
|
}
|
7354
7361
|
|
7355
7362
|
|
7356
|
-
|
7357
7363
|
/*
|
7358
7364
|
Document-method: Gosu::Image.inspect
|
7359
7365
|
|
@@ -11589,7 +11595,7 @@ SWIG_InitializeModule(void *clientdata) {
|
|
11589
11595
|
|
11590
11596
|
/* Now work on filling in swig_module.types */
|
11591
11597
|
#ifdef SWIGRUNTIME_DEBUG
|
11592
|
-
printf("SWIG_InitializeModule: size %
|
11598
|
+
printf("SWIG_InitializeModule: size %lu\n", (unsigned long)swig_module.size);
|
11593
11599
|
#endif
|
11594
11600
|
for (i = 0; i < swig_module.size; ++i) {
|
11595
11601
|
swig_type_info *type = 0;
|
@@ -11597,7 +11603,7 @@ SWIG_InitializeModule(void *clientdata) {
|
|
11597
11603
|
swig_cast_info *cast;
|
11598
11604
|
|
11599
11605
|
#ifdef SWIGRUNTIME_DEBUG
|
11600
|
-
printf("SWIG_InitializeModule: type %
|
11606
|
+
printf("SWIG_InitializeModule: type %lu %s\n", (unsigned long)i, swig_module.type_initial[i]->name);
|
11601
11607
|
#endif
|
11602
11608
|
|
11603
11609
|
/* if there is another module already loaded */
|
@@ -11673,7 +11679,7 @@ SWIG_InitializeModule(void *clientdata) {
|
|
11673
11679
|
for (i = 0; i < swig_module.size; ++i) {
|
11674
11680
|
int j = 0;
|
11675
11681
|
swig_cast_info *cast = swig_module.cast_initial[i];
|
11676
|
-
printf("SWIG_InitializeModule: type %
|
11682
|
+
printf("SWIG_InitializeModule: type %lu %s\n", (unsigned long)i, swig_module.type_initial[i]->name);
|
11677
11683
|
while (cast->type) {
|
11678
11684
|
printf("SWIG_InitializeModule: cast type %s\n", cast->type->name);
|
11679
11685
|
cast++;
|
@@ -11741,8 +11747,8 @@ SWIGEXPORT void Init_gosu(void) {
|
|
11741
11747
|
rb_define_const(mGosu, "VERSION", SWIG_From_std_string(static_cast< std::string >(Gosu::VERSION)));
|
11742
11748
|
rb_define_const(mGosu, "LICENSES", SWIG_From_std_string(static_cast< std::string >(Gosu::LICENSES)));
|
11743
11749
|
rb_define_const(mGosu, "MAJOR_VERSION", SWIG_From_int(static_cast< int >(0)));
|
11744
|
-
rb_define_const(mGosu, "MINOR_VERSION", SWIG_From_int(static_cast< int >(
|
11745
|
-
rb_define_const(mGosu, "POINT_VERSION", SWIG_From_int(static_cast< int >(
|
11750
|
+
rb_define_const(mGosu, "MINOR_VERSION", SWIG_From_int(static_cast< int >(15)));
|
11751
|
+
rb_define_const(mGosu, "POINT_VERSION", SWIG_From_int(static_cast< int >(0)));
|
11746
11752
|
rb_define_module_function(mGosu, "milliseconds", VALUEFUNC(_wrap_milliseconds), -1);
|
11747
11753
|
rb_define_module_function(mGosu, "random", VALUEFUNC(_wrap_random), -1);
|
11748
11754
|
rb_define_module_function(mGosu, "degrees_to_radians", VALUEFUNC(_wrap_degrees_to_radians), -1);
|
@@ -11786,6 +11792,7 @@ SWIGEXPORT void Init_gosu(void) {
|
|
11786
11792
|
rb_define_singleton_method(SwigClassColor.klass, "rgb", VALUEFUNC(_wrap_Color_rgb), -1);
|
11787
11793
|
rb_define_singleton_method(SwigClassColor.klass, "rgba", VALUEFUNC(_wrap_Color_rgba), -1);
|
11788
11794
|
rb_define_singleton_method(SwigClassColor.klass, "argb", VALUEFUNC(_wrap_Color_argb), -1);
|
11795
|
+
rb_define_method(SwigClassColor.klass, "to_i", VALUEFUNC(_wrap_Color_to_i), -1);
|
11789
11796
|
rb_define_method(SwigClassColor.klass, "dup", VALUEFUNC(_wrap_Color_dup), -1);
|
11790
11797
|
rb_define_method(SwigClassColor.klass, "inspect", VALUEFUNC(_wrap_Color_inspect), -1);
|
11791
11798
|
rb_define_method(SwigClassColor.klass, "==", VALUEFUNC(_wrap_Color___eq__), -1);
|
data/src/RubyGosu.h
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
/* ----------------------------------------------------------------------------
|
2
2
|
* This file was automatically generated by SWIG (http://www.swig.org).
|
3
|
-
* Version
|
3
|
+
* Version 4.0.1
|
4
4
|
*
|
5
5
|
* This file is not intended to be easily readable and contains a number of
|
6
6
|
* coding conventions designed to improve portability and efficiency. Do not make
|
data/src/TexChunk.cpp
CHANGED
@@ -82,39 +82,49 @@ Gosu::Bitmap Gosu::TexChunk::to_bitmap() const
|
|
82
82
|
return texture->to_bitmap(x, y, w, h);
|
83
83
|
}
|
84
84
|
|
85
|
-
void Gosu::TexChunk::insert(const Bitmap&
|
85
|
+
void Gosu::TexChunk::insert(const Bitmap& original_bitmap, int x, int y)
|
86
86
|
{
|
87
|
-
Bitmap
|
88
|
-
const Bitmap* bitmap = &
|
87
|
+
Bitmap clipped_bitmap;
|
88
|
+
const Bitmap* bitmap = &original_bitmap;
|
89
89
|
|
90
|
-
|
91
|
-
|
92
|
-
|
90
|
+
// If inserting the bitmap at the given position exceeds the boundaries of the space allocated
|
91
|
+
// for this image on the texture, we need to clip the bitmap and insert the clipped version
|
92
|
+
// instead.
|
93
|
+
if (x < 0 || y < 0 || x + original_bitmap.width() > w || y + original_bitmap.height() > h) {
|
94
|
+
// How many pixels to remove at the top and left sides.
|
95
|
+
int clip_left = 0, clip_top = 0;
|
96
|
+
// How large the clipped version needs to be.
|
97
|
+
int clipped_width = original_bitmap.width(), clipped_height = original_bitmap.height();
|
98
|
+
|
99
|
+
// Clip away pixels on the left side, if necessary.
|
93
100
|
if (x < 0) {
|
94
|
-
|
95
|
-
|
101
|
+
clip_left = -x;
|
102
|
+
clipped_width -= -x;
|
96
103
|
x = 0;
|
97
104
|
}
|
105
|
+
// Clip away pixels at the top, if necessary.
|
98
106
|
if (y < 0) {
|
99
|
-
|
100
|
-
|
107
|
+
clip_top = -y;
|
108
|
+
clipped_height -= -y;
|
101
109
|
y = 0;
|
102
110
|
}
|
103
|
-
|
104
|
-
|
111
|
+
// Clip away pixels on the right side, if necessary.
|
112
|
+
if (x + clipped_width > w) {
|
113
|
+
clipped_width = (w - x);
|
105
114
|
}
|
106
|
-
|
107
|
-
|
115
|
+
// Clip away pixels on the bottom, if necessary.
|
116
|
+
if (y + clipped_height > h) {
|
117
|
+
clipped_height = (h - y);
|
108
118
|
}
|
109
119
|
|
110
|
-
if (
|
120
|
+
if (clipped_width <= 0 || clipped_height <= 0) return;
|
111
121
|
|
112
|
-
|
113
|
-
|
114
|
-
bitmap = &
|
122
|
+
clipped_bitmap.resize(clipped_width, clipped_height);
|
123
|
+
clipped_bitmap.insert(original_bitmap, -clip_left, -clip_top);
|
124
|
+
bitmap = &clipped_bitmap;
|
115
125
|
}
|
116
126
|
|
117
127
|
glBindTexture(GL_TEXTURE_2D, tex_name());
|
118
128
|
glTexSubImage2D(GL_TEXTURE_2D, 0, this->x + x, this->y + y, bitmap->width(), bitmap->height(),
|
119
|
-
|
129
|
+
Color::GL_FORMAT, GL_UNSIGNED_BYTE, bitmap->data());
|
120
130
|
}
|
data/src/Text.cpp
CHANGED
@@ -33,6 +33,7 @@ Gosu::Bitmap Gosu::layout_text(const string& text, const string& font_name,
|
|
33
33
|
double font_height, double line_spacing,
|
34
34
|
int width, Alignment align, unsigned font_flags)
|
35
35
|
{
|
36
|
+
// Escape all markup and delegate to layout_markup.
|
36
37
|
return layout_markup(escape_markup(text), font_name,
|
37
38
|
font_height, line_spacing,
|
38
39
|
width, align, font_flags);
|
data/src/TextBuilder.cpp
CHANGED
@@ -58,7 +58,7 @@ void Gosu::TextBuilder::flush_current_line(EndOfLineReason reason)
|
|
58
58
|
}
|
59
59
|
|
60
60
|
double whitespace_factor = 1.0;
|
61
|
-
if (align == AL_JUSTIFY && reason == LINE_TOO_LONG) {
|
61
|
+
if (align == AL_JUSTIFY && whitespace_width != 0 && reason == LINE_TOO_LONG) {
|
62
62
|
whitespace_factor = (result.width() - words_width) / whitespace_width;
|
63
63
|
}
|
64
64
|
|
@@ -132,7 +132,7 @@ void Gosu::TextBuilder::feed_word(vector<FormattedString>&& word)
|
|
132
132
|
current_line.emplace_back(new_word);
|
133
133
|
current_line_width += new_word.width;
|
134
134
|
|
135
|
-
if (
|
136
|
-
flush_current_line(
|
135
|
+
if (new_word.is_end_of_line) {
|
136
|
+
flush_current_line(END_OF_PARAGRAPH);
|
137
137
|
}
|
138
138
|
}
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: gosu
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.15.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Julian Raschke
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2020-01-18 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: |2
|
14
14
|
2D game development library.
|
@@ -163,11 +163,11 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
163
163
|
version: 1.9.3
|
164
164
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
165
165
|
requirements:
|
166
|
-
- - "
|
166
|
+
- - ">="
|
167
167
|
- !ruby/object:Gem::Version
|
168
|
-
version:
|
168
|
+
version: '0'
|
169
169
|
requirements: []
|
170
|
-
rubygems_version: 3.0.
|
170
|
+
rubygems_version: 3.0.6
|
171
171
|
signing_key:
|
172
172
|
specification_version: 4
|
173
173
|
summary: 2D game development library.
|