Commit 373b033b authored by Paul Asmuth's avatar Paul Asmuth
Browse files

remove conversion of units at parsing time

parent e2646c87
Loading
Loading
Loading
Loading
+10 −6
Original line number Diff line number Diff line
width: 1200px;
height: 480px;

axis-x-format: datetime("%H:%M:%S");
points {
  xs: 60, 200, 14;
  ys: 60px, 200px, 14em;
  sizes: 4pt, 20pt;
}

data: csv('tests/testdata/measurement.csv', time);
x: time;
y: value2;
axis {
  position: bottom;
}

layer {
  type: lines;
axis {
  position: left;
}
+15 −8
Original line number Diff line number Diff line
@@ -58,10 +58,8 @@ ReturnCode parseAll(
  return ReturnCode::success();
}

ReturnCode configure_measure_rel(
ReturnCode configure_measure(
    const plist::Property& prop,
    double dpi,
    double font_size,
    Measure* value) {
  if (!plist::is_value(prop)) {
    return ReturnCode::errorf(
@@ -70,16 +68,14 @@ ReturnCode configure_measure_rel(
        prop.size());
  }

  return parse_measure_rel(prop, dpi, font_size, value);
  return parse_measure(prop, value);
}

ReturnCode configure_measure_rel_opt(
ReturnCode configure_measure_opt(
    const plist::Property& prop,
    double dpi,
    double font_size,
    std::optional<Measure>* value) {
  Measure v;
  if (auto rc = configure_measure_rel(prop, dpi, font_size, &v); !rc) {
  if (auto rc = configure_measure(prop, &v); !rc) {
    return rc;
  }

@@ -99,6 +95,17 @@ ParserFn configure_multiprop(const std::vector<ParserFn>& parsers) {
  };
}

ParserFn configure_alt(const ParserDefinitions& parsers) {
  return [parsers] (const plist::Property& prop) -> ReturnCode {
    std::string parser_key = "";
    if (plist::is_enum(prop) && parsers.count(prop.value)) {
      parser_key = prop.value;
    }

    return parsers.at(parser_key)(prop);
  };
}

ReturnCode configure_color(
    const plist::Property& prop,
    Color* value) {
+5 −4
Original line number Diff line number Diff line
@@ -73,15 +73,16 @@ ParserFn configure_vec(ParseToFn<T> parser, std::vector<T>* values);

ParserFn configure_multiprop(const std::vector<ParserFn>& parsers);

ParserFn configure_alt(
    const ParserDefinitions& parsers);

ParserFn configure_key(std::string* key);

ReturnCode configure_measure_rel(
ReturnCode configure_measure(
    const plist::Property& prop,
    double dpi,
    double font_size,
    Measure* value);

ReturnCode configure_measure_rel_opt(
ReturnCode configure_measure_opt(
    const plist::Property& prop,
    double dpi,
    double font_size,
+2 −0
Original line number Diff line number Diff line
@@ -68,6 +68,7 @@ std::vector<Color> groups_to_colors(
  return colors;
}

/*
std::vector<Measure> series_to_sizes(
    SeriesRef series,
    const DomainConfig& domain_config,
@@ -88,6 +89,7 @@ std::vector<Measure> series_to_sizes(

  return sizes;
}
*/

} // namespace plotfx
+24 −15
Original line number Diff line number Diff line
@@ -43,8 +43,8 @@ using namespace std::placeholders;
namespace plotfx {

Document::Document() :
    width(1200),
    height(480),
    width(Unit::UNIT, 1200),
    height(Unit::UNIT, 480),
    background_color(Color::fromRGB(1,1,1)),
    text_color(Color::fromRGB(.2,.2,.2)),
    border_color(Color::fromRGB(.66,.66,.66)),
@@ -68,22 +68,31 @@ ReturnCode document_load(
    return rc;
  }

  auto env = &doc->env;
  // IMPORTANT: parse dpi + font size first

  static const ParserDefinitions pdefs = {
    {"font-size", bind(&configure_measure_rel, _1, doc->dpi, doc->font_size, &doc->font_size)},
    {"width", bind(&configure_measure_rel, _1, doc->dpi, doc->font_size, &doc->width)},
    {"height", bind(&configure_measure_rel, _1, doc->dpi, doc->font_size, &doc->height)},
    {"background-color", bind(&configure_color, _1, &doc->background_color)},
    {
      "foreground-color",
      configure_multiprop({
          bind(&configure_color, _1, &doc->text_color),
          bind(&configure_color, _1, &doc->border_color),
      })
    },
    {"text-color", bind(&configure_color, _1, &doc->text_color)},
    {"border-color", bind(&configure_color, _1, &doc->border_color)},
    //{"font-size", bind(&configure_measure_rel, _1, doc->dpi, doc->font_size, &doc->font_size)},
    {"width", bind(&configure_measure, _1, &doc->width)},
    {"height", bind(&configure_measure, _1, &doc->height)},
    //{"background-color", bind(&configure_color, _1, &doc->background_color)},
    //{
    //  "foreground-color",
    //  configure_multiprop({
    //      bind(&configure_color, _1, &doc->text_color),
    //      bind(&configure_color, _1, &doc->border_color),
    //  })
    //},
    //{"text-color", bind(&configure_color, _1, &doc->text_color)},
    //{"border-color", bind(&configure_color, _1, &doc->border_color)},
    //{"scale-x", bind(&domain_configure, _1, &env->scale_x)},
    //{"scale-x-min", bind(&configure_float_opt, _1, &env->scale_x.min)},
    //{"scale-x-max", bind(&configure_float_opt, _1, &env->scale_x.max)},
    //{"scale-x-padding", bind(&configure_float, _1, &env->scale_x.padding)},
    //{"scale-y", bind(&domain_configure, _1, &env->scale_y)},
    //{"scale-y-min", bind(&configure_float_opt, _1, &env->scale_y.min)},
    //{"scale-y-max", bind(&configure_float_opt, _1, &env->scale_y.max)},
    //{"scale-y-padding", bind(&configure_float, _1, &env->scale_y.padding)},
  };

  if (auto rc = parseAll(plist, pdefs); !rc.isSuccess()) {
Loading