rubysketch 0.3.15 → 0.3.19
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
 - data/.github/workflows/release.yml +2 -2
 - data/.github/workflows/test.yml +2 -2
 - data/ChangeLog.md +23 -0
 - data/VERSION +1 -1
 - data/lib/rubysketch/app.rb +13 -0
 - data/lib/rubysketch/glsl.rb +2 -2
 - data/lib/rubysketch/module.rb +3 -3
 - data/lib/rubysketch/processing.rb +406 -257
 - data/lib/rubysketch/window.rb +81 -58
 - data/lib/rubysketch-processing.rb +1 -1
 - data/lib/rubysketch.rb +2 -0
 - data/rubysketch.gemspec +2 -2
 - data/test/helper.rb +1 -1
 - data/test/processing/test_utility.rb +3 -7
 - data/test/processing/test_vector.rb +43 -46
 - metadata +8 -7
 
| 
         @@ -34,7 +34,7 @@ module RubySketch 
     | 
|
| 
       34 
34 
     | 
    
         
             
                  # @param v [Vector]  vector object to copy
         
     | 
| 
       35 
35 
     | 
    
         
             
                  # @param a [Array]   array like [x, y, z]
         
     | 
| 
       36 
36 
     | 
    
         
             
                  #
         
     | 
| 
       37 
     | 
    
         
            -
                  def initialize 
     | 
| 
      
 37 
     | 
    
         
            +
                  def initialize(x = 0, y = 0, z = 0, context: nil)
         
     | 
| 
       38 
38 
     | 
    
         
             
                    @point = case x
         
     | 
| 
       39 
39 
     | 
    
         
             
                      when Rays::Point then x.dup
         
     | 
| 
       40 
40 
     | 
    
         
             
                      when Vector      then x.getInternal__.dup
         
     | 
| 
         @@ -46,7 +46,7 @@ module RubySketch 
     | 
|
| 
       46 
46 
     | 
    
         | 
| 
       47 
47 
     | 
    
         
             
                  # Initializer for dup or clone
         
     | 
| 
       48 
48 
     | 
    
         
             
                  #
         
     | 
| 
       49 
     | 
    
         
            -
                  def initialize_copy 
     | 
| 
      
 49 
     | 
    
         
            +
                  def initialize_copy(o)
         
     | 
| 
       50 
50 
     | 
    
         
             
                    @point = o.getInternal__.dup
         
     | 
| 
       51 
51 
     | 
    
         
             
                  end
         
     | 
| 
       52 
52 
     | 
    
         | 
| 
         @@ -72,8 +72,8 @@ module RubySketch 
     | 
|
| 
       72 
72 
     | 
    
         
             
                  #
         
     | 
| 
       73 
73 
     | 
    
         
             
                  # @return [nil] nil
         
     | 
| 
       74 
74 
     | 
    
         
             
                  #
         
     | 
| 
       75 
     | 
    
         
            -
                  def set 
     | 
| 
       76 
     | 
    
         
            -
                    initialize 
     | 
| 
      
 75 
     | 
    
         
            +
                  def set(*args)
         
     | 
| 
      
 76 
     | 
    
         
            +
                    initialize(*args)
         
     | 
| 
       77 
77 
     | 
    
         
             
                    self
         
     | 
| 
       78 
78 
     | 
    
         
             
                  end
         
     | 
| 
       79 
79 
     | 
    
         | 
| 
         @@ -81,7 +81,7 @@ module RubySketch 
     | 
|
| 
       81 
81 
     | 
    
         
             
                  #
         
     | 
| 
       82 
82 
     | 
    
         
             
                  # @return [Numeric] x value of vector
         
     | 
| 
       83 
83 
     | 
    
         
             
                  #
         
     | 
| 
       84 
     | 
    
         
            -
                  def x 
     | 
| 
      
 84 
     | 
    
         
            +
                  def x()
         
     | 
| 
       85 
85 
     | 
    
         
             
                    @point.x
         
     | 
| 
       86 
86 
     | 
    
         
             
                  end
         
     | 
| 
       87 
87 
     | 
    
         | 
| 
         @@ -89,7 +89,7 @@ module RubySketch 
     | 
|
| 
       89 
89 
     | 
    
         
             
                  #
         
     | 
| 
       90 
90 
     | 
    
         
             
                  # @return [Numeric] y value of vector
         
     | 
| 
       91 
91 
     | 
    
         
             
                  #
         
     | 
| 
       92 
     | 
    
         
            -
                  def y 
     | 
| 
      
 92 
     | 
    
         
            +
                  def y()
         
     | 
| 
       93 
93 
     | 
    
         
             
                    @point.y
         
     | 
| 
       94 
94 
     | 
    
         
             
                  end
         
     | 
| 
       95 
95 
     | 
    
         | 
| 
         @@ -97,7 +97,7 @@ module RubySketch 
     | 
|
| 
       97 
97 
     | 
    
         
             
                  #
         
     | 
| 
       98 
98 
     | 
    
         
             
                  # @return [Numeric] z value of vector
         
     | 
| 
       99 
99 
     | 
    
         
             
                  #
         
     | 
| 
       100 
     | 
    
         
            -
                  def z 
     | 
| 
      
 100 
     | 
    
         
            +
                  def z()
         
     | 
| 
       101 
101 
     | 
    
         
             
                    @point.z
         
     | 
| 
       102 
102 
     | 
    
         
             
                  end
         
     | 
| 
       103 
103 
     | 
    
         | 
| 
         @@ -105,7 +105,7 @@ module RubySketch 
     | 
|
| 
       105 
105 
     | 
    
         
             
                  #
         
     | 
| 
       106 
106 
     | 
    
         
             
                  # @return [Numeric] x value of vector
         
     | 
| 
       107 
107 
     | 
    
         
             
                  #
         
     | 
| 
       108 
     | 
    
         
            -
                  def x= 
     | 
| 
      
 108 
     | 
    
         
            +
                  def x=(x)
         
     | 
| 
       109 
109 
     | 
    
         
             
                    @point.x = x
         
     | 
| 
       110 
110 
     | 
    
         
             
                  end
         
     | 
| 
       111 
111 
     | 
    
         | 
| 
         @@ -113,7 +113,7 @@ module RubySketch 
     | 
|
| 
       113 
113 
     | 
    
         
             
                  #
         
     | 
| 
       114 
114 
     | 
    
         
             
                  # @return [Numeric] y value of vector
         
     | 
| 
       115 
115 
     | 
    
         
             
                  #
         
     | 
| 
       116 
     | 
    
         
            -
                  def y= 
     | 
| 
      
 116 
     | 
    
         
            +
                  def y=(y)
         
     | 
| 
       117 
117 
     | 
    
         
             
                    @point.y = y
         
     | 
| 
       118 
118 
     | 
    
         
             
                  end
         
     | 
| 
       119 
119 
     | 
    
         | 
| 
         @@ -121,7 +121,7 @@ module RubySketch 
     | 
|
| 
       121 
121 
     | 
    
         
             
                  #
         
     | 
| 
       122 
122 
     | 
    
         
             
                  # @return [Numeric] z value of vector
         
     | 
| 
       123 
123 
     | 
    
         
             
                  #
         
     | 
| 
       124 
     | 
    
         
            -
                  def z= 
     | 
| 
      
 124 
     | 
    
         
            +
                  def z=(z)
         
     | 
| 
       125 
125 
     | 
    
         
             
                    @point.z = z
         
     | 
| 
       126 
126 
     | 
    
         
             
                  end
         
     | 
| 
       127 
127 
     | 
    
         | 
| 
         @@ -139,8 +139,8 @@ module RubySketch 
     | 
|
| 
       139 
139 
     | 
    
         
             
                  #
         
     | 
| 
       140 
140 
     | 
    
         
             
                  # @return [Vector] interporated vector
         
     | 
| 
       141 
141 
     | 
    
         
             
                  #
         
     | 
| 
       142 
     | 
    
         
            -
                  def lerp 
     | 
| 
       143 
     | 
    
         
            -
                    v      = toVector__ 
     | 
| 
      
 142 
     | 
    
         
            +
                  def lerp(*args, amount)
         
     | 
| 
      
 143 
     | 
    
         
            +
                    v      = toVector__(*args)
         
     | 
| 
       144 
144 
     | 
    
         
             
                    self.x = x + (v.x - x) * amount
         
     | 
| 
       145 
145 
     | 
    
         
             
                    self.y = y + (v.y - y) * amount
         
     | 
| 
       146 
146 
     | 
    
         
             
                    self.z = z + (v.z - z) * amount
         
     | 
| 
         @@ -155,7 +155,7 @@ module RubySketch 
     | 
|
| 
       155 
155 
     | 
    
         
             
                  #
         
     | 
| 
       156 
156 
     | 
    
         
             
                  # @return [Vector] interporated vector
         
     | 
| 
       157 
157 
     | 
    
         
             
                  #
         
     | 
| 
       158 
     | 
    
         
            -
                  def self.lerp 
     | 
| 
      
 158 
     | 
    
         
            +
                  def self.lerp(v1, v2, amount)
         
     | 
| 
       159 
159 
     | 
    
         
             
                    v1.dup.lerp v2, amount
         
     | 
| 
       160 
160 
     | 
    
         
             
                  end
         
     | 
| 
       161 
161 
     | 
    
         | 
| 
         @@ -163,7 +163,7 @@ module RubySketch 
     | 
|
| 
       163 
163 
     | 
    
         
             
                  #
         
     | 
| 
       164 
164 
     | 
    
         
             
                  # @return [Array] array of x, y, z
         
     | 
| 
       165 
165 
     | 
    
         
             
                  #
         
     | 
| 
       166 
     | 
    
         
            -
                  def array 
     | 
| 
      
 166 
     | 
    
         
            +
                  def array()
         
     | 
| 
       167 
167 
     | 
    
         
             
                    @point.to_a 3
         
     | 
| 
       168 
168 
     | 
    
         
             
                  end
         
     | 
| 
       169 
169 
     | 
    
         | 
| 
         @@ -180,7 +180,7 @@ module RubySketch 
     | 
|
| 
       180 
180 
     | 
    
         
             
                  #
         
     | 
| 
       181 
181 
     | 
    
         
             
                  # @return [Vector] added vector
         
     | 
| 
       182 
182 
     | 
    
         
             
                  #
         
     | 
| 
       183 
     | 
    
         
            -
                  def add 
     | 
| 
      
 183 
     | 
    
         
            +
                  def add(*args)
         
     | 
| 
       184 
184 
     | 
    
         
             
                    @point += toVector__(*args).getInternal__
         
     | 
| 
       185 
185 
     | 
    
         
             
                    self
         
     | 
| 
       186 
186 
     | 
    
         
             
                  end
         
     | 
| 
         @@ -198,7 +198,7 @@ module RubySketch 
     | 
|
| 
       198 
198 
     | 
    
         
             
                  #
         
     | 
| 
       199 
199 
     | 
    
         
             
                  # @return [Vector] subtracted vector
         
     | 
| 
       200 
200 
     | 
    
         
             
                  #
         
     | 
| 
       201 
     | 
    
         
            -
                  def sub 
     | 
| 
      
 201 
     | 
    
         
            +
                  def sub(*args)
         
     | 
| 
       202 
202 
     | 
    
         
             
                    @point -= toVector__(*args).getInternal__
         
     | 
| 
       203 
203 
     | 
    
         
             
                    self
         
     | 
| 
       204 
204 
     | 
    
         
             
                  end
         
     | 
| 
         @@ -209,7 +209,7 @@ module RubySketch 
     | 
|
| 
       209 
209 
     | 
    
         
             
                  #
         
     | 
| 
       210 
210 
     | 
    
         
             
                  # @return [Vector] multiplied vector
         
     | 
| 
       211 
211 
     | 
    
         
             
                  #
         
     | 
| 
       212 
     | 
    
         
            -
                  def mult 
     | 
| 
      
 212 
     | 
    
         
            +
                  def mult(num)
         
     | 
| 
       213 
213 
     | 
    
         
             
                    @point *= num
         
     | 
| 
       214 
214 
     | 
    
         
             
                    self
         
     | 
| 
       215 
215 
     | 
    
         
             
                  end
         
     | 
| 
         @@ -220,7 +220,7 @@ module RubySketch 
     | 
|
| 
       220 
220 
     | 
    
         
             
                  #
         
     | 
| 
       221 
221 
     | 
    
         
             
                  # @return [Vector] divided vector
         
     | 
| 
       222 
222 
     | 
    
         
             
                  #
         
     | 
| 
       223 
     | 
    
         
            -
                  def div 
     | 
| 
      
 223 
     | 
    
         
            +
                  def div(num)
         
     | 
| 
       224 
224 
     | 
    
         
             
                    @point /= num
         
     | 
| 
       225 
225 
     | 
    
         
             
                    self
         
     | 
| 
       226 
226 
     | 
    
         
             
                  end
         
     | 
| 
         @@ -231,7 +231,7 @@ module RubySketch 
     | 
|
| 
       231 
231 
     | 
    
         
             
                  #
         
     | 
| 
       232 
232 
     | 
    
         
             
                  # @return [Vector] added vector
         
     | 
| 
       233 
233 
     | 
    
         
             
                  #
         
     | 
| 
       234 
     | 
    
         
            -
                  def + 
     | 
| 
      
 234 
     | 
    
         
            +
                  def +(v)
         
     | 
| 
       235 
235 
     | 
    
         
             
                    dup.add v
         
     | 
| 
       236 
236 
     | 
    
         
             
                  end
         
     | 
| 
       237 
237 
     | 
    
         | 
| 
         @@ -241,7 +241,7 @@ module RubySketch 
     | 
|
| 
       241 
241 
     | 
    
         
             
                  #
         
     | 
| 
       242 
242 
     | 
    
         
             
                  # @return [Vector] subtracted vector
         
     | 
| 
       243 
243 
     | 
    
         
             
                  #
         
     | 
| 
       244 
     | 
    
         
            -
                  def - 
     | 
| 
      
 244 
     | 
    
         
            +
                  def -(v)
         
     | 
| 
       245 
245 
     | 
    
         
             
                    dup.sub v
         
     | 
| 
       246 
246 
     | 
    
         
             
                  end
         
     | 
| 
       247 
247 
     | 
    
         | 
| 
         @@ -251,7 +251,7 @@ module RubySketch 
     | 
|
| 
       251 
251 
     | 
    
         
             
                  #
         
     | 
| 
       252 
252 
     | 
    
         
             
                  # @return [Vector] multiplied vector
         
     | 
| 
       253 
253 
     | 
    
         
             
                  #
         
     | 
| 
       254 
     | 
    
         
            -
                  def * 
     | 
| 
      
 254 
     | 
    
         
            +
                  def *(num)
         
     | 
| 
       255 
255 
     | 
    
         
             
                    dup.mult num
         
     | 
| 
       256 
256 
     | 
    
         
             
                  end
         
     | 
| 
       257 
257 
     | 
    
         | 
| 
         @@ -261,7 +261,7 @@ module RubySketch 
     | 
|
| 
       261 
261 
     | 
    
         
             
                  #
         
     | 
| 
       262 
262 
     | 
    
         
             
                  # @return [Vector] divided vector
         
     | 
| 
       263 
263 
     | 
    
         
             
                  #
         
     | 
| 
       264 
     | 
    
         
            -
                  def / 
     | 
| 
      
 264 
     | 
    
         
            +
                  def /(num)
         
     | 
| 
       265 
265 
     | 
    
         
             
                    dup.div num
         
     | 
| 
       266 
266 
     | 
    
         
             
                  end
         
     | 
| 
       267 
267 
     | 
    
         | 
| 
         @@ -276,7 +276,7 @@ module RubySketch 
     | 
|
| 
       276 
276 
     | 
    
         
             
                  #
         
     | 
| 
       277 
277 
     | 
    
         
             
                  # @return [Vector] added vector
         
     | 
| 
       278 
278 
     | 
    
         
             
                  #
         
     | 
| 
       279 
     | 
    
         
            -
                  def self.add 
     | 
| 
      
 279 
     | 
    
         
            +
                  def self.add(v1, v2, target = nil)
         
     | 
| 
       280 
280 
     | 
    
         
             
                    v = v1 + v2
         
     | 
| 
       281 
281 
     | 
    
         
             
                    target.set v if self === target
         
     | 
| 
       282 
282 
     | 
    
         
             
                    v
         
     | 
| 
         @@ -293,7 +293,7 @@ module RubySketch 
     | 
|
| 
       293 
293 
     | 
    
         
             
                  #
         
     | 
| 
       294 
294 
     | 
    
         
             
                  # @return [Vector] subtracted vector
         
     | 
| 
       295 
295 
     | 
    
         
             
                  #
         
     | 
| 
       296 
     | 
    
         
            -
                  def self.sub 
     | 
| 
      
 296 
     | 
    
         
            +
                  def self.sub(v1, v2, target = nil)
         
     | 
| 
       297 
297 
     | 
    
         
             
                    v = v1 - v2
         
     | 
| 
       298 
298 
     | 
    
         
             
                    target.set v if self === target
         
     | 
| 
       299 
299 
     | 
    
         
             
                    v
         
     | 
| 
         @@ -310,7 +310,7 @@ module RubySketch 
     | 
|
| 
       310 
310 
     | 
    
         
             
                  #
         
     | 
| 
       311 
311 
     | 
    
         
             
                  # @return [Vector] multiplied vector
         
     | 
| 
       312 
312 
     | 
    
         
             
                  #
         
     | 
| 
       313 
     | 
    
         
            -
                  def self.mult 
     | 
| 
      
 313 
     | 
    
         
            +
                  def self.mult(v1, num, target = nil)
         
     | 
| 
       314 
314 
     | 
    
         
             
                    v = v1 * num
         
     | 
| 
       315 
315 
     | 
    
         
             
                    target.set v if self === target
         
     | 
| 
       316 
316 
     | 
    
         
             
                    v
         
     | 
| 
         @@ -327,7 +327,7 @@ module RubySketch 
     | 
|
| 
       327 
327 
     | 
    
         
             
                  #
         
     | 
| 
       328 
328 
     | 
    
         
             
                  # @return [Vector] divided vector
         
     | 
| 
       329 
329 
     | 
    
         
             
                  #
         
     | 
| 
       330 
     | 
    
         
            -
                  def self.div 
     | 
| 
      
 330 
     | 
    
         
            +
                  def self.div(v1, num, target = nil)
         
     | 
| 
       331 
331 
     | 
    
         
             
                    v = v1 / num
         
     | 
| 
       332 
332 
     | 
    
         
             
                    target.set v if self === target
         
     | 
| 
       333 
333 
     | 
    
         
             
                    v
         
     | 
| 
         @@ -337,7 +337,7 @@ module RubySketch 
     | 
|
| 
       337 
337 
     | 
    
         
             
                  #
         
     | 
| 
       338 
338 
     | 
    
         
             
                  # @return [Numeric] length
         
     | 
| 
       339 
339 
     | 
    
         
             
                  #
         
     | 
| 
       340 
     | 
    
         
            -
                  def mag 
     | 
| 
      
 340 
     | 
    
         
            +
                  def mag()
         
     | 
| 
       341 
341 
     | 
    
         
             
                    @point.length
         
     | 
| 
       342 
342 
     | 
    
         
             
                  end
         
     | 
| 
       343 
343 
     | 
    
         | 
| 
         @@ -345,7 +345,7 @@ module RubySketch 
     | 
|
| 
       345 
345 
     | 
    
         
             
                  #
         
     | 
| 
       346 
346 
     | 
    
         
             
                  # @return [Numeric] squared length
         
     | 
| 
       347 
347 
     | 
    
         
             
                  #
         
     | 
| 
       348 
     | 
    
         
            -
                  def magSq 
     | 
| 
      
 348 
     | 
    
         
            +
                  def magSq()
         
     | 
| 
       349 
349 
     | 
    
         
             
                    Rays::Point::dot(@point, @point)
         
     | 
| 
       350 
350 
     | 
    
         
             
                  end
         
     | 
| 
       351 
351 
     | 
    
         | 
| 
         @@ -359,7 +359,7 @@ module RubySketch 
     | 
|
| 
       359 
359 
     | 
    
         
             
                  #
         
     | 
| 
       360 
360 
     | 
    
         
             
                  # @return [Vector] vector with new length
         
     | 
| 
       361 
361 
     | 
    
         
             
                  #
         
     | 
| 
       362 
     | 
    
         
            -
                  def setMag 
     | 
| 
      
 362 
     | 
    
         
            +
                  def setMag(target = nil, len)
         
     | 
| 
       363 
363 
     | 
    
         
             
                    (target || self).set @point.normal * len
         
     | 
| 
       364 
364 
     | 
    
         
             
                  end
         
     | 
| 
       365 
365 
     | 
    
         | 
| 
         @@ -369,7 +369,7 @@ module RubySketch 
     | 
|
| 
       369 
369 
     | 
    
         
             
                  #
         
     | 
| 
       370 
370 
     | 
    
         
             
                  # @return [Vector] normalized vector
         
     | 
| 
       371 
371 
     | 
    
         
             
                  #
         
     | 
| 
       372 
     | 
    
         
            -
                  def normalize 
     | 
| 
      
 372 
     | 
    
         
            +
                  def normalize(target = nil)
         
     | 
| 
       373 
373 
     | 
    
         
             
                    (target || self).set @point.normal
         
     | 
| 
       374 
374 
     | 
    
         
             
                  end
         
     | 
| 
       375 
375 
     | 
    
         | 
| 
         @@ -379,7 +379,7 @@ module RubySketch 
     | 
|
| 
       379 
379 
     | 
    
         
             
                  #
         
     | 
| 
       380 
380 
     | 
    
         
             
                  # @return [Vector] new vector
         
     | 
| 
       381 
381 
     | 
    
         
             
                  #
         
     | 
| 
       382 
     | 
    
         
            -
                  def limit 
     | 
| 
      
 382 
     | 
    
         
            +
                  def limit(max)
         
     | 
| 
       383 
383 
     | 
    
         
             
                    setMag max if magSq > max ** 2
         
     | 
| 
       384 
384 
     | 
    
         
             
                    self
         
     | 
| 
       385 
385 
     | 
    
         
             
                  end
         
     | 
| 
         @@ -390,7 +390,7 @@ module RubySketch 
     | 
|
| 
       390 
390 
     | 
    
         
             
                  #
         
     | 
| 
       391 
391 
     | 
    
         
             
                  # @return [Numeric] the distance
         
     | 
| 
       392 
392 
     | 
    
         
             
                  #
         
     | 
| 
       393 
     | 
    
         
            -
                  def dist 
     | 
| 
      
 393 
     | 
    
         
            +
                  def dist(v)
         
     | 
| 
       394 
394 
     | 
    
         
             
                    (self - v).mag
         
     | 
| 
       395 
395 
     | 
    
         
             
                  end
         
     | 
| 
       396 
396 
     | 
    
         | 
| 
         @@ -401,7 +401,7 @@ module RubySketch 
     | 
|
| 
       401 
401 
     | 
    
         
             
                  #
         
     | 
| 
       402 
402 
     | 
    
         
             
                  # @return [Numeric] the distance
         
     | 
| 
       403 
403 
     | 
    
         
             
                  #
         
     | 
| 
       404 
     | 
    
         
            -
                  def self.dist 
     | 
| 
      
 404 
     | 
    
         
            +
                  def self.dist(v1, v2)
         
     | 
| 
       405 
405 
     | 
    
         
             
                    v1.dist v2
         
     | 
| 
       406 
406 
     | 
    
         
             
                  end
         
     | 
| 
       407 
407 
     | 
    
         | 
| 
         @@ -418,7 +418,7 @@ module RubySketch 
     | 
|
| 
       418 
418 
     | 
    
         
             
                  #
         
     | 
| 
       419 
419 
     | 
    
         
             
                  # @return [Numeric] result of dot product
         
     | 
| 
       420 
420 
     | 
    
         
             
                  #
         
     | 
| 
       421 
     | 
    
         
            -
                  def dot 
     | 
| 
      
 421 
     | 
    
         
            +
                  def dot(*args)
         
     | 
| 
       422 
422 
     | 
    
         
             
                    Rays::Point::dot getInternal__, toVector__(*args).getInternal__
         
     | 
| 
       423 
423 
     | 
    
         
             
                  end
         
     | 
| 
       424 
424 
     | 
    
         | 
| 
         @@ -429,7 +429,7 @@ module RubySketch 
     | 
|
| 
       429 
429 
     | 
    
         
             
                  #
         
     | 
| 
       430 
430 
     | 
    
         
             
                  # @return [Numeric] result of dot product
         
     | 
| 
       431 
431 
     | 
    
         
             
                  #
         
     | 
| 
       432 
     | 
    
         
            -
                  def self.dot 
     | 
| 
      
 432 
     | 
    
         
            +
                  def self.dot(v1, v2)
         
     | 
| 
       433 
433 
     | 
    
         
             
                    v1.dot v2
         
     | 
| 
       434 
434 
     | 
    
         
             
                  end
         
     | 
| 
       435 
435 
     | 
    
         | 
| 
         @@ -446,7 +446,7 @@ module RubySketch 
     | 
|
| 
       446 
446 
     | 
    
         
             
                  #
         
     | 
| 
       447 
447 
     | 
    
         
             
                  # @return [Numeric] result of cross product
         
     | 
| 
       448 
448 
     | 
    
         
             
                  #
         
     | 
| 
       449 
     | 
    
         
            -
                  def cross 
     | 
| 
      
 449 
     | 
    
         
            +
                  def cross(a, *rest)
         
     | 
| 
       450 
450 
     | 
    
         
             
                    target = self.class === rest.last ? rest.pop : nil
         
     | 
| 
       451 
451 
     | 
    
         
             
                    v = self.class.new Rays::Point::cross getInternal__, toVector__(a, *rest).getInternal__
         
     | 
| 
       452 
452 
     | 
    
         
             
                    target.set v if self.class === target
         
     | 
| 
         @@ -460,7 +460,7 @@ module RubySketch 
     | 
|
| 
       460 
460 
     | 
    
         
             
                  #
         
     | 
| 
       461 
461 
     | 
    
         
             
                  # @return [Numeric] result of cross product
         
     | 
| 
       462 
462 
     | 
    
         
             
                  #
         
     | 
| 
       463 
     | 
    
         
            -
                  def self.cross 
     | 
| 
      
 463 
     | 
    
         
            +
                  def self.cross(v1, v2, target = nil)
         
     | 
| 
       464 
464 
     | 
    
         
             
                    v1.cross v2, target
         
     | 
| 
       465 
465 
     | 
    
         
             
                  end
         
     | 
| 
       466 
466 
     | 
    
         | 
| 
         @@ -470,7 +470,7 @@ module RubySketch 
     | 
|
| 
       470 
470 
     | 
    
         
             
                  #
         
     | 
| 
       471 
471 
     | 
    
         
             
                  # @return [Vector] rotated this object
         
     | 
| 
       472 
472 
     | 
    
         
             
                  #
         
     | 
| 
       473 
     | 
    
         
            -
                  def rotate 
     | 
| 
      
 473 
     | 
    
         
            +
                  def rotate(angle)
         
     | 
| 
       474 
474 
     | 
    
         
             
                    angle = @context ? @context.toAngle__(angle) : angle * RAD2DEG__
         
     | 
| 
       475 
475 
     | 
    
         
             
                    @point.rotate! angle
         
     | 
| 
       476 
476 
     | 
    
         
             
                    self
         
     | 
| 
         @@ -480,7 +480,7 @@ module RubySketch 
     | 
|
| 
       480 
480 
     | 
    
         
             
                  #
         
     | 
| 
       481 
481 
     | 
    
         
             
                  # @return [Numeric] the angle in radians
         
     | 
| 
       482 
482 
     | 
    
         
             
                  #
         
     | 
| 
       483 
     | 
    
         
            -
                  def heading 
     | 
| 
      
 483 
     | 
    
         
            +
                  def heading()
         
     | 
| 
       484 
484 
     | 
    
         
             
                    Math.atan2 y, x
         
     | 
| 
       485 
485 
     | 
    
         
             
                  end
         
     | 
| 
       486 
486 
     | 
    
         | 
| 
         @@ -491,7 +491,7 @@ module RubySketch 
     | 
|
| 
       491 
491 
     | 
    
         
             
                  #
         
     | 
| 
       492 
492 
     | 
    
         
             
                  # @return [Vector] rotated vector
         
     | 
| 
       493 
493 
     | 
    
         
             
                  #
         
     | 
| 
       494 
     | 
    
         
            -
                  def self.fromAngle 
     | 
| 
      
 494 
     | 
    
         
            +
                  def self.fromAngle(angle, target = nil)
         
     | 
| 
       495 
495 
     | 
    
         
             
                    v = self.new(1, 0, 0).rotate(angle)
         
     | 
| 
       496 
496 
     | 
    
         
             
                    target.set v if target
         
     | 
| 
       497 
497 
     | 
    
         
             
                    v
         
     | 
| 
         @@ -504,7 +504,7 @@ module RubySketch 
     | 
|
| 
       504 
504 
     | 
    
         
             
                  #
         
     | 
| 
       505 
505 
     | 
    
         
             
                  # @return [Numeric] angle in radians
         
     | 
| 
       506 
506 
     | 
    
         
             
                  #
         
     | 
| 
       507 
     | 
    
         
            -
                  def self.angleBetween 
     | 
| 
      
 507 
     | 
    
         
            +
                  def self.angleBetween(v1, v2)
         
     | 
| 
       508 
508 
     | 
    
         
             
                    x1, y1, z1 = v1.array
         
     | 
| 
       509 
509 
     | 
    
         
             
                    x2, y2, z2 = v2.array
         
     | 
| 
       510 
510 
     | 
    
         
             
                    return 0 if (x1 == 0 && y1 == 0 && z1 == 0) || (x2 == 0 && y2 == 0 && z2 == 0)
         
     | 
| 
         @@ -521,7 +521,7 @@ module RubySketch 
     | 
|
| 
       521 
521 
     | 
    
         
             
                  #
         
     | 
| 
       522 
522 
     | 
    
         
             
                  # @return [Vector] a random vector
         
     | 
| 
       523 
523 
     | 
    
         
             
                  #
         
     | 
| 
       524 
     | 
    
         
            -
                  def self.random2D 
     | 
| 
      
 524 
     | 
    
         
            +
                  def self.random2D(target = nil)
         
     | 
| 
       525 
525 
     | 
    
         
             
                    v = self.fromAngle rand 0.0...(Math::PI * 2)
         
     | 
| 
       526 
526 
     | 
    
         
             
                    target.set v if target
         
     | 
| 
       527 
527 
     | 
    
         
             
                    v
         
     | 
| 
         @@ -533,9 +533,9 @@ module RubySketch 
     | 
|
| 
       533 
533 
     | 
    
         
             
                  #
         
     | 
| 
       534 
534 
     | 
    
         
             
                  # @return [Vector] a random vector
         
     | 
| 
       535 
535 
     | 
    
         
             
                  #
         
     | 
| 
       536 
     | 
    
         
            -
                  def self.random3D 
     | 
| 
      
 536 
     | 
    
         
            +
                  def self.random3D(target = nil)
         
     | 
| 
       537 
537 
     | 
    
         
             
                    angle = rand 0.0...(Math::PI * 2)
         
     | 
| 
       538 
     | 
    
         
            -
                    z     = rand 
     | 
| 
      
 538 
     | 
    
         
            +
                    z     = rand(-1.0..1.0)
         
     | 
| 
       539 
539 
     | 
    
         
             
                    z2    = z ** 2
         
     | 
| 
       540 
540 
     | 
    
         
             
                    x     = Math.sqrt(1.0 - z2) * Math.cos(angle)
         
     | 
| 
       541 
541 
     | 
    
         
             
                    y     = Math.sqrt(1.0 - z2) * Math.sin(angle)
         
     | 
| 
         @@ -545,22 +545,22 @@ module RubySketch 
     | 
|
| 
       545 
545 
     | 
    
         
             
                  end
         
     | 
| 
       546 
546 
     | 
    
         | 
| 
       547 
547 
     | 
    
         
             
                  # @private
         
     | 
| 
       548 
     | 
    
         
            -
                  def inspect 
     | 
| 
      
 548 
     | 
    
         
            +
                  def inspect()
         
     | 
| 
       549 
549 
     | 
    
         
             
                    "<##{self.class.name} #{x}, #{y}, #{z}>"
         
     | 
| 
       550 
550 
     | 
    
         
             
                  end
         
     | 
| 
       551 
551 
     | 
    
         | 
| 
       552 
552 
     | 
    
         
             
                  # @private
         
     | 
| 
       553 
     | 
    
         
            -
                  def <=> 
     | 
| 
      
 553 
     | 
    
         
            +
                  def <=>(o)
         
     | 
| 
       554 
554 
     | 
    
         
             
                    @point <=> o.getInternal__
         
     | 
| 
       555 
555 
     | 
    
         
             
                  end
         
     | 
| 
       556 
556 
     | 
    
         | 
| 
       557 
557 
     | 
    
         
             
                  # @private
         
     | 
| 
       558 
     | 
    
         
            -
                  protected def getInternal__ 
     | 
| 
      
 558 
     | 
    
         
            +
                  protected def getInternal__()
         
     | 
| 
       559 
559 
     | 
    
         
             
                    @point
         
     | 
| 
       560 
560 
     | 
    
         
             
                  end
         
     | 
| 
       561 
561 
     | 
    
         | 
| 
       562 
562 
     | 
    
         
             
                  # @private
         
     | 
| 
       563 
     | 
    
         
            -
                  private def toVector__ 
     | 
| 
      
 563 
     | 
    
         
            +
                  private def toVector__(*args)
         
     | 
| 
       564 
564 
     | 
    
         
             
                    self.class === args.first ? args.first : self.class.new(*args)
         
     | 
| 
       565 
565 
     | 
    
         
             
                  end
         
     | 
| 
       566 
566 
     | 
    
         | 
| 
         @@ -572,7 +572,7 @@ module RubySketch 
     | 
|
| 
       572 
572 
     | 
    
         
             
                class Image
         
     | 
| 
       573 
573 
     | 
    
         | 
| 
       574 
574 
     | 
    
         
             
                  # @private
         
     | 
| 
       575 
     | 
    
         
            -
                  def initialize 
     | 
| 
      
 575 
     | 
    
         
            +
                  def initialize(image)
         
     | 
| 
       576 
576 
     | 
    
         
             
                    @image = image
         
     | 
| 
       577 
577 
     | 
    
         
             
                  end
         
     | 
| 
       578 
578 
     | 
    
         | 
| 
         @@ -580,7 +580,7 @@ module RubySketch 
     | 
|
| 
       580 
580 
     | 
    
         
             
                  #
         
     | 
| 
       581 
581 
     | 
    
         
             
                  # @return [Numeric] width of image
         
     | 
| 
       582 
582 
     | 
    
         
             
                  #
         
     | 
| 
       583 
     | 
    
         
            -
                  def width 
     | 
| 
      
 583 
     | 
    
         
            +
                  def width()
         
     | 
| 
       584 
584 
     | 
    
         
             
                    @image.width
         
     | 
| 
       585 
585 
     | 
    
         
             
                  end
         
     | 
| 
       586 
586 
     | 
    
         | 
| 
         @@ -588,7 +588,7 @@ module RubySketch 
     | 
|
| 
       588 
588 
     | 
    
         
             
                  #
         
     | 
| 
       589 
589 
     | 
    
         
             
                  # @return [Numeric] height of image
         
     | 
| 
       590 
590 
     | 
    
         
             
                  #
         
     | 
| 
       591 
     | 
    
         
            -
                  def height 
     | 
| 
      
 591 
     | 
    
         
            +
                  def height()
         
     | 
| 
       592 
592 
     | 
    
         
             
                    @image.height
         
     | 
| 
       593 
593 
     | 
    
         
             
                  end
         
     | 
| 
       594 
594 
     | 
    
         | 
| 
         @@ -599,7 +599,7 @@ module RubySketch 
     | 
|
| 
       599 
599 
     | 
    
         
             
                  #
         
     | 
| 
       600 
600 
     | 
    
         
             
                  # @return [nil] nil
         
     | 
| 
       601 
601 
     | 
    
         
             
                  #
         
     | 
| 
       602 
     | 
    
         
            -
                  def resize 
     | 
| 
      
 602 
     | 
    
         
            +
                  def resize(width, height)
         
     | 
| 
       603 
603 
     | 
    
         
             
                    @image = Rays::Image.new(width, height).paint do |painter|
         
     | 
| 
       604 
604 
     | 
    
         
             
                      painter.image @image, 0, 0, width, height
         
     | 
| 
       605 
605 
     | 
    
         
             
                    end
         
     | 
| 
         @@ -623,7 +623,7 @@ module RubySketch 
     | 
|
| 
       623 
623 
     | 
    
         
             
                  #
         
     | 
| 
       624 
624 
     | 
    
         
             
                  # @return [nil] nil
         
     | 
| 
       625 
625 
     | 
    
         
             
                  #
         
     | 
| 
       626 
     | 
    
         
            -
                  def copy 
     | 
| 
      
 626 
     | 
    
         
            +
                  def copy(img = nil, sx, sy, sw, sh, dx, dy, dw, dh)
         
     | 
| 
       627 
627 
     | 
    
         
             
                    img ||= self
         
     | 
| 
       628 
628 
     | 
    
         
             
                    @image.paint do |painter|
         
     | 
| 
       629 
629 
     | 
    
         
             
                      painter.image img.getInternal__, sx, sy, sw, sh, dx, dy, dw, dh
         
     | 
| 
         @@ -634,12 +634,12 @@ module RubySketch 
     | 
|
| 
       634 
634 
     | 
    
         
             
                  #
         
     | 
| 
       635 
635 
     | 
    
         
             
                  # @param filename [String] file name to save image
         
     | 
| 
       636 
636 
     | 
    
         
             
                  #
         
     | 
| 
       637 
     | 
    
         
            -
                  def save 
     | 
| 
      
 637 
     | 
    
         
            +
                  def save(filename)
         
     | 
| 
       638 
638 
     | 
    
         
             
                    @image.save filename
         
     | 
| 
       639 
639 
     | 
    
         
             
                  end
         
     | 
| 
       640 
640 
     | 
    
         | 
| 
       641 
641 
     | 
    
         
             
                  # @private
         
     | 
| 
       642 
     | 
    
         
            -
                  def getInternal__ 
     | 
| 
      
 642 
     | 
    
         
            +
                  def getInternal__()
         
     | 
| 
       643 
643 
     | 
    
         
             
                    @image
         
     | 
| 
       644 
644 
     | 
    
         
             
                  end
         
     | 
| 
       645 
645 
     | 
    
         | 
| 
         @@ -651,7 +651,7 @@ module RubySketch 
     | 
|
| 
       651 
651 
     | 
    
         
             
                class Font
         
     | 
| 
       652 
652 
     | 
    
         | 
| 
       653 
653 
     | 
    
         
             
                  # @private
         
     | 
| 
       654 
     | 
    
         
            -
                  def initialize 
     | 
| 
      
 654 
     | 
    
         
            +
                  def initialize(font)
         
     | 
| 
       655 
655 
     | 
    
         
             
                    @font = font
         
     | 
| 
       656 
656 
     | 
    
         
             
                  end
         
     | 
| 
       657 
657 
     | 
    
         | 
| 
         @@ -668,7 +668,7 @@ module RubySketch 
     | 
|
| 
       668 
668 
     | 
    
         
             
                  #
         
     | 
| 
       669 
669 
     | 
    
         
             
                  # @return [TextBounds] bounding box for text
         
     | 
| 
       670 
670 
     | 
    
         
             
                  #
         
     | 
| 
       671 
     | 
    
         
            -
                  def textBounds 
     | 
| 
      
 671 
     | 
    
         
            +
                  def textBounds(str, x = 0, y = 0, fontSize = nil)
         
     | 
| 
       672 
672 
     | 
    
         
             
                    f = fontSize ? Rays::Font.new(@font.name, fontSize) : @font
         
     | 
| 
       673 
673 
     | 
    
         
             
                    TextBounds.new x, y, x + f.width(str), y + f.height
         
     | 
| 
       674 
674 
     | 
    
         
             
                  end
         
     | 
| 
         @@ -697,7 +697,7 @@ module RubySketch 
     | 
|
| 
       697 
697 
     | 
    
         
             
                  attr_reader :h
         
     | 
| 
       698 
698 
     | 
    
         | 
| 
       699 
699 
     | 
    
         
             
                  # @private
         
     | 
| 
       700 
     | 
    
         
            -
                  def initialize 
     | 
| 
      
 700 
     | 
    
         
            +
                  def initialize(x, y, w, h)
         
     | 
| 
       701 
701 
     | 
    
         
             
                    @x, @y, @w, @h = x, y, w, h
         
     | 
| 
       702 
702 
     | 
    
         
             
                  end
         
     | 
| 
       703 
703 
     | 
    
         | 
| 
         @@ -708,6 +708,10 @@ module RubySketch 
     | 
|
| 
       708 
708 
     | 
    
         
             
                #
         
     | 
| 
       709 
709 
     | 
    
         
             
                class Touch
         
     | 
| 
       710 
710 
     | 
    
         | 
| 
      
 711 
     | 
    
         
            +
                  # Identifier of each touch
         
     | 
| 
      
 712 
     | 
    
         
            +
                  #
         
     | 
| 
      
 713 
     | 
    
         
            +
                  attr_reader :id
         
     | 
| 
      
 714 
     | 
    
         
            +
             
     | 
| 
       711 
715 
     | 
    
         
             
                  # Horizontal position of touch
         
     | 
| 
       712 
716 
     | 
    
         
             
                  #
         
     | 
| 
       713 
717 
     | 
    
         
             
                  attr_reader :x
         
     | 
| 
         @@ -717,12 +721,8 @@ module RubySketch 
     | 
|
| 
       717 
721 
     | 
    
         
             
                  attr_reader :y
         
     | 
| 
       718 
722 
     | 
    
         | 
| 
       719 
723 
     | 
    
         
             
                  # @private
         
     | 
| 
       720 
     | 
    
         
            -
                  def initialize  
     | 
| 
       721 
     | 
    
         
            -
                    @x, @y = x, y
         
     | 
| 
       722 
     | 
    
         
            -
                  end
         
     | 
| 
       723 
     | 
    
         
            -
             
     | 
| 
       724 
     | 
    
         
            -
                  def id ()
         
     | 
| 
       725 
     | 
    
         
            -
                    raise NotImplementedError
         
     | 
| 
      
 724 
     | 
    
         
            +
                  def initialize(id, x, y)
         
     | 
| 
      
 725 
     | 
    
         
            +
                    @id, @x, @y = id, x, y
         
     | 
| 
       726 
726 
     | 
    
         
             
                  end
         
     | 
| 
       727 
727 
     | 
    
         | 
| 
       728 
728 
     | 
    
         
             
                end# Touch
         
     | 
| 
         @@ -736,7 +736,7 @@ module RubySketch 
     | 
|
| 
       736 
736 
     | 
    
         
             
                  #
         
     | 
| 
       737 
737 
     | 
    
         
             
                  # @return [Array] device name list
         
     | 
| 
       738 
738 
     | 
    
         
             
                  #
         
     | 
| 
       739 
     | 
    
         
            -
                  def self.list 
     | 
| 
      
 739 
     | 
    
         
            +
                  def self.list()
         
     | 
| 
       740 
740 
     | 
    
         
             
                    Rays::Camera.device_names
         
     | 
| 
       741 
741 
     | 
    
         
             
                  end
         
     | 
| 
       742 
742 
     | 
    
         | 
| 
         @@ -751,7 +751,7 @@ module RubySketch 
     | 
|
| 
       751 
751 
     | 
    
         
             
                  # @param requestHeight [Integer] captured image height
         
     | 
| 
       752 
752 
     | 
    
         
             
                  # @param cameraName    [String]  camera device name
         
     | 
| 
       753 
753 
     | 
    
         
             
                  #
         
     | 
| 
       754 
     | 
    
         
            -
                  def initialize 
     | 
| 
      
 754 
     | 
    
         
            +
                  def initialize(*args)
         
     | 
| 
       755 
755 
     | 
    
         
             
                    width, height, name =
         
     | 
| 
       756 
756 
     | 
    
         
             
                      if args.empty?
         
     | 
| 
       757 
757 
     | 
    
         
             
                        [-1, -1, nil]
         
     | 
| 
         @@ -769,7 +769,7 @@ module RubySketch 
     | 
|
| 
       769 
769 
     | 
    
         
             
                  #
         
     | 
| 
       770 
770 
     | 
    
         
             
                  # @return [nil] nil
         
     | 
| 
       771 
771 
     | 
    
         
             
                  #
         
     | 
| 
       772 
     | 
    
         
            -
                  def start 
     | 
| 
      
 772 
     | 
    
         
            +
                  def start()
         
     | 
| 
       773 
773 
     | 
    
         
             
                    raise "Failed to start capture" unless @camera.start
         
     | 
| 
       774 
774 
     | 
    
         
             
                    nil
         
     | 
| 
       775 
775 
     | 
    
         
             
                  end
         
     | 
| 
         @@ -778,7 +778,7 @@ module RubySketch 
     | 
|
| 
       778 
778 
     | 
    
         
             
                  #
         
     | 
| 
       779 
779 
     | 
    
         
             
                  # @return [nil] nil
         
     | 
| 
       780 
780 
     | 
    
         
             
                  #
         
     | 
| 
       781 
     | 
    
         
            -
                  def stop 
     | 
| 
      
 781 
     | 
    
         
            +
                  def stop()
         
     | 
| 
       782 
782 
     | 
    
         
             
                    @camera.stop
         
     | 
| 
       783 
783 
     | 
    
         
             
                    nil
         
     | 
| 
       784 
784 
     | 
    
         
             
                  end
         
     | 
| 
         @@ -787,13 +787,13 @@ module RubySketch 
     | 
|
| 
       787 
787 
     | 
    
         
             
                  #
         
     | 
| 
       788 
788 
     | 
    
         
             
                  # @return [Boolean] true means object has next frame
         
     | 
| 
       789 
789 
     | 
    
         
             
                  #
         
     | 
| 
       790 
     | 
    
         
            -
                  def available 
     | 
| 
      
 790 
     | 
    
         
            +
                  def available()
         
     | 
| 
       791 
791 
     | 
    
         
             
                    @camera.active?
         
     | 
| 
       792 
792 
     | 
    
         
             
                  end
         
     | 
| 
       793 
793 
     | 
    
         | 
| 
       794 
794 
     | 
    
         
             
                  # Reads next frame image
         
     | 
| 
       795 
795 
     | 
    
         
             
                  #
         
     | 
| 
       796 
     | 
    
         
            -
                  def read 
     | 
| 
      
 796 
     | 
    
         
            +
                  def read()
         
     | 
| 
       797 
797 
     | 
    
         
             
                    @camera.image
         
     | 
| 
       798 
798 
     | 
    
         
             
                  end
         
     | 
| 
       799 
799 
     | 
    
         | 
| 
         @@ -801,7 +801,7 @@ module RubySketch 
     | 
|
| 
       801 
801 
     | 
    
         
             
                  #
         
     | 
| 
       802 
802 
     | 
    
         
             
                  # @return [Numeric] the width of captured image
         
     | 
| 
       803 
803 
     | 
    
         
             
                  #
         
     | 
| 
       804 
     | 
    
         
            -
                  def width 
     | 
| 
      
 804 
     | 
    
         
            +
                  def width()
         
     | 
| 
       805 
805 
     | 
    
         
             
                    @camera.image&.width || 0
         
     | 
| 
       806 
806 
     | 
    
         
             
                  end
         
     | 
| 
       807 
807 
     | 
    
         | 
| 
         @@ -809,17 +809,17 @@ module RubySketch 
     | 
|
| 
       809 
809 
     | 
    
         
             
                  #
         
     | 
| 
       810 
810 
     | 
    
         
             
                  # @return [Numeric] the height of captured image
         
     | 
| 
       811 
811 
     | 
    
         
             
                  #
         
     | 
| 
       812 
     | 
    
         
            -
                  def height 
     | 
| 
      
 812 
     | 
    
         
            +
                  def height()
         
     | 
| 
       813 
813 
     | 
    
         
             
                    @camera.image&.height || 0
         
     | 
| 
       814 
814 
     | 
    
         
             
                  end
         
     | 
| 
       815 
815 
     | 
    
         | 
| 
       816 
816 
     | 
    
         
             
                  # @private
         
     | 
| 
       817 
     | 
    
         
            -
                  def getInternal__ 
     | 
| 
      
 817 
     | 
    
         
            +
                  def getInternal__()
         
     | 
| 
       818 
818 
     | 
    
         
             
                    @camera.image || dummyImage__
         
     | 
| 
       819 
819 
     | 
    
         
             
                  end
         
     | 
| 
       820 
820 
     | 
    
         | 
| 
       821 
821 
     | 
    
         
             
                  # @private
         
     | 
| 
       822 
     | 
    
         
            -
                  private def dummyImage__ 
     | 
| 
      
 822 
     | 
    
         
            +
                  private def dummyImage__()
         
     | 
| 
       823 
823 
     | 
    
         
             
                    @dummy ||= Rays::Image.new 1, 1
         
     | 
| 
       824 
824 
     | 
    
         
             
                  end
         
     | 
| 
       825 
825 
     | 
    
         | 
| 
         @@ -852,50 +852,99 @@ module RubySketch 
     | 
|
| 
       852 
852 
     | 
    
         | 
| 
       853 
853 
     | 
    
         
             
                  # RGB mode for colorMode().
         
     | 
| 
       854 
854 
     | 
    
         
             
                  #
         
     | 
| 
       855 
     | 
    
         
            -
                  RGB = : 
     | 
| 
      
 855 
     | 
    
         
            +
                  RGB = :rgb
         
     | 
| 
       856 
856 
     | 
    
         | 
| 
       857 
857 
     | 
    
         
             
                  # HSB mode for colorMode().
         
     | 
| 
       858 
858 
     | 
    
         
             
                  #
         
     | 
| 
       859 
     | 
    
         
            -
                  HSB = : 
     | 
| 
      
 859 
     | 
    
         
            +
                  HSB = :hsb
         
     | 
| 
       860 
860 
     | 
    
         | 
| 
       861 
861 
     | 
    
         
             
                  # Radian mode for angleMode().
         
     | 
| 
       862 
862 
     | 
    
         
             
                  #
         
     | 
| 
       863 
     | 
    
         
            -
                  RADIANS = : 
     | 
| 
      
 863 
     | 
    
         
            +
                  RADIANS = :radians
         
     | 
| 
       864 
864 
     | 
    
         | 
| 
       865 
865 
     | 
    
         
             
                  # Degree mode for angleMode().
         
     | 
| 
       866 
866 
     | 
    
         
             
                  #
         
     | 
| 
       867 
     | 
    
         
            -
                  DEGREES = : 
     | 
| 
      
 867 
     | 
    
         
            +
                  DEGREES = :degrees
         
     | 
| 
       868 
868 
     | 
    
         | 
| 
       869 
869 
     | 
    
         
             
                  # Mode for rectMode(), ellipseMode() and imageMode().
         
     | 
| 
       870 
870 
     | 
    
         
             
                  #
         
     | 
| 
       871 
     | 
    
         
            -
                  CORNER  = : 
     | 
| 
      
 871 
     | 
    
         
            +
                  CORNER  = :corner
         
     | 
| 
       872 
872 
     | 
    
         | 
| 
       873 
873 
     | 
    
         
             
                  # Mode for rectMode(), ellipseMode() and imageMode().
         
     | 
| 
       874 
874 
     | 
    
         
             
                  #
         
     | 
| 
       875 
     | 
    
         
            -
                  CORNERS = : 
     | 
| 
      
 875 
     | 
    
         
            +
                  CORNERS = :corners
         
     | 
| 
       876 
876 
     | 
    
         | 
| 
       877 
877 
     | 
    
         
             
                  # Mode for rectMode(), ellipseMode(), imageMode() and textAlign().
         
     | 
| 
       878 
878 
     | 
    
         
             
                  #
         
     | 
| 
       879 
     | 
    
         
            -
                  CENTER  = : 
     | 
| 
      
 879 
     | 
    
         
            +
                  CENTER  = :center
         
     | 
| 
       880 
880 
     | 
    
         | 
| 
       881 
881 
     | 
    
         
             
                  # Mode for rectMode() and ellipseMode().
         
     | 
| 
       882 
882 
     | 
    
         
             
                  #
         
     | 
| 
       883 
     | 
    
         
            -
                  RADIUS  = : 
     | 
| 
      
 883 
     | 
    
         
            +
                  RADIUS  = :radius
         
     | 
| 
      
 884 
     | 
    
         
            +
             
     | 
| 
      
 885 
     | 
    
         
            +
                  # Key codes.
         
     | 
| 
      
 886 
     | 
    
         
            +
                  ENTER     = :enter
         
     | 
| 
      
 887 
     | 
    
         
            +
                  SPACE     = :space
         
     | 
| 
      
 888 
     | 
    
         
            +
                  TAB       = :tab
         
     | 
| 
      
 889 
     | 
    
         
            +
                  DELETE    = :delete
         
     | 
| 
      
 890 
     | 
    
         
            +
                  BACKSPACE = :backspace
         
     | 
| 
      
 891 
     | 
    
         
            +
                  ESC       = :escape
         
     | 
| 
      
 892 
     | 
    
         
            +
                  HOME      = :home
         
     | 
| 
      
 893 
     | 
    
         
            +
                  #END       = :end
         
     | 
| 
      
 894 
     | 
    
         
            +
                  PAGEUP    = :pageup
         
     | 
| 
      
 895 
     | 
    
         
            +
                  PAGEDOWN  = :pagedown
         
     | 
| 
      
 896 
     | 
    
         
            +
                  CLEAR     = :clear
         
     | 
| 
      
 897 
     | 
    
         
            +
                  SHIFT     = :shift
         
     | 
| 
      
 898 
     | 
    
         
            +
                  CONTROL   = :control
         
     | 
| 
      
 899 
     | 
    
         
            +
                  ALT       = :alt
         
     | 
| 
      
 900 
     | 
    
         
            +
                  WIN       = :win
         
     | 
| 
      
 901 
     | 
    
         
            +
                  COMMAND   = :command
         
     | 
| 
      
 902 
     | 
    
         
            +
                  OPTION    = :option
         
     | 
| 
      
 903 
     | 
    
         
            +
                  FUNCTION  = :function
         
     | 
| 
      
 904 
     | 
    
         
            +
                  CAPSLOCK  = :capslock
         
     | 
| 
      
 905 
     | 
    
         
            +
                  SECTION   = :section
         
     | 
| 
      
 906 
     | 
    
         
            +
                  HELP      = :help
         
     | 
| 
      
 907 
     | 
    
         
            +
                  F1        = :f1
         
     | 
| 
      
 908 
     | 
    
         
            +
                  F2        = :f2
         
     | 
| 
      
 909 
     | 
    
         
            +
                  F3        = :f3
         
     | 
| 
      
 910 
     | 
    
         
            +
                  F4        = :f4
         
     | 
| 
      
 911 
     | 
    
         
            +
                  F5        = :f5
         
     | 
| 
      
 912 
     | 
    
         
            +
                  F6        = :f6
         
     | 
| 
      
 913 
     | 
    
         
            +
                  F7        = :f7
         
     | 
| 
      
 914 
     | 
    
         
            +
                  F8        = :f8
         
     | 
| 
      
 915 
     | 
    
         
            +
                  F9        = :f9
         
     | 
| 
      
 916 
     | 
    
         
            +
                  F10       = :f10
         
     | 
| 
      
 917 
     | 
    
         
            +
                  F11       = :f11
         
     | 
| 
      
 918 
     | 
    
         
            +
                  F12       = :f12
         
     | 
| 
      
 919 
     | 
    
         
            +
                  F13       = :f13
         
     | 
| 
      
 920 
     | 
    
         
            +
                  F14       = :f14
         
     | 
| 
      
 921 
     | 
    
         
            +
                  F15       = :f15
         
     | 
| 
      
 922 
     | 
    
         
            +
                  F16       = :f16
         
     | 
| 
      
 923 
     | 
    
         
            +
                  F17       = :f17
         
     | 
| 
      
 924 
     | 
    
         
            +
                  F18       = :f18
         
     | 
| 
      
 925 
     | 
    
         
            +
                  F19       = :f19
         
     | 
| 
      
 926 
     | 
    
         
            +
                  F20       = :f20
         
     | 
| 
      
 927 
     | 
    
         
            +
                  F21       = :f21
         
     | 
| 
      
 928 
     | 
    
         
            +
                  F22       = :f22
         
     | 
| 
      
 929 
     | 
    
         
            +
                  F23       = :f23
         
     | 
| 
      
 930 
     | 
    
         
            +
                  F24       = :f24
         
     | 
| 
      
 931 
     | 
    
         
            +
                  UP        = :up
         
     | 
| 
      
 932 
     | 
    
         
            +
                  DOWN      = :down
         
     | 
| 
      
 933 
     | 
    
         
            +
             
     | 
| 
      
 934 
     | 
    
         
            +
                  # Key code or Mode for textAlign().
         
     | 
| 
      
 935 
     | 
    
         
            +
                  LEFT     = :left
         
     | 
| 
      
 936 
     | 
    
         
            +
             
     | 
| 
      
 937 
     | 
    
         
            +
                  # Key code or Mode for textAlign().
         
     | 
| 
      
 938 
     | 
    
         
            +
                  RIGHT    = :right
         
     | 
| 
       884 
939 
     | 
    
         | 
| 
       885 
940 
     | 
    
         
             
                  # Mode for textAlign().
         
     | 
| 
       886 
     | 
    
         
            -
                   
     | 
| 
      
 941 
     | 
    
         
            +
                  TOP      = :top
         
     | 
| 
       887 
942 
     | 
    
         | 
| 
       888 
943 
     | 
    
         
             
                  # Mode for textAlign().
         
     | 
| 
       889 
     | 
    
         
            -
                   
     | 
| 
      
 944 
     | 
    
         
            +
                  BOTTOM   = :bottom
         
     | 
| 
       890 
945 
     | 
    
         | 
| 
       891 
946 
     | 
    
         
             
                  # Mode for textAlign().
         
     | 
| 
       892 
     | 
    
         
            -
                   
     | 
| 
       893 
     | 
    
         
            -
             
     | 
| 
       894 
     | 
    
         
            -
                  # Mode for textAlign().
         
     | 
| 
       895 
     | 
    
         
            -
                  BOTTOM   = :BOTTOM
         
     | 
| 
       896 
     | 
    
         
            -
             
     | 
| 
       897 
     | 
    
         
            -
                  # Mode for textAlign().
         
     | 
| 
       898 
     | 
    
         
            -
                  BASELINE = :BASELINE
         
     | 
| 
      
 947 
     | 
    
         
            +
                  BASELINE = :baseline
         
     | 
| 
       899 
948 
     | 
    
         | 
| 
       900 
949 
     | 
    
         
             
                  # Mode for strokeCap().
         
     | 
| 
       901 
950 
     | 
    
         
             
                  #
         
     | 
| 
         @@ -913,7 +962,7 @@ module RubySketch 
     | 
|
| 
       913 
962 
     | 
    
         
             
                  #
         
     | 
| 
       914 
963 
     | 
    
         
             
                  SQUARE = :square
         
     | 
| 
       915 
964 
     | 
    
         | 
| 
       916 
     | 
    
         
            -
                  def init__ 
     | 
| 
      
 965 
     | 
    
         
            +
                  def init__(image, painter)
         
     | 
| 
       917 
966 
     | 
    
         
             
                    @drawing__     = false
         
     | 
| 
       918 
967 
     | 
    
         
             
                    @hsbColor__    = false
         
     | 
| 
       919 
968 
     | 
    
         
             
                    @colorMaxes__  = [1.0] * 4
         
     | 
| 
         @@ -937,29 +986,30 @@ module RubySketch 
     | 
|
| 
       937 
986 
     | 
    
         | 
| 
       938 
987 
     | 
    
         
             
                    fill 255
         
     | 
| 
       939 
988 
     | 
    
         
             
                    stroke 0
         
     | 
| 
      
 989 
     | 
    
         
            +
                    strokeWeight 1
         
     | 
| 
       940 
990 
     | 
    
         
             
                  end
         
     | 
| 
       941 
991 
     | 
    
         | 
| 
       942 
     | 
    
         
            -
                  def updateCanvas__ 
     | 
| 
      
 992 
     | 
    
         
            +
                  def updateCanvas__(image, painter)
         
     | 
| 
       943 
993 
     | 
    
         
             
                    @image__, @painter__ = image, painter
         
     | 
| 
       944 
994 
     | 
    
         
             
                  end
         
     | 
| 
       945 
995 
     | 
    
         | 
| 
       946 
996 
     | 
    
         
             
                  # @private
         
     | 
| 
       947 
     | 
    
         
            -
                  def beginDraw__ 
     | 
| 
      
 997 
     | 
    
         
            +
                  def beginDraw__()
         
     | 
| 
       948 
998 
     | 
    
         
             
                    @matrixStack__.clear
         
     | 
| 
       949 
999 
     | 
    
         
             
                    @styleStack__.clear
         
     | 
| 
       950 
1000 
     | 
    
         
             
                    @drawing__ = true
         
     | 
| 
       951 
1001 
     | 
    
         
             
                  end
         
     | 
| 
       952 
1002 
     | 
    
         | 
| 
       953 
1003 
     | 
    
         
             
                  # @private
         
     | 
| 
       954 
     | 
    
         
            -
                  def endDraw__ 
     | 
| 
      
 1004 
     | 
    
         
            +
                  def endDraw__()
         
     | 
| 
       955 
1005 
     | 
    
         
             
                    @drawing__ = false
         
     | 
| 
       956 
1006 
     | 
    
         
             
                  end
         
     | 
| 
       957 
1007 
     | 
    
         | 
| 
       958 
     | 
    
         
            -
                  def width 
     | 
| 
      
 1008 
     | 
    
         
            +
                  def width()
         
     | 
| 
       959 
1009 
     | 
    
         
             
                    @image__.width
         
     | 
| 
       960 
1010 
     | 
    
         
             
                  end
         
     | 
| 
       961 
1011 
     | 
    
         | 
| 
       962 
     | 
    
         
            -
                  def height 
     | 
| 
      
 1012 
     | 
    
         
            +
                  def height()
         
     | 
| 
       963 
1013 
     | 
    
         
             
                    @image__.height
         
     | 
| 
       964 
1014 
     | 
    
         
             
                  end
         
     | 
| 
       965 
1015 
     | 
    
         | 
| 
         @@ -979,8 +1029,8 @@ module RubySketch 
     | 
|
| 
       979 
1029 
     | 
    
         
             
                  #
         
     | 
| 
       980 
1030 
     | 
    
         
             
                  # @return [nil] nil
         
     | 
| 
       981 
1031 
     | 
    
         
             
                  #
         
     | 
| 
       982 
     | 
    
         
            -
                  def colorMode 
     | 
| 
       983 
     | 
    
         
            -
                    mode = mode. 
     | 
| 
      
 1032 
     | 
    
         
            +
                  def colorMode(mode, *maxes)
         
     | 
| 
      
 1033 
     | 
    
         
            +
                    mode = mode.downcase.to_sym
         
     | 
| 
       984 
1034 
     | 
    
         
             
                    raise ArgumentError, "invalid color mode: #{mode}" unless [RGB, HSB].include?(mode)
         
     | 
| 
       985 
1035 
     | 
    
         
             
                    raise ArgumentError unless [0, 1, 3, 4].include?(maxes.size)
         
     | 
| 
       986 
1036 
     | 
    
         | 
| 
         @@ -993,7 +1043,7 @@ module RubySketch 
     | 
|
| 
       993 
1043 
     | 
    
         
             
                  end
         
     | 
| 
       994 
1044 
     | 
    
         | 
| 
       995 
1045 
     | 
    
         
             
                  # @private
         
     | 
| 
       996 
     | 
    
         
            -
                  private def toRGBA__ 
     | 
| 
      
 1046 
     | 
    
         
            +
                  private def toRGBA__(*args)
         
     | 
| 
       997 
1047 
     | 
    
         
             
                    a, b, c, d = args
         
     | 
| 
       998 
1048 
     | 
    
         
             
                    return parseColor__(a, b || alphaMax__) if a.kind_of?(String)
         
     | 
| 
       999 
1049 
     | 
    
         | 
| 
         @@ -1008,8 +1058,8 @@ module RubySketch 
     | 
|
| 
       1008 
1058 
     | 
    
         
             
                  end
         
     | 
| 
       1009 
1059 
     | 
    
         | 
| 
       1010 
1060 
     | 
    
         
             
                  # @private
         
     | 
| 
       1011 
     | 
    
         
            -
                  private def parseColor__ 
     | 
| 
       1012 
     | 
    
         
            -
                    result = str.match 
     | 
| 
      
 1061 
     | 
    
         
            +
                  private def parseColor__(str, alpha)
         
     | 
| 
      
 1062 
     | 
    
         
            +
                    result = str.match(/^\s*##{'([0-9a-f]{2})' * 3}\s*$/i)
         
     | 
| 
       1013 
1063 
     | 
    
         
             
                    raise ArgumentError, "invalid color code: '#{str}'" unless result
         
     | 
| 
       1014 
1064 
     | 
    
         | 
| 
       1015 
1065 
     | 
    
         
             
                    rgb = result[1..3].map.with_index {|hex, i| hex.to_i(16) / 255.0}
         
     | 
| 
         @@ -1017,7 +1067,7 @@ module RubySketch 
     | 
|
| 
       1017 
1067 
     | 
    
         
             
                  end
         
     | 
| 
       1018 
1068 
     | 
    
         | 
| 
       1019 
1069 
     | 
    
         
             
                  # @private
         
     | 
| 
       1020 
     | 
    
         
            -
                  private def alphaMax__ 
     | 
| 
      
 1070 
     | 
    
         
            +
                  private def alphaMax__()
         
     | 
| 
       1021 
1071 
     | 
    
         
             
                    @colorMaxes__[3]
         
     | 
| 
       1022 
1072 
     | 
    
         
             
                  end
         
     | 
| 
       1023 
1073 
     | 
    
         | 
| 
         @@ -1027,8 +1077,8 @@ module RubySketch 
     | 
|
| 
       1027 
1077 
     | 
    
         
             
                  #
         
     | 
| 
       1028 
1078 
     | 
    
         
             
                  # @return [nil] nil
         
     | 
| 
       1029 
1079 
     | 
    
         
             
                  #
         
     | 
| 
       1030 
     | 
    
         
            -
                  def angleMode 
     | 
| 
       1031 
     | 
    
         
            -
                    @angleScale__ = case mode. 
     | 
| 
      
 1080 
     | 
    
         
            +
                  def angleMode(mode)
         
     | 
| 
      
 1081 
     | 
    
         
            +
                    @angleScale__ = case mode.downcase.to_sym
         
     | 
| 
       1032 
1082 
     | 
    
         
             
                      when RADIANS then RAD2DEG__
         
     | 
| 
       1033 
1083 
     | 
    
         
             
                      when DEGREES then 1.0
         
     | 
| 
       1034 
1084 
     | 
    
         
             
                      else raise ArgumentError, "invalid angle mode: #{mode}"
         
     | 
| 
         @@ -1037,7 +1087,7 @@ module RubySketch 
     | 
|
| 
       1037 
1087 
     | 
    
         
             
                  end
         
     | 
| 
       1038 
1088 
     | 
    
         | 
| 
       1039 
1089 
     | 
    
         
             
                  # @private
         
     | 
| 
       1040 
     | 
    
         
            -
                  def toAngle__ 
     | 
| 
      
 1090 
     | 
    
         
            +
                  def toAngle__(angle)
         
     | 
| 
       1041 
1091 
     | 
    
         
             
                    angle * @angleScale__
         
     | 
| 
       1042 
1092 
     | 
    
         
             
                  end
         
     | 
| 
       1043 
1093 
     | 
    
         | 
| 
         @@ -1052,7 +1102,7 @@ module RubySketch 
     | 
|
| 
       1052 
1102 
     | 
    
         
             
                  #
         
     | 
| 
       1053 
1103 
     | 
    
         
             
                  # @return [nil] nil
         
     | 
| 
       1054 
1104 
     | 
    
         
             
                  #
         
     | 
| 
       1055 
     | 
    
         
            -
                  def rectMode 
     | 
| 
      
 1105 
     | 
    
         
            +
                  def rectMode(mode)
         
     | 
| 
       1056 
1106 
     | 
    
         
             
                    @rectMode__ = mode
         
     | 
| 
       1057 
1107 
     | 
    
         
             
                  end
         
     | 
| 
       1058 
1108 
     | 
    
         | 
| 
         @@ -1067,7 +1117,7 @@ module RubySketch 
     | 
|
| 
       1067 
1117 
     | 
    
         
             
                  #
         
     | 
| 
       1068 
1118 
     | 
    
         
             
                  # @return [nil] nil
         
     | 
| 
       1069 
1119 
     | 
    
         
             
                  #
         
     | 
| 
       1070 
     | 
    
         
            -
                  def ellipseMode 
     | 
| 
      
 1120 
     | 
    
         
            +
                  def ellipseMode(mode)
         
     | 
| 
       1071 
1121 
     | 
    
         
             
                    @ellipseMode__ = mode
         
     | 
| 
       1072 
1122 
     | 
    
         
             
                  end
         
     | 
| 
       1073 
1123 
     | 
    
         | 
| 
         @@ -1081,12 +1131,12 @@ module RubySketch 
     | 
|
| 
       1081 
1131 
     | 
    
         
             
                  #
         
     | 
| 
       1082 
1132 
     | 
    
         
             
                  # @return [nil] nil
         
     | 
| 
       1083 
1133 
     | 
    
         
             
                  #
         
     | 
| 
       1084 
     | 
    
         
            -
                  def imageMode 
     | 
| 
      
 1134 
     | 
    
         
            +
                  def imageMode(mode)
         
     | 
| 
       1085 
1135 
     | 
    
         
             
                    @imageMode__ = mode
         
     | 
| 
       1086 
1136 
     | 
    
         
             
                  end
         
     | 
| 
       1087 
1137 
     | 
    
         | 
| 
       1088 
1138 
     | 
    
         
             
                  # @private
         
     | 
| 
       1089 
     | 
    
         
            -
                  private def toXYWH__ 
     | 
| 
      
 1139 
     | 
    
         
            +
                  private def toXYWH__(mode, a, b, c, d)
         
     | 
| 
       1090 
1140 
     | 
    
         
             
                    case mode
         
     | 
| 
       1091 
1141 
     | 
    
         
             
                    when CORNER  then [a,           b,           c,     d]
         
     | 
| 
       1092 
1142 
     | 
    
         
             
                    when CORNERS then [a,           b,           c - a, d - b]
         
     | 
| 
         @@ -1114,7 +1164,7 @@ module RubySketch 
     | 
|
| 
       1114 
1164 
     | 
    
         
             
                  #
         
     | 
| 
       1115 
1165 
     | 
    
         
             
                  # @return [nil] nil
         
     | 
| 
       1116 
1166 
     | 
    
         
             
                  #
         
     | 
| 
       1117 
     | 
    
         
            -
                  def fill 
     | 
| 
      
 1167 
     | 
    
         
            +
                  def fill(*args)
         
     | 
| 
       1118 
1168 
     | 
    
         
             
                    @painter__.fill(*toRGBA__(*args))
         
     | 
| 
       1119 
1169 
     | 
    
         
             
                    nil
         
     | 
| 
       1120 
1170 
     | 
    
         
             
                  end
         
     | 
| 
         @@ -1137,7 +1187,7 @@ module RubySketch 
     | 
|
| 
       1137 
1187 
     | 
    
         
             
                  #
         
     | 
| 
       1138 
1188 
     | 
    
         
             
                  # @return [nil] nil
         
     | 
| 
       1139 
1189 
     | 
    
         
             
                  #
         
     | 
| 
       1140 
     | 
    
         
            -
                  def stroke 
     | 
| 
      
 1190 
     | 
    
         
            +
                  def stroke(*args)
         
     | 
| 
       1141 
1191 
     | 
    
         
             
                    @painter__.stroke(*toRGBA__(*args))
         
     | 
| 
       1142 
1192 
     | 
    
         
             
                    nil
         
     | 
| 
       1143 
1193 
     | 
    
         
             
                  end
         
     | 
| 
         @@ -1148,7 +1198,7 @@ module RubySketch 
     | 
|
| 
       1148 
1198 
     | 
    
         
             
                  #
         
     | 
| 
       1149 
1199 
     | 
    
         
             
                  # @return [nil] nil
         
     | 
| 
       1150 
1200 
     | 
    
         
             
                  #
         
     | 
| 
       1151 
     | 
    
         
            -
                  def strokeWeight 
     | 
| 
      
 1201 
     | 
    
         
            +
                  def strokeWeight(weight)
         
     | 
| 
       1152 
1202 
     | 
    
         
             
                    @painter__.stroke_width weight
         
     | 
| 
       1153 
1203 
     | 
    
         
             
                    nil
         
     | 
| 
       1154 
1204 
     | 
    
         
             
                  end
         
     | 
| 
         @@ -1159,7 +1209,7 @@ module RubySketch 
     | 
|
| 
       1159 
1209 
     | 
    
         
             
                  #
         
     | 
| 
       1160 
1210 
     | 
    
         
             
                  # @return [nil] nil
         
     | 
| 
       1161 
1211 
     | 
    
         
             
                  #
         
     | 
| 
       1162 
     | 
    
         
            -
                  def strokeCap 
     | 
| 
      
 1212 
     | 
    
         
            +
                  def strokeCap(cap)
         
     | 
| 
       1163 
1213 
     | 
    
         
             
                    @painter__.stroke_cap cap
         
     | 
| 
       1164 
1214 
     | 
    
         
             
                    nil
         
     | 
| 
       1165 
1215 
     | 
    
         
             
                  end
         
     | 
| 
         @@ -1170,7 +1220,7 @@ module RubySketch 
     | 
|
| 
       1170 
1220 
     | 
    
         
             
                  #
         
     | 
| 
       1171 
1221 
     | 
    
         
             
                  # @return [nil] nil
         
     | 
| 
       1172 
1222 
     | 
    
         
             
                  #
         
     | 
| 
       1173 
     | 
    
         
            -
                  def strokeJoin 
     | 
| 
      
 1223 
     | 
    
         
            +
                  def strokeJoin(join)
         
     | 
| 
       1174 
1224 
     | 
    
         
             
                    @painter__.stroke_join join
         
     | 
| 
       1175 
1225 
     | 
    
         
             
                    nil
         
     | 
| 
       1176 
1226 
     | 
    
         
             
                  end
         
     | 
| 
         @@ -1179,7 +1229,7 @@ module RubySketch 
     | 
|
| 
       1179 
1229 
     | 
    
         
             
                  #
         
     | 
| 
       1180 
1230 
     | 
    
         
             
                  # @return [nil] nil
         
     | 
| 
       1181 
1231 
     | 
    
         
             
                  #
         
     | 
| 
       1182 
     | 
    
         
            -
                  def noFill 
     | 
| 
      
 1232 
     | 
    
         
            +
                  def noFill()
         
     | 
| 
       1183 
1233 
     | 
    
         
             
                    @painter__.fill nil
         
     | 
| 
       1184 
1234 
     | 
    
         
             
                    nil
         
     | 
| 
       1185 
1235 
     | 
    
         
             
                  end
         
     | 
| 
         @@ -1188,7 +1238,7 @@ module RubySketch 
     | 
|
| 
       1188 
1238 
     | 
    
         
             
                  #
         
     | 
| 
       1189 
1239 
     | 
    
         
             
                  # @return [nil] nil
         
     | 
| 
       1190 
1240 
     | 
    
         
             
                  #
         
     | 
| 
       1191 
     | 
    
         
            -
                  def noStroke 
     | 
| 
      
 1241 
     | 
    
         
            +
                  def noStroke()
         
     | 
| 
       1192 
1242 
     | 
    
         
             
                    @painter__.stroke nil
         
     | 
| 
       1193 
1243 
     | 
    
         
             
                    nil
         
     | 
| 
       1194 
1244 
     | 
    
         
             
                  end
         
     | 
| 
         @@ -1200,7 +1250,7 @@ module RubySketch 
     | 
|
| 
       1200 
1250 
     | 
    
         
             
                  #
         
     | 
| 
       1201 
1251 
     | 
    
         
             
                  # @return [Font] current font
         
     | 
| 
       1202 
1252 
     | 
    
         
             
                  #
         
     | 
| 
       1203 
     | 
    
         
            -
                  def textFont 
     | 
| 
      
 1253 
     | 
    
         
            +
                  def textFont(name = nil, size = nil)
         
     | 
| 
       1204 
1254 
     | 
    
         
             
                    setFont__ name, size if name || size
         
     | 
| 
       1205 
1255 
     | 
    
         
             
                    Font.new @painter__.font
         
     | 
| 
       1206 
1256 
     | 
    
         
             
                  end
         
     | 
| 
         @@ -1211,30 +1261,30 @@ module RubySketch 
     | 
|
| 
       1211 
1261 
     | 
    
         
             
                  #
         
     | 
| 
       1212 
1262 
     | 
    
         
             
                  # @return [nil] nil
         
     | 
| 
       1213 
1263 
     | 
    
         
             
                  #
         
     | 
| 
       1214 
     | 
    
         
            -
                  def textSize 
     | 
| 
      
 1264 
     | 
    
         
            +
                  def textSize(size)
         
     | 
| 
       1215 
1265 
     | 
    
         
             
                    setFont__ @painter__.font.name, size
         
     | 
| 
       1216 
1266 
     | 
    
         
             
                    nil
         
     | 
| 
       1217 
1267 
     | 
    
         
             
                  end
         
     | 
| 
       1218 
1268 
     | 
    
         | 
| 
       1219 
     | 
    
         
            -
                  def textWidth 
     | 
| 
      
 1269 
     | 
    
         
            +
                  def textWidth(str)
         
     | 
| 
       1220 
1270 
     | 
    
         
             
                    @painter__.font.width str
         
     | 
| 
       1221 
1271 
     | 
    
         
             
                  end
         
     | 
| 
       1222 
1272 
     | 
    
         | 
| 
       1223 
     | 
    
         
            -
                  def textAscent 
     | 
| 
      
 1273 
     | 
    
         
            +
                  def textAscent()
         
     | 
| 
       1224 
1274 
     | 
    
         
             
                    @painter__.font.ascent
         
     | 
| 
       1225 
1275 
     | 
    
         
             
                  end
         
     | 
| 
       1226 
1276 
     | 
    
         | 
| 
       1227 
     | 
    
         
            -
                  def textDescent 
     | 
| 
      
 1277 
     | 
    
         
            +
                  def textDescent()
         
     | 
| 
       1228 
1278 
     | 
    
         
             
                    @painter__.font.descent
         
     | 
| 
       1229 
1279 
     | 
    
         
             
                  end
         
     | 
| 
       1230 
1280 
     | 
    
         | 
| 
       1231 
     | 
    
         
            -
                  def textAlign 
     | 
| 
      
 1281 
     | 
    
         
            +
                  def textAlign(horizontal, vertical = BASELINE)
         
     | 
| 
       1232 
1282 
     | 
    
         
             
                    @textAlignH__ = horizontal
         
     | 
| 
       1233 
1283 
     | 
    
         
             
                    @textAlignV__ = vertical
         
     | 
| 
       1234 
1284 
     | 
    
         
             
                  end
         
     | 
| 
       1235 
1285 
     | 
    
         | 
| 
       1236 
1286 
     | 
    
         
             
                  # @private
         
     | 
| 
       1237 
     | 
    
         
            -
                  def setFont__ 
     | 
| 
      
 1287 
     | 
    
         
            +
                  def setFont__(name, size)
         
     | 
| 
       1238 
1288 
     | 
    
         
             
                    size = 256 if size && size > 256
         
     | 
| 
       1239 
1289 
     | 
    
         
             
                    @painter__.font name, size
         
     | 
| 
       1240 
1290 
     | 
    
         
             
                  end
         
     | 
| 
         @@ -1257,11 +1307,11 @@ module RubySketch 
     | 
|
| 
       1257 
1307 
     | 
    
         
             
                  #
         
     | 
| 
       1258 
1308 
     | 
    
         
             
                  # @return [nil] nil
         
     | 
| 
       1259 
1309 
     | 
    
         
             
                  #
         
     | 
| 
       1260 
     | 
    
         
            -
                  def background 
     | 
| 
      
 1310 
     | 
    
         
            +
                  def background(*args)
         
     | 
| 
       1261 
1311 
     | 
    
         
             
                    assertDrawing__
         
     | 
| 
       1262 
     | 
    
         
            -
                    rgba = toRGBA__ 
     | 
| 
      
 1312 
     | 
    
         
            +
                    rgba = toRGBA__(*args)
         
     | 
| 
       1263 
1313 
     | 
    
         
             
                    if rgba[3] == 1
         
     | 
| 
       1264 
     | 
    
         
            -
                      @painter__.background 
     | 
| 
      
 1314 
     | 
    
         
            +
                      @painter__.background(*rgba)
         
     | 
| 
       1265 
1315 
     | 
    
         
             
                    else
         
     | 
| 
       1266 
1316 
     | 
    
         
             
                      @painter__.push fill: rgba, stroke: nil do |_|
         
     | 
| 
       1267 
1317 
     | 
    
         
             
                        @painter__.rect 0, 0, width, height
         
     | 
| 
         @@ -1277,7 +1327,7 @@ module RubySketch 
     | 
|
| 
       1277 
1327 
     | 
    
         
             
                  #
         
     | 
| 
       1278 
1328 
     | 
    
         
             
                  # @return [nil] nil
         
     | 
| 
       1279 
1329 
     | 
    
         
             
                  #
         
     | 
| 
       1280 
     | 
    
         
            -
                  def point 
     | 
| 
      
 1330 
     | 
    
         
            +
                  def point(x, y)
         
     | 
| 
       1281 
1331 
     | 
    
         
             
                    assertDrawing__
         
     | 
| 
       1282 
1332 
     | 
    
         
             
                    w = @painter__.stroke_width
         
     | 
| 
       1283 
1333 
     | 
    
         
             
                    w = 1 if w == 0
         
     | 
| 
         @@ -1294,7 +1344,7 @@ module RubySketch 
     | 
|
| 
       1294 
1344 
     | 
    
         
             
                  #
         
     | 
| 
       1295 
1345 
     | 
    
         
             
                  # @return [nil] nil
         
     | 
| 
       1296 
1346 
     | 
    
         
             
                  #
         
     | 
| 
       1297 
     | 
    
         
            -
                  def line 
     | 
| 
      
 1347 
     | 
    
         
            +
                  def line(x1, y1, x2, y2)
         
     | 
| 
       1298 
1348 
     | 
    
         
             
                    assertDrawing__
         
     | 
| 
       1299 
1349 
     | 
    
         
             
                    @painter__.line x1, y1, x2, y2
         
     | 
| 
       1300 
1350 
     | 
    
         
             
                    nil
         
     | 
| 
         @@ -1318,7 +1368,7 @@ module RubySketch 
     | 
|
| 
       1318 
1368 
     | 
    
         
             
                  #
         
     | 
| 
       1319 
1369 
     | 
    
         
             
                  # @return [nil] nil
         
     | 
| 
       1320 
1370 
     | 
    
         
             
                  #
         
     | 
| 
       1321 
     | 
    
         
            -
                  def rect 
     | 
| 
      
 1371 
     | 
    
         
            +
                  def rect(a, b, c, d, *args)
         
     | 
| 
       1322 
1372 
     | 
    
         
             
                    assertDrawing__
         
     | 
| 
       1323 
1373 
     | 
    
         
             
                    x, y, w, h = toXYWH__ @rectMode__, a, b, c, d
         
     | 
| 
       1324 
1374 
     | 
    
         
             
                    case args.size
         
     | 
| 
         @@ -1339,7 +1389,7 @@ module RubySketch 
     | 
|
| 
       1339 
1389 
     | 
    
         
             
                  #
         
     | 
| 
       1340 
1390 
     | 
    
         
             
                  # @return [nil] nil
         
     | 
| 
       1341 
1391 
     | 
    
         
             
                  #
         
     | 
| 
       1342 
     | 
    
         
            -
                  def ellipse 
     | 
| 
      
 1392 
     | 
    
         
            +
                  def ellipse(a, b, c, d)
         
     | 
| 
       1343 
1393 
     | 
    
         
             
                    assertDrawing__
         
     | 
| 
       1344 
1394 
     | 
    
         
             
                    x, y, w, h = toXYWH__ @ellipseMode__, a, b, c, d
         
     | 
| 
       1345 
1395 
     | 
    
         
             
                    @painter__.ellipse x, y, w, h
         
     | 
| 
         @@ -1354,7 +1404,7 @@ module RubySketch 
     | 
|
| 
       1354 
1404 
     | 
    
         
             
                  #
         
     | 
| 
       1355 
1405 
     | 
    
         
             
                  # @return [nil] nil
         
     | 
| 
       1356 
1406 
     | 
    
         
             
                  #
         
     | 
| 
       1357 
     | 
    
         
            -
                  def circle 
     | 
| 
      
 1407 
     | 
    
         
            +
                  def circle(x, y, extent)
         
     | 
| 
       1358 
1408 
     | 
    
         
             
                    ellipse x, y, extent, extent
         
     | 
| 
       1359 
1409 
     | 
    
         
             
                  end
         
     | 
| 
       1360 
1410 
     | 
    
         | 
| 
         @@ -1369,11 +1419,11 @@ module RubySketch 
     | 
|
| 
       1369 
1419 
     | 
    
         
             
                  #
         
     | 
| 
       1370 
1420 
     | 
    
         
             
                  # @return [nil] nil
         
     | 
| 
       1371 
1421 
     | 
    
         
             
                  #
         
     | 
| 
       1372 
     | 
    
         
            -
                  def arc 
     | 
| 
      
 1422 
     | 
    
         
            +
                  def arc(a, b, c, d, start, stop)
         
     | 
| 
       1373 
1423 
     | 
    
         
             
                    assertDrawing__
         
     | 
| 
       1374 
1424 
     | 
    
         
             
                    x, y, w, h = toXYWH__ @ellipseMode__, a, b, c, d
         
     | 
| 
       1375 
     | 
    
         
            -
                    start      = toAngle__ 
     | 
| 
       1376 
     | 
    
         
            -
                    stop       = toAngle__ 
     | 
| 
      
 1425 
     | 
    
         
            +
                    start      = toAngle__(-start)
         
     | 
| 
      
 1426 
     | 
    
         
            +
                    stop       = toAngle__(-stop)
         
     | 
| 
       1377 
1427 
     | 
    
         
             
                    @painter__.ellipse x, y, w, h, from: start, to: stop
         
     | 
| 
       1378 
1428 
     | 
    
         
             
                    nil
         
     | 
| 
       1379 
1429 
     | 
    
         
             
                  end
         
     | 
| 
         @@ -1386,7 +1436,7 @@ module RubySketch 
     | 
|
| 
       1386 
1436 
     | 
    
         
             
                  #
         
     | 
| 
       1387 
1437 
     | 
    
         
             
                  # @return [nil] nil
         
     | 
| 
       1388 
1438 
     | 
    
         
             
                  #
         
     | 
| 
       1389 
     | 
    
         
            -
                  def square 
     | 
| 
      
 1439 
     | 
    
         
            +
                  def square(x, y, extent)
         
     | 
| 
       1390 
1440 
     | 
    
         
             
                    rect x, y, extent, extent
         
     | 
| 
       1391 
1441 
     | 
    
         
             
                  end
         
     | 
| 
       1392 
1442 
     | 
    
         | 
| 
         @@ -1401,7 +1451,7 @@ module RubySketch 
     | 
|
| 
       1401 
1451 
     | 
    
         
             
                  #
         
     | 
| 
       1402 
1452 
     | 
    
         
             
                  # @return [nil] nil
         
     | 
| 
       1403 
1453 
     | 
    
         
             
                  #
         
     | 
| 
       1404 
     | 
    
         
            -
                  def triangle 
     | 
| 
      
 1454 
     | 
    
         
            +
                  def triangle(x1, y1, x2, y2, x3, y3)
         
     | 
| 
       1405 
1455 
     | 
    
         
             
                    assertDrawing__
         
     | 
| 
       1406 
1456 
     | 
    
         
             
                    @painter__.line x1, y1, x2, y2, x3, y3, loop: true
         
     | 
| 
       1407 
1457 
     | 
    
         
             
                    nil
         
     | 
| 
         @@ -1420,7 +1470,7 @@ module RubySketch 
     | 
|
| 
       1420 
1470 
     | 
    
         
             
                  #
         
     | 
| 
       1421 
1471 
     | 
    
         
             
                  # @return [nil] nil
         
     | 
| 
       1422 
1472 
     | 
    
         
             
                  #
         
     | 
| 
       1423 
     | 
    
         
            -
                  def quad 
     | 
| 
      
 1473 
     | 
    
         
            +
                  def quad(x1, y1, x2, y2, x3, y3, x4, y4)
         
     | 
| 
       1424 
1474 
     | 
    
         
             
                    assertDrawing__
         
     | 
| 
       1425 
1475 
     | 
    
         
             
                    @painter__.line x1, y1, x2, y2, x3, y3, x4, y4, loop: true
         
     | 
| 
       1426 
1476 
     | 
    
         
             
                    nil
         
     | 
| 
         @@ -1439,7 +1489,7 @@ module RubySketch 
     | 
|
| 
       1439 
1489 
     | 
    
         
             
                  #
         
     | 
| 
       1440 
1490 
     | 
    
         
             
                  # @return [nil] nil
         
     | 
| 
       1441 
1491 
     | 
    
         
             
                  #
         
     | 
| 
       1442 
     | 
    
         
            -
                  def curve 
     | 
| 
      
 1492 
     | 
    
         
            +
                  def curve(cx1, cy1, x1, y1, x2, y2, cx2, cy2)
         
     | 
| 
       1443 
1493 
     | 
    
         
             
                    assertDrawing__
         
     | 
| 
       1444 
1494 
     | 
    
         
             
                    @painter__.curve cx1, cy1, x1, y1, x2, y2, cx2, cy2
         
     | 
| 
       1445 
1495 
     | 
    
         
             
                    nil
         
     | 
| 
         @@ -1458,7 +1508,7 @@ module RubySketch 
     | 
|
| 
       1458 
1508 
     | 
    
         
             
                  #
         
     | 
| 
       1459 
1509 
     | 
    
         
             
                  # @return [nil] nil
         
     | 
| 
       1460 
1510 
     | 
    
         
             
                  #
         
     | 
| 
       1461 
     | 
    
         
            -
                  def bezier 
     | 
| 
      
 1511 
     | 
    
         
            +
                  def bezier(x1, y1, cx1, cy1, cx2, cy2, x2, y2)
         
     | 
| 
       1462 
1512 
     | 
    
         
             
                    assertDrawing__
         
     | 
| 
       1463 
1513 
     | 
    
         
             
                    @painter__.bezier x1, y1, cx1, cy1, cx2, cy2, x2, y2
         
     | 
| 
       1464 
1514 
     | 
    
         
             
                    nil
         
     | 
| 
         @@ -1480,7 +1530,7 @@ module RubySketch 
     | 
|
| 
       1480 
1530 
     | 
    
         
             
                  #
         
     | 
| 
       1481 
1531 
     | 
    
         
             
                  # @return [nil] nil
         
     | 
| 
       1482 
1532 
     | 
    
         
             
                  #
         
     | 
| 
       1483 
     | 
    
         
            -
                  def text 
     | 
| 
      
 1533 
     | 
    
         
            +
                  def text(str, x, y, x2 = nil, y2 = nil)
         
     | 
| 
       1484 
1534 
     | 
    
         
             
                    assertDrawing__
         
     | 
| 
       1485 
1535 
     | 
    
         
             
                    if x2
         
     | 
| 
       1486 
1536 
     | 
    
         
             
                      raise ArgumentError, "missing y2 parameter" unless y2
         
     | 
| 
         @@ -1514,7 +1564,7 @@ module RubySketch 
     | 
|
| 
       1514 
1564 
     | 
    
         
             
                  #
         
     | 
| 
       1515 
1565 
     | 
    
         
             
                  # @return [nil] nil
         
     | 
| 
       1516 
1566 
     | 
    
         
             
                  #
         
     | 
| 
       1517 
     | 
    
         
            -
                  def image 
     | 
| 
      
 1567 
     | 
    
         
            +
                  def image(img, a, b, c = nil, d = nil)
         
     | 
| 
       1518 
1568 
     | 
    
         
             
                    assertDrawing__
         
     | 
| 
       1519 
1569 
     | 
    
         
             
                    i = img.getInternal__
         
     | 
| 
       1520 
1570 
     | 
    
         
             
                    x, y, w, h = toXYWH__ @imageMode__, a, b, c || i.width, d || i.height
         
     | 
| 
         @@ -1539,9 +1589,9 @@ module RubySketch 
     | 
|
| 
       1539 
1589 
     | 
    
         
             
                  #
         
     | 
| 
       1540 
1590 
     | 
    
         
             
                  # @return [nil] nil
         
     | 
| 
       1541 
1591 
     | 
    
         
             
                  #
         
     | 
| 
       1542 
     | 
    
         
            -
                  def copy 
     | 
| 
      
 1592 
     | 
    
         
            +
                  def copy(img = nil, sx, sy, sw, sh, dx, dy, dw, dh)
         
     | 
| 
       1543 
1593 
     | 
    
         
             
                    assertDrawing__
         
     | 
| 
       1544 
     | 
    
         
            -
                    src = img&.getInternal__ || @window__. 
     | 
| 
      
 1594 
     | 
    
         
            +
                    src = img&.getInternal__ || @window__.canvas_image
         
     | 
| 
       1545 
1595 
     | 
    
         
             
                    @painter__.image src, sx, sy, sw, sh, dx, dy, dw, dh
         
     | 
| 
       1546 
1596 
     | 
    
         
             
                  end
         
     | 
| 
       1547 
1597 
     | 
    
         | 
| 
         @@ -1552,7 +1602,7 @@ module RubySketch 
     | 
|
| 
       1552 
1602 
     | 
    
         
             
                  #
         
     | 
| 
       1553 
1603 
     | 
    
         
             
                  # @return [nil] nil
         
     | 
| 
       1554 
1604 
     | 
    
         
             
                  #
         
     | 
| 
       1555 
     | 
    
         
            -
                  def translate 
     | 
| 
      
 1605 
     | 
    
         
            +
                  def translate(x, y)
         
     | 
| 
       1556 
1606 
     | 
    
         
             
                    assertDrawing__
         
     | 
| 
       1557 
1607 
     | 
    
         
             
                    @painter__.translate x, y
         
     | 
| 
       1558 
1608 
     | 
    
         
             
                    nil
         
     | 
| 
         @@ -1569,7 +1619,7 @@ module RubySketch 
     | 
|
| 
       1569 
1619 
     | 
    
         
             
                  #
         
     | 
| 
       1570 
1620 
     | 
    
         
             
                  # @return [nil] nil
         
     | 
| 
       1571 
1621 
     | 
    
         
             
                  #
         
     | 
| 
       1572 
     | 
    
         
            -
                  def scale 
     | 
| 
      
 1622 
     | 
    
         
            +
                  def scale(x, y)
         
     | 
| 
       1573 
1623 
     | 
    
         
             
                    assertDrawing__
         
     | 
| 
       1574 
1624 
     | 
    
         
             
                    @painter__.scale x, y
         
     | 
| 
       1575 
1625 
     | 
    
         
             
                    nil
         
     | 
| 
         @@ -1581,7 +1631,7 @@ module RubySketch 
     | 
|
| 
       1581 
1631 
     | 
    
         
             
                  #
         
     | 
| 
       1582 
1632 
     | 
    
         
             
                  # @return [nil] nil
         
     | 
| 
       1583 
1633 
     | 
    
         
             
                  #
         
     | 
| 
       1584 
     | 
    
         
            -
                  def rotate 
     | 
| 
      
 1634 
     | 
    
         
            +
                  def rotate(angle)
         
     | 
| 
       1585 
1635 
     | 
    
         
             
                    assertDrawing__
         
     | 
| 
       1586 
1636 
     | 
    
         
             
                    @painter__.rotate toAngle__ angle
         
     | 
| 
       1587 
1637 
     | 
    
         
             
                    nil
         
     | 
| 
         @@ -1591,7 +1641,7 @@ module RubySketch 
     | 
|
| 
       1591 
1641 
     | 
    
         
             
                  #
         
     | 
| 
       1592 
1642 
     | 
    
         
             
                  # @return [nil] nil
         
     | 
| 
       1593 
1643 
     | 
    
         
             
                  #
         
     | 
| 
       1594 
     | 
    
         
            -
                  def pushMatrix 
     | 
| 
      
 1644 
     | 
    
         
            +
                  def pushMatrix(&block)
         
     | 
| 
       1595 
1645 
     | 
    
         
             
                    assertDrawing__
         
     | 
| 
       1596 
1646 
     | 
    
         
             
                    @matrixStack__.push @painter__.matrix
         
     | 
| 
       1597 
1647 
     | 
    
         
             
                    if block
         
     | 
| 
         @@ -1605,7 +1655,7 @@ module RubySketch 
     | 
|
| 
       1605 
1655 
     | 
    
         
             
                  #
         
     | 
| 
       1606 
1656 
     | 
    
         
             
                  # @return [nil] nil
         
     | 
| 
       1607 
1657 
     | 
    
         
             
                  #
         
     | 
| 
       1608 
     | 
    
         
            -
                  def popMatrix 
     | 
| 
      
 1658 
     | 
    
         
            +
                  def popMatrix()
         
     | 
| 
       1609 
1659 
     | 
    
         
             
                    assertDrawing__
         
     | 
| 
       1610 
1660 
     | 
    
         
             
                    raise "matrix stack underflow" if @matrixStack__.empty?
         
     | 
| 
       1611 
1661 
     | 
    
         
             
                    @painter__.matrix = @matrixStack__.pop
         
     | 
| 
         @@ -1616,7 +1666,7 @@ module RubySketch 
     | 
|
| 
       1616 
1666 
     | 
    
         
             
                  #
         
     | 
| 
       1617 
1667 
     | 
    
         
             
                  # @return [nil] nil
         
     | 
| 
       1618 
1668 
     | 
    
         
             
                  #
         
     | 
| 
       1619 
     | 
    
         
            -
                  def resetMatrix 
     | 
| 
      
 1669 
     | 
    
         
            +
                  def resetMatrix()
         
     | 
| 
       1620 
1670 
     | 
    
         
             
                    assertDrawing__
         
     | 
| 
       1621 
1671 
     | 
    
         
             
                    @painter__.matrix = 1
         
     | 
| 
       1622 
1672 
     | 
    
         
             
                    nil
         
     | 
| 
         @@ -1626,7 +1676,7 @@ module RubySketch 
     | 
|
| 
       1626 
1676 
     | 
    
         
             
                  #
         
     | 
| 
       1627 
1677 
     | 
    
         
             
                  # @return [nil] nil
         
     | 
| 
       1628 
1678 
     | 
    
         
             
                  #
         
     | 
| 
       1629 
     | 
    
         
            -
                  def pushStyle 
     | 
| 
      
 1679 
     | 
    
         
            +
                  def pushStyle(&block)
         
     | 
| 
       1630 
1680 
     | 
    
         
             
                    assertDrawing__
         
     | 
| 
       1631 
1681 
     | 
    
         
             
                    @styleStack__.push [
         
     | 
| 
       1632 
1682 
     | 
    
         
             
                      @painter__.fill,
         
     | 
| 
         @@ -1653,7 +1703,7 @@ module RubySketch 
     | 
|
| 
       1653 
1703 
     | 
    
         
             
                  #
         
     | 
| 
       1654 
1704 
     | 
    
         
             
                  # @return [nil] nil
         
     | 
| 
       1655 
1705 
     | 
    
         
             
                  #
         
     | 
| 
       1656 
     | 
    
         
            -
                  def popStyle 
     | 
| 
      
 1706 
     | 
    
         
            +
                  def popStyle()
         
     | 
| 
       1657 
1707 
     | 
    
         
             
                    assertDrawing__
         
     | 
| 
       1658 
1708 
     | 
    
         
             
                    raise "style stack underflow" if @styleStack__.empty?
         
     | 
| 
       1659 
1709 
     | 
    
         
             
                    @painter__.fill,
         
     | 
| 
         @@ -1675,7 +1725,7 @@ module RubySketch 
     | 
|
| 
       1675 
1725 
     | 
    
         
             
                  #
         
     | 
| 
       1676 
1726 
     | 
    
         
             
                  # @return [nil] nil
         
     | 
| 
       1677 
1727 
     | 
    
         
             
                  #
         
     | 
| 
       1678 
     | 
    
         
            -
                  def push 
     | 
| 
      
 1728 
     | 
    
         
            +
                  def push(&block)
         
     | 
| 
       1679 
1729 
     | 
    
         
             
                    pushMatrix
         
     | 
| 
       1680 
1730 
     | 
    
         
             
                    pushStyle
         
     | 
| 
       1681 
1731 
     | 
    
         
             
                    if block
         
     | 
| 
         @@ -1688,18 +1738,18 @@ module RubySketch 
     | 
|
| 
       1688 
1738 
     | 
    
         
             
                  #
         
     | 
| 
       1689 
1739 
     | 
    
         
             
                  # @return [nil] nil
         
     | 
| 
       1690 
1740 
     | 
    
         
             
                  #
         
     | 
| 
       1691 
     | 
    
         
            -
                  def pop 
     | 
| 
      
 1741 
     | 
    
         
            +
                  def pop()
         
     | 
| 
       1692 
1742 
     | 
    
         
             
                    popMatrix
         
     | 
| 
       1693 
1743 
     | 
    
         
             
                    popStyle
         
     | 
| 
       1694 
1744 
     | 
    
         
             
                  end
         
     | 
| 
       1695 
1745 
     | 
    
         | 
| 
       1696 
1746 
     | 
    
         
             
                  # @private
         
     | 
| 
       1697 
     | 
    
         
            -
                  def getInternal__ 
     | 
| 
      
 1747 
     | 
    
         
            +
                  def getInternal__()
         
     | 
| 
       1698 
1748 
     | 
    
         
             
                    @image__
         
     | 
| 
       1699 
1749 
     | 
    
         
             
                  end
         
     | 
| 
       1700 
1750 
     | 
    
         | 
| 
       1701 
1751 
     | 
    
         
             
                  # @private
         
     | 
| 
       1702 
     | 
    
         
            -
                  private def assertDrawing__ 
     | 
| 
      
 1752 
     | 
    
         
            +
                  private def assertDrawing__()
         
     | 
| 
       1703 
1753 
     | 
    
         
             
                    raise "call beginDraw() before drawing" unless @drawing__
         
     | 
| 
       1704 
1754 
     | 
    
         
             
                  end
         
     | 
| 
       1705 
1755 
     | 
    
         | 
| 
         @@ -1714,14 +1764,14 @@ module RubySketch 
     | 
|
| 
       1714 
1764 
     | 
    
         | 
| 
       1715 
1765 
     | 
    
         
             
                  # Initialize graphics object.
         
     | 
| 
       1716 
1766 
     | 
    
         
             
                  #
         
     | 
| 
       1717 
     | 
    
         
            -
                  def initialize 
     | 
| 
      
 1767 
     | 
    
         
            +
                  def initialize(width, height)
         
     | 
| 
       1718 
1768 
     | 
    
         
             
                    image = Rays::Image.new width, height
         
     | 
| 
       1719 
1769 
     | 
    
         
             
                    init__ image, image.painter
         
     | 
| 
       1720 
1770 
     | 
    
         
             
                  end
         
     | 
| 
       1721 
1771 
     | 
    
         | 
| 
       1722 
1772 
     | 
    
         
             
                  # Start drawing.
         
     | 
| 
       1723 
1773 
     | 
    
         
             
                  #
         
     | 
| 
       1724 
     | 
    
         
            -
                  def beginDraw 
     | 
| 
      
 1774 
     | 
    
         
            +
                  def beginDraw(&block)
         
     | 
| 
       1725 
1775 
     | 
    
         
             
                    @painter__.__send__ :begin_paint
         
     | 
| 
       1726 
1776 
     | 
    
         
             
                    beginDraw__
         
     | 
| 
       1727 
1777 
     | 
    
         
             
                    push
         
     | 
| 
         @@ -1733,7 +1783,7 @@ module RubySketch 
     | 
|
| 
       1733 
1783 
     | 
    
         | 
| 
       1734 
1784 
     | 
    
         
             
                  # End drawing.
         
     | 
| 
       1735 
1785 
     | 
    
         
             
                  #
         
     | 
| 
       1736 
     | 
    
         
            -
                  def endDraw 
     | 
| 
      
 1786 
     | 
    
         
            +
                  def endDraw()
         
     | 
| 
       1737 
1787 
     | 
    
         
             
                    pop
         
     | 
| 
       1738 
1788 
     | 
    
         
             
                    endDraw__
         
     | 
| 
       1739 
1789 
     | 
    
         
             
                    @painter__.__send__ :end_paint
         
     | 
| 
         @@ -1756,32 +1806,38 @@ module RubySketch 
     | 
|
| 
       1756 
1806 
     | 
    
         
             
                  @@context__ = nil
         
     | 
| 
       1757 
1807 
     | 
    
         | 
| 
       1758 
1808 
     | 
    
         
             
                  # @private
         
     | 
| 
       1759 
     | 
    
         
            -
                  def self.context__ 
     | 
| 
      
 1809 
     | 
    
         
            +
                  def self.context__()
         
     | 
| 
       1760 
1810 
     | 
    
         
             
                    @@context__
         
     | 
| 
       1761 
1811 
     | 
    
         
             
                  end
         
     | 
| 
       1762 
1812 
     | 
    
         | 
| 
       1763 
1813 
     | 
    
         
             
                  # @private
         
     | 
| 
       1764 
     | 
    
         
            -
                  def initialize 
     | 
| 
      
 1814 
     | 
    
         
            +
                  def initialize(window)
         
     | 
| 
       1765 
1815 
     | 
    
         
             
                    @@context__ = self
         
     | 
| 
       1766 
1816 
     | 
    
         | 
| 
       1767 
1817 
     | 
    
         
             
                    tmpdir__.tap {|dir| FileUtils.rm_r dir.to_s if dir.directory?}
         
     | 
| 
       1768 
1818 
     | 
    
         | 
| 
       1769 
1819 
     | 
    
         
             
                    @window__ = window
         
     | 
| 
       1770 
     | 
    
         
            -
                    init__ 
     | 
| 
       1771 
     | 
    
         
            -
             
     | 
| 
       1772 
     | 
    
         
            -
             
     | 
| 
       1773 
     | 
    
         
            -
             
     | 
| 
       1774 
     | 
    
         
            -
                    @ 
     | 
| 
       1775 
     | 
    
         
            -
                    @ 
     | 
| 
       1776 
     | 
    
         
            -
                    @ 
     | 
| 
       1777 
     | 
    
         
            -
                    @ 
     | 
| 
       1778 
     | 
    
         
            -
                    @ 
     | 
| 
      
 1820 
     | 
    
         
            +
                    init__(
         
     | 
| 
      
 1821 
     | 
    
         
            +
                      @window__.canvas_image,
         
     | 
| 
      
 1822 
     | 
    
         
            +
                      @window__.canvas_painter.paint {background 0.8})
         
     | 
| 
      
 1823 
     | 
    
         
            +
             
     | 
| 
      
 1824 
     | 
    
         
            +
                    @loop__            = true
         
     | 
| 
      
 1825 
     | 
    
         
            +
                    @redraw__          = false
         
     | 
| 
      
 1826 
     | 
    
         
            +
                    @frameCount__      = 0
         
     | 
| 
      
 1827 
     | 
    
         
            +
                    @key__             = nil
         
     | 
| 
      
 1828 
     | 
    
         
            +
                    @keyCode__         = nil
         
     | 
| 
      
 1829 
     | 
    
         
            +
                    @keysPressed__     = Set.new
         
     | 
| 
      
 1830 
     | 
    
         
            +
                    @pointerPos__      =
         
     | 
| 
      
 1831 
     | 
    
         
            +
                    @pointerPrevPos__  = [0, 0]
         
     | 
| 
      
 1832 
     | 
    
         
            +
                    @pointersPressed__ = []
         
     | 
| 
      
 1833 
     | 
    
         
            +
                    @touches__         = []
         
     | 
| 
      
 1834 
     | 
    
         
            +
                    @motionGravity__   = createVector 0, 0
         
     | 
| 
       1779 
1835 
     | 
    
         | 
| 
       1780 
1836 
     | 
    
         
             
                    @window__.before_draw = proc {beginDraw__}
         
     | 
| 
       1781 
1837 
     | 
    
         
             
                    @window__.after_draw  = proc {endDraw__}
         
     | 
| 
       1782 
1838 
     | 
    
         | 
| 
       1783 
1839 
     | 
    
         
             
                    drawFrame = -> {
         
     | 
| 
       1784 
     | 
    
         
            -
                      updateCanvas__ @window__. 
     | 
| 
      
 1840 
     | 
    
         
            +
                      updateCanvas__ @window__.canvas_image, @window__.canvas_painter
         
     | 
| 
       1785 
1841 
     | 
    
         
             
                      begin
         
     | 
| 
       1786 
1842 
     | 
    
         
             
                        push
         
     | 
| 
       1787 
1843 
     | 
    
         
             
                        @drawBlock__.call if @drawBlock__
         
     | 
| 
         @@ -1796,17 +1852,47 @@ module RubySketch 
     | 
|
| 
       1796 
1852 
     | 
    
         
             
                        @redraw__ = false
         
     | 
| 
       1797 
1853 
     | 
    
         
             
                        drawFrame.call
         
     | 
| 
       1798 
1854 
     | 
    
         
             
                      end
         
     | 
| 
       1799 
     | 
    
         
            -
                      @ 
     | 
| 
      
 1855 
     | 
    
         
            +
                      @pointerPrevPos__ = @pointerPos__
         
     | 
| 
       1800 
1856 
     | 
    
         
             
                    end
         
     | 
| 
       1801 
1857 
     | 
    
         | 
| 
      
 1858 
     | 
    
         
            +
                    updateKeyStates = -> event, pressed {
         
     | 
| 
      
 1859 
     | 
    
         
            +
                      @key__     = event.chars
         
     | 
| 
      
 1860 
     | 
    
         
            +
                      @keyCode__ = event.key
         
     | 
| 
      
 1861 
     | 
    
         
            +
                      if pressed != nil
         
     | 
| 
      
 1862 
     | 
    
         
            +
                        set, key = @keysPressed__, event.key
         
     | 
| 
      
 1863 
     | 
    
         
            +
                        pressed ? set.add(key) : set.delete(key)
         
     | 
| 
      
 1864 
     | 
    
         
            +
                      end
         
     | 
| 
      
 1865 
     | 
    
         
            +
                    }
         
     | 
| 
      
 1866 
     | 
    
         
            +
             
     | 
| 
      
 1867 
     | 
    
         
            +
                    mouseButtonMap = {
         
     | 
| 
      
 1868 
     | 
    
         
            +
                      mouse_left:   LEFT,
         
     | 
| 
      
 1869 
     | 
    
         
            +
                      mouse_right:  RIGHT,
         
     | 
| 
      
 1870 
     | 
    
         
            +
                      mouse_middle: CENTER
         
     | 
| 
      
 1871 
     | 
    
         
            +
                    }
         
     | 
| 
      
 1872 
     | 
    
         
            +
             
     | 
| 
       1802 
1873 
     | 
    
         
             
                    updatePointerStates = -> event, pressed = nil {
         
     | 
| 
       1803 
     | 
    
         
            -
                      @ 
     | 
| 
       1804 
     | 
    
         
            -
                      @ 
     | 
| 
       1805 
     | 
    
         
            -
                       
     | 
| 
       1806 
     | 
    
         
            -
                         
     | 
| 
       1807 
     | 
    
         
            -
             
     | 
| 
      
 1874 
     | 
    
         
            +
                      @pointerPos__ = event.pos.to_a
         
     | 
| 
      
 1875 
     | 
    
         
            +
                      @touches__    = event.pointers.map {|p| Touch.new(p.id, *p.pos.to_a)}
         
     | 
| 
      
 1876 
     | 
    
         
            +
                      if pressed != nil
         
     | 
| 
      
 1877 
     | 
    
         
            +
                        array = @pointersPressed__
         
     | 
| 
      
 1878 
     | 
    
         
            +
                        event.types
         
     | 
| 
      
 1879 
     | 
    
         
            +
                          .tap {|types| types.delete :mouse}
         
     | 
| 
      
 1880 
     | 
    
         
            +
                          .map {|type| mouseButtonMap[type] || type}
         
     | 
| 
      
 1881 
     | 
    
         
            +
                          .each {|type| pressed ? array.push(type) : array.delete(type)}
         
     | 
| 
      
 1882 
     | 
    
         
            +
                      end
         
     | 
| 
       1808 
1883 
     | 
    
         
             
                    }
         
     | 
| 
       1809 
1884 
     | 
    
         | 
| 
      
 1885 
     | 
    
         
            +
                    @window__.key_down = proc do |e|
         
     | 
| 
      
 1886 
     | 
    
         
            +
                      updateKeyStates.call e, true
         
     | 
| 
      
 1887 
     | 
    
         
            +
                      @keyPressedBlock__&.call
         
     | 
| 
      
 1888 
     | 
    
         
            +
                      @keyTypedBlock__&.call if @key__ && !@key__.empty?
         
     | 
| 
      
 1889 
     | 
    
         
            +
                    end
         
     | 
| 
      
 1890 
     | 
    
         
            +
             
     | 
| 
      
 1891 
     | 
    
         
            +
                    @window__.key_up = proc do |e|
         
     | 
| 
      
 1892 
     | 
    
         
            +
                      updateKeyStates.call e, false
         
     | 
| 
      
 1893 
     | 
    
         
            +
                      @keyReleasedBlock__&.call
         
     | 
| 
      
 1894 
     | 
    
         
            +
                    end
         
     | 
| 
      
 1895 
     | 
    
         
            +
             
     | 
| 
       1810 
1896 
     | 
    
         
             
                    @window__.pointer_down = proc do |e|
         
     | 
| 
       1811 
1897 
     | 
    
         
             
                      updatePointerStates.call e, true
         
     | 
| 
       1812 
1898 
     | 
    
         
             
                      (@touchStartedBlock__ || @mousePressedBlock__)&.call
         
     | 
| 
         @@ -1826,77 +1912,108 @@ module RubySketch 
     | 
|
| 
       1826 
1912 
     | 
    
         
             
                      updatePointerStates.call e
         
     | 
| 
       1827 
1913 
     | 
    
         
             
                      (@touchMovedBlock__ || @mouseDraggedBlock__)&.call
         
     | 
| 
       1828 
1914 
     | 
    
         
             
                    end
         
     | 
| 
      
 1915 
     | 
    
         
            +
             
     | 
| 
      
 1916 
     | 
    
         
            +
                    @window__.motion = proc do |e|
         
     | 
| 
      
 1917 
     | 
    
         
            +
                      @motionGravity__ = createVector(*e.gravity.to_a(3))
         
     | 
| 
      
 1918 
     | 
    
         
            +
                      @motionBlock__&.call
         
     | 
| 
      
 1919 
     | 
    
         
            +
                    end
         
     | 
| 
       1829 
1920 
     | 
    
         
             
                  end
         
     | 
| 
       1830 
1921 
     | 
    
         | 
| 
       1831 
     | 
    
         
            -
                  #  
     | 
| 
      
 1922 
     | 
    
         
            +
                  # Defines setup block.
         
     | 
| 
       1832 
1923 
     | 
    
         
             
                  #
         
     | 
| 
       1833 
     | 
    
         
            -
                  def setup 
     | 
| 
      
 1924 
     | 
    
         
            +
                  def setup(&block)
         
     | 
| 
       1834 
1925 
     | 
    
         
             
                    @window__.setup = block
         
     | 
| 
       1835 
1926 
     | 
    
         
             
                    nil
         
     | 
| 
       1836 
1927 
     | 
    
         
             
                  end
         
     | 
| 
       1837 
1928 
     | 
    
         | 
| 
       1838 
     | 
    
         
            -
                  #  
     | 
| 
      
 1929 
     | 
    
         
            +
                  # Defines draw block.
         
     | 
| 
       1839 
1930 
     | 
    
         
             
                  #
         
     | 
| 
       1840 
     | 
    
         
            -
                  def draw 
     | 
| 
      
 1931 
     | 
    
         
            +
                  def draw(&block)
         
     | 
| 
       1841 
1932 
     | 
    
         
             
                    @drawBlock__ = block if block
         
     | 
| 
       1842 
1933 
     | 
    
         
             
                    nil
         
     | 
| 
       1843 
1934 
     | 
    
         
             
                  end
         
     | 
| 
       1844 
1935 
     | 
    
         | 
| 
       1845 
     | 
    
         
            -
                  #  
     | 
| 
       1846 
     | 
    
         
            -
                   
     | 
| 
       1847 
     | 
    
         
            -
             
     | 
| 
      
 1936 
     | 
    
         
            +
                  # Defines keyPressed block.
         
     | 
| 
      
 1937 
     | 
    
         
            +
                  #
         
     | 
| 
      
 1938 
     | 
    
         
            +
                  # @return [Boolean] is any key pressed or not
         
     | 
| 
      
 1939 
     | 
    
         
            +
                  #
         
     | 
| 
      
 1940 
     | 
    
         
            +
                  def keyPressed(&block)
         
     | 
| 
      
 1941 
     | 
    
         
            +
                    @keyPressedBlock__ = block if block
         
     | 
| 
      
 1942 
     | 
    
         
            +
                    not @keysPressed__.empty?
         
     | 
| 
      
 1943 
     | 
    
         
            +
                  end
         
     | 
| 
      
 1944 
     | 
    
         
            +
             
     | 
| 
      
 1945 
     | 
    
         
            +
                  # Defines keyReleased block.
         
     | 
| 
      
 1946 
     | 
    
         
            +
                  #
         
     | 
| 
      
 1947 
     | 
    
         
            +
                  def keyReleased(&block)
         
     | 
| 
      
 1948 
     | 
    
         
            +
                    @keyReleasedBlock__ = block if block
         
     | 
| 
       1848 
1949 
     | 
    
         
             
                    nil
         
     | 
| 
       1849 
1950 
     | 
    
         
             
                  end
         
     | 
| 
       1850 
1951 
     | 
    
         | 
| 
       1851 
     | 
    
         
            -
                  #  
     | 
| 
      
 1952 
     | 
    
         
            +
                  # Defines keyTyped block.
         
     | 
| 
       1852 
1953 
     | 
    
         
             
                  #
         
     | 
| 
       1853 
     | 
    
         
            -
                  def  
     | 
| 
      
 1954 
     | 
    
         
            +
                  def keyTyped(&block)
         
     | 
| 
      
 1955 
     | 
    
         
            +
                    @keyTypedBlock__ = block if block
         
     | 
| 
      
 1956 
     | 
    
         
            +
                    nil
         
     | 
| 
      
 1957 
     | 
    
         
            +
                  end
         
     | 
| 
      
 1958 
     | 
    
         
            +
             
     | 
| 
      
 1959 
     | 
    
         
            +
                  # Defines mousePressed block.
         
     | 
| 
      
 1960 
     | 
    
         
            +
                  #
         
     | 
| 
      
 1961 
     | 
    
         
            +
                  # @return [Boolean] is any mouse button pressed or not
         
     | 
| 
      
 1962 
     | 
    
         
            +
                  #
         
     | 
| 
      
 1963 
     | 
    
         
            +
                  def mousePressed(&block)
         
     | 
| 
       1854 
1964 
     | 
    
         
             
                    @mousePressedBlock__ = block if block
         
     | 
| 
       1855 
     | 
    
         
            -
                    @ 
     | 
| 
      
 1965 
     | 
    
         
            +
                    not @pointersPressed__.empty?
         
     | 
| 
       1856 
1966 
     | 
    
         
             
                  end
         
     | 
| 
       1857 
1967 
     | 
    
         | 
| 
       1858 
     | 
    
         
            -
                  #  
     | 
| 
      
 1968 
     | 
    
         
            +
                  # Defines mouseReleased block.
         
     | 
| 
       1859 
1969 
     | 
    
         
             
                  #
         
     | 
| 
       1860 
     | 
    
         
            -
                  def mouseReleased 
     | 
| 
      
 1970 
     | 
    
         
            +
                  def mouseReleased(&block)
         
     | 
| 
       1861 
1971 
     | 
    
         
             
                    @mouseReleasedBlock__ = block if block
         
     | 
| 
       1862 
1972 
     | 
    
         
             
                    nil
         
     | 
| 
       1863 
1973 
     | 
    
         
             
                  end
         
     | 
| 
       1864 
1974 
     | 
    
         | 
| 
       1865 
     | 
    
         
            -
                  #  
     | 
| 
      
 1975 
     | 
    
         
            +
                  # Defines mouseMoved block.
         
     | 
| 
       1866 
1976 
     | 
    
         
             
                  #
         
     | 
| 
       1867 
     | 
    
         
            -
                  def mouseMoved 
     | 
| 
      
 1977 
     | 
    
         
            +
                  def mouseMoved(&block)
         
     | 
| 
       1868 
1978 
     | 
    
         
             
                    @mouseMovedBlock__ = block if block
         
     | 
| 
       1869 
1979 
     | 
    
         
             
                    nil
         
     | 
| 
       1870 
1980 
     | 
    
         
             
                  end
         
     | 
| 
       1871 
1981 
     | 
    
         | 
| 
       1872 
     | 
    
         
            -
                  #  
     | 
| 
      
 1982 
     | 
    
         
            +
                  # Defines mouseDragged block.
         
     | 
| 
       1873 
1983 
     | 
    
         
             
                  #
         
     | 
| 
       1874 
     | 
    
         
            -
                  def mouseDragged 
     | 
| 
      
 1984 
     | 
    
         
            +
                  def mouseDragged(&block)
         
     | 
| 
       1875 
1985 
     | 
    
         
             
                    @mouseDraggedBlock__ = block if block
         
     | 
| 
       1876 
1986 
     | 
    
         
             
                    nil
         
     | 
| 
       1877 
1987 
     | 
    
         
             
                  end
         
     | 
| 
       1878 
1988 
     | 
    
         | 
| 
       1879 
     | 
    
         
            -
                  #  
     | 
| 
      
 1989 
     | 
    
         
            +
                  # Defines touchStarted block.
         
     | 
| 
       1880 
1990 
     | 
    
         
             
                  #
         
     | 
| 
       1881 
     | 
    
         
            -
                  def touchStarted 
     | 
| 
      
 1991 
     | 
    
         
            +
                  def touchStarted(&block)
         
     | 
| 
       1882 
1992 
     | 
    
         
             
                    @touchStartedBlock__ = block if block
         
     | 
| 
       1883 
1993 
     | 
    
         
             
                    nil
         
     | 
| 
       1884 
1994 
     | 
    
         
             
                  end
         
     | 
| 
       1885 
1995 
     | 
    
         | 
| 
       1886 
     | 
    
         
            -
                  #  
     | 
| 
      
 1996 
     | 
    
         
            +
                  # Defines touchEnded block.
         
     | 
| 
       1887 
1997 
     | 
    
         
             
                  #
         
     | 
| 
       1888 
     | 
    
         
            -
                  def touchEnded 
     | 
| 
      
 1998 
     | 
    
         
            +
                  def touchEnded(&block)
         
     | 
| 
       1889 
1999 
     | 
    
         
             
                    @touchEndedBlock__ = block if block
         
     | 
| 
       1890 
2000 
     | 
    
         
             
                    nil
         
     | 
| 
       1891 
2001 
     | 
    
         
             
                  end
         
     | 
| 
       1892 
2002 
     | 
    
         | 
| 
       1893 
     | 
    
         
            -
                  #  
     | 
| 
      
 2003 
     | 
    
         
            +
                  # Defines touchMoved block.
         
     | 
| 
       1894 
2004 
     | 
    
         
             
                  #
         
     | 
| 
       1895 
     | 
    
         
            -
                  def touchMoved 
     | 
| 
      
 2005 
     | 
    
         
            +
                  def touchMoved(&block)
         
     | 
| 
       1896 
2006 
     | 
    
         
             
                    @touchMovedBlock__ = block if block
         
     | 
| 
       1897 
2007 
     | 
    
         
             
                    nil
         
     | 
| 
       1898 
2008 
     | 
    
         
             
                  end
         
     | 
| 
       1899 
2009 
     | 
    
         | 
| 
      
 2010 
     | 
    
         
            +
                  # Defines motion block.
         
     | 
| 
      
 2011 
     | 
    
         
            +
                  #
         
     | 
| 
      
 2012 
     | 
    
         
            +
                  def motion(&block)
         
     | 
| 
      
 2013 
     | 
    
         
            +
                    @motionBlock__ = block if block
         
     | 
| 
      
 2014 
     | 
    
         
            +
                    nil
         
     | 
| 
      
 2015 
     | 
    
         
            +
                  end
         
     | 
| 
      
 2016 
     | 
    
         
            +
             
     | 
| 
       1900 
2017 
     | 
    
         
             
                  # Changes canvas size.
         
     | 
| 
       1901 
2018 
     | 
    
         
             
                  #
         
     | 
| 
       1902 
2019 
     | 
    
         
             
                  # @param width        [Integer] new width
         
     | 
| 
         @@ -1905,7 +2022,7 @@ module RubySketch 
     | 
|
| 
       1905 
2022 
     | 
    
         
             
                  #
         
     | 
| 
       1906 
2023 
     | 
    
         
             
                  # @return [nil] nil
         
     | 
| 
       1907 
2024 
     | 
    
         
             
                  #
         
     | 
| 
       1908 
     | 
    
         
            -
                  def size 
     | 
| 
      
 2025 
     | 
    
         
            +
                  def size(width, height, pixelDensity: self.pixelDensity)
         
     | 
| 
       1909 
2026 
     | 
    
         
             
                    resizeCanvas__ :size, width, height, pixelDensity
         
     | 
| 
       1910 
2027 
     | 
    
         
             
                    nil
         
     | 
| 
       1911 
2028 
     | 
    
         
             
                  end
         
     | 
| 
         @@ -1918,7 +2035,7 @@ module RubySketch 
     | 
|
| 
       1918 
2035 
     | 
    
         
             
                  #
         
     | 
| 
       1919 
2036 
     | 
    
         
             
                  # @return [nil] nil
         
     | 
| 
       1920 
2037 
     | 
    
         
             
                  #
         
     | 
| 
       1921 
     | 
    
         
            -
                  def createCanvas 
     | 
| 
      
 2038 
     | 
    
         
            +
                  def createCanvas(width, height, pixelDensity: self.pixelDensity)
         
     | 
| 
       1922 
2039 
     | 
    
         
             
                    resizeCanvas__ :createCanvas, width, height, pixelDensity
         
     | 
| 
       1923 
2040 
     | 
    
         
             
                    nil
         
     | 
| 
       1924 
2041 
     | 
    
         
             
                  end
         
     | 
| 
         @@ -1929,18 +2046,18 @@ module RubySketch 
     | 
|
| 
       1929 
2046 
     | 
    
         
             
                  #
         
     | 
| 
       1930 
2047 
     | 
    
         
             
                  # @return [Numeric] current pixel density
         
     | 
| 
       1931 
2048 
     | 
    
         
             
                  #
         
     | 
| 
       1932 
     | 
    
         
            -
                  def pixelDensity 
     | 
| 
      
 2049 
     | 
    
         
            +
                  def pixelDensity(density = nil)
         
     | 
| 
       1933 
2050 
     | 
    
         
             
                    resizeCanvas__ :pixelDensity, width, height, density if density
         
     | 
| 
       1934 
2051 
     | 
    
         
             
                    @painter__.pixel_density
         
     | 
| 
       1935 
2052 
     | 
    
         
             
                  end
         
     | 
| 
       1936 
2053 
     | 
    
         | 
| 
       1937 
2054 
     | 
    
         
             
                  # @private
         
     | 
| 
       1938 
     | 
    
         
            -
                  def resizeCanvas__ 
     | 
| 
      
 2055 
     | 
    
         
            +
                  def resizeCanvas__(name, width, height, pixelDensity)
         
     | 
| 
       1939 
2056 
     | 
    
         
             
                    raise '#{name}() must be called on startup or setup block' if @started__
         
     | 
| 
       1940 
2057 
     | 
    
         | 
| 
       1941 
2058 
     | 
    
         
             
                    @painter__.__send__ :end_paint
         
     | 
| 
       1942 
2059 
     | 
    
         
             
                    @window__.__send__ :resize_canvas, width, height, pixelDensity
         
     | 
| 
       1943 
     | 
    
         
            -
                    updateCanvas__ @window__. 
     | 
| 
      
 2060 
     | 
    
         
            +
                    updateCanvas__ @window__.canvas_image, @window__.canvas_painter
         
     | 
| 
       1944 
2061 
     | 
    
         
             
                    @painter__.__send__ :begin_paint
         
     | 
| 
       1945 
2062 
     | 
    
         | 
| 
       1946 
2063 
     | 
    
         
             
                    @window__.auto_resize = false
         
     | 
| 
         @@ -1950,7 +2067,7 @@ module RubySketch 
     | 
|
| 
       1950 
2067 
     | 
    
         
             
                  #
         
     | 
| 
       1951 
2068 
     | 
    
         
             
                  # @return [Numeric] pixel density
         
     | 
| 
       1952 
2069 
     | 
    
         
             
                  #
         
     | 
| 
       1953 
     | 
    
         
            -
                  def displayDensity 
     | 
| 
      
 2070 
     | 
    
         
            +
                  def displayDensity()
         
     | 
| 
       1954 
2071 
     | 
    
         
             
                    @window__.painter.pixel_density
         
     | 
| 
       1955 
2072 
     | 
    
         
             
                  end
         
     | 
| 
       1956 
2073 
     | 
    
         | 
| 
         @@ -1958,7 +2075,7 @@ module RubySketch 
     | 
|
| 
       1958 
2075 
     | 
    
         
             
                  #
         
     | 
| 
       1959 
2076 
     | 
    
         
             
                  # @return [Numeric] window width
         
     | 
| 
       1960 
2077 
     | 
    
         
             
                  #
         
     | 
| 
       1961 
     | 
    
         
            -
                  def windowWidth 
     | 
| 
      
 2078 
     | 
    
         
            +
                  def windowWidth()
         
     | 
| 
       1962 
2079 
     | 
    
         
             
                    @window__.width
         
     | 
| 
       1963 
2080 
     | 
    
         
             
                  end
         
     | 
| 
       1964 
2081 
     | 
    
         | 
| 
         @@ -1966,7 +2083,7 @@ module RubySketch 
     | 
|
| 
       1966 
2083 
     | 
    
         
             
                  #
         
     | 
| 
       1967 
2084 
     | 
    
         
             
                  # @return [Numeric] window height
         
     | 
| 
       1968 
2085 
     | 
    
         
             
                  #
         
     | 
| 
       1969 
     | 
    
         
            -
                  def windowHeight 
     | 
| 
      
 2086 
     | 
    
         
            +
                  def windowHeight()
         
     | 
| 
       1970 
2087 
     | 
    
         
             
                    @window__.height
         
     | 
| 
       1971 
2088 
     | 
    
         
             
                  end
         
     | 
| 
       1972 
2089 
     | 
    
         | 
| 
         @@ -1974,7 +2091,7 @@ module RubySketch 
     | 
|
| 
       1974 
2091 
     | 
    
         
             
                  #
         
     | 
| 
       1975 
2092 
     | 
    
         
             
                  # @return [Integer] total number of frames
         
     | 
| 
       1976 
2093 
     | 
    
         
             
                  #
         
     | 
| 
       1977 
     | 
    
         
            -
                  def frameCount 
     | 
| 
      
 2094 
     | 
    
         
            +
                  def frameCount()
         
     | 
| 
       1978 
2095 
     | 
    
         
             
                    @frameCount__
         
     | 
| 
       1979 
2096 
     | 
    
         
             
                  end
         
     | 
| 
       1980 
2097 
     | 
    
         | 
| 
         @@ -1982,55 +2099,87 @@ module RubySketch 
     | 
|
| 
       1982 
2099 
     | 
    
         
             
                  #
         
     | 
| 
       1983 
2100 
     | 
    
         
             
                  # @return [Float] frames per second
         
     | 
| 
       1984 
2101 
     | 
    
         
             
                  #
         
     | 
| 
       1985 
     | 
    
         
            -
                  def frameRate 
     | 
| 
      
 2102 
     | 
    
         
            +
                  def frameRate()
         
     | 
| 
       1986 
2103 
     | 
    
         
             
                    @window__.event.fps
         
     | 
| 
       1987 
2104 
     | 
    
         
             
                  end
         
     | 
| 
       1988 
2105 
     | 
    
         | 
| 
      
 2106 
     | 
    
         
            +
                  # Returns the last key that was pressed or released.
         
     | 
| 
      
 2107 
     | 
    
         
            +
                  #
         
     | 
| 
      
 2108 
     | 
    
         
            +
                  # @return [String] last key
         
     | 
| 
      
 2109 
     | 
    
         
            +
                  #
         
     | 
| 
      
 2110 
     | 
    
         
            +
                  def key()
         
     | 
| 
      
 2111 
     | 
    
         
            +
                    @key__
         
     | 
| 
      
 2112 
     | 
    
         
            +
                  end
         
     | 
| 
      
 2113 
     | 
    
         
            +
             
     | 
| 
      
 2114 
     | 
    
         
            +
                  # Returns the last key code that was pressed or released.
         
     | 
| 
      
 2115 
     | 
    
         
            +
                  #
         
     | 
| 
      
 2116 
     | 
    
         
            +
                  # @return [Symbol] last key code
         
     | 
| 
      
 2117 
     | 
    
         
            +
                  #
         
     | 
| 
      
 2118 
     | 
    
         
            +
                  def keyCode()
         
     | 
| 
      
 2119 
     | 
    
         
            +
                    @keyCode__
         
     | 
| 
      
 2120 
     | 
    
         
            +
                  end
         
     | 
| 
      
 2121 
     | 
    
         
            +
             
     | 
| 
       1989 
2122 
     | 
    
         
             
                  # Returns mouse x position
         
     | 
| 
       1990 
2123 
     | 
    
         
             
                  #
         
     | 
| 
       1991 
2124 
     | 
    
         
             
                  # @return [Numeric] horizontal position of mouse
         
     | 
| 
       1992 
2125 
     | 
    
         
             
                  #
         
     | 
| 
       1993 
     | 
    
         
            -
                  def mouseX 
     | 
| 
       1994 
     | 
    
         
            -
                    @ 
     | 
| 
      
 2126 
     | 
    
         
            +
                  def mouseX()
         
     | 
| 
      
 2127 
     | 
    
         
            +
                    @pointerPos__[0]
         
     | 
| 
       1995 
2128 
     | 
    
         
             
                  end
         
     | 
| 
       1996 
2129 
     | 
    
         | 
| 
       1997 
2130 
     | 
    
         
             
                  # Returns mouse y position
         
     | 
| 
       1998 
2131 
     | 
    
         
             
                  #
         
     | 
| 
       1999 
2132 
     | 
    
         
             
                  # @return [Numeric] vertical position of mouse
         
     | 
| 
       2000 
2133 
     | 
    
         
             
                  #
         
     | 
| 
       2001 
     | 
    
         
            -
                  def mouseY 
     | 
| 
       2002 
     | 
    
         
            -
                    @ 
     | 
| 
      
 2134 
     | 
    
         
            +
                  def mouseY()
         
     | 
| 
      
 2135 
     | 
    
         
            +
                    @pointerPos__[1]
         
     | 
| 
       2003 
2136 
     | 
    
         
             
                  end
         
     | 
| 
       2004 
2137 
     | 
    
         | 
| 
       2005 
2138 
     | 
    
         
             
                  # Returns mouse x position in previous frame
         
     | 
| 
       2006 
2139 
     | 
    
         
             
                  #
         
     | 
| 
       2007 
2140 
     | 
    
         
             
                  # @return [Numeric] horizontal position of mouse
         
     | 
| 
       2008 
2141 
     | 
    
         
             
                  #
         
     | 
| 
       2009 
     | 
    
         
            -
                  def pmouseX 
     | 
| 
       2010 
     | 
    
         
            -
                    @ 
     | 
| 
      
 2142 
     | 
    
         
            +
                  def pmouseX()
         
     | 
| 
      
 2143 
     | 
    
         
            +
                    @pointerPrevPos__[0]
         
     | 
| 
       2011 
2144 
     | 
    
         
             
                  end
         
     | 
| 
       2012 
2145 
     | 
    
         | 
| 
       2013 
2146 
     | 
    
         
             
                  # Returns mouse y position in previous frame
         
     | 
| 
       2014 
2147 
     | 
    
         
             
                  #
         
     | 
| 
       2015 
2148 
     | 
    
         
             
                  # @return [Numeric] vertical position of mouse
         
     | 
| 
       2016 
2149 
     | 
    
         
             
                  #
         
     | 
| 
       2017 
     | 
    
         
            -
                  def pmouseY 
     | 
| 
       2018 
     | 
    
         
            -
                    @ 
     | 
| 
      
 2150 
     | 
    
         
            +
                  def pmouseY()
         
     | 
| 
      
 2151 
     | 
    
         
            +
                    @pointerPrevPos__[1]
         
     | 
| 
      
 2152 
     | 
    
         
            +
                  end
         
     | 
| 
      
 2153 
     | 
    
         
            +
             
     | 
| 
      
 2154 
     | 
    
         
            +
                  # Returns which mouse button was pressed
         
     | 
| 
      
 2155 
     | 
    
         
            +
                  #
         
     | 
| 
      
 2156 
     | 
    
         
            +
                  # @return [Numeric] LEFT, RIGHT, CENTER or 0
         
     | 
| 
      
 2157 
     | 
    
         
            +
                  #
         
     | 
| 
      
 2158 
     | 
    
         
            +
                  def mouseButton()
         
     | 
| 
      
 2159 
     | 
    
         
            +
                    (@pointersPressed__ & [LEFT, RIGHT, CENTER]).last || 0
         
     | 
| 
       2019 
2160 
     | 
    
         
             
                  end
         
     | 
| 
       2020 
2161 
     | 
    
         | 
| 
       2021 
2162 
     | 
    
         
             
                  # Returns array of touches
         
     | 
| 
       2022 
2163 
     | 
    
         
             
                  #
         
     | 
| 
       2023 
2164 
     | 
    
         
             
                  # @return [Array] Touch objects
         
     | 
| 
       2024 
2165 
     | 
    
         
             
                  #
         
     | 
| 
       2025 
     | 
    
         
            -
                  def touches 
     | 
| 
      
 2166 
     | 
    
         
            +
                  def touches()
         
     | 
| 
       2026 
2167 
     | 
    
         
             
                    @touches__
         
     | 
| 
       2027 
2168 
     | 
    
         
             
                  end
         
     | 
| 
       2028 
2169 
     | 
    
         | 
| 
      
 2170 
     | 
    
         
            +
                  # Returns vector for real world gravity
         
     | 
| 
      
 2171 
     | 
    
         
            +
                  #
         
     | 
| 
      
 2172 
     | 
    
         
            +
                  # @return [Vector] gravity vector
         
     | 
| 
      
 2173 
     | 
    
         
            +
                  #
         
     | 
| 
      
 2174 
     | 
    
         
            +
                  def motionGravity()
         
     | 
| 
      
 2175 
     | 
    
         
            +
                    @motionGravity__
         
     | 
| 
      
 2176 
     | 
    
         
            +
                  end
         
     | 
| 
      
 2177 
     | 
    
         
            +
             
     | 
| 
       2029 
2178 
     | 
    
         
             
                  # Enables calling draw block on every frame.
         
     | 
| 
       2030 
2179 
     | 
    
         
             
                  #
         
     | 
| 
       2031 
2180 
     | 
    
         
             
                  # @return [nil] nil
         
     | 
| 
       2032 
2181 
     | 
    
         
             
                  #
         
     | 
| 
       2033 
     | 
    
         
            -
                  def loop 
     | 
| 
      
 2182 
     | 
    
         
            +
                  def loop()
         
     | 
| 
       2034 
2183 
     | 
    
         
             
                    @loop__ = true
         
     | 
| 
       2035 
2184 
     | 
    
         
             
                  end
         
     | 
| 
       2036 
2185 
     | 
    
         | 
| 
         @@ -2038,7 +2187,7 @@ module RubySketch 
     | 
|
| 
       2038 
2187 
     | 
    
         
             
                  #
         
     | 
| 
       2039 
2188 
     | 
    
         
             
                  # @return [nil] nil
         
     | 
| 
       2040 
2189 
     | 
    
         
             
                  #
         
     | 
| 
       2041 
     | 
    
         
            -
                  def noLoop 
     | 
| 
      
 2190 
     | 
    
         
            +
                  def noLoop()
         
     | 
| 
       2042 
2191 
     | 
    
         
             
                    @loop__ = false
         
     | 
| 
       2043 
2192 
     | 
    
         
             
                  end
         
     | 
| 
       2044 
2193 
     | 
    
         | 
| 
         @@ -2046,7 +2195,7 @@ module RubySketch 
     | 
|
| 
       2046 
2195 
     | 
    
         
             
                  #
         
     | 
| 
       2047 
2196 
     | 
    
         
             
                  # @return [nil] nil
         
     | 
| 
       2048 
2197 
     | 
    
         
             
                  #
         
     | 
| 
       2049 
     | 
    
         
            -
                  def redraw 
     | 
| 
      
 2198 
     | 
    
         
            +
                  def redraw()
         
     | 
| 
       2050 
2199 
     | 
    
         
             
                    @redraw__ = true
         
     | 
| 
       2051 
2200 
     | 
    
         
             
                  end
         
     | 
| 
       2052 
2201 
     | 
    
         | 
| 
         @@ -2060,7 +2209,7 @@ module RubySketch 
     | 
|
| 
       2060 
2209 
     | 
    
         
             
                  #
         
     | 
| 
       2061 
2210 
     | 
    
         
             
                  # @return [Numeric] absolute number
         
     | 
| 
       2062 
2211 
     | 
    
         
             
                  #
         
     | 
| 
       2063 
     | 
    
         
            -
                  def abs 
     | 
| 
      
 2212 
     | 
    
         
            +
                  def abs(value)
         
     | 
| 
       2064 
2213 
     | 
    
         
             
                    value.abs
         
     | 
| 
       2065 
2214 
     | 
    
         
             
                  end
         
     | 
| 
       2066 
2215 
     | 
    
         | 
| 
         @@ -2070,7 +2219,7 @@ module RubySketch 
     | 
|
| 
       2070 
2219 
     | 
    
         
             
                  #
         
     | 
| 
       2071 
2220 
     | 
    
         
             
                  # @return [Numeric] rounded up number
         
     | 
| 
       2072 
2221 
     | 
    
         
             
                  #
         
     | 
| 
       2073 
     | 
    
         
            -
                  def ceil 
     | 
| 
      
 2222 
     | 
    
         
            +
                  def ceil(value)
         
     | 
| 
       2074 
2223 
     | 
    
         
             
                    value.ceil
         
     | 
| 
       2075 
2224 
     | 
    
         
             
                  end
         
     | 
| 
       2076 
2225 
     | 
    
         | 
| 
         @@ -2080,7 +2229,7 @@ module RubySketch 
     | 
|
| 
       2080 
2229 
     | 
    
         
             
                  #
         
     | 
| 
       2081 
2230 
     | 
    
         
             
                  # @return [Numeric] rounded down number
         
     | 
| 
       2082 
2231 
     | 
    
         
             
                  #
         
     | 
| 
       2083 
     | 
    
         
            -
                  def floor 
     | 
| 
      
 2232 
     | 
    
         
            +
                  def floor(value)
         
     | 
| 
       2084 
2233 
     | 
    
         
             
                    value.floor
         
     | 
| 
       2085 
2234 
     | 
    
         
             
                  end
         
     | 
| 
       2086 
2235 
     | 
    
         | 
| 
         @@ -2090,7 +2239,7 @@ module RubySketch 
     | 
|
| 
       2090 
2239 
     | 
    
         
             
                  #
         
     | 
| 
       2091 
2240 
     | 
    
         
             
                  # @return [Numeric] rounded number
         
     | 
| 
       2092 
2241 
     | 
    
         
             
                  #
         
     | 
| 
       2093 
     | 
    
         
            -
                  def round 
     | 
| 
      
 2242 
     | 
    
         
            +
                  def round(value)
         
     | 
| 
       2094 
2243 
     | 
    
         
             
                    value.round
         
     | 
| 
       2095 
2244 
     | 
    
         
             
                  end
         
     | 
| 
       2096 
2245 
     | 
    
         | 
| 
         @@ -2100,7 +2249,7 @@ module RubySketch 
     | 
|
| 
       2100 
2249 
     | 
    
         
             
                  #
         
     | 
| 
       2101 
2250 
     | 
    
         
             
                  # @return [Numeric] result number
         
     | 
| 
       2102 
2251 
     | 
    
         
             
                  #
         
     | 
| 
       2103 
     | 
    
         
            -
                  def log 
     | 
| 
      
 2252 
     | 
    
         
            +
                  def log(n)
         
     | 
| 
       2104 
2253 
     | 
    
         
             
                    Math.log n
         
     | 
| 
       2105 
2254 
     | 
    
         
             
                  end
         
     | 
| 
       2106 
2255 
     | 
    
         | 
| 
         @@ -2110,7 +2259,7 @@ module RubySketch 
     | 
|
| 
       2110 
2259 
     | 
    
         
             
                  #
         
     | 
| 
       2111 
2260 
     | 
    
         
             
                  # @return [Numeric] result number
         
     | 
| 
       2112 
2261 
     | 
    
         
             
                  #
         
     | 
| 
       2113 
     | 
    
         
            -
                  def exp 
     | 
| 
      
 2262 
     | 
    
         
            +
                  def exp(n)
         
     | 
| 
       2114 
2263 
     | 
    
         
             
                    Math.exp n
         
     | 
| 
       2115 
2264 
     | 
    
         
             
                  end
         
     | 
| 
       2116 
2265 
     | 
    
         | 
| 
         @@ -2121,7 +2270,7 @@ module RubySketch 
     | 
|
| 
       2121 
2270 
     | 
    
         
             
                  #
         
     | 
| 
       2122 
2271 
     | 
    
         
             
                  # @return [Numeric] value ** exponent
         
     | 
| 
       2123 
2272 
     | 
    
         
             
                  #
         
     | 
| 
       2124 
     | 
    
         
            -
                  def pow 
     | 
| 
      
 2273 
     | 
    
         
            +
                  def pow(value, exponent)
         
     | 
| 
       2125 
2274 
     | 
    
         
             
                    value ** exponent
         
     | 
| 
       2126 
2275 
     | 
    
         
             
                  end
         
     | 
| 
       2127 
2276 
     | 
    
         | 
| 
         @@ -2131,7 +2280,7 @@ module RubySketch 
     | 
|
| 
       2131 
2280 
     | 
    
         
             
                  #
         
     | 
| 
       2132 
2281 
     | 
    
         
             
                  # @return [Numeric] squared value
         
     | 
| 
       2133 
2282 
     | 
    
         
             
                  #
         
     | 
| 
       2134 
     | 
    
         
            -
                  def sq 
     | 
| 
      
 2283 
     | 
    
         
            +
                  def sq(value)
         
     | 
| 
       2135 
2284 
     | 
    
         
             
                    value * value
         
     | 
| 
       2136 
2285 
     | 
    
         
             
                  end
         
     | 
| 
       2137 
2286 
     | 
    
         | 
| 
         @@ -2141,7 +2290,7 @@ module RubySketch 
     | 
|
| 
       2141 
2290 
     | 
    
         
             
                  #
         
     | 
| 
       2142 
2291 
     | 
    
         
             
                  # @return [Numeric] squared value
         
     | 
| 
       2143 
2292 
     | 
    
         
             
                  #
         
     | 
| 
       2144 
     | 
    
         
            -
                  def sqrt 
     | 
| 
      
 2293 
     | 
    
         
            +
                  def sqrt(value)
         
     | 
| 
       2145 
2294 
     | 
    
         
             
                    Math.sqrt value
         
     | 
| 
       2146 
2295 
     | 
    
         
             
                  end
         
     | 
| 
       2147 
2296 
     | 
    
         | 
| 
         @@ -2156,7 +2305,7 @@ module RubySketch 
     | 
|
| 
       2156 
2305 
     | 
    
         
             
                  #
         
     | 
| 
       2157 
2306 
     | 
    
         
             
                  # @return [Numeric] magnitude
         
     | 
| 
       2158 
2307 
     | 
    
         
             
                  #
         
     | 
| 
       2159 
     | 
    
         
            -
                  def mag 
     | 
| 
      
 2308 
     | 
    
         
            +
                  def mag(*args)
         
     | 
| 
       2160 
2309 
     | 
    
         
             
                    x, y, z = *args
         
     | 
| 
       2161 
2310 
     | 
    
         
             
                    case args.size
         
     | 
| 
       2162 
2311 
     | 
    
         
             
                    when 2 then Math.sqrt x * x + y * y
         
     | 
| 
         @@ -2179,7 +2328,7 @@ module RubySketch 
     | 
|
| 
       2179 
2328 
     | 
    
         
             
                  #
         
     | 
| 
       2180 
2329 
     | 
    
         
             
                  # @return [Numeric] distance between 2 points
         
     | 
| 
       2181 
2330 
     | 
    
         
             
                  #
         
     | 
| 
       2182 
     | 
    
         
            -
                  def dist 
     | 
| 
      
 2331 
     | 
    
         
            +
                  def dist(*args)
         
     | 
| 
       2183 
2332 
     | 
    
         
             
                    case args.size
         
     | 
| 
       2184 
2333 
     | 
    
         
             
                    when 4
         
     | 
| 
       2185 
2334 
     | 
    
         
             
                      x1, y1, x2, y2 = *args
         
     | 
| 
         @@ -2201,7 +2350,7 @@ module RubySketch 
     | 
|
| 
       2201 
2350 
     | 
    
         
             
                  #
         
     | 
| 
       2202 
2351 
     | 
    
         
             
                  # @return [Numeric] normalized value between 0..1
         
     | 
| 
       2203 
2352 
     | 
    
         
             
                  #
         
     | 
| 
       2204 
     | 
    
         
            -
                  def norm 
     | 
| 
      
 2353 
     | 
    
         
            +
                  def norm(value, start, stop)
         
     | 
| 
       2205 
2354 
     | 
    
         
             
                    (value.to_f - start.to_f) / (stop.to_f - start.to_f)
         
     | 
| 
       2206 
2355 
     | 
    
         
             
                  end
         
     | 
| 
       2207 
2356 
     | 
    
         | 
| 
         @@ -2213,7 +2362,7 @@ module RubySketch 
     | 
|
| 
       2213 
2362 
     | 
    
         
             
                  #
         
     | 
| 
       2214 
2363 
     | 
    
         
             
                  # @return [Numeric] interporated number
         
     | 
| 
       2215 
2364 
     | 
    
         
             
                  #
         
     | 
| 
       2216 
     | 
    
         
            -
                  def lerp 
     | 
| 
      
 2365 
     | 
    
         
            +
                  def lerp(start, stop, amount)
         
     | 
| 
       2217 
2366 
     | 
    
         
             
                    start + (stop - start) * amount
         
     | 
| 
       2218 
2367 
     | 
    
         
             
                  end
         
     | 
| 
       2219 
2368 
     | 
    
         | 
| 
         @@ -2227,7 +2376,7 @@ module RubySketch 
     | 
|
| 
       2227 
2376 
     | 
    
         
             
                  #
         
     | 
| 
       2228 
2377 
     | 
    
         
             
                  # @return [Numeric] mapped number
         
     | 
| 
       2229 
2378 
     | 
    
         
             
                  #
         
     | 
| 
       2230 
     | 
    
         
            -
                  def map 
     | 
| 
      
 2379 
     | 
    
         
            +
                  def map(value, start1, stop1, start2, stop2)
         
     | 
| 
       2231 
2380 
     | 
    
         
             
                    lerp start2, stop2, norm(value, start1, stop1)
         
     | 
| 
       2232 
2381 
     | 
    
         
             
                  end
         
     | 
| 
       2233 
2382 
     | 
    
         | 
| 
         @@ -2244,7 +2393,7 @@ module RubySketch 
     | 
|
| 
       2244 
2393 
     | 
    
         
             
                  #
         
     | 
| 
       2245 
2394 
     | 
    
         
             
                  # @return [Numeric] minimum value
         
     | 
| 
       2246 
2395 
     | 
    
         
             
                  #
         
     | 
| 
       2247 
     | 
    
         
            -
                  def min 
     | 
| 
      
 2396 
     | 
    
         
            +
                  def min(*args)
         
     | 
| 
       2248 
2397 
     | 
    
         
             
                    args.flatten.min
         
     | 
| 
       2249 
2398 
     | 
    
         
             
                  end
         
     | 
| 
       2250 
2399 
     | 
    
         | 
| 
         @@ -2261,7 +2410,7 @@ module RubySketch 
     | 
|
| 
       2261 
2410 
     | 
    
         
             
                  #
         
     | 
| 
       2262 
2411 
     | 
    
         
             
                  # @return [Numeric] maximum value
         
     | 
| 
       2263 
2412 
     | 
    
         
             
                  #
         
     | 
| 
       2264 
     | 
    
         
            -
                  def max 
     | 
| 
      
 2413 
     | 
    
         
            +
                  def max(*args)
         
     | 
| 
       2265 
2414 
     | 
    
         
             
                    args.flatten.max
         
     | 
| 
       2266 
2415 
     | 
    
         
             
                  end
         
     | 
| 
       2267 
2416 
     | 
    
         | 
| 
         @@ -2273,7 +2422,7 @@ module RubySketch 
     | 
|
| 
       2273 
2422 
     | 
    
         
             
                  #
         
     | 
| 
       2274 
2423 
     | 
    
         
             
                  # @return [Numeric] constrained number
         
     | 
| 
       2275 
2424 
     | 
    
         
             
                  #
         
     | 
| 
       2276 
     | 
    
         
            -
                  def constrain 
     | 
| 
      
 2425 
     | 
    
         
            +
                  def constrain(value, min, max)
         
     | 
| 
       2277 
2426 
     | 
    
         
             
                    value < min ? min : (value > max ? max : value)
         
     | 
| 
       2278 
2427 
     | 
    
         
             
                  end
         
     | 
| 
       2279 
2428 
     | 
    
         | 
| 
         @@ -2283,7 +2432,7 @@ module RubySketch 
     | 
|
| 
       2283 
2432 
     | 
    
         
             
                  #
         
     | 
| 
       2284 
2433 
     | 
    
         
             
                  # @return [Numeric] radian
         
     | 
| 
       2285 
2434 
     | 
    
         
             
                  #
         
     | 
| 
       2286 
     | 
    
         
            -
                  def radians 
     | 
| 
      
 2435 
     | 
    
         
            +
                  def radians(degree)
         
     | 
| 
       2287 
2436 
     | 
    
         
             
                    degree * DEG2RAD__
         
     | 
| 
       2288 
2437 
     | 
    
         
             
                  end
         
     | 
| 
       2289 
2438 
     | 
    
         | 
| 
         @@ -2293,7 +2442,7 @@ module RubySketch 
     | 
|
| 
       2293 
2442 
     | 
    
         
             
                  #
         
     | 
| 
       2294 
2443 
     | 
    
         
             
                  # @return [Numeric] degree
         
     | 
| 
       2295 
2444 
     | 
    
         
             
                  #
         
     | 
| 
       2296 
     | 
    
         
            -
                  def degrees 
     | 
| 
      
 2445 
     | 
    
         
            +
                  def degrees(radian)
         
     | 
| 
       2297 
2446 
     | 
    
         
             
                    radian * RAD2DEG__
         
     | 
| 
       2298 
2447 
     | 
    
         
             
                  end
         
     | 
| 
       2299 
2448 
     | 
    
         | 
| 
         @@ -2303,7 +2452,7 @@ module RubySketch 
     | 
|
| 
       2303 
2452 
     | 
    
         
             
                  #
         
     | 
| 
       2304 
2453 
     | 
    
         
             
                  # @return [Numeric] the sine
         
     | 
| 
       2305 
2454 
     | 
    
         
             
                  #
         
     | 
| 
       2306 
     | 
    
         
            -
                  def sin 
     | 
| 
      
 2455 
     | 
    
         
            +
                  def sin(angle)
         
     | 
| 
       2307 
2456 
     | 
    
         
             
                    Math.sin angle
         
     | 
| 
       2308 
2457 
     | 
    
         
             
                  end
         
     | 
| 
       2309 
2458 
     | 
    
         | 
| 
         @@ -2313,7 +2462,7 @@ module RubySketch 
     | 
|
| 
       2313 
2462 
     | 
    
         
             
                  #
         
     | 
| 
       2314 
2463 
     | 
    
         
             
                  # @return [Numeric] the cosine
         
     | 
| 
       2315 
2464 
     | 
    
         
             
                  #
         
     | 
| 
       2316 
     | 
    
         
            -
                  def cos 
     | 
| 
      
 2465 
     | 
    
         
            +
                  def cos(angle)
         
     | 
| 
       2317 
2466 
     | 
    
         
             
                    Math.cos angle
         
     | 
| 
       2318 
2467 
     | 
    
         
             
                  end
         
     | 
| 
       2319 
2468 
     | 
    
         | 
| 
         @@ -2323,7 +2472,7 @@ module RubySketch 
     | 
|
| 
       2323 
2472 
     | 
    
         
             
                  #
         
     | 
| 
       2324 
2473 
     | 
    
         
             
                  # @return [Numeric] the tangent
         
     | 
| 
       2325 
2474 
     | 
    
         
             
                  #
         
     | 
| 
       2326 
     | 
    
         
            -
                  def tan 
     | 
| 
      
 2475 
     | 
    
         
            +
                  def tan(angle)
         
     | 
| 
       2327 
2476 
     | 
    
         
             
                    Math.tan angle
         
     | 
| 
       2328 
2477 
     | 
    
         
             
                  end
         
     | 
| 
       2329 
2478 
     | 
    
         | 
| 
         @@ -2333,7 +2482,7 @@ module RubySketch 
     | 
|
| 
       2333 
2482 
     | 
    
         
             
                  #
         
     | 
| 
       2334 
2483 
     | 
    
         
             
                  # @return [Numeric] the arc sine
         
     | 
| 
       2335 
2484 
     | 
    
         
             
                  #
         
     | 
| 
       2336 
     | 
    
         
            -
                  def asin 
     | 
| 
      
 2485 
     | 
    
         
            +
                  def asin(value)
         
     | 
| 
       2337 
2486 
     | 
    
         
             
                    Math.asin value
         
     | 
| 
       2338 
2487 
     | 
    
         
             
                  end
         
     | 
| 
       2339 
2488 
     | 
    
         | 
| 
         @@ -2343,7 +2492,7 @@ module RubySketch 
     | 
|
| 
       2343 
2492 
     | 
    
         
             
                  #
         
     | 
| 
       2344 
2493 
     | 
    
         
             
                  # @return [Numeric] the arc cosine
         
     | 
| 
       2345 
2494 
     | 
    
         
             
                  #
         
     | 
| 
       2346 
     | 
    
         
            -
                  def acos 
     | 
| 
      
 2495 
     | 
    
         
            +
                  def acos(value)
         
     | 
| 
       2347 
2496 
     | 
    
         
             
                    Math.acos value
         
     | 
| 
       2348 
2497 
     | 
    
         
             
                  end
         
     | 
| 
       2349 
2498 
     | 
    
         | 
| 
         @@ -2353,7 +2502,7 @@ module RubySketch 
     | 
|
| 
       2353 
2502 
     | 
    
         
             
                  #
         
     | 
| 
       2354 
2503 
     | 
    
         
             
                  # @return [Numeric] the arc tangent
         
     | 
| 
       2355 
2504 
     | 
    
         
             
                  #
         
     | 
| 
       2356 
     | 
    
         
            -
                  def atan 
     | 
| 
      
 2505 
     | 
    
         
            +
                  def atan(value)
         
     | 
| 
       2357 
2506 
     | 
    
         
             
                    Math.atan value
         
     | 
| 
       2358 
2507 
     | 
    
         
             
                  end
         
     | 
| 
       2359 
2508 
     | 
    
         | 
| 
         @@ -2364,7 +2513,7 @@ module RubySketch 
     | 
|
| 
       2364 
2513 
     | 
    
         
             
                  #
         
     | 
| 
       2365 
2514 
     | 
    
         
             
                  # @return [Numeric] the angle in radians
         
     | 
| 
       2366 
2515 
     | 
    
         
             
                  #
         
     | 
| 
       2367 
     | 
    
         
            -
                  def atan2 
     | 
| 
      
 2516 
     | 
    
         
            +
                  def atan2(y, x)
         
     | 
| 
       2368 
2517 
     | 
    
         
             
                    Math.atan2 y, x
         
     | 
| 
       2369 
2518 
     | 
    
         
             
                  end
         
     | 
| 
       2370 
2519 
     | 
    
         | 
| 
         @@ -2380,7 +2529,7 @@ module RubySketch 
     | 
|
| 
       2380 
2529 
     | 
    
         
             
                  #
         
     | 
| 
       2381 
2530 
     | 
    
         
             
                  # @return [Numeric] noise value (0.0..1.0)
         
     | 
| 
       2382 
2531 
     | 
    
         
             
                  #
         
     | 
| 
       2383 
     | 
    
         
            -
                  def noise 
     | 
| 
      
 2532 
     | 
    
         
            +
                  def noise(x, y = 0, z = 0)
         
     | 
| 
       2384 
2533 
     | 
    
         
             
                    Rays.perlin(x, y, z) / 2.0 + 0.5
         
     | 
| 
       2385 
2534 
     | 
    
         
             
                  end
         
     | 
| 
       2386 
2535 
     | 
    
         | 
| 
         @@ -2397,7 +2546,7 @@ module RubySketch 
     | 
|
| 
       2397 
2546 
     | 
    
         
             
                  #
         
     | 
| 
       2398 
2547 
     | 
    
         
             
                  # @return [Float] random number
         
     | 
| 
       2399 
2548 
     | 
    
         
             
                  #
         
     | 
| 
       2400 
     | 
    
         
            -
                  def random 
     | 
| 
      
 2549 
     | 
    
         
            +
                  def random(*args)
         
     | 
| 
       2401 
2550 
     | 
    
         
             
                    return args.first.sample if args.first.kind_of? Array
         
     | 
| 
       2402 
2551 
     | 
    
         
             
                    high, low = args.reverse
         
     | 
| 
       2403 
2552 
     | 
    
         
             
                    rand (low || 0).to_f...(high || 1).to_f
         
     | 
| 
         @@ -2415,16 +2564,16 @@ module RubySketch 
     | 
|
| 
       2415 
2564 
     | 
    
         
             
                  #
         
     | 
| 
       2416 
2565 
     | 
    
         
             
                  # @return [Vector] new vector
         
     | 
| 
       2417 
2566 
     | 
    
         
             
                  #
         
     | 
| 
       2418 
     | 
    
         
            -
                  def createVector 
     | 
| 
       2419 
     | 
    
         
            -
                    Vector.new 
     | 
| 
      
 2567 
     | 
    
         
            +
                  def createVector(*args)
         
     | 
| 
      
 2568 
     | 
    
         
            +
                    Vector.new(*args, context: self)
         
     | 
| 
       2420 
2569 
     | 
    
         
             
                  end
         
     | 
| 
       2421 
2570 
     | 
    
         | 
| 
       2422 
2571 
     | 
    
         
             
                  # Creates a camera object as a video input device.
         
     | 
| 
       2423 
2572 
     | 
    
         
             
                  #
         
     | 
| 
       2424 
2573 
     | 
    
         
             
                  # @return [Capture] camera object
         
     | 
| 
       2425 
2574 
     | 
    
         
             
                  #
         
     | 
| 
       2426 
     | 
    
         
            -
                  def createCapture 
     | 
| 
       2427 
     | 
    
         
            -
                    Capture.new 
     | 
| 
      
 2575 
     | 
    
         
            +
                  def createCapture(*args)
         
     | 
| 
      
 2576 
     | 
    
         
            +
                    Capture.new(*args)
         
     | 
| 
       2428 
2577 
     | 
    
         
             
                  end
         
     | 
| 
       2429 
2578 
     | 
    
         | 
| 
       2430 
2579 
     | 
    
         
             
                  # Creates a new off-screen graphics context object.
         
     | 
| 
         @@ -2434,7 +2583,7 @@ module RubySketch 
     | 
|
| 
       2434 
2583 
     | 
    
         
             
                  #
         
     | 
| 
       2435 
2584 
     | 
    
         
             
                  # @return [Graphics] graphics object
         
     | 
| 
       2436 
2585 
     | 
    
         
             
                  #
         
     | 
| 
       2437 
     | 
    
         
            -
                  def createGraphics 
     | 
| 
      
 2586 
     | 
    
         
            +
                  def createGraphics(width, height)
         
     | 
| 
       2438 
2587 
     | 
    
         
             
                    Graphics.new width, height
         
     | 
| 
       2439 
2588 
     | 
    
         
             
                  end
         
     | 
| 
       2440 
2589 
     | 
    
         | 
| 
         @@ -2445,13 +2594,13 @@ module RubySketch 
     | 
|
| 
       2445 
2594 
     | 
    
         
             
                  #
         
     | 
| 
       2446 
2595 
     | 
    
         
             
                  # @return [Image] loaded image object
         
     | 
| 
       2447 
2596 
     | 
    
         
             
                  #
         
     | 
| 
       2448 
     | 
    
         
            -
                  def loadImage 
     | 
| 
      
 2597 
     | 
    
         
            +
                  def loadImage(filename, extension = nil)
         
     | 
| 
       2449 
2598 
     | 
    
         
             
                    filename = getImage__ filename, extension if filename =~ %r|^https?://|
         
     | 
| 
       2450 
2599 
     | 
    
         
             
                    Image.new Rays::Image.load filename
         
     | 
| 
       2451 
2600 
     | 
    
         
             
                  end
         
     | 
| 
       2452 
2601 
     | 
    
         | 
| 
       2453 
2602 
     | 
    
         
             
                  # @private
         
     | 
| 
       2454 
     | 
    
         
            -
                  private def getImage__ 
     | 
| 
      
 2603 
     | 
    
         
            +
                  private def getImage__(uri, ext)
         
     | 
| 
       2455 
2604 
     | 
    
         
             
                    ext ||= File.extname uri
         
     | 
| 
       2456 
2605 
     | 
    
         
             
                    raise "unsupported image type -- #{ext}" unless ext =~ /^\.?(png)$/i
         
     | 
| 
       2457 
2606 
     | 
    
         | 
| 
         @@ -2475,7 +2624,7 @@ module RubySketch 
     | 
|
| 
       2475 
2624 
     | 
    
         
             
                  end
         
     | 
| 
       2476 
2625 
     | 
    
         | 
| 
       2477 
2626 
     | 
    
         
             
                  # @private
         
     | 
| 
       2478 
     | 
    
         
            -
                  private def tmpdir__ 
     | 
| 
      
 2627 
     | 
    
         
            +
                  private def tmpdir__()
         
     | 
| 
       2479 
2628 
     | 
    
         
             
                    Pathname(Dir.tmpdir) + Digest::SHA1.hexdigest(self.class.name)
         
     | 
| 
       2480 
2629 
     | 
    
         
             
                  end
         
     | 
| 
       2481 
2630 
     | 
    
         |