Skip to content

Instantly share code, notes, and snippets.

@ashbb
Created January 16, 2011 13:39
Show Gist options
  • Save ashbb/781789 to your computer and use it in GitHub Desktop.
Save ashbb/781789 to your computer and use it in GitHub Desktop.
#
# Shoes Clock by Thomas Bell
# posted to the Shoes mailing list on 04 Dec 2007
# Original code for Red Shoes is: https://github.com/shoes/shoes/blob/master/samples/good-clock.rb
# The following is a little bit modified for Green Shoes
#
require '../lib/green_shoes'
Shoes.app :height => 260, :width => 250 do
@radius, @centerx, @centery = 90, 126, 140
animate(1) do
@time = Time.now
clear do
draw_background
stack do
background black
para fg(@time.strftime("%a"), tr_color("#666")),
fg(@time.strftime(" %b %d, %Y "), tr_color("#ccc")),
strong(fg(@time.strftime("%I:%M"), white)),
fg(@time.strftime(".%S"), tr_color("#666")),
:margin => 4, :align => 'center'
end
clock_hand @time.sec + (@time.usec * 0.000001),2,30,red
clock_hand @time.min + (@time.sec / 60.0),5
clock_hand @time.hour + (@time.min / 60.0),8,6
end
end
def draw_background
background rgb(230, 240, 200)
fill white
stroke black
strokewidth 4
oval @centerx - 102, @centery - 102, 204, 204
fill black
nostroke
oval @centerx - 5, @centery - 5, 10, 10
stroke black
strokewidth 1
line(@centerx, @centery - 102, @centerx, @centery - 95)
line(@centerx - 102, @centery, @centerx - 95, @centery)
line(@centerx + 95, @centery, @centerx + 102, @centery)
line(@centerx, @centery + 95, @centerx, @centery + 102)
end
def clock_hand(time, sw, unit=30, color=black)
radius_local = unit == 30 ? @radius : @radius - 15
_x = radius_local * Math.sin( time * Math::PI / unit )
_y = radius_local * Math.cos( time * Math::PI / unit )
stroke color
strokewidth sw
line(@centerx, @centery, @centerx + _x, @centery - _y)
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment