Phosphor
Qt6 / Wayland library suite for window-management tools
 
Loading...
Searching...
No Matches
TilingParams.h
Go to the documentation of this file.
1// SPDX-FileCopyrightText: 2026 fuddlesworth
2// SPDX-License-Identifier: LGPL-2.1-or-later
3
4#pragma once
5
6#include <phosphortiles_export.h>
7
8// EdgeGaps is the per-side gap shape shared between manual layout and tiling;
9// it lives in libs/phosphor-layout-api so neither side has to depend on the
10// other's headers.
12
13#include <QRect>
14#include <QSize>
15#include <QString>
16#include <QVariantMap>
17#include <QVector>
18
19#include <functional>
20
21namespace PhosphorTiles {
22
23// Shorthand for the shared shape — re-declared here (rather than relying on a
24// transitive include of core/constants.h) so this header is self-contained.
26
27class TilingState;
28
36{
37 QString appId;
38 bool focused = false;
39};
40
48{
49 QString id;
50 bool portrait = false;
51 qreal aspectRatio = 0.0;
52};
53
61{
62 int windowCount = 0;
67 const TilingState* state = nullptr;
68 int innerGap = 0;
70 QVector<QSize> minSizes = {};
71
72 // ── Enriched context (v2) ──────────────────────────────────────────
73 QVector<WindowInfo> windowInfos;
74 int focusedIndex = -1;
76 QVariantMap customParams;
77
79 static TilingParams forPreview(int count, const QRect& rect, const TilingState* state)
80 {
82 p.windowCount = count;
83 p.screenGeometry = rect;
84 p.state = state;
85 return p;
86 }
87};
88
110PHOSPHORTILES_EXPORT QVector<WindowInfo> buildWindowInfos(const TilingState* state, int windowCount,
111 const std::function<QString(const QString&)>& appIdResolver,
112 int& focusedIndex);
113
114} // namespace PhosphorTiles
Tracks tiling state for a single screen.
Definition TilingState.h:40
Definition AutotileEngine.h:71
PHOSPHORTILES_EXPORT QVector< WindowInfo > buildWindowInfos(const TilingState *state, int windowCount, const std::function< QString(const QString &)> &appIdResolver, int &focusedIndex)
Build per-window metadata from a TilingState.
Per-side edge gap values (resolved, non-negative pixel values)
Definition EdgeGaps.h:27
Parameters for zone calculation.
Definition TilingParams.h:61
int windowCount
Number of windows to tile.
Definition TilingParams.h:62
const TilingState * state
Current tiling state.
Definition TilingParams.h:67
QVector< QSize > minSizes
Per-window minimum sizes (may be empty)
Definition TilingParams.h:70
EdgeGaps outerGaps
Gaps at screen edges in pixels (per-side)
Definition TilingParams.h:69
QVector< WindowInfo > windowInfos
Per-window metadata (parallel to window list)
Definition TilingParams.h:73
int focusedIndex
Index of focused window in tiled list (-1 = unknown)
Definition TilingParams.h:74
TilingScreenInfo screenInfo
Physical screen metadata.
Definition TilingParams.h:75
static TilingParams forPreview(int count, const QRect &rect, const TilingState *state)
Create minimal params for preview rendering (no per-window/screen context)
Definition TilingParams.h:79
QVariantMap customParams
Algorithm-declared custom parameters.
Definition TilingParams.h:76
int innerGap
Gap between adjacent zones in pixels.
Definition TilingParams.h:68
QRect screenGeometry
Available screen area in absolute pixels.
Definition TilingParams.h:63
Screen metadata passed to tiling algorithms.
Definition TilingParams.h:48
QString id
Screen connector name (e.g., "HDMI-1", "DP-2")
Definition TilingParams.h:49
bool portrait
True if height > width (portrait orientation)
Definition TilingParams.h:50
qreal aspectRatio
width/height (e.g., 1.78 for 16:9, 0.56 for portrait)
Definition TilingParams.h:51
Per-window metadata passed to algorithms.
Definition TilingParams.h:36
QString appId
Application identifier (e.g., "firefox", "org.kde.dolphin")
Definition TilingParams.h:37
bool focused
Whether this window currently has focus.
Definition TilingParams.h:38