8#include "LineProperties.h"
23 typedef std::vector<std::unique_ptr<CanvasItem>>::iterator iterator;
26 virtual Plot *clone()
const;
30 iterator begin()
noexcept {
return (_items.begin()); }
32 iterator end()
noexcept {
return (_items.end()); }
36 void add(std::vector<CanvasItem> &items);
40 void erase(std::vector<std::unique_ptr<CanvasItem>>::iterator begin,
41 std::vector<std::unique_ptr<CanvasItem>>::iterator end);
43 void setXLimits(
const std::array<double, 2> &limits);
45 std::array<double, 2>
const &getXLimits()
const;
47 void setYLimits(
const std::array<double, 2> &limits);
49 std::array<double, 2>
const &getYLimits()
const;
51 void setZLimits(
const std::array<double, 2> &limits);
53 std::array<double, 2>
const &getZLimits()
const;
55 void setXMargins(
const std::array<double, 2> &margins);
57 std::array<double, 2>
const &getXMargins()
const;
59 void setYMargins(
const std::array<double, 2> &margins);
61 std::array<double, 2>
const &getYMargins()
const;
63 void setZMargins(
const std::array<double, 2> &margins);
65 std::array<double, 2>
const &getZMargins()
const;
67 void setTitle(std::string_view title);
69 std::string_view getTitle()
const;
71 void setDrawHorizontalGrid(
bool on);
75 bool isDrawHorizontalGrid()
const;
77 void setDrawVerticalGrid(
bool on);
81 bool isDrawVerticalGrid()
const;
83 void setDrawHorizontalFineGrid(
bool on);
85 bool isDrawHorizontalFineGrid()
const;
87 void setDrawVerticalFineGrid(
bool on);
89 bool isDrawVerticalFineGrid()
const;
91 void setAdvance(
bool on);
93 bool isAdvance()
const;
95 std::vector<Axis> &getXAxis();
97 std::vector<Axis> &getYAxis();
99 std::vector<Axis> &getZAxis();
101 void setFontSize(
double size);
103 const double &getFontSize()
const;
105 void setMajorTickLength(
double length);
107 const double &getMajorTickLength()
const;
109 void setMinorTickLength(
double length);
111 const double &getMinorTickLength()
const;
114 for (
auto &item : _items) {
115 printf(
"%d\n", (
int)item->type);
120 std::vector<std::unique_ptr<CanvasItem>> _items;
122 std::array<double, 2> _xlimits;
124 std::array<double, 2> _ylimits;
126 std::array<double, 2> _zlimits;
128 std::array<double, 2> _xmargins;
130 std::array<double, 2> _ymargins;
132 std::array<double, 2> _zmargins;
140 std::vector<Axis> _xaxis;
142 std::vector<Axis> _yaxis;
144 std::vector<Axis> _zaxis;
148 double _majorticklength;
150 double _minorticklength;
152 bool _drawhorizontalgrid;
154 bool _drawverticalgrid;
156 bool _drawhorizontalfinegrid;
158 bool _drawverticalfinegrid;
163inline CanvasItem &Plot::operator[](std::size_t idx) {
return (*_items[idx]); }
165inline void Plot::clear() { _items.clear(); }
168Plot::erase(std::vector<std::unique_ptr<CanvasItem>>::iterator begin,
169 std::vector<std::unique_ptr<CanvasItem>>::iterator end) {
170 _items.erase(begin, end);
173inline void Plot::setXLimits(
const std::array<double, 2> &limits) {
177inline void Plot::setYLimits(
const std::array<double, 2> &limits) {
181inline void Plot::setZLimits(
const std::array<double, 2> &limits) {
185inline void Plot::setXMargins(
const std::array<double, 2> &margins) {
189inline void Plot::setYMargins(
const std::array<double, 2> &margins) {
193inline void Plot::setZMargins(
const std::array<double, 2> &margins) {
197inline void Plot::setTitle(std::string_view title) { _title = title; }
199inline std::string_view Plot::getTitle()
const {
return (_title); }
201inline std::array<double, 2>
const &Plot::getXLimits()
const {
205inline std::array<double, 2>
const &Plot::getYLimits()
const {
209inline std::array<double, 2>
const &Plot::getZLimits()
const {
213inline std::array<double, 2>
const &Plot::getXMargins()
const {
217inline std::array<double, 2>
const &Plot::getYMargins()
const {
221inline std::array<double, 2>
const &Plot::getZMargins()
const {
225inline void Plot::setDrawHorizontalGrid(
bool on =
true) {
226 _drawhorizontalgrid = on;
229inline LineProperties &Plot::getHorizontalGrid() {
return (_horizontalgrid); }
231inline bool Plot::isDrawHorizontalGrid()
const {
return (_drawhorizontalgrid); }
233inline void Plot::setDrawVerticalGrid(
bool on =
true) {
234 _drawverticalgrid = on;
237inline LineProperties &Plot::getVerticalGrid() {
return (_verticalgrid); }
239inline bool Plot::isDrawVerticalGrid()
const {
return (_drawverticalgrid); }
241inline void Plot::setDrawHorizontalFineGrid(
bool on =
true) {
242 _drawhorizontalfinegrid = on;
245inline bool Plot::isDrawHorizontalFineGrid()
const {
246 return (_drawhorizontalfinegrid);
249inline void Plot::setDrawVerticalFineGrid(
bool on =
true) {
250 _drawverticalfinegrid = on;
253inline bool Plot::isDrawVerticalFineGrid()
const {
254 return (_drawverticalfinegrid);
257inline bool Plot::isAdvance()
const {
return (_advance); }
259inline void Plot::setAdvance(
bool on =
true) { _advance = on; }
261inline void Plot::setFontSize(
double fontsize) { _fontsize = fontsize; }
263inline const double &Plot::getFontSize()
const {
return (_fontsize); }
265inline void Plot::setMajorTickLength(
double length) {
266 _majorticklength = length;
269inline const double &Plot::getMajorTickLength()
const {
270 return (_majorticklength);
273inline void Plot::setMinorTickLength(
double length) {
274 _minorticklength = length;
277inline const double &Plot::getMinorTickLength()
const {
278 return (_minorticklength);
281inline std::vector<Axis> &Plot::getXAxis() {
return (_xaxis); }
283inline std::vector<Axis> &Plot::getYAxis() {
return (_yaxis); }
285inline std::vector<Axis> &Plot::getZAxis() {
return (_zaxis); }