public Color(RGBColorSpace colorSpace, double white, double opacity) { var opaqueRBGColorspaceMetadata = SwiftType.Of(typeof(RGBColorSpace)) !; var result = Marshal.AllocHGlobal(opaqueRBGColorspaceMetadata.NativeDataSize); try { GetSwiftUIColorSpace(colorSpace, result.ToPointer()); Data = CreateFromRGBColorSpaceWhiteOpacity(result.ToPointer(), white, opacity);; } catch { Marshal.FreeHGlobal(result); throw; } }
static void GetSwiftUIColorSpace(RGBColorSpace colorSpace, void *result) { switch (colorSpace) { case RGBColorSpace.sRGB: GetRGBColorSpacesRGB(result); break; case RGBColorSpace.DisplayP3: GetRGBColorSpaceDisplayP3(result); break; case RGBColorSpace.sRGBLinear: GetRGBColorSpacesRGBLinear(result); break; default: throw new NotSupportedException(); } }