Revision: 1911 http://trac.macosforge.org/projects/ruby/changeset/1911 Author: lsansonetti@apple.com Date: 2009-06-20 15:17:22 -0700 (Sat, 20 Jun 2009) Log Message: ----------- optimized a few code paths of HotCocoa::Graphics Modified Paths: -------------- MacRuby/branches/experimental/lib/hotcocoa/graphics/canvas.rb MacRuby/branches/experimental/lib/hotcocoa/graphics/color.rb MacRuby/branches/experimental/lib/hotcocoa/graphics/elements/particle.rb MacRuby/branches/experimental/lib/hotcocoa/graphics/path.rb Modified: MacRuby/branches/experimental/lib/hotcocoa/graphics/canvas.rb =================================================================== --- MacRuby/branches/experimental/lib/hotcocoa/graphics/canvas.rb 2009-06-20 12:14:56 UTC (rev 1910) +++ MacRuby/branches/experimental/lib/hotcocoa/graphics/canvas.rb 2009-06-20 22:17:22 UTC (rev 1911) @@ -259,7 +259,7 @@ x = x - w / 2 y = y - h / 2 end - CGContextAddRect(@ctx, [x, y, w, h]) + CGContextAddRect(@ctx, NSMakeRect(x, y, w, h)) CGContextDrawPath(@ctx, KCGPathFillStroke) end @@ -270,7 +270,7 @@ x = x - w / 2 y = y - w / 2 end - CGContextAddEllipseInRect(@ctx, [x, y, w, h]) + CGContextAddEllipseInRect(@ctx, NSMakeRect(x, y, w, h)) CGContextDrawPath(@ctx, KCGPathFillStroke) # apply fill and stroke end @@ -294,14 +294,14 @@ def radial(gradient, sx=@width/2, sy=@height/2, er=@width/2, ex=sx, ey=sy, sr=0.0) #options = KCGGradientDrawsBeforeStartLocation #options = KCGGradientDrawsAfterEndLocation - CGContextDrawRadialGradient(@ctx, gradient.gradient, [sx, sy], sr, [ex, ey], er, gradient.pre + gradient.post) + CGContextDrawRadialGradient(@ctx, gradient.gradient, NSMakePoint(sx, sy), sr, NSMakePoint(ex, ey), er, gradient.pre + gradient.post) end # draw an axial(linear) gradient starting at sx,sy and ending at ex,ey def gradient(gradient=Gradient.new, start_x=@width/2, start_y=0, end_x=@width/2, end_y=@height) #options = KCGGradientDrawsBeforeStartLocation #options = KCGGradientDrawsAfterEndLocation - CGContextDrawLinearGradient(@ctx, gradient.gradient, [start_x, start_y], [end_x, end_y], gradient.pre + gradient.post) + CGContextDrawLinearGradient(@ctx, gradient.gradient, NSMakePoint(start_x, start_y), NSMakePoint(end_x, end_y), gradient.pre + gradient.post) end # draw a cartesian coordinate grid for reference @@ -339,7 +339,7 @@ # draw a line starting at x1,y1 and ending at x2,y2 def line(x1, y1, x2, y2) - CGContextAddLines(@ctx, [[x1, y1], [x2, y2]], 2) + CGContextAddLines(@ctx, [NSPoint.new(x1, y1), NSPoint.new(x2, y2)], 2) CGContextDrawPath(@ctx, KCGPathStroke) # apply stroke endpath Modified: MacRuby/branches/experimental/lib/hotcocoa/graphics/color.rb =================================================================== --- MacRuby/branches/experimental/lib/hotcocoa/graphics/color.rb 2009-06-20 12:14:56 UTC (rev 1910) +++ MacRuby/branches/experimental/lib/hotcocoa/graphics/color.rb 2009-06-20 22:17:22 UTC (rev 1911) @@ -194,7 +194,13 @@ [330, 298], [345, 329], [360, 0 ] ] - + + COLORNAMES.each_key do |name| + (class << self; self; end).define_method(name) do + named(name) + end + end + # create a color with the specified name def self.named(name) if COLORNAMES[name] @@ -236,11 +242,6 @@ nearest end - # if the method name is not recognized, try creating a color with that name - def self.method_missing(name, *args) - Color.named(name.to_s.downcase) - end - # return a copy of this color def copy Color.new(r, g, b, a) Modified: MacRuby/branches/experimental/lib/hotcocoa/graphics/elements/particle.rb =================================================================== --- MacRuby/branches/experimental/lib/hotcocoa/graphics/elements/particle.rb 2009-06-20 12:14:56 UTC (rev 1910) +++ MacRuby/branches/experimental/lib/hotcocoa/graphics/elements/particle.rb 2009-06-20 22:17:22 UTC (rev 1911) @@ -36,7 +36,7 @@ @velocity_y=velocity_y # append the point to the array - @points = [[@x, @y]] + @points = [NSPoint.new(@x, @y)] @stroke = Color.white end @@ -56,7 +56,7 @@ # draw a line from the old position to the new #CANVAS.line(@previous_x,@previous_y,@x,@y); - @points.push([@x, @y]) + @points.push(NSPoint.new(@x, @y)) # grow old @age += 1 @@ -72,4 +72,4 @@ end end -end \ No newline at end of file +end Modified: MacRuby/branches/experimental/lib/hotcocoa/graphics/path.rb =================================================================== --- MacRuby/branches/experimental/lib/hotcocoa/graphics/path.rb 2009-06-20 12:14:56 UTC (rev 1910) +++ MacRuby/branches/experimental/lib/hotcocoa/graphics/path.rb 2009-06-20 22:17:22 UTC (rev 1911) @@ -132,8 +132,7 @@ # return the current point def currentpoint - point = CGPathGetCurrentPoint(@path) - [point.x, point.y] + CGPathGetCurrentPoint(@path) end # true if the path contains the current point # doesn't work? @@ -206,7 +205,7 @@ # draw a line from x1,x2 to x2,y2 def line(x1, y1, x2, y2) - CGPathAddLines(@path, @transform, [[x1, y1], [x2, y2]]) + CGPathAddLines(@path, @transform, [NSMakePoint(x1, y1), NSMakePoint(x2, y2)]) self end @@ -323,4 +322,4 @@ end -end \ No newline at end of file +end