4#ifndef QGRIDLAYOUTENGINE_P_H
5#define QGRIDLAYOUTENGINE_P_H
18#include <QtGui/private/qtguiglobal_p.h>
20#include <QtCore/qalgorithms.h>
21#include <QtCore/qbitarray.h>
22#include <QtCore/qlist.h>
23#include <QtCore/qmap.h>
24#include <QtCore/qpair.h>
25#include <QtCore/qsize.h>
26#include <QtCore/qrect.h>
27#include <QtCore/qdebug.h>
86 noexcept(std::is_nothrow_copy_constructible_v<T>)
98 noexcept(
std::is_nothrow_copy_constructible_v<T>)
99 {
return {m_data[1], m_data[0]}; }
116 if (q_state !=
User) {
121 inline T
value()
const {
return q_value; }
122 inline T
value(T defaultValue)
const {
return isUser() ? q_value : defaultValue; }
129 mutable State q_state;
143 : q_minimumSize(0), q_preferredSize(0), q_maximumSize(FLT_MAX),
144 q_minimumDescent(-1), q_minimumAscent(-1) {}
150#ifdef QGRIDLAYOUTENGINE_DEBUG
151 void dump(
int indent = 0)
const;
168 return q_minimumSize;
170 return q_preferredSize;
172 return q_maximumSize;
174 return q_minimumDescent;
176 return q_minimumAscent;
212#ifdef QGRIDLAYOUTENGINE_DEBUG
213 void dump(
int indent = 0)
const;
231#ifdef QGRIDLAYOUTENGINE_DEBUG
232 void dump(
int indent = 0)
const;
254 inline int lastRow()
const {
return firstRow() + rowSpan() - 1; }
255 inline int lastColumn()
const {
return firstColumn() + columnSpan() - 1; }
269 inline Qt::Alignment
alignment()
const {
return q_alignment; }
274 virtual bool isEmpty()
const {
return false; }
285 virtual QLayoutPolicy::ControlTypes controlTypes(
LayoutSide side)
const;
295 QSizeF effectiveMaxSize(
const QSizeF &constraint)
const;
297#ifdef QGRIDLAYOUTENGINE_DEBUG
298 void dump(
int indent = 0)
const;
302 QHVContainer<int> q_firstRows;
303 QHVContainer<int> q_rowSpans;
304 QHVContainer<int> q_stretches;
305 Qt::Alignment q_alignment;
312 QGridLayoutEngine(Qt::Alignment defaultAlignment = { },
bool snapToPixelGrid =
false);
320 int itemCount()
const;
326 void setSpacing(
qreal spacing, Qt::Orientations orientations);
340 bool uniformCellWidths()
const;
341 void setUniformCellWidths(
bool uniformCellWidths);
343 bool uniformCellHeights()
const;
344 void setUniformCellHeights(
bool uniformCellHeights);
357 const QList<QGridLayoutItem *> oldItems = q_items;
369 { insertOrRemoveRows(
row, +1, orientation); }
371 { insertOrRemoveRows(
row, -
count, orientation); }
382 bool ensureDynamicConstraint()
const;
383 bool hasDynamicConstraint()
const;
387 QLayoutPolicy::ControlTypes controlTypes(
LayoutSide side)
const;
391#ifdef QGRIDLAYOUTENGINE_DEBUG
392 void dump(
int indent = 0)
const;
396 static int grossRoundUp(
int n) {
return ((
n + 2) | 0x3) - 2; }
399 void regenerateGrid();
400 inline int internalGridRowCount()
const {
return grossRoundUp(rowCount()); }
401 inline int internalGridColumnCount()
const {
return grossRoundUp(columnCount()); }
405 const qreal *colPositions,
const qreal *colSizes,
408 void ensureEffectiveFirstAndLastRows()
const;
410 const qreal *colPositions,
const qreal *colSizes,
419 QList<QGridLayoutItem *> q_grid;
420 QHVContainer<QLayoutParameter<qreal>> q_defaultSpacings;
421 QHVContainer<QGridLayoutRowInfo> q_infos;
425 Qt::Alignment m_defaultAlignment;
426 unsigned m_snapToPixelGrid : 1;
427 unsigned m_uniformCellWidths : 1;
428 unsigned m_uniformCellHeights : 1;
431 mutable QHVContainer<int> q_cachedEffectiveFirstRows;
432 mutable QHVContainer<int> q_cachedEffectiveLastRows;
433 mutable quint8 q_cachedConstraintOrientation : 3;
436 mutable QHVContainer<QGridLayoutBox> q_totalBoxes;
439 CachedWithNoConstraint = -1
442 mutable QHVContainer<qreal> q_totalBoxCachedConstraints;
449 mutable QSizeF q_cachedSize;
450 mutable QList<qreal> q_xx;
451 mutable QList<qreal> q_yy;
452 mutable QList<qreal> q_widths;
453 mutable QList<qreal> q_heights;
454 mutable QList<qreal> q_descents;
const qreal & q_sizes(int which) const
qreal & q_sizes(int which)
QSizeF dynamicallyConstrainedSizeHint(Qt::SizeHint which, const QSizeF &constraint) const
QList< QGridLayoutItem * > q_items
void insertRow(int row, Qt::Orientation orientation=Qt::Vertical)
void removeRows(int row, int count, Qt::Orientation orientation)
virtual bool isEmpty() const
virtual ~QGridLayoutItem()
Qt::Alignment alignment() const
virtual bool hasDynamicConstraint() const
virtual QLayoutPolicy::Policy sizePolicy(Qt::Orientation orientation) const =0
virtual Qt::Orientation dynamicConstraintOrientation() const
virtual QString toString() const
virtual QSizeF sizeHint(Qt::SizeHint which, const QSizeF &constraint) const =0
virtual void setGeometry(const QRectF &rect)=0
void setAlignment(Qt::Alignment alignment)
QGridLayoutMultiCellData()
QList< QGridLayoutBox > boxes
QGridLayoutBox totalBox(int start, int end) const
void stealBox(int start, int end, int which, qreal *positions, qreal *sizes)
void calculateGeometries(int start, int end, qreal targetSize, qreal *positions, qreal *sizes, qreal *descents, const QGridLayoutBox &totalBox, const QGridLayoutRowInfo &rowInfo, bool snapToPixelGrid)
MultiCellMap multiCellMap
void distributeMultiCells(const QGridLayoutRowInfo &rowInfo, bool snapToPixelGrid)
QList< QLayoutParameter< qreal > > spacings
QList< QGridLayoutBox > boxes
QList< Qt::Alignment > alignments
QList< QStretchParameter > stretches
void insertOrRemoveRows(int row, int delta)
constexpr T & operator[](Qt::Orientation o) noexcept
constexpr T & other(Qt::Orientation o) noexcept
constexpr const T & operator[](Qt::Orientation o) const noexcept
constexpr void transpose() noexcept
constexpr QHVContainer transposed() const noexcept(std::is_nothrow_copy_constructible_v< T >)
constexpr const T & other(Qt::Orientation o) const noexcept
constexpr QHVContainer(const T &h, const T &v) noexcept(std::is_nothrow_copy_constructible_v< T >)
QLayoutParameter(T value, State state=Default)
void setUserValue(T value)
T value(T defaultValue) const
void setCachedValue(T value) const
\inmodule QtCore\reentrant
\macro QT_RESTRICTED_CAST_FROM_ASCII
The QStyle class is an abstract base class that encapsulates the look and feel of a GUI.
QMap< QString, QString > map
[6]
qDeleteAll(list.begin(), list.end())
Combined button and popup list for selecting options.
static const QCssKnownValue positions[NumKnownPositionModes - 1]
EGLOutputLayerEXT EGLint EGLAttrib value
[5]
bool operator!=(const QGridLayoutBox &box1, const QGridLayoutBox &box2)
QMap< QPair< int, int >, QGridLayoutMultiCellData > MultiCellMap
bool operator==(const QGridLayoutBox &box1, const QGridLayoutBox &box2)
GLsizei const GLfloat * v
[13]
GLint GLint GLint GLint GLint x
[0]
GLint GLsizei GLsizei height
GLenum GLuint GLintptr GLsizeiptr size
[1]
GLenum GLenum GLsizei count
GLint GLsizei GLboolean transpose
GLsizei const GLint * box
GLfloat GLfloat GLfloat GLfloat h
GLenum GLenum GLsizei void GLsizei void * column
GLuint GLsizei const GLuint const GLintptr const GLsizeiptr * sizes
GLenum GLenum GLsizei void * row
static void normalize(double &x, double &y)
static void add(QPainterPath &path, const QWingedEdge &list, int edge, QPathEdge::Traversal traversal)
static void layoutItem(QQuickItem *item, qreal y, qreal width)
static QString dump(const QByteArray &)
QT_BEGIN_NAMESPACE constexpr void qSwap(T &value1, T &value2) noexcept(std::is_nothrow_swappable_v< T >)
#define Q_DECLARE_TYPEINFO(TYPE, FLAGS)