diff -r 4241d948af28 -r 38f6fad61bad src/ui/canvas.h --- a/src/ui/canvas.h Tue Jun 28 19:25:45 2022 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,66 +0,0 @@ -#pragma once -#include -#include -#include -#include "gl/partrenderer.h" -#include "gl/gridprogram.h" -#include "gl/axesprogram.h" -#include "gl/vertexprogram.h" - -class EditTools; - -class Canvas : public PartRenderer -{ - Q_OBJECT -public: - using OverpaintCallback = std::function; - Canvas( - Model* model, - EditTools* document, - DocumentManager* documents, - const ColorTable& colorTable, - QWidget* parent = nullptr); - void setOverpaintCallback(OverpaintCallback fn); - void drawWorldPoint(QPainter* painter, const glm::vec3& worldPoint) const; - void drawWorldPolyline(QPainter* painter, const std::vector& points); - void drawWorldPolygon(QPainter* painter, const std::vector& points); - Winding worldPolygonWinding(const std::vector& points) const; - const std::optional& getWorldPosition() const; - const QSet selectedObjects() const; - const glm::mat4& getGridMatrix() const; - void closeShape(); - glm::vec3 cameraVector() const; - std::optional worldPosition; - DrawState* drawState = nullptr; -public Q_SLOTS: - void handleSelectionChange(const QSet& selectedIds, const QSet& deselectedIds); - void rebuildVertices(VertexMap* vertexMap); - void setGridMatrix(const glm::mat4 &newMatrix); -protected: - void mouseMoveEvent(QMouseEvent* event) override; - void mousePressEvent(QMouseEvent* event) override; - void mouseReleaseEvent(QMouseEvent* event) override; - void initializeGL() override; - void paintGL() override; -Q_SIGNALS: - void newStatusText(const QString& newStatusText); - void mouseClick(QMouseEvent* event); - void mouseMove(QMouseEvent* event); -private: - bool isGridPerpendicularToScreen(float threshold) const; - QVector convertWorldPointsToScreenPoints(const std::vector& worldPoints) const; - Q_SLOT void updateCanvasRenderPreferences(); - void renderAxesLabels(QPainter& painter); - std::optional gridProgram; - std::optional axesProgram; - std::optional vertexProgram; - glm::mat4 gridMatrix; - Plane gridPlane; - int totalMouseMove = 0; - bool isDark = true; - QSet selection; - OverpaintCallback overpaintCallback = nullptr; - EditTools* document; -}; - -void adjustGridToView(Canvas* canvas);