6#include <phosphortiles_export.h>
59 Q_PROPERTY(QString name READ name CONSTANT)
60 Q_PROPERTY(QString description READ description CONSTANT)
61 Q_PROPERTY(
bool supportsMasterCount READ supportsMasterCount CONSTANT)
62 Q_PROPERTY(
bool supportsSplitRatio READ supportsSplitRatio CONSTANT)
91 m_appIdResolver = std::move(resolver);
100 if (m_appIdResolver) {
101 return m_appIdResolver;
103 return [](
const QString&) {
132 virtual QString
name()
const = 0;
250 virtual
bool centerLayout() const;
260 virtual
bool isScripted() const noexcept;
271 virtual
bool supportsMinSizes() const noexcept;
281 virtual
bool supportsMemory() const noexcept;
306 virtual
bool isUserScript() const noexcept;
319 virtual
bool supportsLifecycleHooks() const noexcept;
354 virtual
void onWindowRemoved(
TilingState* state,
int windowIndex);
366 virtual
bool supportsCustomParams() const noexcept;
376 virtual QVariantList customParamDefList() const;
387 virtual
bool hasCustomParam(const QString& name) const;
394 std::function<QString(const QString&)> m_appIdResolver;
399 QString m_registryId;
413 static QVector<
int> distributeEvenly(
int total,
int count);
422 static QRect innerRect(const QRect& screenGeometry,
int outerGap);
431 static QRect innerRect(const QRect& screenGeometry, const
EdgeGaps& gaps);
444 static QVector<
int> distributeWithGaps(
int total,
int count,
int gap);
460 static QVector<
int> distributeWithMinSizes(
int total,
int count,
int gap, const QVector<
int>& minDims);
466 static
int minWidthAt(const QVector<QSize>& minSizes,
int index);
472 static
int minHeightAt(const QVector<QSize>& minSizes,
int index);
486 static
void solveTwoPartMinSizes(
int contentDim,
int& firstDim,
int& secondDim,
int minFirst,
int minSecond);
499 static
void applyPerWindowMinSize(
int& width,
int& height, const QVector<QSize>& minSizes,
int index);
526 static
ThreeColumnWidths solveThreeColumnWidths(
int areaX,
int contentWidth,
int innerGap, qreal splitRatio,
527 int minLeftWidth,
int minCenterWidth,
int minRightWidth);
545 static
CumulativeMinDims computeAlternatingCumulativeMinDims(
int windowCount, const QVector<QSize>& minSizes,
554 static
void appendGracefulDegradation(QVector<QRect>& zones, const QRect& remaining,
int leftover,
int innerGap);
562 static qreal clampOrProportionalFallback(qreal ratio, qreal minFirstRatio, qreal maxFirstRatio,
int firstDim,
572 void configurationChanged();
Algorithm-layer constants for the autotile/tile primitives.
Abstract base class for tiling algorithms.
Definition TilingAlgorithm.h:56
void setAppIdResolver(std::function< QString(const QString &)> resolver)
Inject a resolver that maps an opaque instance id to its live app class.
Definition TilingAlgorithm.h:89
virtual bool supportsSplitRatio() const
Check if algorithm supports split ratio adjustment.
TilingAlgorithm(const TilingAlgorithm &)=delete
virtual int minimumWindows() const
Get minimum number of windows for meaningful tiling.
TilingAlgorithm(QObject *parent=nullptr)
~TilingAlgorithm() override=default
virtual QVector< QRect > calculateZones(const TilingParams ¶ms) const =0
Calculate zone geometries for N windows.
TilingAlgorithm & operator=(const TilingAlgorithm &)=delete
virtual qreal defaultSplitRatio() const
Get default split ratio for this algorithm.
QString registryId() const
The id this algorithm is registered under.
Definition TilingAlgorithm.h:117
void setRegistryId(const QString &id)
Registry-internal setter.
Definition TilingAlgorithm.h:123
virtual QString description() const =0
Description of the algorithm behavior.
virtual QString zoneNumberDisplay() const noexcept
How zone numbers should be displayed in previews.
virtual int defaultMaxWindows() const
Get default maximum number of windows for this algorithm.
virtual int masterZoneIndex() const
Get the index of the "master" zone (if applicable)
virtual bool producesOverlappingZones() const
Whether this algorithm intentionally produces overlapping zones.
virtual bool supportsMasterCount() const
Check if algorithm supports variable master count.
virtual QString name() const =0
Human-readable name of the algorithm.
std::function< QString(const QString &)> appIdResolver() const
Access the current resolver.
Definition TilingAlgorithm.h:98
Tracks tiling state for a single screen.
Definition TilingState.h:40
Definition AutotileEngine.h:71
Per-side edge gap values (resolved, non-negative pixel values)
Definition EdgeGaps.h:27
Result of precomputing cumulative min dimensions for alternating V/H splits.
Definition TilingAlgorithmHelpers.h:42
Result of solving three-column width distribution.
Definition TilingAlgorithmHelpers.h:22
Parameters for zone calculation.
Definition TilingParams.h:61