LibImage: name color to u32 function to to_argb from to_rgba
This is the actual format that it returns
This commit is contained in:
		
							parent
							
								
									8adc97980a
								
							
						
					
					
						commit
						d36b64e0c8
					
				|  | @ -7,7 +7,6 @@ | ||||||
| 
 | 
 | ||||||
| #include <fcntl.h> | #include <fcntl.h> | ||||||
| #include <math.h> | #include <math.h> | ||||||
| #include <stdlib.h> |  | ||||||
| #include <sys/mman.h> | #include <sys/mman.h> | ||||||
| 
 | 
 | ||||||
| namespace LibImage | namespace LibImage | ||||||
|  | @ -87,9 +86,9 @@ namespace LibImage | ||||||
| 		constexpr Image::Color as_color() const | 		constexpr Image::Color as_color() const | ||||||
| 		{ | 		{ | ||||||
| 			return Image::Color { | 			return Image::Color { | ||||||
| 				.r = static_cast<uint8_t>(r < 0.0 ? 0.0 : r > 255.0 ? 255.0 : r), |  | ||||||
| 				.g = static_cast<uint8_t>(g < 0.0 ? 0.0 : g > 255.0 ? 255.0 : g), |  | ||||||
| 				.b = static_cast<uint8_t>(b < 0.0 ? 0.0 : b > 255.0 ? 255.0 : b), | 				.b = static_cast<uint8_t>(b < 0.0 ? 0.0 : b > 255.0 ? 255.0 : b), | ||||||
|  | 				.g = static_cast<uint8_t>(g < 0.0 ? 0.0 : g > 255.0 ? 255.0 : g), | ||||||
|  | 				.r = static_cast<uint8_t>(r < 0.0 ? 0.0 : r > 255.0 ? 255.0 : r), | ||||||
| 				.a = static_cast<uint8_t>(a < 0.0 ? 0.0 : a > 255.0 ? 255.0 : a), | 				.a = static_cast<uint8_t>(a < 0.0 ? 0.0 : a > 255.0 ? 255.0 : a), | ||||||
| 			}; | 			}; | ||||||
| 		} | 		} | ||||||
|  |  | ||||||
|  | @ -560,52 +560,47 @@ namespace LibImage | ||||||
| 		const auto extract_color = | 		const auto extract_color = | ||||||
| 			[&](auto& bit_buffer) -> Image::Color | 			[&](auto& bit_buffer) -> Image::Color | ||||||
| 			{ | 			{ | ||||||
| 				uint8_t tmp; | 				Image::Color color; | ||||||
| 				switch (ihdr.colour_type) | 				switch (ihdr.colour_type) | ||||||
| 				{ | 				{ | ||||||
| 					case ColourType::Greyscale: | 					case ColourType::Greyscale: | ||||||
| 						tmp = extract_channel(bit_buffer); | 						color.r = extract_channel(bit_buffer); | ||||||
| 						return Image::Color { | 						color.g = color.r; | ||||||
| 							.r = tmp, | 						color.b = color.r; | ||||||
| 							.g = tmp, | 						color.a = 0xFF; | ||||||
| 							.b = tmp, | 						break; | ||||||
| 							.a = 0xFF |  | ||||||
| 						}; |  | ||||||
| 					case ColourType::Truecolour: | 					case ColourType::Truecolour: | ||||||
| 						return Image::Color { | 						color.r = extract_channel(bit_buffer); | ||||||
| 							.r = extract_channel(bit_buffer), | 						color.g = extract_channel(bit_buffer); | ||||||
| 							.g = extract_channel(bit_buffer), | 						color.b = extract_channel(bit_buffer); | ||||||
| 							.b = extract_channel(bit_buffer), | 						color.a = 0xFF; | ||||||
| 							.a = 0xFF | 						break; | ||||||
| 						}; |  | ||||||
| 					case ColourType::IndexedColour: | 					case ColourType::IndexedColour: | ||||||
| 						return palette[MUST(bit_buffer.get_bits(bits_per_channel))]; | 						color = palette[MUST(bit_buffer.get_bits(bits_per_channel))]; | ||||||
|  | 						break; | ||||||
| 					case ColourType::GreyscaleAlpha: | 					case ColourType::GreyscaleAlpha: | ||||||
| 						tmp = extract_channel(bit_buffer); | 						color.r = extract_channel(bit_buffer); | ||||||
| 						return Image::Color { | 						color.g = color.r; | ||||||
| 							.r = tmp, | 						color.b = color.r; | ||||||
| 							.g = tmp, | 						color.a = extract_channel(bit_buffer); | ||||||
| 							.b = tmp, | 						break; | ||||||
| 							.a = extract_channel(bit_buffer) |  | ||||||
| 						}; |  | ||||||
| 					case ColourType::TruecolourAlpha: | 					case ColourType::TruecolourAlpha: | ||||||
| 						return Image::Color { | 						color.r = extract_channel(bit_buffer); | ||||||
| 							.r = extract_channel(bit_buffer), | 						color.g = extract_channel(bit_buffer); | ||||||
| 							.g = extract_channel(bit_buffer), | 						color.b = extract_channel(bit_buffer); | ||||||
| 							.b = extract_channel(bit_buffer), | 						color.a = extract_channel(bit_buffer); | ||||||
| 							.a = extract_channel(bit_buffer) | 						break; | ||||||
| 						}; |  | ||||||
| 				} | 				} | ||||||
| 				ASSERT_NOT_REACHED(); | 				return color; | ||||||
| 			}; | 			}; | ||||||
| 
 | 
 | ||||||
| 		constexpr auto paeth_predictor = | 		constexpr auto paeth_predictor = | ||||||
| 			[](int16_t a, int16_t b, int16_t c) -> uint8_t | 			[](int16_t a, int16_t b, int16_t c) -> uint8_t | ||||||
| 			{ | 			{ | ||||||
| 				int16_t p = a + b - c; | 				const int16_t p = a + b - c; | ||||||
| 				int16_t pa = BAN::Math::abs(p - a); | 				const int16_t pa = BAN::Math::abs(p - a); | ||||||
| 				int16_t pb = BAN::Math::abs(p - b); | 				const int16_t pb = BAN::Math::abs(p - b); | ||||||
| 				int16_t pc = BAN::Math::abs(p - c); | 				const int16_t pc = BAN::Math::abs(p - c); | ||||||
| 				if (pa <= pb && pa <= pc) | 				if (pa <= pb && pa <= pc) | ||||||
| 					return a; | 					return a; | ||||||
| 				if (pb <= pc) | 				if (pb <= pc) | ||||||
|  |  | ||||||
|  | @ -13,9 +13,9 @@ namespace LibImage | ||||||
| 	public: | 	public: | ||||||
| 		struct Color | 		struct Color | ||||||
| 		{ | 		{ | ||||||
| 			uint8_t r; |  | ||||||
| 			uint8_t g; |  | ||||||
| 			uint8_t b; | 			uint8_t b; | ||||||
|  | 			uint8_t g; | ||||||
|  | 			uint8_t r; | ||||||
| 			uint8_t a; | 			uint8_t a; | ||||||
| 
 | 
 | ||||||
| 			// Calculate weighted average of colors
 | 			// Calculate weighted average of colors
 | ||||||
|  | @ -25,14 +25,14 @@ namespace LibImage | ||||||
| 				const double b_mult = weight < 0.0 ? 0.0 : weight > 1.0 ? 1.0 : weight; | 				const double b_mult = weight < 0.0 ? 0.0 : weight > 1.0 ? 1.0 : weight; | ||||||
| 				const double a_mult = 1.0 - b_mult; | 				const double a_mult = 1.0 - b_mult; | ||||||
| 				return Color { | 				return Color { | ||||||
| 					.r = static_cast<uint8_t>(a.r * a_mult + b.r * b_mult), |  | ||||||
| 					.g = static_cast<uint8_t>(a.g * a_mult + b.g * b_mult), |  | ||||||
| 					.b = static_cast<uint8_t>(a.b * a_mult + b.b * b_mult), | 					.b = static_cast<uint8_t>(a.b * a_mult + b.b * b_mult), | ||||||
|  | 					.g = static_cast<uint8_t>(a.g * a_mult + b.g * b_mult), | ||||||
|  | 					.r = static_cast<uint8_t>(a.r * a_mult + b.r * b_mult), | ||||||
| 					.a = static_cast<uint8_t>(a.a * a_mult + b.a * b_mult), | 					.a = static_cast<uint8_t>(a.a * a_mult + b.a * b_mult), | ||||||
| 				}; | 				}; | ||||||
| 			} | 			} | ||||||
| 
 | 
 | ||||||
| 			uint32_t as_rgba() const | 			uint32_t as_argb() const | ||||||
| 			{ | 			{ | ||||||
| 				return ((uint32_t)a << 24) | ((uint32_t)r << 16) | ((uint32_t)g << 8) | b; | 				return ((uint32_t)a << 24) | ((uint32_t)r << 16) | ((uint32_t)g << 8) | b; | ||||||
| 			} | 			} | ||||||
|  |  | ||||||
|  | @ -330,7 +330,7 @@ void WindowServer::invalidate(Rectangle area) | ||||||
| 		ASSERT(m_background_image->height() == (uint64_t)m_framebuffer.height); | 		ASSERT(m_background_image->height() == (uint64_t)m_framebuffer.height); | ||||||
| 		for (int32_t y = area.y; y < area.y + area.height; y++) | 		for (int32_t y = area.y; y < area.y + area.height; y++) | ||||||
| 			for (int32_t x = area.x; x < area.x + area.width; x++) | 			for (int32_t x = area.x; x < area.x + area.width; x++) | ||||||
| 				m_framebuffer.mmap[y * m_framebuffer.width + x] = m_background_image->get_color(x, y).as_rgba(); | 				m_framebuffer.mmap[y * m_framebuffer.width + x] = m_background_image->get_color(x, y).as_argb(); | ||||||
| 	} | 	} | ||||||
| 	else | 	else | ||||||
| 	{ | 	{ | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue