Permalink
Browse files

Merge pull request #10 from wasnotrice/fill

Add fill for existing shapes
2 parents 0a1729c + cc61fc9 commit d35347a6b639ae5fb6cfc8aa06b380f7bc8e919c @pjfitzgibbons pjfitzgibbons committed May 5, 2012
Showing with 1,768 additions and 47 deletions.
  1. +1 −0 .rbenv-version
  2. +1 −0 Rakefile
  3. +8 −1 lib/shoes.rb
  4. +5 −1 lib/shoes/app.rb
  5. +206 −0 lib/shoes/color.rb
  6. +26 −0 lib/shoes/common/paint.rb
  7. +14 −0 lib/shoes/common/style.rb
  8. +95 −0 lib/shoes/common_methods.rb
  9. +75 −6 lib/shoes/element_methods.rb
  10. +24 −0 lib/shoes/line.rb
  11. +37 −0 lib/shoes/oval.rb
  12. +69 −0 lib/shoes/shape.rb
  13. +17 −12 lib/swt_shoes.rb
  14. +13 −0 lib/swt_shoes/color.rb
  15. +34 −2 lib/swt_shoes/element_methods.rb
  16. +1 −1 lib/swt_shoes/layout.rb
  17. +30 −0 lib/swt_shoes/line.rb
  18. +32 −0 lib/swt_shoes/oval.rb
  19. +75 −0 lib/swt_shoes/shape.rb
  20. +3 −0 lib/white_shoes.rb
  21. +8 −3 lib/white_shoes/common_methods.rb
  22. +21 −0 lib/white_shoes/line.rb
  23. +21 −0 lib/white_shoes/oval.rb
  24. +34 −0 lib/white_shoes/shape.rb
  25. +8 −0 samples/simple-stripes.rb
  26. +1 −0 samples/working-swing/simple-sound.rb
  27. +1 −0 samples/working-swt/simple-sound.rb
  28. +1 −0 samples/working-swt/simple-stripes.rb
  29. +46 −3 spec/shoes/app_spec.rb
  30. +240 −0 spec/shoes/color_spec.rb
  31. +135 −7 spec/shoes/element_methods_spec.rb
  32. +38 −0 spec/shoes/line_spec.rb
  33. +63 −0 spec/shoes/oval_spec.rb
  34. +30 −0 spec/shoes/shape_spec.rb
  35. +41 −0 spec/shoes/shared_examples/shared_element_method_spec.rb
  36. +9 −0 spec/shoes/shared_examples/style_spec.rb
  37. +2 −0 spec/shoes/spec_helper.rb
  38. +2 −2 spec/support/shared_examples_for_common_elements_spec.rb
  39. +29 −7 spec/swt_shoes/app_spec.rb
  40. +11 −0 spec/swt_shoes/color_spec.rb
  41. +64 −0 spec/swt_shoes/element_methods_spec.rb
  42. +32 −0 spec/swt_shoes/line_spec.rb
  43. +13 −0 spec/swt_shoes/oval_spec.rb
  44. +74 −0 spec/swt_shoes/shape_spec.rb
  45. +43 −0 spec/swt_shoes/shared_examples/style_spec.rb
  46. +3 −2 spec/swt_shoes/spec_helper.rb
  47. +24 −0 spec/white_shoes/shape_spec.rb
  48. +8 −0 spec/white_shoes/shared_examples/shared_shoes_shape_spec.rb
View
@@ -0,0 +1 @@
+jruby-1.6.5.1
View
@@ -28,6 +28,7 @@ end
def jruby_rspec(files, args)
swt = args.delete(:swt)
rspec_opts = spec_opts_from_args(args)
+ rspec_opts << " #{ENV['RSPEC_OPTS']}"
jruby_run(rspec(files, rspec_opts), swt)
View
@@ -9,6 +9,9 @@
module Shoes
attr_accessor :logger
+ def self.logger
+ @logger
+ end
@logger = Log4jruby::Logger.get('test', :tracing => true, :level => :debug)
@logger.debug("Shoooes!")
@@ -28,4 +31,8 @@ module Shoes
#require 'shoes/edit_box'
#require 'shoes/check'
#require 'shoes/image'
-require 'shoes/sound'
+require 'shoes/line'
+require 'shoes/oval'
+require 'shoes/sound'
+require 'shoes/shape'
+require 'shoes/configuration'
View
@@ -1,4 +1,5 @@
require 'shoes/element_methods'
+require 'shoes/color'
require 'facets/hash'
def window(*a, &b)
@@ -15,6 +16,7 @@ def self.app(opts={}, &blk)
class App
DEFAULTS = { 'width' => 800, 'height' => 600, 'title' => "Shoooes!"}
+ DEFAULT_STYLE = { :stroke => Shoes::COLORS[:black], :strokewidth => 1 }
include Shoes::ElementMethods
@@ -32,6 +34,8 @@ def initialize(opts={}, &blk)
self.opts = opts
+ @style = DEFAULT_STYLE
+
gui_init
instance_eval &blk if blk
@@ -134,4 +138,4 @@ def initialize(opts={}, &blk)
# @current_panel = parent
#end
end
-end
+end
View
@@ -0,0 +1,206 @@
+module Shoes
+ class Color
+ include Comparable
+ OPAQUE = 255
+ TRANSPARENT = 0
+
+ def initialize(red, green, blue, alpha = OPAQUE)
+ to_rgb = lambda { |v| v.is_a?(Fixnum) ? v.modulo(256) : ((255 * v).abs + 1).truncate.modulo(256) }
+ @red = to_rgb.call(red)
+ @green = to_rgb.call(green)
+ @blue = to_rgb.call(blue)
+ @alpha = to_rgb.call(alpha)
+ end
+
+ attr_reader :red, :green, :blue, :alpha
+
+ # In Red Shoes, returns a new color object with these rgb values,
+ # like a shortcut for Shoes::Color.new
+ def rgb(red, green, blue, alpha = OPAQUE)
+ Shoes::Color.new(red, green, blue, alpha)
+ end
+
+ def light?
+ @red + @green + @blue > 510 # 0xaa * 3
+ end
+
+ def dark?
+ @red + @green + @blue < 255 # 0x55 * 3
+ end
+
+ def transparent?
+ @alpha == TRANSPARENT
+ end
+
+ def opaque?
+ @alpha == OPAQUE
+ end
+
+ def white?
+ @red == 255 && @green == 255 && @blue == 255
+ end
+
+ def black?
+ @red == 0 && @green == 0 && @blue == 0
+ end
+
+ def <=>(other)
+ return 0 if @red == other.red && @green == other.green && @blue == other.blue && @alpha == other.alpha
+ return 1 if @red + @green + @blue > other.red + other.green + other.blue
+ return -1 if @red + @green + @blue < other.red + other.green + other.blue
+ end
+ end
+
+ # Create all of the built-in Shoes colors
+ COLORS = {}
+
+ module ElementMethods
+ colors = [
+ [:aliceblue, 240, 248, 255],
+ [:antiquewhite, 250, 235, 215],
+ [:aqua, 0, 255, 255],
+ [:aquamarine, 127, 255, 212],
+ [:azure, 240, 255, 255],
+ [:beige, 245, 245, 220],
+ [:bisque, 255, 228, 196],
+ [:black, 0, 0, 0],
+ [:blanchedalmond, 255, 235, 205],
+ [:blue, 0, 0, 255],
+ [:blueviolet, 138, 43, 226],
+ [:brown, 165, 42, 42],
+ [:burlywood, 222, 184, 135],
+ [:cadetblue, 95, 158, 160],
+ [:chartreuse, 127, 255, 0],
+ [:chocolate, 210, 105, 30],
+ [:coral, 255, 127, 80],
+ [:cornflowerblue, 100, 149, 237],
+ [:cornsilk, 255, 248, 220],
+ [:crimson, 220, 20, 60],
+ [:cyan, 0, 255, 255],
+ [:darkblue, 0, 0, 139],
+ [:darkcyan, 0, 139, 139],
+ [:darkgoldenrod, 184, 134, 11],
+ [:darkgray, 169, 169, 169],
+ [:darkgreen, 0, 100, 0],
+ [:darkkhaki, 189, 183, 107],
+ [:darkmagenta, 139, 0, 139],
+ [:darkolivegreen, 85, 107, 47],
+ [:darkorange, 255, 140, 0],
+ [:darkorchid, 153, 50, 204],
+ [:darkred, 139, 0, 0],
+ [:darksalmon, 233, 150, 122],
+ [:darkseagreen, 143, 188, 143],
+ [:darkslateblue, 72, 61, 139],
+ [:darkslategray, 47, 79, 79],
+ [:darkturquoise, 0, 206, 209],
+ [:darkviolet, 148, 0, 211],
+ [:deeppink, 255, 20, 147],
+ [:deepskyblue, 0, 191, 255],
+ [:dimgray, 105, 105, 105],
+ [:dodgerblue, 30, 144, 255],
+ [:firebrick, 178, 34, 34],
+ [:floralwhite, 255, 250, 240],
+ [:forestgreen, 34, 139, 34],
+ [:fuchsia, 255, 0, 255],
+ [:gainsboro, 220, 220, 220],
+ [:ghostwhite, 248, 248, 255],
+ [:gold, 255, 215, 0],
+ [:goldenrod, 218, 165, 32],
+ [:gray, 128, 128, 128],
+ [:green, 0, 128, 0],
+ [:greenyellow, 173, 255, 47],
+ [:honeydew, 240, 255, 240],
+ [:hotpink, 255, 105, 180],
+ [:indianred, 205, 92, 92],
+ [:indigo, 75, 0, 130],
+ [:ivory, 255, 255, 240],
+ [:khaki, 240, 230, 140],
+ [:lavender, 230, 230, 250],
+ [:lavenderblush, 255, 240, 245],
+ [:lawngreen, 124, 252, 0],
+ [:lemonchiffon, 255, 250, 205],
+ [:lightblue, 173, 216, 230],
+ [:lightcoral, 240, 128, 128],
+ [:lightcyan, 224, 255, 255],
+ [:lightgoldenrodyellow, 250, 250, 210],
+ [:lightgreen, 144, 238, 144],
+ [:lightgrey, 211, 211, 211],
+ [:lightpink, 255, 182, 193],
+ [:lightsalmon, 255, 160, 122],
+ [:lightseagreen, 32, 178, 170],
+ [:lightskyblue, 135, 206, 250],
+ [:lightslategray, 119, 136, 153],
+ [:lightsteelblue, 176, 196, 222],
+ [:lightyellow, 255, 255, 224],
+ [:lime, 0, 255, 0],
+ [:limegreen, 50, 205, 50],
+ [:linen, 250, 240, 230],
+ [:magenta, 255, 0, 255],
+ [:maroon, 128, 0, 0],
+ [:mediumaquamarine, 102, 205, 170],
+ [:mediumblue, 0, 0, 205],
+ [:mediumorchid, 186, 85, 211],
+ [:mediumpurple, 147, 112, 219],
+ [:mediumseagreen, 60, 179, 113],
+ [:mediumslateblue, 123, 104, 238],
+ [:mediumspringgreen, 0, 250, 154],
+ [:mediumturquoise, 72, 209, 204],
+ [:mediumvioletred, 199, 21, 133],
+ [:midnightblue, 25, 25, 112],
+ [:mintcream, 245, 255, 250],
+ [:mistyrose, 255, 228, 225],
+ [:moccasin, 255, 228, 181],
+ [:navajowhite, 255, 222, 173],
+ [:navy, 0, 0, 128],
+ [:oldlace, 253, 245, 230],
+ [:olive, 128, 128, 0],
+ [:olivedrab, 107, 142, 35],
+ [:orange, 255, 165, 0],
+ [:orangered, 255, 69, 0],
+ [:orchid, 218, 112, 214],
+ [:palegoldenrod, 238, 232, 170],
+ [:palegreen, 152, 251, 152],
+ [:paleturquoise, 175, 238, 238],
+ [:palevioletred, 219, 112, 147],
+ [:papayawhip, 255, 239, 213],
+ [:peachpuff, 255, 218, 185],
+ [:peru, 205, 133, 63],
+ [:pink, 255, 192, 203],
+ [:plum, 221, 160, 221],
+ [:powderblue, 176, 224, 230],
+ [:purple, 128, 0, 128],
+ [:red, 255, 0, 0],
+ [:rosybrown, 188, 143, 143],
+ [:royalblue, 65, 105, 225],
+ [:saddlebrown, 139, 69, 19],
+ [:salmon, 250, 128, 114],
+ [:sandybrown, 244, 164, 96],
+ [:seagreen, 46, 139, 87],
+ [:seashell, 255, 245, 238],
+ [:sienna, 160, 82, 45],
+ [:silver, 192, 192, 192],
+ [:skyblue, 135, 206, 235],
+ [:slateblue, 106, 90, 205],
+ [:slategray, 112, 128, 144],
+ [:snow, 255, 250, 250],
+ [:springgreen, 0, 255, 127],
+ [:steelblue, 70, 130, 180],
+ [:tan, 210, 180, 140],
+ [:teal, 0, 128, 128],
+ [:thistle, 216, 191, 216],
+ [:tomato, 255, 99, 71],
+ [:turquoise, 64, 224, 208],
+ [:violet, 238, 130, 238],
+ [:wheat, 245, 222, 179],
+ [:white, 255, 255, 255],
+ [:whitesmoke, 245, 245, 245],
+ [:yellow, 255, 255, 0],
+ [:yellowgreen, 154, 205, 50],
+ ]
+
+ colors.each do |c, r, g, b|
+ Shoes::COLORS[c] = Shoes::Color.new(r, g, b)
+ define_method(c) { Shoes::COLORS.fetch(c) }
+ end
+ end
+end
View
@@ -0,0 +1,26 @@
+module Shoes
+ module Common
+ module Paint
+ DEFAULTS = {
+ :stroke => Shoes::COLORS[:black],
+ :fill => Shoes::COLORS[:black]
+ }
+
+ def stroke
+ @style[:stroke]
+ end
+
+ def stroke=(color)
+ @style[:stroke] = color
+ end
+
+ def fill
+ @style[:fill]
+ end
+
+ def fill=(color)
+ @style[:fill] = color
+ end
+ end
+ end
+end
View
@@ -0,0 +1,14 @@
+module Shoes
+ module Common
+ # Style methods.
+ #
+ # Requirements
+ #
+ # @style
+ module Style
+ def style(new_styles = {})
+ @style.merge! new_styles
+ end
+ end
+ end
+end
Oops, something went wrong.

0 comments on commit d35347a

Please sign in to comment.