class Nyle::Screen
Attributes
height[R]
status[R]
width[R]
Public Class Methods
new(width = DEFAULT_WIDTH, height = DEFAULT_HEIGHT, bgcolor: :WHITE, trace: false)
click to toggle source
Calls superclass method
# File lib/nyle/screen.rb, line 41 def initialize(width = DEFAULT_WIDTH, height = DEFAULT_HEIGHT, bgcolor: :WHITE, trace: false) super() @width = width @height = height @trace = trace @bgcolor = bgcolor @running_count = 0 @status = nil Nyle.module_eval { _set_screen_size(width, height) } # Draw to 'CairoContext' of ImageSurface once, and copy to 'CairoContext' of DrawingArea @canvas = Cairo::ImageSurface.new(@width, @height) self.signal_connect(:configure_event) do |widget, event| ; # For resizing and so on end self.signal_connect(:draw) do |widget, cairo_context| Nyle.module_eval { _update_mouse_state _update_key_state } # Draw to 'CairoContext' of ImageSurface Cairo::Context.new(@canvas) do |cr| Nyle.module_eval { _set_cr(cr) } unless @trace # If not trace, clear screen each time Nyle.save do Nyle.cr.set_operator(Cairo::Operator::CLEAR) Nyle.cr.paint end end update draw end # Copy to 'CairoContext' of DrawingArea Nyle.module_eval { _set_cr(cairo_context) } Nyle.cr.set_source_color(@bgcolor) Nyle.cr.paint Nyle.cr.set_source(@canvas, 0, 0) Nyle.cr.paint @running_count += 1 end # Need not only :pointer_motion but also :button_press and :button_release self.add_events([:button_press_mask, :button_release_mask, :pointer_motion_mask]) # Signal handler for mouse position self.signal_connect(:motion_notify_event) do |widget, event| Nyle.module_eval { _set_mouse_pos(event.x.to_i, event.y.to_i) } false end end
Public Instance Methods
clear_screen()
click to toggle source
Clear
# File lib/nyle/screen.rb, line 106 def clear_screen Nyle.save do Nyle.cr.set_operator(Cairo::Operator::CLEAR) Nyle.cr.paint end end
draw()
click to toggle source
# File lib/nyle/screen.rb, line 131 def draw ; end
resume()
click to toggle source
# File lib/nyle/screen.rb, line 133 def resume ; end
setup()
click to toggle source
# File lib/nyle/screen.rb, line 134 def setup ; end
show_all(title: nil, interval: nil)
click to toggle source
When single screen, create frame to show self
# File lib/nyle/screen.rb, line 114 def show_all(title: nil, interval: nil) f = Nyle::Frame.new(@width, @height) f.set_current(self) f.show_all({title: title, interval: interval}) f end
start(*args)
click to toggle source
Syntax sugar for starting Nyle
aplication
# File lib/nyle/screen.rb, line 122 def start(*args) self.setup self.show_all(*args) Nyle.main end
suspend()
click to toggle source
# File lib/nyle/screen.rb, line 132 def suspend ; end
update()
click to toggle source
Abstract methods to be overriden
# File lib/nyle/screen.rb, line 130 def update ; end