diff -r 8e1fe64ce4e3 -r 34c6e7bc4ee1 src/main.cpp --- a/src/main.cpp Sun Jun 12 20:47:04 2022 +0300 +++ b/src/main.cpp Sun Jun 12 23:59:37 2022 +0300 @@ -7,7 +7,8 @@ #include "mainwindow.h" #include "ui_mainwindow.h" #include "version.h" -#include "ui/canvas.h" +#include "gl/axesprogram.h" +#include "gl/partrenderer.h" #include "document.h" #include "settingseditor/settingseditor.h" #include "widgets/colorselectdialog.h" @@ -31,6 +32,19 @@ } }; +class ModelData : public QObject +{ + Q_OBJECT +public: + ModelData(QObject* parent) : QObject {parent} {} + std::unique_ptr canvas; + std::unique_ptr itemSelectionModel; + std::unique_ptr tools; + std::unique_ptr axesLayer; + Model* model; +}; +#include "main.moc" + static void doQtRegistrations() { QCoreApplication::setApplicationName(::appName); @@ -51,18 +65,6 @@ } }; -class ModelData : public QObject -{ - Q_OBJECT -public: - ModelData(QObject* parent) : QObject {parent} {} - std::unique_ptr canvas; - std::unique_ptr itemSelectionModel; - std::unique_ptr tools; - Model* model; -}; -#include "main.moc" - static constexpr MemberData renderStyleButtons[] = { { offsetof(Ui_MainWindow, actionRenderStyleNormal), gl::RenderStyle::Normal }, { offsetof(Ui_MainWindow, actionRenderStyleBfc), gl::RenderStyle::BfcRedGreen }, @@ -236,6 +238,7 @@ forModel(documents, [&renderPreferences](const void*, const ModelData* data){ if (data->canvas != nullptr) { data->canvas->setRenderPreferences(*renderPreferences); + data->canvas->setLayerEnabled(data->axesLayer.get(), renderPreferences->drawAxes); } }); for (auto data : ::renderStyleButtons) { @@ -391,13 +394,18 @@ if (model != nullptr) { ModelData* data = new ModelData(&documents); data->tools = std::make_unique(model, colorTable); - data->canvas = std::make_unique(model, data->tools.get(), &documents, colorTable); + data->canvas = std::make_unique(model, &documents, colorTable); data->itemSelectionModel = std::make_unique(model); + data->axesLayer = std::make_unique(); data->model = model; + data->canvas->addRenderLayer(data->axesLayer.get()); + data->canvas->setLayerEnabled(data->axesLayer.get(), settings.drawAxes()); + documents.setModelPayload(modelId, data); QObject::connect( data->tools.get(), &EditTools::modelAction, std::bind(executeAction, model, std::placeholders::_1)); +#if 0 QObject::connect(data->itemSelectionModel.get(), &QItemSelectionModel::selectionChanged, [modelId, &documents]( const QItemSelection& selected, @@ -415,6 +423,7 @@ data->canvas->handleSelectionChange(resolve(selected), resolve(deselected)); } }); +#endif data->canvas->setRenderPreferences(renderPreferences); QObject::connect( data->tools.get(), @@ -451,11 +460,13 @@ } }); QObject::connect(ui.actionQuit, &QAction::triggered, &mainWindow, &QMainWindow::close); +#if 0 QObject::connect(ui.actionAdjustGridToView, &QAction::triggered, [&]{ if (ModelData* data = currentModelData(&ui, &documents)) { adjustGridToView(data->canvas.get()); } }); +#endif QObject::connect(ui.actionClose, &QAction::triggered, [&ui, &documents]{ if (ModelData* data = currentModelData(&ui, &documents)) { // TODO