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