LibrePCB Developers Documentation
Loading...
Searching...
No Matches
board3dtab.h
Go to the documentation of this file.
1/*
2 * LibrePCB - Professional EDA for everyone!
3 * Copyright (C) 2013 LibrePCB Developers, see AUTHORS.md for contributors.
4 * https://librepcb.org/
5 *
6 * This program is free software: you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation, either version 3 of the License, or
9 * (at your option) any later version.
10 *
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with this program. If not, see <http://www.gnu.org/licenses/>.
18 */
19
20#ifndef LIBREPCB_EDITOR_BOARD3DTAB_H
21#define LIBREPCB_EDITOR_BOARD3DTAB_H
22
23/*******************************************************************************
24 * Includes
25 ******************************************************************************/
26#include "../../3d/openglobject.h"
27#include "windowtab.h"
28
29#include <QtCore>
30
31/*******************************************************************************
32 * Namespace / Forward Declarations
33 ******************************************************************************/
34namespace librepcb {
35
36class Board;
37class Project;
38
39namespace editor {
40
41class BoardEditor;
42class GuiApplication;
43class OpenGlSceneBuilder;
44class ProjectEditor;
45class SlintOpenGlView;
46struct OpenGlProjection;
47
48/*******************************************************************************
49 * Class Board3dTab
50 ******************************************************************************/
51
55class Board3dTab final : public WindowTab {
56 Q_OBJECT
57
58public:
59 // Signals
61
62 // Constructors / Destructor
63 Board3dTab() = delete;
64 Board3dTab(const Board3dTab& other) = delete;
65 explicit Board3dTab(GuiApplication& app, BoardEditor& editor,
66 QObject* parent = nullptr) noexcept;
67 ~Board3dTab() noexcept;
68
69 // General Methods
70 int getProjectIndex() const noexcept;
71 int getProjectObjectIndex() const noexcept;
72 ui::TabData getUiData() const noexcept override;
73 ui::Board3dTabData getDerivedUiData() const noexcept;
74 void setDerivedUiData(const ui::Board3dTabData& data) noexcept;
75 void activate() noexcept override;
76 void deactivate() noexcept override;
77 void trigger(ui::TabAction a) noexcept override;
78 slint::Image renderScene(float width, float height,
79 int scene) noexcept override;
81 const QPointF& pos, slint::private_api::PointerEvent e) noexcept override;
83 const QPointF& pos,
84 slint::private_api::PointerScrollEvent e) noexcept override;
85
86 // Operator Overloadings
87 Board3dTab& operator=(const Board3dTab& rhs) = delete;
88
89private:
90 void scheduleSceneRebuild() noexcept;
91 void sceneRebuildTimerTimeout() noexcept;
92 void applyTheme() noexcept;
93 void requestRepaint() noexcept;
94
95 // References
100
101 // State
103 QHash<OpenGlObject::Type, float> mAlpha;
107
110 std::unique_ptr<QTimer> mSceneRebuildTimer;
111};
112
113/*******************************************************************************
114 * End of File
115 ******************************************************************************/
116
117} // namespace editor
118} // namespace librepcb
119
120#endif
The Board class represents a PCB of a project and is always part of a circuit.
Definition board.h:74
The Image class.
Definition image.h:49
The Project class represents a whole (opened) project with all its content.
Definition project.h:71
The Signal class is used to emit signals on non-QObject derived classes.
Definition signalslot.h:65
The Board3dTab class.
Definition board3dtab.h:55
slint::Image renderScene(float width, float height, int scene) noexcept override
Definition board3dtab.cpp:270
void sceneRebuildTimerTimeout() noexcept
Definition board3dtab.cpp:297
std::shared_ptr< SlintOpenGlView > mView
Definition board3dtab.h:108
void applyTheme() noexcept
Definition board3dtab.cpp:322
qint64 mTimestampOfLastSceneRebuild
Definition board3dtab.h:104
ui::Board3dTabData getDerivedUiData() const noexcept
Definition board3dtab.cpp:135
std::unique_ptr< OpenGlProjection > mProjection
Definition board3dtab.h:102
int mFrameIndex
Definition board3dtab.h:106
QHash< OpenGlObject::Type, float > mAlpha
Definition board3dtab.h:103
std::shared_ptr< OpenGlSceneBuilder > mSceneBuilder
Definition board3dtab.h:109
bool processSceneScrolled(const QPointF &pos, slint::private_api::PointerScrollEvent e) noexcept override
Definition board3dtab.cpp:284
Signal< Board3dTab > onDerivedUiDataChanged
Definition board3dtab.h:60
ProjectEditor & mProjectEditor
Definition board3dtab.h:96
void requestRepaint() noexcept
Definition board3dtab.cpp:333
bool processScenePointerEvent(const QPointF &pos, slint::private_api::PointerEvent e) noexcept override
Definition board3dtab.cpp:279
Board & mBoard
Definition board3dtab.h:99
Board3dTab(const Board3dTab &other)=delete
Project & mProject
Definition board3dtab.h:97
QStringList mSceneBuilderErrors
Definition board3dtab.h:105
int getProjectObjectIndex() const noexcept
Definition board3dtab.cpp:110
BoardEditor & mBoardEditor
Definition board3dtab.h:98
void scheduleSceneRebuild() noexcept
Definition board3dtab.cpp:293
void trigger(ui::TabAction a) noexcept override
Definition board3dtab.cpp:233
void setDerivedUiData(const ui::Board3dTabData &data) noexcept
Definition board3dtab.cpp:164
void deactivate() noexcept override
Definition board3dtab.cpp:216
ui::TabData getUiData() const noexcept override
Definition board3dtab.cpp:114
int getProjectIndex() const noexcept
Definition board3dtab.cpp:106
std::unique_ptr< QTimer > mSceneRebuildTimer
Definition board3dtab.h:110
void activate() noexcept override
Definition board3dtab.cpp:179
The BoardEditor class.
Definition boardeditor.h:58
The GuiApplication class.
Definition guiapplication.h:75
Represents one 3D object in an OpenGL 3D model.
Definition openglobject.h:43
Asynchronously generates a 3D board scene for OpenGL rendering.
Definition openglscenebuilder.h:50
The ProjectEditor class.
Definition projecteditor.h:64
The SlintOpenGlView class.
Definition slintopenglview.h:86
The WindowTab class.
Definition windowtab.h:52
Definition occmodel.cpp:77
Definition uuid.h:186
Definition slintopenglview.h:43