gosu 0.7.33 → 0.7.35
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/Gosu/Async.hpp +10 -8
- data/Gosu/Audio.hpp +6 -4
- data/Gosu/AutoLink.hpp +0 -0
- data/Gosu/Bitmap.hpp +4 -5
- data/Gosu/ButtonsX.hpp +1 -1
- data/Gosu/Color.hpp +8 -8
- data/Gosu/Font.hpp +2 -2
- data/Gosu/Graphics.hpp +4 -6
- data/Gosu/IO.hpp +11 -4
- data/Gosu/Image.hpp +9 -7
- data/Gosu/ImageData.hpp +10 -4
- data/Gosu/Input.hpp +4 -5
- data/Gosu/Sockets.hpp +10 -12
- data/Gosu/TR1.hpp +44 -0
- data/Gosu/TextInput.hpp +2 -2
- data/Gosu/Version.hpp +2 -2
- data/Gosu/WinUtility.hpp +5 -6
- data/Gosu/Window.hpp +5 -6
- data/GosuImpl/Async.cpp +4 -3
- data/GosuImpl/Audio/ALChannelManagement.hpp +23 -11
- data/GosuImpl/Audio/AudioFile.hpp +11 -3
- data/GosuImpl/Audio/AudioOpenAL.cpp +613 -0
- data/GosuImpl/Audio/AudioOpenAL.mm +1 -605
- data/GosuImpl/Audio/AudioSDL.cpp +12 -14
- data/GosuImpl/Audio/AudioToolboxFile.hpp +0 -1
- data/GosuImpl/Audio/OggFile.hpp +2 -0
- data/GosuImpl/Audio/SndFile.hpp +158 -0
- data/GosuImpl/DirectoriesWin.cpp +18 -18
- data/GosuImpl/Graphics/BitmapApple.mm +17 -19
- data/GosuImpl/Graphics/BitmapBMP.cpp +7 -2
- data/GosuImpl/Graphics/BitmapFreeImage.cpp +11 -12
- data/GosuImpl/Graphics/BitmapGDIplus.cpp +35 -31
- data/GosuImpl/Graphics/BitmapUtils.cpp +1 -1
- data/GosuImpl/Graphics/BlockAllocator.cpp +7 -8
- data/GosuImpl/Graphics/BlockAllocator.hpp +3 -4
- data/GosuImpl/Graphics/Common.hpp +3 -2
- data/GosuImpl/Graphics/DrawOp.hpp +2 -3
- data/GosuImpl/Graphics/DrawOpQueue.hpp +28 -20
- data/GosuImpl/Graphics/Font.cpp +13 -13
- data/GosuImpl/Graphics/FormattedString.hpp +93 -86
- data/GosuImpl/Graphics/Graphics.cpp +16 -14
- data/GosuImpl/Graphics/Image.cpp +7 -3
- data/GosuImpl/Graphics/LargeImageData.hpp +4 -5
- data/GosuImpl/Graphics/Macro.hpp +11 -11
- data/GosuImpl/Graphics/RenderState.hpp +5 -4
- data/GosuImpl/Graphics/TexChunk.cpp +3 -3
- data/GosuImpl/Graphics/TexChunk.hpp +4 -4
- data/GosuImpl/Graphics/Text.cpp +29 -30
- data/GosuImpl/Graphics/TextMac.cpp +9 -7
- data/GosuImpl/Graphics/TextTTFWin.cpp +3 -1
- data/GosuImpl/Graphics/TextTouch.mm +0 -1
- data/GosuImpl/Graphics/TextUnix.cpp +12 -4
- data/GosuImpl/Graphics/TextWin.cpp +4 -2
- data/GosuImpl/Graphics/Texture.cpp +7 -6
- data/GosuImpl/Graphics/Texture.hpp +3 -4
- data/GosuImpl/InputMac.mm +12 -15
- data/GosuImpl/InputTouch.mm +3 -3
- data/GosuImpl/InputWin.cpp +149 -159
- data/GosuImpl/InputX.cpp +0 -0
- data/GosuImpl/MacUtility.hpp +9 -4
- data/GosuImpl/RubyGosu.swg +38 -43
- data/GosuImpl/RubyGosu_wrap.cxx +89 -96
- data/GosuImpl/Sockets/CommSocket.cpp +5 -5
- data/GosuImpl/Sockets/Sockets.hpp +4 -4
- data/GosuImpl/TimingApple.cpp +2 -3
- data/GosuImpl/Utility.cpp +18 -0
- data/GosuImpl/WinMain.cpp +0 -1
- data/GosuImpl/WinUtility.cpp +2 -2
- data/GosuImpl/WindowMac.mm +20 -17
- data/GosuImpl/WindowTouch.mm +8 -7
- data/GosuImpl/WindowWin.cpp +12 -7
- data/GosuImpl/WindowX.cpp +67 -18
- data/lib/gosu.rb +14 -12
- data/linux/extconf.rb +11 -6
- metadata +8 -7
- data/GosuImpl/Audio/AudioAudiere.cpp +0 -448
- data/GosuImpl/RubyGosu_DllMain.cxx +0 -31
    
        data/GosuImpl/InputX.cpp
    CHANGED
    
    | 
            File without changes
         | 
    
        data/GosuImpl/MacUtility.hpp
    CHANGED
    
    | @@ -45,12 +45,14 @@ namespace Gosu | |
| 45 45 | 
             
            #ifdef __OBJC__
         | 
| 46 46 | 
             
            #import <objc/objc.h>
         | 
| 47 47 | 
             
            #import <stdexcept>
         | 
| 48 | 
            -
            #import <boost/utility.hpp>
         | 
| 49 48 | 
             
            namespace Gosu
         | 
| 50 49 | 
             
            {
         | 
| 51 50 | 
             
                template<typename T>
         | 
| 52 | 
            -
                class ObjRef | 
| 51 | 
            +
                class ObjRef
         | 
| 53 52 | 
             
                {
         | 
| 53 | 
            +
                    ObjRef(const ObjRef&);
         | 
| 54 | 
            +
                    ObjRef& operator=(const ObjRef&);
         | 
| 55 | 
            +
                    
         | 
| 54 56 | 
             
                    T* ptr;
         | 
| 55 57 | 
             
                public:
         | 
| 56 58 | 
             
                    ObjRef(T* ptr = nil)
         | 
| @@ -89,10 +91,13 @@ namespace Gosu | |
| 89 91 | 
             
            namespace Gosu
         | 
| 90 92 | 
             
            {
         | 
| 91 93 | 
             
                template<typename CFRefType = CFTypeRef>
         | 
| 92 | 
            -
                class CFRef | 
| 94 | 
            +
                class CFRef
         | 
| 93 95 | 
             
                {
         | 
| 96 | 
            +
                    CFRef(const CFRef&);
         | 
| 97 | 
            +
                    CFRef& operator=(const CFRef&);
         | 
| 98 | 
            +
                    
         | 
| 94 99 | 
             
                    CFRefType ref;
         | 
| 95 | 
            -
             | 
| 100 | 
            +
                    
         | 
| 96 101 | 
             
                public:
         | 
| 97 102 | 
             
                    CFRef(CFRefType ref)
         | 
| 98 103 | 
             
                    :   ref(ref)
         | 
    
        data/GosuImpl/RubyGosu.swg
    CHANGED
    
    | @@ -18,8 +18,8 @@ | |
| 18 18 | 
             
            %feature("director") Gosu::TextInput;
         | 
| 19 19 |  | 
| 20 20 | 
             
            // Resolve typedefs that SWIG doesn't recognize.
         | 
| 21 | 
            -
            %apply unsigned char {  | 
| 22 | 
            -
            %apply unsigned long {  | 
| 21 | 
            +
            %apply unsigned char { std::tr1::uint8_t };
         | 
| 22 | 
            +
            %apply unsigned long { std::tr1::uint32_t };
         | 
| 23 23 |  | 
| 24 24 | 
             
            // Custom typemaps for wchar/wstring.
         | 
| 25 25 | 
             
            #pragma SWIG nowarn=-490,-319
         | 
| @@ -128,18 +128,6 @@ | |
| 128 128 | 
             
                }
         | 
| 129 129 | 
             
            }
         | 
| 130 130 |  | 
| 131 | 
            -
            // Allow integral constants to be passed in place of Color values.
         | 
| 132 | 
            -
            %typemap(in) boost::optional<Gosu::Color> {    
         | 
| 133 | 
            -
                if (TYPE($input) == T_FIXNUM || TYPE($input) == T_BIGNUM)
         | 
| 134 | 
            -
                    $1 = Gosu::Color(NUM2UINT($input));
         | 
| 135 | 
            -
                else {
         | 
| 136 | 
            -
                    void* ptr;
         | 
| 137 | 
            -
                    int res = SWIG_ConvertPtr($input, &ptr, SWIGTYPE_p_Gosu__Color, 0);
         | 
| 138 | 
            -
                    if (SWIG_IsOK(res) && ptr)
         | 
| 139 | 
            -
                        $1 = *reinterpret_cast<Gosu::Color*>(ptr);
         | 
| 140 | 
            -
                }
         | 
| 141 | 
            -
            }
         | 
| 142 | 
            -
             | 
| 143 131 | 
             
            // Header inclusion (order irrelevant)
         | 
| 144 132 | 
             
            %module(directors="1") gosu
         | 
| 145 133 | 
             
            %{
         | 
| @@ -184,16 +172,16 @@ | |
| 184 172 | 
             
            #ifdef GOSU_IS_WIN
         | 
| 185 173 | 
             
            #include <FreeImage.h>
         | 
| 186 174 | 
             
            #endif
         | 
| 175 | 
            +
            #include <Gosu/TR1.hpp>
         | 
| 187 176 |  | 
| 188 177 | 
             
            namespace Gosu {
         | 
| 189 178 | 
             
                void enableUndocumentedRetrofication() { extern bool undocumentedRetrofication; undocumentedRetrofication = true; }
         | 
| 190 179 | 
             
                void register_entity(const std::wstring& name, Gosu::Image* image) { registerEntity(name, image->getData().toBitmap()); }
         | 
| 191 180 | 
             
            }
         | 
| 192 181 |  | 
| 182 | 
            +
            #include <cstring>
         | 
| 193 183 | 
             
            #include <ctime>
         | 
| 194 184 | 
             
            #include <sstream>
         | 
| 195 | 
            -
            #include <boost/algorithm/string.hpp>
         | 
| 196 | 
            -
            #include <boost/bind.hpp>
         | 
| 197 185 |  | 
| 198 186 | 
             
            // Preprocessor check for 1.9 (thanks banister)
         | 
| 199 187 | 
             
            #if defined(ROBJECT_EMBED_LEN_MAX)
         | 
| @@ -249,9 +237,9 @@ namespace Gosu | |
| 249 237 | 
             
                    #undef VcppException
         | 
| 250 238 | 
             
                    #undef FACILITY_VISUALCPP
         | 
| 251 239 | 
             
                }
         | 
| 252 | 
            -
             | 
| 240 | 
            +
                void loadImageFile_FreeImage(Bitmap& result, const std::wstring& filename);
         | 
| 253 241 | 
             
                #endif
         | 
| 254 | 
            -
                 | 
| 242 | 
            +
                void loadBitmap(Bitmap& bitmap, VALUE val)
         | 
| 255 243 | 
             
                {
         | 
| 256 244 | 
             
                    // Try to treat as filename first.
         | 
| 257 245 | 
             
                    if (rb_respond_to(val, rb_intern("to_str")))
         | 
| @@ -260,11 +248,13 @@ namespace Gosu | |
| 260 248 | 
             
                        const char* filenameUTF8 = StringValuePtr(to_str);
         | 
| 261 249 | 
             
                        std::wstring filename = Gosu::utf8ToWstring(filenameUTF8);
         | 
| 262 250 | 
             
                        try {
         | 
| 263 | 
            -
             | 
| 251 | 
            +
                            loadImageFile(bitmap, filename);
         | 
| 252 | 
            +
                            return;
         | 
| 264 253 | 
             
            	        } catch (const std::exception&) {
         | 
| 265 254 | 
             
                        #ifdef GOSU_IS_WIN
         | 
| 266 255 | 
             
                            ping_FreeImage();
         | 
| 267 | 
            -
             | 
| 256 | 
            +
                            loadImageFile_FreeImage(bitmap, filename);
         | 
| 257 | 
            +
                            return;
         | 
| 268 258 | 
             
            	        #else
         | 
| 269 259 | 
             
            				throw;
         | 
| 270 260 | 
             
            			#endif
         | 
| @@ -278,24 +268,23 @@ namespace Gosu | |
| 278 268 | 
             
                    unsigned width = NUM2UINT(rb_funcall(val, rb_intern("columns"), 0));
         | 
| 279 269 | 
             
                    unsigned height = NUM2UINT(rb_funcall(val, rb_intern("rows"), 0));
         | 
| 280 270 |  | 
| 281 | 
            -
                     | 
| 271 | 
            +
                    bitmap.resize(width, height, Gosu::Color::NONE);
         | 
| 282 272 | 
             
                    if (width * height * 4 == RSTRING_LEN(blob))
         | 
| 283 273 | 
             
                    {
         | 
| 284 274 | 
             
                        // 32 bit per pixel, assume R8G8B8A8
         | 
| 285 | 
            -
                        std::memcpy( | 
| 286 | 
            -
                            reinterpret_cast<const  | 
| 275 | 
            +
                        std::memcpy(bitmap.data(),
         | 
| 276 | 
            +
                            reinterpret_cast<const unsigned*>(RSTRING_PTR(blob)), width * height * 4);
         | 
| 287 277 | 
             
                    }
         | 
| 288 278 | 
             
                    else if (width * height * 4 * sizeof(float) == RSTRING_LEN(blob))
         | 
| 289 279 | 
             
                    {
         | 
| 290 280 | 
             
                        // 32 bit per channel, assume float/float/float/float
         | 
| 291 281 | 
             
                        const float* in = reinterpret_cast<const float*>(RSTRING_PTR(blob));
         | 
| 292 | 
            -
                        Gosu::Color::Channel* out = reinterpret_cast<Gosu::Color::Channel*>( | 
| 282 | 
            +
                        Gosu::Color::Channel* out = reinterpret_cast<Gosu::Color::Channel*>(bitmap.data());
         | 
| 293 283 | 
             
                        for (int i = width * height * 4; i > 0; --i)
         | 
| 294 284 | 
             
                            *(out++) = *(in++) * 255;
         | 
| 295 285 | 
             
                    }
         | 
| 296 286 | 
             
                    else
         | 
| 297 287 | 
             
                        throw std::logic_error("Blob length mismatch!");
         | 
| 298 | 
            -
                    return result;
         | 
| 299 288 | 
             
                }
         | 
| 300 289 |  | 
| 301 290 | 
             
                const char* cstrFromSymbol(VALUE symbol) {
         | 
| @@ -402,7 +391,7 @@ namespace Gosu { | |
| 402 391 | 
             
                    return Gosu::Color(a, r, g, b);
         | 
| 403 392 | 
             
                }
         | 
| 404 393 |  | 
| 405 | 
            -
                static Gosu::Color rgba( | 
| 394 | 
            +
                static Gosu::Color rgba(std::tr1::uint32_t rgba)
         | 
| 406 395 | 
             
                {
         | 
| 407 396 | 
             
                    return Gosu::Color(rgba & 0xff, (rgba >> 24) & 0xff,
         | 
| 408 397 | 
             
                        (rgba >> 16) & 0xff, (rgba >> 8) & 0xff);
         | 
| @@ -414,9 +403,9 @@ namespace Gosu { | |
| 414 403 | 
             
                    return Gosu::Color(a, r, g, b);
         | 
| 415 404 | 
             
                }
         | 
| 416 405 |  | 
| 417 | 
            -
                static Gosu::Color argb( | 
| 406 | 
            +
                static Gosu::Color argb(std::tr1::uint32_t argb)
         | 
| 418 407 | 
             
                {
         | 
| 419 | 
            -
                    return argb;
         | 
| 408 | 
            +
                    return Gosu::Color(argb);
         | 
| 420 409 | 
             
                }
         | 
| 421 410 |  | 
| 422 411 | 
             
                Gosu::Color dup() const {
         | 
| @@ -432,8 +421,12 @@ namespace Gosu { | |
| 432 421 | 
             
                    return stream.str();
         | 
| 433 422 | 
             
                }
         | 
| 434 423 |  | 
| 435 | 
            -
                bool operator==( | 
| 436 | 
            -
                     | 
| 424 | 
            +
                bool operator==(VALUE other) {
         | 
| 425 | 
            +
                    if (TYPE(other) == T_FIXNUM || TYPE(other) == T_BIGNUM)
         | 
| 426 | 
            +
                        return *$self == Gosu::Color(NUM2UINT(other));
         | 
| 427 | 
            +
                    void* ptr;
         | 
| 428 | 
            +
                    int res = SWIG_ConvertPtr(other, &ptr, SWIGTYPE_p_Gosu__Color, 0);
         | 
| 429 | 
            +
                    return SWIG_IsOK(res) && ptr && *$self == *reinterpret_cast<Gosu::Color*>(ptr);
         | 
| 437 430 | 
             
                }
         | 
| 438 431 | 
             
            }
         | 
| 439 432 |  | 
| @@ -489,11 +482,15 @@ namespace Gosu { | |
| 489 482 | 
             
            %include "../Gosu/Image.hpp"
         | 
| 490 483 | 
             
            %extend Gosu::Image {
         | 
| 491 484 | 
             
                Image(Gosu::Window& window, VALUE source, bool tileable = false) {
         | 
| 492 | 
            -
                     | 
| 485 | 
            +
                    Gosu::Bitmap bmp;
         | 
| 486 | 
            +
                    Gosu::loadBitmap(bmp, source);
         | 
| 487 | 
            +
                    return new Gosu::Image(window.graphics(), bmp, tileable);
         | 
| 493 488 | 
             
                }
         | 
| 494 489 | 
             
                Image(Gosu::Window& window, VALUE source, bool tileable,
         | 
| 495 490 | 
             
                      unsigned srcX, unsigned srcY, unsigned srcWidth, unsigned srcHeight) {
         | 
| 496 | 
            -
                     | 
| 491 | 
            +
                    Gosu::Bitmap bmp;
         | 
| 492 | 
            +
                    Gosu::loadBitmap(bmp, source);
         | 
| 493 | 
            +
                    return new Gosu::Image(window.graphics(), bmp,
         | 
| 497 494 | 
             
                        srcX, srcY, srcWidth, srcHeight, tileable);
         | 
| 498 495 | 
             
                }
         | 
| 499 496 | 
             
                #ifndef WIN32
         | 
| @@ -511,7 +508,7 @@ namespace Gosu { | |
| 511 508 | 
             
                }
         | 
| 512 509 | 
             
                %newobject glTexInfo;
         | 
| 513 510 | 
             
                Gosu::GLTexInfo* glTexInfo() const {
         | 
| 514 | 
            -
                     | 
| 511 | 
            +
                    const Gosu::GLTexInfo* info = $self->getData().glTexInfo();
         | 
| 515 512 | 
             
                    if (info)
         | 
| 516 513 | 
             
                        return new Gosu::GLTexInfo(*info);
         | 
| 517 514 | 
             
                    else
         | 
| @@ -537,7 +534,9 @@ namespace Gosu { | |
| 537 534 | 
             
                {
         | 
| 538 535 | 
             
                    std::vector<Gosu::Image*> vec;
         | 
| 539 536 | 
             
                    // TODO: const correctness (<- did I mean exception safety?)
         | 
| 540 | 
            -
                    Gosu:: | 
| 537 | 
            +
                    Gosu::Bitmap bmp;
         | 
| 538 | 
            +
                    Gosu::loadBitmap(bmp, source);
         | 
| 539 | 
            +
                    Gosu::imagesFromTiledBitmap(window.graphics(), bmp,
         | 
| 541 540 | 
             
                        tileWidth, tileHeight, tileable, vec);
         | 
| 542 541 | 
             
                    return vec;        
         | 
| 543 542 | 
             
                }
         | 
| @@ -558,17 +557,13 @@ namespace Gosu { | |
| 558 557 | 
             
                }
         | 
| 559 558 | 
             
                void save(const std::wstring& filename) const
         | 
| 560 559 | 
             
                {
         | 
| 561 | 
            -
                    Gosu:: | 
| 562 | 
            -
                    Gosu::Buffer buf;
         | 
| 563 | 
            -
                    if (boost::iends_with(filename, L".bmp"))
         | 
| 564 | 
            -
                        Gosu::saveToBMP(bmp, buf.backWriter());
         | 
| 565 | 
            -
                    else
         | 
| 566 | 
            -
                        Gosu::saveToPNG(bmp, buf.backWriter());
         | 
| 567 | 
            -
                    Gosu::saveFile(buf, filename);
         | 
| 560 | 
            +
                    Gosu::saveImageFile($self->getData().toBitmap(), filename);
         | 
| 568 561 | 
             
                }
         | 
| 569 562 | 
             
                void insert(VALUE source, int x, int y)
         | 
| 570 563 | 
             
                {
         | 
| 571 | 
            -
                     | 
| 564 | 
            +
                    Gosu::Bitmap bmp;
         | 
| 565 | 
            +
                    Gosu::loadBitmap(bmp, source);
         | 
| 566 | 
            +
                    $self->getData().insert(bmp, x, y);
         | 
| 572 567 | 
             
                }
         | 
| 573 568 | 
             
            }
         | 
| 574 569 |  | 
| @@ -722,7 +717,7 @@ namespace Gosu { | |
| 722 717 | 
             
                    $self->graphics().endGL();
         | 
| 723 718 | 
             
                }
         | 
| 724 719 | 
             
                void gl(Gosu::ZPos z) {
         | 
| 725 | 
            -
                    $self->graphics().scheduleGL( | 
| 720 | 
            +
                    $self->graphics().scheduleGL(std::tr1::bind(callRubyBlock, rb_block_proc()), z);
         | 
| 726 721 | 
             
                }
         | 
| 727 722 | 
             
                void clipTo(double x, double y, double width, double height) {
         | 
| 728 723 | 
             
                    $self->graphics().beginClipping(x, y, width, height);
         | 
    
        data/GosuImpl/RubyGosu_wrap.cxx
    CHANGED
    
    | @@ -2171,13 +2171,12 @@ namespace Swig { | |
| 2171 2171 | 
             
            #define SWIGTYPE_p_Gosu__Song swig_types[9]
         | 
| 2172 2172 | 
             
            #define SWIGTYPE_p_Gosu__TextInput swig_types[10]
         | 
| 2173 2173 | 
             
            #define SWIGTYPE_p_Gosu__Window swig_types[11]
         | 
| 2174 | 
            -
            #define  | 
| 2175 | 
            -
            #define  | 
| 2176 | 
            -
            #define  | 
| 2177 | 
            -
            #define  | 
| 2178 | 
            -
             | 
| 2179 | 
            -
            static  | 
| 2180 | 
            -
            static swig_module_info swig_module = {swig_types, 17, 0, 0, 0, 0};
         | 
| 2174 | 
            +
            #define SWIGTYPE_p_char swig_types[12]
         | 
| 2175 | 
            +
            #define SWIGTYPE_p_double swig_types[13]
         | 
| 2176 | 
            +
            #define SWIGTYPE_p_std__tr1__arrayT_double_16_t swig_types[14]
         | 
| 2177 | 
            +
            #define SWIGTYPE_p_std__wstring swig_types[15]
         | 
| 2178 | 
            +
            static swig_type_info *swig_types[17];
         | 
| 2179 | 
            +
            static swig_module_info swig_module = {swig_types, 16, 0, 0, 0, 0};
         | 
| 2181 2180 | 
             
            #define SWIG_TypeQuery(name) SWIG_TypeQueryModule(&swig_module, &swig_module, name)
         | 
| 2182 2181 | 
             
            #define SWIG_MangledTypeQuery(name) SWIG_MangledTypeQueryModule(&swig_module, &swig_module, name)
         | 
| 2183 2182 |  | 
| @@ -2244,16 +2243,16 @@ static VALUE mGosu; | |
| 2244 2243 | 
             
            #ifdef GOSU_IS_WIN
         | 
| 2245 2244 | 
             
            #include <FreeImage.h>
         | 
| 2246 2245 | 
             
            #endif
         | 
| 2246 | 
            +
            #include <Gosu/TR1.hpp>
         | 
| 2247 2247 |  | 
| 2248 2248 | 
             
            namespace Gosu {
         | 
| 2249 2249 | 
             
                void enableUndocumentedRetrofication() { extern bool undocumentedRetrofication; undocumentedRetrofication = true; }
         | 
| 2250 2250 | 
             
                void register_entity(const std::wstring& name, Gosu::Image* image) { registerEntity(name, image->getData().toBitmap()); }
         | 
| 2251 2251 | 
             
            }
         | 
| 2252 2252 |  | 
| 2253 | 
            +
            #include <cstring>
         | 
| 2253 2254 | 
             
            #include <ctime>
         | 
| 2254 2255 | 
             
            #include <sstream>
         | 
| 2255 | 
            -
            #include <boost/algorithm/string.hpp>
         | 
| 2256 | 
            -
            #include <boost/bind.hpp>
         | 
| 2257 2256 |  | 
| 2258 2257 | 
             
            // Preprocessor check for 1.9 (thanks banister)
         | 
| 2259 2258 | 
             
            #if defined(ROBJECT_EMBED_LEN_MAX)
         | 
| @@ -2309,9 +2308,9 @@ namespace Gosu | |
| 2309 2308 | 
             
                    #undef VcppException
         | 
| 2310 2309 | 
             
                    #undef FACILITY_VISUALCPP
         | 
| 2311 2310 | 
             
                }
         | 
| 2312 | 
            -
             | 
| 2311 | 
            +
                void loadImageFile_FreeImage(Bitmap& result, const std::wstring& filename);
         | 
| 2313 2312 | 
             
                #endif
         | 
| 2314 | 
            -
                 | 
| 2313 | 
            +
                void loadBitmap(Bitmap& bitmap, VALUE val)
         | 
| 2315 2314 | 
             
                {
         | 
| 2316 2315 | 
             
                    // Try to treat as filename first.
         | 
| 2317 2316 | 
             
                    if (rb_respond_to(val, rb_intern("to_str")))
         | 
| @@ -2320,11 +2319,13 @@ namespace Gosu | |
| 2320 2319 | 
             
                        const char* filenameUTF8 = StringValuePtr(to_str);
         | 
| 2321 2320 | 
             
                        std::wstring filename = Gosu::utf8ToWstring(filenameUTF8);
         | 
| 2322 2321 | 
             
                        try {
         | 
| 2323 | 
            -
             | 
| 2322 | 
            +
                            loadImageFile(bitmap, filename);
         | 
| 2323 | 
            +
                            return;
         | 
| 2324 2324 | 
             
            	        } catch (const std::exception&) {
         | 
| 2325 2325 | 
             
                        #ifdef GOSU_IS_WIN
         | 
| 2326 2326 | 
             
                            ping_FreeImage();
         | 
| 2327 | 
            -
             | 
| 2327 | 
            +
                            loadImageFile_FreeImage(bitmap, filename);
         | 
| 2328 | 
            +
                            return;
         | 
| 2328 2329 | 
             
            	        #else
         | 
| 2329 2330 | 
             
            				throw;
         | 
| 2330 2331 | 
             
            			#endif
         | 
| @@ -2338,24 +2339,23 @@ namespace Gosu | |
| 2338 2339 | 
             
                    unsigned width = NUM2UINT(rb_funcall(val, rb_intern("columns"), 0));
         | 
| 2339 2340 | 
             
                    unsigned height = NUM2UINT(rb_funcall(val, rb_intern("rows"), 0));
         | 
| 2340 2341 |  | 
| 2341 | 
            -
                     | 
| 2342 | 
            +
                    bitmap.resize(width, height, Gosu::Color::NONE);
         | 
| 2342 2343 | 
             
                    if (width * height * 4 == RSTRING_LEN(blob))
         | 
| 2343 2344 | 
             
                    {
         | 
| 2344 2345 | 
             
                        // 32 bit per pixel, assume R8G8B8A8
         | 
| 2345 | 
            -
                        std::memcpy( | 
| 2346 | 
            -
                            reinterpret_cast<const  | 
| 2346 | 
            +
                        std::memcpy(bitmap.data(),
         | 
| 2347 | 
            +
                            reinterpret_cast<const unsigned*>(RSTRING_PTR(blob)), width * height * 4);
         | 
| 2347 2348 | 
             
                    }
         | 
| 2348 2349 | 
             
                    else if (width * height * 4 * sizeof(float) == RSTRING_LEN(blob))
         | 
| 2349 2350 | 
             
                    {
         | 
| 2350 2351 | 
             
                        // 32 bit per channel, assume float/float/float/float
         | 
| 2351 2352 | 
             
                        const float* in = reinterpret_cast<const float*>(RSTRING_PTR(blob));
         | 
| 2352 | 
            -
                        Gosu::Color::Channel* out = reinterpret_cast<Gosu::Color::Channel*>( | 
| 2353 | 
            +
                        Gosu::Color::Channel* out = reinterpret_cast<Gosu::Color::Channel*>(bitmap.data());
         | 
| 2353 2354 | 
             
                        for (int i = width * height * 4; i > 0; --i)
         | 
| 2354 2355 | 
             
                            *(out++) = *(in++) * 255;
         | 
| 2355 2356 | 
             
                    }
         | 
| 2356 2357 | 
             
                    else
         | 
| 2357 2358 | 
             
                        throw std::logic_error("Blob length mismatch!");
         | 
| 2358 | 
            -
                    return result;
         | 
| 2359 2359 | 
             
                }
         | 
| 2360 2360 |  | 
| 2361 2361 | 
             
                const char* cstrFromSymbol(VALUE symbol) {
         | 
| @@ -2508,6 +2508,22 @@ SWIG_AsVal_unsigned_SS_long (VALUE obj, unsigned long *val) | |
| 2508 2508 | 
             
            }
         | 
| 2509 2509 |  | 
| 2510 2510 |  | 
| 2511 | 
            +
            SWIGINTERN int
         | 
| 2512 | 
            +
            SWIG_AsVal_unsigned_SS_int (VALUE obj, unsigned int *val)
         | 
| 2513 | 
            +
            {
         | 
| 2514 | 
            +
              unsigned long v;
         | 
| 2515 | 
            +
              int res = SWIG_AsVal_unsigned_SS_long (obj, &v);
         | 
| 2516 | 
            +
              if (SWIG_IsOK(res)) {
         | 
| 2517 | 
            +
                if ((v > UINT_MAX)) {
         | 
| 2518 | 
            +
                  return SWIG_OverflowError;
         | 
| 2519 | 
            +
                } else {
         | 
| 2520 | 
            +
                  if (val) *val = static_cast< unsigned int >(v);
         | 
| 2521 | 
            +
                }
         | 
| 2522 | 
            +
              }  
         | 
| 2523 | 
            +
              return res;
         | 
| 2524 | 
            +
            }
         | 
| 2525 | 
            +
             | 
| 2526 | 
            +
             | 
| 2511 2527 | 
             
            SWIGINTERN int
         | 
| 2512 2528 | 
             
            SWIG_AsVal_unsigned_SS_char (VALUE obj, unsigned char *val)
         | 
| 2513 2529 | 
             
            {
         | 
| @@ -2536,15 +2552,15 @@ SWIGINTERN Gosu::Color Gosu_Color_rgb(Gosu::Color::Channel r,Gosu::Color::Channe | |
| 2536 2552 | 
             
            SWIGINTERN Gosu::Color Gosu_Color_rgba__SWIG_0(Gosu::Color::Channel r,Gosu::Color::Channel g,Gosu::Color::Channel b,Gosu::Color::Channel a){
         | 
| 2537 2553 | 
             
                    return Gosu::Color(a, r, g, b);
         | 
| 2538 2554 | 
             
                }
         | 
| 2539 | 
            -
            SWIGINTERN Gosu::Color Gosu_Color_rgba__SWIG_1( | 
| 2555 | 
            +
            SWIGINTERN Gosu::Color Gosu_Color_rgba__SWIG_1(std::tr1::uint32_t rgba){
         | 
| 2540 2556 | 
             
                    return Gosu::Color(rgba & 0xff, (rgba >> 24) & 0xff,
         | 
| 2541 2557 | 
             
                        (rgba >> 16) & 0xff, (rgba >> 8) & 0xff);
         | 
| 2542 2558 | 
             
                }
         | 
| 2543 2559 | 
             
            SWIGINTERN Gosu::Color Gosu_Color_argb__SWIG_1(Gosu::Color::Channel a,Gosu::Color::Channel r,Gosu::Color::Channel g,Gosu::Color::Channel b){
         | 
| 2544 2560 | 
             
                    return Gosu::Color(a, r, g, b);
         | 
| 2545 2561 | 
             
                }
         | 
| 2546 | 
            -
            SWIGINTERN Gosu::Color Gosu_Color_argb__SWIG_2( | 
| 2547 | 
            -
                    return argb;
         | 
| 2562 | 
            +
            SWIGINTERN Gosu::Color Gosu_Color_argb__SWIG_2(std::tr1::uint32_t argb){
         | 
| 2563 | 
            +
                    return Gosu::Color(argb);
         | 
| 2548 2564 | 
             
                }
         | 
| 2549 2565 | 
             
            SWIGINTERN Gosu::Color Gosu_Color_dup(Gosu::Color const *self){
         | 
| 2550 2566 | 
             
                    return *self;
         | 
| @@ -2564,8 +2580,12 @@ SWIG_From_std_string  (const std::string& s) | |
| 2564 2580 | 
             
              return SWIG_FromCharPtrAndSize(s.data(), s.size());
         | 
| 2565 2581 | 
             
            }
         | 
| 2566 2582 |  | 
| 2567 | 
            -
            SWIGINTERN bool Gosu_Color_operator_Se__Se_(Gosu::Color *self, | 
| 2568 | 
            -
                     | 
| 2583 | 
            +
            SWIGINTERN bool Gosu_Color_operator_Se__Se_(Gosu::Color *self,VALUE other){
         | 
| 2584 | 
            +
                    if (TYPE(other) == T_FIXNUM || TYPE(other) == T_BIGNUM)
         | 
| 2585 | 
            +
                        return *self == Gosu::Color(NUM2UINT(other));
         | 
| 2586 | 
            +
                    void* ptr;
         | 
| 2587 | 
            +
                    int res = SWIG_ConvertPtr(other, &ptr, SWIGTYPE_p_Gosu__Color, 0);
         | 
| 2588 | 
            +
                    return SWIG_IsOK(res) && ptr && *self == *reinterpret_cast<Gosu::Color*>(ptr);
         | 
| 2569 2589 | 
             
                }
         | 
| 2570 2590 |  | 
| 2571 2591 | 
             
            SWIGINTERNINLINE VALUE
         | 
| @@ -2619,22 +2639,6 @@ SWIG_AsVal_int (VALUE obj, int *val) | |
| 2619 2639 | 
             
              return res;
         | 
| 2620 2640 | 
             
            }
         | 
| 2621 2641 |  | 
| 2622 | 
            -
             | 
| 2623 | 
            -
            SWIGINTERN int
         | 
| 2624 | 
            -
            SWIG_AsVal_unsigned_SS_int (VALUE obj, unsigned int *val)
         | 
| 2625 | 
            -
            {
         | 
| 2626 | 
            -
              unsigned long v;
         | 
| 2627 | 
            -
              int res = SWIG_AsVal_unsigned_SS_long (obj, &v);
         | 
| 2628 | 
            -
              if (SWIG_IsOK(res)) {
         | 
| 2629 | 
            -
                if ((v > UINT_MAX)) {
         | 
| 2630 | 
            -
                  return SWIG_OverflowError;
         | 
| 2631 | 
            -
                } else {
         | 
| 2632 | 
            -
                  if (val) *val = static_cast< unsigned int >(v);
         | 
| 2633 | 
            -
                }
         | 
| 2634 | 
            -
              }  
         | 
| 2635 | 
            -
              return res;
         | 
| 2636 | 
            -
            }
         | 
| 2637 | 
            -
             | 
| 2638 2642 | 
             
            SWIGINTERN Gosu::Font *new_Gosu_Font(Gosu::Window &window,std::wstring const &fontName,unsigned int height){
         | 
| 2639 2643 | 
             
                    return new Gosu::Font(window.graphics(), fontName, height);
         | 
| 2640 2644 | 
             
                }
         | 
| @@ -2685,17 +2689,21 @@ SWIG_AsVal_bool (VALUE obj, bool *val) | |
| 2685 2689 | 
             
            }
         | 
| 2686 2690 |  | 
| 2687 2691 | 
             
            SWIGINTERN Gosu::Image *new_Gosu_Image__SWIG_0(Gosu::Window &window,VALUE source,bool tileable=false){
         | 
| 2688 | 
            -
                     | 
| 2692 | 
            +
                    Gosu::Bitmap bmp;
         | 
| 2693 | 
            +
                    Gosu::loadBitmap(bmp, source);
         | 
| 2694 | 
            +
                    return new Gosu::Image(window.graphics(), bmp, tileable);
         | 
| 2689 2695 | 
             
                }
         | 
| 2690 2696 | 
             
            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){
         | 
| 2691 | 
            -
                     | 
| 2697 | 
            +
                    Gosu::Bitmap bmp;
         | 
| 2698 | 
            +
                    Gosu::loadBitmap(bmp, source);
         | 
| 2699 | 
            +
                    return new Gosu::Image(window.graphics(), bmp,
         | 
| 2692 2700 | 
             
                        srcX, srcY, srcWidth, srcHeight, tileable);
         | 
| 2693 2701 | 
             
                }
         | 
| 2694 2702 | 
             
            SWIGINTERN void Gosu_Image_drawAsQuad(Gosu::Image *self,double x1,double y1,Gosu::Color c1,double x2,double y2,Gosu::Color c2,double x3,double y3,Gosu::Color c3,double x4,double y4,Gosu::Color c4,Gosu::ZPos z,Gosu::AlphaMode mode=Gosu::amDefault){
         | 
| 2695 2703 | 
             
                    self->getData().draw(x1, y1, c1, x2, y2, c2, x3, y3, c3, x4, y4, c4, z, mode);
         | 
| 2696 2704 | 
             
                }
         | 
| 2697 2705 | 
             
            SWIGINTERN Gosu::GLTexInfo *Gosu_Image_glTexInfo(Gosu::Image const *self){
         | 
| 2698 | 
            -
                     | 
| 2706 | 
            +
                    const Gosu::GLTexInfo* info = self->getData().glTexInfo();
         | 
| 2699 2707 | 
             
                    if (info)
         | 
| 2700 2708 | 
             
                        return new Gosu::GLTexInfo(*info);
         | 
| 2701 2709 | 
             
                    else
         | 
| @@ -2712,7 +2720,9 @@ SWIGINTERN Gosu::Image *Gosu_Image_fromText7(Gosu::Window &window,std::wstring c | |
| 2712 2720 | 
             
            SWIGINTERN std::vector< Gosu::Image * > Gosu_Image_loadTiles(Gosu::Window &window,VALUE source,int tileWidth,int tileHeight,bool tileable){
         | 
| 2713 2721 | 
             
                    std::vector<Gosu::Image*> vec;
         | 
| 2714 2722 | 
             
                    // TODO: const correctness (<- did I mean exception safety?)
         | 
| 2715 | 
            -
                    Gosu:: | 
| 2723 | 
            +
                    Gosu::Bitmap bmp;
         | 
| 2724 | 
            +
                    Gosu::loadBitmap(bmp, source);
         | 
| 2725 | 
            +
                    Gosu::imagesFromTiledBitmap(window.graphics(), bmp,
         | 
| 2716 2726 | 
             
                        tileWidth, tileHeight, tileable, vec);
         | 
| 2717 2727 | 
             
                    return vec;        
         | 
| 2718 2728 | 
             
                }
         | 
| @@ -2729,16 +2739,12 @@ SWIGINTERN unsigned int Gosu_Image_rows(Gosu::Image const *self){ | |
| 2729 2739 | 
             
                    return self->height();
         | 
| 2730 2740 | 
             
                }
         | 
| 2731 2741 | 
             
            SWIGINTERN void Gosu_Image_save(Gosu::Image const *self,std::wstring const &filename){
         | 
| 2732 | 
            -
                    Gosu:: | 
| 2733 | 
            -
                    Gosu::Buffer buf;
         | 
| 2734 | 
            -
                    if (boost::iends_with(filename, L".bmp"))
         | 
| 2735 | 
            -
                        Gosu::saveToBMP(bmp, buf.backWriter());
         | 
| 2736 | 
            -
                    else
         | 
| 2737 | 
            -
                        Gosu::saveToPNG(bmp, buf.backWriter());
         | 
| 2738 | 
            -
                    Gosu::saveFile(buf, filename);
         | 
| 2742 | 
            +
                    Gosu::saveImageFile(self->getData().toBitmap(), filename);
         | 
| 2739 2743 | 
             
                }
         | 
| 2740 2744 | 
             
            SWIGINTERN void Gosu_Image_insert(Gosu::Image *self,VALUE source,int x,int y){
         | 
| 2741 | 
            -
                     | 
| 2745 | 
            +
                    Gosu::Bitmap bmp;
         | 
| 2746 | 
            +
                    Gosu::loadBitmap(bmp, source);
         | 
| 2747 | 
            +
                    self->getData().insert(bmp, x, y);
         | 
| 2742 2748 | 
             
                }
         | 
| 2743 2749 | 
             
            SWIGINTERN unsigned int Gosu_TextInput_caret_pos(Gosu::TextInput const *self){
         | 
| 2744 2750 | 
             
                    return RUBY_18_19(Gosu::wstringToUTF8(self->text().substr(0, self->caretPos())).size(),
         | 
| @@ -2809,7 +2815,7 @@ SWIGINTERN void Gosu_Window_gl__SWIG_0(Gosu::Window *self){ | |
| 2809 2815 | 
             
                    self->graphics().endGL();
         | 
| 2810 2816 | 
             
                }
         | 
| 2811 2817 | 
             
            SWIGINTERN void Gosu_Window_gl__SWIG_1(Gosu::Window *self,Gosu::ZPos z){
         | 
| 2812 | 
            -
                    self->graphics().scheduleGL( | 
| 2818 | 
            +
                    self->graphics().scheduleGL(std::tr1::bind(callRubyBlock, rb_block_proc()), z);
         | 
| 2813 2819 | 
             
                }
         | 
| 2814 2820 | 
             
            SWIGINTERN void Gosu_Window_clipTo(Gosu::Window *self,double x,double y,double width,double height){
         | 
| 2815 2821 | 
             
                    self->graphics().beginClipping(x, y, width, height);
         | 
| @@ -3479,7 +3485,7 @@ _wrap_translate(int argc, VALUE *argv, VALUE self) { | |
| 3479 3485 | 
             
                  SWIG_exception(SWIG_RuntimeError, e.what());
         | 
| 3480 3486 | 
             
                }
         | 
| 3481 3487 | 
             
              }
         | 
| 3482 | 
            -
              vresult = SWIG_NewPointerObj((new Gosu::Transform(static_cast< const Gosu::Transform& >(result))),  | 
| 3488 | 
            +
              vresult = SWIG_NewPointerObj((new Gosu::Transform(static_cast< const Gosu::Transform& >(result))), SWIGTYPE_p_std__tr1__arrayT_double_16_t, SWIG_POINTER_OWN |  0 );
         | 
| 3483 3489 | 
             
              return vresult;
         | 
| 3484 3490 | 
             
            fail:
         | 
| 3485 3491 | 
             
              return Qnil;
         | 
| @@ -3529,7 +3535,7 @@ _wrap_rotate(int argc, VALUE *argv, VALUE self) { | |
| 3529 3535 | 
             
                  SWIG_exception(SWIG_RuntimeError, e.what());
         | 
| 3530 3536 | 
             
                }
         | 
| 3531 3537 | 
             
              }
         | 
| 3532 | 
            -
              vresult = SWIG_NewPointerObj((new Gosu::Transform(static_cast< const Gosu::Transform& >(result))),  | 
| 3538 | 
            +
              vresult = SWIG_NewPointerObj((new Gosu::Transform(static_cast< const Gosu::Transform& >(result))), SWIGTYPE_p_std__tr1__arrayT_double_16_t, SWIG_POINTER_OWN |  0 );
         | 
| 3533 3539 | 
             
              return vresult;
         | 
| 3534 3540 | 
             
            fail:
         | 
| 3535 3541 | 
             
              return Qnil;
         | 
| @@ -3559,7 +3565,7 @@ _wrap_scale__SWIG_0(int argc, VALUE *argv, VALUE self) { | |
| 3559 3565 | 
             
                  SWIG_exception(SWIG_RuntimeError, e.what());
         | 
| 3560 3566 | 
             
                }
         | 
| 3561 3567 | 
             
              }
         | 
| 3562 | 
            -
              vresult = SWIG_NewPointerObj((new Gosu::Transform(static_cast< const Gosu::Transform& >(result))),  | 
| 3568 | 
            +
              vresult = SWIG_NewPointerObj((new Gosu::Transform(static_cast< const Gosu::Transform& >(result))), SWIGTYPE_p_std__tr1__arrayT_double_16_t, SWIG_POINTER_OWN |  0 );
         | 
| 3563 3569 | 
             
              return vresult;
         | 
| 3564 3570 | 
             
            fail:
         | 
| 3565 3571 | 
             
              return Qnil;
         | 
| @@ -3617,7 +3623,7 @@ _wrap_scale__SWIG_1(int argc, VALUE *argv, VALUE self) { | |
| 3617 3623 | 
             
                  SWIG_exception(SWIG_RuntimeError, e.what());
         | 
| 3618 3624 | 
             
                }
         | 
| 3619 3625 | 
             
              }
         | 
| 3620 | 
            -
              vresult = SWIG_NewPointerObj((new Gosu::Transform(static_cast< const Gosu::Transform& >(result))),  | 
| 3626 | 
            +
              vresult = SWIG_NewPointerObj((new Gosu::Transform(static_cast< const Gosu::Transform& >(result))), SWIGTYPE_p_std__tr1__arrayT_double_16_t, SWIG_POINTER_OWN |  0 );
         | 
| 3621 3627 | 
             
              return vresult;
         | 
| 3622 3628 | 
             
            fail:
         | 
| 3623 3629 | 
             
              return Qnil;
         | 
| @@ -3767,8 +3773,8 @@ fail: | |
| 3767 3773 |  | 
| 3768 3774 | 
             
            SWIGINTERN VALUE
         | 
| 3769 3775 | 
             
            _wrap_new_Color__SWIG_1(int argc, VALUE *argv, VALUE self) {
         | 
| 3770 | 
            -
               | 
| 3771 | 
            -
              unsigned  | 
| 3776 | 
            +
              unsigned int arg1 ;
         | 
| 3777 | 
            +
              unsigned int val1 ;
         | 
| 3772 3778 | 
             
              int ecode1 = 0 ;
         | 
| 3773 3779 | 
             
              const char *classname SWIGUNUSED = "Gosu::Color";
         | 
| 3774 3780 | 
             
              Gosu::Color *result = 0 ;
         | 
| @@ -3776,11 +3782,11 @@ _wrap_new_Color__SWIG_1(int argc, VALUE *argv, VALUE self) { | |
| 3776 3782 | 
             
              if ((argc < 1) || (argc > 1)) {
         | 
| 3777 3783 | 
             
                rb_raise(rb_eArgError, "wrong # of arguments(%d for 1)",argc); SWIG_fail;
         | 
| 3778 3784 | 
             
              }
         | 
| 3779 | 
            -
              ecode1 =  | 
| 3785 | 
            +
              ecode1 = SWIG_AsVal_unsigned_SS_int(argv[0], &val1);
         | 
| 3780 3786 | 
             
              if (!SWIG_IsOK(ecode1)) {
         | 
| 3781 | 
            -
                SWIG_exception_fail(SWIG_ArgError(ecode1), Ruby_Format_TypeError( "", " | 
| 3787 | 
            +
                SWIG_exception_fail(SWIG_ArgError(ecode1), Ruby_Format_TypeError( "", "unsigned int","Gosu::Color", 1, argv[0] ));
         | 
| 3782 3788 | 
             
              } 
         | 
| 3783 | 
            -
              arg1 = static_cast<  | 
| 3789 | 
            +
              arg1 = static_cast< unsigned int >(val1);
         | 
| 3784 3790 | 
             
              {
         | 
| 3785 3791 | 
             
                try {
         | 
| 3786 3792 | 
             
                  result = (Gosu::Color *)new Gosu::Color(arg1);
         | 
| @@ -3931,7 +3937,7 @@ SWIGINTERN VALUE _wrap_new_Color(int nargs, VALUE *args, VALUE self) { | |
| 3931 3937 | 
             
              if (argc == 1) {
         | 
| 3932 3938 | 
             
                int _v;
         | 
| 3933 3939 | 
             
                {
         | 
| 3934 | 
            -
                  int res =  | 
| 3940 | 
            +
                  int res = SWIG_AsVal_unsigned_SS_int(argv[0], NULL);
         | 
| 3935 3941 | 
             
                  _v = SWIG_CheckState(res);
         | 
| 3936 3942 | 
             
                }
         | 
| 3937 3943 | 
             
                if (_v) {
         | 
| @@ -3992,7 +3998,7 @@ SWIGINTERN VALUE _wrap_new_Color(int nargs, VALUE *args, VALUE self) { | |
| 3992 3998 | 
             
            fail:
         | 
| 3993 3999 | 
             
              Ruby_Format_OverloadedError( argc, 4, "Color.new", 
         | 
| 3994 4000 | 
             
                "    Color.new()\n"
         | 
| 3995 | 
            -
                "    Color.new( | 
| 4001 | 
            +
                "    Color.new(unsigned int argb)\n"
         | 
| 3996 4002 | 
             
                "    Color.new(Gosu::Color::Channel red, Gosu::Color::Channel green, Gosu::Color::Channel blue)\n"
         | 
| 3997 4003 | 
             
                "    Color.new(Gosu::Color::Channel alpha, Gosu::Color::Channel red, Gosu::Color::Channel green, Gosu::Color::Channel blue)\n");
         | 
| 3998 4004 |  | 
| @@ -4560,7 +4566,7 @@ _wrap_Color_argb__SWIG_0(int argc, VALUE *argv, VALUE self) { | |
| 4560 4566 | 
             
              Gosu::Color *arg1 = (Gosu::Color *) 0 ;
         | 
| 4561 4567 | 
             
              void *argp1 = 0 ;
         | 
| 4562 4568 | 
             
              int res1 = 0 ;
         | 
| 4563 | 
            -
               | 
| 4569 | 
            +
              std::tr1::uint32_t result;
         | 
| 4564 4570 | 
             
              VALUE vresult = Qnil;
         | 
| 4565 4571 |  | 
| 4566 4572 | 
             
              if ((argc < 0) || (argc > 0)) {
         | 
| @@ -4590,7 +4596,7 @@ _wrap_Color_bgr(int argc, VALUE *argv, VALUE self) { | |
| 4590 4596 | 
             
              Gosu::Color *arg1 = (Gosu::Color *) 0 ;
         | 
| 4591 4597 | 
             
              void *argp1 = 0 ;
         | 
| 4592 4598 | 
             
              int res1 = 0 ;
         | 
| 4593 | 
            -
               | 
| 4599 | 
            +
              std::tr1::uint32_t result;
         | 
| 4594 4600 | 
             
              VALUE vresult = Qnil;
         | 
| 4595 4601 |  | 
| 4596 4602 | 
             
              if ((argc < 0) || (argc > 0)) {
         | 
| @@ -4620,7 +4626,7 @@ _wrap_Color_abgr(int argc, VALUE *argv, VALUE self) { | |
| 4620 4626 | 
             
              Gosu::Color *arg1 = (Gosu::Color *) 0 ;
         | 
| 4621 4627 | 
             
              void *argp1 = 0 ;
         | 
| 4622 4628 | 
             
              int res1 = 0 ;
         | 
| 4623 | 
            -
               | 
| 4629 | 
            +
              std::tr1::uint32_t result;
         | 
| 4624 4630 | 
             
              VALUE vresult = Qnil;
         | 
| 4625 4631 |  | 
| 4626 4632 | 
             
              if ((argc < 0) || (argc > 0)) {
         | 
| @@ -4650,7 +4656,7 @@ _wrap_Color_gl(int argc, VALUE *argv, VALUE self) { | |
| 4650 4656 | 
             
              Gosu::Color *arg1 = (Gosu::Color *) 0 ;
         | 
| 4651 4657 | 
             
              void *argp1 = 0 ;
         | 
| 4652 4658 | 
             
              int res1 = 0 ;
         | 
| 4653 | 
            -
               | 
| 4659 | 
            +
              std::tr1::uint32_t result;
         | 
| 4654 4660 | 
             
              VALUE vresult = Qnil;
         | 
| 4655 4661 |  | 
| 4656 4662 | 
             
              if ((argc < 0) || (argc > 0)) {
         | 
| @@ -4777,7 +4783,7 @@ fail: | |
| 4777 4783 |  | 
| 4778 4784 | 
             
            SWIGINTERN VALUE
         | 
| 4779 4785 | 
             
            _wrap_Color_rgba__SWIG_1(int argc, VALUE *argv, VALUE self) {
         | 
| 4780 | 
            -
               | 
| 4786 | 
            +
              std::tr1::uint32_t arg1 ;
         | 
| 4781 4787 | 
             
              unsigned long val1 ;
         | 
| 4782 4788 | 
             
              int ecode1 = 0 ;
         | 
| 4783 4789 | 
             
              Gosu::Color result;
         | 
| @@ -4788,9 +4794,9 @@ _wrap_Color_rgba__SWIG_1(int argc, VALUE *argv, VALUE self) { | |
| 4788 4794 | 
             
              }
         | 
| 4789 4795 | 
             
              ecode1 = SWIG_AsVal_unsigned_SS_long(argv[0], &val1);
         | 
| 4790 4796 | 
             
              if (!SWIG_IsOK(ecode1)) {
         | 
| 4791 | 
            -
                SWIG_exception_fail(SWIG_ArgError(ecode1), Ruby_Format_TypeError( "", " | 
| 4797 | 
            +
                SWIG_exception_fail(SWIG_ArgError(ecode1), Ruby_Format_TypeError( "", "std::tr1::uint32_t","Gosu_Color_rgba__SWIG_1", 1, argv[0] ));
         | 
| 4792 4798 | 
             
              } 
         | 
| 4793 | 
            -
              arg1 = static_cast<  | 
| 4799 | 
            +
              arg1 = static_cast< std::tr1::uint32_t >(val1);
         | 
| 4794 4800 | 
             
              {
         | 
| 4795 4801 | 
             
                try {
         | 
| 4796 4802 | 
             
                  result = Gosu_Color_rgba__SWIG_1(arg1);
         | 
| @@ -4857,7 +4863,7 @@ SWIGINTERN VALUE _wrap_Color_rgba(int nargs, VALUE *args, VALUE self) { | |
| 4857 4863 | 
             
            fail:
         | 
| 4858 4864 | 
             
              Ruby_Format_OverloadedError( argc, 4, "rgba", 
         | 
| 4859 4865 | 
             
                "    Gosu::Color rgba(Gosu::Color::Channel r, Gosu::Color::Channel g, Gosu::Color::Channel b, Gosu::Color::Channel a)\n"
         | 
| 4860 | 
            -
                "    Gosu::Color rgba( | 
| 4866 | 
            +
                "    Gosu::Color rgba(std::tr1::uint32_t rgba)\n");
         | 
| 4861 4867 |  | 
| 4862 4868 | 
             
              return Qnil;
         | 
| 4863 4869 | 
             
            }
         | 
| @@ -4919,7 +4925,7 @@ fail: | |
| 4919 4925 |  | 
| 4920 4926 | 
             
            SWIGINTERN VALUE
         | 
| 4921 4927 | 
             
            _wrap_Color_argb__SWIG_2(int argc, VALUE *argv, VALUE self) {
         | 
| 4922 | 
            -
               | 
| 4928 | 
            +
              std::tr1::uint32_t arg1 ;
         | 
| 4923 4929 | 
             
              unsigned long val1 ;
         | 
| 4924 4930 | 
             
              int ecode1 = 0 ;
         | 
| 4925 4931 | 
             
              Gosu::Color result;
         | 
| @@ -4930,9 +4936,9 @@ _wrap_Color_argb__SWIG_2(int argc, VALUE *argv, VALUE self) { | |
| 4930 4936 | 
             
              }
         | 
| 4931 4937 | 
             
              ecode1 = SWIG_AsVal_unsigned_SS_long(argv[0], &val1);
         | 
| 4932 4938 | 
             
              if (!SWIG_IsOK(ecode1)) {
         | 
| 4933 | 
            -
                SWIG_exception_fail(SWIG_ArgError(ecode1), Ruby_Format_TypeError( "", " | 
| 4939 | 
            +
                SWIG_exception_fail(SWIG_ArgError(ecode1), Ruby_Format_TypeError( "", "std::tr1::uint32_t","Gosu_Color_argb__SWIG_2", 1, argv[0] ));
         | 
| 4934 4940 | 
             
              } 
         | 
| 4935 | 
            -
              arg1 = static_cast<  | 
| 4941 | 
            +
              arg1 = static_cast< std::tr1::uint32_t >(val1);
         | 
| 4936 4942 | 
             
              {
         | 
| 4937 4943 | 
             
                try {
         | 
| 4938 4944 | 
             
                  result = Gosu_Color_argb__SWIG_2(arg1);
         | 
| @@ -5009,7 +5015,7 @@ fail: | |
| 5009 5015 | 
             
              Ruby_Format_OverloadedError( argc, 4, "Color.argb", 
         | 
| 5010 5016 | 
             
                "    Gosu::Color Color.argb(Gosu::Color const *self)\n"
         | 
| 5011 5017 | 
             
                "    Gosu::Color Color.argb(Gosu::Color::Channel a, Gosu::Color::Channel r, Gosu::Color::Channel g, Gosu::Color::Channel b)\n"
         | 
| 5012 | 
            -
                "    Gosu::Color Color.argb( | 
| 5018 | 
            +
                "    Gosu::Color Color.argb(std::tr1::uint32_t argb)\n");
         | 
| 5013 5019 |  | 
| 5014 5020 | 
             
              return Qnil;
         | 
| 5015 5021 | 
             
            }
         | 
| @@ -5096,7 +5102,7 @@ Equality comparison operator. | |
| 5096 5102 | 
             
            SWIGINTERN VALUE
         | 
| 5097 5103 | 
             
            _wrap_Color___eq__(int argc, VALUE *argv, VALUE self) {
         | 
| 5098 5104 | 
             
              Gosu::Color *arg1 = (Gosu::Color *) 0 ;
         | 
| 5099 | 
            -
               | 
| 5105 | 
            +
              VALUE arg2 = (VALUE) 0 ;
         | 
| 5100 5106 | 
             
              void *argp1 = 0 ;
         | 
| 5101 5107 | 
             
              int res1 = 0 ;
         | 
| 5102 5108 | 
             
              bool result;
         | 
| @@ -5110,16 +5116,7 @@ _wrap_Color___eq__(int argc, VALUE *argv, VALUE self) { | |
| 5110 5116 | 
             
                SWIG_exception_fail(SWIG_ArgError(res1), Ruby_Format_TypeError( "", "Gosu::Color *","operator ==", 1, self )); 
         | 
| 5111 5117 | 
             
              }
         | 
| 5112 5118 | 
             
              arg1 = reinterpret_cast< Gosu::Color * >(argp1);
         | 
| 5113 | 
            -
               | 
| 5114 | 
            -
                if (TYPE(argv[0]) == T_FIXNUM || TYPE(argv[0]) == T_BIGNUM)
         | 
| 5115 | 
            -
                arg2 = Gosu::Color(NUM2UINT(argv[0]));
         | 
| 5116 | 
            -
                else {
         | 
| 5117 | 
            -
                  void* ptr;
         | 
| 5118 | 
            -
                  int res = SWIG_ConvertPtr(argv[0], &ptr, SWIGTYPE_p_Gosu__Color, 0);
         | 
| 5119 | 
            -
                  if (SWIG_IsOK(res) && ptr)
         | 
| 5120 | 
            -
                  arg2 = *reinterpret_cast<Gosu::Color*>(ptr);
         | 
| 5121 | 
            -
                }
         | 
| 5122 | 
            -
              }
         | 
| 5119 | 
            +
              arg2 = argv[0];
         | 
| 5123 5120 | 
             
              {
         | 
| 5124 5121 | 
             
                try {
         | 
| 5125 5122 | 
             
                  result = (bool)Gosu_Color_operator_Se__Se_(arg1,arg2);
         | 
| @@ -10924,10 +10921,9 @@ static swig_type_info _swigt__p_Gosu__SampleInstance = {"_p_Gosu__SampleInstance | |
| 10924 10921 | 
             
            static swig_type_info _swigt__p_Gosu__Song = {"_p_Gosu__Song", "Gosu::Song *", 0, 0, (void*)0, 0};
         | 
| 10925 10922 | 
             
            static swig_type_info _swigt__p_Gosu__TextInput = {"_p_Gosu__TextInput", "Gosu::TextInput *", 0, 0, (void*)0, 0};
         | 
| 10926 10923 | 
             
            static swig_type_info _swigt__p_Gosu__Window = {"_p_Gosu__Window", "Gosu::Window *", 0, 0, (void*)0, 0};
         | 
| 10927 | 
            -
            static swig_type_info _swigt__p_boost__arrayT_double_16_t = {"_p_boost__arrayT_double_16_t", "boost::array< double,16 > *|Gosu::Transform *", 0, 0, (void*)0, 0};
         | 
| 10928 | 
            -
            static swig_type_info _swigt__p_boost__optionalT_Gosu__Color_t = {"_p_boost__optionalT_Gosu__Color_t", "boost::optional< Gosu::Color > *", 0, 0, (void*)0, 0};
         | 
| 10929 10924 | 
             
            static swig_type_info _swigt__p_char = {"_p_char", "char *", 0, 0, (void*)0, 0};
         | 
| 10930 10925 | 
             
            static swig_type_info _swigt__p_double = {"_p_double", "Gosu::ZPos *|double *", 0, 0, (void*)0, 0};
         | 
| 10926 | 
            +
            static swig_type_info _swigt__p_std__tr1__arrayT_double_16_t = {"_p_std__tr1__arrayT_double_16_t", "std::tr1::array< double,16 > *|Gosu::Transform *", 0, 0, (void*)0, 0};
         | 
| 10931 10927 | 
             
            static swig_type_info _swigt__p_std__wstring = {"_p_std__wstring", "std::wstring *", 0, 0, (void*)0, 0};
         | 
| 10932 10928 |  | 
| 10933 10929 | 
             
            static swig_type_info *swig_type_initial[] = {
         | 
| @@ -10943,10 +10939,9 @@ static swig_type_info *swig_type_initial[] = { | |
| 10943 10939 | 
             
              &_swigt__p_Gosu__Song,
         | 
| 10944 10940 | 
             
              &_swigt__p_Gosu__TextInput,
         | 
| 10945 10941 | 
             
              &_swigt__p_Gosu__Window,
         | 
| 10946 | 
            -
              &_swigt__p_boost__arrayT_double_16_t,
         | 
| 10947 | 
            -
              &_swigt__p_boost__optionalT_Gosu__Color_t,
         | 
| 10948 10942 | 
             
              &_swigt__p_char,
         | 
| 10949 10943 | 
             
              &_swigt__p_double,
         | 
| 10944 | 
            +
              &_swigt__p_std__tr1__arrayT_double_16_t,
         | 
| 10950 10945 | 
             
              &_swigt__p_std__wstring,
         | 
| 10951 10946 | 
             
            };
         | 
| 10952 10947 |  | 
| @@ -10962,10 +10957,9 @@ static swig_cast_info _swigc__p_Gosu__SampleInstance[] = {  {&_swigt__p_Gosu__Sa | |
| 10962 10957 | 
             
            static swig_cast_info _swigc__p_Gosu__Song[] = {  {&_swigt__p_Gosu__Song, 0, 0, 0},{0, 0, 0, 0}};
         | 
| 10963 10958 | 
             
            static swig_cast_info _swigc__p_Gosu__TextInput[] = {  {&_swigt__p_Gosu__TextInput, 0, 0, 0},{0, 0, 0, 0}};
         | 
| 10964 10959 | 
             
            static swig_cast_info _swigc__p_Gosu__Window[] = {  {&_swigt__p_Gosu__Window, 0, 0, 0},{0, 0, 0, 0}};
         | 
| 10965 | 
            -
            static swig_cast_info _swigc__p_boost__arrayT_double_16_t[] = {  {&_swigt__p_boost__arrayT_double_16_t, 0, 0, 0},{0, 0, 0, 0}};
         | 
| 10966 | 
            -
            static swig_cast_info _swigc__p_boost__optionalT_Gosu__Color_t[] = {  {&_swigt__p_boost__optionalT_Gosu__Color_t, 0, 0, 0},{0, 0, 0, 0}};
         | 
| 10967 10960 | 
             
            static swig_cast_info _swigc__p_char[] = {  {&_swigt__p_char, 0, 0, 0},{0, 0, 0, 0}};
         | 
| 10968 10961 | 
             
            static swig_cast_info _swigc__p_double[] = {  {&_swigt__p_double, 0, 0, 0},{0, 0, 0, 0}};
         | 
| 10962 | 
            +
            static swig_cast_info _swigc__p_std__tr1__arrayT_double_16_t[] = {  {&_swigt__p_std__tr1__arrayT_double_16_t, 0, 0, 0},{0, 0, 0, 0}};
         | 
| 10969 10963 | 
             
            static swig_cast_info _swigc__p_std__wstring[] = {  {&_swigt__p_std__wstring, 0, 0, 0},{0, 0, 0, 0}};
         | 
| 10970 10964 |  | 
| 10971 10965 | 
             
            static swig_cast_info *swig_cast_initial[] = {
         | 
| @@ -10981,10 +10975,9 @@ static swig_cast_info *swig_cast_initial[] = { | |
| 10981 10975 | 
             
              _swigc__p_Gosu__Song,
         | 
| 10982 10976 | 
             
              _swigc__p_Gosu__TextInput,
         | 
| 10983 10977 | 
             
              _swigc__p_Gosu__Window,
         | 
| 10984 | 
            -
              _swigc__p_boost__arrayT_double_16_t,
         | 
| 10985 | 
            -
              _swigc__p_boost__optionalT_Gosu__Color_t,
         | 
| 10986 10978 | 
             
              _swigc__p_char,
         | 
| 10987 10979 | 
             
              _swigc__p_double,
         | 
| 10980 | 
            +
              _swigc__p_std__tr1__arrayT_double_16_t,
         | 
| 10988 10981 | 
             
              _swigc__p_std__wstring,
         | 
| 10989 10982 | 
             
            };
         | 
| 10990 10983 |  | 
| @@ -11248,8 +11241,8 @@ SWIGEXPORT void Init_gosu(void) { | |
| 11248 11241 | 
             
              SWIG_RubyInitializeTrackings();
         | 
| 11249 11242 | 
             
              rb_define_const(mGosu, "MAJOR_VERSION", SWIG_From_int(static_cast< int >(0)));
         | 
| 11250 11243 | 
             
              rb_define_const(mGosu, "MINOR_VERSION", SWIG_From_int(static_cast< int >(7)));
         | 
| 11251 | 
            -
              rb_define_const(mGosu, "POINT_VERSION", SWIG_From_int(static_cast< int >( | 
| 11252 | 
            -
              rb_define_const(mGosu, "VERSION", SWIG_FromCharPtr("0.7. | 
| 11244 | 
            +
              rb_define_const(mGosu, "POINT_VERSION", SWIG_From_int(static_cast< int >(35)));
         | 
| 11245 | 
            +
              rb_define_const(mGosu, "VERSION", SWIG_FromCharPtr("0.7.35"));
         | 
| 11253 11246 | 
             
              rb_define_const(mGosu, "GOSU_COPYRIGHT_NOTICE", SWIG_FromCharPtr("May contain `ogg\', `vorbis\' libraries (c) 2002-2008 Xiph.org Foundation\n\nRedistribution and use in source and binary forms, with or withoutmodification, are permitted provided that the following conditionsare met:\n\n- Redistributions of source code must retain the above copyrightnotice, this list of conditions and the following disclaimer.\n\n- Redistributions in binary form must reproduce the above copyrightnotice, this list of conditions and the following disclaimer in thedocumentation and/or other materials provided with the distribution.\n\n- Neither the name of the Xiph.org Foundation nor the names of itscontributors may be used to endorse or promote products derived fromthis software without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS``AS IS\'\' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOTLIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FORA PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATIONOR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOTLIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANYTHEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USEOF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."));
         | 
| 11254 11247 | 
             
              rb_define_module_function(mGosu, "milliseconds", VALUEFUNC(_wrap_milliseconds), -1);
         | 
| 11255 11248 | 
             
              rb_define_module_function(mGosu, "random", VALUEFUNC(_wrap_random), -1);
         |