X-Git-Url: https://projects.mako.cc/source/selectricity-live/blobdiff_plain/1a62f78f4f3818ab697bddf51f80a1ba150ce9e7..131cab23209cb1dfa81930240b8cf722d2302131:/lib/gruff-0.2.8/lib/gruff/bar_conversion.rb diff --git a/lib/gruff-0.2.8/lib/gruff/bar_conversion.rb b/lib/gruff-0.2.8/lib/gruff/bar_conversion.rb new file mode 100644 index 0000000..880daca --- /dev/null +++ b/lib/gruff-0.2.8/lib/gruff/bar_conversion.rb @@ -0,0 +1,46 @@ +## +# Original Author: David Stokar +# +# This class perfoms the y coordinats conversion for the bar class. +# +# There are three cases: +# +# 1. Bars all go from zero in positive direction +# 2. Bars all go from zero to negative direction +# 3. Bars either go from zero to positive or from zero to negative +# +class Gruff::BarConversion + attr_writer :mode + attr_writer :zero + attr_writer :graph_top + attr_writer :graph_height + attr_writer :minimum_value + attr_writer :spread + + def getLeftYRightYscaled( data_point, result ) + case @mode + when 1 then # Case one + # minimum value >= 0 ( only positiv values ) + result[0] = @graph_top + @graph_height*(1 - data_point) + 1 + result[1] = @graph_top + @graph_height - 1 + when 2 then # Case two + # only negativ values + result[0] = @graph_top + 1 + result[1] = @graph_top + @graph_height*(1 - data_point) - 1 + when 3 then # Case three + # positiv and negativ values + val = data_point-@minimum_value/@spread + if ( data_point >= @zero ) then + result[0] = @graph_top + @graph_height*(1 - (val-@zero)) + 1 + result[1] = @graph_top + @graph_height*(1 - @zero) - 1 + else + result[0] = @graph_top + @graph_height*(1 - (val-@zero)) + 1 + result[1] = @graph_top + @graph_height*(1 - @zero) - 1 + end + else + result[0] = 0.0 + result[1] = 0.0 + end + end + +end