Commit 20b66812 authored by Paul Asmuth's avatar Paul Asmuth
Browse files

improved axis label placement defaults

parent aeb873e3
Loading
Loading
Loading
Loading
+4 −4
Original line number Diff line number Diff line
@@ -224,7 +224,7 @@ ReturnCode draw(const LinechartConfig& config, Layer* frame) {

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

@@ -233,7 +233,7 @@ ReturnCode draw(const LinechartConfig& config, Layer* frame) {
  }

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

@@ -242,7 +242,7 @@ ReturnCode draw(const LinechartConfig& config, Layer* frame) {
  }

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

@@ -251,7 +251,7 @@ ReturnCode draw(const LinechartConfig& config, Layer* frame) {
  }

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

+38 −1
Original line number Diff line number Diff line
@@ -38,7 +38,7 @@ namespace plotfx {

AxisDefinition::AxisDefinition() :
    mode(AxisMode::OFF),
    label_placement(AxisLabelPlacement::OFF),
    label_placement(AxisLabelPlacement::OUTSIDE),
    padding_rem(4.0f),
    label_padding_rem(1.0f),
    label_font_size_rem(1.0f),
@@ -234,9 +234,46 @@ ReturnCode axis_expand_linear_geom(

ReturnCode axis_expand_auto(
    const AxisDefinition& in,
    const AxisPosition& pos,
    const DomainConfig& domain,
    AxisDefinition* out) {
  *out = in;

  switch (out->label_placement) {
    case AxisLabelPlacement::OUTSIDE:
      switch (pos) {
        case AxisPosition::TOP:
          out->label_placement = AxisLabelPlacement::TOP;
          break;
        case AxisPosition::RIGHT:
          out->label_placement = AxisLabelPlacement::RIGHT;
          break;
        case AxisPosition::BOTTOM:
          out->label_placement = AxisLabelPlacement::BOTTOM;
          break;
        case AxisPosition::LEFT:
          out->label_placement = AxisLabelPlacement::LEFT;
          break;
      }
      break;
    case AxisLabelPlacement::INSIDE:
      switch (pos) {
        case AxisPosition::TOP:
          out->label_placement = AxisLabelPlacement::BOTTOM;
          break;
        case AxisPosition::RIGHT:
          out->label_placement = AxisLabelPlacement::LEFT;
          break;
        case AxisPosition::BOTTOM:
          out->label_placement = AxisLabelPlacement::TOP;
          break;
        case AxisPosition::LEFT:
          out->label_placement = AxisLabelPlacement::RIGHT;
          break;
      }
      break;
  };

  return axis_expand_linear_geom(domain, out); // FIXME
}

+3 −1
Original line number Diff line number Diff line
@@ -58,7 +58,8 @@ enum class AxisLabelPlacement {
  RIGHT,
  TOP,
  BOTTOM,
  OFF
  INSIDE,
  OUTSIDE,
};

struct AxisDefinition {
@@ -85,6 +86,7 @@ Status renderAxis(

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