Commit 6eeabbc4 authored by Paul Asmuth's avatar Paul Asmuth
Browse files

add DomainConfig

parent 5f8499ab
Loading
Loading
Loading
Loading
+28 −4
Original line number Diff line number Diff line
@@ -218,20 +218,44 @@ LinechartConfig::LinechartConfig() :
    y_domain(PlotDomain::LINEAR) {}

ReturnCode draw(const LinechartConfig& config, Layer* frame) {
  // setup domains
  DomainConfig domain_x;
  DomainConfig domain_y;

  // render axes
  if (auto rc = renderAxis(config.axis_top, AxisPosition::TOP, frame); rc) {
  AxisDefinition axis_top;
  if (auto rc = axis_expand_auto(config.axis_top, domain_x, &axis_top); !rc) {
    return rc;
  }

  if (auto rc = renderAxis(axis_top, AxisPosition::TOP, frame); rc) {
    return rc;
  }

  AxisDefinition axis_right;
  if (auto rc = axis_expand_auto(config.axis_right, domain_y, &axis_right); !rc) {
    return rc;
  }

  if (auto rc = renderAxis(axis_right, AxisPosition::RIGHT, frame); rc) {
    return rc;
  }

  AxisDefinition axis_bottom;
  if (auto rc = axis_expand_auto(config.axis_bottom, domain_x, &axis_bottom); !rc) {
    return rc;
  }

  if (auto rc = renderAxis(config.axis_right, AxisPosition::RIGHT, frame); rc) {
  if (auto rc = renderAxis(axis_bottom, AxisPosition::BOTTOM, frame); rc) {
    return rc;
  }

  if (auto rc = renderAxis(config.axis_bottom, AxisPosition::BOTTOM, frame); rc) {
  AxisDefinition axis_left;
  if (auto rc = axis_expand_auto(config.axis_left, domain_y, &axis_left); !rc) {
    return rc;
  }

  if (auto rc = renderAxis(config.axis_left, AxisPosition::LEFT, frame); rc) {
  if (auto rc = renderAxis(axis_left, AxisPosition::LEFT, frame); rc) {
    return rc;
  }

+23 −0
Original line number Diff line number Diff line
@@ -29,6 +29,7 @@
 */
#include "plot_axis.h"
#include <assert.h>
#include <iostream>
#include <common/config_helpers.h>
#include <graphics/text.h>
#include <graphics/brush.h>
@@ -217,5 +218,27 @@ Status renderAxis(
  return rc;
}

ReturnCode axis_expand_linear_geom(
    const DomainConfig& domain,
    AxisDefinition* axis) {
  uint32_t num_ticks = 6;

  for (size_t i = 0; i < num_ticks; ++i) {
    auto o = (1.0f / (num_ticks - 1)) * i;
    axis->ticks.emplace_back(o);
    axis->labels.emplace_back(o, std::to_string(o)); // FIXME
  }

  return OK;
}

ReturnCode axis_expand_auto(
    const AxisDefinition& in,
    const DomainConfig& domain,
    AxisDefinition* out) {
  *out = in;
  return axis_expand_linear_geom(domain, out); // FIXME
}


}
+5 −0
Original line number Diff line number Diff line
@@ -36,6 +36,7 @@
#include <utils/return_code.h>

namespace plotfx {
struct DomainConfig;

enum class AxisPosition {
  TOP,
@@ -82,6 +83,10 @@ Status renderAxis(
    AxisPosition axis_position,
    Layer* frame);

ReturnCode axis_expand_auto(
    const AxisDefinition& in,
    const DomainConfig& domain,
    AxisDefinition* out);

} // namespace plotfx
+7 −0
Original line number Diff line number Diff line
@@ -34,6 +34,7 @@
#include <stdlib.h>
#include <vector>
#include <string>
#include <optional>

// FIXPAUL too many copies T val...
namespace plotfx {
@@ -42,6 +43,12 @@ enum class PlotDomain {
  LINEAR, LOGARITHMIC
};

struct DomainConfig {
  PlotDomain space;
  std::optional<double> min;
  std::optional<double> max;
};

namespace chart {

/**