v2.0.0
Loading...
Searching...
No Matches
MultiViewLayout Class Reference

Multi-view geometry computations. More...

#include <multiviewlayout.h>

Public Member Functions

 MultiViewLayout ()=default
float splitX () const
float splitY () const
void setSplitX (float x)
void setSplitY (float y)
void resetSplits ()
int hitTolerancePx () const
int minPanePx () const
int separatorLinePx () const
QRect slotRect (int slot, int numEnabled, const QSize &outputSize) const
SplitterHit hitTestSplitter (const QPoint &pos, int numEnabled, const QSize &outputSize) const
int viewportIndexAt (const QPoint &pos, const QVector< int > &enabledViewports, const QSize &outputSize) const
QRect insetForSeparator (const QRect &paneRect, int slot, int numEnabled) const
void separatorGeometries (int numEnabled, const QSize &widgetSize, QRect &verticalRect, QRect &horizontalRect) const
void dragSplitter (const QPoint &pos, SplitterHit activeSplitter, const QSize &widgetSize)

Static Public Member Functions

static Qt::CursorShape cursorForHit (SplitterHit hit)

Detailed Description

Multi-view geometry computations.

Pure-geometry class for multi-view viewport layout.

This class has no widget dependencies — it works with sizes, rectangles, and fractional split positions. The hosting widget queries this class for rectangles and hit-test results, and updates separator widgets accordingly.

Layout rules:

  • 1 pane → full area
  • 2 panes → side-by-side, split at m_splitX
  • 3 panes → full-width top row + 2 bottom panes split at m_splitX
  • 4 panes → 2×2 grid split at (m_splitX, m_splitY)

Definition at line 78 of file multiviewlayout.h.

Constructor & Destructor Documentation

◆ MultiViewLayout()

MultiViewLayout::MultiViewLayout ( )
default

Constructor.

Member Function Documentation

◆ cursorForHit()

Qt::CursorShape MultiViewLayout::cursorForHit ( SplitterHit hit)
static

Return the Qt::CursorShape appropriate for a splitter hit.

Parameters
[in]hitHit-test result.
Returns
Cursor shape (ArrowCursor if None).

Definition at line 149 of file multiviewlayout.cpp.

◆ dragSplitter()

void MultiViewLayout::dragSplitter ( const QPoint & pos,
SplitterHit activeSplitter,
const QSize & widgetSize )

Update split fractions from a mouse drag position.

Parameters
[in]posCurrent cursor position.
[in]activeSplitterWhich splitter is being dragged.
[in]widgetSizeWidget size in pixels.

Definition at line 269 of file multiviewlayout.cpp.

◆ hitTestSplitter()

SplitterHit MultiViewLayout::hitTestSplitter ( const QPoint & pos,
int numEnabled,
const QSize & outputSize ) const

Hit-test the splitter bars.

Parameters
[in]posCursor position (widget coords).
[in]numEnabledTotal number of enabled panes.
[in]outputSizeTotal output pixel size.
Returns
Which splitter(s) are under the cursor.

Definition at line 104 of file multiviewlayout.cpp.

◆ hitTolerancePx()

int MultiViewLayout::hitTolerancePx ( ) const
inline

Definition at line 97 of file multiviewlayout.h.

◆ insetForSeparator()

QRect MultiViewLayout::insetForSeparator ( const QRect & paneRect,
int slot,
int numEnabled ) const

Apply a separator-pixel inset to a pane rect so adjacent panes don't overlap the separator bar. This is used in the render loop to trim viewports.

Parameters
[in]paneRectOriginal pane rectangle.
[in]slotSlot index (0-based).
[in]numEnabledTotal enabled count.
Returns
Inset rectangle.

Definition at line 176 of file multiviewlayout.cpp.

◆ minPanePx()

int MultiViewLayout::minPanePx ( ) const
inline

Definition at line 98 of file multiviewlayout.h.

◆ resetSplits()

void MultiViewLayout::resetSplits ( )
inline

Definition at line 93 of file multiviewlayout.h.

◆ separatorGeometries()

void MultiViewLayout::separatorGeometries ( int numEnabled,
const QSize & widgetSize,
QRect & verticalRect,
QRect & horizontalRect ) const

Compute the separator widget geometries.

Parameters
[in]numEnabledNumber of enabled panes.
[in]widgetSizeWidget size in pixels.
[out]verticalRectGeometry for the vertical separator (empty if hidden).
[out]horizontalRectGeometry for the horizontal separator (empty if hidden).

Definition at line 218 of file multiviewlayout.cpp.

◆ separatorLinePx()

int MultiViewLayout::separatorLinePx ( ) const
inline

Definition at line 99 of file multiviewlayout.h.

◆ setSplitX()

void MultiViewLayout::setSplitX ( float x)
inline

Definition at line 91 of file multiviewlayout.h.

◆ setSplitY()

void MultiViewLayout::setSplitY ( float y)
inline

Definition at line 92 of file multiviewlayout.h.

◆ slotRect()

QRect MultiViewLayout::slotRect ( int slot,
int numEnabled,
const QSize & outputSize ) const

Compute the pixel rectangle for a layout slot.

Parameters
[in]slotSlot index (0-based among enabled viewports).
[in]numEnabledTotal number of enabled panes (1–4).
[in]outputSizeTotal output pixel size.
Returns
Pixel rectangle for the slot.

Definition at line 48 of file multiviewlayout.cpp.

◆ splitX()

float MultiViewLayout::splitX ( ) const
inline

Definition at line 89 of file multiviewlayout.h.

◆ splitY()

float MultiViewLayout::splitY ( ) const
inline

Definition at line 90 of file multiviewlayout.h.

◆ viewportIndexAt()

int MultiViewLayout::viewportIndexAt ( const QPoint & pos,
const QVector< int > & enabledViewports,
const QSize & outputSize ) const

Given a cursor position and output size, determine which viewport index the cursor is in.

Parameters
[in]posCursor position (widget coords).
[in]enabledViewportsOrdered list of enabled viewport indices.
[in]outputSizeTotal output pixel size.
Returns
Viewport index, or -1 if outside.

Definition at line 161 of file multiviewlayout.cpp.


The documentation for this class was generated from the following files: