Phosphor
Qt6 / Wayland library suite for window-management tools
 
Loading...
Searching...
No Matches
ScriptedAlgorithmHelpers.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>
8
9#include <QJSValue>
10#include <QRect>
11#include <QString>
12#include <QStringList>
13#include <QVariant>
14#include <QVariantMap>
15#include <QVector>
16
17namespace PhosphorTiles {
18namespace ScriptedHelpers {
19
34{
35 QString name;
36 QString type;
37 QVariant defaultValue;
38 QString description;
39 qreal minValue = 0.0;
40 qreal maxValue = 1.0;
41 QStringList enumOptions;
42
44 QVariantMap toVariantMap() const
45 {
46 QVariantMap m;
47 m[QLatin1String("name")] = name;
48 m[QLatin1String("type")] = type;
49 m[QLatin1String("defaultValue")] = defaultValue;
50 m[QLatin1String("description")] = description;
51 if (type == QLatin1String("number")) {
52 m[QLatin1String("minValue")] = minValue;
53 m[QLatin1String("maxValue")] = maxValue;
54 } else if (type == QLatin1String("enum")) {
55 m[QLatin1String("enumOptions")] = QVariant(enumOptions);
56 }
57 return m;
58 }
59};
60
82
86PHOSPHORTILES_EXPORT QVector<CustomParamDef> parseCustomParamsFromJs(const QJSValue& jsCustomParams,
87 const QString& filePath);
88
92PHOSPHORTILES_EXPORT ScriptMetadata parseMetadataFromJs(const QJSValue& jsMetadata, const QString& filePath);
93
101QVector<QRect> jsArrayToRects(const QJSValue& result, const QString& scriptId, int maxZones);
102
110QVector<QRect> clampZonesToArea(const QVector<QRect>& zones, const QRect& area, const QString& scriptId);
111
112} // namespace ScriptedHelpers
113} // namespace PhosphorTiles
ZoneNumberDisplay
How zone numbers are displayed in algorithm previews.
Definition AlgorithmMetadata.h:19
@ RendererDecides
Empty on the wire — algorithm defers to renderer default.
PHOSPHORTILES_EXPORT QVector< CustomParamDef > parseCustomParamsFromJs(const QJSValue &jsCustomParams, const QString &filePath)
Parse custom parameter definitions from a JS-exported customParams array.
QVector< QRect > clampZonesToArea(const QVector< QRect > &zones, const QRect &area, const QString &scriptId)
Clamp zones to the given area, using full area as fallback for zones entirely outside.
QVector< QRect > jsArrayToRects(const QJSValue &result, const QString &scriptId, int maxZones)
Convert a JS array of {x, y, width, height} objects to QRects.
PHOSPHORTILES_EXPORT ScriptMetadata parseMetadataFromJs(const QJSValue &jsMetadata, const QString &filePath)
Parse full algorithm metadata from a JS-exported metadata object.
Definition AutotileEngine.h:71
Definition of a custom algorithm parameter.
Definition ScriptedAlgorithmHelpers.h:34
QString type
"number", "bool", or "enum"
Definition ScriptedAlgorithmHelpers.h:36
QString name
Parameter name (camelCase, used as key in params.custom)
Definition ScriptedAlgorithmHelpers.h:35
QVariantMap toVariantMap() const
Convert to QVariantMap for QML consumption (name, type, defaultValue, description,...
Definition ScriptedAlgorithmHelpers.h:44
qreal maxValue
Maximum for number type (1.0 if unset)
Definition ScriptedAlgorithmHelpers.h:40
QStringList enumOptions
Valid options for enum type.
Definition ScriptedAlgorithmHelpers.h:41
qreal minValue
Minimum for number type (0.0 if unset)
Definition ScriptedAlgorithmHelpers.h:39
QString description
Human-readable description for settings UI.
Definition ScriptedAlgorithmHelpers.h:38
QVariant defaultValue
Default value (qreal for number, bool for bool, QString for enum)
Definition ScriptedAlgorithmHelpers.h:37
Parsed script metadata from a JS-exported metadata object.
Definition ScriptedAlgorithmHelpers.h:65
bool supportsSplitRatio
Definition ScriptedAlgorithmHelpers.h:74
int masterZoneIndex
Definition ScriptedAlgorithmHelpers.h:72
QString id
Optional: register as built-in algorithm ID instead of "script:filename".
Definition ScriptedAlgorithmHelpers.h:79
PhosphorLayout::ZoneNumberDisplay zoneNumberDisplay
Definition ScriptedAlgorithmHelpers.h:68
bool supportsMemory
Definition ScriptedAlgorithmHelpers.h:75
QVector< CustomParamDef > customParams
Algorithm-declared custom parameters.
Definition ScriptedAlgorithmHelpers.h:80
bool producesOverlappingZones
Definition ScriptedAlgorithmHelpers.h:76
bool supportsMinSizes
Default true — most algorithms support min sizes.
Definition ScriptedAlgorithmHelpers.h:78
bool supportsMasterCount
Definition ScriptedAlgorithmHelpers.h:73
QString description
Definition ScriptedAlgorithmHelpers.h:67
qreal defaultSplitRatio
0.0 = unset, falls back to algorithm default
Definition ScriptedAlgorithmHelpers.h:69
QString name
Definition ScriptedAlgorithmHelpers.h:66
int minimumWindows
0 = unset, falls back to algorithm default
Definition ScriptedAlgorithmHelpers.h:71
int defaultMaxWindows
0 = unset, falls back to algorithm default
Definition ScriptedAlgorithmHelpers.h:70
bool centerLayout
Definition ScriptedAlgorithmHelpers.h:77