Commit 41d461b3 authored by Paul Asmuth's avatar Paul Asmuth
Browse files

expr_to_measure -> measure_read

parent a58e458e
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -201,7 +201,7 @@ ReturnCode data_load(
    return data_load_csv(expr_next(args), values);
  }

  return expr_to_measures(expr, values);
  return measure_read_list(expr, values);
}

ReturnCode data_to_measures(
+11 −11
Original line number Diff line number Diff line
@@ -58,11 +58,11 @@ ReturnCode environment_set(Environment* env, const Expr* expr) {
  }

  if (expr_is_value(args[0], "width")) {
    return expr_to_measure(args[1], &env->screen_width);
    return measure_read(args[1], &env->screen_width);
  }

  if (expr_is_value(args[0], "height")) {
    return expr_to_measure(args[1], &env->screen_height);
    return measure_read(args[1], &env->screen_height);
  }

  if (expr_is_value(args[0], "dpi")) {
@@ -90,7 +90,7 @@ ReturnCode environment_set(Environment* env, const Expr* expr) {
  }

  if (expr_is_value(args[0], "font-size")) {
    return expr_to_measure(args[1], &env->font_size);
    return measure_read(args[1], &env->font_size);
  }

  if (expr_is_value(args[0], "color-palette")) {
@@ -98,19 +98,19 @@ ReturnCode environment_set(Environment* env, const Expr* expr) {
  }

  if (expr_is_value(args[0], "margin-top")) {
    return expr_to_measure(args[1], &env->margins[0]);
    return measure_read(args[1], &env->margins[0]);
  }

  if (expr_is_value(args[0], "margin-right")) {
    return expr_to_measure(args[1], &env->margins[1]);
    return measure_read(args[1], &env->margins[1]);
  }

  if (expr_is_value(args[0], "margin-bottom")) {
    return expr_to_measure(args[1], &env->margins[2]);
    return measure_read(args[1], &env->margins[2]);
  }

  if (expr_is_value(args[0], "margin-left")) {
    return expr_to_measure(args[1], &env->margins[3]);
    return measure_read(args[1], &env->margins[3]);
  }

  if (expr_is_value(args[0], "text-script")) {
@@ -123,10 +123,10 @@ ReturnCode environment_set(Environment* env, const Expr* expr) {

  if (expr_is_value(args[0], "margin")) {
    return expr_calln(args[1], {
      bind(&expr_to_measure, _1, &env->margins[0]),
      bind(&expr_to_measure, _1, &env->margins[1]),
      bind(&expr_to_measure, _1, &env->margins[2]),
      bind(&expr_to_measure, _1, &env->margins[3]),
      bind(&measure_read, _1, &env->margins[0]),
      bind(&measure_read, _1, &env->margins[1]),
      bind(&measure_read, _1, &env->margins[2]),
      bind(&measure_read, _1, &env->margins[3]),
    });
  }

+0 −31
Original line number Diff line number Diff line
@@ -150,37 +150,6 @@ ReturnCode expr_to_switch(
      expr_inspect(expr));
}

ReturnCode expr_to_measure(
    const Expr* expr,
    Measure* value) {
  if (!expr_is_value(expr)) {
    return errorf(
        ERROR,
        "argument error; expected a value, got: {}",
        expr_inspect(expr));
  }

  return parse_measure(expr_get_value(expr), value);
}

ReturnCode expr_to_measure_opt(
    const Expr* expr,
    std::optional<Measure>* value) {
  Measure v;
  if (auto rc = expr_to_measure(expr, &v); !rc) {
    return rc;
  }

  *value = v;
  return OK;
}

ReturnCode expr_to_measures(
    const Expr* expr,
    std::vector<Measure>* measures) {
  return expr_tov<Measure>(expr, bind(&expr_to_measure, _1, _2), measures);
}

ReturnCode expr_to_stroke_style(
    const Expr* expr,
    StrokeStyle* style) {
+1 −12
Original line number Diff line number Diff line
@@ -15,6 +15,7 @@
#include "sexpr.h"
#include "graphics/brush.h"
#include "graphics/measure.h"
#include "typographic_reader.h"

namespace fviz {

@@ -60,18 +61,6 @@ ReturnCode expr_to_switch(
    const Expr* expr,
    bool* value);

ReturnCode expr_to_measure(
    const Expr* expr,
    Measure* value);

ReturnCode expr_to_measure_opt(
    const Expr* expr,
    std::optional<Measure>* value);

ReturnCode expr_to_measures(
    const Expr* expr,
    std::vector<Measure>* measures);

ReturnCode expr_to_stroke_style(
    const Expr* expr,
    StrokeStyle* style);
+53 −0
Original line number Diff line number Diff line
/**
 * This file is part of the "fviz" project
 *   Copyright (c) 2018 Paul Asmuth
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
#include "typographic_reader.h"
#include "sexpr_conv.h"

using namespace std::placeholders;

namespace fviz {

ReturnCode measure_read(
    const Expr* expr,
    Measure* value) {
  if (!expr_is_value(expr)) {
    return errorf(
        ERROR,
        "argument error; expected a value, got: {}",
        expr_inspect(expr));
  }

  return parse_measure(expr_get_value(expr), value);
}

ReturnCode measure_read_opt(
    const Expr* expr,
    std::optional<Measure>* value) {
  Measure v;
  if (auto rc = measure_read(expr, &v); !rc) {
    return rc;
  }

  *value = v;
  return OK;
}

ReturnCode measure_read_list(
    const Expr* expr,
    std::vector<Measure>* measures) {
  return expr_tov<Measure>(expr, bind(&measure_read, _1, _2), measures);
}

} // namespace fviz
Loading