diff options
Diffstat (limited to 'src/common/color.h')
| -rw-r--r-- | src/common/color.h | 34 |
1 files changed, 17 insertions, 17 deletions
diff --git a/src/common/color.h b/src/common/color.h index 3a2222077..381d6332e 100644 --- a/src/common/color.h +++ b/src/common/color.h | |||
| @@ -13,42 +13,42 @@ | |||
| 13 | namespace Color { | 13 | namespace Color { |
| 14 | 14 | ||
| 15 | /// Convert a 1-bit color component to 8 bit | 15 | /// Convert a 1-bit color component to 8 bit |
| 16 | constexpr u8 Convert1To8(u8 value) { | 16 | [[nodiscard]] constexpr u8 Convert1To8(u8 value) { |
| 17 | return value * 255; | 17 | return value * 255; |
| 18 | } | 18 | } |
| 19 | 19 | ||
| 20 | /// Convert a 4-bit color component to 8 bit | 20 | /// Convert a 4-bit color component to 8 bit |
| 21 | constexpr u8 Convert4To8(u8 value) { | 21 | [[nodiscard]] constexpr u8 Convert4To8(u8 value) { |
| 22 | return (value << 4) | value; | 22 | return (value << 4) | value; |
| 23 | } | 23 | } |
| 24 | 24 | ||
| 25 | /// Convert a 5-bit color component to 8 bit | 25 | /// Convert a 5-bit color component to 8 bit |
| 26 | constexpr u8 Convert5To8(u8 value) { | 26 | [[nodiscard]] constexpr u8 Convert5To8(u8 value) { |
| 27 | return (value << 3) | (value >> 2); | 27 | return (value << 3) | (value >> 2); |
| 28 | } | 28 | } |
| 29 | 29 | ||
| 30 | /// Convert a 6-bit color component to 8 bit | 30 | /// Convert a 6-bit color component to 8 bit |
| 31 | constexpr u8 Convert6To8(u8 value) { | 31 | [[nodiscard]] constexpr u8 Convert6To8(u8 value) { |
| 32 | return (value << 2) | (value >> 4); | 32 | return (value << 2) | (value >> 4); |
| 33 | } | 33 | } |
| 34 | 34 | ||
| 35 | /// Convert a 8-bit color component to 1 bit | 35 | /// Convert a 8-bit color component to 1 bit |
| 36 | constexpr u8 Convert8To1(u8 value) { | 36 | [[nodiscard]] constexpr u8 Convert8To1(u8 value) { |
| 37 | return value >> 7; | 37 | return value >> 7; |
| 38 | } | 38 | } |
| 39 | 39 | ||
| 40 | /// Convert a 8-bit color component to 4 bit | 40 | /// Convert a 8-bit color component to 4 bit |
| 41 | constexpr u8 Convert8To4(u8 value) { | 41 | [[nodiscard]] constexpr u8 Convert8To4(u8 value) { |
| 42 | return value >> 4; | 42 | return value >> 4; |
| 43 | } | 43 | } |
| 44 | 44 | ||
| 45 | /// Convert a 8-bit color component to 5 bit | 45 | /// Convert a 8-bit color component to 5 bit |
| 46 | constexpr u8 Convert8To5(u8 value) { | 46 | [[nodiscard]] constexpr u8 Convert8To5(u8 value) { |
| 47 | return value >> 3; | 47 | return value >> 3; |
| 48 | } | 48 | } |
| 49 | 49 | ||
| 50 | /// Convert a 8-bit color component to 6 bit | 50 | /// Convert a 8-bit color component to 6 bit |
| 51 | constexpr u8 Convert8To6(u8 value) { | 51 | [[nodiscard]] constexpr u8 Convert8To6(u8 value) { |
| 52 | return value >> 2; | 52 | return value >> 2; |
| 53 | } | 53 | } |
| 54 | 54 | ||
| @@ -57,7 +57,7 @@ constexpr u8 Convert8To6(u8 value) { | |||
| 57 | * @param bytes Pointer to encoded source color | 57 | * @param bytes Pointer to encoded source color |
| 58 | * @return Result color decoded as Common::Vec4<u8> | 58 | * @return Result color decoded as Common::Vec4<u8> |
| 59 | */ | 59 | */ |
| 60 | inline Common::Vec4<u8> DecodeRGBA8(const u8* bytes) { | 60 | [[nodiscard]] inline Common::Vec4<u8> DecodeRGBA8(const u8* bytes) { |
| 61 | return {bytes[3], bytes[2], bytes[1], bytes[0]}; | 61 | return {bytes[3], bytes[2], bytes[1], bytes[0]}; |
| 62 | } | 62 | } |
| 63 | 63 | ||
| @@ -66,7 +66,7 @@ inline Common::Vec4<u8> DecodeRGBA8(const u8* bytes) { | |||
| 66 | * @param bytes Pointer to encoded source color | 66 | * @param bytes Pointer to encoded source color |
| 67 | * @return Result color decoded as Common::Vec4<u8> | 67 | * @return Result color decoded as Common::Vec4<u8> |
| 68 | */ | 68 | */ |
| 69 | inline Common::Vec4<u8> DecodeRGB8(const u8* bytes) { | 69 | [[nodiscard]] inline Common::Vec4<u8> DecodeRGB8(const u8* bytes) { |
| 70 | return {bytes[2], bytes[1], bytes[0], 255}; | 70 | return {bytes[2], bytes[1], bytes[0], 255}; |
| 71 | } | 71 | } |
| 72 | 72 | ||
| @@ -75,7 +75,7 @@ inline Common::Vec4<u8> DecodeRGB8(const u8* bytes) { | |||
| 75 | * @param bytes Pointer to encoded source color | 75 | * @param bytes Pointer to encoded source color |
| 76 | * @return Result color decoded as Common::Vec4<u8> | 76 | * @return Result color decoded as Common::Vec4<u8> |
| 77 | */ | 77 | */ |
| 78 | inline Common::Vec4<u8> DecodeRG8(const u8* bytes) { | 78 | [[nodiscard]] inline Common::Vec4<u8> DecodeRG8(const u8* bytes) { |
| 79 | return {bytes[1], bytes[0], 0, 255}; | 79 | return {bytes[1], bytes[0], 0, 255}; |
| 80 | } | 80 | } |
| 81 | 81 | ||
| @@ -84,7 +84,7 @@ inline Common::Vec4<u8> DecodeRG8(const u8* bytes) { | |||
| 84 | * @param bytes Pointer to encoded source color | 84 | * @param bytes Pointer to encoded source color |
| 85 | * @return Result color decoded as Common::Vec4<u8> | 85 | * @return Result color decoded as Common::Vec4<u8> |
| 86 | */ | 86 | */ |
| 87 | inline Common::Vec4<u8> DecodeRGB565(const u8* bytes) { | 87 | [[nodiscard]] inline Common::Vec4<u8> DecodeRGB565(const u8* bytes) { |
| 88 | u16_le pixel; | 88 | u16_le pixel; |
| 89 | std::memcpy(&pixel, bytes, sizeof(pixel)); | 89 | std::memcpy(&pixel, bytes, sizeof(pixel)); |
| 90 | return {Convert5To8((pixel >> 11) & 0x1F), Convert6To8((pixel >> 5) & 0x3F), | 90 | return {Convert5To8((pixel >> 11) & 0x1F), Convert6To8((pixel >> 5) & 0x3F), |
| @@ -96,7 +96,7 @@ inline Common::Vec4<u8> DecodeRGB565(const u8* bytes) { | |||
| 96 | * @param bytes Pointer to encoded source color | 96 | * @param bytes Pointer to encoded source color |
| 97 | * @return Result color decoded as Common::Vec4<u8> | 97 | * @return Result color decoded as Common::Vec4<u8> |
| 98 | */ | 98 | */ |
| 99 | inline Common::Vec4<u8> DecodeRGB5A1(const u8* bytes) { | 99 | [[nodiscard]] inline Common::Vec4<u8> DecodeRGB5A1(const u8* bytes) { |
| 100 | u16_le pixel; | 100 | u16_le pixel; |
| 101 | std::memcpy(&pixel, bytes, sizeof(pixel)); | 101 | std::memcpy(&pixel, bytes, sizeof(pixel)); |
| 102 | return {Convert5To8((pixel >> 11) & 0x1F), Convert5To8((pixel >> 6) & 0x1F), | 102 | return {Convert5To8((pixel >> 11) & 0x1F), Convert5To8((pixel >> 6) & 0x1F), |
| @@ -108,7 +108,7 @@ inline Common::Vec4<u8> DecodeRGB5A1(const u8* bytes) { | |||
| 108 | * @param bytes Pointer to encoded source color | 108 | * @param bytes Pointer to encoded source color |
| 109 | * @return Result color decoded as Common::Vec4<u8> | 109 | * @return Result color decoded as Common::Vec4<u8> |
| 110 | */ | 110 | */ |
| 111 | inline Common::Vec4<u8> DecodeRGBA4(const u8* bytes) { | 111 | [[nodiscard]] inline Common::Vec4<u8> DecodeRGBA4(const u8* bytes) { |
| 112 | u16_le pixel; | 112 | u16_le pixel; |
| 113 | std::memcpy(&pixel, bytes, sizeof(pixel)); | 113 | std::memcpy(&pixel, bytes, sizeof(pixel)); |
| 114 | return {Convert4To8((pixel >> 12) & 0xF), Convert4To8((pixel >> 8) & 0xF), | 114 | return {Convert4To8((pixel >> 12) & 0xF), Convert4To8((pixel >> 8) & 0xF), |
| @@ -120,7 +120,7 @@ inline Common::Vec4<u8> DecodeRGBA4(const u8* bytes) { | |||
| 120 | * @param bytes Pointer to encoded source value | 120 | * @param bytes Pointer to encoded source value |
| 121 | * @return Depth value as an u32 | 121 | * @return Depth value as an u32 |
| 122 | */ | 122 | */ |
| 123 | inline u32 DecodeD16(const u8* bytes) { | 123 | [[nodiscard]] inline u32 DecodeD16(const u8* bytes) { |
| 124 | u16_le data; | 124 | u16_le data; |
| 125 | std::memcpy(&data, bytes, sizeof(data)); | 125 | std::memcpy(&data, bytes, sizeof(data)); |
| 126 | return data; | 126 | return data; |
| @@ -131,7 +131,7 @@ inline u32 DecodeD16(const u8* bytes) { | |||
| 131 | * @param bytes Pointer to encoded source value | 131 | * @param bytes Pointer to encoded source value |
| 132 | * @return Depth value as an u32 | 132 | * @return Depth value as an u32 |
| 133 | */ | 133 | */ |
| 134 | inline u32 DecodeD24(const u8* bytes) { | 134 | [[nodiscard]] inline u32 DecodeD24(const u8* bytes) { |
| 135 | return (bytes[2] << 16) | (bytes[1] << 8) | bytes[0]; | 135 | return (bytes[2] << 16) | (bytes[1] << 8) | bytes[0]; |
| 136 | } | 136 | } |
| 137 | 137 | ||
| @@ -140,7 +140,7 @@ inline u32 DecodeD24(const u8* bytes) { | |||
| 140 | * @param bytes Pointer to encoded source values | 140 | * @param bytes Pointer to encoded source values |
| 141 | * @return Resulting values stored as a Common::Vec2 | 141 | * @return Resulting values stored as a Common::Vec2 |
| 142 | */ | 142 | */ |
| 143 | inline Common::Vec2<u32> DecodeD24S8(const u8* bytes) { | 143 | [[nodiscard]] inline Common::Vec2<u32> DecodeD24S8(const u8* bytes) { |
| 144 | return {static_cast<u32>((bytes[2] << 16) | (bytes[1] << 8) | bytes[0]), bytes[3]}; | 144 | return {static_cast<u32>((bytes[2] << 16) | (bytes[1] << 8) | bytes[0]), bytes[3]}; |
| 145 | } | 145 | } |
| 146 | 146 | ||