Пример #1
0
        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);
        }
Пример #3
0
        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));
            }
        }
Пример #5
0
        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);
 }