Commit 400079f6 authored by Paul Asmuth's avatar Paul Asmuth
Browse files

split plot_lines into plot_{labels,lines,points}

parent c96d2bd5
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -23,7 +23,9 @@ add_definitions(-DFNORDMETRIC_VERSION="unstable")
add_library(plotfxlib STATIC
    elements/plot.cc
    elements/plot_axis.cc
    elements/plot_labels.cc
    elements/plot_lines.cc
    elements/plot_points.cc
    elements/legend.cc
    common/config_helpers.cc
    common/data_frame.cc
+8 −6
Original line number Diff line number Diff line
@@ -55,20 +55,22 @@ void dimension_add(
  map->emplace(d.key, d);
}

DimensionMapFn<Color> dimension_map_color_continuous() {
  return [] (const auto& dimension, const auto& value, Color* color) {
    *color = dimension.colors.get(domain_translate(dimension.domain, value));
DimensionMapFn<Color> dimension_map_color_continuous(
    const ColorScheme& palette) {
  return [palette] (const auto& dimension, const auto& value, Color* color) {
    *color = palette.get(domain_translate(dimension.domain, value));
    return OK;
  };
}

DimensionMapFn<Color> dimension_map_color_discrete() {
  return [] (const auto& dimension, const auto& value, Color* color) {
DimensionMapFn<Color> dimension_map_color_discrete(
    const ColorScheme& palette) {
  return [palette] (const auto& dimension, const auto& value, Color* color) {
    auto idx =
        domain_translate(dimension.domain, value) *
        domain_cardinality(dimension.domain);

    *color = dimension.colors.get(idx);
    *color = palette.get(idx);
    return OK;
  };
}
+2 −3
Original line number Diff line number Diff line
@@ -37,7 +37,6 @@ namespace plotfx {
struct DimensionConfig {
  std::string key;
  DomainConfig domain;
  ColorScheme colors;
};

using DimensionMap = std::unordered_map<std::string, DimensionConfig>;
@@ -57,8 +56,8 @@ void dimension_add(
    DimensionMap* map,
    const std::string& key);

DimensionMapFn<Color> dimension_map_color_continuous();
DimensionMapFn<Color> dimension_map_color_discrete();
DimensionMapFn<Color> dimension_map_color_continuous(const ColorScheme& palette);
DimensionMapFn<Color> dimension_map_color_discrete(const ColorScheme& palette);

ReturnCode dimension_resolve(
    const DataFrame& data,
+14 −4
Original line number Diff line number Diff line
@@ -35,7 +35,9 @@
#include <graphics/text.h>
#include <graphics/layout.h>
#include "common/config_helpers.h"
#include "plot_labels.h"
#include "plot_lines.h"
#include "plot_points.h"
#include "legend.h"

namespace plotfx {
@@ -112,11 +114,21 @@ ReturnCode draw(
}

ReturnCode configure_layer(const plist::Property& prop, const Document& doc, PlotConfig* config) {
  if (auto rc = lines::configure(prop, doc, config); !rc) {
  std::string type = "points";
  static const ParserDefinitions pdefs = {
    {"type", std::bind(&configure_string, std::placeholders::_1, &type)},
  };

  if (auto rc = parseAll(*prop.next, pdefs); !rc) {
    return rc;
  }

  return OK;
  // FIXME proper lookup
  if (type == "labels") return labels::configure(prop, doc, config);
  if (type == "lines") return lines::configure(prop, doc, config);
  if (type == "points") return points::configure(prop, doc, config);

  return ReturnCode::errorf("EARG", "invalid layer type: '$0'", type);
}

ReturnCode configure(
@@ -126,8 +138,6 @@ ReturnCode configure(
  PlotConfig config;

  // FIXME
  config.domain_group.kind = DomainKind::CATEGORICAL;
  config.color_scheme = doc.color_scheme;
  config.axis_top.font = doc.font_sans;
  config.axis_top.label_font_size = doc.font_size;
  config.axis_top.border_color = doc.border_color;
+0 −2
Original line number Diff line number Diff line
@@ -64,13 +64,11 @@ struct PlotConfig {
  std::string column_group;
  DomainConfig domain_x;
  DomainConfig domain_y;
  DomainConfig domain_group;
  AxisDefinition axis_top;
  AxisDefinition axis_right;
  AxisDefinition axis_bottom;
  AxisDefinition axis_left;
  Measure margins[4];
  ColorScheme color_scheme;
  DimensionMap dimensions;
  std::vector<PlotLayer> layers;
  LegendConfig legend;
Loading