rubydraw 0.1.0 → 0.1.1
Sign up to get free protection for your applications and to get access to all the features.
- data/README +4 -3
- data/examples/image_ex.rb +3 -3
- data/examples/media/bug.png +0 -0
- data/examples/window_ex.rb +0 -0
- data/lib/rubydraw/event_queue.rb +0 -0
- data/lib/rubydraw/events.rb +0 -0
- data/lib/rubydraw/image.rb +6 -8
- data/lib/rubydraw/keys.rb +0 -0
- data/lib/rubydraw/point.rb +0 -0
- data/lib/rubydraw/sdl_error.rb +0 -0
- data/lib/rubydraw/window.rb +8 -7
- metadata +3 -3
data/README
CHANGED
@@ -9,12 +9,13 @@ for the inconvenience!
|
|
9
9
|
HOW TO INSTALL
|
10
10
|
To install this library which isn't on Rubygems.org YET, navigate to this directory in the command
|
11
11
|
line tool and give "rubydraw/build_and_install" permissions to run. Then simply run it. Hooray, it
|
12
|
-
should be working now! Test it in irb with "require 'rubydraw'".
|
13
|
-
rubygems when it is actually usable (if it ever is).
|
12
|
+
should be working now! Test it in irb with "require 'rubydraw'".
|
14
13
|
|
15
14
|
HOW TO USE
|
16
15
|
There isn't a proper guide yet, so just read the comments in the other files. Or you can fire up the
|
17
16
|
gem server and read the RDoc.
|
18
17
|
|
19
18
|
Thanks for checking this little project. I hope it doesn't give you headaches.
|
20
|
-
Have fun!
|
19
|
+
Have fun!
|
20
|
+
|
21
|
+
NEW: Now you can install it from the RubyGems website! Hooray! :D
|
data/examples/image_ex.rb
CHANGED
@@ -5,10 +5,10 @@ class MyWindow < Rubydraw::Window
|
|
5
5
|
# Create a new window with an bug image inside it
|
6
6
|
def initialize(width, height)
|
7
7
|
super(width, height)
|
8
|
-
@image = Rubydraw::Image.new(
|
8
|
+
@image = Rubydraw::Image.new("media/bug.png")
|
9
9
|
@max = 100
|
10
10
|
|
11
|
-
register_action(Rubydraw::Events::MouseMove) {|event|
|
11
|
+
register_action(Rubydraw::Events::MouseMove) {|event| @mouse_position = event.position}
|
12
12
|
register_action(Rubydraw::Events::QuitRequest) {close}
|
13
13
|
end
|
14
14
|
|
@@ -19,7 +19,7 @@ class MyWindow < Rubydraw::Window
|
|
19
19
|
|
20
20
|
# Draw the image inside this window.
|
21
21
|
def tick
|
22
|
-
@image.draw(
|
22
|
+
@image.draw(self, @mouse_position)
|
23
23
|
end
|
24
24
|
end
|
25
25
|
|
data/examples/media/bug.png
CHANGED
File without changes
|
data/examples/window_ex.rb
CHANGED
File without changes
|
data/lib/rubydraw/event_queue.rb
CHANGED
File without changes
|
data/lib/rubydraw/events.rb
CHANGED
File without changes
|
data/lib/rubydraw/image.rb
CHANGED
@@ -7,11 +7,7 @@ module Rubydraw
|
|
7
7
|
class Image
|
8
8
|
# Create a new image in the given window and load the image from
|
9
9
|
# +path.+
|
10
|
-
def initialize(
|
11
|
-
@window = window
|
12
|
-
unless window.is_a?(Rubydraw::Window)
|
13
|
-
raise Rubydraw::SDLError "Window cannot be nil"
|
14
|
-
end
|
10
|
+
def initialize(path)
|
15
11
|
# In case program is being run from a different directory,
|
16
12
|
# provide the _full_ path. Nothing relative here.
|
17
13
|
full_path = File.expand_path path
|
@@ -21,6 +17,8 @@ module Rubydraw
|
|
21
17
|
# exist.
|
22
18
|
raise Rubydraw::SDLError "Failed to load image from: '#{full_path}'"
|
23
19
|
end
|
20
|
+
puts @sdl_image.class
|
21
|
+
puts @sdl_image.pointer.class
|
24
22
|
end
|
25
23
|
|
26
24
|
# Blit (copy) into the window at +position+ (see point.rb).
|
@@ -28,10 +26,10 @@ module Rubydraw
|
|
28
26
|
#
|
29
27
|
# Notice that you don't blit surfaces to other surfaces when using
|
30
28
|
# Rubygame, but instead you draw things.
|
31
|
-
def draw(position)
|
29
|
+
def draw(window, position)
|
32
30
|
source_rect = SDL::Rect.new([0, 0, width, height])
|
33
|
-
blit_rect = SDL::Rect.new([position.x, position.y,
|
34
|
-
SDL::BlitSurface(@sdl_image, source_rect,
|
31
|
+
blit_rect = SDL::Rect.new([position.x, position.y, window.width, window.height])
|
32
|
+
SDL::BlitSurface(@sdl_image, source_rect, window.sdl_surface, blit_rect)
|
35
33
|
end
|
36
34
|
|
37
35
|
# Returns the image width
|
data/lib/rubydraw/keys.rb
CHANGED
File without changes
|
data/lib/rubydraw/point.rb
CHANGED
File without changes
|
data/lib/rubydraw/sdl_error.rb
CHANGED
File without changes
|
data/lib/rubydraw/window.rb
CHANGED
@@ -29,6 +29,8 @@ module Rubydraw
|
|
29
29
|
loop do
|
30
30
|
handle_events
|
31
31
|
if @open
|
32
|
+
# Clear the contents of the window
|
33
|
+
clear
|
32
34
|
tick
|
33
35
|
# Update the screen to show any changes.
|
34
36
|
SDL::UpdateRect(@screen, 0, 0, 0, 0)
|
@@ -36,11 +38,15 @@ module Rubydraw
|
|
36
38
|
# This is where the loop is broken after Rubydraw::Window#close is called.
|
37
39
|
break
|
38
40
|
end
|
39
|
-
# Pause for a bit, so it's not such a tight loop.
|
40
|
-
sleep 0.1
|
41
41
|
end
|
42
42
|
end
|
43
43
|
|
44
|
+
# Clear the window's contents by filling it with black. A bit of a cheat; I don't
|
45
|
+
# know if there is a better way to do this.
|
46
|
+
def clear
|
47
|
+
SDL::FillRect(@screen, nil, 0)
|
48
|
+
end
|
49
|
+
|
44
50
|
# Call this method to tell SDL to quit drawing. The loop (started in
|
45
51
|
# Rubydraw::Window#open) would continue if +close+ only stopped drawing, so
|
46
52
|
# break the loop too.
|
@@ -59,11 +65,6 @@ module Rubydraw
|
|
59
65
|
block.call(event) unless block.nil?}
|
60
66
|
end
|
61
67
|
|
62
|
-
# Redefine this in a subclass to use custom event handling. Does nothing by
|
63
|
-
# default.
|
64
|
-
def handle_event(event)
|
65
|
-
end
|
66
|
-
|
67
68
|
# This causes the main loop to exit. Use Rubydraw::Window#close to close the
|
68
69
|
# window, not this.
|
69
70
|
def break_main_loop
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rubydraw
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 25
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 1
|
9
|
-
-
|
10
|
-
version: 0.1.
|
9
|
+
- 1
|
10
|
+
version: 0.1.1
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- J. Wostenberg
|