1 module skia.EnumMappings; 2 3 // import skia.SKColorTypeNative; 4 import skia.Definitions; 5 import skia.Exceptions; 6 7 enum GRBackend { 8 Metal = 0, 9 OpenGL = 1, 10 Vulkan = 2, 11 Dawn = 3, 12 } 13 14 enum GRPixelConfig { 15 Unknown = 0, 16 Alpha8 = 1, 17 Gray8 = 2, 18 Rgb565 = 3, 19 Rgba4444 = 4, 20 Rgba8888 = 5, 21 Rgb888 = 6, 22 Bgra8888 = 7, 23 Srgba8888 = 8, 24 25 Sbgra8888 = 9, 26 Rgba1010102 = 10, 27 28 RgbaFloat = 11, 29 30 RgFloat = 12, 31 AlphaHalf = 13, 32 RgbaHalf = 14, 33 Alpha8AsAlpha = 15, 34 Alpha8AsRed = 16, 35 AlphaHalfAsLum = 17, 36 AlphaHalfAsRed = 18, 37 Gray8AsLum = 19, 38 Gray8AsRed = 20, 39 RgbaHalfClamped = 21, 40 Alpha16 = 22, 41 Rg1616 = 23, 42 Rgba16161616 = 24, 43 RgHalf = 25, 44 Rg88 = 26, 45 Rgb888x = 27, 46 RgbEtc1 = 28, 47 } 48 49 50 enum GRBackendNative { 51 // METAL_GR_BACKEND = 0 52 Metal = 0, 53 // DAWN_GR_BACKEND = 1 54 Dawn = 1, 55 // OPENGL_GR_BACKEND = 2 56 OpenGL = 2, 57 // VULKAN_GR_BACKEND = 3 58 Vulkan = 3, 59 } 60 61 alias ToNative = SkiaExtensions.ToNative; 62 alias FromNative = SkiaExtensions.FromNative; 63 64 class SkiaExtensions { 65 static GRBackendNative ToNative(GRBackend backend) { 66 switch (backend) { 67 case GRBackend.Metal: 68 return GRBackendNative.Metal; 69 case GRBackend.OpenGL: 70 return GRBackendNative.OpenGL; 71 case GRBackend.Vulkan: 72 return GRBackendNative.Vulkan; 73 case GRBackend.Dawn: 74 return GRBackendNative.Dawn; 75 default: 76 throw new ArgumentOutOfRangeException(backend.stringof); 77 } 78 } 79 80 static GRBackend FromNative(GRBackendNative backend) { 81 switch (backend) { 82 case GRBackendNative.Metal: 83 return GRBackend.Metal; 84 case GRBackendNative.OpenGL: 85 return GRBackend.OpenGL; 86 case GRBackendNative.Vulkan: 87 return GRBackend.Vulkan; 88 case GRBackendNative.Dawn: 89 return GRBackend.Dawn; 90 default: 91 throw new ArgumentOutOfRangeException(backend.stringof); 92 } 93 } 94 95 static SKColorTypeNative ToNative(SKColorType colorType) { 96 switch (colorType) { 97 case SKColorType.Unknown: 98 return SKColorTypeNative.Unknown; 99 case SKColorType.Alpha8: 100 return SKColorTypeNative.Alpha8; 101 case SKColorType.Rgb565: 102 return SKColorTypeNative.Rgb565; 103 case SKColorType.Argb4444: 104 return SKColorTypeNative.Argb4444; 105 case SKColorType.Rgba8888: 106 return SKColorTypeNative.Rgba8888; 107 case SKColorType.Rgb888x: 108 return SKColorTypeNative.Rgb888x; 109 case SKColorType.Bgra8888: 110 return SKColorTypeNative.Bgra8888; 111 case SKColorType.Rgba1010102: 112 return SKColorTypeNative.Rgba1010102; 113 case SKColorType.Rgb101010x: 114 return SKColorTypeNative.Rgb101010x; 115 case SKColorType.Gray8: 116 return SKColorTypeNative.Gray8; 117 case SKColorType.RgbaF16Clamped: 118 return SKColorTypeNative.RgbaF16Norm; 119 case SKColorType.RgbaF16: 120 return SKColorTypeNative.RgbaF16; 121 case SKColorType.RgbaF32: 122 return SKColorTypeNative.RgbaF32; 123 case SKColorType.Rg88: 124 return SKColorTypeNative.R8g8Unorm; 125 case SKColorType.AlphaF16: 126 return SKColorTypeNative.A16Float; 127 case SKColorType.RgF16: 128 return SKColorTypeNative.R16g16Float; 129 case SKColorType.Alpha16: 130 return SKColorTypeNative.A16Unorm; 131 case SKColorType.Rg1616: 132 return SKColorTypeNative.R16g16Unorm; 133 case SKColorType.Rgba16161616: 134 return SKColorTypeNative.R16g16b16a16Unorm; 135 default: 136 throw new ArgumentOutOfRangeException(colorType.stringof); 137 } 138 } 139 140 static SKColorType FromNative(SKColorTypeNative colorType) { 141 switch (colorType) { 142 case SKColorTypeNative.Unknown: 143 return SKColorType.Unknown; 144 case SKColorTypeNative.Alpha8: 145 return SKColorType.Alpha8; 146 case SKColorTypeNative.Rgb565: 147 return SKColorType.Rgb565; 148 case SKColorTypeNative.Argb4444: 149 return SKColorType.Argb4444; 150 case SKColorTypeNative.Rgba8888: 151 return SKColorType.Rgba8888; 152 case SKColorTypeNative.Rgb888x: 153 return SKColorType.Rgb888x; 154 case SKColorTypeNative.Bgra8888: 155 return SKColorType.Bgra8888; 156 case SKColorTypeNative.Rgba1010102: 157 return SKColorType.Rgba1010102; 158 case SKColorTypeNative.Rgb101010x: 159 return SKColorType.Rgb101010x; 160 case SKColorTypeNative.Gray8: 161 return SKColorType.Gray8; 162 case SKColorTypeNative.RgbaF16Norm: 163 return SKColorType.RgbaF16Clamped; 164 case SKColorTypeNative.RgbaF16: 165 return SKColorType.RgbaF16; 166 case SKColorTypeNative.RgbaF32: 167 return SKColorType.RgbaF32; 168 case SKColorTypeNative.R8g8Unorm: 169 return SKColorType.Rg88; 170 case SKColorTypeNative.A16Float: 171 return SKColorType.AlphaF16; 172 case SKColorTypeNative.R16g16Float: 173 return SKColorType.RgF16; 174 case SKColorTypeNative.A16Unorm: 175 return SKColorType.Alpha16; 176 case SKColorTypeNative.R16g16Unorm: 177 return SKColorType.Rg1616; 178 case SKColorTypeNative.R16g16b16a16Unorm: 179 return SKColorType.Rgba16161616; 180 default: 181 throw new ArgumentOutOfRangeException(colorType.stringof); 182 } 183 } 184 185 }