UNPKG

@shopify/react-native-skia

Version:

High-performance React Native Graphics using Skia

137 lines (132 loc) 5.56 kB
import type { EmbindEnum } from "canvaskit-wasm"; import { AlphaType, BlurStyle, ClipOp, ColorType, FillType, FilterMode, FontEdging, FontHinting, FontSlant, FontWeight, FontWidth, ImageFormat, MipmapMode, PaintStyle, PathOp, PathVerb, PointMode, SaveLayerFlag, StrokeCap, StrokeJoin, TileMode, VertexMode, } from "../types"; import { Path1DEffectStyle } from "../types/PathEffect"; import { BlendMode } from "../types/Paint/BlendMode"; import { mapKeys } from "../../renderer/typeddash"; import { setupSkia } from "./setup"; const checkEnum = <T>(skiaEnum: T, canvasKitEnum: EmbindEnum) => { mapKeys(canvasKitEnum.values).forEach((key) => { const namedKey = skiaEnum[key as keyof T] as keyof T; const expected = skiaEnum[namedKey]; // eslint-disable-next-line @typescript-eslint/ban-ts-comment // @ts-expect-error const selectedEnum = canvasKitEnum[namedKey]; if (namedKey === undefined || selectedEnum === undefined) { console.log({ skiaEnum, canvasKitEnum, key, namedKey, expected }); } expect(selectedEnum).toBeDefined(); expect(expected).toBe(selectedEnum.value); }); }; describe("Enums", () => { it("Should match Paint enums values with CanvasKit", () => { const { CanvasKit } = setupSkia(); checkEnum(PaintStyle, CanvasKit.PaintStyle); checkEnum(StrokeCap, CanvasKit.StrokeCap); checkEnum(StrokeJoin, CanvasKit.StrokeJoin); checkEnum(BlendMode, CanvasKit.BlendMode); }); it("Should match TileMode enums values with CanvasKit", () => { const { CanvasKit } = setupSkia(); checkEnum(TileMode, CanvasKit.TileMode); }); it("Should match Font enums values with CanvasKit", () => { const { CanvasKit } = setupSkia(); checkEnum(FontHinting, CanvasKit.FontHinting); checkEnum(FontEdging, CanvasKit.FontEdging); checkEnum(FontSlant, CanvasKit.FontSlant); checkEnum(FontWidth, CanvasKit.FontWidth); checkEnum(FontWeight, CanvasKit.FontWeight); }); it("Should match PointMode enums values with CanvasKit", () => { const { CanvasKit } = setupSkia(); checkEnum(PointMode, CanvasKit.PointMode); }); it("Should match Image enums values with CanvasKit", () => { const { CanvasKit } = setupSkia(); checkEnum(ColorType, CanvasKit.ColorType); checkEnum(AlphaType, CanvasKit.AlphaType); checkEnum(ImageFormat, CanvasKit.ImageFormat); checkEnum(MipmapMode, CanvasKit.MipmapMode); checkEnum(FilterMode, CanvasKit.FilterMode); }); it("Should match Path enums values with CanvasKit", () => { const { CanvasKit } = setupSkia(); checkEnum(PathOp, CanvasKit.PathOp); checkEnum(FillType, CanvasKit.FillType); checkEnum(Path1DEffectStyle, CanvasKit.Path1DEffect); expect(PathVerb.Close).toBe(CanvasKit.CLOSE_VERB); expect(PathVerb.Conic).toBe(CanvasKit.CONIC_VERB); expect(PathVerb.Cubic).toBe(CanvasKit.CUBIC_VERB); expect(PathVerb.Line).toBe(CanvasKit.LINE_VERB); expect(PathVerb.Move).toBe(CanvasKit.MOVE_VERB); expect(PathVerb.Quad).toBe(CanvasKit.QUAD_VERB); }); it("Should match BlurStyle enums values with CanvasKit", () => { const { CanvasKit } = setupSkia(); checkEnum(BlurStyle, CanvasKit.BlurStyle); }); it("Should match VertexMode enums values with CanvasKit", () => { const { CanvasKit } = setupSkia(); expect(VertexMode.TriangleFan).toBe(CanvasKit.VertexMode.TriangleFan.value); expect(VertexMode.TriangleStrip).toBe( CanvasKit.VertexMode.TrianglesStrip.value ); expect(VertexMode.Triangles).toBe(CanvasKit.VertexMode.Triangles.value); }); it("Should match Canvas enums values with CanvasKit", () => { const { CanvasKit } = setupSkia(); expect(SaveLayerFlag.SaveLayerF16ColorType).toBe( CanvasKit.SaveLayerF16ColorType ); expect(SaveLayerFlag.SaveLayerInitWithPrevious).toBe( CanvasKit.SaveLayerInitWithPrevious ); checkEnum(ClipOp, CanvasKit.ClipOp); }); it("Should match color types with CanvasKit", () => { const { CanvasKit } = setupSkia(); //expect(CanvasKit.ColorType.Unknown.value).toBe(ColorType.Unknown); expect(CanvasKit.ColorType.Alpha_8.value).toBe(ColorType.Alpha_8); expect(CanvasKit.ColorType.RGB_565.value).toBe(ColorType.RGB_565); //expect(CanvasKit.ColorType.ARGB_4444.value).toBe(ColorType.ARGB_4444); expect(CanvasKit.ColorType.RGBA_8888.value).toBe(ColorType.RGBA_8888); //expect(CanvasKit.ColorType.RGB_888x.value).toBe(ColorType.RGB_888x); expect(CanvasKit.ColorType.BGRA_8888.value).toBe(ColorType.BGRA_8888); expect(CanvasKit.ColorType.RGBA_1010102.value).toBe(ColorType.RGBA_1010102); //expect(CanvasKit.ColorType.BGRA_1010102.value).toBe(ColorType.BGRA_1010102); expect(CanvasKit.ColorType.RGB_101010x.value).toBe(ColorType.RGB_101010x); //expect(CanvasKit.ColorType.BGR_101010x.value).toBe(ColorType.BGR_101010x); //expect(CanvasKit.ColorType.BGR_101010x_XR.value).toBe(ColorType.BGR_101010x_XR); //expect(CanvasKit.ColorType.BGRA_10101010_XR.value).toBe(ColorType.BGRA_10101010_XR); //expect(CanvasKit.ColorType.RGBA_10x6.value).toBe(ColorType.RGBA_10x6); expect(CanvasKit.ColorType.Gray_8.value).toBe(ColorType.Gray_8); //expect(CanvasKit.ColorType.RGBA_F16Norm.value).toBe(ColorType.RGBA_F16Norm); expect(CanvasKit.ColorType.RGBA_F16.value).toBe(ColorType.RGBA_F16); //expect(CanvasKit.ColorType.RGB_F16F16F16x.value).toBe(ColorType.RGB_F16F16F16x); expect(CanvasKit.ColorType.RGBA_F32.value).toBe(ColorType.RGBA_F32); }); });