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 requestRepaint() noexcept;
93
94 // References
99
100 // State
102 QHash<OpenGlObject::Type, float> mAlpha;
106
109 std::unique_ptr<QTimer> mSceneRebuildTimer;
110};
111
112/*******************************************************************************
113 * End of File
114 ******************************************************************************/
115
116} // namespace editor
117} // namespace librepcb
118
119#endif
The Board class represents a PCB of a project and is always part of a circuit.
Definition board.h:73
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:236
void sceneRebuildTimerTimeout() noexcept
Definition board3dtab.cpp:263
std::shared_ptr< SlintOpenGlView > mView
Definition board3dtab.h:107
qint64 mTimestampOfLastSceneRebuild
Definition board3dtab.h:103
ui::Board3dTabData getDerivedUiData() const noexcept
Definition board3dtab.cpp:127
std::unique_ptr< OpenGlProjection > mProjection
Definition board3dtab.h:101
int mFrameIndex
Definition board3dtab.h:105
QHash< OpenGlObject::Type, float > mAlpha
Definition board3dtab.h:102
std::shared_ptr< OpenGlSceneBuilder > mSceneBuilder
Definition board3dtab.h:108
bool processSceneScrolled(const QPointF &pos, slint::private_api::PointerScrollEvent e) noexcept override
Definition board3dtab.cpp:250
Signal< Board3dTab > onDerivedUiDataChanged
Definition board3dtab.h:60
ProjectEditor & mProjectEditor
Definition board3dtab.h:95
void requestRepaint() noexcept
Definition board3dtab.cpp:288
bool processScenePointerEvent(const QPointF &pos, slint::private_api::PointerEvent e) noexcept override
Definition board3dtab.cpp:245
Board & mBoard
Definition board3dtab.h:98
Board3dTab(const Board3dTab &other)=delete
Project & mProject
Definition board3dtab.h:96
QStringList mSceneBuilderErrors
Definition board3dtab.h:104
int getProjectObjectIndex() const noexcept
Definition board3dtab.cpp:102
BoardEditor & mBoardEditor
Definition board3dtab.h:97
void scheduleSceneRebuild() noexcept
Definition board3dtab.cpp:259
void trigger(ui::TabAction a) noexcept override
Definition board3dtab.cpp:207
void setDerivedUiData(const ui::Board3dTabData &data) noexcept
Definition board3dtab.cpp:150
void deactivate() noexcept override
Definition board3dtab.cpp:196
ui::TabData getUiData() const noexcept override
Definition board3dtab.cpp:106
int getProjectIndex() const noexcept
Definition board3dtab.cpp:98
std::unique_ptr< QTimer > mSceneRebuildTimer
Definition board3dtab.h:109
void activate() noexcept override
Definition board3dtab.cpp:165
The BoardEditor class.
Definition boardeditor.h:58
The GuiApplication class.
Definition guiapplication.h:61
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:63
The SlintOpenGlView class.
Definition slintopenglview.h:83
The WindowTab class.
Definition windowtab.h:51
Definition occmodel.cpp:77
Definition uuid.h:186
Definition slintopenglview.h:43