1
0
mirror of https://github.com/AvengeMedia/DankMaterialShell.git synced 2026-06-10 05:03:28 -04:00
Files
DankMaterialShell/quickshell/Modules/Frame/FrameWindow.qml
T
2026-06-09 13:40:53 -04:00

1703 lines
76 KiB
QML

pragma ComponentBehavior: Bound
import QtQuick
import QtQuick.Effects
import Quickshell
import Quickshell.Wayland
import qs.Common
import qs.Services
import qs.Widgets
import "../../Common/ConnectorGeometry.js" as ConnectorGeometry
import "../../Common/ConnectedSurfaceGeometry.js" as SurfaceGeometry
PanelWindow {
id: win
readonly property var log: Log.scoped("FrameWindow")
required property var targetScreen
screen: targetScreen
readonly property bool _frameVisible: CompositorService.frameWindowVisibleForScreen(win.targetScreen)
visible: win._frameVisible
updatesEnabled: win._frameVisible
WlrLayershell.namespace: "dms:frame"
WlrLayershell.layer: WlrLayer.Top
WlrLayershell.exclusionMode: ExclusionMode.Ignore
anchors {
top: true
bottom: true
left: true
right: true
}
color: "transparent"
mask: Region {}
readonly property var barEdges: {
SettingsData.barConfigs;
return SettingsData.getActiveBarEdgesForScreen(win.targetScreen);
}
readonly property real _dpr: CompositorService.getScreenScale(win.targetScreen)
readonly property bool _frameActive: SettingsData.frameEnabled && SettingsData.isScreenInPreferences(win.targetScreen, SettingsData.frameScreenPreferences)
readonly property int _windowRegionWidth: win._regionInt(win.width)
readonly property int _windowRegionHeight: win._regionInt(win.height)
readonly property string _screenName: win.targetScreen ? win.targetScreen.name : ""
readonly property int _surfaceRevision: Number(ConnectedModeState.surfaceRevisions[win._screenName] || 0)
readonly property var _popoutDescriptor: ConnectedModeState.surfaceDescriptor(win._screenName, "popout")
readonly property var _dockDescriptor: ConnectedModeState.surfaceDescriptor(win._screenName, "dock")
readonly property var _notifDescriptor: ConnectedModeState.surfaceDescriptor(win._screenName, "notification")
readonly property var _modalDescriptor: ConnectedModeState.surfaceDescriptor(win._screenName, "modal")
readonly property var _popoutState: ConnectedModeState.legacySurfaceState(win._screenName, "popout")
readonly property var _dockState: ConnectedModeState.legacySurfaceState(win._screenName, "dock")
readonly property var _notifState: ConnectedModeState.legacySurfaceState(win._screenName, "notification")
readonly property var _modalState: ConnectedModeState.legacySurfaceState(win._screenName, "modal")
readonly property bool _connectedActive: CompositorService.usesConnectedFrameChromeForScreen(win.targetScreen)
readonly property string _barSide: {
const edges = win.barEdges;
if (edges.includes("top"))
return "top";
if (edges.includes("bottom"))
return "bottom";
if (edges.includes("left"))
return "left";
return "right";
}
readonly property real _ccr: Theme.connectedCornerRadius
readonly property bool _popoutHorizontal: SurfaceGeometry.isHorizontal(win._popoutDescriptor.barSide)
readonly property bool _notifHorizontal: ConnectorGeometry.isHorizontal(win._notifState.barSide)
readonly property bool _modalHorizontal: ConnectorGeometry.isHorizontal(win._modalState.barSide)
readonly property bool _dockHorizontal: ConnectorGeometry.isHorizontal(win._dockState.barSide)
readonly property var _popoutBodyGeometry: SurfaceGeometry.animatedBodyRect(win._popoutDescriptor, win._dpr)
readonly property var _popoutStaticBodyGeometry: SurfaceGeometry.bodyRect(win._popoutDescriptor, win._dpr)
readonly property var _modalBodyGeometry: SurfaceGeometry.animatedBodyRect(win._modalDescriptor, win._dpr)
readonly property var _notifBodyGeometry: SurfaceGeometry.bodyRect(win._notifDescriptor, win._dpr)
readonly property var _dockBodyGeometry: SurfaceGeometry.translatedBodyRect(win._dockDescriptor, win._dpr)
readonly property real _popoutArcExtent: win._popoutHorizontal ? _popoutBodyBlurAnchor.height : _popoutBodyBlurAnchor.width
readonly property real _modalArcExtent: win._modalHorizontal ? _modalBodyBlurAnchor.height : _modalBodyBlurAnchor.width
readonly property real _popoutConnectorRadiusLeft: win._effectivePopoutStartCcr
readonly property real _popoutConnectorRadiusRight: win._effectivePopoutEndCcr
readonly property real _modalConnectorRadiusLeft: win._effectiveModalStartCcr
readonly property real _modalConnectorRadiusRight: win._effectiveModalEndCcr
readonly property real _notifConnectorRadiusLeft: win._effectiveNotifStartCcr
readonly property real _notifConnectorRadiusRight: win._effectiveNotifEndCcr
readonly property real _dockBodyBlurRadiusValue: _dockBodyBlurAnchor._active ? Math.max(0, Math.min(win._surfaceRadius, _dockBodyBlurAnchor.width / 2, _dockBodyBlurAnchor.height / 2)) : win._surfaceRadius
readonly property real _dockConnectorRadiusValue: {
if (!_dockBodyBlurAnchor._active)
return win._ccr;
const thickness = (win._dockState.barSide === "left" || win._dockState.barSide === "right") ? _dockBodyBlurAnchor.width : _dockBodyBlurAnchor.height;
const bodyRadius = win._dockBodyBlurRadiusValue;
const maxConnectorRadius = Math.max(0, thickness - bodyRadius - win._seamOverlap);
return Math.max(0, Math.min(win._ccr, bodyRadius, maxConnectorRadius));
}
readonly property real _popoutFillOverlapXValue: win._popoutHorizontal ? win._seamOverlap : 0
readonly property real _popoutFillOverlapYValue: (win._popoutState.barSide === "left" || win._popoutState.barSide === "right") ? win._seamOverlap : 0
readonly property real _dockFillOverlapXValue: win._dockHorizontal ? win._seamOverlap : 0
readonly property real _dockFillOverlapYValue: (win._dockState.barSide === "left" || win._dockState.barSide === "right") ? win._seamOverlap : 0
readonly property real _dockJoinOverlapXValue: ConnectorGeometry.isVertical(win._dockState.barSide) ? win._seamOverlap : 0
readonly property real _dockJoinOverlapYValue: ConnectorGeometry.isHorizontal(win._dockState.barSide) ? win._seamOverlap : 0
readonly property real _notifSideUnderlapValue: ConnectorGeometry.isVertical(win._notifState.barSide) ? win._seamOverlap : 0
readonly property real _notifStartUnderlapValue: win._notifState.omitStartConnector ? win._seamOverlap : 0
readonly property real _notifEndUnderlapValue: win._notifState.omitEndConnector ? win._seamOverlap : 0
// Theme.snap rounds to integer pixel: equal rounded values suppress
// downstream Changed during sub-pixel morph jitter.
readonly property var _popoutRadii: SurfaceGeometry.connectorRadii(win._popoutDescriptor, win._popoutBodyGeometry, win._ccr, win._surfaceRadius, win._dpr, false)
readonly property real _effectivePopoutCcr: win._popoutRadii.near
readonly property real _effectivePopoutFarCcr: win._popoutRadii.far
readonly property real _effectivePopoutStartCcr: win._popoutRadii.start
readonly property real _effectivePopoutEndCcr: win._popoutRadii.end
readonly property real _effectivePopoutFarStartCcr: win._popoutRadii.farStart
readonly property real _effectivePopoutFarEndCcr: win._popoutRadii.farEnd
readonly property real _effectivePopoutMaxCcr: Math.max(win._effectivePopoutStartCcr, win._effectivePopoutEndCcr)
readonly property real _effectivePopoutFarExtent: Math.max(win._effectivePopoutFarStartCcr, win._effectivePopoutFarEndCcr)
readonly property var _popoutChromeGeometry: SurfaceGeometry.chromeBounds(win._popoutStaticBodyGeometry, win._popoutDescriptor.barSide, win._effectivePopoutStartCcr, win._effectivePopoutEndCcr, 0, win._dpr)
readonly property var _notifNearRadii: SurfaceGeometry.connectorRadii(win._notifDescriptor, win._notifBodyGeometry, win._ccr, win._surfaceRadius, win._dpr, true)
readonly property var _notifFarRadii: SurfaceGeometry.connectorRadii(win._notifDescriptor, win._notifBodyScene(), win._ccr, win._surfaceRadius, win._dpr, true)
readonly property real _effectiveNotifCcr: win._notifNearRadii.near
readonly property real _effectiveNotifFarCcr: win._notifFarRadii.far
readonly property real _effectiveNotifStartCcr: win._notifNearRadii.start
readonly property real _effectiveNotifEndCcr: win._notifNearRadii.end
readonly property real _effectiveNotifFarStartCcr: win._notifFarRadii.farStart
readonly property real _effectiveNotifFarEndCcr: win._notifFarRadii.farEnd
readonly property real _effectiveNotifMaxCcr: Math.max(win._effectiveNotifStartCcr, win._effectiveNotifEndCcr)
readonly property real _effectiveNotifFarExtent: Math.max(win._effectiveNotifFarStartCcr, win._effectiveNotifFarEndCcr)
readonly property var _modalRadii: SurfaceGeometry.connectorRadii(win._modalDescriptor, win._modalBodyGeometry, win._ccr, win._surfaceRadius, win._dpr, true)
readonly property real _effectiveModalCcr: win._modalRadii.near
readonly property real _effectiveModalFarCcr: win._modalRadii.far
readonly property real _effectiveModalStartCcr: win._modalRadii.start
readonly property real _effectiveModalEndCcr: win._modalRadii.end
readonly property real _effectiveModalFarStartCcr: win._modalRadii.farStart
readonly property real _effectiveModalFarEndCcr: win._modalRadii.farEnd
readonly property real _effectiveModalFarExtent: Math.max(win._effectiveModalFarStartCcr, win._effectiveModalFarEndCcr)
readonly property var _dockChromeGeometry: SurfaceGeometry.chromeBounds(win._dockBodyGeometry, win._dockDescriptor.barSide, win._dockConnectorRadiusValue, win._dockConnectorRadiusValue, 0, win._dpr)
readonly property color _surfaceColor: Theme.connectedSurfaceColor
readonly property real _surfaceOpacity: _surfaceColor.a
readonly property color _opaqueSurfaceColor: Qt.rgba(_surfaceColor.r, _surfaceColor.g, _surfaceColor.b, 1)
readonly property real _surfaceRadius: Theme.connectedSurfaceRadius
readonly property real _seamOverlap: Theme.hairline(win._dpr)
readonly property bool _disableLayer: Quickshell.env("DMS_DISABLE_LAYER") === "true" || Quickshell.env("DMS_DISABLE_LAYER") === "1"
// The connected silhouette is drawn directly as one translucent Shape; the
// full-output layer/FBO is allocated only when it must source the elevation
// shadow. Translucency no longer needs a flatten (single primitive).
readonly property bool _elevationShadow: win._connectedActive && Theme.elevationEnabled && !win._disableLayer
// Active surfaces packed into four fixed SDF-shader slots. Each near (bar)
// edge is clamped to the cutout edge so the smooth-min connector attaches
// there; connR (the smin radius) is the connector fillet.
readonly property var _sdfSlots: {
const T = win.cutoutTopInset;
const L = win.cutoutLeftInset;
const R = win.width - win.cutoutRightInset;
const B = win.height - win.cutoutBottomInset;
const clampNear = function (side, b) {
const r = {"x": b.x, "y": b.y, "width": b.width, "height": b.height};
if (side === "top") {
r.height = Math.max(0, b.y + b.height - T);
r.y = T;
} else if (side === "bottom") {
r.height = Math.max(0, B - b.y);
} else if (side === "left") {
r.width = Math.max(0, b.x + b.width - L);
r.x = L;
} else if (side === "right") {
r.width = Math.max(0, R - b.x);
}
return r;
};
const src = win._unifiedSurfaces();
const out = [];
for (let i = 0; i < 4; i++) {
if (i < src.length) {
const s = src[i];
const b = clampNear(s.side, s.body);
// smin radius = the near connector fillet only; an omitted
// connector contributes no flare (its corner just rounds).
const connR = Math.max(s.radii.startCr, s.radii.endCr);
const active = b.width > 0 && b.height > 0 ? 1 : 0;
// A bar-side corner is sharp only where its connector is present;
// an omitted connector (farStart/farEnd set) keeps that corner
// rounded. Far corners always round. (start=left/top, end=right/bottom.)
const bodyR = s.radii.surfaceRadius;
const omitS = s.radii.farStartCr > 0;
const omitE = s.radii.farEndCr > 0;
let tl = bodyR, tr = bodyR, br = bodyR, bl = bodyR;
if (s.side === "top") {
if (!omitS) tl = 0;
if (!omitE) tr = 0;
} else if (s.side === "bottom") {
if (!omitS) bl = 0;
if (!omitE) br = 0;
} else if (s.side === "left") {
if (!omitS) tl = 0;
if (!omitE) bl = 0;
} else {
if (!omitS) tr = 0;
if (!omitE) br = 0;
}
out.push({
"rect": Qt.vector4d(b.x, b.y, b.width, b.height),
"corner": Qt.vector4d(tl, tr, br, bl),
"param": Qt.vector4d(connR, active, 0, 0)
});
} else {
out.push({"rect": Qt.vector4d(0, 0, 0, 0), "corner": Qt.vector4d(0, 0, 0, 0), "param": Qt.vector4d(0, 0, 0, 0)});
}
}
return out;
}
property bool _surfaceRefreshNeedsLayerRecreate: false
property bool _surfaceLayerRecoveryActive: false
function _regionInt(value) {
return Math.max(0, Math.round(Theme.px(value, win._dpr)));
}
readonly property int cutoutTopInset: win._regionInt(barEdges.includes("top") ? SettingsData.frameBarSize : SettingsData.frameThickness)
readonly property int cutoutBottomInset: win._regionInt(barEdges.includes("bottom") ? SettingsData.frameBarSize : SettingsData.frameThickness)
readonly property int cutoutLeftInset: win._regionInt(barEdges.includes("left") ? SettingsData.frameBarSize : SettingsData.frameThickness)
readonly property int cutoutRightInset: win._regionInt(barEdges.includes("right") ? SettingsData.frameBarSize : SettingsData.frameThickness)
readonly property int cutoutWidth: Math.max(0, win._windowRegionWidth - win.cutoutLeftInset - win.cutoutRightInset)
readonly property int cutoutHeight: Math.max(0, win._windowRegionHeight - win.cutoutTopInset - win.cutoutBottomInset)
readonly property int cutoutRadius: {
const requested = win._regionInt(SettingsData.frameRounding);
const maxRadius = Math.floor(Math.min(win.cutoutWidth, win.cutoutHeight) / 2);
return Math.max(0, Math.min(requested, maxRadius));
}
readonly property int _blurCutoutCompensation: SettingsData.frameOpacity <= 0.2 ? 1 : 0
readonly property int _blurCutoutLeft: Math.max(0, win.cutoutLeftInset - win._blurCutoutCompensation)
readonly property int _blurCutoutTop: Math.max(0, win.cutoutTopInset - win._blurCutoutCompensation)
readonly property int _blurCutoutRight: Math.min(win._windowRegionWidth, win._windowRegionWidth - win.cutoutRightInset + win._blurCutoutCompensation)
readonly property int _blurCutoutBottom: Math.min(win._windowRegionHeight, win._windowRegionHeight - win.cutoutBottomInset + win._blurCutoutCompensation)
readonly property int _blurCutoutRadius: {
const requested = win.cutoutRadius + win._blurCutoutCompensation;
const maxRadius = Math.floor(Math.min(_blurCutout.width, _blurCutout.height) / 2);
return Math.max(0, Math.min(requested, maxRadius));
}
// Invisible items providing scene coordinates for blur Region anchors
Item {
id: _blurCutout
x: win._blurCutoutLeft
y: win._blurCutoutTop
width: Math.max(0, win._blurCutoutRight - win._blurCutoutLeft)
height: Math.max(0, win._blurCutoutBottom - win._blurCutoutTop)
}
Item {
id: _popoutBodyBlurAnchor
visible: false
readonly property bool _active: win._popoutDescriptor.visible
readonly property real _dyClamp: win._popoutBodyGeometry.dy
readonly property real _dxClamp: win._popoutBodyGeometry.dx
x: _active ? win._popoutBodyGeometry.x : 0
y: _active ? win._popoutBodyGeometry.y : 0
width: _active ? win._popoutBodyGeometry.width : 0
height: _active ? win._popoutBodyGeometry.height : 0
}
Item {
id: _dockBodyBlurAnchor
visible: false
readonly property bool _active: win._connectedActive && win._dockDescriptor.visible && win._dockBodyGeometry.width > 0 && win._dockBodyGeometry.height > 0
x: _active ? win._dockBodyGeometry.x : 0
y: _active ? win._dockBodyGeometry.y : 0
width: _active ? win._dockBodyGeometry.width : 0
height: _active ? win._dockBodyGeometry.height : 0
}
Item {
id: _popoutBodyBlurCap
opacity: 0
readonly property string _side: win._popoutState.barSide
readonly property real _capThickness: win._popoutBlurCapThickness()
readonly property bool _active: _popoutBodyBlurAnchor._active && _capThickness > 0 && _popoutBodyBlurAnchor.width > 0 && _popoutBodyBlurAnchor.height > 0
readonly property real _capWidth: (_side === "left" || _side === "right") ? Math.min(_capThickness, _popoutBodyBlurAnchor.width) : _popoutBodyBlurAnchor.width
readonly property real _capHeight: (_side === "top" || _side === "bottom") ? Math.min(_capThickness, _popoutBodyBlurAnchor.height) : _popoutBodyBlurAnchor.height
x: !_active ? 0 : (_side === "right" ? _popoutBodyBlurAnchor.x + _popoutBodyBlurAnchor.width - _capWidth : _popoutBodyBlurAnchor.x)
y: !_active ? 0 : (_side === "bottom" ? _popoutBodyBlurAnchor.y + _popoutBodyBlurAnchor.height - _capHeight : _popoutBodyBlurAnchor.y)
width: _active ? _capWidth : 0
height: _active ? _capHeight : 0
}
Item {
id: _dockBodyBlurCap
opacity: 0
readonly property string _side: win._dockState.barSide
readonly property bool _active: _dockBodyBlurAnchor._active && _dockBodyBlurAnchor.width > 0 && _dockBodyBlurAnchor.height > 0
readonly property real _capWidth: (_side === "left" || _side === "right") ? Math.min(win._dockConnectorRadiusValue, _dockBodyBlurAnchor.width) : _dockBodyBlurAnchor.width
readonly property real _capHeight: (_side === "top" || _side === "bottom") ? Math.min(win._dockConnectorRadiusValue, _dockBodyBlurAnchor.height) : _dockBodyBlurAnchor.height
x: !_active ? 0 : (_side === "right" ? _dockBodyBlurAnchor.x + _dockBodyBlurAnchor.width - _capWidth : _dockBodyBlurAnchor.x)
y: !_active ? 0 : (_side === "bottom" ? _dockBodyBlurAnchor.y + _dockBodyBlurAnchor.height - _capHeight : _dockBodyBlurAnchor.y)
width: _active ? _capWidth : 0
height: _active ? _capHeight : 0
}
Item {
id: _popoutLeftConnectorBlurAnchor
opacity: 0
readonly property real _radius: win._popoutConnectorRadiusLeft
readonly property bool _active: _popoutBodyBlurAnchor._active && _radius > 0
readonly property var _rect: SurfaceGeometry.connectorRect(win._popoutDescriptor.barSide, win._popoutBodyGeometry, "left", 0, _radius, win._dpr)
x: _active ? _rect.x : 0
y: _active ? _rect.y : 0
width: _active ? _rect.width : 0
height: _active ? _rect.height : 0
}
Item {
id: _popoutRightConnectorBlurAnchor
opacity: 0
readonly property real _radius: win._popoutConnectorRadiusRight
readonly property bool _active: _popoutBodyBlurAnchor._active && _radius > 0
readonly property var _rect: SurfaceGeometry.connectorRect(win._popoutDescriptor.barSide, win._popoutBodyGeometry, "right", 0, _radius, win._dpr)
x: _active ? _rect.x : 0
y: _active ? _rect.y : 0
width: _active ? _rect.width : 0
height: _active ? _rect.height : 0
}
Item {
id: _popoutLeftConnectorCutout
opacity: 0
readonly property bool _active: _popoutLeftConnectorBlurAnchor.width > 0 && _popoutLeftConnectorBlurAnchor.height > 0
readonly property string _arcCorner: ConnectorGeometry.arcCorner(win._popoutState.barSide, "left")
readonly property real _radius: win._popoutConnectorRadiusLeft
x: _active ? win._connectorCutoutX(_popoutLeftConnectorBlurAnchor.x, _popoutLeftConnectorBlurAnchor.width, _arcCorner, _radius) : 0
y: _active ? win._connectorCutoutY(_popoutLeftConnectorBlurAnchor.y, _popoutLeftConnectorBlurAnchor.height, _arcCorner, _radius) : 0
width: _active ? _radius * 2 : 0
height: _active ? _radius * 2 : 0
}
Item {
id: _popoutRightConnectorCutout
opacity: 0
readonly property bool _active: _popoutRightConnectorBlurAnchor.width > 0 && _popoutRightConnectorBlurAnchor.height > 0
readonly property string _arcCorner: ConnectorGeometry.arcCorner(win._popoutState.barSide, "right")
readonly property real _radius: win._popoutConnectorRadiusRight
x: _active ? win._connectorCutoutX(_popoutRightConnectorBlurAnchor.x, _popoutRightConnectorBlurAnchor.width, _arcCorner, _radius) : 0
y: _active ? win._connectorCutoutY(_popoutRightConnectorBlurAnchor.y, _popoutRightConnectorBlurAnchor.height, _arcCorner, _radius) : 0
width: _active ? _radius * 2 : 0
height: _active ? _radius * 2 : 0
}
Item {
id: _popoutFarStartConnectorBlurAnchor
opacity: 0
readonly property real _radius: win._effectivePopoutFarStartCcr
readonly property bool _active: _popoutBodyBlurAnchor._active && _radius > 0
readonly property var _rect: SurfaceGeometry.farConnectorRect(win._popoutDescriptor.barSide, win._popoutBodyGeometry, "left", _radius, win._dpr)
x: _active ? _rect.x : 0
y: _active ? _rect.y : 0
width: _active ? _rect.width : 0
height: _active ? _rect.height : 0
}
Item {
id: _popoutFarStartBodyBlurCap
opacity: 0
readonly property real _radius: win._effectivePopoutFarStartCcr
readonly property bool _active: _popoutBodyBlurAnchor._active && _radius > 0
readonly property var _rect: SurfaceGeometry.farBodyCapRect(win._popoutDescriptor.barSide, win._popoutBodyGeometry, "left", _radius, win._dpr)
x: _active ? _rect.x : 0
y: _active ? _rect.y : 0
width: _active ? _rect.width : 0
height: _active ? _rect.height : 0
}
Item {
id: _popoutFarEndBodyBlurCap
opacity: 0
readonly property real _radius: win._effectivePopoutFarEndCcr
readonly property bool _active: _popoutBodyBlurAnchor._active && _radius > 0
readonly property var _rect: SurfaceGeometry.farBodyCapRect(win._popoutDescriptor.barSide, win._popoutBodyGeometry, "right", _radius, win._dpr)
x: _active ? _rect.x : 0
y: _active ? _rect.y : 0
width: _active ? _rect.width : 0
height: _active ? _rect.height : 0
}
Item {
id: _popoutFarEndConnectorBlurAnchor
opacity: 0
readonly property real _radius: win._effectivePopoutFarEndCcr
readonly property bool _active: _popoutBodyBlurAnchor._active && _radius > 0
readonly property var _rect: SurfaceGeometry.farConnectorRect(win._popoutDescriptor.barSide, win._popoutBodyGeometry, "right", _radius, win._dpr)
x: _active ? _rect.x : 0
y: _active ? _rect.y : 0
width: _active ? _rect.width : 0
height: _active ? _rect.height : 0
}
Item {
id: _popoutFarStartConnectorCutout
opacity: 0
readonly property bool _active: _popoutFarStartConnectorBlurAnchor.width > 0 && _popoutFarStartConnectorBlurAnchor.height > 0
readonly property string _barSide: win._farConnectorBarSide(win._popoutState.barSide, "left")
readonly property string _placement: win._farConnectorPlacement(win._popoutState.barSide, "left")
readonly property string _arcCorner: ConnectorGeometry.arcCorner(_barSide, _placement)
readonly property real _radius: win._effectivePopoutFarStartCcr
x: _active ? win._connectorCutoutX(_popoutFarStartConnectorBlurAnchor.x, _popoutFarStartConnectorBlurAnchor.width, _arcCorner, _radius) : 0
y: _active ? win._connectorCutoutY(_popoutFarStartConnectorBlurAnchor.y, _popoutFarStartConnectorBlurAnchor.height, _arcCorner, _radius) : 0
width: _active ? _radius * 2 : 0
height: _active ? _radius * 2 : 0
}
Item {
id: _popoutFarEndConnectorCutout
opacity: 0
readonly property bool _active: _popoutFarEndConnectorBlurAnchor.width > 0 && _popoutFarEndConnectorBlurAnchor.height > 0
readonly property string _barSide: win._farConnectorBarSide(win._popoutState.barSide, "right")
readonly property string _placement: win._farConnectorPlacement(win._popoutState.barSide, "right")
readonly property string _arcCorner: ConnectorGeometry.arcCorner(_barSide, _placement)
readonly property real _radius: win._effectivePopoutFarEndCcr
x: _active ? win._connectorCutoutX(_popoutFarEndConnectorBlurAnchor.x, _popoutFarEndConnectorBlurAnchor.width, _arcCorner, _radius) : 0
y: _active ? win._connectorCutoutY(_popoutFarEndConnectorBlurAnchor.y, _popoutFarEndConnectorBlurAnchor.height, _arcCorner, _radius) : 0
width: _active ? _radius * 2 : 0
height: _active ? _radius * 2 : 0
}
Item {
id: _dockLeftConnectorBlurAnchor
opacity: 0
readonly property bool _active: _dockBodyBlurAnchor._active && win._dockConnectorRadiusValue > 0
readonly property var _rect: SurfaceGeometry.connectorRect(win._dockDescriptor.barSide, win._dockBodyGeometry, "left", 0, win._dockConnectorRadiusValue, win._dpr)
x: _active ? _rect.x : 0
y: _active ? _rect.y : 0
width: _active ? _rect.width : 0
height: _active ? _rect.height : 0
}
Item {
id: _dockRightConnectorBlurAnchor
opacity: 0
readonly property bool _active: _dockBodyBlurAnchor._active && win._dockConnectorRadiusValue > 0
readonly property var _rect: SurfaceGeometry.connectorRect(win._dockDescriptor.barSide, win._dockBodyGeometry, "right", 0, win._dockConnectorRadiusValue, win._dpr)
x: _active ? _rect.x : 0
y: _active ? _rect.y : 0
width: _active ? _rect.width : 0
height: _active ? _rect.height : 0
}
Item {
id: _dockLeftConnectorCutout
opacity: 0
readonly property bool _active: _dockLeftConnectorBlurAnchor.width > 0 && _dockLeftConnectorBlurAnchor.height > 0
readonly property string _arcCorner: ConnectorGeometry.arcCorner(win._dockState.barSide, "left")
x: _active ? win._connectorCutoutX(_dockLeftConnectorBlurAnchor.x, _dockLeftConnectorBlurAnchor.width, _arcCorner, win._dockConnectorRadiusValue) : 0
y: _active ? win._connectorCutoutY(_dockLeftConnectorBlurAnchor.y, _dockLeftConnectorBlurAnchor.height, _arcCorner, win._dockConnectorRadiusValue) : 0
width: _active ? win._dockConnectorRadiusValue * 2 : 0
height: _active ? win._dockConnectorRadiusValue * 2 : 0
}
Item {
id: _dockRightConnectorCutout
opacity: 0
readonly property bool _active: _dockRightConnectorBlurAnchor.width > 0 && _dockRightConnectorBlurAnchor.height > 0
readonly property string _arcCorner: ConnectorGeometry.arcCorner(win._dockState.barSide, "right")
x: _active ? win._connectorCutoutX(_dockRightConnectorBlurAnchor.x, _dockRightConnectorBlurAnchor.width, _arcCorner, win._dockConnectorRadiusValue) : 0
y: _active ? win._connectorCutoutY(_dockRightConnectorBlurAnchor.y, _dockRightConnectorBlurAnchor.height, _arcCorner, win._dockConnectorRadiusValue) : 0
width: _active ? win._dockConnectorRadiusValue * 2 : 0
height: _active ? win._dockConnectorRadiusValue * 2 : 0
}
Item {
id: _notifBodyBlurAnchor
visible: false
readonly property bool _active: win._frameActive && win._notifDescriptor.visible && win._notifBodyGeometry.width > 0 && win._notifBodyGeometry.height > 0
x: _active ? win._notifBodyGeometry.x : 0
y: _active ? win._notifBodyGeometry.y : 0
width: _active ? win._notifBodyGeometry.width : 0
height: _active ? win._notifBodyGeometry.height : 0
}
Item {
id: _modalBodyBlurAnchor
visible: false
readonly property bool _active: win._frameActive && win._modalDescriptor.visible && win._modalBodyGeometry.width > 0 && win._modalBodyGeometry.height > 0
readonly property real _dyClamp: win._modalBodyGeometry.dy
readonly property real _dxClamp: win._modalBodyGeometry.dx
x: _active ? win._modalBodyGeometry.x : 0
y: _active ? win._modalBodyGeometry.y : 0
width: _active ? win._modalBodyGeometry.width : 0
height: _active ? win._modalBodyGeometry.height : 0
}
Item {
id: _modalBodyBlurCap
opacity: 0
readonly property string _side: win._modalState.barSide
readonly property real _capThickness: win._modalBlurCapThickness()
readonly property bool _active: _modalBodyBlurAnchor._active && _capThickness > 0 && _modalBodyBlurAnchor.width > 0 && _modalBodyBlurAnchor.height > 0
readonly property real _capWidth: (_side === "left" || _side === "right") ? Math.min(_capThickness, _modalBodyBlurAnchor.width) : _modalBodyBlurAnchor.width
readonly property real _capHeight: (_side === "top" || _side === "bottom") ? Math.min(_capThickness, _modalBodyBlurAnchor.height) : _modalBodyBlurAnchor.height
x: !_active ? 0 : (_side === "right" ? _modalBodyBlurAnchor.x + _modalBodyBlurAnchor.width - _capWidth : _modalBodyBlurAnchor.x)
y: !_active ? 0 : (_side === "bottom" ? _modalBodyBlurAnchor.y + _modalBodyBlurAnchor.height - _capHeight : _modalBodyBlurAnchor.y)
width: _active ? _capWidth : 0
height: _active ? _capHeight : 0
}
Item {
id: _modalLeftConnectorBlurAnchor
opacity: 0
readonly property real _radius: win._modalConnectorRadiusLeft
readonly property bool _active: _modalBodyBlurAnchor._active && _radius > 0
readonly property var _rect: SurfaceGeometry.connectorRect(win._modalDescriptor.barSide, win._modalBodyGeometry, "left", 0, _radius, win._dpr)
x: _active ? _rect.x : 0
y: _active ? _rect.y : 0
width: _active ? _rect.width : 0
height: _active ? _rect.height : 0
}
Item {
id: _modalRightConnectorBlurAnchor
opacity: 0
readonly property real _radius: win._modalConnectorRadiusRight
readonly property bool _active: _modalBodyBlurAnchor._active && _radius > 0
readonly property var _rect: SurfaceGeometry.connectorRect(win._modalDescriptor.barSide, win._modalBodyGeometry, "right", 0, _radius, win._dpr)
x: _active ? _rect.x : 0
y: _active ? _rect.y : 0
width: _active ? _rect.width : 0
height: _active ? _rect.height : 0
}
Item {
id: _modalLeftConnectorCutout
opacity: 0
readonly property bool _active: _modalLeftConnectorBlurAnchor.width > 0 && _modalLeftConnectorBlurAnchor.height > 0
readonly property string _arcCorner: ConnectorGeometry.arcCorner(win._modalState.barSide, "left")
readonly property real _radius: win._modalConnectorRadiusLeft
x: _active ? win._connectorCutoutX(_modalLeftConnectorBlurAnchor.x, _modalLeftConnectorBlurAnchor.width, _arcCorner, _radius) : 0
y: _active ? win._connectorCutoutY(_modalLeftConnectorBlurAnchor.y, _modalLeftConnectorBlurAnchor.height, _arcCorner, _radius) : 0
width: _active ? _radius * 2 : 0
height: _active ? _radius * 2 : 0
}
Item {
id: _modalRightConnectorCutout
opacity: 0
readonly property bool _active: _modalRightConnectorBlurAnchor.width > 0 && _modalRightConnectorBlurAnchor.height > 0
readonly property string _arcCorner: ConnectorGeometry.arcCorner(win._modalState.barSide, "right")
readonly property real _radius: win._modalConnectorRadiusRight
x: _active ? win._connectorCutoutX(_modalRightConnectorBlurAnchor.x, _modalRightConnectorBlurAnchor.width, _arcCorner, _radius) : 0
y: _active ? win._connectorCutoutY(_modalRightConnectorBlurAnchor.y, _modalRightConnectorBlurAnchor.height, _arcCorner, _radius) : 0
width: _active ? _radius * 2 : 0
height: _active ? _radius * 2 : 0
}
Item {
id: _modalFarStartConnectorBlurAnchor
opacity: 0
readonly property real _radius: win._effectiveModalFarStartCcr
readonly property bool _active: _modalBodyBlurAnchor._active && _radius > 0
readonly property var _rect: SurfaceGeometry.farConnectorRect(win._modalDescriptor.barSide, win._modalBodyGeometry, "left", _radius, win._dpr)
x: _active ? _rect.x : 0
y: _active ? _rect.y : 0
width: _active ? _rect.width : 0
height: _active ? _rect.height : 0
}
Item {
id: _modalFarStartBodyBlurCap
opacity: 0
readonly property real _radius: win._effectiveModalFarStartCcr
readonly property bool _active: _modalBodyBlurAnchor._active && _radius > 0
readonly property var _rect: SurfaceGeometry.farBodyCapRect(win._modalDescriptor.barSide, win._modalBodyGeometry, "left", _radius, win._dpr)
x: _active ? _rect.x : 0
y: _active ? _rect.y : 0
width: _active ? _rect.width : 0
height: _active ? _rect.height : 0
}
Item {
id: _modalFarEndBodyBlurCap
opacity: 0
readonly property real _radius: win._effectiveModalFarEndCcr
readonly property bool _active: _modalBodyBlurAnchor._active && _radius > 0
readonly property var _rect: SurfaceGeometry.farBodyCapRect(win._modalDescriptor.barSide, win._modalBodyGeometry, "right", _radius, win._dpr)
x: _active ? _rect.x : 0
y: _active ? _rect.y : 0
width: _active ? _rect.width : 0
height: _active ? _rect.height : 0
}
Item {
id: _modalFarEndConnectorBlurAnchor
opacity: 0
readonly property real _radius: win._effectiveModalFarEndCcr
readonly property bool _active: _modalBodyBlurAnchor._active && _radius > 0
readonly property var _rect: SurfaceGeometry.farConnectorRect(win._modalDescriptor.barSide, win._modalBodyGeometry, "right", _radius, win._dpr)
x: _active ? _rect.x : 0
y: _active ? _rect.y : 0
width: _active ? _rect.width : 0
height: _active ? _rect.height : 0
}
Item {
id: _modalFarStartConnectorCutout
opacity: 0
readonly property bool _active: _modalFarStartConnectorBlurAnchor.width > 0 && _modalFarStartConnectorBlurAnchor.height > 0
readonly property string _barSide: win._farConnectorBarSide(win._modalState.barSide, "left")
readonly property string _placement: win._farConnectorPlacement(win._modalState.barSide, "left")
readonly property string _arcCorner: ConnectorGeometry.arcCorner(_barSide, _placement)
readonly property real _radius: win._effectiveModalFarStartCcr
x: _active ? win._connectorCutoutX(_modalFarStartConnectorBlurAnchor.x, _modalFarStartConnectorBlurAnchor.width, _arcCorner, _radius) : 0
y: _active ? win._connectorCutoutY(_modalFarStartConnectorBlurAnchor.y, _modalFarStartConnectorBlurAnchor.height, _arcCorner, _radius) : 0
width: _active ? _radius * 2 : 0
height: _active ? _radius * 2 : 0
}
Item {
id: _modalFarEndConnectorCutout
opacity: 0
readonly property bool _active: _modalFarEndConnectorBlurAnchor.width > 0 && _modalFarEndConnectorBlurAnchor.height > 0
readonly property string _barSide: win._farConnectorBarSide(win._modalState.barSide, "right")
readonly property string _placement: win._farConnectorPlacement(win._modalState.barSide, "right")
readonly property string _arcCorner: ConnectorGeometry.arcCorner(_barSide, _placement)
readonly property real _radius: win._effectiveModalFarEndCcr
x: _active ? win._connectorCutoutX(_modalFarEndConnectorBlurAnchor.x, _modalFarEndConnectorBlurAnchor.width, _arcCorner, _radius) : 0
y: _active ? win._connectorCutoutY(_modalFarEndConnectorBlurAnchor.y, _modalFarEndConnectorBlurAnchor.height, _arcCorner, _radius) : 0
width: _active ? _radius * 2 : 0
height: _active ? _radius * 2 : 0
}
Item {
id: _notifBodySceneBlurAnchor
visible: false
readonly property bool _active: _notifBodyBlurAnchor._active
readonly property var _scene: _active ? win._notifBodyScene() : null
x: _scene ? Theme.snap(_scene.x, win._dpr) : 0
y: _scene ? Theme.snap(_scene.y, win._dpr) : 0
width: _scene ? Theme.snap(_scene.width, win._dpr) : 0
height: _scene ? Theme.snap(_scene.height, win._dpr) : 0
}
Item {
id: _notifBodyBlurCap
opacity: 0
readonly property string _side: win._notifState.barSide
readonly property real _capRadius: win._effectiveNotifMaxCcr
readonly property bool _active: _notifBodySceneBlurAnchor._active && _notifBodySceneBlurAnchor.width > 0 && _notifBodySceneBlurAnchor.height > 0 && _capRadius > 0
readonly property real _capWidth: (_side === "left" || _side === "right") ? Math.min(_capRadius, _notifBodySceneBlurAnchor.width) : _notifBodySceneBlurAnchor.width
readonly property real _capHeight: (_side === "top" || _side === "bottom") ? Math.min(_capRadius, _notifBodySceneBlurAnchor.height) : _notifBodySceneBlurAnchor.height
x: !_active ? 0 : (_side === "right" ? _notifBodySceneBlurAnchor.x + _notifBodySceneBlurAnchor.width - _capWidth : _notifBodySceneBlurAnchor.x)
y: !_active ? 0 : (_side === "bottom" ? _notifBodySceneBlurAnchor.y + _notifBodySceneBlurAnchor.height - _capHeight : _notifBodySceneBlurAnchor.y)
width: _active ? _capWidth : 0
height: _active ? _capHeight : 0
}
Item {
id: _notifLeftConnectorBlurAnchor
opacity: 0
readonly property real _radius: win._notifConnectorRadiusLeft
readonly property bool _active: _notifBodySceneBlurAnchor._active && _radius > 0
readonly property var _rect: SurfaceGeometry.connectorRect(win._notifDescriptor.barSide, _notifBodySceneBlurAnchor, "left", 0, _radius, win._dpr)
x: _active ? _rect.x : 0
y: _active ? _rect.y : 0
width: _active ? _rect.width : 0
height: _active ? _rect.height : 0
}
Item {
id: _notifRightConnectorBlurAnchor
opacity: 0
readonly property real _radius: win._notifConnectorRadiusRight
readonly property bool _active: _notifBodySceneBlurAnchor._active && _radius > 0
readonly property var _rect: SurfaceGeometry.connectorRect(win._notifDescriptor.barSide, _notifBodySceneBlurAnchor, "right", 0, _radius, win._dpr)
x: _active ? _rect.x : 0
y: _active ? _rect.y : 0
width: _active ? _rect.width : 0
height: _active ? _rect.height : 0
}
Item {
id: _notifLeftConnectorCutout
opacity: 0
readonly property bool _active: _notifLeftConnectorBlurAnchor.width > 0 && _notifLeftConnectorBlurAnchor.height > 0
readonly property string _arcCorner: ConnectorGeometry.arcCorner(win._notifState.barSide, "left")
readonly property real _radius: win._notifConnectorRadiusLeft
x: _active ? win._connectorCutoutX(_notifLeftConnectorBlurAnchor.x, _notifLeftConnectorBlurAnchor.width, _arcCorner, _radius) : 0
y: _active ? win._connectorCutoutY(_notifLeftConnectorBlurAnchor.y, _notifLeftConnectorBlurAnchor.height, _arcCorner, _radius) : 0
width: _active ? _radius * 2 : 0
height: _active ? _radius * 2 : 0
}
Item {
id: _notifRightConnectorCutout
opacity: 0
readonly property bool _active: _notifRightConnectorBlurAnchor.width > 0 && _notifRightConnectorBlurAnchor.height > 0
readonly property string _arcCorner: ConnectorGeometry.arcCorner(win._notifState.barSide, "right")
readonly property real _radius: win._notifConnectorRadiusRight
x: _active ? win._connectorCutoutX(_notifRightConnectorBlurAnchor.x, _notifRightConnectorBlurAnchor.width, _arcCorner, _radius) : 0
y: _active ? win._connectorCutoutY(_notifRightConnectorBlurAnchor.y, _notifRightConnectorBlurAnchor.height, _arcCorner, _radius) : 0
width: _active ? _radius * 2 : 0
height: _active ? _radius * 2 : 0
}
Item {
id: _notifFarStartConnectorBlurAnchor
opacity: 0
readonly property real _radius: win._effectiveNotifFarStartCcr
readonly property bool _active: _notifBodySceneBlurAnchor._active && _radius > 0
readonly property var _rect: SurfaceGeometry.farConnectorRect(win._notifDescriptor.barSide, _notifBodySceneBlurAnchor, "left", _radius, win._dpr)
x: _active ? _rect.x : 0
y: _active ? _rect.y : 0
width: _active ? _rect.width : 0
height: _active ? _rect.height : 0
}
Item {
id: _notifFarStartBodyBlurCap
opacity: 0
readonly property real _radius: win._effectiveNotifFarStartCcr
readonly property bool _active: _notifBodySceneBlurAnchor._active && _radius > 0
readonly property var _rect: SurfaceGeometry.farBodyCapRect(win._notifDescriptor.barSide, _notifBodySceneBlurAnchor, "left", _radius, win._dpr)
x: _active ? _rect.x : 0
y: _active ? _rect.y : 0
width: _active ? _rect.width : 0
height: _active ? _rect.height : 0
}
Item {
id: _notifFarEndBodyBlurCap
opacity: 0
readonly property real _radius: win._effectiveNotifFarEndCcr
readonly property bool _active: _notifBodySceneBlurAnchor._active && _radius > 0
readonly property var _rect: SurfaceGeometry.farBodyCapRect(win._notifDescriptor.barSide, _notifBodySceneBlurAnchor, "right", _radius, win._dpr)
x: _active ? _rect.x : 0
y: _active ? _rect.y : 0
width: _active ? _rect.width : 0
height: _active ? _rect.height : 0
}
Item {
id: _notifFarEndConnectorBlurAnchor
opacity: 0
readonly property real _radius: win._effectiveNotifFarEndCcr
readonly property bool _active: _notifBodySceneBlurAnchor._active && _radius > 0
readonly property var _rect: SurfaceGeometry.farConnectorRect(win._notifDescriptor.barSide, _notifBodySceneBlurAnchor, "right", _radius, win._dpr)
x: _active ? _rect.x : 0
y: _active ? _rect.y : 0
width: _active ? _rect.width : 0
height: _active ? _rect.height : 0
}
Item {
id: _notifFarStartConnectorCutout
opacity: 0
readonly property bool _active: _notifFarStartConnectorBlurAnchor.width > 0 && _notifFarStartConnectorBlurAnchor.height > 0
readonly property string _barSide: win._farConnectorBarSide(win._notifState.barSide, "left")
readonly property string _placement: win._farConnectorPlacement(win._notifState.barSide, "left")
readonly property string _arcCorner: ConnectorGeometry.arcCorner(_barSide, _placement)
readonly property real _radius: win._effectiveNotifFarStartCcr
x: _active ? win._connectorCutoutX(_notifFarStartConnectorBlurAnchor.x, _notifFarStartConnectorBlurAnchor.width, _arcCorner, _radius) : 0
y: _active ? win._connectorCutoutY(_notifFarStartConnectorBlurAnchor.y, _notifFarStartConnectorBlurAnchor.height, _arcCorner, _radius) : 0
width: _active ? _radius * 2 : 0
height: _active ? _radius * 2 : 0
}
Item {
id: _notifFarEndConnectorCutout
opacity: 0
readonly property bool _active: _notifFarEndConnectorBlurAnchor.width > 0 && _notifFarEndConnectorBlurAnchor.height > 0
readonly property string _barSide: win._farConnectorBarSide(win._notifState.barSide, "right")
readonly property string _placement: win._farConnectorPlacement(win._notifState.barSide, "right")
readonly property string _arcCorner: ConnectorGeometry.arcCorner(_barSide, _placement)
readonly property real _radius: win._effectiveNotifFarEndCcr
x: _active ? win._connectorCutoutX(_notifFarEndConnectorBlurAnchor.x, _notifFarEndConnectorBlurAnchor.width, _arcCorner, _radius) : 0
y: _active ? win._connectorCutoutY(_notifFarEndConnectorBlurAnchor.y, _notifFarEndConnectorBlurAnchor.height, _arcCorner, _radius) : 0
width: _active ? _radius * 2 : 0
height: _active ? _radius * 2 : 0
}
Region {
id: _staticBlurRegion
x: 0
y: 0
width: win._windowRegionWidth
height: win._windowRegionHeight
// Frame cutout (always active when frame is on)
Region {
item: _blurCutout
intersection: Intersection.Subtract
radius: win._blurCutoutRadius
}
Region {
item: _popoutBodyBlurAnchor
radius: win._surfaceRadius
}
Region {
item: _popoutBodyBlurCap
}
Region {
item: _popoutLeftConnectorBlurAnchor
Region {
item: _popoutLeftConnectorCutout
intersection: Intersection.Subtract
radius: win._popoutConnectorRadiusLeft
}
}
Region {
item: _popoutRightConnectorBlurAnchor
Region {
item: _popoutRightConnectorCutout
intersection: Intersection.Subtract
radius: win._popoutConnectorRadiusRight
}
}
Region {
item: _popoutFarStartBodyBlurCap
}
Region {
item: _popoutFarEndBodyBlurCap
}
Region {
item: _popoutFarStartConnectorBlurAnchor
Region {
item: _popoutFarStartConnectorCutout
intersection: Intersection.Subtract
radius: win._effectivePopoutFarStartCcr
}
}
Region {
item: _popoutFarEndConnectorBlurAnchor
Region {
item: _popoutFarEndConnectorCutout
intersection: Intersection.Subtract
radius: win._effectivePopoutFarEndCcr
}
}
Region {
item: _dockBodyBlurAnchor
radius: win._dockBodyBlurRadiusValue
}
Region {
item: _dockBodyBlurCap
}
Region {
item: _dockLeftConnectorBlurAnchor
Region {
item: _dockLeftConnectorCutout
intersection: Intersection.Subtract
radius: win._dockConnectorRadiusValue
}
}
Region {
item: _dockRightConnectorBlurAnchor
Region {
item: _dockRightConnectorCutout
intersection: Intersection.Subtract
radius: win._dockConnectorRadiusValue
}
}
Region {
item: _notifBodySceneBlurAnchor
radius: win._surfaceRadius
}
Region {
item: _notifBodyBlurCap
}
Region {
item: _notifLeftConnectorBlurAnchor
Region {
item: _notifLeftConnectorCutout
intersection: Intersection.Subtract
radius: win._notifConnectorRadiusLeft
}
}
Region {
item: _notifRightConnectorBlurAnchor
Region {
item: _notifRightConnectorCutout
intersection: Intersection.Subtract
radius: win._notifConnectorRadiusRight
}
}
Region {
item: _notifFarStartBodyBlurCap
}
Region {
item: _notifFarEndBodyBlurCap
}
Region {
item: _notifFarStartConnectorBlurAnchor
Region {
item: _notifFarStartConnectorCutout
intersection: Intersection.Subtract
radius: win._effectiveNotifFarStartCcr
}
}
Region {
item: _notifFarEndConnectorBlurAnchor
Region {
item: _notifFarEndConnectorCutout
intersection: Intersection.Subtract
radius: win._effectiveNotifFarEndCcr
}
}
Region {
item: _modalBodyBlurAnchor
radius: win._surfaceRadius
}
Region {
item: _modalBodyBlurCap
}
Region {
item: _modalLeftConnectorBlurAnchor
Region {
item: _modalLeftConnectorCutout
intersection: Intersection.Subtract
radius: win._modalConnectorRadiusLeft
}
}
Region {
item: _modalRightConnectorBlurAnchor
Region {
item: _modalRightConnectorCutout
intersection: Intersection.Subtract
radius: win._modalConnectorRadiusRight
}
}
Region {
item: _modalFarStartBodyBlurCap
}
Region {
item: _modalFarEndBodyBlurCap
}
Region {
item: _modalFarStartConnectorBlurAnchor
Region {
item: _modalFarStartConnectorCutout
intersection: Intersection.Subtract
radius: win._effectiveModalFarStartCcr
}
}
Region {
item: _modalFarEndConnectorBlurAnchor
Region {
item: _modalFarEndConnectorCutout
intersection: Intersection.Subtract
radius: win._effectiveModalFarEndCcr
}
}
}
// Notif body scene rect, accounting for start/end/side underlaps per bar orientation.
function _notifBodyScene() {
const isHoriz = ConnectorGeometry.isHorizontal(win._notifState.barSide);
const start = win._notifStartUnderlapValue;
const end = win._notifEndUnderlapValue;
const side = win._notifSideUnderlapValue;
if (isHoriz) {
return {
"x": _notifBodyBlurAnchor.x - start,
"y": _notifBodyBlurAnchor.y,
"width": _notifBodyBlurAnchor.width + start + end,
"height": _notifBodyBlurAnchor.height
};
}
return {
"x": _notifBodyBlurAnchor.x - (win._notifState.barSide === "left" ? side : 0),
"y": _notifBodyBlurAnchor.y - start,
"width": _notifBodyBlurAnchor.width + side,
"height": _notifBodyBlurAnchor.height + start + end
};
}
function _modalBlurCapThickness() {
const extent = win._modalArcExtent;
return Math.max(0, Math.min(win._effectiveModalCcr, extent - win._surfaceRadius));
}
function _popoutArcVisible() {
if (!_popoutBodyBlurAnchor._active || _popoutBodyBlurAnchor.width <= 0 || _popoutBodyBlurAnchor.height <= 0)
return false;
return win._popoutArcExtent >= win._ccr * (1 + win._ccr * 0.02);
}
function _popoutBlurCapThickness() {
const extent = win._popoutArcExtent;
return Math.max(0, Math.min(win._effectivePopoutMaxCcr, extent - win._surfaceRadius));
}
function _popoutChromeX() {
return win._popoutChromeGeometry.x;
}
function _popoutChromeY() {
return win._popoutChromeGeometry.y;
}
function _popoutChromeWidth() {
return win._popoutChromeGeometry.width;
}
function _popoutChromeHeight() {
return win._popoutChromeGeometry.height;
}
function _popoutClipX() {
return _popoutBodyBlurAnchor.x - win._popoutChromeX() - win._popoutFillOverlapXValue;
}
function _popoutClipY() {
return _popoutBodyBlurAnchor.y - win._popoutChromeY() - win._popoutFillOverlapYValue;
}
function _popoutClipWidth() {
return _popoutBodyBlurAnchor.width + win._popoutFillOverlapXValue * 2;
}
function _popoutClipHeight() {
return _popoutBodyBlurAnchor.height + win._popoutFillOverlapYValue * 2;
}
function _popoutShapeBodyOffsetX() {
const side = win._popoutState.barSide;
if (ConnectorGeometry.isHorizontal(side))
return win._effectivePopoutStartCcr;
return side === "right" ? win._effectivePopoutFarExtent : 0;
}
function _popoutShapeBodyOffsetY() {
const side = win._popoutState.barSide;
if (ConnectorGeometry.isHorizontal(side))
return side === "bottom" ? win._effectivePopoutFarExtent : 0;
return win._effectivePopoutStartCcr;
}
function _popoutShapeWidth() {
const side = win._popoutState.barSide;
if (ConnectorGeometry.isHorizontal(side))
return win._popoutClipWidth() + win._effectivePopoutStartCcr + win._effectivePopoutEndCcr;
return win._popoutClipWidth() + win._effectivePopoutFarExtent;
}
function _popoutShapeHeight() {
const side = win._popoutState.barSide;
if (ConnectorGeometry.isHorizontal(side))
return win._popoutClipHeight() + win._effectivePopoutFarExtent;
return win._popoutClipHeight() + win._effectivePopoutStartCcr + win._effectivePopoutEndCcr;
}
function _popoutBodyXInClip() {
return (win._popoutState.barSide === "left" ? _popoutBodyBlurAnchor._dxClamp : 0) - win._popoutFillOverlapXValue;
}
function _popoutBodyYInClip() {
return (win._popoutState.barSide === "top" ? _popoutBodyBlurAnchor._dyClamp : 0) - win._popoutFillOverlapYValue;
}
function _popoutBodyFullWidth() {
return win._popoutState.bodyW + win._popoutFillOverlapXValue * 2;
}
function _popoutBodyFullHeight() {
return win._popoutState.bodyH + win._popoutFillOverlapYValue * 2;
}
// Active connected surfaces fed to the unified silhouette path. Raw animated
// body rects (no seam/fill overlap); the builder anchors each to the cutout
// edge. Connector radii match what each ConnectedShape would receive.
function _unifiedSurfaces() {
const arr = [];
const p = win._popoutBodyGeometry;
if (win._popoutDescriptor.visible && win._popoutState.screen === win._screenName && p.width > 0 && p.height > 0)
arr.push({
"side": win._popoutDescriptor.barSide,
"body": {"x": p.x, "y": p.y, "width": p.width, "height": p.height},
"radii": {
"startCr": win._effectivePopoutStartCcr,
"endCr": win._effectivePopoutEndCcr,
"farStartCr": win._effectivePopoutFarStartCcr,
"farEndCr": win._effectivePopoutFarEndCcr,
"surfaceRadius": win._surfaceRadius
}
});
const m = win._modalBodyGeometry;
if (win._frameActive && win._modalDescriptor.visible && m.width > 0 && m.height > 0)
arr.push({
"side": win._modalDescriptor.barSide,
"body": {"x": m.x, "y": m.y, "width": m.width, "height": m.height},
"radii": {
"startCr": win._effectiveModalStartCcr,
"endCr": win._effectiveModalEndCcr,
"farStartCr": win._effectiveModalFarStartCcr,
"farEndCr": win._effectiveModalFarEndCcr,
"surfaceRadius": win._surfaceRadius
}
});
const n = win._notifBodyGeometry;
if (win._frameActive && win._notifDescriptor.visible && n.width > 0 && n.height > 0)
arr.push({
"side": win._notifDescriptor.barSide,
"body": {"x": n.x, "y": n.y, "width": n.width, "height": n.height},
"radii": {
"startCr": win._effectiveNotifStartCcr,
"endCr": win._effectiveNotifEndCcr,
"farStartCr": win._effectiveNotifFarStartCcr,
"farEndCr": win._effectiveNotifFarEndCcr,
"surfaceRadius": win._surfaceRadius
}
});
const dk = win._dockBodyGeometry;
if (win._connectedActive && win._dockDescriptor.visible && dk.width > 0 && dk.height > 0)
arr.push({
"side": win._dockDescriptor.barSide,
"body": {"x": dk.x, "y": dk.y, "width": dk.width, "height": dk.height},
"radii": {
"startCr": win._dockConnectorRadiusValue,
"endCr": win._dockConnectorRadiusValue,
"farStartCr": 0,
"farEndCr": 0,
"surfaceRadius": win._dockBodyBlurRadiusValue
}
});
return arr;
}
function _dockChromeX() {
return win._dockChromeGeometry.x;
}
function _dockChromeY() {
return win._dockChromeGeometry.y;
}
function _dockChromeWidth() {
return win._dockChromeGeometry.width;
}
function _dockChromeHeight() {
return win._dockChromeGeometry.height;
}
function _dockBodyXInChrome() {
return (ConnectorGeometry.isHorizontal(win._dockState.barSide) ? win._dockConnectorRadiusValue : 0) - win._dockFillOverlapXValue;
}
function _dockBodyYInChrome() {
return ((win._dockState.barSide === "left" || win._dockState.barSide === "right") ? win._dockConnectorRadiusValue : 0) - win._dockFillOverlapYValue;
}
function _dockJoinOverlapXOffset() {
return win._dockState.barSide === "left" ? -win._dockJoinOverlapXValue : 0;
}
function _dockJoinOverlapYOffset() {
return win._dockState.barSide === "top" ? -win._dockJoinOverlapYValue : 0;
}
function _farConnectorBarSide(sourceSide, placement) {
if (sourceSide === "top" || sourceSide === "bottom")
return placement === "left" ? "left" : "right";
return placement === "left" ? "top" : "bottom";
}
function _farConnectorPlacement(sourceSide, placement) {
if (sourceSide === "top")
return "right";
if (sourceSide === "bottom")
return "left";
if (sourceSide === "left")
return "right";
return "left";
}
function _connectorCutoutX(connectorX, connectorWidth, arcCorner, radius) {
const r = radius === undefined ? win._effectivePopoutCcr : radius;
return (arcCorner === "topLeft" || arcCorner === "bottomLeft") ? connectorX - r : connectorX + connectorWidth - r;
}
function _connectorCutoutY(connectorY, connectorHeight, arcCorner, radius) {
const r = radius === undefined ? win._effectivePopoutCcr : radius;
return (arcCorner === "topLeft" || arcCorner === "topRight") ? connectorY - r : connectorY + connectorHeight - r;
}
function _buildBlur(forceRepublish) {
try {
if (!BlurService.enabled || !SettingsData.frameBlurEnabled || !win._frameActive || !win.visible) {
win.BackgroundEffect.blurRegion = null;
return;
}
if (forceRepublish)
win.BackgroundEffect.blurRegion = null;
win.BackgroundEffect.blurRegion = _staticBlurRegion;
} catch (e) {
win.log.warn("Failed to set blur region:", e);
}
}
function _teardownBlur() {
try {
win.BackgroundEffect.blurRegion = null;
} catch (e) {}
}
// Coalesce bursts of settings-change signals into a single _buildBlur() call
// on the next event loop tick.
DeferredAction {
id: blurRebuildAction
onTriggered: win._runBlurRebuild()
}
function _scheduleBlurRebuild() {
blurRebuildAction.schedule();
}
function _runBlurRebuild() {
_buildBlur(false);
}
function _republishFrameBlur() {
_buildBlur(true);
}
function _requestContentUpdate() {
try {
if (win.contentItem && typeof win.contentItem.update === "function")
win.contentItem.update();
} catch (e) {}
}
function _scheduleSurfaceRefresh(recreateLayer) {
if (recreateLayer)
_surfaceRefreshNeedsLayerRecreate = true;
surfaceRefreshAction.restart();
}
function _runSurfaceRefresh() {
if (!win.visible)
return;
if (_surfaceRefreshNeedsLayerRecreate) {
_surfaceRefreshNeedsLayerRecreate = false;
if (win._elevationShadow) {
_surfaceLayerRecoveryActive = true;
surfaceLayerRestoreAction.restart();
}
}
_requestContentUpdate();
_republishFrameBlur();
}
function _finishSurfaceLayerRecovery() {
_surfaceLayerRecoveryActive = false;
_requestContentUpdate();
_republishFrameBlur();
}
DeferredAction {
id: surfaceRefreshAction
onTriggered: win._runSurfaceRefresh()
}
DeferredAction {
id: surfaceLayerRestoreAction
onTriggered: win._finishSurfaceLayerRecovery()
}
Connections {
target: SettingsData
function onFrameBlurEnabledChanged() {
win._scheduleBlurRebuild();
}
function onFrameEnabledChanged() {
win._scheduleBlurRebuild();
}
function onFrameThicknessChanged() {
win._scheduleBlurRebuild();
}
function onFrameBarSizeChanged() {
win._scheduleBlurRebuild();
}
function onFrameOpacityChanged() {
win._scheduleBlurRebuild();
}
function onFrameRoundingChanged() {
win._scheduleBlurRebuild();
}
function onFrameScreenPreferencesChanged() {
win._scheduleBlurRebuild();
}
function onBarConfigsChanged() {
win._scheduleBlurRebuild();
}
function onConnectedFrameModeActiveChanged() {
win._scheduleBlurRebuild();
}
function onFrameCloseGapsChanged() {
win._scheduleBlurRebuild();
}
}
Connections {
target: BlurService
function onEnabledChanged() {
win._scheduleBlurRebuild();
}
}
onVisibleChanged: {
if (visible) {
win._scheduleBlurRebuild();
win._scheduleSurfaceRefresh(false);
} else {
surfaceRefreshAction.cancel();
surfaceLayerRestoreAction.cancel();
_surfaceLayerRecoveryActive = false;
_surfaceRefreshNeedsLayerRecreate = false;
_teardownBlur();
}
}
on_SurfaceRevisionChanged: win._scheduleSurfaceRefresh(false)
onResourcesLost: {
blurRebuildAction.cancel();
surfaceRefreshAction.cancel();
surfaceLayerRestoreAction.cancel();
_surfaceRefreshNeedsLayerRecreate = true;
if (win._elevationShadow)
_surfaceLayerRecoveryActive = true;
win._teardownBlur();
}
onWindowConnected: {
win._scheduleSurfaceRefresh(true);
win._scheduleBlurRebuild();
}
Component.onCompleted: {
win._scheduleBlurRebuild();
win._scheduleSurfaceRefresh(false);
}
Component.onDestruction: {
blurRebuildAction.cancel();
surfaceRefreshAction.cancel();
surfaceLayerRestoreAction.cancel();
win._teardownBlur();
}
FrameBorder {
anchors.fill: parent
visible: win._frameActive && !win._connectedActive
cutoutTopInset: win.cutoutTopInset
cutoutBottomInset: win.cutoutBottomInset
cutoutLeftInset: win.cutoutLeftInset
cutoutRightInset: win.cutoutRightInset
cutoutRadius: win.cutoutRadius
}
Item {
id: _connectedSurfaceLayer
anchors.fill: parent
visible: win._connectedActive
// Elevation-off draws the silhouette directly at the surface color, so
// group opacity is 1. Elevation-on draws children opaque and applies the
// surface alpha to the whole group beneath the shadow.
opacity: win._elevationShadow ? win._surfaceOpacity : 1
// FBO is allocated only to source the elevation shadow.
layer.enabled: win._elevationShadow && !win._surfaceLayerRecoveryActive
layer.smooth: false
layer.effect: MultiEffect {
readonly property var level: Theme.elevationLevel2
readonly property real _shadowBlur: Theme.elevationEnabled ? (level && level.blurPx !== undefined ? level.blurPx : 0) : 0
readonly property real _shadowSpread: Theme.elevationEnabled ? (level && level.spreadPx !== undefined ? level.spreadPx : 0) : 0
autoPaddingEnabled: true
blurEnabled: false
maskEnabled: false
shadowEnabled: !win._disableLayer && Theme.elevationEnabled
shadowBlur: Math.max(0, Math.min(1, _shadowBlur / Math.max(1, Theme.elevationBlurMax)))
shadowScale: 1 + (2 * _shadowSpread) / Math.max(1, Math.min(_connectedSurfaceLayer.width, _connectedSurfaceLayer.height))
shadowHorizontalOffset: Theme.elevationOffsetXFor(level, Theme.elevationLightDirection, 4)
shadowVerticalOffset: Theme.elevationOffsetYFor(level, Theme.elevationLightDirection, 4)
shadowColor: Theme.elevationShadowColor(level)
shadowOpacity: 1
}
// Elevation-off: the entire connected silhouette (frame ring + every
// active chrome) as one SDF in a fragment shader. Analytic fwidth AA →
// crisp at any scale, no FBO; the smooth-min radius is the connector.
ShaderEffect {
anchors.fill: parent
visible: win._connectedActive && !win._elevationShadow
fragmentShader: Qt.resolvedUrl("../../Shaders/qsb/connected_arc.frag.qsb")
property real widthPx: width
property real heightPx: height
property real cutoutRadius: win.cutoutRadius
property vector4d cutout: Qt.vector4d(win.cutoutLeftInset, win.cutoutTopInset, win.width - win.cutoutRightInset, win.height - win.cutoutBottomInset)
property vector4d surfaceColor: Qt.vector4d(win._surfaceColor.r, win._surfaceColor.g, win._surfaceColor.b, win._surfaceColor.a)
property vector4d chromeRect0: win._sdfSlots[0].rect
property vector4d chromeCorner0: win._sdfSlots[0].corner
property vector4d chromeParam0: win._sdfSlots[0].param
property vector4d chromeRect1: win._sdfSlots[1].rect
property vector4d chromeCorner1: win._sdfSlots[1].corner
property vector4d chromeParam1: win._sdfSlots[1].param
property vector4d chromeRect2: win._sdfSlots[2].rect
property vector4d chromeCorner2: win._sdfSlots[2].corner
property vector4d chromeParam2: win._sdfSlots[2].param
property vector4d chromeRect3: win._sdfSlots[3].rect
property vector4d chromeCorner3: win._sdfSlots[3].corner
property vector4d chromeParam3: win._sdfSlots[3].param
}
// Elevation-on: opaque children flattened in the FBO so the MultiEffect
// can derive one shadow; the layer applies the surface alpha.
FrameBorder {
anchors.fill: parent
visible: win._elevationShadow
borderColor: win._opaqueSurfaceColor
cutoutTopInset: win.cutoutTopInset
cutoutBottomInset: win.cutoutBottomInset
cutoutLeftInset: win.cutoutLeftInset
cutoutRightInset: win.cutoutRightInset
cutoutRadius: win.cutoutRadius
}
Item {
id: _connectedChrome
anchors.fill: parent
visible: win._elevationShadow
Item {
id: _popoutChrome
visible: win._popoutState.visible && win._popoutState.screen === win._screenName
x: win._popoutChromeX()
y: win._popoutChromeY()
width: win._popoutChromeWidth()
height: win._popoutChromeHeight()
Item {
id: _popoutClip
x: win._popoutClipX() - win._popoutShapeBodyOffsetX()
y: win._popoutClipY() - win._popoutShapeBodyOffsetY()
width: win._popoutShapeWidth()
height: win._popoutShapeHeight()
clip: true
ConnectedShape {
id: _popoutShape
visible: _popoutBodyBlurAnchor._active && _popoutBodyBlurAnchor.width > 0 && _popoutBodyBlurAnchor.height > 0
barSide: win._popoutState.barSide
bodyWidth: win._popoutClipWidth()
bodyHeight: win._popoutClipHeight()
connectorRadius: win._effectivePopoutCcr
startConnectorRadius: win._effectivePopoutStartCcr
endConnectorRadius: win._effectivePopoutEndCcr
farStartConnectorRadius: win._effectivePopoutFarStartCcr
farEndConnectorRadius: win._effectivePopoutFarEndCcr
surfaceRadius: win._surfaceRadius
fillColor: win._opaqueSurfaceColor
x: 0
y: 0
}
}
}
Item {
id: _dockChrome
visible: _dockBodyBlurAnchor._active
x: win._dockChromeX()
y: win._dockChromeY()
width: win._dockChromeWidth()
height: win._dockChromeHeight()
Rectangle {
id: _dockFill
x: win._dockBodyXInChrome() + win._dockJoinOverlapXOffset()
y: win._dockBodyYInChrome() + win._dockJoinOverlapYOffset()
width: _dockBodyBlurAnchor.width + win._dockFillOverlapXValue * 2 + win._dockJoinOverlapXValue
height: _dockBodyBlurAnchor.height + win._dockFillOverlapYValue * 2 + win._dockJoinOverlapYValue
color: win._opaqueSurfaceColor
z: 1
readonly property string _dockSide: win._dockState.barSide
readonly property real _dockRadius: win._dockBodyBlurRadiusValue
topLeftRadius: (_dockSide === "top" || _dockSide === "left") ? 0 : _dockRadius
topRightRadius: (_dockSide === "top" || _dockSide === "right") ? 0 : _dockRadius
bottomLeftRadius: (_dockSide === "bottom" || _dockSide === "left") ? 0 : _dockRadius
bottomRightRadius: (_dockSide === "bottom" || _dockSide === "right") ? 0 : _dockRadius
}
ConnectedCorner {
id: _connDockLeft
visible: _dockBodyBlurAnchor._active
barSide: win._dockState.barSide
placement: "left"
spacing: 0
connectorRadius: win._dockConnectorRadiusValue
color: win._opaqueSurfaceColor
dpr: win._dpr
x: Theme.snap(_dockLeftConnectorBlurAnchor.x - _dockChrome.x, win._dpr)
y: Theme.snap(_dockLeftConnectorBlurAnchor.y - _dockChrome.y, win._dpr)
}
ConnectedCorner {
id: _connDockRight
visible: _dockBodyBlurAnchor._active
barSide: win._dockState.barSide
placement: "right"
spacing: 0
connectorRadius: win._dockConnectorRadiusValue
color: win._opaqueSurfaceColor
dpr: win._dpr
x: Theme.snap(_dockRightConnectorBlurAnchor.x - _dockChrome.x, win._dpr)
y: Theme.snap(_dockRightConnectorBlurAnchor.y - _dockChrome.y, win._dpr)
}
}
}
Item {
id: _notifChrome
visible: win._elevationShadow && _notifBodySceneBlurAnchor._active
readonly property string _notifSide: win._notifState.barSide
readonly property bool _isHoriz: _notifSide === "top" || _notifSide === "bottom"
readonly property real _startCcr: win._effectiveNotifStartCcr
readonly property real _endCcr: win._effectiveNotifEndCcr
readonly property real _farExtent: win._effectiveNotifFarExtent
readonly property real _bodyW: Theme.snap(_notifBodySceneBlurAnchor.width, win._dpr)
readonly property real _bodyH: Theme.snap(_notifBodySceneBlurAnchor.height, win._dpr)
readonly property var _geometry: SurfaceGeometry.chromeBounds(_notifBodySceneBlurAnchor, _notifSide, _startCcr, _endCcr, _farExtent, win._dpr)
z: _isHoriz ? 0 : -1
x: _geometry.x
y: _geometry.y
width: _geometry.width
height: _geometry.height
ConnectedShape {
visible: _notifBodySceneBlurAnchor._active && _notifBodySceneBlurAnchor.width > 0 && _notifBodySceneBlurAnchor.height > 0
barSide: _notifChrome._notifSide
bodyWidth: _notifChrome._bodyW
bodyHeight: _notifChrome._bodyH
connectorRadius: win._effectiveNotifCcr
startConnectorRadius: _notifChrome._startCcr
endConnectorRadius: _notifChrome._endCcr
farStartConnectorRadius: win._effectiveNotifFarStartCcr
farEndConnectorRadius: win._effectiveNotifFarEndCcr
surfaceRadius: win._surfaceRadius
fillColor: win._opaqueSurfaceColor
x: 0
y: 0
}
}
// Bar-side-bounded clip so modal chrome retracts behind the bar on exit
// instead of sliding over bar widgets (mirrors the popout `_popoutClip`).
Item {
id: _modalClip
visible: win._elevationShadow && _modalBodyBlurAnchor._active
z: 1
readonly property string _modalSide: win._modalState.barSide
readonly property real _inset: _modalBodyBlurAnchor._active && win.screen ? SettingsData.frameEdgeInsetForSide(win.screen, _modalSide) : 0
readonly property real _topBound: _modalSide === "top" ? _inset : 0
readonly property real _bottomBound: _modalSide === "bottom" ? (win.height - _inset) : win.height
readonly property real _leftBound: _modalSide === "left" ? _inset : 0
readonly property real _rightBound: _modalSide === "right" ? (win.width - _inset) : win.width
x: _leftBound
y: _topBound
width: Math.max(0, _rightBound - _leftBound)
height: Math.max(0, _bottomBound - _topBound)
clip: true
Item {
id: _modalChrome
readonly property string _modalSide: win._modalState.barSide
readonly property bool _isHoriz: _modalSide === "top" || _modalSide === "bottom"
readonly property real _startCcr: win._effectiveModalStartCcr
readonly property real _endCcr: win._effectiveModalEndCcr
readonly property real _farExtent: win._effectiveModalFarExtent
readonly property real _bodyW: Theme.snap(_modalBodyBlurAnchor.width, win._dpr)
readonly property real _bodyH: Theme.snap(_modalBodyBlurAnchor.height, win._dpr)
readonly property var _geometry: SurfaceGeometry.chromeBounds(_modalBodyBlurAnchor, _modalSide, _startCcr, _endCcr, _farExtent, win._dpr)
x: Theme.snap(_geometry.x - _modalClip.x, win._dpr)
y: Theme.snap(_geometry.y - _modalClip.y, win._dpr)
width: _geometry.width
height: _geometry.height
ConnectedShape {
visible: _modalBodyBlurAnchor._active && _modalChrome._bodyW > 0 && _modalChrome._bodyH > 0
barSide: _modalChrome._modalSide
bodyWidth: _modalChrome._bodyW
bodyHeight: _modalChrome._bodyH
connectorRadius: win._effectiveModalCcr
startConnectorRadius: _modalChrome._startCcr
endConnectorRadius: _modalChrome._endCcr
farStartConnectorRadius: win._effectiveModalFarStartCcr
farEndConnectorRadius: win._effectiveModalFarEndCcr
surfaceRadius: win._surfaceRadius
fillColor: win._opaqueSurfaceColor
x: 0
y: 0
}
}
}
}
}