mirror of
				https://github.com/RGBCube/serenity
				synced 2025-10-31 16:42:44 +00:00 
			
		
		
		
	PBM, PGM, and PPM image loaders are mostly common. The only difference is how the data is read and the associated magic numbers. The magic numbers are already made common using the loading contexts. Now make the implementations common via a class template which accepts the context to disambiguate.
		
			
				
	
	
		
			27 lines
		
	
	
	
		
			712 B
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			27 lines
		
	
	
	
		
			712 B
		
	
	
	
		
			C++
		
	
	
	
	
	
| /*
 | |
|  * Copyright (c) 2020, Hüseyin ASLITÜRK <asliturk@hotmail.com>
 | |
|  * Copyright (c) 2022, the SerenityOS developers.
 | |
|  *
 | |
|  * SPDX-License-Identifier: BSD-2-Clause
 | |
|  */
 | |
| 
 | |
| #pragma once
 | |
| 
 | |
| #include <AK/StringView.h>
 | |
| #include <LibGfx/ImageDecoder.h>
 | |
| #include <LibGfx/PortableImageMapLoader.h>
 | |
| 
 | |
| namespace Gfx {
 | |
| 
 | |
| struct PGM {
 | |
|     static constexpr auto ascii_magic_number = '2';
 | |
|     static constexpr auto binary_magic_number = '5';
 | |
|     static constexpr StringView image_type = "PGM";
 | |
|     u16 max_val { 0 };
 | |
| };
 | |
| 
 | |
| using PGMLoadingContext = PortableImageMapLoadingContext<PGM>;
 | |
| using PGMImageDecoderPlugin = PortableImageDecoderPlugin<PGMLoadingContext>;
 | |
| 
 | |
| bool read_image_data(PGMLoadingContext& context, Streamer& streamer);
 | |
| }
 |