gosu 0.7.18 → 0.7.19
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.
- data/COPYING.txt +1 -1
- data/Gosu/GraphicsBase.hpp +4 -2
- data/Gosu/IO.hpp +2 -9
- data/Gosu/Math.hpp +8 -6
- data/Gosu/Version.hpp +2 -2
- data/GosuImpl/Graphics/Common.hpp +4 -3
- data/GosuImpl/Graphics/DrawOp.hpp +4 -0
- data/GosuImpl/Graphics/Graphics.cpp +1 -1
- data/GosuImpl/Graphics/Image.cpp +1 -1
- data/GosuImpl/Graphics/LargeImageData.cpp +1 -1
- data/GosuImpl/Graphics/TexChunk.cpp +1 -1
- data/GosuImpl/Graphics/TextTouch.mm +79 -8
- data/GosuImpl/Graphics/Texture.cpp +15 -1
- data/GosuImpl/IO.cpp +10 -0
- data/GosuImpl/InputTouch.mm +10 -1
- data/GosuImpl/RubyGosu.swg +7 -13
- data/GosuImpl/RubyGosu_wrap.cxx +52 -22
- data/GosuImpl/Sockets/CommSocket.cpp +4 -3
- data/GosuImpl/Sockets/ListenerSocket.cpp +0 -1
- data/GosuImpl/Sockets/MessageSocket.cpp +8 -16
- data/GosuImpl/Sockets/Sockets.hpp +0 -1
- data/GosuImpl/WindowTouch.mm +2 -1
- data/Rakefile +3 -2
- data/lib/gosu.rb +3 -0
- data/lib/gosu/patches.rb +13 -2
- data/lib/gosu/swig_patches.rb +21 -0
- data/linux/extconf.rb +1 -1
- data/reference/cpp/_graphics_base_8hpp.html +3 -2
- data/reference/cpp/_graphics_base_8hpp_source.html +31 -30
- data/reference/cpp/_i_o_8hpp_source.html +49 -56
- data/reference/cpp/_math_8hpp.html +6 -6
- data/reference/cpp/_math_8hpp_source.html +63 -63
- data/reference/cpp/_version_8hpp.html +4 -4
- data/reference/cpp/_version_8hpp_source.html +2 -2
- data/reference/cpp/class_gosu_1_1_buffer.html +2 -6
- data/reference/cpp/class_gosu_1_1_file.html +1 -1
- data/reference/cpp/namespace_gosu.html +60 -57
- data/reference/cpp/namespacemembers.html +2 -0
- data/reference/cpp/namespacemembers_0x62.html +2 -2
- data/reference/cpp/namespacemembers_0x64.html +2 -0
- data/reference/cpp/namespacemembers_0x67.html +0 -2
- data/reference/cpp/namespacemembers_0x72.html +2 -2
- data/reference/cpp/namespacemembers_eval.html +4 -2
- data/reference/cpp/namespacemembers_func.html +4 -4
- data/reference/rdoc/classes/Gosu.html +1546 -0
- data/reference/rdoc/classes/Gosu/Color.html +660 -0
- data/reference/rdoc/classes/Gosu/Font.html +545 -0
- data/reference/rdoc/classes/Gosu/GLTexInfo.html +412 -0
- data/reference/rdoc/classes/Gosu/Image.html +706 -0
- data/reference/rdoc/classes/Gosu/Sample.html +476 -0
- data/reference/rdoc/classes/Gosu/SampleInstance.html +523 -0
- data/reference/rdoc/classes/Gosu/Song.html +568 -0
- data/reference/rdoc/classes/Gosu/TextInput.html +444 -0
- data/reference/rdoc/classes/Gosu/Window.html +911 -0
- data/reference/rdoc/classes/Numeric.html +479 -0
- data/reference/rdoc/created.rid +1 -0
- data/reference/rdoc/files/COPYING_txt.html +391 -0
- data/reference/rdoc/files/README_txt.html +387 -0
- data/reference/rdoc/files/reference/Deployment on OS X_rdoc.html +381 -0
- data/reference/rdoc/files/reference/Deployment on Windows_rdoc.html +385 -0
- data/reference/rdoc/files/reference/Drawing with Colors_rdoc.html +363 -0
- data/reference/rdoc/files/reference/Order of Corners_rdoc.html +358 -0
- data/reference/rdoc/files/reference/Tileability_rdoc.html +374 -0
- data/reference/rdoc/files/reference/Z Ordering_rdoc.html +361 -0
- data/reference/rdoc/files/reference/gosu_rb.html +348 -0
- data/reference/rdoc/fr_class_index.html +12 -0
- data/reference/rdoc/fr_file_index.html +10 -0
- data/reference/rdoc/fr_method_index.html +66 -0
- data/reference/rdoc/index.html +1 -0
- data/reference/rdoc/rdoc-style.css +320 -0
- metadata +29 -11
- data/GosuImpl/ObjGosu/ObjGosu.mm +0 -36
- data/GosuImpl/ObjGosu/ObjGosuColor.mm +0 -84
- data/GosuImpl/ObjGosu/ObjGosuFont.mm +0 -42
- data/GosuImpl/ObjGosu/ObjGosuImage.h +0 -7
- data/GosuImpl/ObjGosu/ObjGosuImage.mm +0 -65
- data/GosuImpl/ObjGosu/ObjGosuSample.mm +0 -32
- data/GosuImpl/ObjGosu/ObjGosuSong.mm +0 -43
- data/GosuImpl/ObjGosu/ObjGosuWindow.h +0 -32
- data/GosuImpl/ObjGosu/ObjGosuWindow.mm +0 -155
data/COPYING.txt
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
Copyright (C) 2004-
|
|
1
|
+
Copyright (C) 2004-2010 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/GraphicsBase.hpp
CHANGED
|
@@ -28,7 +28,9 @@ namespace Gosu
|
|
|
28
28
|
//! The colors' channels will be added. The alpha channel specifies
|
|
29
29
|
//! the percentage of the new color's channels that will be added
|
|
30
30
|
//! to the old color's channels.
|
|
31
|
-
amAdditive
|
|
31
|
+
amAdditive,
|
|
32
|
+
//! The color's channels will be multiplied with each other.
|
|
33
|
+
amMultiply
|
|
32
34
|
};
|
|
33
35
|
|
|
34
36
|
enum FontFlags
|
|
@@ -49,7 +51,7 @@ namespace Gosu
|
|
|
49
51
|
//! Flags that affect the tileability of an image.
|
|
50
52
|
enum BorderFlags
|
|
51
53
|
{
|
|
52
|
-
|
|
54
|
+
bfSmooth = 0,
|
|
53
55
|
bfTileableLeft = 1,
|
|
54
56
|
bfTileableTop = 2,
|
|
55
57
|
bfTileableRight = 4,
|
data/Gosu/IO.hpp
CHANGED
|
@@ -192,15 +192,8 @@ namespace Gosu
|
|
|
192
192
|
return *this;
|
|
193
193
|
}
|
|
194
194
|
|
|
195
|
-
std::size_t size() const
|
|
196
|
-
|
|
197
|
-
return buf.size();
|
|
198
|
-
}
|
|
199
|
-
|
|
200
|
-
void resize(std::size_t newSize)
|
|
201
|
-
{
|
|
202
|
-
buf.resize(newSize);
|
|
203
|
-
}
|
|
195
|
+
std::size_t size() const;
|
|
196
|
+
void resize(std::size_t newSize);
|
|
204
197
|
|
|
205
198
|
void read(std::size_t offset, std::size_t length,
|
|
206
199
|
void* destBuffer) const;
|
data/Gosu/Math.hpp
CHANGED
|
@@ -29,26 +29,28 @@ namespace Gosu
|
|
|
29
29
|
//! Uses std::rand, so you should call std::srand before using it.
|
|
30
30
|
double random(double min, double max);
|
|
31
31
|
|
|
32
|
-
//! Translates between Gosu's angle system
|
|
32
|
+
//! Translates between Gosu's angle system (where 0� is at the top)
|
|
33
|
+
//! and radians (where 0 is at the right).
|
|
33
34
|
inline double gosuToRadians(double angle)
|
|
34
35
|
{
|
|
35
36
|
return (angle - 90) * pi / 180;
|
|
36
37
|
}
|
|
37
|
-
//! Translates between Gosu's angle system
|
|
38
|
+
//! Translates between Gosu's angle system (where 0� is at the top)
|
|
39
|
+
//! and radians (where 0 is at the right).
|
|
38
40
|
inline double radiansToGosu(double angle)
|
|
39
41
|
{
|
|
40
42
|
return angle * 180 / pi + 90;
|
|
41
43
|
}
|
|
42
44
|
|
|
43
|
-
//! Translates between
|
|
45
|
+
//! Translates between degrees (used by Gosu) and radians, i.e. it
|
|
44
46
|
//! does not change the 'origin' of the angle system.
|
|
45
|
-
inline double
|
|
47
|
+
inline double degreesToRadians(double angle)
|
|
46
48
|
{
|
|
47
49
|
return angle * pi / 180;
|
|
48
50
|
}
|
|
49
|
-
//! Translates between
|
|
51
|
+
//! Translates between degrees (used by Gosu) and radians, i.e. it
|
|
50
52
|
//! does not change the 'origin' of the angle system.
|
|
51
|
-
inline double
|
|
53
|
+
inline double radiansToDegrees(double angle)
|
|
52
54
|
{
|
|
53
55
|
return angle * 180 / pi;
|
|
54
56
|
}
|
data/Gosu/Version.hpp
CHANGED
|
@@ -33,16 +33,17 @@ namespace Gosu
|
|
|
33
33
|
{
|
|
34
34
|
return (xb - xa) * (yp - ya) - (xp - xa) * (yb - ya) > 0;
|
|
35
35
|
}
|
|
36
|
-
|
|
37
|
-
template<typename T>
|
|
36
|
+
|
|
37
|
+
template<typename T, typename C>
|
|
38
38
|
void reorderCoordinatesIfNecessary(T& x1, T& y1,
|
|
39
|
-
T& x2, T& y2, T& x3, T& y3, T& x4, T& y4)
|
|
39
|
+
T& x2, T& y2, T& x3, T& y3, C& c3, T& x4, T& y4, C& c4)
|
|
40
40
|
{
|
|
41
41
|
if (isPToTheLeftOfAB(x1, y1, x2, y2, x3, y3) ==
|
|
42
42
|
isPToTheLeftOfAB(x2, y2, x3, y3, x4, y4))
|
|
43
43
|
{
|
|
44
44
|
std::swap(x3, x4);
|
|
45
45
|
std::swap(y3, y4);
|
|
46
|
+
std::swap(c3, c4);
|
|
46
47
|
}
|
|
47
48
|
}
|
|
48
49
|
}
|
|
@@ -54,6 +54,8 @@ namespace Gosu
|
|
|
54
54
|
|
|
55
55
|
if (mode == amAdditive)
|
|
56
56
|
glBlendFunc(GL_SRC_ALPHA, GL_ONE);
|
|
57
|
+
else if (mode == amMultiply)
|
|
58
|
+
glBlendFunc(GL_DST_COLOR, GL_ZERO);
|
|
57
59
|
else
|
|
58
60
|
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
|
|
59
61
|
|
|
@@ -146,6 +148,8 @@ namespace Gosu
|
|
|
146
148
|
|
|
147
149
|
if (mode == amAdditive)
|
|
148
150
|
glBlendFunc(GL_SRC_ALPHA, GL_ONE);
|
|
151
|
+
else if (mode == amMultiply)
|
|
152
|
+
glBlendFunc(GL_DST_COLOR, GL_ZERO);
|
|
149
153
|
else
|
|
150
154
|
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
|
|
151
155
|
|
|
@@ -281,7 +281,7 @@ void Gosu::Graphics::drawQuad(double x1, double y1, Color c1,
|
|
|
281
281
|
double x4, double y4, Color c4,
|
|
282
282
|
ZPos z, AlphaMode mode)
|
|
283
283
|
{
|
|
284
|
-
reorderCoordinatesIfNecessary(x1, y1, x2, y2, x3, y3, x4, y4);
|
|
284
|
+
reorderCoordinatesIfNecessary(x1, y1, x2, y2, x3, y3, c3, x4, y4, c4);
|
|
285
285
|
|
|
286
286
|
DrawOp op;
|
|
287
287
|
|
data/GosuImpl/Graphics/Image.cpp
CHANGED
|
@@ -29,7 +29,7 @@ Gosu::Image::Image(Graphics& graphics, const Bitmap& source,
|
|
|
29
29
|
unsigned srcX, unsigned srcY, unsigned srcWidth, unsigned srcHeight,
|
|
30
30
|
bool tileable)
|
|
31
31
|
: data(graphics.createImage(source, srcX, srcY, srcWidth, srcHeight,
|
|
32
|
-
tileable ? Gosu::bfTileable : Gosu::
|
|
32
|
+
tileable ? Gosu::bfTileable : Gosu::bfSmooth))
|
|
33
33
|
{
|
|
34
34
|
}
|
|
35
35
|
|
|
@@ -85,7 +85,7 @@ void Gosu::LargeImageData::draw(double x1, double y1, Color c1,
|
|
|
85
85
|
if (parts.empty())
|
|
86
86
|
return;
|
|
87
87
|
|
|
88
|
-
reorderCoordinatesIfNecessary(x1, y1, x2, y2, x3, y3, x4, y4);
|
|
88
|
+
reorderCoordinatesIfNecessary(x1, y1, x2, y2, x3, y3, c3, x4, y4, c4);
|
|
89
89
|
|
|
90
90
|
for (unsigned py = 0; py < partsY; ++py)
|
|
91
91
|
for (unsigned px = 0; px < partsX; ++px)
|
|
@@ -47,7 +47,7 @@ void Gosu::TexChunk::draw(double x1, double y1, Color c1,
|
|
|
47
47
|
{
|
|
48
48
|
DrawOp newDrawOp;
|
|
49
49
|
|
|
50
|
-
reorderCoordinatesIfNecessary(x1, y1, x2, y2, x3, y3, x4, y4);
|
|
50
|
+
reorderCoordinatesIfNecessary(x1, y1, x2, y2, x3, y3, c3, x4, y4, c4);
|
|
51
51
|
|
|
52
52
|
x1 *= graphics->factorX();
|
|
53
53
|
y1 *= graphics->factorY();
|
|
@@ -21,14 +21,83 @@ typedef NSFont OSXFont;
|
|
|
21
21
|
|
|
22
22
|
namespace
|
|
23
23
|
{
|
|
24
|
-
|
|
25
|
-
|
|
24
|
+
// TODO: Merge with InputMac.mm
|
|
25
|
+
template<typename CFTypeRef>
|
|
26
|
+
class CFScope : boost::noncopyable
|
|
26
27
|
{
|
|
27
|
-
|
|
28
|
+
CFTypeRef ref;
|
|
29
|
+
public:
|
|
30
|
+
explicit CFScope(CFTypeRef ref) : ref(ref) {}
|
|
31
|
+
~CFScope() { CFRelease(ref); }
|
|
32
|
+
CFTypeRef get() { return ref; }
|
|
33
|
+
};
|
|
34
|
+
|
|
35
|
+
// If a font is a filename, loads the font and returns its family name that can be used
|
|
36
|
+
// like any system font. Otherwise, just returns the family name.
|
|
37
|
+
std::wstring normalizeFont(const std::wstring& fontName)
|
|
38
|
+
{
|
|
39
|
+
#ifdef GOSU_IS_IPHONE
|
|
40
|
+
return fontName;
|
|
41
|
+
#else
|
|
42
|
+
static map<wstring, wstring> familyOfFiles;
|
|
43
|
+
|
|
44
|
+
// Not a path name: It is already a family name
|
|
45
|
+
if (fontName.find(L"/") == std::wstring::npos)
|
|
46
|
+
return fontName;
|
|
47
|
+
|
|
48
|
+
// Already activated font & extracted family name
|
|
49
|
+
if (familyOfFiles.count(fontName) > 0)
|
|
50
|
+
return familyOfFiles[fontName];
|
|
51
|
+
|
|
52
|
+
CFScope<CFStringRef> urlString(
|
|
53
|
+
CFStringCreateWithBytes(NULL,
|
|
54
|
+
reinterpret_cast<const UInt8*>(fontName.c_str()),
|
|
55
|
+
fontName.length() * sizeof(wchar_t),
|
|
56
|
+
kCFStringEncodingUTF32LE, NO));
|
|
57
|
+
CFScope<CFURLRef> url(
|
|
58
|
+
CFURLCreateWithFileSystemPath(NULL, urlString.get(),
|
|
59
|
+
kCFURLPOSIXPathStyle, YES));
|
|
60
|
+
if (!url.get())
|
|
61
|
+
return familyOfFiles[fontName] = Gosu::defaultFontName();
|
|
62
|
+
|
|
63
|
+
CFScope<CFArrayRef> array(
|
|
64
|
+
CTFontManagerCreateFontDescriptorsFromURL(url.get()));
|
|
65
|
+
|
|
66
|
+
if (array.get() == NULL || CFArrayGetCount(array.get()) < 1 ||
|
|
67
|
+
!CTFontManagerRegisterFontsForURL(url.get(),
|
|
68
|
+
kCTFontManagerScopeProcess, NULL))
|
|
69
|
+
return familyOfFiles[fontName] = Gosu::defaultFontName();
|
|
70
|
+
|
|
71
|
+
CTFontDescriptorRef ref =
|
|
72
|
+
(CTFontDescriptorRef)CFArrayGetValueAtIndex(array.get(), 0);
|
|
73
|
+
CFScope<CFStringRef> fontNameStr(
|
|
74
|
+
(CFStringRef)CTFontDescriptorCopyAttribute(ref, kCTFontFamilyNameAttribute));
|
|
75
|
+
|
|
76
|
+
const char* utf8FontName =
|
|
77
|
+
[(NSString*)fontNameStr.get() cStringUsingEncoding: NSUTF8StringEncoding];
|
|
78
|
+
return familyOfFiles[fontName] = Gosu::utf8ToWstring(utf8FontName);
|
|
79
|
+
#endif
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
OSXFont* getFont(wstring fontName, double height)
|
|
83
|
+
{
|
|
84
|
+
fontName = normalizeFont(fontName);
|
|
85
|
+
|
|
86
|
+
static map<pair<wstring, double>, OSXFont*> usedFonts;
|
|
87
|
+
|
|
88
|
+
OSXFont* result = usedFonts[make_pair(fontName, height)];
|
|
28
89
|
if (!result)
|
|
29
90
|
{
|
|
30
|
-
Gosu::ObjRef<NSString>
|
|
31
|
-
|
|
91
|
+
Gosu::ObjRef<NSString> name([[NSString alloc] initWithUTF8String: Gosu::wstringToUTF8(fontName).c_str()]);
|
|
92
|
+
#ifdef GOSU_IS_IPHONE
|
|
93
|
+
result = [[OSXFont fontWithName: name.obj() size: height] retain];
|
|
94
|
+
#else
|
|
95
|
+
NSFontDescriptor* desc = [[[NSFontDescriptor alloc] initWithFontAttributes:nil] fontDescriptorWithFamily:name.obj()];
|
|
96
|
+
result = [[NSFont fontWithDescriptor:desc size:height] retain];
|
|
97
|
+
#endif
|
|
98
|
+
if (!result && fontName != Gosu::defaultFontName())
|
|
99
|
+
result = getFont(Gosu::defaultFontName(), height);
|
|
100
|
+
usedFonts[make_pair(fontName, height)] = result;
|
|
32
101
|
}
|
|
33
102
|
return result;
|
|
34
103
|
}
|
|
@@ -46,7 +115,8 @@ unsigned Gosu::textWidth(const wstring& text,
|
|
|
46
115
|
{
|
|
47
116
|
OSXFont* font = getFont(fontName, fontHeight);
|
|
48
117
|
|
|
49
|
-
// This will, of course, compute a too large size; fontHeight is in pixels,
|
|
118
|
+
// This will, of course, compute a too large size; fontHeight is in pixels,
|
|
119
|
+
// the method expects point.
|
|
50
120
|
ObjRef<NSString> string([[NSString alloc] initWithUTF8String: wstringToUTF8(text).c_str()]);
|
|
51
121
|
#ifndef GOSU_IS_IPHONE
|
|
52
122
|
ObjRef<NSDictionary> attributes([[NSDictionary alloc] initWithObjectsAndKeys:
|
|
@@ -111,8 +181,9 @@ void Gosu::drawText(Bitmap& bitmap, const wstring& text, int x, int y,
|
|
|
111
181
|
font, NSFontAttributeName, [NSColor whiteColor], NSForegroundColorAttributeName, nil]);
|
|
112
182
|
|
|
113
183
|
[NSGraphicsContext saveGraphicsState];
|
|
114
|
-
[NSGraphicsContext setCurrentContext:
|
|
115
|
-
[
|
|
184
|
+
[NSGraphicsContext setCurrentContext:
|
|
185
|
+
[NSGraphicsContext graphicsContextWithGraphicsPort:(void *)context flipped:false]];
|
|
186
|
+
[string.obj() drawAtPoint: NSPointZero withAttributes: attributes.get()];
|
|
116
187
|
[NSGraphicsContext restoreGraphicsState];
|
|
117
188
|
#endif
|
|
118
189
|
CGContextRelease(context);
|
|
@@ -37,6 +37,11 @@ unsigned Gosu::Texture::maxTextureSize()
|
|
|
37
37
|
|
|
38
38
|
//const unsigned Gosu::MAX_TEXTURE_SIZE = Gosu::Texture::maxTextureSize();
|
|
39
39
|
|
|
40
|
+
namespace Gosu
|
|
41
|
+
{
|
|
42
|
+
bool undocumentedRetrofication = false;
|
|
43
|
+
}
|
|
44
|
+
|
|
40
45
|
Gosu::Texture::Texture(unsigned size)
|
|
41
46
|
: allocator(size, size), num(0)
|
|
42
47
|
{
|
|
@@ -54,7 +59,15 @@ Gosu::Texture::Texture(unsigned size)
|
|
|
54
59
|
glTexImage2D(GL_TEXTURE_2D, 0, 4, allocator.width(), allocator.height(), 0,
|
|
55
60
|
GL_RGBA, GL_UNSIGNED_BYTE, 0);
|
|
56
61
|
#endif
|
|
57
|
-
|
|
62
|
+
|
|
63
|
+
if (undocumentedRetrofication)
|
|
64
|
+
{
|
|
65
|
+
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
|
|
66
|
+
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
|
|
67
|
+
}
|
|
68
|
+
else
|
|
69
|
+
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
|
|
70
|
+
|
|
58
71
|
#ifdef GOSU_IS_WIN
|
|
59
72
|
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP);
|
|
60
73
|
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP);
|
|
@@ -121,6 +134,7 @@ std::auto_ptr<Gosu::TexChunk>
|
|
|
121
134
|
glBindTexture(GL_TEXTURE_2D, name);
|
|
122
135
|
glTexSubImage2D(GL_TEXTURE_2D, 0, block->left, block->top, block->width, block->height,
|
|
123
136
|
format, GL_UNSIGNED_BYTE, texData);
|
|
137
|
+
|
|
124
138
|
num += 1;
|
|
125
139
|
return result;
|
|
126
140
|
}
|
data/GosuImpl/IO.cpp
CHANGED
|
@@ -18,6 +18,16 @@ void Gosu::Writer::write(const void* source, std::size_t length)
|
|
|
18
18
|
seek(length);
|
|
19
19
|
}
|
|
20
20
|
|
|
21
|
+
std::size_t Gosu::Buffer::size() const
|
|
22
|
+
{
|
|
23
|
+
return buf.size();
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
void Gosu::Buffer::resize(std::size_t newSize)
|
|
27
|
+
{
|
|
28
|
+
buf.resize(newSize);
|
|
29
|
+
}
|
|
30
|
+
|
|
21
31
|
void Gosu::Buffer::read(std::size_t offset, std::size_t length,
|
|
22
32
|
void* destBuffer) const
|
|
23
33
|
{
|
data/GosuImpl/InputTouch.mm
CHANGED
|
@@ -1,4 +1,13 @@
|
|
|
1
|
-
#include <Gosu/
|
|
1
|
+
#include <Gosu/Input.hpp>
|
|
2
|
+
#include <Gosu/TextInput.hpp>
|
|
3
|
+
|
|
4
|
+
struct Gosu::TextInput::Impl {};
|
|
5
|
+
Gosu::TextInput::TextInput() {}
|
|
6
|
+
Gosu::TextInput::~TextInput() {}
|
|
7
|
+
std::wstring Gosu::TextInput::text() const { return L""; }
|
|
8
|
+
void Gosu::TextInput::setText(const std::wstring& text) {}
|
|
9
|
+
unsigned Gosu::TextInput::caretPos() const { return 0; }
|
|
10
|
+
unsigned Gosu::TextInput::selectionStart() const { return 0; }
|
|
2
11
|
|
|
3
12
|
struct Gosu::Input::Impl {
|
|
4
13
|
};
|
data/GosuImpl/RubyGosu.swg
CHANGED
|
@@ -78,6 +78,8 @@
|
|
|
78
78
|
$1 = Gosu::amDefault;
|
|
79
79
|
else if (!strcmp(StringValueCStr(localTemporary), "additive"))
|
|
80
80
|
$1 = Gosu::amAdditive;
|
|
81
|
+
else if (!strcmp(StringValueCStr(localTemporary), "multiply"))
|
|
82
|
+
$1 = Gosu::amMultiply;
|
|
81
83
|
else
|
|
82
84
|
SWIG_exception_fail(SWIG_ValueError, "invalid alpha mode");
|
|
83
85
|
}
|
|
@@ -159,6 +161,7 @@
|
|
|
159
161
|
// For Ruby-only MAX_TEXTURE_SIZE
|
|
160
162
|
#include <Gosu/../GosuImpl/Graphics/Texture.hpp>
|
|
161
163
|
namespace Gosu {
|
|
164
|
+
void enableUndocumentedRetrofication() { extern bool undocumentedRetrofication; undocumentedRetrofication = true; }
|
|
162
165
|
unsigned __maxTextureSize() { return Gosu::Texture::maxTextureSize(); }
|
|
163
166
|
}
|
|
164
167
|
|
|
@@ -283,6 +286,7 @@ namespace Gosu
|
|
|
283
286
|
//%constant unsigned MAX_TEXTURE_SIZE = Gosu::Texture::maxTextureSize();
|
|
284
287
|
|
|
285
288
|
namespace Gosu {
|
|
289
|
+
void enableUndocumentedRetrofication() { extern bool undocumentedRetrofication; undocumentedRetrofication = true; }
|
|
286
290
|
unsigned __maxTextureSize() { return Gosu::Texture::maxTextureSize(); }
|
|
287
291
|
}
|
|
288
292
|
|
|
@@ -357,7 +361,7 @@ namespace Gosu {
|
|
|
357
361
|
%include "../Gosu/ImageData.hpp"
|
|
358
362
|
|
|
359
363
|
// Image
|
|
360
|
-
//
|
|
364
|
+
// Allow the user to pass Window& instead of Graphics&.
|
|
361
365
|
// Also, provide convenience functions.
|
|
362
366
|
|
|
363
367
|
// Typemap to return an array of images (for loadTiles)
|
|
@@ -377,7 +381,8 @@ namespace Gosu {
|
|
|
377
381
|
%include "../Gosu/Image.hpp"
|
|
378
382
|
%extend Gosu::Image {
|
|
379
383
|
Image(Gosu::Window& window, VALUE source, bool tileable = false) {
|
|
380
|
-
return new Gosu::Image(window.graphics(),
|
|
384
|
+
return new Gosu::Image(window.graphics(),
|
|
385
|
+
Gosu::loadBitmap(source), tileable);
|
|
381
386
|
}
|
|
382
387
|
Image(Gosu::Window& window, VALUE source, bool tileable,
|
|
383
388
|
unsigned srcX, unsigned srcY, unsigned srcWidth, unsigned srcHeight) {
|
|
@@ -451,17 +456,6 @@ namespace Gosu {
|
|
|
451
456
|
// Does not matter that it's the Mac file, %include only analyses symbols to export, not their values.
|
|
452
457
|
%include "../Gosu/ButtonsMac.hpp"
|
|
453
458
|
%init %{
|
|
454
|
-
// ARGH, SWIG workaround...
|
|
455
|
-
// It doesn't understand the C++ overloading otherwise.
|
|
456
|
-
rb_eval_string("class Gosu::Image; def self.from_text(*args); args.size == 4 ? from_text4(*args) : from_text7(*args); end; end");
|
|
457
|
-
|
|
458
|
-
// ARGH, SWIG workaround 2..
|
|
459
|
-
// It won't let me have a class method and method with the same name.
|
|
460
|
-
rb_eval_string("class Gosu::Window; def button_id_to_char(id); self.class.button_id_to_char(id); end; def char_to_button_id(ch); self.class.char_to_button_id(ch); end; end");
|
|
461
|
-
|
|
462
|
-
// ARGH, Linux workaround: instead of declaring a constant, we declare a hidden function and call it when we need to define the constant.
|
|
463
|
-
rb_eval_string("module Gosu;def self.const_missing sym;if sym == :MAX_TEXTURE_SIZE then;const_set sym, __max_texture_size;else;super;end;end;end");
|
|
464
|
-
|
|
465
459
|
GosusDarkSide::oncePerTick = GosusDarkSide::yieldToOtherRubyThreads;
|
|
466
460
|
%}
|
|
467
461
|
|
data/GosuImpl/RubyGosu_wrap.cxx
CHANGED
|
@@ -2232,6 +2232,7 @@ static VALUE mGosu;
|
|
|
2232
2232
|
// For Ruby-only MAX_TEXTURE_SIZE
|
|
2233
2233
|
#include <Gosu/../GosuImpl/Graphics/Texture.hpp>
|
|
2234
2234
|
namespace Gosu {
|
|
2235
|
+
void enableUndocumentedRetrofication() { extern bool undocumentedRetrofication; undocumentedRetrofication = true; }
|
|
2235
2236
|
unsigned __maxTextureSize() { return Gosu::Texture::maxTextureSize(); }
|
|
2236
2237
|
}
|
|
2237
2238
|
|
|
@@ -2573,7 +2574,8 @@ SWIG_AsVal_bool (VALUE obj, bool *val)
|
|
|
2573
2574
|
}
|
|
2574
2575
|
|
|
2575
2576
|
SWIGINTERN Gosu::Image *new_Gosu_Image__SWIG_0(Gosu::Window &window,VALUE source,bool tileable=false){
|
|
2576
|
-
return new Gosu::Image(window.graphics(),
|
|
2577
|
+
return new Gosu::Image(window.graphics(),
|
|
2578
|
+
Gosu::loadBitmap(source), tileable);
|
|
2577
2579
|
}
|
|
2578
2580
|
SWIGINTERN Gosu::Image *new_Gosu_Image__SWIG_1(Gosu::Window &window,VALUE source,bool tileable,unsigned int srcX,unsigned int srcY,unsigned int srcWidth,unsigned int srcHeight){
|
|
2579
2581
|
return new Gosu::Image(window.graphics(), Gosu::loadBitmap(source),
|
|
@@ -2851,7 +2853,7 @@ fail:
|
|
|
2851
2853
|
|
|
2852
2854
|
|
|
2853
2855
|
SWIGINTERN VALUE
|
|
2854
|
-
|
|
2856
|
+
_wrap_degrees_to_radians(int argc, VALUE *argv, VALUE self) {
|
|
2855
2857
|
double arg1 ;
|
|
2856
2858
|
double val1 ;
|
|
2857
2859
|
int ecode1 = 0 ;
|
|
@@ -2863,12 +2865,12 @@ _wrap_gosu_to_radian_scale(int argc, VALUE *argv, VALUE self) {
|
|
|
2863
2865
|
}
|
|
2864
2866
|
ecode1 = SWIG_AsVal_double(argv[0], &val1);
|
|
2865
2867
|
if (!SWIG_IsOK(ecode1)) {
|
|
2866
|
-
SWIG_exception_fail(SWIG_ArgError(ecode1), Ruby_Format_TypeError( "", "double","Gosu::
|
|
2868
|
+
SWIG_exception_fail(SWIG_ArgError(ecode1), Ruby_Format_TypeError( "", "double","Gosu::degreesToRadians", 1, argv[0] ));
|
|
2867
2869
|
}
|
|
2868
2870
|
arg1 = static_cast< double >(val1);
|
|
2869
2871
|
{
|
|
2870
2872
|
try {
|
|
2871
|
-
result = (double)Gosu::
|
|
2873
|
+
result = (double)Gosu::degreesToRadians(arg1);
|
|
2872
2874
|
} catch(const std::runtime_error& e) {
|
|
2873
2875
|
SWIG_exception(SWIG_RuntimeError, e.what());
|
|
2874
2876
|
}
|
|
@@ -2881,7 +2883,7 @@ fail:
|
|
|
2881
2883
|
|
|
2882
2884
|
|
|
2883
2885
|
SWIGINTERN VALUE
|
|
2884
|
-
|
|
2886
|
+
_wrap_radians_to_degrees(int argc, VALUE *argv, VALUE self) {
|
|
2885
2887
|
double arg1 ;
|
|
2886
2888
|
double val1 ;
|
|
2887
2889
|
int ecode1 = 0 ;
|
|
@@ -2893,12 +2895,12 @@ _wrap_radians_scale_to_gosu(int argc, VALUE *argv, VALUE self) {
|
|
|
2893
2895
|
}
|
|
2894
2896
|
ecode1 = SWIG_AsVal_double(argv[0], &val1);
|
|
2895
2897
|
if (!SWIG_IsOK(ecode1)) {
|
|
2896
|
-
SWIG_exception_fail(SWIG_ArgError(ecode1), Ruby_Format_TypeError( "", "double","Gosu::
|
|
2898
|
+
SWIG_exception_fail(SWIG_ArgError(ecode1), Ruby_Format_TypeError( "", "double","Gosu::radiansToDegrees", 1, argv[0] ));
|
|
2897
2899
|
}
|
|
2898
2900
|
arg1 = static_cast< double >(val1);
|
|
2899
2901
|
{
|
|
2900
2902
|
try {
|
|
2901
|
-
result = (double)Gosu::
|
|
2903
|
+
result = (double)Gosu::radiansToDegrees(arg1);
|
|
2902
2904
|
} catch(const std::runtime_error& e) {
|
|
2903
2905
|
SWIG_exception(SWIG_RuntimeError, e.what());
|
|
2904
2906
|
}
|
|
@@ -3240,6 +3242,24 @@ fail:
|
|
|
3240
3242
|
}
|
|
3241
3243
|
|
|
3242
3244
|
|
|
3245
|
+
SWIGINTERN VALUE
|
|
3246
|
+
_wrap_enable_undocumented_retrofication(int argc, VALUE *argv, VALUE self) {
|
|
3247
|
+
if ((argc < 0) || (argc > 0)) {
|
|
3248
|
+
rb_raise(rb_eArgError, "wrong # of arguments(%d for 0)",argc); SWIG_fail;
|
|
3249
|
+
}
|
|
3250
|
+
{
|
|
3251
|
+
try {
|
|
3252
|
+
Gosu::enableUndocumentedRetrofication();
|
|
3253
|
+
} catch(const std::runtime_error& e) {
|
|
3254
|
+
SWIG_exception(SWIG_RuntimeError, e.what());
|
|
3255
|
+
}
|
|
3256
|
+
}
|
|
3257
|
+
return Qnil;
|
|
3258
|
+
fail:
|
|
3259
|
+
return Qnil;
|
|
3260
|
+
}
|
|
3261
|
+
|
|
3262
|
+
|
|
3243
3263
|
SWIGINTERN VALUE
|
|
3244
3264
|
_wrap___max_texture_size(int argc, VALUE *argv, VALUE self) {
|
|
3245
3265
|
unsigned int result;
|
|
@@ -4677,6 +4697,8 @@ _wrap_Font_draw(int argc, VALUE *argv, VALUE self) {
|
|
|
4677
4697
|
arg9 = Gosu::amDefault;
|
|
4678
4698
|
else if (!strcmp(StringValueCStr(localTemporary), "additive"))
|
|
4679
4699
|
arg9 = Gosu::amAdditive;
|
|
4700
|
+
else if (!strcmp(StringValueCStr(localTemporary), "multiply"))
|
|
4701
|
+
arg9 = Gosu::amMultiply;
|
|
4680
4702
|
else
|
|
4681
4703
|
SWIG_exception_fail(SWIG_ValueError, "invalid alpha mode");
|
|
4682
4704
|
}
|
|
@@ -4797,6 +4819,8 @@ _wrap_Font_draw_rel(int argc, VALUE *argv, VALUE self) {
|
|
|
4797
4819
|
arg11 = Gosu::amDefault;
|
|
4798
4820
|
else if (!strcmp(StringValueCStr(localTemporary), "additive"))
|
|
4799
4821
|
arg11 = Gosu::amAdditive;
|
|
4822
|
+
else if (!strcmp(StringValueCStr(localTemporary), "multiply"))
|
|
4823
|
+
arg11 = Gosu::amMultiply;
|
|
4800
4824
|
else
|
|
4801
4825
|
SWIG_exception_fail(SWIG_ValueError, "invalid alpha mode");
|
|
4802
4826
|
}
|
|
@@ -4909,6 +4933,8 @@ _wrap_Font_draw_rot(int argc, VALUE *argv, VALUE self) {
|
|
|
4909
4933
|
arg10 = Gosu::amDefault;
|
|
4910
4934
|
else if (!strcmp(StringValueCStr(localTemporary), "additive"))
|
|
4911
4935
|
arg10 = Gosu::amAdditive;
|
|
4936
|
+
else if (!strcmp(StringValueCStr(localTemporary), "multiply"))
|
|
4937
|
+
arg10 = Gosu::amMultiply;
|
|
4912
4938
|
else
|
|
4913
4939
|
SWIG_exception_fail(SWIG_ValueError, "invalid alpha mode");
|
|
4914
4940
|
}
|
|
@@ -5453,6 +5479,8 @@ _wrap_Image_draw(int argc, VALUE *argv, VALUE self) {
|
|
|
5453
5479
|
arg8 = Gosu::amDefault;
|
|
5454
5480
|
else if (!strcmp(StringValueCStr(localTemporary), "additive"))
|
|
5455
5481
|
arg8 = Gosu::amAdditive;
|
|
5482
|
+
else if (!strcmp(StringValueCStr(localTemporary), "multiply"))
|
|
5483
|
+
arg8 = Gosu::amMultiply;
|
|
5456
5484
|
else
|
|
5457
5485
|
SWIG_exception_fail(SWIG_ValueError, "invalid alpha mode");
|
|
5458
5486
|
}
|
|
@@ -5580,6 +5608,8 @@ _wrap_Image_draw_mod(int argc, VALUE *argv, VALUE self) {
|
|
|
5580
5608
|
arg11 = Gosu::amDefault;
|
|
5581
5609
|
else if (!strcmp(StringValueCStr(localTemporary), "additive"))
|
|
5582
5610
|
arg11 = Gosu::amAdditive;
|
|
5611
|
+
else if (!strcmp(StringValueCStr(localTemporary), "multiply"))
|
|
5612
|
+
arg11 = Gosu::amMultiply;
|
|
5583
5613
|
else
|
|
5584
5614
|
SWIG_exception_fail(SWIG_ValueError, "invalid alpha mode");
|
|
5585
5615
|
}
|
|
@@ -5705,6 +5735,8 @@ _wrap_Image_draw_rot(int argc, VALUE *argv, VALUE self) {
|
|
|
5705
5735
|
arg11 = Gosu::amDefault;
|
|
5706
5736
|
else if (!strcmp(StringValueCStr(localTemporary), "additive"))
|
|
5707
5737
|
arg11 = Gosu::amAdditive;
|
|
5738
|
+
else if (!strcmp(StringValueCStr(localTemporary), "multiply"))
|
|
5739
|
+
arg11 = Gosu::amMultiply;
|
|
5708
5740
|
else
|
|
5709
5741
|
SWIG_exception_fail(SWIG_ValueError, "invalid alpha mode");
|
|
5710
5742
|
}
|
|
@@ -6086,6 +6118,8 @@ _wrap_Image_draw_as_quad(int argc, VALUE *argv, VALUE self) {
|
|
|
6086
6118
|
arg15 = Gosu::amDefault;
|
|
6087
6119
|
else if (!strcmp(StringValueCStr(localTemporary), "additive"))
|
|
6088
6120
|
arg15 = Gosu::amAdditive;
|
|
6121
|
+
else if (!strcmp(StringValueCStr(localTemporary), "multiply"))
|
|
6122
|
+
arg15 = Gosu::amMultiply;
|
|
6089
6123
|
else
|
|
6090
6124
|
SWIG_exception_fail(SWIG_ValueError, "invalid alpha mode");
|
|
6091
6125
|
}
|
|
@@ -8045,6 +8079,8 @@ _wrap_Window_draw_line(int argc, VALUE *argv, VALUE self) {
|
|
|
8045
8079
|
arg9 = Gosu::amDefault;
|
|
8046
8080
|
else if (!strcmp(StringValueCStr(localTemporary), "additive"))
|
|
8047
8081
|
arg9 = Gosu::amAdditive;
|
|
8082
|
+
else if (!strcmp(StringValueCStr(localTemporary), "multiply"))
|
|
8083
|
+
arg9 = Gosu::amMultiply;
|
|
8048
8084
|
else
|
|
8049
8085
|
SWIG_exception_fail(SWIG_ValueError, "invalid alpha mode");
|
|
8050
8086
|
}
|
|
@@ -8178,6 +8214,8 @@ _wrap_Window_draw_triangle(int argc, VALUE *argv, VALUE self) {
|
|
|
8178
8214
|
arg12 = Gosu::amDefault;
|
|
8179
8215
|
else if (!strcmp(StringValueCStr(localTemporary), "additive"))
|
|
8180
8216
|
arg12 = Gosu::amAdditive;
|
|
8217
|
+
else if (!strcmp(StringValueCStr(localTemporary), "multiply"))
|
|
8218
|
+
arg12 = Gosu::amMultiply;
|
|
8181
8219
|
else
|
|
8182
8220
|
SWIG_exception_fail(SWIG_ValueError, "invalid alpha mode");
|
|
8183
8221
|
}
|
|
@@ -8339,6 +8377,8 @@ _wrap_Window_draw_quad(int argc, VALUE *argv, VALUE self) {
|
|
|
8339
8377
|
arg15 = Gosu::amDefault;
|
|
8340
8378
|
else if (!strcmp(StringValueCStr(localTemporary), "additive"))
|
|
8341
8379
|
arg15 = Gosu::amAdditive;
|
|
8380
|
+
else if (!strcmp(StringValueCStr(localTemporary), "multiply"))
|
|
8381
|
+
arg15 = Gosu::amMultiply;
|
|
8342
8382
|
else
|
|
8343
8383
|
SWIG_exception_fail(SWIG_ValueError, "invalid alpha mode");
|
|
8344
8384
|
}
|
|
@@ -9235,12 +9275,12 @@ SWIGEXPORT void Init_gosu(void) {
|
|
|
9235
9275
|
SWIG_RubyInitializeTrackings();
|
|
9236
9276
|
rb_define_const(mGosu, "MAJOR_VERSION", SWIG_From_int(static_cast< int >(0)));
|
|
9237
9277
|
rb_define_const(mGosu, "MINOR_VERSION", SWIG_From_int(static_cast< int >(7)));
|
|
9238
|
-
rb_define_const(mGosu, "POINT_VERSION", SWIG_From_int(static_cast< int >(
|
|
9239
|
-
rb_define_const(mGosu, "VERSION", SWIG_FromCharPtr("0.7.
|
|
9278
|
+
rb_define_const(mGosu, "POINT_VERSION", SWIG_From_int(static_cast< int >(19)));
|
|
9279
|
+
rb_define_const(mGosu, "VERSION", SWIG_FromCharPtr("0.7.19"));
|
|
9240
9280
|
rb_define_module_function(mGosu, "milliseconds", VALUEFUNC(_wrap_milliseconds), -1);
|
|
9241
9281
|
rb_define_module_function(mGosu, "random", VALUEFUNC(_wrap_random), -1);
|
|
9242
|
-
rb_define_module_function(mGosu, "
|
|
9243
|
-
rb_define_module_function(mGosu, "
|
|
9282
|
+
rb_define_module_function(mGosu, "degrees_to_radians", VALUEFUNC(_wrap_degrees_to_radians), -1);
|
|
9283
|
+
rb_define_module_function(mGosu, "radians_to_degrees", VALUEFUNC(_wrap_radians_to_degrees), -1);
|
|
9244
9284
|
rb_define_module_function(mGosu, "offset_x", VALUEFUNC(_wrap_offset_x), -1);
|
|
9245
9285
|
rb_define_module_function(mGosu, "offset_y", VALUEFUNC(_wrap_offset_y), -1);
|
|
9246
9286
|
rb_define_module_function(mGosu, "angle", VALUEFUNC(_wrap_angle), -1);
|
|
@@ -9250,6 +9290,7 @@ SWIGEXPORT void Init_gosu(void) {
|
|
|
9250
9290
|
rb_define_module_function(mGosu, "default_font_name", VALUEFUNC(_wrap_default_font_name), -1);
|
|
9251
9291
|
rb_define_module_function(mGosu, "screen_width", VALUEFUNC(_wrap_screen_width), -1);
|
|
9252
9292
|
rb_define_module_function(mGosu, "screen_height", VALUEFUNC(_wrap_screen_height), -1);
|
|
9293
|
+
rb_define_module_function(mGosu, "enable_undocumented_retrofication", VALUEFUNC(_wrap_enable_undocumented_retrofication), -1);
|
|
9253
9294
|
rb_define_module_function(mGosu, "__max_texture_size", VALUEFUNC(_wrap___max_texture_size), -1);
|
|
9254
9295
|
|
|
9255
9296
|
SwigClassColor.klass = rb_define_class_under(mGosu, "Color", rb_cObject);
|
|
@@ -9512,17 +9553,6 @@ SWIGEXPORT void Init_gosu(void) {
|
|
|
9512
9553
|
rb_define_const(mGosu, "NumButtons", SWIG_From_int(static_cast< int >(Gosu::numButtons)));
|
|
9513
9554
|
rb_define_const(mGosu, "NoButton", SWIG_From_int(static_cast< int >(Gosu::noButton)));
|
|
9514
9555
|
|
|
9515
|
-
// ARGH, SWIG workaround...
|
|
9516
|
-
// It doesn't understand the C++ overloading otherwise.
|
|
9517
|
-
rb_eval_string("class Gosu::Image; def self.from_text(*args); args.size == 4 ? from_text4(*args) : from_text7(*args); end; end");
|
|
9518
|
-
|
|
9519
|
-
// ARGH, SWIG workaround 2..
|
|
9520
|
-
// It won't let me have a class method and method with the same name.
|
|
9521
|
-
rb_eval_string("class Gosu::Window; def button_id_to_char(id); self.class.button_id_to_char(id); end; def char_to_button_id(ch); self.class.char_to_button_id(ch); end; end");
|
|
9522
|
-
|
|
9523
|
-
// ARGH, Linux workaround: instead of declaring a constant, we declare a hidden function and call it when we need to define the constant.
|
|
9524
|
-
rb_eval_string("module Gosu;def self.const_missing sym;if sym == :MAX_TEXTURE_SIZE then;const_set sym, __max_texture_size;else;super;end;end;end");
|
|
9525
|
-
|
|
9526
9556
|
GosusDarkSide::oncePerTick = GosusDarkSide::yieldToOtherRubyThreads;
|
|
9527
9557
|
|
|
9528
9558
|
rb_define_module_function(mGosu, "disown_TextInput", VALUEFUNC(_wrap_disown_TextInput), -1);
|