public static WIC_FORMAT GetCompatiblePixelFormat(INTEROPFMT fmt) { if (TryGetExactPixelFormat(fmt, out var exact)) { return(exact); } switch (fmt.Code) { case INTEROPPIX.Alpha8.Code: case INTEROPPIX.BGRA4444.Code: case INTEROPPIX.BGRA5551.Code: case INTEROPPIX.RGBA32.Code: case INTEROPPIX.ARGB32.Code: return(WIC_FORMATS.Bgra32); // case Pixel.ARGB32P.Code: case INTEROPPIX.RGBP32.Code: case INTEROPPIX.BGRP32.Code: return(WIC_FORMATS.Pbgra32); case INTEROPPIX.BGR96F.Code: case INTEROPPIX.BGRA128F.Code: return(WIC_FORMATS.Rgba128Float); default: throw new NotImplementedException(); } }
public static bool TryGetPixelFormat(INTEROPFMT src, out SKIACOLOR dstColor, out SKIAALPHA dstAlpha, bool allowCompatibleFormats = false) { switch (src) { case INTEROPPIX.Alpha8.Code: dstColor = SKIACOLOR.Alpha8; dstAlpha = SKIAALPHA.Opaque; return(true); case INTEROPPIX.Luminance8.Code: dstColor = SKIACOLOR.Gray8; dstAlpha = SKIAALPHA.Opaque; return(true); case INTEROPPIX.BGR565.Code: dstColor = SKIACOLOR.Rgb565; dstAlpha = SKIAALPHA.Opaque; return(true); case INTEROPPIX.RGBA32.Code: dstColor = SKIACOLOR.Rgba8888; dstAlpha = SKIAALPHA.Unpremul; return(true); case INTEROPPIX.BGRA32.Code: dstColor = SKIACOLOR.Bgra8888; dstAlpha = SKIAALPHA.Unpremul; return(true); case INTEROPPIX.RGBA128F.Code: dstColor = SKIACOLOR.RgbaF32; dstAlpha = SKIAALPHA.Unpremul; return(true); } if (allowCompatibleFormats) { switch (src) { case INTEROPPIX.BGR24.Code: dstColor = SKIACOLOR.Rgb888x; dstAlpha = SKIAALPHA.Opaque; return(true); case INTEROPPIX.RGB24.Code: dstColor = SKIACOLOR.Rgb888x; dstAlpha = SKIAALPHA.Opaque; return(true); case INTEROPPIX.Luminance16.Code: dstColor = SKIACOLOR.Gray8; dstAlpha = SKIAALPHA.Opaque; return(true); } } dstColor = SKIACOLOR.Unknown; dstAlpha = SKIAALPHA.Unknown; return(false); }
public static bool TryGetExactPixelFormat(WIC_FORMAT inFmt, out INTEROPFMT outFmt) { if (inFmt == WIC_FORMATS.Gray8) { outFmt = INTEROPPIX.Luminance8.Format; return(true); } if (inFmt == WIC_FORMATS.Gray16) { outFmt = INTEROPPIX.Luminance16.Format; return(true); } if (inFmt == WIC_FORMATS.Gray32Float) { outFmt = INTEROPPIX.Luminance32F.Format; return(true); } if (inFmt == WIC_FORMATS.Bgr555) { outFmt = INTEROPPIX.BGRA5551.Format; return(true); } if (inFmt == WIC_FORMATS.Bgr565) { outFmt = INTEROPPIX.BGR565.Format; return(true); } if (inFmt == WIC_FORMATS.Bgr24) { outFmt = INTEROPPIX.BGR24.Format; return(true); } if (inFmt == WIC_FORMATS.Rgb24) { outFmt = INTEROPPIX.RGB24.Format; return(true); } if (inFmt == WIC_FORMATS.Bgr32) { outFmt = INTEROPPIX.BGRA32.Format; return(true); } if (inFmt == WIC_FORMATS.Bgra32) { outFmt = INTEROPPIX.BGRA32.Format; return(true); } if (inFmt == WIC_FORMATS.Pbgra32) { outFmt = INTEROPPIX.BGRA32.Format; return(true); } // not right if (inFmt == WIC_FORMATS.Rgba128Float) { outFmt = INTEROPPIX.RGBA128F.Format; return(true); } outFmt = default; return(false); }
public static VELDRIDPIXFMT From(INTEROPPIXFMT fmt) { switch (fmt.Code) { case INTEROPPIXEL.RGBA32.Code: return(VELDRIDPIXFMT.R8_G8_B8_A8_UNorm); case INTEROPPIXEL.BGRA32.Code: return(VELDRIDPIXFMT.B8_G8_R8_A8_UNorm); default: throw new NotImplementedException(nameof(fmt)); } }
public static bool TryGetExactPixelFormat(INTEROPFMT inFmt, out WIC_FORMAT outFmt) { switch (inFmt.Code) { case INTEROPPIX.Luminance8.Code: outFmt = WIC_FORMATS.Gray8; return(true); case INTEROPPIX.Luminance16.Code: outFmt = WIC_FORMATS.Gray16; return(true); case INTEROPPIX.Luminance32F.Code: outFmt = WIC_FORMATS.Gray32Float; return(true); case INTEROPPIX.BGR565.Code: outFmt = WIC_FORMATS.Bgr565; return(true); case INTEROPPIX.BGR24.Code: outFmt = WIC_FORMATS.Bgr24; return(true); case INTEROPPIX.RGB24.Code: outFmt = WIC_FORMATS.Rgb24; return(true); case INTEROPPIX.BGRA32.Code: outFmt = WIC_FORMATS.Bgra32; return(true); case INTEROPPIX.RGBA128F.Code: outFmt = WIC_FORMATS.Rgba128Float; return(true); } outFmt = default; return(false); }
public static (SKIACOLOR Color, SKIAALPHA Alpha) ToPixelFormat(INTEROPFMT fmt, bool allowCompatibleFormats = false) { TryGetPixelFormat(fmt, out var sc, out var sa, allowCompatibleFormats); return(sc, sa); }