lib/write_xlsx/chart/series.rb in write_xlsx-0.86.0 vs lib/write_xlsx/chart/series.rb in write_xlsx-0.87.0

- old
+ new

@@ -6,26 +6,34 @@ class Chartline include Writexlsx::Utility include Writexlsx::Gradient - attr_reader :line, :fill, :type + attr_reader :line, :fill, :type, :gradient, :pattern def initialize(params) @line = params[:line] @fill = params[:fill] + @pattern = params[:pattern] + @gradient = params[:gradient] # Set the line properties for the marker.. @line = line_properties(@line) # Allow 'border' as a synonym for 'line'. @line = line_properties(params[:border]) if params[:border] - - # Set the gradient fill properties for the series. - @gradient = gradient_properties(params[:gradient]) - # Set the fill properties for the marker. @fill = fill_properties(@fill) + # Set the pattern properties for the series. + @pattern = pattern_properties(@pattern) + # Set the gradient fill properties for the series. + @gradient = gradient_properties(@gradient) + # Pattern fill overrides solid fill. @fill = nil if ptrue?(@gradient) + # Gradient fill overrides solid and pattern fills. + if ptrue?(@gradient) + @pattern = nil + @fill = nil + end end def line_defined? line && ptrue?(line[:_defined]) end @@ -168,11 +176,11 @@ class Series include Writexlsx::Utility include Writexlsx::Gradient attr_reader :values, :categories, :name, :name_formula, :name_id - attr_reader :cat_data_id, :val_data_id, :fill, :gradient + attr_reader :cat_data_id, :val_data_id, :fill, :pattern, :gradient attr_reader :trendline, :smooth, :labels, :invert_if_negative attr_reader :x2_axis, :y2_axis, :error_bars, :points attr_accessor :line, :marker def initialize(chart, params = {}) @@ -182,16 +190,24 @@ @name, @name_formula = chart.process_names(params[:name], params[:name_formula]) set_data_ids(params) - @line = line_properties(params[:border] || params[:line]) - @fill = fill_properties(params[:fill]) - + @line = line_properties(params[:border] || params[:line]) + @fill = fill_properties(params[:fill]) + @pattern = pattern_properties(params[:pattern]) @gradient = gradient_properties(params[:gradient]) - @fill = nil if ptrue?(@gradient) + # Pattern fill overrides solid fill. + @fill = nil if ptrue?(@pattern) + # Gradient fill overrides solid and patter fills. + if ptrue?(@gradient) + @pattern = nil + @fill = nil + end + # Set the marker properties for the series. @marker = Marker.new(params[:marker]) if params[:marker] + # Set the trendline properties for the series. @trendline = Trendline.new(params[:trendline]) if params[:trendline] @error_bars = errorbars(params[:x_error_bars], params[:y_error_bars]) @points = params[:points].collect { |p| p ? Point.new(p) : p } if params[:points] @label_positions = chart.label_positions