v2.0.0
Loading...
Searching...
No Matches
multiviewlayout.h
Go to the documentation of this file.
1//=============================================================================================================
34
35#ifndef MULTIVIEWLAYOUT_H
36#define MULTIVIEWLAYOUT_H
37
38//=============================================================================================================
39// INCLUDES
40//=============================================================================================================
41
43
44#include <QRect>
45#include <QSize>
46#include <QPoint>
47#include <QVector>
48#include <Qt>
49
50//=============================================================================================================
60
61//=============================================================================================================
79{
80public:
81 //=========================================================================================================
85 MultiViewLayout() = default;
86
87 // ── Split fractions ────────────────────────────────────────────────
88
89 float splitX() const { return m_splitX; }
90 float splitY() const { return m_splitY; }
91 void setSplitX(float x) { m_splitX = clampSplit(x); }
92 void setSplitY(float y) { m_splitY = clampSplit(y); }
93 void resetSplits() { m_splitX = 0.5f; m_splitY = 0.5f; }
94
95 // ── Tolerance / sizing constants ───────────────────────────────────
96
97 int hitTolerancePx() const { return m_hitTolerancePx; }
98 int minPanePx() const { return m_minPanePx; }
99 int separatorLinePx() const { return m_separatorLinePx; }
100
101 //=========================================================================================================
110 QRect slotRect(int slot, int numEnabled, const QSize &outputSize) const;
111
112 //=========================================================================================================
121 SplitterHit hitTestSplitter(const QPoint &pos,
122 int numEnabled,
123 const QSize &outputSize) const;
124
125 //=========================================================================================================
132 static Qt::CursorShape cursorForHit(SplitterHit hit);
133
134 //=========================================================================================================
144 int viewportIndexAt(const QPoint &pos,
145 const QVector<int> &enabledViewports,
146 const QSize &outputSize) const;
147
148 //=========================================================================================================
159 QRect insetForSeparator(const QRect &paneRect,
160 int slot,
161 int numEnabled) const;
162
163 //=========================================================================================================
172 void separatorGeometries(int numEnabled,
173 const QSize &widgetSize,
174 QRect &verticalRect,
175 QRect &horizontalRect) const;
176
177 //=========================================================================================================
185 void dragSplitter(const QPoint &pos,
186 SplitterHit activeSplitter,
187 const QSize &widgetSize);
188
189private:
190 static float clampSplit(float v) { return std::clamp(v, 0.15f, 0.85f); }
191
192 float m_splitX = 0.5f;
193 float m_splitY = 0.5f;
194 int m_hitTolerancePx = 6;
195 int m_minPanePx = 80;
196 int m_separatorLinePx = 2;
197};
198
199#endif // MULTIVIEWLAYOUT_H
disp3D_rhi library export/import macros.
#define DISP3DRHISHARED_EXPORT
SplitterHit
void setSplitX(float x)
int hitTolerancePx() const
float splitY() const
int separatorLinePx() const
int minPanePx() const
MultiViewLayout()=default
void setSplitY(float y)
float splitX() const