Class: Retrograph::Easy::Display
- Inherits:
-
Object
- Object
- Retrograph::Easy::Display
- Defined in:
- lib/retrograph/easy/display.rb
Constant Summary collapse
- BEZEL_THICKNESS =
16
Instance Attribute Summary collapse
-
#fullscreen ⇒ Object
Returns the value of attribute fullscreen.
-
#managed ⇒ Object
readonly
Returns the value of attribute managed.
-
#title ⇒ Object
Returns the value of attribute title.
Instance Method Summary collapse
- #close ⇒ Object
- #each_frame ⇒ Object
- #fullscreen? ⇒ Boolean
-
#initialize(sdl = SDL, vdu_class = VDU) ⇒ Display
constructor
A new instance of Display.
- #minimize ⇒ Object
- #open ⇒ Object
- #toggle_fullscreen ⇒ Object
- #wait_scanlines(count) ⇒ Object
- #write_vdu(offset, data) ⇒ Object
- #write_vdu_2d(offset, stride, data) ⇒ Object
- #write_vdu_byte(offset, byte) ⇒ Object
Constructor Details
#initialize(sdl = SDL, vdu_class = VDU) ⇒ Display
Returns a new instance of Display.
35 36 37 38 39 40 41 42 43 44 45 46 |
# File 'lib/retrograph/easy/display.rb', line 35 def initialize(sdl=SDL, vdu_class=VDU) @sdl = sdl @vdu = nil @vdu_class = vdu_class @surface = nil @managed = false @fullscreen = false @old_fullscreen = false @screen = nil @bezel_image = nil @title = "Retrograph application" end |
Instance Attribute Details
#fullscreen ⇒ Object
Returns the value of attribute fullscreen.
49 50 51 |
# File 'lib/retrograph/easy/display.rb', line 49 def fullscreen @fullscreen end |
#managed ⇒ Object (readonly)
Returns the value of attribute managed.
50 51 52 |
# File 'lib/retrograph/easy/display.rb', line 50 def managed @managed end |
#title ⇒ Object
Returns the value of attribute title.
48 49 50 |
# File 'lib/retrograph/easy/display.rb', line 48 def title @title end |
Instance Method Details
#close ⇒ Object
131 132 133 |
# File 'lib/retrograph/easy/display.rb', line 131 def close nil end |
#each_frame ⇒ Object
87 88 89 90 91 92 93 94 95 96 97 98 |
# File 'lib/retrograph/easy/display.rb', line 87 def each_frame while true start_time = @sdl.get_ticks @surface = @vdu.render_frame_sdl { yield } _set_mode if @managed and @old_fullscreen != @fullscreen @old_fullscreen = @fullscreen _update_screen end_time = @sdl.get_ticks sleep_time = FRAME_TIME_MS - (end_time - start_time) sleep(sleep_time / 1000.0) if sleep_time > 0 end end |
#fullscreen? ⇒ Boolean
193 194 195 |
# File 'lib/retrograph/easy/display.rb', line 193 def fullscreen? not @managed or @fullscreen end |
#minimize ⇒ Object
126 127 128 129 |
# File 'lib/retrograph/easy/display.rb', line 126 def minimize @sdl::WM.iconify nil end |
#open ⇒ Object
100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 |
# File 'lib/retrograph/easy/display.rb', line 100 def open @sdl.init SDL::INIT_VIDEO @managed = true begin info = @sdl::Screen.info rescue NameError # earlier versions of Ruby/SDL don't have SDL::Screen.info info = nil end @managed = info.wm_available if info @vdu = @vdu_class.new @surface = @vdu.render_frame_sdl _set_mode if block_given? begin yield ensure close end else nil end end |
#toggle_fullscreen ⇒ Object
63 64 65 66 |
# File 'lib/retrograph/easy/display.rb', line 63 def toggle_fullscreen @fullscreen = !@fullscreen nil end |
#wait_scanlines(count) ⇒ Object
83 84 85 |
# File 'lib/retrograph/easy/display.rb', line 83 def wait_scanlines(count) @vdu.wait_scanlines(count) end |
#write_vdu(offset, data) ⇒ Object
68 69 70 |
# File 'lib/retrograph/easy/display.rb', line 68 def write_vdu(offset, data) @vdu.write(offset, data) end |
#write_vdu_2d(offset, stride, data) ⇒ Object
76 77 78 79 80 81 |
# File 'lib/retrograph/easy/display.rb', line 76 def write_vdu_2d(offset, stride, data) data.each do |row| write_vdu(offset, row) offset += stride end end |
#write_vdu_byte(offset, byte) ⇒ Object
72 73 74 |
# File 'lib/retrograph/easy/display.rb', line 72 def write_vdu_byte(offset, byte) @vdu.write_byte(offset, byte) end |