Commit 4b791799 authored by Paul Asmuth's avatar Paul Asmuth
Browse files

implement user unit conversion

parent 8832ad95
Loading
Loading
Loading
Loading
+10 −1
Original line number Diff line number Diff line
width: 1200px;
height: 480px;

scale-x-min: 1404270100;
scale-x-max: 1404320100;
scale-y-min: 0;
scale-y-max: 100;

points {
  xs: csv('tests/testdata/measurement.csv', time);
  ys: csv('tests/testdata/measurement.csv', value2);
  sizes: 4pt, 20pt;
  sizes: 1pt, 1pt;
}

axis {
  position: bottom;
  scale-min: 1404270100;
  scale-max: 1404280100;
}

axis {
  position: left;
  scale-min: 0;
  scale-max: 100;
}
+4 −4
Original line number Diff line number Diff line
@@ -44,10 +44,10 @@ std::vector<Color> series_to_colors(
  domain_fit(*series, &domain);

  std::vector<Color> colors;
  for (const auto& v : *series) {
    auto value = domain_translate(domain, v) * domain_cardinality(domain);
    colors.emplace_back(palette.get(value));
  }
  //for (const auto& v : *series) {
  //  auto value = domain_translate(domain, v) * domain_cardinality(domain);
  //  colors.emplace_back(palette.get(value));
  //}

  return colors;
}
+18 −18
Original line number Diff line number Diff line
@@ -75,24 +75,24 @@ ReturnCode document_load(
    //{"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)},
    {"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()) {
+9 −18
Original line number Diff line number Diff line
@@ -118,12 +118,11 @@ double domain_max(const DomainConfig& domain) {

double domain_translate_linear(
    const DomainConfig& domain,
    const Value& v) {
    double v) {
  double min = domain_min(domain);
  double max = domain_max(domain);

  auto vf = value_to_float(v);
  auto vt = (vf - min) / (max - min);
  auto vt = (v - min) / (max - min);

  if (domain.inverted) {
    vt = 1.0 - vt;
@@ -134,14 +133,14 @@ double domain_translate_linear(

double domain_translate_log(
    const DomainConfig& domain,
    const Value& v) {
    double v) {
  auto min = domain_min(domain);
  auto max = domain_max(domain);
  auto log_base = domain.log_base.value_or(kDefaultLogBase);
  double range = max - min;
  double range_log = log(range) / log(log_base);

  auto vf = value_to_float(v) - min;
  auto vf = v - min;
  if (vf > 1.0) {
    vf = log(vf) / log(log_base);
  } else {
@@ -158,12 +157,11 @@ double domain_translate_log(

double domain_translate_discrete(
    const DomainConfig& domain,
    const Value& v) {
    double v) {
  double min = domain_min(domain);
  double max = domain_max(domain) + 1;

  auto vf = value_to_float(v);
  auto vt = (vf - min) / (max - min);
  auto vt = (v - min) / (max - min);

  if (domain.inverted) {
    vt = 1.0 - vt;
@@ -174,7 +172,7 @@ double domain_translate_discrete(

double domain_translate(
    const DomainConfig& domain,
    const Value& value) {
    double value) {
  switch (domain.kind) {
    case DomainKind::LINEAR:
      return domain_translate_linear(domain, value);
@@ -189,15 +187,8 @@ double domain_translate(
  return 0.0f;
}

std::vector<double> domain_translate(
    const DomainConfig& domain,
    const Series& series) {
  std::vector<double> values;
  for (const auto& v : series) {
    values.push_back(domain_translate(domain, v));
  }

  return values;
std::function<double (double)> domain_translate_fn(const DomainConfig& domain) {
  return bind(&domain_translate, domain, std::placeholders::_1);
}

Value domain_untranslate_linear(const DomainConfig& domain, double vt) {
+2 −4
Original line number Diff line number Diff line
@@ -74,11 +74,9 @@ double domain_max(const DomainConfig& domain);

double domain_translate(
    const DomainConfig& domain,
    const Value& value);
    double value);

std::vector<double> domain_translate(
    const DomainConfig& domain,
    const Series& series);
std::function<double (double)> domain_translate_fn(const DomainConfig& domain);

Value domain_untranslate(
    const DomainConfig& domain,
Loading