texplay 0.2.2-x86-mswin32-60 → 0.2.4-x86-mswin32-60
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/CHANGELOG +88 -78
 - data/README.markdown +35 -35
 - data/Rakefile +87 -87
 - data/examples/example_fill.rb +2 -2
 - data/examples/example_lsystem.rb +51 -0
 - data/lib/ctexplay.18.so +0 -0
 - data/lib/ctexplay.19.so +0 -0
 - data/lib/texplay-contrib.rb +149 -77
 - data/lib/texplay.rb +134 -134
 - data/src/Makefile +1 -1
 - data/src/actions.obj +0 -0
 - data/src/bindings.obj +0 -0
 - data/src/cache.obj +0 -0
 - data/src/compat.h +4 -0
 - data/src/ctexplay-i386-mswin32.exp +0 -0
 - data/src/ctexplay-i386-mswin32.lib +0 -0
 - data/src/ctexplay-i386-mswin32.pdb +0 -0
 - data/src/ctexplay.so +0 -0
 - data/src/extconf.rb +3 -0
 - data/src/gen_eval.obj +0 -0
 - data/src/object2module.obj +0 -0
 - data/src/texplay.obj +0 -0
 - data/src/utils.c +18 -2
 - data/src/utils.h +2 -0
 - data/src/utils.obj +0 -0
 - data/src/vc60.pdb +0 -0
 - metadata +2 -2
 - data/README1st +0 -9
 
    
        data/CHANGELOG
    CHANGED
    
    | 
         @@ -1,78 +1,88 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
             
     | 
| 
       2 
     | 
    
         
            -
            version 0.2. 
     | 
| 
       3 
     | 
    
         
            -
            *  
     | 
| 
       4 
     | 
    
         
            -
            *  
     | 
| 
       5 
     | 
    
         
            -
             
     | 
| 
       6 
     | 
    
         
            -
             
     | 
| 
       7 
     | 
    
         
            -
             
     | 
| 
       8 
     | 
    
         
            -
            *  
     | 
| 
       9 
     | 
    
         
            -
            *  
     | 
| 
       10 
     | 
    
         
            -
             
     | 
| 
       11 
     | 
    
         
            -
             
     | 
| 
       12 
     | 
    
         
            -
            version 0.2. 
     | 
| 
       13 
     | 
    
         
            -
            *  
     | 
| 
       14 
     | 
    
         
            -
            *  
     | 
| 
       15 
     | 
    
         
            -
            *  
     | 
| 
       16 
     | 
    
         
            -
             
     | 
| 
       17 
     | 
    
         
            -
             
     | 
| 
       18 
     | 
    
         
            -
            *  
     | 
| 
       19 
     | 
    
         
            -
            *  
     | 
| 
       20 
     | 
    
         
            -
             
     | 
| 
       21 
     | 
    
         
            -
             
     | 
| 
       22 
     | 
    
         
            -
             
     | 
| 
       23 
     | 
    
         
            -
            *  
     | 
| 
       24 
     | 
    
         
            -
             
     | 
| 
       25 
     | 
    
         
            -
            *  
     | 
| 
       26 
     | 
    
         
            -
             
     | 
| 
       27 
     | 
    
         
            -
             
     | 
| 
       28 
     | 
    
         
            -
             
     | 
| 
       29 
     | 
    
         
            -
            *  
     | 
| 
       30 
     | 
    
         
            -
            *  
     | 
| 
       31 
     | 
    
         
            -
            *  
     | 
| 
       32 
     | 
    
         
            -
            *  
     | 
| 
       33 
     | 
    
         
            -
             
     | 
| 
       34 
     | 
    
         
            -
             
     | 
| 
       35 
     | 
    
         
            -
             
     | 
| 
       36 
     | 
    
         
            -
             
     | 
| 
       37 
     | 
    
         
            -
             
     | 
| 
       38 
     | 
    
         
            -
             
     | 
| 
       39 
     | 
    
         
            -
             
     | 
| 
       40 
     | 
    
         
            -
             
     | 
| 
       41 
     | 
    
         
            -
             
     | 
| 
       42 
     | 
    
         
            -
            *  
     | 
| 
       43 
     | 
    
         
            -
             
     | 
| 
       44 
     | 
    
         
            -
             
     | 
| 
       45 
     | 
    
         
            -
             
     | 
| 
       46 
     | 
    
         
            -
             
     | 
| 
       47 
     | 
    
         
            -
             
     | 
| 
       48 
     | 
    
         
            -
            *  
     | 
| 
       49 
     | 
    
         
            -
             
     | 
| 
       50 
     | 
    
         
            -
             
     | 
| 
       51 
     | 
    
         
            -
             
     | 
| 
       52 
     | 
    
         
            -
             
     | 
| 
       53 
     | 
    
         
            -
             
     | 
| 
       54 
     | 
    
         
            -
             
     | 
| 
       55 
     | 
    
         
            -
             
     | 
| 
       56 
     | 
    
         
            -
             
     | 
| 
       57 
     | 
    
         
            -
            version 0.1. 
     | 
| 
       58 
     | 
    
         
            -
            *  
     | 
| 
       59 
     | 
    
         
            -
             
     | 
| 
       60 
     | 
    
         
            -
             
     | 
| 
       61 
     | 
    
         
            -
             
     | 
| 
       62 
     | 
    
         
            -
             
     | 
| 
       63 
     | 
    
         
            -
             
     | 
| 
       64 
     | 
    
         
            -
             
     | 
| 
       65 
     | 
    
         
            -
             
     | 
| 
       66 
     | 
    
         
            -
             
     | 
| 
       67 
     | 
    
         
            -
             
     | 
| 
       68 
     | 
    
         
            -
             
     | 
| 
       69 
     | 
    
         
            -
             
     | 
| 
       70 
     | 
    
         
            -
             
     | 
| 
       71 
     | 
    
         
            -
             
     | 
| 
       72 
     | 
    
         
            -
             
     | 
| 
       73 
     | 
    
         
            -
             
     | 
| 
       74 
     | 
    
         
            -
             
     | 
| 
       75 
     | 
    
         
            -
             
     | 
| 
       76 
     | 
    
         
            -
            version 0.1. 
     | 
| 
       77 
     | 
    
         
            -
            *  
     | 
| 
       78 
     | 
    
         
            -
             
     | 
| 
      
 1 
     | 
    
         
            +
            15/9/09
         
     | 
| 
      
 2 
     | 
    
         
            +
            version 0.2.4
         
     | 
| 
      
 3 
     | 
    
         
            +
            * added lsystem
         
     | 
| 
      
 4 
     | 
    
         
            +
            * made lsystem both 1.9.1 and 1.8.6 compatible
         
     | 
| 
      
 5 
     | 
    
         
            +
             
     | 
| 
      
 6 
     | 
    
         
            +
            11/9/09
         
     | 
| 
      
 7 
     | 
    
         
            +
            version 0.2.3
         
     | 
| 
      
 8 
     | 
    
         
            +
            * added Ruby 1.8.7 compatibility by modifying extconf.rb to define RUBY_19 macro
         
     | 
| 
      
 9 
     | 
    
         
            +
            * and modified compat.h to get rid of feature test (fails on 1.8.7)
         
     | 
| 
      
 10 
     | 
    
         
            +
             
     | 
| 
      
 11 
     | 
    
         
            +
            8/9/09
         
     | 
| 
      
 12 
     | 
    
         
            +
            version 0.2.2
         
     | 
| 
      
 13 
     | 
    
         
            +
            * fixed color_control bug, action_struct->color was being overwritten (now using a temp).
         
     | 
| 
      
 14 
     | 
    
         
            +
            * fixed faulty error msg where max tex size was being displayed as 1024 but is actually 1022
         
     | 
| 
      
 15 
     | 
    
         
            +
            * added :start_angle parameter to ngon action
         
     | 
| 
      
 16 
     | 
    
         
            +
            * fixed example screen height from 769 to 768
         
     | 
| 
      
 17 
     | 
    
         
            +
            * arity of -1 and 0 now supported for color_control procs
         
     | 
| 
      
 18 
     | 
    
         
            +
            * fixed parameter checks for circle and ngon
         
     | 
| 
      
 19 
     | 
    
         
            +
            * updated documentation to reflect changes, and added details on caching
         
     | 
| 
      
 20 
     | 
    
         
            +
             
     | 
| 
      
 21 
     | 
    
         
            +
            2/9/09
         
     | 
| 
      
 22 
     | 
    
         
            +
            version 0.2.1
         
     | 
| 
      
 23 
     | 
    
         
            +
            * releasing a gem for TexPlay
         
     | 
| 
      
 24 
     | 
    
         
            +
            * bumped version number so can add add gosu 0.7.14 dependency to github gem
         
     | 
| 
      
 25 
     | 
    
         
            +
            * hopefully gem works on both github and rubyforge
         
     | 
| 
      
 26 
     | 
    
         
            +
            31/8/09
         
     | 
| 
      
 27 
     | 
    
         
            +
            version 0.2.0
         
     | 
| 
      
 28 
     | 
    
         
            +
            * added each iterator
         
     | 
| 
      
 29 
     | 
    
         
            +
            * added alternative to proc for :color_control proc (allowing static linear transforms to pixels)
         
     | 
| 
      
 30 
     | 
    
         
            +
            * no longer segfaulting on windows (no idea why not)
         
     | 
| 
      
 31 
     | 
    
         
            +
            * rewrote EmptyImageStub in ruby, using philomory's code. now alot faster.
         
     | 
| 
      
 32 
     | 
    
         
            +
            * implemented 'shadow' in terms of static :color_control pixel transform
         
     | 
| 
      
 33 
     | 
    
         
            +
            * added more example code demonstrating each iterator (example_each.rb) and new color_control behaviour
         
     | 
| 
      
 34 
     | 
    
         
            +
              i.e example_color_transform.rb
         
     | 
| 
      
 35 
     | 
    
         
            +
            * should be relatively stable now! 
         
     | 
| 
      
 36 
     | 
    
         
            +
             
     | 
| 
      
 37 
     | 
    
         
            +
            28/8/09
         
     | 
| 
      
 38 
     | 
    
         
            +
            version 0.1.9.1 (still BETA)
         
     | 
| 
      
 39 
     | 
    
         
            +
            * experimental features: Gosu::Image#dup and Gosu::Image#clone
         
     | 
| 
      
 40 
     | 
    
         
            +
            * also TexPlay::create_blank_image(window, width, height)
         
     | 
| 
      
 41 
     | 
    
         
            +
            * I noticed these features SEG FAULT on my setup in windows, so be warned
         
     | 
| 
      
 42 
     | 
    
         
            +
            * This is a BETA release
         
     | 
| 
      
 43 
     | 
    
         
            +
             
     | 
| 
      
 44 
     | 
    
         
            +
            14/8/09
         
     | 
| 
      
 45 
     | 
    
         
            +
            version 0.1.9.0 (BETA)
         
     | 
| 
      
 46 
     | 
    
         
            +
            * major rewrite. TP now supports beziers, polylines, polygons, and more
         
     | 
| 
      
 47 
     | 
    
         
            +
            * also supports alpha_blending (though still tempermental)
         
     | 
| 
      
 48 
     | 
    
         
            +
            * This is a BETA release
         
     | 
| 
      
 49 
     | 
    
         
            +
             
     | 
| 
      
 50 
     | 
    
         
            +
            1/7/09
         
     | 
| 
      
 51 
     | 
    
         
            +
            version 0.1.6.2
         
     | 
| 
      
 52 
     | 
    
         
            +
            * fixed another subtle bug in constrain_local_boundaries(). Function was 
         
     | 
| 
      
 53 
     | 
    
         
            +
            unable to deal with drawing actions that were 100% outside the image 
         
     | 
| 
      
 54 
     | 
    
         
            +
            boundaries.
         
     | 
| 
      
 55 
     | 
    
         
            +
             
     | 
| 
      
 56 
     | 
    
         
            +
            28/6/09
         
     | 
| 
      
 57 
     | 
    
         
            +
            version 0.1.6
         
     | 
| 
      
 58 
     | 
    
         
            +
            * gen_eval now working as a replacement for instance_eval in the #paint block. Allows for more user-friendly interface.
         
     | 
| 
      
 59 
     | 
    
         
            +
            * #paint can now be called without a block; if invoked this way it executes any commands in the action queue, e.g
         
     | 
| 
      
 60 
     | 
    
         
            +
              @img.circle 20, 20, 40
         
     | 
| 
      
 61 
     | 
    
         
            +
              @img.pixel 30, 30
         
     | 
| 
      
 62 
     | 
    
         
            +
              @img.paint
         
     | 
| 
      
 63 
     | 
    
         
            +
            * above will function as if: @img.paint { circle 20, 20, 40; pixel 30, 30 }
         
     | 
| 
      
 64 
     | 
    
         
            +
            * collected 1.8.6/1.9.1 compatibility into compat.h
         
     | 
| 
      
 65 
     | 
    
         
            +
             
     | 
| 
      
 66 
     | 
    
         
            +
            16/6/09
         
     | 
| 
      
 67 
     | 
    
         
            +
            version 0.1.4.6
         
     | 
| 
      
 68 
     | 
    
         
            +
            * allowed arity of 0 (as well as -1) for ruby 1.9 compatibility
         
     | 
| 
      
 69 
     | 
    
         
            +
             
     | 
| 
      
 70 
     | 
    
         
            +
            13/6/09
         
     | 
| 
      
 71 
     | 
    
         
            +
            version 0.1.4.5
         
     | 
| 
      
 72 
     | 
    
         
            +
            * major bugfix with TexPlay#splice method (segfaut). Also added new color format parameter: color [1, 1, 0, 1] (e.g purple with full alpha).
         
     | 
| 
      
 73 
     | 
    
         
            +
            Also fixed subtle edge-case bug in constrain_local_boundaries().
         
     | 
| 
      
 74 
     | 
    
         
            +
             
     | 
| 
      
 75 
     | 
    
         
            +
            9/6/09
         
     | 
| 
      
 76 
     | 
    
         
            +
            version 0.1.4
         
     | 
| 
      
 77 
     | 
    
         
            +
            * improved error checking. should work better with later gosu releases
         
     | 
| 
      
 78 
     | 
    
         
            +
             
     | 
| 
      
 79 
     | 
    
         
            +
            20/2/09 
         
     | 
| 
      
 80 
     | 
    
         
            +
            version 0.1.1
         
     | 
| 
      
 81 
     | 
    
         
            +
            * rerelease of this version fixing the oversized image bug for refresh_cache (i.e images over 500 x 500
         
     | 
| 
      
 82 
     | 
    
         
            +
             
     | 
| 
      
 83 
     | 
    
         
            +
            version 0.1.1
         
     | 
| 
      
 84 
     | 
    
         
            +
            * oops, bug in leftshift/rightshift functions, fixed!
         
     | 
| 
      
 85 
     | 
    
         
            +
             
     | 
| 
      
 86 
     | 
    
         
            +
            version 0.1.0
         
     | 
| 
      
 87 
     | 
    
         
            +
            * release!
         
     | 
| 
      
 88 
     | 
    
         
            +
             
     | 
    
        data/README.markdown
    CHANGED
    
    | 
         @@ -1,35 +1,35 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            
         
     | 
| 
       2 
     | 
    
         
            -
             
     | 
| 
       3 
     | 
    
         
            -
            *an image manipulation tool for ruby and gosu*
         
     | 
| 
       4 
     | 
    
         
            -
             
     | 
| 
       5 
     | 
    
         
            -
            INSTRUCTIONS 
         
     | 
| 
       6 
     | 
    
         
            -
            ============
         
     | 
| 
       7 
     | 
    
         
            -
             
     | 
| 
       8 
     | 
    
         
            -
            **TexPlay version 0.2. 
     | 
| 
       9 
     | 
    
         
            -
             
     | 
| 
       10 
     | 
    
         
            -
            Gem installation:
         
     | 
| 
       11 
     | 
    
         
            -
             
     | 
| 
       12 
     | 
    
         
            -
            + sudo gem install texplay
         
     | 
| 
       13 
     | 
    
         
            -
             
     | 
| 
       14 
     | 
    
         
            -
            To compile TexPlay from source, ensure you are in the directory with the Rakefile and type:
         
     | 
| 
       15 
     | 
    
         
            -
             
     | 
| 
       16 
     | 
    
         
            -
            + rake
         
     | 
| 
       17 
     | 
    
         
            -
             
     | 
| 
       18 
     | 
    
         
            -
            OR
         
     | 
| 
       19 
     | 
    
         
            -
             
     | 
| 
       20 
     | 
    
         
            -
            + rake19  (assuming this is the name of your 1.9.1 version of rake)
         
     | 
| 
       21 
     | 
    
         
            -
             
     | 
| 
       22 
     | 
    
         
            -
            **NB:** be sure to run the version of rake that corresponds to the ruby version you wish to use! on my system I use rake19 for ruby 1.9.1!
         
     | 
| 
       23 
     | 
    
         
            -
             
     | 
| 
       24 
     | 
    
         
            -
            If all goes well, run the example programs:
         
     | 
| 
       25 
     | 
    
         
            -
             
     | 
| 
       26 
     | 
    
         
            -
            + cd examples
         
     | 
| 
       27 
     | 
    
         
            -
            + ruby example_melt.rb
         
     | 
| 
       28 
     | 
    
         
            -
            + ruby example_simple.rb
         
     | 
| 
       29 
     | 
    
         
            -
            + ..etc
         
     | 
| 
       30 
     | 
    
         
            -
             
     | 
| 
       31 
     | 
    
         
            -
            + like any gosu application, gosu.so must be in the current directory (or the gosu gem installed) when running the examples.
         
     | 
| 
       32 
     | 
    
         
            -
             
     | 
| 
       33 
     | 
    
         
            -
             
     | 
| 
       34 
     | 
    
         
            -
            ---
         
     | 
| 
       35 
     | 
    
         
            -
            Enjoy!
         
     | 
| 
      
 1 
     | 
    
         
            +
            
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            *an image manipulation tool for ruby and gosu*
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
            INSTRUCTIONS 
         
     | 
| 
      
 6 
     | 
    
         
            +
            ============
         
     | 
| 
      
 7 
     | 
    
         
            +
             
     | 
| 
      
 8 
     | 
    
         
            +
            **TexPlay version 0.2.4**
         
     | 
| 
      
 9 
     | 
    
         
            +
             
     | 
| 
      
 10 
     | 
    
         
            +
            Gem installation:
         
     | 
| 
      
 11 
     | 
    
         
            +
             
     | 
| 
      
 12 
     | 
    
         
            +
            + sudo gem install texplay
         
     | 
| 
      
 13 
     | 
    
         
            +
             
     | 
| 
      
 14 
     | 
    
         
            +
            To compile TexPlay from source, ensure you are in the directory with the Rakefile and type:
         
     | 
| 
      
 15 
     | 
    
         
            +
             
     | 
| 
      
 16 
     | 
    
         
            +
            + rake
         
     | 
| 
      
 17 
     | 
    
         
            +
             
     | 
| 
      
 18 
     | 
    
         
            +
            OR
         
     | 
| 
      
 19 
     | 
    
         
            +
             
     | 
| 
      
 20 
     | 
    
         
            +
            + rake19  (assuming this is the name of your 1.9.1 version of rake)
         
     | 
| 
      
 21 
     | 
    
         
            +
             
     | 
| 
      
 22 
     | 
    
         
            +
            **NB:** be sure to run the version of rake that corresponds to the ruby version you wish to use! on my system I use rake19 for ruby 1.9.1!
         
     | 
| 
      
 23 
     | 
    
         
            +
             
     | 
| 
      
 24 
     | 
    
         
            +
            If all goes well, run the example programs:
         
     | 
| 
      
 25 
     | 
    
         
            +
             
     | 
| 
      
 26 
     | 
    
         
            +
            + cd examples
         
     | 
| 
      
 27 
     | 
    
         
            +
            + ruby example_melt.rb
         
     | 
| 
      
 28 
     | 
    
         
            +
            + ruby example_simple.rb
         
     | 
| 
      
 29 
     | 
    
         
            +
            + ..etc
         
     | 
| 
      
 30 
     | 
    
         
            +
             
     | 
| 
      
 31 
     | 
    
         
            +
            + like any gosu application, gosu.so must be in the current directory (or the gosu gem installed) when running the examples.
         
     | 
| 
      
 32 
     | 
    
         
            +
             
     | 
| 
      
 33 
     | 
    
         
            +
             
     | 
| 
      
 34 
     | 
    
         
            +
            ---
         
     | 
| 
      
 35 
     | 
    
         
            +
            Enjoy!
         
     | 
    
        data/Rakefile
    CHANGED
    
    | 
         @@ -1,87 +1,87 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            require 'rake/clean'
         
     | 
| 
       2 
     | 
    
         
            -
            require 'rake/gempackagetask'
         
     | 
| 
       3 
     | 
    
         
            -
             
     | 
| 
       4 
     | 
    
         
            -
            TEXPLAY_VERSION = "0.2. 
     | 
| 
       5 
     | 
    
         
            -
             
     | 
| 
       6 
     | 
    
         
            -
            $dlext = Config::CONFIG['DLEXT']
         
     | 
| 
       7 
     | 
    
         
            -
             
     | 
| 
       8 
     | 
    
         
            -
            CLEAN.include("src/*.#{$dlext}", "src/*.log", "src/*.o", "src/*~", "src/*#*", "src/*.obj", "src/*.def", "src/*.pdb")
         
     | 
| 
       9 
     | 
    
         
            -
            CLOBBER.include("**/*.#{$dlext}", "**/*~", "**/*#*", "**/*.log", "**/*.o")
         
     | 
| 
       10 
     | 
    
         
            -
             
     | 
| 
       11 
     | 
    
         
            -
            $make_program = if RUBY_PLATFORM =~ /win/ 
         
     | 
| 
       12 
     | 
    
         
            -
                                "nmake"
         
     | 
| 
       13 
     | 
    
         
            -
                            else
         
     | 
| 
       14 
     | 
    
         
            -
                                "make"
         
     | 
| 
       15 
     | 
    
         
            -
                            end
         
     | 
| 
       16 
     | 
    
         
            -
             
     | 
| 
       17 
     | 
    
         
            -
            task :default => [:build]
         
     | 
| 
       18 
     | 
    
         
            -
             
     | 
| 
       19 
     | 
    
         
            -
            desc "Build TexPlay"
         
     | 
| 
       20 
     | 
    
         
            -
            task :build => :clean do
         
     | 
| 
       21 
     | 
    
         
            -
                puts "(2) building Makefile..."
         
     | 
| 
       22 
     | 
    
         
            -
                chdir("./src/") do
         
     | 
| 
       23 
     | 
    
         
            -
                    ruby "extconf.rb"
         
     | 
| 
       24 
     | 
    
         
            -
                    puts "(3) building ctexplay.#{$dlext}..."
         
     | 
| 
       25 
     | 
    
         
            -
                    sh "#{$make_program}"
         
     | 
| 
       26 
     | 
    
         
            -
                    puts "(4) copying ctexplay.#{$dlext} to current directory..."
         
     | 
| 
       27 
     | 
    
         
            -
                    cp "ctexplay.#{$dlext}", "../lib" , :verbose => true
         
     | 
| 
       28 
     | 
    
         
            -
             
     | 
| 
       29 
     | 
    
         
            -
                    if RUBY_PLATFORM =~ /mswin/
         
     | 
| 
       30 
     | 
    
         
            -
                        if RUBY_VERSION =~ /1.9/
         
     | 
| 
       31 
     | 
    
         
            -
                            File.rename("../lib/ctexplay.#{$dlext}", "../lib/ctexplay.19.#{$dlext}")
         
     | 
| 
       32 
     | 
    
         
            -
                        else
         
     | 
| 
       33 
     | 
    
         
            -
                            File.rename("../lib/ctexplay.#{$dlext}", "../lib/ctexplay.18.#{$dlext}")
         
     | 
| 
       34 
     | 
    
         
            -
                        end
         
     | 
| 
       35 
     | 
    
         
            -
                    end
         
     | 
| 
       36 
     | 
    
         
            -
                    puts "(5) ...done!"
         
     | 
| 
       37 
     | 
    
         
            -
                end
         
     | 
| 
       38 
     | 
    
         
            -
            end
         
     | 
| 
       39 
     | 
    
         
            -
             
     | 
| 
       40 
     | 
    
         
            -
            specification = Gem::Specification.new do |s|
         
     | 
| 
       41 
     | 
    
         
            -
                s.name = "texplay"
         
     | 
| 
       42 
     | 
    
         
            -
                s.summary = "TexPlay is a light-weight image manipulation framework for Ruby and Gosu"
         
     | 
| 
       43 
     | 
    
         
            -
                s.version = TEXPLAY_VERSION
         
     | 
| 
       44 
     | 
    
         
            -
                s.date = "2009-09-09"
         
     | 
| 
       45 
     | 
    
         
            -
                s.author = "John Mair (banisterfiend)"
         
     | 
| 
       46 
     | 
    
         
            -
                s.email = 'jrmair@gmail.com'
         
     | 
| 
       47 
     | 
    
         
            -
                s.description = s.summary
         
     | 
| 
       48 
     | 
    
         
            -
                s.require_path = 'lib'
         
     | 
| 
       49 
     | 
    
         
            -
                s.add_dependency("gosu",">=0.7.14")
         
     | 
| 
       50 
     | 
    
         
            -
                s.homepage = "http://banisterfiend.wordpress.com/2008/08/23/texplay-an-image-manipulation-tool-for-ruby-and-gosu/"
         
     | 
| 
       51 
     | 
    
         
            -
                s.has_rdoc = false
         
     | 
| 
       52 
     | 
    
         
            -
                s.files =  ["Rakefile", "README.markdown", "CHANGELOG",  
     | 
| 
       53 
     | 
    
         
            -
                            "lib/texplay.rb", "lib/texplay-contrib.rb"] +
         
     | 
| 
       54 
     | 
    
         
            -
                    FileList["src/*", "examples/*.rb", "examples/media/*"].to_a 
         
     | 
| 
       55 
     | 
    
         
            -
             
     | 
| 
       56 
     | 
    
         
            -
                if RUBY_PLATFORM =~ /mswin/
         
     | 
| 
       57 
     | 
    
         
            -
                    s.platform = Gem::Platform::CURRENT
         
     | 
| 
       58 
     | 
    
         
            -
                    s.files += ["lib/ctexplay.18.so", "lib/ctexplay.19.so"]
         
     | 
| 
       59 
     | 
    
         
            -
                    
         
     | 
| 
       60 
     | 
    
         
            -
                else
         
     | 
| 
       61 
     | 
    
         
            -
                    s.platform = Gem::Platform::RUBY
         
     | 
| 
       62 
     | 
    
         
            -
                    s.extensions = ["src/extconf.rb"]
         
     | 
| 
       63 
     | 
    
         
            -
                end
         
     | 
| 
       64 
     | 
    
         
            -
            end
         
     | 
| 
       65 
     | 
    
         
            -
            Rake::GemPackageTask.new(specification) do |package|
         
     | 
| 
       66 
     | 
    
         
            -
                package.need_zip = false
         
     | 
| 
       67 
     | 
    
         
            -
                package.need_tar = false
         
     | 
| 
       68 
     | 
    
         
            -
            end
         
     | 
| 
       69 
     | 
    
         
            -
             
     | 
| 
       70 
     | 
    
         
            -
            SELENE = '/home/john/ruby/projects/selene'
         
     | 
| 
       71 
     | 
    
         
            -
            desc "update selene's version of texplay"
         
     | 
| 
       72 
     | 
    
         
            -
            task :selene => ["#{SELENE}/lib/texplay.rb", "#{SELENE}/lib/texplay-contrib.rb",
         
     | 
| 
       73 
     | 
    
         
            -
                          "#{SELENE}/lib/ctexplay.so"] do
         
     | 
| 
       74 
     | 
    
         
            -
                puts "...done!"
         
     | 
| 
       75 
     | 
    
         
            -
            end
         
     | 
| 
       76 
     | 
    
         
            -
             
     | 
| 
       77 
     | 
    
         
            -
            file "#{SELENE}/lib/texplay.rb" => "texplay.rb" do |t|
         
     | 
| 
       78 
     | 
    
         
            -
                cp t.prerequisites.first, t.name, :verbose => true
         
     | 
| 
       79 
     | 
    
         
            -
            end
         
     | 
| 
       80 
     | 
    
         
            -
             
     | 
| 
       81 
     | 
    
         
            -
            file "#{SELENE}/lib/texplay-contrib.rb" => "texplay-contrib.rb" do |t|
         
     | 
| 
       82 
     | 
    
         
            -
                cp t.prerequisites.first, t.name, :verbose => true
         
     | 
| 
       83 
     | 
    
         
            -
            end
         
     | 
| 
       84 
     | 
    
         
            -
             
     | 
| 
       85 
     | 
    
         
            -
            file "#{SELENE}/lib/ctexplay.#{$dlext}" => "ctexplay.#{$dlext}" do |t|
         
     | 
| 
       86 
     | 
    
         
            -
                cp t.prerequisites.first, t.name, :verbose => true
         
     | 
| 
       87 
     | 
    
         
            -
            end
         
     | 
| 
      
 1 
     | 
    
         
            +
            require 'rake/clean'
         
     | 
| 
      
 2 
     | 
    
         
            +
            require 'rake/gempackagetask'
         
     | 
| 
      
 3 
     | 
    
         
            +
             
     | 
| 
      
 4 
     | 
    
         
            +
            TEXPLAY_VERSION = "0.2.4"
         
     | 
| 
      
 5 
     | 
    
         
            +
             
     | 
| 
      
 6 
     | 
    
         
            +
            $dlext = Config::CONFIG['DLEXT']
         
     | 
| 
      
 7 
     | 
    
         
            +
             
     | 
| 
      
 8 
     | 
    
         
            +
            CLEAN.include("src/*.#{$dlext}", "src/*.log", "src/*.o", "src/*~", "src/*#*", "src/*.obj", "src/*.def", "src/*.pdb")
         
     | 
| 
      
 9 
     | 
    
         
            +
            CLOBBER.include("**/*.#{$dlext}", "**/*~", "**/*#*", "**/*.log", "**/*.o")
         
     | 
| 
      
 10 
     | 
    
         
            +
             
     | 
| 
      
 11 
     | 
    
         
            +
            $make_program = if RUBY_PLATFORM =~ /win/ 
         
     | 
| 
      
 12 
     | 
    
         
            +
                                "nmake"
         
     | 
| 
      
 13 
     | 
    
         
            +
                            else
         
     | 
| 
      
 14 
     | 
    
         
            +
                                "make"
         
     | 
| 
      
 15 
     | 
    
         
            +
                            end
         
     | 
| 
      
 16 
     | 
    
         
            +
             
     | 
| 
      
 17 
     | 
    
         
            +
            task :default => [:build]
         
     | 
| 
      
 18 
     | 
    
         
            +
             
     | 
| 
      
 19 
     | 
    
         
            +
            desc "Build TexPlay"
         
     | 
| 
      
 20 
     | 
    
         
            +
            task :build => :clean do
         
     | 
| 
      
 21 
     | 
    
         
            +
                puts "(2) building Makefile..."
         
     | 
| 
      
 22 
     | 
    
         
            +
                chdir("./src/") do
         
     | 
| 
      
 23 
     | 
    
         
            +
                    ruby "extconf.rb"
         
     | 
| 
      
 24 
     | 
    
         
            +
                    puts "(3) building ctexplay.#{$dlext}..."
         
     | 
| 
      
 25 
     | 
    
         
            +
                    sh "#{$make_program}"
         
     | 
| 
      
 26 
     | 
    
         
            +
                    puts "(4) copying ctexplay.#{$dlext} to current directory..."
         
     | 
| 
      
 27 
     | 
    
         
            +
                    cp "ctexplay.#{$dlext}", "../lib" , :verbose => true
         
     | 
| 
      
 28 
     | 
    
         
            +
             
     | 
| 
      
 29 
     | 
    
         
            +
                    if RUBY_PLATFORM =~ /mswin/
         
     | 
| 
      
 30 
     | 
    
         
            +
                        if RUBY_VERSION =~ /1.9/
         
     | 
| 
      
 31 
     | 
    
         
            +
                            File.rename("../lib/ctexplay.#{$dlext}", "../lib/ctexplay.19.#{$dlext}")
         
     | 
| 
      
 32 
     | 
    
         
            +
                        else
         
     | 
| 
      
 33 
     | 
    
         
            +
                            File.rename("../lib/ctexplay.#{$dlext}", "../lib/ctexplay.18.#{$dlext}")
         
     | 
| 
      
 34 
     | 
    
         
            +
                        end
         
     | 
| 
      
 35 
     | 
    
         
            +
                    end
         
     | 
| 
      
 36 
     | 
    
         
            +
                    puts "(5) ...done!"
         
     | 
| 
      
 37 
     | 
    
         
            +
                end
         
     | 
| 
      
 38 
     | 
    
         
            +
            end
         
     | 
| 
      
 39 
     | 
    
         
            +
             
     | 
| 
      
 40 
     | 
    
         
            +
            specification = Gem::Specification.new do |s|
         
     | 
| 
      
 41 
     | 
    
         
            +
                s.name = "texplay"
         
     | 
| 
      
 42 
     | 
    
         
            +
                s.summary = "TexPlay is a light-weight image manipulation framework for Ruby and Gosu"
         
     | 
| 
      
 43 
     | 
    
         
            +
                s.version = TEXPLAY_VERSION
         
     | 
| 
      
 44 
     | 
    
         
            +
                s.date = "2009-09-09"
         
     | 
| 
      
 45 
     | 
    
         
            +
                s.author = "John Mair (banisterfiend)"
         
     | 
| 
      
 46 
     | 
    
         
            +
                s.email = 'jrmair@gmail.com'
         
     | 
| 
      
 47 
     | 
    
         
            +
                s.description = s.summary
         
     | 
| 
      
 48 
     | 
    
         
            +
                s.require_path = 'lib'
         
     | 
| 
      
 49 
     | 
    
         
            +
                s.add_dependency("gosu",">=0.7.14")
         
     | 
| 
      
 50 
     | 
    
         
            +
                s.homepage = "http://banisterfiend.wordpress.com/2008/08/23/texplay-an-image-manipulation-tool-for-ruby-and-gosu/"
         
     | 
| 
      
 51 
     | 
    
         
            +
                s.has_rdoc = false
         
     | 
| 
      
 52 
     | 
    
         
            +
                s.files =  ["Rakefile", "README.markdown", "CHANGELOG", 
         
     | 
| 
      
 53 
     | 
    
         
            +
                            "lib/texplay.rb", "lib/texplay-contrib.rb"] +
         
     | 
| 
      
 54 
     | 
    
         
            +
                    FileList["src/*", "examples/*.rb", "examples/media/*"].to_a 
         
     | 
| 
      
 55 
     | 
    
         
            +
             
     | 
| 
      
 56 
     | 
    
         
            +
                if RUBY_PLATFORM =~ /mswin/
         
     | 
| 
      
 57 
     | 
    
         
            +
                    s.platform = Gem::Platform::CURRENT
         
     | 
| 
      
 58 
     | 
    
         
            +
                    s.files += ["lib/ctexplay.18.so", "lib/ctexplay.19.so"]
         
     | 
| 
      
 59 
     | 
    
         
            +
                    
         
     | 
| 
      
 60 
     | 
    
         
            +
                else
         
     | 
| 
      
 61 
     | 
    
         
            +
                    s.platform = Gem::Platform::RUBY
         
     | 
| 
      
 62 
     | 
    
         
            +
                    s.extensions = ["src/extconf.rb"]
         
     | 
| 
      
 63 
     | 
    
         
            +
                end
         
     | 
| 
      
 64 
     | 
    
         
            +
            end
         
     | 
| 
      
 65 
     | 
    
         
            +
            Rake::GemPackageTask.new(specification) do |package|
         
     | 
| 
      
 66 
     | 
    
         
            +
                package.need_zip = false
         
     | 
| 
      
 67 
     | 
    
         
            +
                package.need_tar = false
         
     | 
| 
      
 68 
     | 
    
         
            +
            end
         
     | 
| 
      
 69 
     | 
    
         
            +
             
     | 
| 
      
 70 
     | 
    
         
            +
            SELENE = '/home/john/ruby/projects/selene'
         
     | 
| 
      
 71 
     | 
    
         
            +
            desc "update selene's version of texplay"
         
     | 
| 
      
 72 
     | 
    
         
            +
            task :selene => ["#{SELENE}/lib/texplay.rb", "#{SELENE}/lib/texplay-contrib.rb",
         
     | 
| 
      
 73 
     | 
    
         
            +
                          "#{SELENE}/lib/ctexplay.so"] do
         
     | 
| 
      
 74 
     | 
    
         
            +
                puts "...done!"
         
     | 
| 
      
 75 
     | 
    
         
            +
            end
         
     | 
| 
      
 76 
     | 
    
         
            +
             
     | 
| 
      
 77 
     | 
    
         
            +
            file "#{SELENE}/lib/texplay.rb" => "texplay.rb" do |t|
         
     | 
| 
      
 78 
     | 
    
         
            +
                cp t.prerequisites.first, t.name, :verbose => true
         
     | 
| 
      
 79 
     | 
    
         
            +
            end
         
     | 
| 
      
 80 
     | 
    
         
            +
             
     | 
| 
      
 81 
     | 
    
         
            +
            file "#{SELENE}/lib/texplay-contrib.rb" => "texplay-contrib.rb" do |t|
         
     | 
| 
      
 82 
     | 
    
         
            +
                cp t.prerequisites.first, t.name, :verbose => true
         
     | 
| 
      
 83 
     | 
    
         
            +
            end
         
     | 
| 
      
 84 
     | 
    
         
            +
             
     | 
| 
      
 85 
     | 
    
         
            +
            file "#{SELENE}/lib/ctexplay.#{$dlext}" => "ctexplay.#{$dlext}" do |t|
         
     | 
| 
      
 86 
     | 
    
         
            +
                cp t.prerequisites.first, t.name, :verbose => true
         
     | 
| 
      
 87 
     | 
    
         
            +
            end
         
     | 
    
        data/examples/example_fill.rb
    CHANGED
    
    | 
         @@ -6,7 +6,7 @@ require 'texplay' 
     | 
|
| 
       6 
6 
     | 
    
         
             
            class W < Gosu::Window
         
     | 
| 
       7 
7 
     | 
    
         
             
                def initialize
         
     | 
| 
       8 
8 
     | 
    
         
             
                    super(1024, 768, false, 20)
         
     | 
| 
       9 
     | 
    
         
            -
                    @img = TexPlay::create_blank_image(self, 1022,  
     | 
| 
      
 9 
     | 
    
         
            +
                    @img = TexPlay::create_blank_image(self, 1022, 800)
         
     | 
| 
       10 
10 
     | 
    
         
             
                    @tp = Gosu::Image.new(self, "#{Common::MEDIA}/texplay.png")
         
     | 
| 
       11 
11 
     | 
    
         
             
                    @gosu = Gosu::Image.new(self, "#{Common::MEDIA}/sand1.png")
         
     | 
| 
       12 
12 
     | 
    
         | 
| 
         @@ -25,7 +25,7 @@ class W < Gosu::Window 
     | 
|
| 
       25 
25 
     | 
    
         
             
                    @img.bezier points
         
     | 
| 
       26 
26 
     | 
    
         | 
| 
       27 
27 
     | 
    
         
             
                    # NOTE: the :texture hash argument works on ALL drawing actions; not just fills
         
     | 
| 
       28 
     | 
    
         
            -
                    @img.fill 300,  
     | 
| 
      
 28 
     | 
    
         
            +
                    @img.fill 300, 650, :texture => @gosu
         
     | 
| 
       29 
29 
     | 
    
         | 
| 
       30 
30 
     | 
    
         
             
                    # let's demonstrate by drawing a circle using the gosu.png texture
         
     | 
| 
       31 
31 
     | 
    
         
             
                    # NOTE: :texture even works on lines, boxes, polylines, beziers etc. 
         
     | 
| 
         @@ -0,0 +1,51 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require 'common'
         
     | 
| 
      
 2 
     | 
    
         
            +
            require 'texplay'
         
     | 
| 
      
 3 
     | 
    
         
            +
             
     | 
| 
      
 4 
     | 
    
         
            +
            Dragon = TexPlay::LSystem.new do
         
     | 
| 
      
 5 
     | 
    
         
            +
                rule "F" => "F"
         
     | 
| 
      
 6 
     | 
    
         
            +
                rule "X" => "X+YF+"
         
     | 
| 
      
 7 
     | 
    
         
            +
                rule "Y" => "-FX-Y"
         
     | 
| 
      
 8 
     | 
    
         
            +
                angle 90
         
     | 
| 
      
 9 
     | 
    
         
            +
             
     | 
| 
      
 10 
     | 
    
         
            +
                atom "FX"
         
     | 
| 
      
 11 
     | 
    
         
            +
            end
         
     | 
| 
      
 12 
     | 
    
         
            +
             
     | 
| 
      
 13 
     | 
    
         
            +
            Bush1 = TexPlay::LSystem.new do
         
     | 
| 
      
 14 
     | 
    
         
            +
                rule "F" => "F[-F]F[+F][F]"
         
     | 
| 
      
 15 
     | 
    
         
            +
                
         
     | 
| 
      
 16 
     | 
    
         
            +
                angle 20
         
     | 
| 
      
 17 
     | 
    
         
            +
                atom "F"
         
     | 
| 
      
 18 
     | 
    
         
            +
            end
         
     | 
| 
      
 19 
     | 
    
         
            +
             
     | 
| 
      
 20 
     | 
    
         
            +
            Bush2 = TexPlay::LSystem.new do
         
     | 
| 
      
 21 
     | 
    
         
            +
                rule "F" => "FF"
         
     | 
| 
      
 22 
     | 
    
         
            +
                rule "X" => "F[+X]F[-X]+X"
         
     | 
| 
      
 23 
     | 
    
         
            +
                
         
     | 
| 
      
 24 
     | 
    
         
            +
                angle 20
         
     | 
| 
      
 25 
     | 
    
         
            +
                atom "X"
         
     | 
| 
      
 26 
     | 
    
         
            +
            end
         
     | 
| 
      
 27 
     | 
    
         
            +
             
     | 
| 
      
 28 
     | 
    
         
            +
            Bush3 = TexPlay::LSystem.new do
         
     | 
| 
      
 29 
     | 
    
         
            +
                rule "F" => "FF"
         
     | 
| 
      
 30 
     | 
    
         
            +
                rule "X" => "F-[[X]+X]+F[+FX]-X"
         
     | 
| 
      
 31 
     | 
    
         
            +
                
         
     | 
| 
      
 32 
     | 
    
         
            +
                angle 22.5
         
     | 
| 
      
 33 
     | 
    
         
            +
                atom "X"
         
     | 
| 
      
 34 
     | 
    
         
            +
            end
         
     | 
| 
      
 35 
     | 
    
         
            +
             
     | 
| 
      
 36 
     | 
    
         
            +
             
     | 
| 
      
 37 
     | 
    
         
            +
             
     | 
| 
      
 38 
     | 
    
         
            +
            class W < Gosu::Window
         
     | 
| 
      
 39 
     | 
    
         
            +
                def initialize
         
     | 
| 
      
 40 
     | 
    
         
            +
                    super(1024, 768, false, 20)
         
     | 
| 
      
 41 
     | 
    
         
            +
                    @img = TexPlay::create_blank_image(self, 500, 500)
         
     | 
| 
      
 42 
     | 
    
         
            +
                    @img.lsystem(0, 250, Bush2, :order => 5, :line_length => 5)
         
     | 
| 
      
 43 
     | 
    
         
            +
                end
         
     | 
| 
      
 44 
     | 
    
         
            +
             
     | 
| 
      
 45 
     | 
    
         
            +
                def draw
         
     | 
| 
      
 46 
     | 
    
         
            +
                    @img.draw(100,0,1)
         
     | 
| 
      
 47 
     | 
    
         
            +
                end
         
     | 
| 
      
 48 
     | 
    
         
            +
            end
         
     | 
| 
      
 49 
     | 
    
         
            +
             
     | 
| 
      
 50 
     | 
    
         
            +
            w = W.new
         
     | 
| 
      
 51 
     | 
    
         
            +
            w.show
         
     | 
    
        data/lib/ctexplay.18.so
    CHANGED
    
    | 
         Binary file 
     | 
    
        data/lib/ctexplay.19.so
    CHANGED
    
    | 
         Binary file 
     | 
    
        data/lib/texplay-contrib.rb
    CHANGED
    
    | 
         @@ -1,77 +1,149 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            begin
         
     | 
| 
       2 
     | 
    
         
            -
                require 'rubygems'
         
     | 
| 
       3 
     | 
    
         
            -
            rescue LoadError
         
     | 
| 
       4 
     | 
    
         
            -
            end
         
     | 
| 
       5 
     | 
    
         
            -
             
     | 
| 
       6 
     | 
    
         
            -
            require 'texplay'
         
     | 
| 
       7 
     | 
    
         
            -
             
     | 
| 
       8 
     | 
    
         
            -
             
     | 
| 
       9 
     | 
    
         
            -
             
     | 
| 
       10 
     | 
    
         
            -
             
     | 
| 
       11 
     | 
    
         
            -
             
     | 
| 
       12 
     | 
    
         
            -
             
     | 
| 
       13 
     | 
    
         
            -
             
     | 
| 
       14 
     | 
    
         
            -
            TexPlay:: 
     | 
| 
       15 
     | 
    
         
            -
                 
     | 
| 
       16 
     | 
    
         
            -
             
     | 
| 
       17 
     | 
    
         
            -
             
     | 
| 
       18 
     | 
    
         
            -
             
     | 
| 
       19 
     | 
    
         
            -
             
     | 
| 
       20 
     | 
    
         
            -
             
     | 
| 
       21 
     | 
    
         
            -
             
     | 
| 
       22 
     | 
    
         
            -
             
     | 
| 
       23 
     | 
    
         
            -
             
     | 
| 
       24 
     | 
    
         
            -
             
     | 
| 
       25 
     | 
    
         
            -
             
     | 
| 
       26 
     | 
    
         
            -
             
     | 
| 
       27 
     | 
    
         
            -
             
     | 
| 
       28 
     | 
    
         
            -
             
     | 
| 
       29 
     | 
    
         
            -
             
     | 
| 
       30 
     | 
    
         
            -
             
     | 
| 
       31 
     | 
    
         
            -
             
     | 
| 
       32 
     | 
    
         
            -
             
     | 
| 
       33 
     | 
    
         
            -
             
     | 
| 
       34 
     | 
    
         
            -
             
     | 
| 
       35 
     | 
    
         
            -
             
     | 
| 
       36 
     | 
    
         
            -
             
     | 
| 
       37 
     | 
    
         
            -
             
     | 
| 
       38 
     | 
    
         
            -
             
     | 
| 
       39 
     | 
    
         
            -
             
     | 
| 
       40 
     | 
    
         
            -
             
     | 
| 
       41 
     | 
    
         
            -
             
     | 
| 
       42 
     | 
    
         
            -
             
     | 
| 
       43 
     | 
    
         
            -
                     
     | 
| 
       44 
     | 
    
         
            -
             
     | 
| 
       45 
     | 
    
         
            -
             
     | 
| 
       46 
     | 
    
         
            -
             
     | 
| 
       47 
     | 
    
         
            -
             
     | 
| 
       48 
     | 
    
         
            -
             
     | 
| 
       49 
     | 
    
         
            -
             
     | 
| 
       50 
     | 
    
         
            -
             
     | 
| 
       51 
     | 
    
         
            -
             
     | 
| 
       52 
     | 
    
         
            -
             
     | 
| 
       53 
     | 
    
         
            -
             
     | 
| 
       54 
     | 
    
         
            -
             
     | 
| 
       55 
     | 
    
         
            -
             
     | 
| 
       56 
     | 
    
         
            -
             
     | 
| 
       57 
     | 
    
         
            -
             
     | 
| 
       58 
     | 
    
         
            -
             
     | 
| 
       59 
     | 
    
         
            -
             
     | 
| 
       60 
     | 
    
         
            -
             
     | 
| 
       61 
     | 
    
         
            -
             
     | 
| 
       62 
     | 
    
         
            -
             
     | 
| 
       63 
     | 
    
         
            -
             
     | 
| 
       64 
     | 
    
         
            -
             
     | 
| 
       65 
     | 
    
         
            -
             
     | 
| 
       66 
     | 
    
         
            -
                     
     | 
| 
       67 
     | 
    
         
            -
             
     | 
| 
       68 
     | 
    
         
            -
                     
     | 
| 
       69 
     | 
    
         
            -
             
     | 
| 
       70 
     | 
    
         
            -
                     
     | 
| 
       71 
     | 
    
         
            -
             
     | 
| 
       72 
     | 
    
         
            -
             
     | 
| 
       73 
     | 
    
         
            -
             
     | 
| 
       74 
     | 
    
         
            -
             
     | 
| 
       75 
     | 
    
         
            -
             
     | 
| 
       76 
     | 
    
         
            -
             
     | 
| 
       77 
     | 
    
         
            -
             
     | 
| 
      
 1 
     | 
    
         
            +
            begin
         
     | 
| 
      
 2 
     | 
    
         
            +
                require 'rubygems'
         
     | 
| 
      
 3 
     | 
    
         
            +
            rescue LoadError
         
     | 
| 
      
 4 
     | 
    
         
            +
            end
         
     | 
| 
      
 5 
     | 
    
         
            +
             
     | 
| 
      
 6 
     | 
    
         
            +
            require 'texplay'
         
     | 
| 
      
 7 
     | 
    
         
            +
             
     | 
| 
      
 8 
     | 
    
         
            +
            if RUBY_VERSION =~ /1.8/
         
     | 
| 
      
 9 
     | 
    
         
            +
                require 'jcode'
         
     | 
| 
      
 10 
     | 
    
         
            +
            end
         
     | 
| 
      
 11 
     | 
    
         
            +
             
     | 
| 
      
 12 
     | 
    
         
            +
            # setup will be executed straight after Gosu::Image instantiation
         
     | 
| 
      
 13 
     | 
    
         
            +
            TexPlay::on_setup do
         
     | 
| 
      
 14 
     | 
    
         
            +
                @turtle_pos = TexPlay::TPPoint.new(width / 2, height / 2 )
         
     | 
| 
      
 15 
     | 
    
         
            +
                @turtle_angle = 0
         
     | 
| 
      
 16 
     | 
    
         
            +
            end
         
     | 
| 
      
 17 
     | 
    
         
            +
             
     | 
| 
      
 18 
     | 
    
         
            +
             
     | 
| 
      
 19 
     | 
    
         
            +
            TexPlay::create_macro(:move_to) do |x, y|
         
     | 
| 
      
 20 
     | 
    
         
            +
                capture { 
         
     | 
| 
      
 21 
     | 
    
         
            +
                    @turtle_pos.x = x
         
     | 
| 
      
 22 
     | 
    
         
            +
                    @turtle_pos.y = y
         
     | 
| 
      
 23 
     | 
    
         
            +
                }
         
     | 
| 
      
 24 
     | 
    
         
            +
            end
         
     | 
| 
      
 25 
     | 
    
         
            +
             
     | 
| 
      
 26 
     | 
    
         
            +
            TexPlay::create_macro(:move_rel) do |dx, dy|
         
     | 
| 
      
 27 
     | 
    
         
            +
                capture { 
         
     | 
| 
      
 28 
     | 
    
         
            +
                    @turtle_pos.x += dx
         
     | 
| 
      
 29 
     | 
    
         
            +
                    @turtle_pos.y += dy
         
     | 
| 
      
 30 
     | 
    
         
            +
                }
         
     | 
| 
      
 31 
     | 
    
         
            +
            end
         
     | 
| 
      
 32 
     | 
    
         
            +
             
     | 
| 
      
 33 
     | 
    
         
            +
            TexPlay::create_macro(:line_to) do |x, y, *other|
         
     | 
| 
      
 34 
     | 
    
         
            +
                capture { 
         
     | 
| 
      
 35 
     | 
    
         
            +
                    line(@turtle_pos.x, @turtle_pos.y, x, y, *other)
         
     | 
| 
      
 36 
     | 
    
         
            +
             
     | 
| 
      
 37 
     | 
    
         
            +
                    @turtle_pos.x, @turtle_pos.y = x, y
         
     | 
| 
      
 38 
     | 
    
         
            +
                }
         
     | 
| 
      
 39 
     | 
    
         
            +
            end
         
     | 
| 
      
 40 
     | 
    
         
            +
             
     | 
| 
      
 41 
     | 
    
         
            +
            TexPlay::create_macro(:line_rel) do |dx, dy, *other|
         
     | 
| 
      
 42 
     | 
    
         
            +
                capture { 
         
     | 
| 
      
 43 
     | 
    
         
            +
                    x = @turtle_pos.x + dx
         
     | 
| 
      
 44 
     | 
    
         
            +
                    y = @turtle_pos.y + dy
         
     | 
| 
      
 45 
     | 
    
         
            +
             
     | 
| 
      
 46 
     | 
    
         
            +
                    line(@turtle_pos.x, @turtle_pos.y, x, y, *other)
         
     | 
| 
      
 47 
     | 
    
         
            +
             
     | 
| 
      
 48 
     | 
    
         
            +
                    @turtle_pos.x, @turtle_pos.y = x, y
         
     | 
| 
      
 49 
     | 
    
         
            +
                }
         
     | 
| 
      
 50 
     | 
    
         
            +
            end
         
     | 
| 
      
 51 
     | 
    
         
            +
             
     | 
| 
      
 52 
     | 
    
         
            +
            TexPlay::create_macro(:turn_to) do |a|
         
     | 
| 
      
 53 
     | 
    
         
            +
                capture {
         
     | 
| 
      
 54 
     | 
    
         
            +
                    @turtle_angle = a
         
     | 
| 
      
 55 
     | 
    
         
            +
                }
         
     | 
| 
      
 56 
     | 
    
         
            +
            end
         
     | 
| 
      
 57 
     | 
    
         
            +
             
     | 
| 
      
 58 
     | 
    
         
            +
            TexPlay::create_macro(:turn) do |da|
         
     | 
| 
      
 59 
     | 
    
         
            +
                capture { 
         
     | 
| 
      
 60 
     | 
    
         
            +
                    @turtle_angle += da
         
     | 
| 
      
 61 
     | 
    
         
            +
                }
         
     | 
| 
      
 62 
     | 
    
         
            +
            end
         
     | 
| 
      
 63 
     | 
    
         
            +
             
     | 
| 
      
 64 
     | 
    
         
            +
            TexPlay::create_macro(:forward) do |dist, *other|
         
     | 
| 
      
 65 
     | 
    
         
            +
                capture {
         
     | 
| 
      
 66 
     | 
    
         
            +
                    visible = other.shift
         
     | 
| 
      
 67 
     | 
    
         
            +
             
     | 
| 
      
 68 
     | 
    
         
            +
                    radians_per_degree = 0.0174532925199433
         
     | 
| 
      
 69 
     | 
    
         
            +
             
     | 
| 
      
 70 
     | 
    
         
            +
                    x = @turtle_pos.x + dist * Math::cos(radians_per_degree * @turtle_angle)
         
     | 
| 
      
 71 
     | 
    
         
            +
                    y = @turtle_pos.y + dist * Math::sin(radians_per_degree * @turtle_angle)
         
     | 
| 
      
 72 
     | 
    
         
            +
             
     | 
| 
      
 73 
     | 
    
         
            +
                    if(visible) then
         
     | 
| 
      
 74 
     | 
    
         
            +
                        line_to(x, y, *other)
         
     | 
| 
      
 75 
     | 
    
         
            +
                    else
         
     | 
| 
      
 76 
     | 
    
         
            +
                        move_to(x, y)
         
     | 
| 
      
 77 
     | 
    
         
            +
                    end
         
     | 
| 
      
 78 
     | 
    
         
            +
                }
         
     | 
| 
      
 79 
     | 
    
         
            +
            end
         
     | 
| 
      
 80 
     | 
    
         
            +
             
     | 
| 
      
 81 
     | 
    
         
            +
            ## L-System code
         
     | 
| 
      
 82 
     | 
    
         
            +
             
     | 
| 
      
 83 
     | 
    
         
            +
            # monkeypatches to TexPlay class
         
     | 
| 
      
 84 
     | 
    
         
            +
            module TexPlay
         
     | 
| 
      
 85 
     | 
    
         
            +
                class LSystem
         
     | 
| 
      
 86 
     | 
    
         
            +
                    def initialize(&block)
         
     | 
| 
      
 87 
     | 
    
         
            +
                        @rules = {}
         
     | 
| 
      
 88 
     | 
    
         
            +
                        
         
     | 
| 
      
 89 
     | 
    
         
            +
                        instance_eval(&block) if block
         
     | 
| 
      
 90 
     | 
    
         
            +
                    end
         
     | 
| 
      
 91 
     | 
    
         
            +
                    
         
     | 
| 
      
 92 
     | 
    
         
            +
                    def rule(new_rule)
         
     | 
| 
      
 93 
     | 
    
         
            +
                        @rules.merge!(new_rule)
         
     | 
| 
      
 94 
     | 
    
         
            +
                    end
         
     | 
| 
      
 95 
     | 
    
         
            +
             
     | 
| 
      
 96 
     | 
    
         
            +
                    def atom(new_atom)
         
     | 
| 
      
 97 
     | 
    
         
            +
                        @atom = new_atom
         
     | 
| 
      
 98 
     | 
    
         
            +
                    end
         
     | 
| 
      
 99 
     | 
    
         
            +
             
     | 
| 
      
 100 
     | 
    
         
            +
                    def angle(new_angle=nil)
         
     | 
| 
      
 101 
     | 
    
         
            +
                        return @angle if !new_angle
         
     | 
| 
      
 102 
     | 
    
         
            +
                        @angle = new_angle
         
     | 
| 
      
 103 
     | 
    
         
            +
                    end
         
     | 
| 
      
 104 
     | 
    
         
            +
             
     | 
| 
      
 105 
     | 
    
         
            +
                    def produce_string(order)
         
     | 
| 
      
 106 
     | 
    
         
            +
                        order = order[:order]
         
     | 
| 
      
 107 
     | 
    
         
            +
                        string = @atom.dup
         
     | 
| 
      
 108 
     | 
    
         
            +
                        
         
     | 
| 
      
 109 
     | 
    
         
            +
                        order.times do
         
     | 
| 
      
 110 
     | 
    
         
            +
                            i = 0
         
     | 
| 
      
 111 
     | 
    
         
            +
                            while(i < string.length)
         
     | 
| 
      
 112 
     | 
    
         
            +
                                sub = @rules[string[i, 1]]
         
     | 
| 
      
 113 
     | 
    
         
            +
                                
         
     | 
| 
      
 114 
     | 
    
         
            +
                                string[i] = sub if sub
         
     | 
| 
      
 115 
     | 
    
         
            +
                                
         
     | 
| 
      
 116 
     | 
    
         
            +
                                i += sub ? sub.length : 1
         
     | 
| 
      
 117 
     | 
    
         
            +
                            end
         
     | 
| 
      
 118 
     | 
    
         
            +
                        end
         
     | 
| 
      
 119 
     | 
    
         
            +
                        
         
     | 
| 
      
 120 
     | 
    
         
            +
                        string
         
     | 
| 
      
 121 
     | 
    
         
            +
                    end
         
     | 
| 
      
 122 
     | 
    
         
            +
                end
         
     | 
| 
      
 123 
     | 
    
         
            +
            end
         
     | 
| 
      
 124 
     | 
    
         
            +
             
     | 
| 
      
 125 
     | 
    
         
            +
            # L-System macro
         
     | 
| 
      
 126 
     | 
    
         
            +
            TexPlay::create_macro(:lsystem) do |x, y, system, options|
         
     | 
| 
      
 127 
     | 
    
         
            +
                capture {
         
     | 
| 
      
 128 
     | 
    
         
            +
                    theta = system.angle
         
     | 
| 
      
 129 
     | 
    
         
            +
                    turtle_stack = []
         
     | 
| 
      
 130 
     | 
    
         
            +
                    move_to(x, y)
         
     | 
| 
      
 131 
     | 
    
         
            +
                    line_length = options[:line_length] || 1
         
     | 
| 
      
 132 
     | 
    
         
            +
                    
         
     | 
| 
      
 133 
     | 
    
         
            +
                    system.produce_string(options).each_char do |v|
         
     | 
| 
      
 134 
     | 
    
         
            +
                                  
         
     | 
| 
      
 135 
     | 
    
         
            +
                        case v
         
     | 
| 
      
 136 
     | 
    
         
            +
                        when "F"
         
     | 
| 
      
 137 
     | 
    
         
            +
                            forward(line_length, true)
         
     | 
| 
      
 138 
     | 
    
         
            +
                        when "+"
         
     | 
| 
      
 139 
     | 
    
         
            +
                            turn(theta)
         
     | 
| 
      
 140 
     | 
    
         
            +
                        when "-"
         
     | 
| 
      
 141 
     | 
    
         
            +
                            turn(-theta)
         
     | 
| 
      
 142 
     | 
    
         
            +
                        when "["
         
     | 
| 
      
 143 
     | 
    
         
            +
                            turtle_stack.push([@turtle_pos.dup, @turtle_angle])
         
     | 
| 
      
 144 
     | 
    
         
            +
                        when "]"
         
     | 
| 
      
 145 
     | 
    
         
            +
                            @turtle_pos, @turtle_angle = turtle_stack.pop
         
     | 
| 
      
 146 
     | 
    
         
            +
                        end
         
     | 
| 
      
 147 
     | 
    
         
            +
                    end
         
     | 
| 
      
 148 
     | 
    
         
            +
                }
         
     | 
| 
      
 149 
     | 
    
         
            +
            end
         
     | 
    
        data/lib/texplay.rb
    CHANGED
    
    | 
         @@ -1,134 +1,134 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            # (C) John Mair 2009, under the MIT licence
         
     | 
| 
       2 
     | 
    
         
            -
             
     | 
| 
       3 
     | 
    
         
            -
            begin
         
     | 
| 
       4 
     | 
    
         
            -
                require 'rubygems'
         
     | 
| 
       5 
     | 
    
         
            -
            rescue LoadError
         
     | 
| 
       6 
     | 
    
         
            -
            end
         
     | 
| 
       7 
     | 
    
         
            -
             
     | 
| 
       8 
     | 
    
         
            -
            # include gosu first
         
     | 
| 
       9 
     | 
    
         
            -
            require 'rbconfig'
         
     | 
| 
       10 
     | 
    
         
            -
            require 'gosu'
         
     | 
| 
       11 
     | 
    
         
            -
             
     | 
| 
       12 
     | 
    
         
            -
            module TexPlay
         
     | 
| 
       13 
     | 
    
         
            -
                TEXPLAY_VERSION = "0.2. 
     | 
| 
       14 
     | 
    
         
            -
             
     | 
| 
       15 
     | 
    
         
            -
                def self::on_setup(&block)
         
     | 
| 
       16 
     | 
    
         
            -
                    raise "need a block" if !block
         
     | 
| 
       17 
     | 
    
         
            -
                    
         
     | 
| 
       18 
     | 
    
         
            -
                    @__init_procs__ ||= []
         
     | 
| 
       19 
     | 
    
         
            -
                    @__init_procs__.push(block)
         
     | 
| 
       20 
     | 
    
         
            -
                end
         
     | 
| 
       21 
     | 
    
         
            -
             
     | 
| 
       22 
     | 
    
         
            -
                def self::setup(receiver)
         
     | 
| 
       23 
     | 
    
         
            -
                    if @__init_procs__ then
         
     | 
| 
       24 
     | 
    
         
            -
                        @__init_procs__.each do |init_proc|
         
     | 
| 
       25 
     | 
    
         
            -
                            receiver.instance_eval(&init_proc)
         
     | 
| 
       26 
     | 
    
         
            -
                        end
         
     | 
| 
       27 
     | 
    
         
            -
                    end
         
     | 
| 
       28 
     | 
    
         
            -
                end
         
     | 
| 
       29 
     | 
    
         
            -
             
     | 
| 
       30 
     | 
    
         
            -
                def self::create_blank_image(window, width, height)
         
     | 
| 
       31 
     | 
    
         
            -
                    Gosu::Image.new(window, EmptyImageStub.new(width, height))
         
     | 
| 
       32 
     | 
    
         
            -
                end
         
     | 
| 
       33 
     | 
    
         
            -
             
     | 
| 
       34 
     | 
    
         
            -
                module Colors
         
     | 
| 
       35 
     | 
    
         
            -
                    Red = [1, 0, 0, 1]
         
     | 
| 
       36 
     | 
    
         
            -
                    Green = [0, 1, 0, 1]
         
     | 
| 
       37 
     | 
    
         
            -
                    Blue = [0, 0, 1, 1]
         
     | 
| 
       38 
     | 
    
         
            -
                    Black = [0, 0, 0, 1]
         
     | 
| 
       39 
     | 
    
         
            -
                    White = [1, 1, 1, 1]
         
     | 
| 
       40 
     | 
    
         
            -
                    Grey = [0.5, 0.5, 0.5, 1]
         
     | 
| 
       41 
     | 
    
         
            -
                    Alpha = [0, 0, 0, 0]
         
     | 
| 
       42 
     | 
    
         
            -
                    Purple = [1, 0, 1, 1]
         
     | 
| 
       43 
     | 
    
         
            -
                    Yellow = [1, 1, 0, 1]
         
     | 
| 
       44 
     | 
    
         
            -
                    Cyan = [0, 1, 1, 1]
         
     | 
| 
       45 
     | 
    
         
            -
                    Orange = [1, 0.5, 0, 1]
         
     | 
| 
       46 
     | 
    
         
            -
                    Brown = [0.39, 0.26, 0.13, 1]
         
     | 
| 
       47 
     | 
    
         
            -
                    Turquoise = [1, 0.6, 0.8, 1]
         
     | 
| 
       48 
     | 
    
         
            -
                    Tyrian = [0.4, 0.007, 0.235, 1]
         
     | 
| 
       49 
     | 
    
         
            -
                end
         
     | 
| 
       50 
     | 
    
         
            -
                include Colors
         
     | 
| 
       51 
     | 
    
         
            -
            end
         
     | 
| 
       52 
     | 
    
         
            -
             
     | 
| 
       53 
     | 
    
         
            -
            # credit to philomory for this class
         
     | 
| 
       54 
     | 
    
         
            -
            class EmptyImageStub
         
     | 
| 
       55 
     | 
    
         
            -
                def initialize(w, h)
         
     | 
| 
       56 
     | 
    
         
            -
                    @w, @h = w, h
         
     | 
| 
       57 
     | 
    
         
            -
                end
         
     | 
| 
       58 
     | 
    
         
            -
                
         
     | 
| 
       59 
     | 
    
         
            -
                def to_blob
         
     | 
| 
       60 
     | 
    
         
            -
                    "\0" * @w * @h * 4
         
     | 
| 
       61 
     | 
    
         
            -
                end
         
     | 
| 
       62 
     | 
    
         
            -
                
         
     | 
| 
       63 
     | 
    
         
            -
                def rows
         
     | 
| 
       64 
     | 
    
         
            -
                    @h
         
     | 
| 
       65 
     | 
    
         
            -
                end
         
     | 
| 
       66 
     | 
    
         
            -
                
         
     | 
| 
       67 
     | 
    
         
            -
                def columns
         
     | 
| 
       68 
     | 
    
         
            -
                    @w
         
     | 
| 
       69 
     | 
    
         
            -
                end
         
     | 
| 
       70 
     | 
    
         
            -
            end
         
     | 
| 
       71 
     | 
    
         
            -
             
     | 
| 
       72 
     | 
    
         
            -
            # bring in user-defined extensions to TexPlay
         
     | 
| 
       73 
     | 
    
         
            -
            direc = File.dirname(__FILE__)
         
     | 
| 
       74 
     | 
    
         
            -
            dlext = Config::CONFIG['DLEXT']
         
     | 
| 
       75 
     | 
    
         
            -
            begin
         
     | 
| 
       76 
     | 
    
         
            -
                if RUBY_VERSION && RUBY_VERSION =~ /1.9/
         
     | 
| 
       77 
     | 
    
         
            -
                    require "#{direc}/ctexplay.19.#{dlext}"
         
     | 
| 
       78 
     | 
    
         
            -
                else
         
     | 
| 
       79 
     | 
    
         
            -
                    require "#{direc}/ctexplay.18.#{dlext}"
         
     | 
| 
       80 
     | 
    
         
            -
                end
         
     | 
| 
       81 
     | 
    
         
            -
            rescue LoadError => e
         
     | 
| 
       82 
     | 
    
         
            -
                require "#{direc}/ctexplay.#{dlext}"
         
     | 
| 
       83 
     | 
    
         
            -
            end
         
     | 
| 
       84 
     | 
    
         
            -
                
         
     | 
| 
       85 
     | 
    
         
            -
            require "#{direc}/texplay-contrib"
         
     | 
| 
       86 
     | 
    
         
            -
             
     | 
| 
       87 
     | 
    
         
            -
            # monkey patching the Gosu::Image class to add image manipulation functionality
         
     | 
| 
       88 
     | 
    
         
            -
            module Gosu
         
     | 
| 
       89 
     | 
    
         
            -
                class Image
         
     | 
| 
       90 
     | 
    
         
            -
             
     | 
| 
       91 
     | 
    
         
            -
                    # bring in the TexPlay image manipulation methods
         
     | 
| 
       92 
     | 
    
         
            -
                    include TexPlay
         
     | 
| 
       93 
     | 
    
         
            -
                    
         
     | 
| 
       94 
     | 
    
         
            -
                    class << self 
         
     | 
| 
       95 
     | 
    
         
            -
                        alias_method :original_new, :new
         
     | 
| 
       96 
     | 
    
         
            -
                        
         
     | 
| 
       97 
     | 
    
         
            -
                        def new(*args, &block)
         
     | 
| 
       98 
     | 
    
         
            -
             
     | 
| 
       99 
     | 
    
         
            -
                            # invoke old behaviour
         
     | 
| 
       100 
     | 
    
         
            -
                            obj = original_new(*args, &block)
         
     | 
| 
       101 
     | 
    
         
            -
             
     | 
| 
       102 
     | 
    
         
            -
                            # refresh the TexPlay image cache
         
     | 
| 
       103 
     | 
    
         
            -
                            if obj.width <= (TexPlay::TP_MAX_QUAD_SIZE - 2) &&
         
     | 
| 
       104 
     | 
    
         
            -
                                    obj.height <= (TexPlay::TP_MAX_QUAD_SIZE - 2) && obj.quad_cached? then
         
     | 
| 
       105 
     | 
    
         
            -
                                
         
     | 
| 
       106 
     | 
    
         
            -
                                obj.refresh_cache
         
     | 
| 
       107 
     | 
    
         
            -
                            end
         
     | 
| 
       108 
     | 
    
         
            -
             
     | 
| 
       109 
     | 
    
         
            -
                            # run custom setup
         
     | 
| 
       110 
     | 
    
         
            -
                            TexPlay::setup(obj)
         
     | 
| 
       111 
     | 
    
         
            -
             
     | 
| 
       112 
     | 
    
         
            -
                             obj.instance_variable_set(:@__window__, args.first)
         
     | 
| 
       113 
     | 
    
         
            -
             
     | 
| 
       114 
     | 
    
         
            -
                            # return the new image
         
     | 
| 
       115 
     | 
    
         
            -
                            obj
         
     | 
| 
       116 
     | 
    
         
            -
                        end
         
     | 
| 
       117 
     | 
    
         
            -
                    end
         
     | 
| 
       118 
     | 
    
         
            -
                    
         
     | 
| 
       119 
     | 
    
         
            -
                    def __window__
         
     | 
| 
       120 
     | 
    
         
            -
                        @__window__
         
     | 
| 
       121 
     | 
    
         
            -
                    end
         
     | 
| 
       122 
     | 
    
         
            -
                end
         
     | 
| 
       123 
     | 
    
         
            -
            end
         
     | 
| 
       124 
     | 
    
         
            -
             
     | 
| 
       125 
     | 
    
         
            -
            # a bug in ruby 1.8.6 rb_eval_string() means i must define this here (rather than in texplay.c)
         
     | 
| 
       126 
     | 
    
         
            -
            class Proc  
         
     | 
| 
       127 
     | 
    
         
            -
                def __context__
         
     | 
| 
       128 
     | 
    
         
            -
                    eval('self', self.binding)
         
     | 
| 
       129 
     | 
    
         
            -
                end
         
     | 
| 
       130 
     | 
    
         
            -
            end
         
     | 
| 
       131 
     | 
    
         
            -
             
     | 
| 
       132 
     | 
    
         
            -
             
     | 
| 
       133 
     | 
    
         
            -
             
     | 
| 
       134 
     | 
    
         
            -
             
     | 
| 
      
 1 
     | 
    
         
            +
            # (C) John Mair 2009, under the MIT licence
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            begin
         
     | 
| 
      
 4 
     | 
    
         
            +
                require 'rubygems'
         
     | 
| 
      
 5 
     | 
    
         
            +
            rescue LoadError
         
     | 
| 
      
 6 
     | 
    
         
            +
            end
         
     | 
| 
      
 7 
     | 
    
         
            +
             
     | 
| 
      
 8 
     | 
    
         
            +
            # include gosu first
         
     | 
| 
      
 9 
     | 
    
         
            +
            require 'rbconfig'
         
     | 
| 
      
 10 
     | 
    
         
            +
            require 'gosu'
         
     | 
| 
      
 11 
     | 
    
         
            +
             
     | 
| 
      
 12 
     | 
    
         
            +
            module TexPlay
         
     | 
| 
      
 13 
     | 
    
         
            +
                TEXPLAY_VERSION = "0.2.4"
         
     | 
| 
      
 14 
     | 
    
         
            +
             
     | 
| 
      
 15 
     | 
    
         
            +
                def self::on_setup(&block)
         
     | 
| 
      
 16 
     | 
    
         
            +
                    raise "need a block" if !block
         
     | 
| 
      
 17 
     | 
    
         
            +
                    
         
     | 
| 
      
 18 
     | 
    
         
            +
                    @__init_procs__ ||= []
         
     | 
| 
      
 19 
     | 
    
         
            +
                    @__init_procs__.push(block)
         
     | 
| 
      
 20 
     | 
    
         
            +
                end
         
     | 
| 
      
 21 
     | 
    
         
            +
             
     | 
| 
      
 22 
     | 
    
         
            +
                def self::setup(receiver)
         
     | 
| 
      
 23 
     | 
    
         
            +
                    if @__init_procs__ then
         
     | 
| 
      
 24 
     | 
    
         
            +
                        @__init_procs__.each do |init_proc|
         
     | 
| 
      
 25 
     | 
    
         
            +
                            receiver.instance_eval(&init_proc)
         
     | 
| 
      
 26 
     | 
    
         
            +
                        end
         
     | 
| 
      
 27 
     | 
    
         
            +
                    end
         
     | 
| 
      
 28 
     | 
    
         
            +
                end
         
     | 
| 
      
 29 
     | 
    
         
            +
             
     | 
| 
      
 30 
     | 
    
         
            +
                def self::create_blank_image(window, width, height)
         
     | 
| 
      
 31 
     | 
    
         
            +
                    Gosu::Image.new(window, EmptyImageStub.new(width, height))
         
     | 
| 
      
 32 
     | 
    
         
            +
                end
         
     | 
| 
      
 33 
     | 
    
         
            +
             
     | 
| 
      
 34 
     | 
    
         
            +
                module Colors
         
     | 
| 
      
 35 
     | 
    
         
            +
                    Red = [1, 0, 0, 1]
         
     | 
| 
      
 36 
     | 
    
         
            +
                    Green = [0, 1, 0, 1]
         
     | 
| 
      
 37 
     | 
    
         
            +
                    Blue = [0, 0, 1, 1]
         
     | 
| 
      
 38 
     | 
    
         
            +
                    Black = [0, 0, 0, 1]
         
     | 
| 
      
 39 
     | 
    
         
            +
                    White = [1, 1, 1, 1]
         
     | 
| 
      
 40 
     | 
    
         
            +
                    Grey = [0.5, 0.5, 0.5, 1]
         
     | 
| 
      
 41 
     | 
    
         
            +
                    Alpha = [0, 0, 0, 0]
         
     | 
| 
      
 42 
     | 
    
         
            +
                    Purple = [1, 0, 1, 1]
         
     | 
| 
      
 43 
     | 
    
         
            +
                    Yellow = [1, 1, 0, 1]
         
     | 
| 
      
 44 
     | 
    
         
            +
                    Cyan = [0, 1, 1, 1]
         
     | 
| 
      
 45 
     | 
    
         
            +
                    Orange = [1, 0.5, 0, 1]
         
     | 
| 
      
 46 
     | 
    
         
            +
                    Brown = [0.39, 0.26, 0.13, 1]
         
     | 
| 
      
 47 
     | 
    
         
            +
                    Turquoise = [1, 0.6, 0.8, 1]
         
     | 
| 
      
 48 
     | 
    
         
            +
                    Tyrian = [0.4, 0.007, 0.235, 1]
         
     | 
| 
      
 49 
     | 
    
         
            +
                end
         
     | 
| 
      
 50 
     | 
    
         
            +
                include Colors
         
     | 
| 
      
 51 
     | 
    
         
            +
            end
         
     | 
| 
      
 52 
     | 
    
         
            +
             
     | 
| 
      
 53 
     | 
    
         
            +
            # credit to philomory for this class
         
     | 
| 
      
 54 
     | 
    
         
            +
            class EmptyImageStub
         
     | 
| 
      
 55 
     | 
    
         
            +
                def initialize(w, h)
         
     | 
| 
      
 56 
     | 
    
         
            +
                    @w, @h = w, h
         
     | 
| 
      
 57 
     | 
    
         
            +
                end
         
     | 
| 
      
 58 
     | 
    
         
            +
                
         
     | 
| 
      
 59 
     | 
    
         
            +
                def to_blob
         
     | 
| 
      
 60 
     | 
    
         
            +
                    "\0" * @w * @h * 4
         
     | 
| 
      
 61 
     | 
    
         
            +
                end
         
     | 
| 
      
 62 
     | 
    
         
            +
                
         
     | 
| 
      
 63 
     | 
    
         
            +
                def rows
         
     | 
| 
      
 64 
     | 
    
         
            +
                    @h
         
     | 
| 
      
 65 
     | 
    
         
            +
                end
         
     | 
| 
      
 66 
     | 
    
         
            +
                
         
     | 
| 
      
 67 
     | 
    
         
            +
                def columns
         
     | 
| 
      
 68 
     | 
    
         
            +
                    @w
         
     | 
| 
      
 69 
     | 
    
         
            +
                end
         
     | 
| 
      
 70 
     | 
    
         
            +
            end
         
     | 
| 
      
 71 
     | 
    
         
            +
             
     | 
| 
      
 72 
     | 
    
         
            +
            # bring in user-defined extensions to TexPlay
         
     | 
| 
      
 73 
     | 
    
         
            +
            direc = File.dirname(__FILE__)
         
     | 
| 
      
 74 
     | 
    
         
            +
            dlext = Config::CONFIG['DLEXT']
         
     | 
| 
      
 75 
     | 
    
         
            +
            begin
         
     | 
| 
      
 76 
     | 
    
         
            +
                if RUBY_VERSION && RUBY_VERSION =~ /1.9/
         
     | 
| 
      
 77 
     | 
    
         
            +
                    require "#{direc}/ctexplay.19.#{dlext}"
         
     | 
| 
      
 78 
     | 
    
         
            +
                else
         
     | 
| 
      
 79 
     | 
    
         
            +
                    require "#{direc}/ctexplay.18.#{dlext}"
         
     | 
| 
      
 80 
     | 
    
         
            +
                end
         
     | 
| 
      
 81 
     | 
    
         
            +
            rescue LoadError => e
         
     | 
| 
      
 82 
     | 
    
         
            +
                require "#{direc}/ctexplay.#{dlext}"
         
     | 
| 
      
 83 
     | 
    
         
            +
            end
         
     | 
| 
      
 84 
     | 
    
         
            +
                
         
     | 
| 
      
 85 
     | 
    
         
            +
            require "#{direc}/texplay-contrib"
         
     | 
| 
      
 86 
     | 
    
         
            +
             
     | 
| 
      
 87 
     | 
    
         
            +
            # monkey patching the Gosu::Image class to add image manipulation functionality
         
     | 
| 
      
 88 
     | 
    
         
            +
            module Gosu
         
     | 
| 
      
 89 
     | 
    
         
            +
                class Image
         
     | 
| 
      
 90 
     | 
    
         
            +
             
     | 
| 
      
 91 
     | 
    
         
            +
                    # bring in the TexPlay image manipulation methods
         
     | 
| 
      
 92 
     | 
    
         
            +
                    include TexPlay
         
     | 
| 
      
 93 
     | 
    
         
            +
                    
         
     | 
| 
      
 94 
     | 
    
         
            +
                    class << self 
         
     | 
| 
      
 95 
     | 
    
         
            +
                        alias_method :original_new, :new
         
     | 
| 
      
 96 
     | 
    
         
            +
                        
         
     | 
| 
      
 97 
     | 
    
         
            +
                        def new(*args, &block)
         
     | 
| 
      
 98 
     | 
    
         
            +
             
     | 
| 
      
 99 
     | 
    
         
            +
                            # invoke old behaviour
         
     | 
| 
      
 100 
     | 
    
         
            +
                            obj = original_new(*args, &block)
         
     | 
| 
      
 101 
     | 
    
         
            +
             
     | 
| 
      
 102 
     | 
    
         
            +
                            # refresh the TexPlay image cache
         
     | 
| 
      
 103 
     | 
    
         
            +
                            if obj.width <= (TexPlay::TP_MAX_QUAD_SIZE - 2) &&
         
     | 
| 
      
 104 
     | 
    
         
            +
                                    obj.height <= (TexPlay::TP_MAX_QUAD_SIZE - 2) && obj.quad_cached? then
         
     | 
| 
      
 105 
     | 
    
         
            +
                                
         
     | 
| 
      
 106 
     | 
    
         
            +
                                obj.refresh_cache
         
     | 
| 
      
 107 
     | 
    
         
            +
                            end
         
     | 
| 
      
 108 
     | 
    
         
            +
             
     | 
| 
      
 109 
     | 
    
         
            +
                            # run custom setup
         
     | 
| 
      
 110 
     | 
    
         
            +
                            TexPlay::setup(obj)
         
     | 
| 
      
 111 
     | 
    
         
            +
             
     | 
| 
      
 112 
     | 
    
         
            +
                             obj.instance_variable_set(:@__window__, args.first)
         
     | 
| 
      
 113 
     | 
    
         
            +
             
     | 
| 
      
 114 
     | 
    
         
            +
                            # return the new image
         
     | 
| 
      
 115 
     | 
    
         
            +
                            obj
         
     | 
| 
      
 116 
     | 
    
         
            +
                        end
         
     | 
| 
      
 117 
     | 
    
         
            +
                    end
         
     | 
| 
      
 118 
     | 
    
         
            +
                    
         
     | 
| 
      
 119 
     | 
    
         
            +
                    def __window__
         
     | 
| 
      
 120 
     | 
    
         
            +
                        @__window__
         
     | 
| 
      
 121 
     | 
    
         
            +
                    end
         
     | 
| 
      
 122 
     | 
    
         
            +
                end
         
     | 
| 
      
 123 
     | 
    
         
            +
            end
         
     | 
| 
      
 124 
     | 
    
         
            +
             
     | 
| 
      
 125 
     | 
    
         
            +
            # a bug in ruby 1.8.6 rb_eval_string() means i must define this here (rather than in texplay.c)
         
     | 
| 
      
 126 
     | 
    
         
            +
            class Proc  
         
     | 
| 
      
 127 
     | 
    
         
            +
                def __context__
         
     | 
| 
      
 128 
     | 
    
         
            +
                    eval('self', self.binding)
         
     | 
| 
      
 129 
     | 
    
         
            +
                end
         
     | 
| 
      
 130 
     | 
    
         
            +
            end
         
     | 
| 
      
 131 
     | 
    
         
            +
             
     | 
| 
      
 132 
     | 
    
         
            +
             
     | 
| 
      
 133 
     | 
    
         
            +
             
     | 
| 
      
 134 
     | 
    
         
            +
             
     | 
    
        data/src/Makefile
    CHANGED
    
    | 
         @@ -53,7 +53,7 @@ warnflags = 
     | 
|
| 
       53 
53 
     | 
    
         
             
            CFLAGS   =  -MD -Zi  -O2b2xg- -G6 -Zm600 
         
     | 
| 
       54 
54 
     | 
    
         
             
            INCFLAGS = -I. -I$(arch_hdrdir) -I$(hdrdir)/ruby/backward -I$(hdrdir) -I$(srcdir)
         
     | 
| 
       55 
55 
     | 
    
         
             
            DEFS     = 
         
     | 
| 
       56 
     | 
    
         
            -
            CPPFLAGS = 
     | 
| 
      
 56 
     | 
    
         
            +
            CPPFLAGS =     -DRUBY_19
         
     | 
| 
       57 
57 
     | 
    
         
             
            CXXFLAGS = $(CFLAGS) -MD -Zi  -O2b2xg- -G6 -Zm600
         
     | 
| 
       58 
58 
     | 
    
         
             
            ldflags  = -incremental:no -debug -opt:ref -opt:icf
         
     | 
| 
       59 
59 
     | 
    
         
             
            dldflags = -incremental:no -debug -opt:ref -opt:icf -dll $(LIBPATH)
         
     | 
    
        data/src/actions.obj
    CHANGED
    
    | 
         Binary file 
     | 
    
        data/src/bindings.obj
    CHANGED
    
    | 
         Binary file 
     | 
    
        data/src/cache.obj
    CHANGED
    
    | 
         Binary file 
     | 
    
        data/src/compat.h
    CHANGED
    
    | 
         @@ -6,9 +6,13 @@ 
     | 
|
| 
       6 
6 
     | 
    
         
             
            #include <ruby.h>
         
     | 
| 
       7 
7 
     | 
    
         | 
| 
       8 
8 
     | 
    
         
             
            /* this is the test we use to identify ruby 1.9.1 */
         
     | 
| 
      
 9 
     | 
    
         
            +
             
     | 
| 
      
 10 
     | 
    
         
            +
            /* commenting out this test because it doesn't seem to work in 1.8.7 */
         
     | 
| 
      
 11 
     | 
    
         
            +
            /*
         
     | 
| 
       9 
12 
     | 
    
         
             
            #ifdef RCLASS_M_TBL
         
     | 
| 
       10 
13 
     | 
    
         
             
            # define RUBY_19
         
     | 
| 
       11 
14 
     | 
    
         
             
            #endif
         
     | 
| 
      
 15 
     | 
    
         
            +
            */
         
     | 
| 
       12 
16 
     | 
    
         | 
| 
       13 
17 
     | 
    
         
             
            /* macros for backwards compatibility with 1.8 */
         
     | 
| 
       14 
18 
     | 
    
         
             
            #ifndef RUBY_19
         
     | 
| 
         Binary file 
     | 
| 
         Binary file 
     | 
| 
         Binary file 
     | 
    
        data/src/ctexplay.so
    CHANGED
    
    | 
         Binary file 
     | 
    
        data/src/extconf.rb
    CHANGED
    
    
    
        data/src/gen_eval.obj
    CHANGED
    
    | 
         Binary file 
     | 
    
        data/src/object2module.obj
    CHANGED
    
    | 
         Binary file 
     | 
    
        data/src/texplay.obj
    CHANGED
    
    | 
         Binary file 
     | 
    
        data/src/utils.c
    CHANGED
    
    | 
         @@ -946,10 +946,26 @@ fact(int n) 
     | 
|
| 
       946 
946 
     | 
    
         
             
            }
         
     | 
| 
       947 
947 
     | 
    
         | 
| 
       948 
948 
     | 
    
         
             
            unsigned
         
     | 
| 
       949 
     | 
    
         
            -
            comb(int n, int  
     | 
| 
      
 949 
     | 
    
         
            +
            comb(int n, int r)
         
     | 
| 
       950 
950 
     | 
    
         
             
            {
         
     | 
| 
       951 
     | 
    
         
            -
                double temp = fact(n) / (fact( 
     | 
| 
      
 951 
     | 
    
         
            +
                double temp = fact(n) / (fact(r) * fact(n - r));
         
     | 
| 
       952 
952 
     | 
    
         
             
                return temp;
         
     | 
| 
      
 953 
     | 
    
         
            +
                /*    if(r > (n / 2))
         
     | 
| 
      
 954 
     | 
    
         
            +
                    r = n - r;
         
     | 
| 
      
 955 
     | 
    
         
            +
                
         
     | 
| 
      
 956 
     | 
    
         
            +
                return perm(n, r) / fact(r);
         
     | 
| 
      
 957 
     | 
    
         
            +
                */
         
     | 
| 
      
 958 
     | 
    
         
            +
            }
         
     | 
| 
      
 959 
     | 
    
         
            +
             
     | 
| 
      
 960 
     | 
    
         
            +
            unsigned
         
     | 
| 
      
 961 
     | 
    
         
            +
            perm(int n, int r)
         
     | 
| 
      
 962 
     | 
    
         
            +
            {
         
     | 
| 
      
 963 
     | 
    
         
            +
                int val = n;
         
     | 
| 
      
 964 
     | 
    
         
            +
                int i;
         
     | 
| 
      
 965 
     | 
    
         
            +
                for(i = n - 1; i > (n - r); i--)
         
     | 
| 
      
 966 
     | 
    
         
            +
                    val *= i;
         
     | 
| 
      
 967 
     | 
    
         
            +
             
     | 
| 
      
 968 
     | 
    
         
            +
                return val;
         
     | 
| 
       953 
969 
     | 
    
         
             
            }
         
     | 
| 
       954 
970 
     | 
    
         | 
| 
       955 
971 
     | 
    
         
             
            double
         
     | 
    
        data/src/utils.h
    CHANGED
    
    
    
        data/src/utils.obj
    CHANGED
    
    | 
         Binary file 
     | 
    
        data/src/vc60.pdb
    CHANGED
    
    | 
         Binary file 
     | 
    
        metadata
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification 
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: texplay
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version 
         
     | 
| 
       4 
     | 
    
         
            -
              version: 0.2. 
     | 
| 
      
 4 
     | 
    
         
            +
              version: 0.2.4
         
     | 
| 
       5 
5 
     | 
    
         
             
            platform: x86-mswin32-60
         
     | 
| 
       6 
6 
     | 
    
         
             
            authors: 
         
     | 
| 
       7 
7 
     | 
    
         
             
            - John Mair (banisterfiend)
         
     | 
| 
         @@ -34,7 +34,6 @@ files: 
     | 
|
| 
       34 
34 
     | 
    
         
             
            - Rakefile
         
     | 
| 
       35 
35 
     | 
    
         
             
            - README.markdown
         
     | 
| 
       36 
36 
     | 
    
         
             
            - CHANGELOG
         
     | 
| 
       37 
     | 
    
         
            -
            - README1st
         
     | 
| 
       38 
37 
     | 
    
         
             
            - lib/texplay.rb
         
     | 
| 
       39 
38 
     | 
    
         
             
            - lib/texplay-contrib.rb
         
     | 
| 
       40 
39 
     | 
    
         
             
            - src/actions.c
         
     | 
| 
         @@ -82,6 +81,7 @@ files: 
     | 
|
| 
       82 
81 
     | 
    
         
             
            - examples/example_fluent.rb
         
     | 
| 
       83 
82 
     | 
    
         
             
            - examples/example_gen_eval.rb
         
     | 
| 
       84 
83 
     | 
    
         
             
            - examples/example_hash_arguments.rb
         
     | 
| 
      
 84 
     | 
    
         
            +
            - examples/example_lsystem.rb
         
     | 
| 
       85 
85 
     | 
    
         
             
            - examples/example_melt.rb
         
     | 
| 
       86 
86 
     | 
    
         
             
            - examples/example_polyline.rb
         
     | 
| 
       87 
87 
     | 
    
         
             
            - examples/example_simple.rb
         
     | 
    
        data/README1st
    DELETED
    
    | 
         @@ -1,9 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            INSTRUCTIONS
         
     | 
| 
       2 
     | 
    
         
            -
             
     | 
| 
       3 
     | 
    
         
            -
            TexPlay version 0.2.2
         
     | 
| 
       4 
     | 
    
         
            -
             
     | 
| 
       5 
     | 
    
         
            -
            *Ensure that ctexplay.so and gosu.so, and texplay.rb and texplay-contrib.rb are in the working directory for your project
         
     | 
| 
       6 
     | 
    
         
            -
            *require 'texplay' in your ruby program to access the TexPlay module
         
     | 
| 
       7 
     | 
    
         
            -
            *see example programs, for illustration of use
         
     | 
| 
       8 
     | 
    
         
            -
             
     | 
| 
       9 
     | 
    
         
            -
             
     |