class GerbilCharts::Surfaces::ImpulseSurface
Impulse Bar Surface
w/ transparency¶ ↑
impulse duration = width of bar
Public Class Methods
new(opts={})
click to toggle source
Calls superclass method
# File lib/gerbilcharts/surfaces/impulse_surface.rb, line 6 def initialize(opts={}) super(opts) end
Public Instance Methods
int_render(g)
click to toggle source
# File lib/gerbilcharts/surfaces/impulse_surface.rb, line 10 def int_render(g) range_options_x = parent.get_global_option(:scaling_x,:auto) range_options_y = parent.get_global_option(:scaling_y,:auto) rx = parent.modelgroup.effective_range_x(range_options_x) ry = parent.modelgroup.effective_range_y(range_options_y) impulse_width = 2 x2 = scale_x Time.at(0),rx x1 = scale_x Time.at(parent.modelgroup.models[0].bucket_size_secs),rx impulse_width = (x2-x1).abs if x2 != x1 # ajax if used if parent.usesAjax? set_ajaxSurfaceContext(rx.rmax,ry.rmax,"IMPULSE") end w=g.newwin("impulse") g.setactivewindow(w) xadj=0 parent.modelgroup.each_model_with_index do | mod, i| opts = {:id => "lineitem#{i}"} xpos=0 ypos=0 mod.each_tuple do |x,y| xpos = scale_x x,rx ypos = scale_y y,ry g.line(xpos + xadj,@bounds.bottom,xpos + xadj,ypos,opts) g.ellipse(xpos + xadj, ypos, 18, 8, { "stroke-width" => 0, :fill => "orange"} ) g.textout(xpos + xadj-11, ypos+3, ry.format_value(y) , { :class => "elementvalue" } ) end xadj=xadj+2 end g.setactivewindow end