Files
element-x-ios/ElementX/Sources/Other/SwiftUI/InverseMask.swift
T
Doug b46189d05f Add support for showing the user's own status over their avatar on the app's Settings button. (#5912)
* Add a common .inverseMask view modifier and use a blend mode for efficiency.

This also fixes the snapshot rendering 🎉

* Add support for the status emoji on the app's Setting button.

* Align the room header decoration icons with the status emoji.

* Add missing snapshots.
2026-07-22 14:53:32 +01:00

25 lines
768 B
Swift

//
// Copyright 2026 Element Creations Ltd.
//
// SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial.
// Please see LICENSE files in the repository root for full details.
//
import SwiftUI
extension View {
/// Masks this view using the inverted alpha channel of the given view.
///
/// The inverse of `mask(alignment:_:)`.
func inverseMask(alignment: Alignment = .center, @ViewBuilder _ inverseMask: () -> some View) -> some View {
mask {
Rectangle()
.overlay(alignment: alignment) {
inverseMask()
.blendMode(.destinationOut) // erases the rectangle wherever `mask` is opaque.
}
.compositingGroup()
}
}
}