mirror of
				https://github.com/RGBCube/serenity
				synced 2025-10-31 21:22:46 +00:00 
			
		
		
		
	 00ab9488ad
			
		
	
	
		00ab9488ad
		
	
	
	
	
		
			
			Here comes the first part of a GIF decoder. It decodes up to the point of gathering all the LZW-compressed data. The next step is to implement decompression, and then turn the decompressed data into a bitmap using the color maps, etc.
		
			
				
	
	
		
			21 lines
		
	
	
	
		
			542 B
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			21 lines
		
	
	
	
		
			542 B
		
	
	
	
		
			C++
		
	
	
	
	
	
| #pragma once
 | |
| 
 | |
| #include <LibDraw/GraphicsBitmap.h>
 | |
| #include <LibDraw/ImageDecoder.h>
 | |
| 
 | |
| RefPtr<GraphicsBitmap> load_gif(const StringView& path);
 | |
| RefPtr<GraphicsBitmap> load_gif_from_memory(const u8*, size_t);
 | |
| 
 | |
| struct GIFLoadingContext;
 | |
| 
 | |
| class GIFImageDecoderPlugin final : public ImageDecoderPlugin {
 | |
| public:
 | |
|     virtual ~GIFImageDecoderPlugin() override;
 | |
|     GIFImageDecoderPlugin(const u8*, size_t);
 | |
| 
 | |
|     virtual Size size() override;
 | |
|     virtual RefPtr<GraphicsBitmap> bitmap() override;
 | |
| 
 | |
| private:
 | |
|     OwnPtr<GIFLoadingContext> m_context;
 | |
| };
 |