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