🛰️航天仿真算法库 SpaceAST 0.0.1
载入中...
搜索中...
未找到
AggVisitor.hpp
1#pragma once
2
3#if defined(AST_WITH_MATPLOT) && defined(AST_WITH_AGG)
4
5A_SUPPRESS_WARNINGS_BEGIN
6#include <matplot/util/visitor.h>
7A_SUPPRESS_WARNINGS_END
8
9#include "AggRenderer.hpp"
10
11AST_NAMESPACE_BEGIN
12
13
15class AggVisitor : public matplot::visitor {
16public:
17 AggVisitor(AggRenderer& renderer, double fig_w, double fig_h);
18
19 AggVisitor(const AggVisitor&) = delete;
20 AggVisitor& operator=(const AggVisitor&) = delete;
21
22 void setAxes(const matplot::axes_type& axes);
23
25 void drawAxes();
26
27 // ---- visit 重载 ----
28 void visit(class matplot::line& l) override;
29
30 // 以下暂为空实现
31 void visit(class matplot::histogram&) override {}
32 void visit(class matplot::function_line&) override {}
33 void visit(class matplot::stair&) override {}
34 void visit(class matplot::string_function&) override {}
35 void visit(class matplot::bars&) override {}
36 void visit(class matplot::error_bar&) override {}
37 void visit(class matplot::filled_area&) override {}
38 void visit(class matplot::surface&) override {}
39 void visit(class matplot::matrix&) override {}
40 void visit(class matplot::vectors&) override {}
41 void visit(class matplot::network&) override {}
42 void visit(class matplot::parallel_lines&) override {}
43 void visit(class matplot::labels&) override {}
44 void visit(class matplot::box_chart&) override {}
45 void visit(class matplot::circles&) override {}
46 void visit(class matplot::contours&) override {}
47
48private:
50 agg::trans_affine makeTransform(double xmin, double xmax, double ymin, double ymax) const;
51 const agg::trans_affine& getTransform() const{return trans_;}
52
53 AggRenderer& renderer_;
54 double fig_w_{}, fig_h_{};
55
56 const matplot::axes_type* axes_{nullptr};
57 double xmin_{0.0}, xmax_{1.0}, ymin_{0.0}, ymax_{1.0};
58 agg::trans_affine trans_{};
59};
60
61AST_NAMESPACE_END
62
63#endif // AST_WITH_AGG && AST_WITH_MATPLOT