class PROGRESS_BAR inherit WINDOW rename make as window_make redefine redraw, handle_event end create make feature {NONE} -- Creation make (p: WINDOW; pos: RECTANGLE; new_progress: INTEGER) is do window_make (p, pos) set_progress (new_progress) create left.make (width, height, 0, 0, 255) -- left is blue create right.make (width, height, 0, 0, 55) -- right is dark blue end left, right: SDL_SOLID_IMAGE mouse_position: INTEGER feature -- Access progress: INTEGER feature -- Operations set_progress (new_progress: INTEGER) is local r: RECTANGLE do r.set_with_coords ( progress.min (new_progress), 0, progress.max (new_progress), height) request_redraw (r) progress := new_progress end handle_event (e: EVENT) is local m: EVENT_MOUSE_MOVE t: EVENT_TIMER do m ?= e t ?= e if m /= Void then mouse_position := m.x elseif t /= Void then if mouse_position > progress then set_progress (progress + 1) elseif mouse_position < progress then set_progress (progress - 1) end end Precursor (e) end redraw (area: RECTANGLE) is local r: RECTANGLE do -- Draw left part r.set_with_size (0, 0, progress, height) -- left area show_image (left, 0, 0, r*area) -- Draw right part r.set_with_size (progress, 0, width-progress, height) -- right area show_image (right, progress, 0, r*area) end end