| 
						
						
							
								
							
						
						
					 | 
					 | 
					@ -5121,6 +5121,7 @@ typedef struct | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					{ | 
					 | 
					 | 
					 | 
					{ | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					   int bpp, offset, hsz; | 
					 | 
					 | 
					 | 
					   int bpp, offset, hsz; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					   unsigned int mr,mg,mb,ma, all_a; | 
					 | 
					 | 
					 | 
					   unsigned int mr,mg,mb,ma, all_a; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					   int extra_read; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					} stbi__bmp_data; | 
					 | 
					 | 
					 | 
					} stbi__bmp_data; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					static void *stbi__bmp_parse_header(stbi__context *s, stbi__bmp_data *info) | 
					 | 
					 | 
					 | 
					static void *stbi__bmp_parse_header(stbi__context *s, stbi__bmp_data *info) | 
				
			
			
		
	
	
		
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
					 | 
					@ -5133,6 +5134,7 @@ static void *stbi__bmp_parse_header(stbi__context *s, stbi__bmp_data *info) | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					   info->offset = stbi__get32le(s); | 
					 | 
					 | 
					 | 
					   info->offset = stbi__get32le(s); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					   info->hsz = hsz = stbi__get32le(s); | 
					 | 
					 | 
					 | 
					   info->hsz = hsz = stbi__get32le(s); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					   info->mr = info->mg = info->mb = info->ma = 0; | 
					 | 
					 | 
					 | 
					   info->mr = info->mg = info->mb = info->ma = 0; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					   info->extra_read = 14; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					   if (hsz != 12 && hsz != 40 && hsz != 56 && hsz != 108 && hsz != 124) return stbi__errpuc("unknown BMP", "BMP type not supported: unknown"); | 
					 | 
					 | 
					 | 
					   if (hsz != 12 && hsz != 40 && hsz != 56 && hsz != 108 && hsz != 124) return stbi__errpuc("unknown BMP", "BMP type not supported: unknown"); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					   if (hsz == 12) { | 
					 | 
					 | 
					 | 
					   if (hsz == 12) { | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
					 | 
					@ -5176,6 +5178,7 @@ static void *stbi__bmp_parse_header(stbi__context *s, stbi__bmp_data *info) | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					               info->mr = stbi__get32le(s); | 
					 | 
					 | 
					 | 
					               info->mr = stbi__get32le(s); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					               info->mg = stbi__get32le(s); | 
					 | 
					 | 
					 | 
					               info->mg = stbi__get32le(s); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					               info->mb = stbi__get32le(s); | 
					 | 
					 | 
					 | 
					               info->mb = stbi__get32le(s); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					               info->extra_read += 12; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					               // not documented, but generated by photoshop and handled by mspaint
 | 
					 | 
					 | 
					 | 
					               // not documented, but generated by photoshop and handled by mspaint
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					               if (info->mr == info->mg && info->mg == info->mb) { | 
					 | 
					 | 
					 | 
					               if (info->mr == info->mg && info->mg == info->mb) { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                  // ?!?!?
 | 
					 | 
					 | 
					 | 
					                  // ?!?!?
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
					 | 
					@ -5232,10 +5235,13 @@ static void *stbi__bmp_load(stbi__context *s, int *x, int *y, int *comp, int req | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					   if (info.hsz == 12) { | 
					 | 
					 | 
					 | 
					   if (info.hsz == 12) { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      if (info.bpp < 24) | 
					 | 
					 | 
					 | 
					      if (info.bpp < 24) | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					         psize = (info.offset - 14 - 24) / 3; | 
					 | 
					 | 
					 | 
					         psize = (info.offset - info.extra_read - 24) / 3; | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					   } else { | 
					 | 
					 | 
					 | 
					   } else { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      if (info.bpp < 16) | 
					 | 
					 | 
					 | 
					      if (info.bpp < 16) | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					         psize = (info.offset - 14 - info.hsz) >> 2; | 
					 | 
					 | 
					 | 
					         psize = (info.offset - info.extra_read - info.hsz) >> 2; | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					   } | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					   if (psize == 0) { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					      STBI_ASSERT(info.offset == (s->img_buffer - s->buffer_start)); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					   } | 
					 | 
					 | 
					 | 
					   } | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					   if (info.bpp == 24 && ma == 0xff000000) | 
					 | 
					 | 
					 | 
					   if (info.bpp == 24 && ma == 0xff000000) | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
					 | 
					@ -5263,7 +5269,7 @@ static void *stbi__bmp_load(stbi__context *s, int *x, int *y, int *comp, int req | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					         if (info.hsz != 12) stbi__get8(s); | 
					 | 
					 | 
					 | 
					         if (info.hsz != 12) stbi__get8(s); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					         pal[i][3] = 255; | 
					 | 
					 | 
					 | 
					         pal[i][3] = 255; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      } | 
					 | 
					 | 
					 | 
					      } | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      stbi__skip(s, info.offset - 14 - info.hsz - psize * (info.hsz == 12 ? 3 : 4)); | 
					 | 
					 | 
					 | 
					      stbi__skip(s, info.offset - info.extra_read - info.hsz - psize * (info.hsz == 12 ? 3 : 4)); | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      if (info.bpp == 1) width = (s->img_x + 7) >> 3; | 
					 | 
					 | 
					 | 
					      if (info.bpp == 1) width = (s->img_x + 7) >> 3; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      else if (info.bpp == 4) width = (s->img_x + 1) >> 1; | 
					 | 
					 | 
					 | 
					      else if (info.bpp == 4) width = (s->img_x + 1) >> 1; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      else if (info.bpp == 8) width = s->img_x; | 
					 | 
					 | 
					 | 
					      else if (info.bpp == 8) width = s->img_x; | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
					 | 
					@ -5312,7 +5318,7 @@ static void *stbi__bmp_load(stbi__context *s, int *x, int *y, int *comp, int req | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      int rshift=0,gshift=0,bshift=0,ashift=0,rcount=0,gcount=0,bcount=0,acount=0; | 
					 | 
					 | 
					 | 
					      int rshift=0,gshift=0,bshift=0,ashift=0,rcount=0,gcount=0,bcount=0,acount=0; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      int z = 0; | 
					 | 
					 | 
					 | 
					      int z = 0; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      int easy=0; | 
					 | 
					 | 
					 | 
					      int easy=0; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      stbi__skip(s, info.offset - 14 - info.hsz); | 
					 | 
					 | 
					 | 
					      stbi__skip(s, info.offset - info.extra_read - info.hsz); | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      if (info.bpp == 24) width = 3 * s->img_x; | 
					 | 
					 | 
					 | 
					      if (info.bpp == 24) width = 3 * s->img_x; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      else if (info.bpp == 16) width = 2*s->img_x; | 
					 | 
					 | 
					 | 
					      else if (info.bpp == 16) width = 2*s->img_x; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      else /* bpp = 32 and pad = 0 */ width=0; | 
					 | 
					 | 
					 | 
					      else /* bpp = 32 and pad = 0 */ width=0; | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
						
					 | 
					 | 
					
  |