Set new 128px icon
This commit is contained in:
		
							parent
							
								
									02838b4937
								
							
						
					
					
						commit
						5008477fd2
					
				
					 2 changed files with 21 additions and 9 deletions
				
			
		|  | @ -22,7 +22,7 @@ | |||
|       } else { __l *= 2; memcpy (__ip, __rd, __l); \ | ||||
|                __ip += __l; __rd += __l; } } \ | ||||
|   } } while (0) | ||||
| static const struct { | ||||
| static constexpr struct { | ||||
|   unsigned int 	 width; | ||||
|   unsigned int 	 height; | ||||
|   unsigned int 	 bytes_per_pixel; /* 2:RGB16, 3:RGB, 4:RGBA */  | ||||
|  |  | |||
|  | @ -203,10 +203,12 @@ SDL_bool mouse_is_captured = SDL_FALSE; // global for mapper | |||
| constexpr uint32_t RMASK = 0xff000000; | ||||
| constexpr uint32_t GMASK = 0x00ff0000; | ||||
| constexpr uint32_t BMASK = 0x0000ff00; | ||||
| constexpr uint32_t AMASK = 0x000000ff; | ||||
| #else | ||||
| constexpr uint32_t RMASK = 0x000000ff; | ||||
| constexpr uint32_t GMASK = 0x0000ff00; | ||||
| constexpr uint32_t BMASK = 0x00ff0000; | ||||
| constexpr uint32_t AMASK = 0xff000000; | ||||
| #endif | ||||
| #endif // !MACOSX
 | ||||
| 
 | ||||
|  | @ -468,20 +470,30 @@ static int watch_sdl_events(void *userdata, SDL_Event *e) | |||
| } | ||||
| #endif | ||||
| 
 | ||||
| static unsigned char logo[32*32*4]= { | ||||
| #include "dosbox_logo.h" | ||||
| }; | ||||
| #if defined(MACOSX) | ||||
| 
 | ||||
| // On macOS, as we use a nicer external icon packaged in App bundle.
 | ||||
| static void SetIcon() {} | ||||
| 
 | ||||
| #else | ||||
| #include "icon.c" | ||||
| 
 | ||||
| static void SetIcon() | ||||
| { | ||||
| 	// Don't set it on macOS, as we use a nicer external icon there.
 | ||||
| #if !defined(MACOSX) | ||||
| 	SDL_Surface *s = SDL_CreateRGBSurfaceFrom((void*)logo, 32, 32, 32, 128, | ||||
| 	                                          RMASK, GMASK, BMASK, 0); | ||||
| 	constexpr int src_w = icon_data.width; | ||||
| 	constexpr int src_h = icon_data.height; | ||||
| 	constexpr int src_bpp = icon_data.bytes_per_pixel; | ||||
| 	static_assert(src_bpp == 4, "Source image expected in RGBA format."); | ||||
| 	std::array<uint8_t, (src_w * src_h * src_bpp)> icon; | ||||
| 	ICON_DATA_RUN_LENGTH_DECODE(icon.data(), icon_data.rle_pixel_data, | ||||
| 	                            src_w * src_h, src_bpp); | ||||
| 	SDL_Surface *s = SDL_CreateRGBSurfaceFrom(icon.data(), src_w, src_h, | ||||
| 	                                          src_bpp * 8, src_w * src_bpp, | ||||
| 	                                          RMASK, GMASK, BMASK, AMASK); | ||||
| 	SDL_SetWindowIcon(sdl.window, s); | ||||
| 	SDL_FreeSurface(s); | ||||
| #endif // !defined(MACOSX)
 | ||||
| } | ||||
| #endif // !defined(MACOSX)
 | ||||
| 
 | ||||
| static void KillSwitch(bool pressed) { | ||||
| 	if (!pressed) | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue