Commit 2d6fba0b authored by Paul Asmuth's avatar Paul Asmuth
Browse files

add stub axis_layout method

parent b3073cc0
Loading
Loading
Loading
Loading
+20 −9
Original line number Diff line number Diff line
@@ -59,16 +59,27 @@ ReturnCode draw(
  auto domain_y = config.domain_y;

  // setup layout
  auto border_box = layout_margin_box(
      clip,
      to_unit(layer->measures, config.margins[0]).value,
      to_unit(layer->measures, config.margins[1]).value,
      to_unit(layer->measures, config.margins[2]).value,
      to_unit(layer->measures, config.margins[3]).value);
  auto bbox = clip;

  if (auto rc = axis_layout(
        bbox,
        config.axis_top,
        config.axis_right,
        config.axis_bottom,
        config.axis_left,
        &bbox); !rc) {
    return rc;
  }
  //auto bbox = layout_margin_box(
  //    clip,
  //    to_unit(layer->measures, config.margins[0]).value,
  //    to_unit(layer->measures, config.margins[1]).value,
  //    to_unit(layer->measures, config.margins[2]).value,
  //    to_unit(layer->measures, config.margins[3]).value);

  // render axes
  if (auto rc = axis_draw_all(
        border_box,
        bbox,
        domain_x,
        domain_y,
        config.axis_top,
@@ -82,13 +93,13 @@ ReturnCode draw(

  // render series
  for (const auto& s : config.series) {
    if (auto rc = s.draw(config, border_box, layer); !rc) {
    if (auto rc = s.draw(config, bbox, layer); !rc) {
      return rc;
    }
  }

  // render legend
  if (auto rc = legend_draw(config.legend, border_box, layer); !rc) {
  if (auto rc = legend_draw(config.legend, bbox, layer); !rc) {
    return rc;
  }

+78 −0
Original line number Diff line number Diff line
@@ -371,6 +371,84 @@ ReturnCode axis_expand_auto(
  return OK;
}

void axis_layout(
    const AxisDefinition& axis,
    const AxisPosition& axis_position,
    double* margin) {
  /* add margin for ticks */
  bool reflow_ticks = false;
  switch (axis.label_position) {
    case AxisLabelPosition::OUTSIDE:
      reflow_ticks = true;
      break;
    case AxisLabelPosition::INSIDE:
      reflow_ticks = false;
      break;
    case AxisLabelPosition::TOP:
      reflow_ticks = (axis_position == AxisPosition::TOP);
      break;
    case AxisLabelPosition::RIGHT:
      reflow_ticks = (axis_position == AxisPosition::RIGHT);
      break;
    case AxisLabelPosition::BOTTOM:
      reflow_ticks = (axis_position == AxisPosition::BOTTOM);
      break;
    case AxisLabelPosition::LEFT:
      reflow_ticks = (axis_position == AxisPosition::LEFT);
      break;
  }

  /* add margin for labels */
  bool reflow_labels = true;
  switch (axis.label_position) {
    case AxisLabelPosition::OUTSIDE:
      reflow_labels = true;
      break;
    case AxisLabelPosition::INSIDE:
      reflow_labels = false;
      break;
    case AxisLabelPosition::TOP:
      reflow_labels = (axis_position == AxisPosition::TOP);
      break;
    case AxisLabelPosition::RIGHT:
      reflow_labels = (axis_position == AxisPosition::RIGHT);
      break;
    case AxisLabelPosition::BOTTOM:
      reflow_labels = (axis_position == AxisPosition::BOTTOM);
      break;
    case AxisLabelPosition::LEFT:
      reflow_labels = (axis_position == AxisPosition::LEFT);
      break;
  }

  if (reflow_labels) {
    *margin += 0;
  }
}

ReturnCode axis_layout(
    const Rectangle& parent,
    const AxisDefinition& axis_top,
    const AxisDefinition& axis_right,
    const AxisDefinition& axis_bottom,
    const AxisDefinition& axis_left,
    Rectangle* bbox) {
  double margins[4] = {0, 0, 0, 0};
  axis_layout(axis_top, AxisPosition::TOP, &margins[0]);
  axis_layout(axis_right, AxisPosition::RIGHT, &margins[1]);
  axis_layout(axis_bottom, AxisPosition::BOTTOM, &margins[2]);
  axis_layout(axis_left, AxisPosition::LEFT, &margins[3]);

  *bbox = layout_margin_box(
      parent,
      margins[0],
      margins[1],
      margins[2],
      margins[3]);

  return OK;
}

ReturnCode axis_draw_all(
    const Rectangle& clip,
    const DomainConfig& domain_x,
+9 −0
Original line number Diff line number Diff line
@@ -108,6 +108,14 @@ ReturnCode axis_expand_auto(
    const DomainConfig& domain,
    AxisDefinition* out);

ReturnCode axis_layout(
    const Rectangle& parent,
    const AxisDefinition& axis_top,
    const AxisDefinition& axis_right,
    const AxisDefinition& axis_bottom,
    const AxisDefinition& axis_left,
    Rectangle* bbox);

ReturnCode axis_draw_all(
    const Rectangle& clip,
    const DomainConfig& domain_x,
@@ -121,6 +129,7 @@ ReturnCode axis_draw_all(
ReturnCode axis_place_labels_default(
    const DomainConfig& domain,
    AxisDefinition* axis);

ReturnCode axis_place_labels_geom(
    const DomainConfig& domain,
    AxisDefinition* axis);
+0 −3
Original line number Diff line number Diff line
width: 1200px;
height: 480px;

plot {
  axis-top: off;
  axis-right: off;
+104 −104

File changed.

Preview size limit exceeded, changes collapsed.