2 * Copyright (c) 2022 Samsung Electronics Co., Ltd.
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
19 #include <dali/public-api/images/pixel.h>
22 #include <dali/integration-api/debug.h>
23 #include <dali/public-api/common/dali-common.h>
27 bool Pixel::IsCompressed(Format pixelformat)
31 case COMPRESSED_R11_EAC:
32 case COMPRESSED_SIGNED_R11_EAC:
33 case COMPRESSED_RG11_EAC:
34 case COMPRESSED_SIGNED_RG11_EAC:
35 case COMPRESSED_RGB8_ETC2:
36 case COMPRESSED_SRGB8_ETC2:
37 case COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2:
38 case COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2:
39 case COMPRESSED_RGBA8_ETC2_EAC:
40 case COMPRESSED_SRGB8_ALPHA8_ETC2_EAC:
41 case COMPRESSED_RGB8_ETC1:
42 case COMPRESSED_RGB_PVRTC_4BPPV1:
43 case COMPRESSED_RGBA_ASTC_4x4_KHR:
44 case COMPRESSED_RGBA_ASTC_5x4_KHR:
45 case COMPRESSED_RGBA_ASTC_5x5_KHR:
46 case COMPRESSED_RGBA_ASTC_6x5_KHR:
47 case COMPRESSED_RGBA_ASTC_6x6_KHR:
48 case COMPRESSED_RGBA_ASTC_8x5_KHR:
49 case COMPRESSED_RGBA_ASTC_8x6_KHR:
50 case COMPRESSED_RGBA_ASTC_8x8_KHR:
51 case COMPRESSED_RGBA_ASTC_10x5_KHR:
52 case COMPRESSED_RGBA_ASTC_10x6_KHR:
53 case COMPRESSED_RGBA_ASTC_10x8_KHR:
54 case COMPRESSED_RGBA_ASTC_10x10_KHR:
55 case COMPRESSED_RGBA_ASTC_12x10_KHR:
56 case COMPRESSED_RGBA_ASTC_12x12_KHR:
57 case COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR:
58 case COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR:
59 case COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR:
60 case COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR:
61 case COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR:
62 case COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR:
63 case COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR:
64 case COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR:
65 case COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR:
66 case COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR:
67 case COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR:
68 case COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR:
69 case COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR:
70 case COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR:
91 case DEPTH_UNSIGNED_INT:
104 bool Pixel::HasAlpha(Format pixelformat)
116 // Note, Can be used for alpha if you want: COMPRESSED_R11_EAC, ///< ETC2 / EAC single-channel, unsigned
117 // Note, Can be used for alpha if you want: COMPRESSED_SIGNED_R11_EAC, ///< ETC2 / EAC single-channel, signed
118 case COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2:
119 case COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2:
120 case COMPRESSED_RGBA8_ETC2_EAC:
121 case COMPRESSED_SRGB8_ALPHA8_ETC2_EAC:
122 case COMPRESSED_RGBA_ASTC_4x4_KHR:
123 case COMPRESSED_RGBA_ASTC_5x4_KHR:
124 case COMPRESSED_RGBA_ASTC_5x5_KHR:
125 case COMPRESSED_RGBA_ASTC_6x5_KHR:
126 case COMPRESSED_RGBA_ASTC_6x6_KHR:
127 case COMPRESSED_RGBA_ASTC_8x5_KHR:
128 case COMPRESSED_RGBA_ASTC_8x6_KHR:
129 case COMPRESSED_RGBA_ASTC_8x8_KHR:
130 case COMPRESSED_RGBA_ASTC_10x5_KHR:
131 case COMPRESSED_RGBA_ASTC_10x6_KHR:
132 case COMPRESSED_RGBA_ASTC_10x8_KHR:
133 case COMPRESSED_RGBA_ASTC_10x10_KHR:
134 case COMPRESSED_RGBA_ASTC_12x10_KHR:
135 case COMPRESSED_RGBA_ASTC_12x12_KHR:
136 case COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR:
137 case COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR:
138 case COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR:
139 case COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR:
140 case COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR:
141 case COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR:
142 case COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR:
143 case COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR:
144 case COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR:
145 case COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR:
146 case COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR:
147 case COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR:
148 case COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR:
149 case COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR:
157 case RGB8888: // alpha not used
158 case BGR8888: // alpha not used
160 case COMPRESSED_R11_EAC:
161 case COMPRESSED_SIGNED_R11_EAC:
162 case COMPRESSED_RG11_EAC:
163 case COMPRESSED_SIGNED_RG11_EAC:
164 case COMPRESSED_RGB8_ETC2:
165 case COMPRESSED_SRGB8_ETC2:
166 case COMPRESSED_RGB8_ETC1:
167 case COMPRESSED_RGB_PVRTC_4BPPV1:
170 case DEPTH_UNSIGNED_INT:
184 uint32_t Pixel::GetBytesPerPixel(Format pixelFormat)
216 case DEPTH_UNSIGNED_INT:
234 case COMPRESSED_R11_EAC:
235 case COMPRESSED_SIGNED_R11_EAC:
236 case COMPRESSED_RG11_EAC:
237 case COMPRESSED_SIGNED_RG11_EAC:
238 case COMPRESSED_RGB8_ETC2:
239 case COMPRESSED_SRGB8_ETC2:
240 case COMPRESSED_RGB8_ETC1:
241 case COMPRESSED_RGB_PVRTC_4BPPV1:
242 case COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2:
243 case COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2:
244 case COMPRESSED_RGBA8_ETC2_EAC:
245 case COMPRESSED_SRGB8_ALPHA8_ETC2_EAC:
246 case COMPRESSED_RGBA_ASTC_4x4_KHR:
247 case COMPRESSED_RGBA_ASTC_5x4_KHR:
248 case COMPRESSED_RGBA_ASTC_5x5_KHR:
249 case COMPRESSED_RGBA_ASTC_6x5_KHR:
250 case COMPRESSED_RGBA_ASTC_6x6_KHR:
251 case COMPRESSED_RGBA_ASTC_8x5_KHR:
252 case COMPRESSED_RGBA_ASTC_8x6_KHR:
253 case COMPRESSED_RGBA_ASTC_8x8_KHR:
254 case COMPRESSED_RGBA_ASTC_10x5_KHR:
255 case COMPRESSED_RGBA_ASTC_10x6_KHR:
256 case COMPRESSED_RGBA_ASTC_10x8_KHR:
257 case COMPRESSED_RGBA_ASTC_10x10_KHR:
258 case COMPRESSED_RGBA_ASTC_12x10_KHR:
259 case COMPRESSED_RGBA_ASTC_12x12_KHR:
260 case COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR:
261 case COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR:
262 case COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR:
263 case COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR:
264 case COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR:
265 case COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR:
266 case COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR:
267 case COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR:
268 case COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR:
269 case COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR:
270 case COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR:
271 case COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR:
272 case COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR:
273 case COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR:
276 DALI_LOG_ERROR("Pixel formats for compressed images do not have meaningful integer bits per pixel values.\n");
283 void Pixel::GetAlphaOffsetAndMask(Format pixelFormat, int& byteOffset, int& bitMask)
337 case COMPRESSED_R11_EAC:
338 case COMPRESSED_SIGNED_R11_EAC:
339 case COMPRESSED_RG11_EAC:
340 case COMPRESSED_SIGNED_RG11_EAC:
341 case COMPRESSED_RGB8_ETC2:
342 case COMPRESSED_SRGB8_ETC2:
343 case COMPRESSED_RGB8_ETC1:
344 case COMPRESSED_RGB_PVRTC_4BPPV1:
345 case COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2:
346 case COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2:
347 case COMPRESSED_RGBA8_ETC2_EAC:
348 case COMPRESSED_SRGB8_ALPHA8_ETC2_EAC:
349 case COMPRESSED_RGBA_ASTC_4x4_KHR:
350 case COMPRESSED_RGBA_ASTC_5x4_KHR:
351 case COMPRESSED_RGBA_ASTC_5x5_KHR:
352 case COMPRESSED_RGBA_ASTC_6x5_KHR:
353 case COMPRESSED_RGBA_ASTC_6x6_KHR:
354 case COMPRESSED_RGBA_ASTC_8x5_KHR:
355 case COMPRESSED_RGBA_ASTC_8x6_KHR:
356 case COMPRESSED_RGBA_ASTC_8x8_KHR:
357 case COMPRESSED_RGBA_ASTC_10x5_KHR:
358 case COMPRESSED_RGBA_ASTC_10x6_KHR:
359 case COMPRESSED_RGBA_ASTC_10x8_KHR:
360 case COMPRESSED_RGBA_ASTC_10x10_KHR:
361 case COMPRESSED_RGBA_ASTC_12x10_KHR:
362 case COMPRESSED_RGBA_ASTC_12x12_KHR:
363 case COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR:
364 case COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR:
365 case COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR:
366 case COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR:
367 case COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR:
368 case COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR:
369 case COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR:
370 case COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR:
371 case COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR:
372 case COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR:
373 case COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR:
374 case COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR:
375 case COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR:
376 case COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR:
379 case DEPTH_UNSIGNED_INT:
387 DALI_LOG_ERROR("Pixel formats are not compatible with simple masking-out of per-pixel alpha.\n");