rubydraw 0.1.5 → 0.1.7.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/examples/image_ex.rb +1 -2
- data/examples/sound_ex.rb +1 -1
- data/examples/window_ex.rb +1 -1
- data/lib/ext/string.rb +14 -0
- data/lib/rubydraw.rb +2 -0
- data/lib/rubydraw/color.rb +50 -0
- data/lib/rubydraw/window.rb +13 -3
- metadata +7 -4
data/examples/image_ex.rb
CHANGED
data/examples/sound_ex.rb
CHANGED
data/examples/window_ex.rb
CHANGED
data/lib/ext/string.rb
ADDED
@@ -0,0 +1,14 @@
|
|
1
|
+
class String
|
2
|
+
# Sets the size for this string, but does not modify the string.
|
3
|
+
# Appends 0 to the beginning if original is one in legnth. (Used
|
4
|
+
# in Rubydraw::Color#to_i)
|
5
|
+
def color_string
|
6
|
+
new_str = self[0..1]
|
7
|
+
if new_str.size == 1
|
8
|
+
result = "0" + new_str
|
9
|
+
else
|
10
|
+
result = new_str
|
11
|
+
end
|
12
|
+
result
|
13
|
+
end
|
14
|
+
end
|
data/lib/rubydraw.rb
CHANGED
@@ -10,8 +10,10 @@ files = %w[
|
|
10
10
|
event_queue
|
11
11
|
keys
|
12
12
|
point
|
13
|
+
color
|
13
14
|
sdl_error]
|
14
15
|
files.each {|f| require("rubydraw/" + f)}
|
16
|
+
require 'ext/string'
|
15
17
|
|
16
18
|
# Rubydraw is a high level game/graphics library, like Gosu or Rubygame, and is written completely
|
17
19
|
# in Ruby. Its only dependency is ruby-sdl-ffi, which it uses to access SDL functions. Also, thanks,
|
@@ -0,0 +1,50 @@
|
|
1
|
+
module Rubydraw
|
2
|
+
# Instances of Color are created with four arguments: Red, green,
|
3
|
+
# blue, and alpha. The last is 0 by default, and all should have
|
4
|
+
# values ranging from 0 to 255. Use this to specify colors instead
|
5
|
+
# hex numbers. Each color instance can return its numerical value,
|
6
|
+
# but only Rubydraw itself should need it.
|
7
|
+
class Color
|
8
|
+
#Red = 0x00_00_ff_00
|
9
|
+
#Green = 0x00_ff_00_00
|
10
|
+
#Blue = 0xff_00_00_00
|
11
|
+
#Black = 0x00_00_00_00
|
12
|
+
#White = 0xff_ff_ff_00
|
13
|
+
attr_reader(:red, :green, :blue, :alpha)
|
14
|
+
|
15
|
+
# Create a new color with the given red, green, blue, and alpha
|
16
|
+
# values. Alpha is 0 by default.
|
17
|
+
#
|
18
|
+
# TODO: Add other color specs, like HSV or maybe (but probably not) CYMK
|
19
|
+
def initialize(red, green, blue, alpha = 0)
|
20
|
+
@red, @green, @blue, @alpha = red, green, blue, alpha
|
21
|
+
end
|
22
|
+
|
23
|
+
# Convert this color to a numerical value. It only makes sense in
|
24
|
+
# hexidecimal or binary format; e.g. red would be equal to
|
25
|
+
# +0x0000ff00+.
|
26
|
+
def to_i
|
27
|
+
# Get the hex string for each value.
|
28
|
+
hex_alpha = (@alpha.to_s(16)).color_string
|
29
|
+
hex_red = (@red.to_s(16)).color_string
|
30
|
+
hex_green = (@green.to_s(16)).color_string
|
31
|
+
hex_blue = (@blue.to_s(16)).color_string
|
32
|
+
# Construct a hex string using the previously determined hex colors.
|
33
|
+
# *Note:* it appears that SDL's (or maybe ruby-sdl-ffi's) color
|
34
|
+
# is backwards. The order appears to be: +BBGGRRAA+
|
35
|
+
color_str = hex_blue + hex_green + hex_red + hex_alpha
|
36
|
+
color_str.to_i(16)
|
37
|
+
end
|
38
|
+
|
39
|
+
White = new(255, 255, 255)
|
40
|
+
Black = new(0, 0, 0)
|
41
|
+
# The primary colors
|
42
|
+
Red = new(255, 0, 0)
|
43
|
+
Green = new(0, 255, 0)
|
44
|
+
Blue = new(0, 0, 255)
|
45
|
+
# Secondary colors
|
46
|
+
Yellow = new(255, 255, 0)
|
47
|
+
Magenta = new(255, 0, 255)
|
48
|
+
Cyan = new(0, 255, 255)
|
49
|
+
end
|
50
|
+
end
|
data/lib/rubydraw/window.rb
CHANGED
@@ -6,7 +6,7 @@ module Rubydraw
|
|
6
6
|
# when Rubydraw::Window#close is called.
|
7
7
|
class Window
|
8
8
|
# Create a new window.
|
9
|
-
def initialize(width, height)
|
9
|
+
def initialize(width, height, bkg_color=Color::Black)
|
10
10
|
unless height.is_a?(Numeric) and width.is_a?(Numeric)
|
11
11
|
# Raise an error
|
12
12
|
raise SDLError "Window width and height have to be a number."
|
@@ -19,10 +19,12 @@ module Rubydraw
|
|
19
19
|
@event_queue = EventQueue.new
|
20
20
|
|
21
21
|
@registered_actions = {}
|
22
|
+
|
23
|
+
@bkg_color = bkg_color
|
22
24
|
end
|
23
25
|
|
24
26
|
# Call this method to start updating and drawing.
|
25
|
-
def
|
27
|
+
def show
|
26
28
|
@open = true
|
27
29
|
# Behold, the main loop. Drumroll!
|
28
30
|
@screen = SDL::SetVideoMode(@width, @height, 0, 0)
|
@@ -44,7 +46,13 @@ module Rubydraw
|
|
44
46
|
# Clear the window's contents by filling it with black. A bit of a cheat; I don't
|
45
47
|
# know if there is a better way to do this.
|
46
48
|
def clear
|
47
|
-
|
49
|
+
fill_with(@bkg_color)
|
50
|
+
end
|
51
|
+
|
52
|
+
# Fill the entire window with a Rubydraw::Color. Do this by feeding SDL the numeric
|
53
|
+
# verion of the color; see Rubydraw::Color#to_i
|
54
|
+
def fill_with(color)
|
55
|
+
SDL::FillRect(@screen, nil, color.to_i)
|
48
56
|
end
|
49
57
|
|
50
58
|
# Call this method to tell SDL to quit drawing. The loop (started in
|
@@ -55,6 +63,8 @@ module Rubydraw
|
|
55
63
|
SDL.QuitSubSystem(SDL::INIT_VIDEO)
|
56
64
|
end
|
57
65
|
|
66
|
+
alias quit close
|
67
|
+
|
58
68
|
# Collect and handle new events by executing blocks in +@regestered_events+. See
|
59
69
|
# Rubydraw::Window#register_action on how to use it.
|
60
70
|
def handle_events
|
metadata
CHANGED
@@ -1,13 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rubydraw
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 89
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 1
|
9
|
-
-
|
10
|
-
|
9
|
+
- 7
|
10
|
+
- 1
|
11
|
+
version: 0.1.7.1
|
11
12
|
platform: ruby
|
12
13
|
authors:
|
13
14
|
- J. Wostenberg
|
@@ -15,7 +16,7 @@ autorequire:
|
|
15
16
|
bindir: bin
|
16
17
|
cert_chain: []
|
17
18
|
|
18
|
-
date: 2011-11-
|
19
|
+
date: 2011-11-18 00:00:00 -07:00
|
19
20
|
default_executable:
|
20
21
|
dependencies:
|
21
22
|
- !ruby/object:Gem::Dependency
|
@@ -49,6 +50,7 @@ extra_rdoc_files: []
|
|
49
50
|
files:
|
50
51
|
- README
|
51
52
|
- lib/rubydraw.rb
|
53
|
+
- lib/ext/string.rb
|
52
54
|
- lib/rubydraw/window.rb
|
53
55
|
- lib/rubydraw/image.rb
|
54
56
|
- lib/rubydraw/sound.rb
|
@@ -57,6 +59,7 @@ files:
|
|
57
59
|
- lib/rubydraw/event_queue.rb
|
58
60
|
- lib/rubydraw/events.rb
|
59
61
|
- lib/rubydraw/point.rb
|
62
|
+
- lib/rubydraw/color.rb
|
60
63
|
- examples/window_ex.rb
|
61
64
|
- examples/image_ex.rb
|
62
65
|
- examples/sound_ex.rb
|