require 'fltk' class WaveWidget < FLTK::Widget include FLTK::Drawable SIZEX = 1000 SIZEY = 400 def initialize size(SIZEX,SIZEY) end def draw clear SIZEX.times do | i | x = i * 2 * 3.1415927 / SIZEX y = Math.sin(x) color(FLTK::BLACK) point(i,y*SIZEY/2+SIZEY/2) end end end class MyWindow < FLTK::DoubleWindow def initialize super(300, 300, 'Scrolling'){|win| pack = FLTK::Pack.new(w,h) title = FLTK::Box.new(80, 20, 'Sine Wave') title.box(FLTK::BORDER_BOX) pane = FLTK::Scroll.new(w,h-20) pack.resizable(pane) wave = WaveWidget.new resizable(pack) yield(win) } end end MyWindow.new{|win| win.show() } FLTK::run()