v2.0.0
Loading...
Searching...
No Matches
multiviewlayout.h
Go to the documentation of this file.
1//=============================================================================================================
19
20#ifndef MULTIVIEWLAYOUT_H
21#define MULTIVIEWLAYOUT_H
22
23//=============================================================================================================
24// INCLUDES
25//=============================================================================================================
26
27#include "../disp3D_global.h"
28
29#include <QRect>
30#include <QSize>
31#include <QPoint>
32#include <QVector>
33#include <Qt>
34
35//=============================================================================================================
45
46//=============================================================================================================
64{
65public:
66 //=========================================================================================================
70 MultiViewLayout() = default;
71
72 // ── Split fractions ────────────────────────────────────────────────
73
74 float splitX() const { return m_splitX; }
75 float splitY() const { return m_splitY; }
76 void setSplitX(float x) { m_splitX = clampSplit(x); }
77 void setSplitY(float y) { m_splitY = clampSplit(y); }
78 void resetSplits() { m_splitX = 0.5f; m_splitY = 0.5f; }
79
80 // ── Tolerance / sizing constants ───────────────────────────────────
81
82 int hitTolerancePx() const { return m_hitTolerancePx; }
83 int minPanePx() const { return m_minPanePx; }
84 int separatorLinePx() const { return m_separatorLinePx; }
85
86 //=========================================================================================================
95 QRect slotRect(int slot, int numEnabled, const QSize &outputSize) const;
96
97 //=========================================================================================================
106 SplitterHit hitTestSplitter(const QPoint &pos,
107 int numEnabled,
108 const QSize &outputSize) const;
109
110 //=========================================================================================================
117 static Qt::CursorShape cursorForHit(SplitterHit hit);
118
119 //=========================================================================================================
129 int viewportIndexAt(const QPoint &pos,
130 const QVector<int> &enabledViewports,
131 const QSize &outputSize) const;
132
133 //=========================================================================================================
144 QRect insetForSeparator(const QRect &paneRect,
145 int slot,
146 int numEnabled) const;
147
148 //=========================================================================================================
157 void separatorGeometries(int numEnabled,
158 const QSize &widgetSize,
159 QRect &verticalRect,
160 QRect &horizontalRect) const;
161
162 //=========================================================================================================
170 void dragSplitter(const QPoint &pos,
171 SplitterHit activeSplitter,
172 const QSize &widgetSize);
173
174private:
175 static float clampSplit(float v) { return std::clamp(v, 0.15f, 0.85f); }
176
177 float m_splitX = 0.5f;
178 float m_splitY = 0.5f;
179 int m_hitTolerancePx = 6;
180 int m_minPanePx = 80;
181 int m_separatorLinePx = 2;
182};
183
184#endif // MULTIVIEWLAYOUT_H
SplitterHit
Library export/import macros and namespace marker for the disp3D library.
#define DISP3DSHARED_EXPORT
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