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