-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathh2canvasdelegateliftedgraph.h
More file actions
98 lines (77 loc) · 3.79 KB
/
h2canvasdelegateliftedgraph.h
File metadata and controls
98 lines (77 loc) · 3.79 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
#ifndef H2LIFTEDGRAPHCANVASDELEGATE_H
#define H2LIFTEDGRAPHCANVASDELEGATE_H
#include "tools.h"
#include "canvasdelegate.h"
#include "h2canvasdelegate.h"
template<typename Point, typename Map> class LiftedGraphFunctionTriangulated;
class H2CanvasDelegateLiftedGraph : public H2CanvasDelegate
{
friend class Canvas;
friend class ActionHandler;
friend class FenchelNielsenUser;
public:
virtual DelegateType getDelegateType() const override {return DelegateType::H2DELEGATE_GRAPH;}
virtual ~H2CanvasDelegateLiftedGraph() {}
private:
H2CanvasDelegateLiftedGraph(uint sizeX, uint sizeY, bool leftCanvas = false, bool rightCanvas = false, ActionHandler *handler = nullptr);
void initializeColors(const QColor &graphColor);
virtual void redrawBack() override;
virtual void redrawTop() override;
virtual void resetView() override;
void redrawGraph();
void redrawNonFilledGraph();
void redrawFilledGraph();
void redrawFilledGraph2Colors();
virtual void mouseMove(int x, int y, Qt::MouseButton button, Qt::MouseButtons buttons) override;
virtual void enter() override;
virtual void leave() override;
void setIsGraphEmpty(bool isGraphEmpty);
void setIsRhoEmpty(bool isRhoEmpty);
void setRhoPointer(GroupRepresentation<H2Isometry> *rho);
void setGraphPointer(LiftedGraphFunctionTriangulated<H2Point, H2Isometry> *graph);
void updateGraph(bool refreshSidesTranslates);
void updateNonFilledGraph(bool refreshSidesTranslates);
void updateFilledGraph(bool refreshSidesTranslates);
void updateDomainTrianglesAreas();
void updateTriangleWeights();
void updateTrianglesColors();
void updateTrianglesTranslatesColors();
void refreshRho();
void setFilledTriangles(bool filledTriangles);
void setGraphColor(const QColor &color);
void setShowTranslates(bool showTranslatesAroundVertex, bool showTranslatesAroundVertices, bool showTranslatesAroundVerticesStar);
void getGraphTriangleIndicesHighlighted(bool &highlighted, uint &index1, uint &index2, uint &index3) const;
void resetHighlighted();
void decideHighlighting(const H2Point &pointUnderMouse);
void decideHighlightingTriangle(bool highlighted, bool& update, uint triangleGraphIndex1, uint triangleGraphIndex2, uint triangleGraphIndex3);
static int rescaleReals(int X0, const double &x);
static int weightedSum(int x0, int x1, double t);
bool isTriangleHighlighted;
uint triangleGraphIndex1, triangleGraphIndex2, triangleGraphIndex3;
H2Triangle triangleHighlighted;
QColor highlightColor;
bool showTranslatesAroundVertex, showTranslatesAroundVertices, showTranslatesAroundVerticesStar;
bool filledTriangles;
GroupRepresentation<H2Isometry> *rho;
bool isRhoEmpty;
std::vector<H2Geodesic> rhoAxes;
std::vector<H2Isometry> translationsAroundVertex;
std::vector<H2Isometry> translationsAroundVertices;
LiftedGraphFunctionTriangulated<H2Point, H2Isometry> *graph;
bool isGraphEmpty;
std::vector<H2GeodesicArc> graphArcs;
std::vector<H2GeodesicArc> graphSides;
std::vector<H2GeodesicArc> graphSidesTranslates;
std::vector<H2GeodesicArc> graphLargeSides;
std::vector<H2GeodesicArc> graphLargeSidesTranslates;
std::vector<H2GeodesicArc> graphArcsTranslatesAroundVertex;
std::vector<H2GeodesicArc> graphArcsTranslatesAroundVertices;
QColor graphColor, graphTranslatesColor, graphSidesTranslatesColor;
std::vector<H2Triangle> graphTriangles;
std::vector<H2Triangle> graphTrianglesTranslatesAroundVertex;
std::vector<H2Triangle> graphTrianglesTranslatesAroundVertices;
std::shared_ptr< std::vector<double> > domainTrianglesAreas;
std::vector<double> weights;
std::vector<QColor> graphTrianglesColors, graphTrianglesTranslatesColors;
};
#endif // H2LIFTEDGRAPHCANVASDELEGATE_H