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 }