Class: Retrograph::Easy::Display

Inherits:
Object
  • Object
show all
Defined in:
lib/retrograph/easy/display.rb

Constant Summary collapse

BEZEL_THICKNESS =
16

Instance Attribute Summary collapse

Instance Method Summary collapse

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

#fullscreenObject

Returns the value of attribute fullscreen.



49
50
51
# File 'lib/retrograph/easy/display.rb', line 49

def fullscreen
  @fullscreen
end

#managedObject (readonly)

Returns the value of attribute managed.



50
51
52
# File 'lib/retrograph/easy/display.rb', line 50

def managed
  @managed
end

#titleObject

Returns the value of attribute title.



48
49
50
# File 'lib/retrograph/easy/display.rb', line 48

def title
  @title
end

Instance Method Details

#closeObject



131
132
133
# File 'lib/retrograph/easy/display.rb', line 131

def close
  nil
end

#each_frameObject



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

Returns:

  • (Boolean)


193
194
195
# File 'lib/retrograph/easy/display.rb', line 193

def fullscreen?
  not @managed or @fullscreen
end

#minimizeObject



126
127
128
129
# File 'lib/retrograph/easy/display.rb', line 126

def minimize
  @sdl::WM.iconify
  nil
end

#openObject



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_fullscreenObject



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