Files
discord-decomp/modules/voice_panel/native/shared/CircleWithCutoutUtils.tsx
T
2026-11-01 12:12:55 +02:00

29 lines
1.2 KiB
TypeScript

// Metro module 10530 (f10531).
import Module8531, { Defs, Mask, Rect, Circle } from "../../../../_bundle/Module8531";
let c7072_5 = Math.PI / 180;
export default function CircleWithCutout(props) {
const { circleRadius, cutoutRadius, enableCutout, cutoutPositionInDegrees, circleFillColor } = props;
const height = 2 * circleRadius;
return <Module8531 height={height} width={height}>
<Defs>
<Mask id="mask">
<Rect width={height} height={height} fill="white" />
<Circle cx={circleRadius + circleRadius * Math.sin(cutoutPositionInDegrees * c7072_5)} cy={circleRadius - circleRadius * Math.cos(cutoutPositionInDegrees * c7072_5)} r={cutoutRadius} fill="black" />
</Mask>
</Defs>
<Circle cx={circleRadius} cy={circleRadius} r={circleRadius} fill={circleFillColor} mask={enableCutout ? "url(#mask)" : void 0} />
</Module8531>;
};
export function getBadgeTop(a0, a1, a2) {
return a1 - a1 * Math.cos(a2 * c7072_5) - a0;
}
export function getBadgeLeft(a0, a1, a2) {
return a1 + a1 * Math.sin(a2 * c7072_5) - a0;
}
export function getCutoutCenterX(a0, a1) {
return a0 + a0 * Math.sin(a1 * c7072_5);
}
export function getCutoutCenterY(a0, a1) {
return a0 - a0 * Math.cos(a1 * c7072_5);
}