Ptr extrapolate()

in src/graphics/PlotUtil.cpp [213:243]


  Ptr<Figure> extrapolate(const Ptr<Action>& firstAction, const Ptr<Action>& secondAction) {
    auto kind = firstAction->getKind();
    if (state == State::AXIS_LINES && kind != ActionKind::LINE && kind != ActionKind::TEXT) {
      flushAndSwitchTo(State::INITIAL);
    }
    if (state == State::AXIS_TEXT && kind != ActionKind::TEXT) {
      flushAndSwitchTo(State::INITIAL);
    }
    switch (kind) {
      case ActionKind::CIRCLE:
        return extrapolate<CircleAction>(firstAction, secondAction);
      case ActionKind::LINE:
        return extrapolate<LineAction>(firstAction, secondAction);
      case ActionKind::NEW_PAGE:
        return extrapolate<NewPageAction>(firstAction, secondAction);
      case ActionKind::PATH:
        return extrapolate<PathAction>(firstAction, secondAction);
      case ActionKind::POLYGON:
        return extrapolate<PolygonAction>(firstAction, secondAction);
      case ActionKind::POLYLINE:
        return extrapolate<PolylineAction>(firstAction, secondAction);
      case ActionKind::RASTER:
        return extrapolate<RasterAction>(firstAction, secondAction);
      case ActionKind::RECTANGLE:
        return extrapolate<RectangleAction>(firstAction, secondAction);
      case ActionKind::TEXT:
        return extrapolate<TextAction>(firstAction, secondAction);
      default:
        throw ParsingError(PlotError::UNSUPPORTED_ACTION);
    }
  }