Chrysalis - Renderer
Loading...
Searching...
No Matches
ProjectRenderer.h
Go to the documentation of this file.
1#ifndef CHRYSALIS_PROJECTRENDERER_H
2#define CHRYSALIS_PROJECTRENDERER_H
3
4#include "Project.h"
5#include "CursorRenderer.h"
6#include "PatternRenderer.h"
7#include "CartesianRenderer.h"
9
10namespace Chrysalis {
12 public:
13 explicit ProjectRenderer(MainOpenGLProgram* program, CartesianRenderer* cartesianRenderer, CursorRenderer* cursorRenderer);
15
16 void initialize() const;
17 void addObserver(BaseRendererObserver* observer);
18
19 void scaleChanged(float scaleFactor, float zoomX, float zoomY);
20 void areaSizeChanged(float width, float height);
21 void areaOffsetChanged(float deltaX, float deltaY);
22 void cursorPositionChanged(float x, float y) const;
23 protected:
24 void useProject(const Project* project);
25
26 void render() const;
27 [[nodiscard]] bool prepareNextFrame() const;
28 private:
29 void updateProjectionMatrix();
30
31 bool isInitialized_ = false;
32
33 Area area_;
34 float scale_ = 10.f;
35
36 glm::mat4x4 projection_{};
37
39 MainOpenGLProgram* program_;
41 CursorRenderer* cursorRenderer_;
43 CartesianRenderer* cartesianRenderer_;
44 std::vector<std::unique_ptr<PatternRenderer>> patternRenderers_;
45 std::vector<BaseRendererObserver*> observers_;
46 };
47}
48
49#endif //CHRYSALIS_PROJECTRENDERER_H
Definition Area.h:5
Definition BaseRendererObserver.h:5
Definition CartesianRenderer.h:10
Definition CursorRenderer.h:9
Definition MainOpenGLProgram.h:7
void render() const
Definition ProjectRenderer.cpp:82
void addObserver(BaseRendererObserver *observer)
Definition ProjectRenderer.cpp:23
void initialize() const
Definition ProjectRenderer.cpp:17
void areaSizeChanged(float width, float height)
Definition ProjectRenderer.cpp:39
void useProject(const Project *project)
Definition ProjectRenderer.cpp:27
void cursorPositionChanged(float x, float y) const
Definition ProjectRenderer.cpp:60
bool prepareNextFrame() const
Definition ProjectRenderer.cpp:97
void areaOffsetChanged(float deltaX, float deltaY)
Definition ProjectRenderer.cpp:45
void scaleChanged(float scaleFactor, float zoomX, float zoomY)
Definition ProjectRenderer.cpp:51
~ProjectRenderer()
Definition ProjectRenderer.cpp:11
ProjectRenderer(MainOpenGLProgram *program, CartesianRenderer *cartesianRenderer, CursorRenderer *cursorRenderer)
Definition ProjectRenderer.cpp:7
Definition Area.h:4