#ifndef GRIDPREVIEW_H #define GRIDPREVIEW_H #include #include #include #include #include "line.h" class GridPreview : public QWidget { Q_OBJECT int width = 5, height = 5; QVector lines {}; QMap colorMap; const QString tableTemplate = "return {\n width = %1,\n height = %2,\n lines = {\n%3\n }\n}"; bool mouseCaptured = false; public: explicit GridPreview(QWidget *parent = nullptr); void setSize(int newWidth, int newHeight); void addLine(Line &line); void removeLine(int index); void setLineColor(int index, QString color); void setLineStartPoint(int index, int x, int y); void setLineEndPoint(int index, int x, int y); int getWidth(); int getHeight(); const Line& getLine(int index); const QString toLuaTable(); void paintEvent(QPaintEvent* event); const QColor colorFromString(const QString color); void mouseMoveEvent(QMouseEvent* event); void mousePressEvent(QMouseEvent* event); void mouseReleaseEvent(QMouseEvent* event); const QPoint localMousePosition(QMouseEvent* event); const QPoint snapToGrid(int x, int y); signals: void updatedContents(); }; #endif // GRIDPREVIEW_H