Commit e7c8bbf3 authored by Paul Asmuth's avatar Paul Asmuth
Browse files

linechart: make series colour configurable

parent 581c3778
Loading
Loading
Loading
Loading
+3 −2
Original line number Diff line number Diff line
@@ -48,7 +48,7 @@ char LineChart::kDefaultPointSize[] = "3";

LinechartSeries::LinechartSeries() :
    line_width(from_pt(2)),
    line_colour(Colour::fromRGB(0, 0, 0)) {}
    colour(Colour::fromRGB(0, 0, 0)) {}

LinechartConfig::LinechartConfig() :
    x_domain(PlotDomain::LINEAR),
@@ -82,7 +82,7 @@ ReturnCode drawSeries(

  StrokeStyle style;
  style.line_width = series.line_width;
  style.colour = series.line_colour;
  style.colour = series.colour;
  strokePath(layer, clip, path, style);

  return OK;
@@ -164,6 +164,7 @@ ReturnCode configureSeries(const plist::Property& prop, LinechartConfig* config)
  static const ParserDefinitions pdefs = {
    {"xs", std::bind(&parseDataSeries, std::placeholders::_1, &series.xs)},
    {"ys", std::bind(&parseDataSeries, std::placeholders::_1, &series.ys)},
    {"colour", std::bind(&configure_colour, std::placeholders::_1, &series.colour)},
    {"line-width", std::bind(&parseMeasureProp, std::placeholders::_1, &series.line_width)},
  };

+1 −1
Original line number Diff line number Diff line
@@ -45,7 +45,7 @@ struct LinechartSeries {
  std::vector<double> xs;
  std::vector<double> ys;
  Measure line_width;
  Colour line_colour;
  Colour colour;
};

struct LinechartConfig {
+19 −0
Original line number Diff line number Diff line
@@ -62,5 +62,24 @@ ReturnCode parseMeasureProp(
  return parse_measure(prop[0], value);
}

ReturnCode configure_colour(
    const plist::Property& prop,
    Colour* value) {
  if (prop.size() != 1) {
    return ReturnCode::errorf(
        "EARG",
        "incorrect number of arguments; expected: 1, got: $0",
        prop.size());
  }

  if (prop.size() > 0 && StringUtil::beginsWith(prop[0].data, "#")) {
    if (value->parse(prop[0].data)) {
      return OK;
    }
  }

  return ReturnCode::error("EARG", "invalid colour");
}

} // namespace plotfx
+5 −0
Original line number Diff line number Diff line
@@ -31,6 +31,7 @@
#include <unordered_map>
#include <plist/plist.h>
#include <graphics/measure.h>
#include <graphics/colour.h>
#include "utils/return_code.h"

namespace plotfx {
@@ -85,5 +86,9 @@ ReturnCode parseMeasureProp(
    const plist::Property& prop,
    Measure* value);

ReturnCode configure_colour(
    const plist::Property& prop,
    Colour* value);

} // namespace plotfx
+1 −0
Original line number Diff line number Diff line
@@ -8,5 +8,6 @@ linechart {
    xs: 10   20   30   40   50   60    70   80  90  100;
    ys: 1.23 4.32 3.23 6.43 3.45 12.32 8.14 5.2 3.5 2.2;
    line-width: 8pt;
    colour: #06c;
  }
}