tea 0.6.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.
Files changed (56) hide show
  1. data/COPYING +674 -0
  2. data/COPYING.LESSER +165 -0
  3. data/README.rdoc +93 -0
  4. data/doc/example/bitmap_draw.rb +21 -0
  5. data/doc/example/bitmap_load.rb +14 -0
  6. data/doc/example/bitmap_new.rb +19 -0
  7. data/doc/example/circle.rb +24 -0
  8. data/doc/example/circle_alpha.rb +45 -0
  9. data/doc/example/circle_alpha_bitmap.rb +51 -0
  10. data/doc/example/circle_bitmap.rb +18 -0
  11. data/doc/example/clip.rb +46 -0
  12. data/doc/example/event_app.rb +45 -0
  13. data/doc/example/event_keyboard.rb +43 -0
  14. data/doc/example/event_mouse.rb +85 -0
  15. data/doc/example/font_hello.rb +22 -0
  16. data/doc/example/font_word_wrap.rb +44 -0
  17. data/doc/example/grab.rb +28 -0
  18. data/doc/example/init.rb +10 -0
  19. data/doc/example/lines.rb +49 -0
  20. data/doc/example/lines_aa.rb +44 -0
  21. data/doc/example/lines_alpha.rb +33 -0
  22. data/doc/example/point.rb +26 -0
  23. data/doc/example/rect.rb +15 -0
  24. data/doc/example/rect_alpha.rb +75 -0
  25. data/doc/example/screen_set_mode.rb +18 -0
  26. data/doc/example/screen_update.rb +14 -0
  27. data/doc/example/sfont_hello.rb +22 -0
  28. data/doc/example/smile.png +0 -0
  29. data/doc/example/smile_bounce.rb +44 -0
  30. data/doc/example/smile_move.rb +58 -0
  31. data/doc/example/smile_move_2.rb +78 -0
  32. data/doc/example/sound.rb +101 -0
  33. data/doc/example/state_app.rb +33 -0
  34. data/doc/example/state_keyboard.rb +23 -0
  35. data/doc/example/state_mouse.rb +60 -0
  36. data/doc/key_constants.textile +129 -0
  37. data/doc/key_modifiers.textile +19 -0
  38. data/doc/reference.textile +421 -0
  39. data/lib/tea.rb +34 -0
  40. data/lib/tea/c_bitmap.rb +122 -0
  41. data/lib/tea/c_error.rb +11 -0
  42. data/lib/tea/c_font.rb +302 -0
  43. data/lib/tea/c_sound.rb +144 -0
  44. data/lib/tea/m_color.rb +50 -0
  45. data/lib/tea/m_event.rb +65 -0
  46. data/lib/tea/m_event_app.rb +96 -0
  47. data/lib/tea/m_event_dispatch.rb +54 -0
  48. data/lib/tea/m_event_keyboard.rb +311 -0
  49. data/lib/tea/m_event_mouse.rb +189 -0
  50. data/lib/tea/mix_blitting.rb +31 -0
  51. data/lib/tea/mix_clipping.rb +71 -0
  52. data/lib/tea/mix_grabbing.rb +86 -0
  53. data/lib/tea/mix_image_saving.rb +70 -0
  54. data/lib/tea/mix_primitive.rb +613 -0
  55. data/lib/tea/o_screen.rb +98 -0
  56. metadata +137 -0
@@ -0,0 +1,98 @@
1
+ # This file contains the Screen class.
2
+
3
+ require 'weakref'
4
+
5
+ require 'sdl'
6
+
7
+ require 'tea/c_bitmap'
8
+ require 'tea/mix_blitting'
9
+ require 'tea/mix_clipping'
10
+ require 'tea/mix_grabbing'
11
+ require 'tea/mix_image_saving'
12
+ require 'tea/mix_primitive'
13
+
14
+ #
15
+ module Tea
16
+
17
+ # A Bitmap-like object that displays its contents on the screen when drawn to
18
+ # and updated.
19
+ class Screen
20
+
21
+ # Video buffer depth.
22
+ BITS_PER_PIXEL = 32
23
+
24
+ # Set or change the screen video mode, giving a width * height screen buffer.
25
+ def Screen.set_mode(width, height)
26
+ @screen = SDL::Screen.open(width, height, BITS_PER_PIXEL, SDL::SWSURFACE)
27
+ optimize_bitmaps
28
+ rescue SDL::Error => e
29
+ raise Tea::Error, e.message, e.backtrace
30
+ end
31
+
32
+ # Check if Screen.set_mode has been called yet.
33
+ def Screen.mode_set?
34
+ @screen ? true : false
35
+ end
36
+
37
+ # Register a Bitmap object to be optimised to the Screen's format when a
38
+ # screen mode is set.
39
+ def Screen.register_bitmap_for_optimizing(bitmap)
40
+ @bitmaps_to_optimize << WeakRef.new(bitmap)
41
+ end
42
+ @bitmaps_to_optimize = []
43
+
44
+ # Get the screen width in pixels.
45
+ def Screen.w
46
+ @screen.w
47
+ end
48
+
49
+ # Get the screen height in pixels.
50
+ def Screen.h
51
+ @screen.h
52
+ end
53
+
54
+ # Update the screen so that things drawn on it are displayed.
55
+ def Screen.update
56
+ @screen.flip
57
+ end
58
+
59
+ extend Blitting
60
+ def Screen.blitting_buffer
61
+ @screen
62
+ end
63
+
64
+ extend Clipping
65
+ def Screen.clipping_buffer
66
+ @screen
67
+ end
68
+
69
+ extend Grabbing
70
+ def Screen.grabbing_buffer
71
+ @screen
72
+ end
73
+
74
+ extend ImageSaving
75
+ def Screen.image_saving_buffer
76
+ @screen
77
+ end
78
+
79
+ extend Primitive
80
+ def Screen.primitive_buffer
81
+ @screen
82
+ end
83
+
84
+ # Convert the internal formats of registered Bitmaps.
85
+ def Screen.optimize_bitmaps
86
+ (0...(@bitmaps_to_optimize.length)).to_a.reverse.each do |opt_index|
87
+ begin
88
+ @bitmaps_to_optimize[opt_index].optimize_for_screen
89
+ rescue WeakRef::RefError
90
+ @bitmaps_to_optimize.delete_at opt_index
91
+ end
92
+ end
93
+ end
94
+ private_class_method :optimize_bitmaps
95
+
96
+ end
97
+
98
+ end
metadata ADDED
@@ -0,0 +1,137 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: tea
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.6.1
5
+ platform: ruby
6
+ authors:
7
+ - Tung Nguyen
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+
12
+ date: 2009-10-24 00:00:00 +11:00
13
+ default_executable:
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: rubysdl
17
+ type: :runtime
18
+ version_requirement:
19
+ version_requirements: !ruby/object:Gem::Requirement
20
+ requirements:
21
+ - - ">="
22
+ - !ruby/object:Gem::Version
23
+ version: "0"
24
+ version:
25
+ - !ruby/object:Gem::Dependency
26
+ name: rmagick
27
+ type: :runtime
28
+ version_requirement:
29
+ version_requirements: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: "0"
34
+ version:
35
+ description: |
36
+ Tea is a library for making simpler games from a simpler age.
37
+ It's designed with these things in mind:
38
+
39
+ - 0 is better than 1, and 1 is better than 2.
40
+ - Simplicity beats speed.
41
+ - Value and convenience can sometimes beat simplicity.
42
+ - Procedural beats object-oriented in a dead-heat.
43
+
44
+ email: tunginobi@gmail.com
45
+ executables: []
46
+
47
+ extensions: []
48
+
49
+ extra_rdoc_files:
50
+ - README.rdoc
51
+ files:
52
+ - COPYING
53
+ - COPYING.LESSER
54
+ - README.rdoc
55
+ - doc/example/bitmap_draw.rb
56
+ - doc/example/bitmap_load.rb
57
+ - doc/example/bitmap_new.rb
58
+ - doc/example/circle.rb
59
+ - doc/example/circle_alpha.rb
60
+ - doc/example/circle_alpha_bitmap.rb
61
+ - doc/example/circle_bitmap.rb
62
+ - doc/example/clip.rb
63
+ - doc/example/event_app.rb
64
+ - doc/example/event_keyboard.rb
65
+ - doc/example/event_mouse.rb
66
+ - doc/example/font_hello.rb
67
+ - doc/example/font_word_wrap.rb
68
+ - doc/example/grab.rb
69
+ - doc/example/init.rb
70
+ - doc/example/lines.rb
71
+ - doc/example/lines_aa.rb
72
+ - doc/example/lines_alpha.rb
73
+ - doc/example/point.rb
74
+ - doc/example/rect.rb
75
+ - doc/example/rect_alpha.rb
76
+ - doc/example/screen_set_mode.rb
77
+ - doc/example/screen_update.rb
78
+ - doc/example/sfont_hello.rb
79
+ - doc/example/smile.png
80
+ - doc/example/smile_bounce.rb
81
+ - doc/example/smile_move.rb
82
+ - doc/example/smile_move_2.rb
83
+ - doc/example/sound.rb
84
+ - doc/example/state_app.rb
85
+ - doc/example/state_keyboard.rb
86
+ - doc/example/state_mouse.rb
87
+ - doc/key_constants.textile
88
+ - doc/key_modifiers.textile
89
+ - doc/reference.textile
90
+ - lib/tea.rb
91
+ - lib/tea/c_bitmap.rb
92
+ - lib/tea/c_error.rb
93
+ - lib/tea/c_font.rb
94
+ - lib/tea/c_sound.rb
95
+ - lib/tea/m_color.rb
96
+ - lib/tea/m_event.rb
97
+ - lib/tea/m_event_app.rb
98
+ - lib/tea/m_event_dispatch.rb
99
+ - lib/tea/m_event_keyboard.rb
100
+ - lib/tea/m_event_mouse.rb
101
+ - lib/tea/mix_blitting.rb
102
+ - lib/tea/mix_clipping.rb
103
+ - lib/tea/mix_grabbing.rb
104
+ - lib/tea/mix_image_saving.rb
105
+ - lib/tea/mix_primitive.rb
106
+ - lib/tea/o_screen.rb
107
+ has_rdoc: true
108
+ homepage: http://github.com/tung/tea
109
+ licenses: []
110
+
111
+ post_install_message:
112
+ rdoc_options:
113
+ - --charset=UTF-8
114
+ require_paths:
115
+ - lib
116
+ required_ruby_version: !ruby/object:Gem::Requirement
117
+ requirements:
118
+ - - ">="
119
+ - !ruby/object:Gem::Version
120
+ version: "0"
121
+ version:
122
+ required_rubygems_version: !ruby/object:Gem::Requirement
123
+ requirements:
124
+ - - ">="
125
+ - !ruby/object:Gem::Version
126
+ version: "0"
127
+ version:
128
+ requirements:
129
+ - SDL, SGE
130
+ - imagemagick
131
+ rubyforge_project:
132
+ rubygems_version: 1.3.5
133
+ signing_key:
134
+ specification_version: 3
135
+ summary: A simple game development library for Ruby.
136
+ test_files: []
137
+