Commit 1d021df4 authored by Paul Asmuth's avatar Paul Asmuth
Browse files

add the 'range-{x,y}' option shortcuts

parent c478f696
Loading
Loading
Loading
Loading
+31 −0
Original line number Diff line number Diff line
@@ -88,6 +88,37 @@ ReturnCode expr_to_float64_opt(
  return OK;
}

ReturnCode expr_to_float64_opt_pair(
    const Expr* expr,
    std::optional<double>* v1,
    std::optional<double>* v2) {
  if (expr  && expr_is_list(expr)) {
    expr = expr_get_list(expr);
  } else {
    return errorf(
        ERROR,
        "argument error; expected a list, got: {}",
        expr_inspect(expr));
  }

  for (size_t i = 0; i < 2; ++i) {
    if (!expr || !expr_is_value(expr)) {
      return errorf(
          ERROR,
          "argument error; expected a value, got: {}",
          expr_inspect(expr));
    }

    if (auto rc = expr_to_float64_opt(expr, i == 0 ? v1 : v2); !rc) {
      return rc;
    }

    expr = expr_next(expr);
  }

  return OK;
}

ReturnCode expr_to_measure(
    const Expr* expr,
    Measure* value) {
+5 −0
Original line number Diff line number Diff line
@@ -44,6 +44,11 @@ ReturnCode expr_to_float64_opt(
    const Expr* expr,
    std::optional<double>* value);

ReturnCode expr_to_float64_opt_pair(
    const Expr* expr,
    std::optional<double>* v1,
    std::optional<double>* v2);

ReturnCode expr_to_measure(
    const Expr* expr,
    Measure* value);
+2 −0
Original line number Diff line number Diff line
@@ -64,8 +64,10 @@ ReturnCode build(
        bind(&expr_to_copy, _1, &data_y),
      }),
    },
    {"range-x", bind(&expr_to_float64_opt_pair, _1, &scale_x.min, &scale_x.max)},
    {"range-x-min", bind(&expr_to_float64_opt, _1, &scale_x.min)},
    {"range-x-max", bind(&expr_to_float64_opt, _1, &scale_x.max)},
    {"range-y", bind(&expr_to_float64_opt_pair, _1, &scale_y.min, &scale_y.max)},
    {"range-y-min", bind(&expr_to_float64_opt, _1, &scale_y.min)},
    {"range-y-max", bind(&expr_to_float64_opt, _1, &scale_y.max)},
    {"scale-x", bind(&scale_configure_kind, _1, &scale_x)},
+4 −6
Original line number Diff line number Diff line
(chart/scatterplot
    data-x (csv tests/testdata/gauss2d.csv x)
    data-y (csv tests/testdata/gauss2d.csv y)
    range-x (0 400)
    range-y (0 200)
    ticks-y (subdivide 5)
    axes (bottom left)
    grid (color #fff)
    legend (items ("Random Data"))
    ticks-y (subdivide 5)
    background #eee
    border none
    range-x-min 0
    range-x-max 400
    range-y-min 0
    range-y-max 200)
    border none)