rubydraw 0.2.2.5 → 0.2.3
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/rubydraw/image.rb +53 -3
- data/lib/rubydraw/text.rb +1 -0
- data/lib/rubydraw/window.rb +9 -1
- metadata +4 -5
data/lib/rubydraw/image.rb
CHANGED
@@ -5,9 +5,26 @@ module Rubydraw
|
|
5
5
|
# read the documentation for Image#draw), call it's #draw method
|
6
6
|
# and pass it the +x+ and +y+ coordinates.
|
7
7
|
class Image
|
8
|
-
# Create a new image
|
9
|
-
#
|
10
|
-
def initialize(
|
8
|
+
# Create a new image and load the file from a path. Or, load it using
|
9
|
+
# an SDL surface.
|
10
|
+
def initialize(arg)
|
11
|
+
if arg.is_a?(String)
|
12
|
+
# This must mean to load from a path.
|
13
|
+
load_from_path(arg)
|
14
|
+
elsif arg.is_a?(SDL::Surface)
|
15
|
+
load_from_surface(arg)
|
16
|
+
else
|
17
|
+
raise TypeError, "Failed to load image: Expected String or SDL::Surface but got #{arg}"
|
18
|
+
end
|
19
|
+
self
|
20
|
+
end
|
21
|
+
|
22
|
+
def load_from_path(path) #:nodoc:
|
23
|
+
# Check if this image has already been initialize. If it has, raise
|
24
|
+
# an error.
|
25
|
+
unless @sdl_image.nil?
|
26
|
+
raise SDLError, "Images may only be loaded once"
|
27
|
+
end
|
11
28
|
# In case program is being run from a different directory,
|
12
29
|
# provide the _full_ path. Nothing relative here.
|
13
30
|
full_path = File.expand_path path
|
@@ -19,6 +36,15 @@ module Rubydraw
|
|
19
36
|
end
|
20
37
|
end
|
21
38
|
|
39
|
+
def load_from_surface(surface) #:nodoc:
|
40
|
+
# Check if this image has already been initialized. If it has, raise
|
41
|
+
# an error.
|
42
|
+
unless @sdl_image.nil?
|
43
|
+
raise SDLError, "Images may only be loaded once"
|
44
|
+
end
|
45
|
+
@sdl_image = surface
|
46
|
+
end
|
47
|
+
|
22
48
|
# Blit (copy) into the window at +position+ (see Rubydraw::Point).
|
23
49
|
# No graphical effects are applied.
|
24
50
|
#
|
@@ -27,10 +53,34 @@ module Rubydraw
|
|
27
53
|
def draw(window, position)
|
28
54
|
source_rect = Rectangle[Point[0, 0], Point[width, height]]
|
29
55
|
blit_rect = Rectangle[position, Point[window.width, window.height]]
|
56
|
+
#source_rect = Rectangle[Point[0, 0], Point[window.width, window.height]]
|
57
|
+
#blit_rect = Rectangle[position, Point[window.width, window.height]]
|
30
58
|
SDL::BlitSurface(@sdl_image, source_rect.to_sdl, window.sdl_surface, blit_rect.to_sdl)
|
31
59
|
self
|
32
60
|
end
|
33
61
|
|
62
|
+
# Rotates and/or expands the image. Note that this modifies the image
|
63
|
+
# itself.
|
64
|
+
def rotozoom!(angle, zoom, smooth=false)
|
65
|
+
smooth =
|
66
|
+
if smooth
|
67
|
+
1
|
68
|
+
else
|
69
|
+
0
|
70
|
+
end
|
71
|
+
|
72
|
+
@sdl_image = SDL::Gfx.rotozoomSurface(@sdl_image, angle, zoom, smooth)
|
73
|
+
raise SDLError, "Filed to perform rotozoom: #{SDL.GetError}" if @sdl_image.pointer.null?
|
74
|
+
return self
|
75
|
+
end
|
76
|
+
|
77
|
+
# Returns a rotated and/or expanded image, without modifying the
|
78
|
+
# reciever.
|
79
|
+
def rotozoom(angle, zoom, smooth=false)
|
80
|
+
new_image = self.class.new(@sdl_image)
|
81
|
+
new_image.rotozoom!(angle, zoom, smooth)
|
82
|
+
end
|
83
|
+
|
34
84
|
# Returns the image width
|
35
85
|
def width
|
36
86
|
@sdl_image.w
|
data/lib/rubydraw/text.rb
CHANGED
@@ -4,6 +4,7 @@ module Rubydraw
|
|
4
4
|
# screen.
|
5
5
|
class Text
|
6
6
|
attr_accessor(:contents, :font, :color, :size)
|
7
|
+
|
7
8
|
# Create a new drawable Text object with the given font and contents.
|
8
9
|
def initialize(contents, color, font_name="Times New Roman", size = 25)
|
9
10
|
@font, @contents, @size, @color = font_name, contents, size, color
|
data/lib/rubydraw/window.rb
CHANGED
@@ -5,7 +5,7 @@ module Rubydraw
|
|
5
5
|
# (which starts when Rubydraw::Window#open is called) is *not* forked! It will break
|
6
6
|
# when Rubydraw::Window#close is called.
|
7
7
|
class Window
|
8
|
-
attr_reader(:
|
8
|
+
attr_reader(:fullscreen, :bkg_color)
|
9
9
|
|
10
10
|
# Create a new window.
|
11
11
|
def initialize(width, height, fullscreen=false, bkg_color=Color::Black)
|
@@ -25,6 +25,14 @@ module Rubydraw
|
|
25
25
|
@registered_actions = {}
|
26
26
|
end
|
27
27
|
|
28
|
+
def width
|
29
|
+
@screen.w
|
30
|
+
end
|
31
|
+
|
32
|
+
def height
|
33
|
+
@screen.h
|
34
|
+
end
|
35
|
+
|
28
36
|
# Call this method to start updating and drawing.
|
29
37
|
def show
|
30
38
|
@open = true
|
metadata
CHANGED
@@ -1,14 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rubydraw
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 17
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 2
|
9
|
-
-
|
10
|
-
|
11
|
-
version: 0.2.2.5
|
9
|
+
- 3
|
10
|
+
version: 0.2.3
|
12
11
|
platform: ruby
|
13
12
|
authors:
|
14
13
|
- J. Wostenberg
|
@@ -16,7 +15,7 @@ autorequire:
|
|
16
15
|
bindir: bin
|
17
16
|
cert_chain: []
|
18
17
|
|
19
|
-
date: 2011-11-
|
18
|
+
date: 2011-11-25 00:00:00 -07:00
|
20
19
|
default_executable:
|
21
20
|
dependencies:
|
22
21
|
- !ruby/object:Gem::Dependency
|