mirror of
				https://github.com/RGBCube/serenity
				synced 2025-10-31 02:22:43 +00:00 
			
		
		
		
	 e19c8897ee
			
		
	
	
		e19c8897ee
		
	
	
	
	
		
			
			This patch basically uses the TRY() macro throughout PNGWriter instead of relying on the MUST()'ing wrappers in Vector and ByteBuffer. One FIXME was killed in the making of this patch. :^)
		
			
				
	
	
		
			33 lines
		
	
	
	
		
			762 B
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			33 lines
		
	
	
	
		
			762 B
		
	
	
	
		
			C++
		
	
	
	
	
	
| /*
 | |
|  * Copyright (c) 2021, Pierre Hoffmeister
 | |
|  * Copyright (c) 2021, Andreas Kling <kling@serenityos.org>
 | |
|  *
 | |
|  * SPDX-License-Identifier: BSD-2-Clause
 | |
|  */
 | |
| 
 | |
| #pragma once
 | |
| 
 | |
| #include <AK/Vector.h>
 | |
| #include <LibGfx/Forward.h>
 | |
| #include <LibGfx/PNGShared.h>
 | |
| 
 | |
| namespace Gfx {
 | |
| 
 | |
| class PNGChunk;
 | |
| 
 | |
| class PNGWriter {
 | |
| public:
 | |
|     static ErrorOr<ByteBuffer> encode(Gfx::Bitmap const&);
 | |
| 
 | |
| private:
 | |
|     PNGWriter() = default;
 | |
| 
 | |
|     Vector<u8> m_data;
 | |
|     ErrorOr<void> add_chunk(PNGChunk&);
 | |
|     ErrorOr<void> add_png_header();
 | |
|     ErrorOr<void> add_IHDR_chunk(u32 width, u32 height, u8 bit_depth, PNG::ColorType color_type, u8 compression_method, u8 filter_method, u8 interlace_method);
 | |
|     ErrorOr<void> add_IDAT_chunk(Gfx::Bitmap const&);
 | |
|     ErrorOr<void> add_IEND_chunk();
 | |
| };
 | |
| 
 | |
| }
 |