From 42829b3b6dbb7ac46ca4b39cca79b8163882cf0e Mon Sep 17 00:00:00 2001 From: Bim Overbohm Date: Thu, 16 May 2013 21:26:19 +0200 Subject: [PATCH] Add version information, add window and file icon Version information nowe resides in EmulationStation.h and is compiled into the EXE on Windows. An icon file is also included and on non-Windows systems the window icon is loaded from PNG data compiled into the EXE and set via SDL_WM_SetIcon(). --- CMakeLists.txt | 14 +++ data/Resources.h | 17 +++ data/logo/ES_logo_16.cpp | 94 ++++++++++++++++ data/logo/ES_logo_32.cpp | 208 ++++++++++++++++++++++++++++++++++++ src/EmulationStation.h | 12 +++ src/EmulationStation.rc | 39 +++++++ src/ImageIO.cpp | 63 +++++++++++ src/ImageIO.h | 11 ++ src/Renderer_init_sdlgl.cpp | 31 +++++- 9 files changed, 487 insertions(+), 2 deletions(-) create mode 100644 data/Resources.h create mode 100644 data/logo/ES_logo_16.cpp create mode 100644 data/logo/ES_logo_32.cpp create mode 100644 src/EmulationStation.h create mode 100644 src/EmulationStation.rc create mode 100644 src/ImageIO.cpp create mode 100644 src/ImageIO.h diff --git a/CMakeLists.txt b/CMakeLists.txt index 9e6e04a4f..f3b2ce20a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -92,11 +92,13 @@ endif() #define basic sources and headers set(ES_HEADERS ${CMAKE_CURRENT_SOURCE_DIR}/src/AudioManager.h + ${CMAKE_CURRENT_SOURCE_DIR}/src/EmulationStation.h ${CMAKE_CURRENT_SOURCE_DIR}/src/FileData.h ${CMAKE_CURRENT_SOURCE_DIR}/src/FolderData.h ${CMAKE_CURRENT_SOURCE_DIR}/src/Font.h ${CMAKE_CURRENT_SOURCE_DIR}/src/GameData.h ${CMAKE_CURRENT_SOURCE_DIR}/src/Gui.h + ${CMAKE_CURRENT_SOURCE_DIR}/src/ImageIO.h ${CMAKE_CURRENT_SOURCE_DIR}/src/InputConfig.h ${CMAKE_CURRENT_SOURCE_DIR}/src/InputManager.h ${CMAKE_CURRENT_SOURCE_DIR}/src/Log.h @@ -119,6 +121,7 @@ set(ES_HEADERS ${CMAKE_CURRENT_SOURCE_DIR}/src/components/GuiTheme.h ${CMAKE_CURRENT_SOURCE_DIR}/src/pugiXML/pugiconfig.hpp ${CMAKE_CURRENT_SOURCE_DIR}/src/pugiXML/pugixml.hpp + ${CMAKE_CURRENT_SOURCE_DIR}/data/Resources.h ) set(ES_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/src/AudioManager.cpp @@ -126,6 +129,7 @@ set(ES_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/src/Font.cpp ${CMAKE_CURRENT_SOURCE_DIR}/src/GameData.cpp ${CMAKE_CURRENT_SOURCE_DIR}/src/Gui.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/src/ImageIO.cpp ${CMAKE_CURRENT_SOURCE_DIR}/src/InputConfig.cpp ${CMAKE_CURRENT_SOURCE_DIR}/src/InputManager.cpp ${CMAKE_CURRENT_SOURCE_DIR}/src/Log.cpp @@ -149,6 +153,8 @@ set(ES_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/src/components/GuiMenu.cpp ${CMAKE_CURRENT_SOURCE_DIR}/src/components/GuiTheme.cpp ${CMAKE_CURRENT_SOURCE_DIR}/src/pugiXML/pugixml.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/data/logo/ES_logo_16.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/data/logo/ES_logo_32.cpp ) #add open gl specific sources @@ -162,6 +168,14 @@ else() ) endif() +#------------------------------------------------------------------------------- +#define OS specific sources and headers +if(MSVC) + LIST(APPEND ES_SOURCES + ${CMAKE_CURRENT_SOURCE_DIR}/src/EmulationStation.rc + ) +endif() + #------------------------------------------------------------------------------- #define libraries and directories if(DEFINED BCMHOST) diff --git a/data/Resources.h b/data/Resources.h new file mode 100644 index 000000000..e77ec04df --- /dev/null +++ b/data/Resources.h @@ -0,0 +1,17 @@ +#pragma once + +//This is a shabby, sort of OS-independent resource "system" +//Use bin2h: http://code.google.com/p/bin2h/ +//to convert the binary files to C code, +//adjust this file with their declarations and +//then compile the files into the project + +//These point to the actual PNG file data: + +//from ES_logo_16.cpp +extern const size_t es_logo_16_data_len; +extern const unsigned char es_logo_16_data[]; + +//from ES_logo_32.cpp +extern const size_t es_logo_32_data_len; +extern const unsigned char es_logo_32_data[]; diff --git a/data/logo/ES_logo_16.cpp b/data/logo/ES_logo_16.cpp new file mode 100644 index 000000000..5d2faf916 --- /dev/null +++ b/data/logo/ES_logo_16.cpp @@ -0,0 +1,94 @@ +#include "../Resources.h" + +//file auto-generated from ES_logo_16.png by bin2h.exe +const size_t es_logo_16_data_len = 954; +const unsigned char es_logo_16_data[954]= +{ + 0x89,0x50,0x4E,0x47,0x0D,0x0A,0x1A,0x0A,0x00,0x00,0x00, + 0x0D,0x49,0x48,0x44,0x52,0x00,0x00,0x00,0x10,0x00,0x00, + 0x00,0x10,0x08,0x06,0x00,0x00,0x00,0x1F,0xF3,0xFF,0x61, + 0x00,0x00,0x00,0x04,0x73,0x42,0x49,0x54,0x08,0x08,0x08, + 0x08,0x7C,0x08,0x64,0x88,0x00,0x00,0x00,0x09,0x70,0x48, + 0x59,0x73,0x00,0x00,0x00,0xC0,0x00,0x00,0x00,0xC0,0x01, + 0x30,0x77,0xDF,0x5E,0x00,0x00,0x00,0x19,0x74,0x45,0x58, + 0x74,0x53,0x6F,0x66,0x74,0x77,0x61,0x72,0x65,0x00,0x77, + 0x77,0x77,0x2E,0x69,0x6E,0x6B,0x73,0x63,0x61,0x70,0x65, + 0x2E,0x6F,0x72,0x67,0x9B,0xEE,0x3C,0x1A,0x00,0x00,0x03, + 0x37,0x49,0x44,0x41,0x54,0x38,0x8D,0x75,0x93,0x5D,0x68, + 0x9B,0x75,0x14,0xC6,0x9F,0xF3,0xCF,0x67,0xB3,0xB6,0xF2, + 0xE6,0xA3,0x1B,0xEF,0x3A,0xA9,0x59,0x43,0xDA,0x24,0x14, + 0xD2,0x37,0xE8,0xFC,0xA0,0x6E,0xDD,0x86,0x48,0xB7,0xC9, + 0x36,0x64,0xE2,0xC0,0x0E,0xA3,0xA0,0x5D,0xD7,0x8B,0x3A, + 0xE8,0xC5,0xAE,0xD4,0x5D,0x88,0x17,0xBB,0x08,0xF3,0xCA, + 0x4D,0xE8,0x6E,0x62,0xAF,0xF4,0xCA,0x0F,0xBA,0x6A,0x19, + 0x8C,0x81,0xEB,0x9A,0x20,0xCB,0xD6,0x60,0xA1,0x29,0x34, + 0x25,0xF6,0x6D,0xDF,0xB4,0x91,0x9A,0xBC,0x69,0xDE,0xFF, + 0xF1,0xC2,0xB5,0x9B,0x50,0x1F,0x38,0x70,0x2E,0xCE,0x81, + 0xE7,0x70,0x7E,0x0F,0x31,0x33,0x76,0x53,0xB2,0x7D,0x64, + 0xA2,0xBB,0x1A,0x8F,0x03,0xC0,0xE3,0xA6,0x4C,0xE6,0xE6, + 0x52,0xEA,0xDC,0x6E,0x73,0xF6,0xED,0x26,0x91,0x48,0x38, + 0x74,0x3D,0x96,0xB2,0xDB,0x97,0xAF,0x85,0x64,0xEB,0xD1, + 0x23,0xB5,0x37,0xA2,0xA7,0x8D,0x0B,0x21,0x00,0xB0,0x7C, + 0x8D,0xFA,0xC9,0x17,0x4E,0x7E,0x64,0x8A,0x47,0x53,0x6A, + 0xA3,0x31,0xFA,0x30,0x10,0x18,0x99,0x99,0x99,0xD9,0x02, + 0x00,0x30,0x33,0x34,0x4D,0x73,0xA8,0xEA,0xD8,0xA4,0x10, + 0x15,0x56,0x94,0x74,0x51,0x75,0x16,0xB2,0xF3,0x90,0x9C, + 0xB5,0xAD,0x73,0xD6,0xB6,0xCE,0xF3,0x90,0x9C,0x73,0x9E, + 0xCD,0xA6,0x15,0xA5,0x58,0x11,0x82,0xC7,0x54,0x75,0x52, + 0xD3,0x34,0x07,0x33,0xFF,0xEB,0x40,0xD7,0x63,0xA9,0x52, + 0xE9,0xCA,0x31,0x29,0x9B,0x51,0x2E,0xBF,0xAD,0x92,0x77, + 0xBC,0xFE,0xE9,0x9E,0x07,0xB7,0xCA,0x36,0x7D,0x16,0x00, + 0x7C,0x96,0xBF,0xB7,0x6F,0x73,0xBA,0x6F,0xD0,0x28,0xAB, + 0x02,0xC0,0x95,0x52,0xE9,0x58,0xC9,0x6E,0x4F,0x01,0xF8, + 0x18,0xCC,0x8C,0x60,0xF0,0x78,0x48,0x51,0xD2,0x45,0xA0, + 0xC1,0xAA,0x7A,0xF9,0x7E,0x67,0x67,0xFF,0x41,0x66,0xC6, + 0xB3,0xD5,0xDF,0xD9,0x79,0xF0,0xB2,0xAA,0xDE,0x6F,0x00, + 0x9C,0x56,0x94,0xE2,0xF1,0x60,0x30,0xC4,0xCC,0x10,0x00, + 0xC0,0xB1,0xD6,0xC3,0x9B,0x47,0x5E,0xD6,0xBD,0xBE,0xF1, + 0x42,0x6B,0xEB,0xDD,0xF7,0x85,0x58,0x72,0x84,0xC3,0xE1, + 0xAE,0x58,0x2C,0xB6,0x0F,0x00,0x22,0x91,0x48,0xE8,0x4F, + 0x97,0xCB,0xF5,0x9B,0xDB,0xFD,0xEE,0xB8,0xD7,0x5B,0xE8, + 0x61,0xE8,0xA6,0xDF,0xDF,0x0F,0x00,0xB4,0xFF,0xD2,0xA5, + 0x89,0x6A,0x4F,0x4F,0xD4,0x48,0x26,0xA3,0x07,0x2E,0x0E, + 0xDF,0xF2,0xFC,0x32,0xB5,0x48,0x44,0x9F,0x00,0xA8,0x02, + 0xC8,0x01,0xC8,0x03,0x38,0x01,0x80,0x88,0xE8,0xEA,0xFE, + 0x7D,0xEA,0x8B,0xAF,0xBD,0x72,0xF8,0xBD,0xC7,0xF9,0x47, + 0xB9,0x35,0x43,0xCF,0x89,0x6A,0x3C,0x1E,0x37,0x92,0xC9, + 0xA8,0xAD,0x52,0x81,0x6D,0x55,0x9F,0x15,0x42,0x88,0x27, + 0xCB,0xBF,0x12,0xD1,0x0F,0x00,0xC2,0x00,0x74,0x22,0xFA, + 0x5E,0x4A,0xF9,0x5D,0xAD,0x66,0xCE,0xD6,0xEB,0x75,0x74, + 0x87,0x23,0xD1,0x80,0xAF,0x2D,0xBE,0xF3,0xC6,0x67,0x45, + 0x44,0x0D,0x66,0x2E,0x49,0x29,0x8B,0x42,0x88,0xAB,0x00, + 0x4E,0x4B,0x29,0x4F,0x10,0x51,0x03,0xC0,0xFC,0x7F,0x38, + 0x68,0xCA,0x64,0x32,0x5E,0xCB,0xAA,0x1B,0xC9,0x64,0xD4, + 0x0A,0xF8,0x7B,0xA5,0x94,0x8B,0x44,0xD4,0x02,0xE0,0x1D, + 0x22,0x3A,0xC4,0xCC,0x2E,0x00,0x3E,0x22,0x22,0x66,0xCE, + 0xB8,0xDD,0xAE,0xD7,0x9D,0x4E,0x27,0xB6,0x4F,0x20,0x66, + 0x46,0xF0,0xDC,0x5B,0x1F,0x16,0xBF,0x34,0x2F,0x36,0x4F, + 0xAD,0x3C,0xD7,0x76,0xA3,0x71,0x4A,0xAE,0x99,0x5B,0x4F, + 0x9C,0x54,0x4C,0xD3,0x34,0x3C,0x1E,0x4F,0x37,0x11,0x2D, + 0xEE,0x75,0x9B,0xCA,0xF9,0x2E,0xE3,0xF6,0xA1,0x03,0xBC, + 0x31,0x74,0x27,0xFC,0xD5,0xF4,0xDD,0x7B,0x5F,0x0B,0x00, + 0xA0,0xF2,0x1F,0xD3,0x7B,0xEE,0xAD,0x04,0x8C,0x41,0x57, + 0x47,0xE5,0x55,0xFA,0x46,0xB6,0x3B,0xB7,0xF2,0xF9,0xFC, + 0xDC,0xDC,0xDC,0xDC,0xF2,0xC2,0xC2,0x42,0x2D,0x97,0xCB, + 0x65,0xF6,0xBA,0x4D,0xA5,0xB7,0xED,0xEF,0x6F,0x07,0xA3, + 0x46,0xC7,0xEF,0x25,0x04,0x9C,0xD6,0xCA,0xF4,0x0E,0xCA, + 0x0D,0xD5,0x36,0xBA,0x31,0xE0,0x54,0x21,0x80,0xE5,0x2F, + 0x3C,0x09,0xDF,0x78,0xED,0xF6,0xD0,0xD0,0xF3,0x77,0x56, + 0x57,0x6D,0xB3,0x00,0x10,0xF0,0x5B,0xBD,0xE7,0xBB,0x36, + 0xFB,0x06,0xA3,0x46,0x87,0x20,0x60,0x20,0xB8,0xA1,0xFE, + 0x54,0x68,0x19,0xDD,0x01,0x49,0xD3,0x34,0x87,0x3A,0xD6, + 0x33,0x29,0x2A,0x2F,0xB1,0x92,0x8E,0x17,0xCF,0x2C,0x84, + 0xB2,0xD2,0x02,0xAF,0x97,0x6D,0xBC,0x5E,0xB6,0xB1,0xB4, + 0xC0,0x85,0xCF,0x9D,0xD9,0xF4,0x05,0xA5,0x58,0xF9,0x4C, + 0xF0,0xD8,0xC0,0x53,0x94,0x69,0x3B,0x8D,0x89,0x44,0xC2, + 0xA1,0xC7,0xCC,0x94,0x7D,0xD9,0xBA,0x16,0x69,0x36,0x8F, + 0x9E,0x7A,0x73,0x63,0xF8,0x83,0xE4,0x5A,0x14,0x00,0x6E, + 0xDC,0xF4,0xE5,0x7E,0xFE,0xB1,0xE5,0x7A,0x65,0x59,0x4C, + 0xA9,0x4D,0x8D,0xD1,0x87,0x7F,0x3D,0x0D,0x13,0xFD,0x5F, + 0x9C,0x47,0x86,0xDB,0x27,0xE2,0x5A,0x35,0x0E,0x00,0x99, + 0x07,0x4D,0x99,0xD4,0xF5,0xA5,0x5D,0xE3,0xFC,0x0F,0x8E, + 0x59,0x81,0x6E,0x31,0xC1,0x05,0xE7,0x00,0x00,0x00,0x00, + 0x49,0x45,0x4E,0x44,0xAE,0x42,0x60,0x82, +}; diff --git a/data/logo/ES_logo_32.cpp b/data/logo/ES_logo_32.cpp new file mode 100644 index 000000000..73c9461e5 --- /dev/null +++ b/data/logo/ES_logo_32.cpp @@ -0,0 +1,208 @@ +#include "../Resources.h" + +//file auto-generated from ES_logo_32.png by bin2h.exe +const size_t es_logo_32_data_len = 2205; +const unsigned char es_logo_32_data[2205]= +{ + 0x89,0x50,0x4E,0x47,0x0D,0x0A,0x1A,0x0A,0x00,0x00,0x00, + 0x0D,0x49,0x48,0x44,0x52,0x00,0x00,0x00,0x20,0x00,0x00, + 0x00,0x20,0x08,0x06,0x00,0x00,0x00,0x73,0x7A,0x7A,0xF4, + 0x00,0x00,0x00,0x04,0x73,0x42,0x49,0x54,0x08,0x08,0x08, + 0x08,0x7C,0x08,0x64,0x88,0x00,0x00,0x00,0x09,0x70,0x48, + 0x59,0x73,0x00,0x00,0x01,0x80,0x00,0x00,0x01,0x80,0x01, + 0x68,0xE3,0xFB,0xB4,0x00,0x00,0x00,0x19,0x74,0x45,0x58, + 0x74,0x53,0x6F,0x66,0x74,0x77,0x61,0x72,0x65,0x00,0x77, + 0x77,0x77,0x2E,0x69,0x6E,0x6B,0x73,0x63,0x61,0x70,0x65, + 0x2E,0x6F,0x72,0x67,0x9B,0xEE,0x3C,0x1A,0x00,0x00,0x08, + 0x1A,0x49,0x44,0x41,0x54,0x58,0x85,0x95,0x57,0x59,0x6C, + 0x54,0xE7,0x15,0xFE,0xFE,0xBB,0xCC,0x9D,0xC5,0xCB,0x60, + 0x9C,0xC1,0xF6,0xD4,0x0D,0xC3,0x5C,0x8F,0xB9,0x37,0x21, + 0xE0,0xF1,0x40,0x6A,0x82,0x0D,0x08,0xCA,0xF2,0xC0,0x43, + 0xD5,0x56,0x95,0x9A,0x87,0x8A,0x96,0x2E,0xAA,0xE4,0xD0, + 0xA8,0x08,0x48,0x2A,0x11,0xC3,0x03,0x9B,0x50,0x5B,0x12, + 0xA5,0x45,0x4E,0x52,0x54,0x81,0xD4,0x87,0x06,0xB5,0x52, + 0xD5,0x84,0xA4,0x05,0x11,0xDA,0x82,0xC0,0xC6,0x66,0x69, + 0x66,0xC0,0xC6,0x9A,0x20,0xEF,0xC3,0xE0,0xB1,0xC7,0x9E, + 0xF5,0x2E,0xA7,0x0F,0x5E,0x34,0x8B,0x07,0xCA,0x91,0xCE, + 0xC3,0x3D,0xF7,0xFC,0xE7,0x3B,0xFF,0x39,0xDF,0x7F,0xFF, + 0x73,0x19,0x11,0xE1,0x79,0xA4,0xA5,0xA1,0x75,0x17,0x07, + 0xEE,0x04,0x07,0x56,0x26,0x98,0xA2,0x08,0x00,0x3A,0xA7, + 0x69,0x26,0x68,0xC6,0x84,0x79,0xE0,0x7A,0xFF,0xBF,0xFE, + 0xF6,0x3C,0xF1,0x84,0xE7,0x42,0x07,0x20,0x90,0xB0,0xE5, + 0xE7,0xE3,0x87,0x94,0x75,0x33,0x9B,0xF2,0xEC,0x37,0xCB, + 0xAE,0xE0,0x77,0xCB,0x8E,0x6C,0x01,0xF0,0x5C,0x09,0x70, + 0xA5,0x5E,0x04,0x02,0x01,0x51,0x55,0xD5,0xB6,0x42,0xBB, + 0x01,0xDD,0xCA,0x53,0x71,0xDE,0x3C,0x09,0x30,0xA0,0x5B, + 0x0B,0xED,0xAA,0xAA,0xB6,0x05,0x02,0x01,0xB1,0x14,0x0E, + 0x5B,0xAC,0x05,0xB2,0x2C,0xBB,0x38,0xAE,0xF6,0x73,0x4D, + 0xAB,0xF5,0x88,0xE2,0xF0,0x7B,0x15,0x15,0x99,0xA3,0x89, + 0x29,0xDB,0xFE,0xA5,0xE0,0x76,0x2F,0xCF,0xF8,0xEC,0x6F, + 0x8E,0x1C,0xAF,0x76,0x1A,0x55,0x79,0x6B,0x26,0xF9,0x09, + 0xFC,0xA6,0xEE,0x60,0xF4,0x2B,0xA9,0x2F,0x49,0x88,0x9C, + 0xCD,0x54,0x3A,0x4E,0x4A,0xF1,0xF8,0xDB,0x6E,0x4D,0x6B, + 0x1F,0x15,0x84,0xF0,0x28,0xD1,0xB6,0x87,0x0F,0x1F,0x46, + 0x8A,0xC0,0x88,0x28,0x4F,0x1B,0x1B,0x1B,0x5F,0x91,0xE5, + 0xB6,0x21,0xBB,0xBD,0xCB,0x00,0x74,0x72,0xBB,0xDB,0x63, + 0xB2,0xDC,0x1A,0x71,0x3A,0xCF,0xA5,0x7F,0xCF,0x52,0xA1, + 0x87,0x30,0xE9,0x69,0x1A,0x62,0x23,0xA1,0x73,0x4E,0x67, + 0xBA,0x55,0x96,0x23,0xED,0x6E,0x77,0x4C,0x07,0xE8,0x96, + 0xCD,0x66,0x6C,0x94,0xE5,0xC1,0xC6,0xC6,0xC6,0x57,0x0A, + 0xF1,0xF2,0x1E,0xBC,0x5E,0xAF,0x4B,0x96,0x5B,0x87,0x45, + 0xF1,0x11,0x01,0x66,0x8E,0x1A,0x04,0x98,0xB4,0x02,0xE6, + 0x8D,0x79,0xA0,0x3B,0xFC,0x14,0x5D,0xB0,0x5F,0xA7,0x0B, + 0xF6,0xEB,0x74,0x87,0x9F,0x5A,0x48,0xE0,0x09,0x0E,0xDC, + 0x30,0x01,0x32,0x00,0x32,0x73,0x74,0x48,0x14,0x69,0xA3, + 0x2C,0x0F,0x7A,0xBD,0x5E,0x57,0x2E,0xE6,0x42,0x0B,0x02, + 0x81,0x80,0x18,0x8F,0xDB,0xBA,0x86,0x87,0x7F,0xBD,0x2A, + 0x99,0x0C,0x2C,0xCA,0x0D,0x9B,0xAD,0x47,0xDF,0xB5,0xB4, + 0x73,0x62,0xC8,0x1A,0x12,0x75,0xA6,0x27,0x44,0x12,0x7B, + 0x01,0x40,0x63,0x5A,0x93,0x40,0x82,0x63,0x45,0xBA,0x51, + 0xDB,0xFB,0xE4,0xCF,0x55,0xCD,0xA9,0xA9,0x45,0xC9,0xDD, + 0x6B,0xB3,0x99,0x7B,0xDD,0xEE,0x7B,0xA9,0xCA,0xCA,0xB5, + 0xDD,0xDD,0xDD,0x1A,0x90,0x73,0x0A,0x12,0x89,0xC4,0x5A, + 0x4D,0x5B,0xE1,0x49,0x26,0xFD,0x45,0xE0,0x8C,0x65,0xE0, + 0x72,0x9D,0x4A,0x56,0x54,0x5C,0x1C,0xBC,0xCD,0x1E,0xEF, + 0xC9,0x66,0xB3,0xDD,0xE1,0x70,0x38,0x9D,0xEB,0xE3,0xF1, + 0x78,0xAC,0x51,0xFB,0x78,0xE0,0x17,0x36,0xD7,0x87,0x3B, + 0xE2,0xD6,0xFA,0x7D,0x91,0x88,0x5D,0x2A,0xE0,0xD7,0xEA, + 0x54,0x8A,0xAB,0xD3,0x75,0xCF,0xDD,0x44,0x62,0x2D,0x80, + 0x6B,0x45,0x1C,0x90,0xE5,0x0D,0x1D,0x6E,0x77,0x7B,0x2C, + 0xB7,0xFC,0x92,0xF4,0x80,0xBC,0xDE,0xAD,0x31,0x9F,0xAF, + 0xE5,0x30,0x00,0xBE,0xB0,0x87,0x45,0x3D,0x05,0xF8,0x16, + 0x9F,0xEF,0xF0,0x56,0xAF,0x37,0xF6,0x40,0x92,0xF2,0xDA, + 0xD0,0xEE,0x76,0xC7,0x36,0xC8,0x72,0x47,0x49,0x0E,0x34, + 0x37,0x37,0xDB,0x65,0xB9,0x6D,0x7C,0xBE,0xE7,0x8C,0xA5, + 0xC8,0xEB,0xDD,0x1A,0x53,0x14,0xC5,0xFF,0x2C,0xE0,0x42, + 0x55,0x14,0xC5,0xBF,0xD5,0xEB,0x8D,0xA5,0x18,0xA3,0x79, + 0x4E,0xB4,0xC9,0xF2,0x78,0x73,0x73,0xB3,0x3D,0xD7,0x2F, + 0xAF,0xDC,0x53,0x09,0xDB,0xFE,0x68,0xF4,0xC7,0x95,0x00, + 0x03,0x00,0xB8,0x5C,0xA7,0x92,0x3C,0x9F,0x78,0x37,0x18, + 0x0C,0xF6,0x2C,0xD6,0xD3,0xA7,0x49,0x30,0x18,0xEC,0x49, + 0xF0,0xFC,0xBB,0xA7,0x5C,0xAE,0x24,0x30,0x1B,0xF1,0x67, + 0xD1,0x68,0xA5,0x34,0x3D,0xBD,0x3F,0xD7,0x2F,0x9F,0x2C, + 0x2E,0x6E,0xF7,0xD4,0xE5,0xEF,0x84,0x71,0x1A,0x71,0xDB, + 0x99,0x1E,0x7F,0x45,0xC5,0xC5,0xC1,0xBE,0xBE,0xEB,0x47, + 0x54,0x55,0x7D,0x19,0x80,0x5C,0x08,0x22,0x49,0xD2,0x95, + 0xDE,0xDE,0xDE,0x49,0x00,0xF0,0xF9,0x7C,0x0A,0xCF,0xF3, + 0x5B,0x89,0x28,0xC9,0x71,0x5C,0xBF,0x28,0x8A,0xB7,0xEE, + 0xF6,0xF5,0x1D,0xE1,0x1A,0x1A,0xBE,0xB7,0x33,0x1E,0xF7, + 0xD6,0xDB,0x1D,0x3D,0xD9,0xCD,0xDB,0x2B,0x52,0x03,0xA1, + 0x1F,0x02,0xE8,0x58,0x48,0xA0,0xA1,0xB5,0x75,0x17,0x09, + 0xC2,0x16,0xE8,0xBA,0x35,0xBB,0x72,0xA5,0x9D,0x6A,0xA4, + 0xAF,0xE3,0x18,0xB0,0xF4,0x49,0x67,0x84,0x5D,0x7D,0xBC, + 0x87,0x88,0x0C,0x45,0x51,0xFE,0x02,0xA0,0xA6,0x00,0x5F, + 0x48,0xA5,0x52,0xEF,0x34,0x34,0x34,0x9C,0x11,0x04,0xE1, + 0x36,0xCF,0xF3,0x0E,0x22,0xAA,0x66,0x8C,0x31,0x22,0x8A, + 0x67,0xB3,0xD9,0x5E,0x22,0xDA,0xDC,0xD8,0xD8,0xB8,0xE7, + 0xAD,0xC0,0xDA,0x0B,0xAF,0xB5,0x7D,0x73,0x1D,0x00,0x38, + 0xA3,0xA3,0x51,0xBF,0xDF,0x7F,0x86,0x31,0x96,0x82,0x8E, + 0xCB,0x02,0x38,0xEE,0xC4,0xF8,0xA1,0x43,0x0A,0x09,0x02, + 0xD2,0xAA,0xBA,0x10,0xDD,0xFA,0x20,0x24,0x66,0xB3,0xD9, + 0xEE,0xB9,0x47,0x1E,0x40,0x19,0x80,0x09,0x00,0xFA,0x7C, + 0x01,0x00,0x44,0x45,0x51,0xFC,0x11,0x11,0xD5,0x12,0x51, + 0x9A,0x31,0x36,0x06,0xC0,0x04,0x60,0x03,0x50,0x0E,0x00, + 0xD9,0x6C,0xB6,0x3B,0x3A,0x3D,0xBD,0xF0,0x29,0x7E,0x35, + 0xD0,0x52,0x1D,0x9B,0x9C,0xF8,0x29,0x99,0x84,0xAE,0xDE, + 0x1B,0xDB,0x05,0x00,0x8E,0x99,0x4D,0x9B,0xF2,0xB6,0xC6, + 0x4F,0x4F,0x83,0xE9,0x7A,0xA2,0xF0,0xA8,0x01,0x30,0x19, + 0x63,0xFB,0x00,0x68,0xA6,0x69,0xEA,0xB5,0xB5,0xB5,0x7F, + 0x1D,0x1B,0x1B,0xFB,0x07,0x00,0x2B,0x63,0x2C,0x41,0x44, + 0xBF,0x05,0xF0,0x99,0x28,0x8A,0x31,0x22,0x92,0x00,0x20, + 0x1C,0x0E,0xA7,0xD7,0xAC,0x5E,0x93,0xC8,0x6A,0xD9,0x25, + 0x16,0xD1,0x02,0xAB,0x64,0x45,0xED,0xB2,0x3A,0x00,0x00, + 0xEB,0x65,0x65,0x9C,0x69,0xB1,0x14,0x5D,0x14,0x52,0x30, + 0x08,0x12,0x67,0x3F,0x32,0x05,0xE2,0x24,0xA2,0x4E,0x22, + 0x3A,0xCB,0x18,0xFB,0xC3,0xD8,0xD8,0xD8,0x6B,0x00,0xFE, + 0x08,0x20,0x09,0x60,0x29,0x80,0x63,0x8C,0xB1,0x4B,0xBA, + 0xAE,0xFF,0x53,0xD7,0xF5,0x05,0xCE,0x70,0x3C,0xD7,0x1B, + 0x9B,0x9C,0x28,0x0A,0xC6,0x71,0x9C,0x58,0xF2,0x36,0x2C, + 0x21,0xD3,0x00,0x12,0x73,0xCA,0x88,0x28,0x56,0x53,0x53, + 0x73,0x9E,0x88,0x0E,0x03,0x18,0x61,0x8C,0x4D,0xCC,0x25, + 0xE2,0x63,0x8C,0x7D,0xC4,0x18,0x63,0xCF,0x0A,0x28,0x70, + 0xD9,0xAC,0x56,0x68,0xCC,0xA8,0x2A,0x98,0xA6,0x35,0x2D, + 0xE2,0x6F,0xA4,0xD3,0xE9,0xFA,0xDC,0xD6,0xA8,0xAA,0xFA, + 0x2D,0x00,0xF7,0x1D,0x0E,0xC7,0xF2,0xE9,0xE9,0xE9,0x35, + 0x1C,0xC7,0x9D,0x07,0xE0,0x03,0x60,0x91,0x65,0x79,0x05, + 0x80,0x01,0xD3,0x30,0x9B,0x96,0x38,0xAB,0x8A,0x82,0x99, + 0xA6,0xA9,0x09,0x00,0x12,0x65,0x57,0xAE,0x60,0x9E,0x84, + 0x46,0x55,0x15,0x8C,0xF2,0x72,0x90,0x20,0x38,0x3C,0x1E, + 0x8F,0x35,0x17,0x8C,0x31,0x26,0x58,0xAD,0xD6,0x41,0x45, + 0x51,0x40,0x44,0x02,0xC7,0x71,0x9D,0x44,0xD4,0xCA,0x18, + 0x7B,0x39,0x91,0x48,0xCC,0xF0,0x3C,0xAF,0x13,0x91,0x7D, + 0xCE,0x3D,0xDD,0xDF,0xDF,0x3F,0xE0,0xF1,0x78,0xAC,0x4B, + 0x9C,0x4B,0x1C,0x16,0xD1,0x32,0x6B,0xCC,0xA4,0x11,0x9B, + 0x9C,0x00,0x99,0x04,0x02,0xCD,0x08,0x30,0xCD,0x03,0xCB, + 0x8E,0x1C,0x99,0x3F,0x86,0xDF,0x1E,0xEC,0xEC,0xAC,0x06, + 0x80,0xB4,0xE2,0xD5,0xEC,0xE3,0xE3,0x01,0x00,0xFF,0x06, + 0x60,0x00,0x48,0x10,0x91,0x08,0x60,0x9E,0x33,0x1C,0x11, + 0xBD,0x00,0xA0,0x1F,0x80,0x97,0x88,0x9C,0x98,0x65,0x7F, + 0x0C,0x40,0x04,0xC0,0x09,0x00,0xB0,0x58,0x2C,0x81,0xEA, + 0x25,0xE5,0x0B,0x55,0xBE,0xD1,0x7D,0x3D,0x3A,0x19,0x8B, + 0x7D,0xCC,0x78,0x96,0x66,0x06,0xBB,0x9C,0x37,0x90,0x34, + 0x6C,0xDC,0xF8,0x68,0xE0,0xB3,0x8E,0x24,0x49,0x9D,0x71, + 0x5B,0xCF,0x80,0xFF,0x6B,0x7B,0x67,0x06,0xFA,0xFF,0x13, + 0x7A,0x49,0x51,0x14,0x05,0x8B,0x7C,0x88,0x00,0xDC,0x08, + 0x06,0x83,0xA3,0x2B,0x57,0xAE,0xF4,0x70,0x1C,0xF7,0x2A, + 0x80,0x5A,0xD3,0x34,0x6F,0x1B,0x86,0x71,0xAD,0xBF,0xBF, + 0x3F,0xC3,0x18,0xE3,0x5F,0x5B,0xD3,0xF0,0xE5,0xE9,0xCD, + 0x43,0xDE,0xFA,0x6A,0x47,0xCF,0xA7,0xC9,0xED,0x15,0xA7, + 0x3F,0x09,0xD9,0x7B,0x7A,0x6E,0xBD,0xB8,0xC0,0x81,0xFC, + 0xA6,0x4C,0x9C,0xAD,0xFC,0xF8,0x97,0x07,0x27,0x5F,0x97, + 0xA4,0x94,0x9F,0x47,0x7C,0x87,0xA5,0xDE,0x67,0xAA,0x87, + 0x82,0xD7,0xBE,0x7C,0x07,0xC0,0x7F,0x17,0x49,0x00,0x00, + 0x70,0xFF,0xFE,0xFD,0x30,0x80,0x70,0xA1,0xBD,0x65,0xB5, + 0xEF,0xD0,0x8E,0xE5,0x53,0xF5,0x7E,0x57,0x4A,0x00,0x52, + 0xEB,0xF8,0xA1,0xBF,0x67,0x6C,0xE4,0x3A,0x9E,0xEB,0x93, + 0x77,0x0A,0x2A,0x53,0xD2,0xC9,0xEA,0x0F,0x32,0x53,0x98, + 0x2B,0x4A,0x64,0x9F,0xD5,0x6E,0x38,0xF0,0x86,0xAA,0xAA, + 0xFE,0x52,0xE0,0xA5,0x44,0x55,0x55,0xBF,0x43,0x34,0xDE, + 0xD8,0x17,0x88,0xD8,0x01,0x80,0x00,0x7C,0x70,0xAF,0x7A, + 0x2A,0xC3,0x97,0x9F,0x2C,0x99,0xC0,0x94,0x2D,0xB5,0x3F, + 0xB5,0x9A,0xB7,0xCC,0xDD,0x45,0x20,0x89,0x61,0xE8,0x7D, + 0x87,0x33,0xEB,0x66,0x97,0x1A,0xD7,0xBF,0x74,0x98,0x31, + 0xC6,0x3F,0x0B,0x98,0x31,0xC6,0xAF,0x5F,0xD3,0x78,0xD8, + 0xED,0xC8,0x5E,0x7A,0x7F,0xCB,0x90,0x53,0xE2,0x67,0x77, + 0xC3,0x00,0xAC,0xAE,0x4E,0x59,0x6C,0x34,0x95,0x77,0x19, + 0x2D,0x70,0x40,0x51,0x94,0xF5,0xE9,0x55,0xFC,0xA7,0x5F, + 0xFD,0xA9,0xBC,0xA2,0x70,0x56,0x66,0x19,0x82,0xEB,0x54, + 0x3A,0x59,0x71,0x31,0x3B,0xC8,0x1E,0x1B,0x25,0x07,0x12, + 0x8B,0xC5,0x12,0x78,0xC1,0x4E,0x1F,0xEE,0x58,0x1E,0xAF, + 0xDF,0x17,0x88,0xD8,0xE7,0xC1,0xE7,0xC5,0x24,0xE0,0xFB, + 0x9F,0x2C,0x8F,0xDF,0x8D,0x5A,0x77,0x86,0x42,0xA1,0x6B, + 0x40,0x0E,0x07,0x1C,0x0E,0x47,0x97,0x31,0x9A,0x0A,0xDB, + 0x7B,0xF4,0x55,0xC9,0x80,0x90,0x97,0x02,0x49,0x0C,0xE3, + 0xBF,0xB2,0xD9,0xD3,0x3B,0x05,0xEF,0x77,0x3B,0xC7,0x2F, + 0x3C,0x08,0x59,0xC5,0xF5,0x2D,0xBE,0x84,0x68,0xA1,0xD9, + 0x91,0x2C,0xCB,0x9A,0xEA,0xEB,0x05,0x87,0xD2,0x90,0xD4, + 0x7E,0x52,0xF9,0xA4,0x6A,0xB6,0xE7,0xC5,0x72,0xE7,0xB1, + 0xCD,0x1C,0x49,0x08,0x61,0x87,0xC3,0xD1,0x55,0x54,0x01, + 0x60,0x76,0x1C,0x67,0x75,0x96,0xDE,0x47,0xE7,0xCB,0xEB, + 0xB4,0xFA,0x9C,0x1C,0x68,0xB6,0x86,0x07,0xCC,0xE1,0x9B, + 0xC7,0xD8,0xE0,0x3A,0x00,0x98,0x9E,0xE6,0x11,0x0C,0x4A, + 0x00,0x00,0x55,0xCD,0xA0,0xBC,0xDC,0x98,0xF5,0xFD,0x08, + 0x37,0xF1,0x04,0xEB,0xE6,0x96,0x2C,0xC8,0xC8,0x8C,0x88, + 0xD7,0x2F,0xBE,0x38,0x34,0x34,0x49,0xCD,0x79,0xE3,0xF9, + 0xA2,0x63,0x79,0x9B,0x32,0x64,0xEF,0x0A,0x18,0xD0,0xBF, + 0x41,0xEE,0xF6,0x55,0x31,0xB9,0x55,0x89,0x38,0xCF,0x35, + 0xA5,0x47,0x92,0x62,0xC8,0x34,0x40,0x4F,0xD3,0xD4,0x3D, + 0x16,0x3A,0xF7,0x03,0x67,0xBA,0xB5,0x49,0x8E,0xB4,0x6F, + 0x73,0xC7,0xF4,0xA3,0xA0,0x5B,0x6F,0xDA,0x8C,0x8D,0xCD, + 0x8B,0x8F,0xE5,0xA5,0x7F,0x4C,0x6A,0xA5,0xCF,0xB5,0x5A, + 0xE6,0x11,0x87,0xCD,0xF7,0x2A,0x32,0xF6,0xA3,0x09,0x5B, + 0x6A,0xBF,0x8B,0xCB,0xEE,0xF6,0xF9,0x32,0xF6,0xE3,0xC7, + 0x46,0xAA,0xAB,0xAA,0x8C,0xBC,0x35,0x13,0x13,0x3C,0x0E, + 0xBE,0x55,0x17,0xED,0xEB,0x93,0x92,0xE6,0x0C,0xCE,0xA6, + 0x58,0xE5,0x49,0xC9,0x88,0xBF,0xED,0x2E,0xD3,0xDA,0x47, + 0x13,0x42,0x78,0x34,0xFE,0x7F,0xFE,0x98,0xE4,0xCC,0x87, + 0xA2,0xA2,0x28,0x6D,0x85,0xF6,0x0D,0x1B,0xBC,0x67,0xAE, + 0x7E,0xE1,0x28,0xDA,0xF9,0xD5,0x2F,0x1C,0xB4,0x61,0x83, + 0xF7,0xCC,0x22,0xB3,0x61,0x5B,0x73,0x73,0xB3,0x58,0x0A, + 0xA7,0xE4,0xCF,0xE9,0xDC,0xDC,0x7E,0xB5,0xD0,0x2E,0x08, + 0x48,0xEB,0x46,0xF1,0x25,0xA7,0x1B,0x0C,0x82,0x80,0xC2, + 0xF9,0x01,0xC1,0x60,0xB0,0x28,0x46,0x5E,0xBC,0xA7,0xBD, + 0x5C,0x4C,0x74,0x9D,0x5D,0xEA,0xE8,0xA8,0xD9,0xC6,0x18, + 0xCA,0x44,0xD1,0x14,0x01,0x40,0xD3,0x38,0x8D,0x08,0x33, + 0xA6,0x89,0x4B,0xCF,0x1B,0xEF,0x7F,0x25,0x1D,0xC4,0x52, + 0xA8,0x9F,0x66,0x66,0x00,0x00,0x00,0x00,0x49,0x45,0x4E, + 0x44,0xAE,0x42,0x60,0x82, +}; diff --git a/src/EmulationStation.h b/src/EmulationStation.h new file mode 100644 index 000000000..9420daa8c --- /dev/null +++ b/src/EmulationStation.h @@ -0,0 +1,12 @@ +#pragma once + +// These numbers and strings need to be manually updated for a new version. +// Do this version number update as the very last commit for the new release version. +#define PROGRAM_VERSION_MAJOR 1 +#define PROGRAM_VERSION_MINOR 0 +#define PROGRAM_VERSION_MAINTENANCE 0 +#define PROGRAM_VERSION_REVISION 0 +#define PROGRAM_VERSION_STRING "1.0.0.0 - built " __DATE__ " - " __TIME__ +#define RESOURCE_VERSION_STRING "1,0,0,0\0" + +#define RESOURCE_VERSION PROGRAM_VERSION_MAJOR,PROGRAM_VERSION_MINOR,PROGRAM_VERSION_MAINTENANCE,PROGRAM_VERSION_REVISION diff --git a/src/EmulationStation.rc b/src/EmulationStation.rc new file mode 100644 index 000000000..eff407b20 --- /dev/null +++ b/src/EmulationStation.rc @@ -0,0 +1,39 @@ +#include "EmulationStation.h" + +#include "windows.h" + +VS_VERSION_INFO VERSIONINFO + FILEVERSION RESOURCE_VERSION + PRODUCTVERSION RESOURCE_VERSION + FILEFLAGSMASK 0x3fL +#ifdef _DEBUG + FILEFLAGS 0x1L +#else + FILEFLAGS 0x0L +#endif + FILEOS VOS_NT_WINDOWS32 + FILETYPE VFT_APP + FILESUBTYPE VFT2_UNKNOWN +BEGIN + BLOCK "StringFileInfo" + BEGIN + BLOCK "040904E4" + BEGIN + VALUE "Comments", "\0" + VALUE "FileDescription", "EmulationStation multi-emulator frontend\0" + VALUE "FileVersion", RESOURCE_VERSION_STRING + VALUE "InternalName", "emulationstation.exe\0" + VALUE "LegalCopyright", "\0" + VALUE "LegalTrademarks", "\0" + VALUE "OriginalFilename", "emulationstation.exe\0" + VALUE "ProductName", "EmulationStation\0" + VALUE "ProductVersion", RESOURCE_VERSION_STRING + END + END + BLOCK "VarFileInfo" + BEGIN + VALUE "Translation", 0x407, 1200 + END +END + +IDI_ES_LOGO ICON DISCARDABLE "../data/logo/ES_logo.ico" \ No newline at end of file diff --git a/src/ImageIO.cpp b/src/ImageIO.cpp new file mode 100644 index 000000000..e75bc80cb --- /dev/null +++ b/src/ImageIO.cpp @@ -0,0 +1,63 @@ +#include "ImageIO.h" + +#include "Log.h" + + +std::vector ImageIO::loadFromMemoryRGBA32(const unsigned char * data, const size_t size, size_t & width, size_t & height) +{ + std::vector rawData; + width = 0; + height = 0; + FIMEMORY * fiMemory = FreeImage_OpenMemory((BYTE *)data, size); + if (fiMemory != nullptr) { + //detect the filetype from data + FREE_IMAGE_FORMAT format = FreeImage_GetFileTypeFromMemory(fiMemory); + if (format != FIF_UNKNOWN && FreeImage_FIFSupportsReading(format)) + { + //file type is supported. load image + FIBITMAP * fiBitmap = FreeImage_LoadFromMemory(format, fiMemory); + if (fiBitmap != nullptr) + { + //loaded. convert to 32bit + FIBITMAP * fiConverted = FreeImage_ConvertTo32Bits(fiBitmap); + if (fiConverted != nullptr) + { + width = FreeImage_GetWidth(fiConverted); + height = FreeImage_GetHeight(fiConverted); + unsigned int pitch = FreeImage_GetPitch(fiConverted); + //loop through scanlines and add all pixel data to the return vector + //this is necessary, because width*height*bpp might not be == pitch + unsigned char * tempData = new unsigned char[width * height * 4]; + for (size_t i = 0; i < height; i++) + { + const BYTE * scanLine = FreeImage_GetScanLine(fiConverted, i); + memcpy(tempData + (i * width * 4), scanLine, width * 4); + } + //convert from BGRA to RGBA + for(size_t i = 0; i < width*height; i++) + { + RGBQUAD bgra = ((RGBQUAD *)tempData)[i]; + RGBQUAD rgba; + rgba.rgbBlue = bgra.rgbRed; + rgba.rgbGreen = bgra.rgbGreen; + rgba.rgbRed = bgra.rgbBlue; + rgba.rgbReserved = bgra.rgbReserved; + ((RGBQUAD *)tempData)[i] = rgba; + } + rawData = std::vector(tempData, tempData + width * height * 4); + //free converted data + FreeImage_Unload(fiConverted); + } + //free bitmap data + FreeImage_Unload(fiBitmap); + } + } + else + { + LOG(LogError) << "Error - File type unknown/unsupported!"; + } + //free FIMEMORY again + FreeImage_CloseMemory(fiMemory); + } + return rawData; +} diff --git a/src/ImageIO.h b/src/ImageIO.h new file mode 100644 index 000000000..a965a5fba --- /dev/null +++ b/src/ImageIO.h @@ -0,0 +1,11 @@ +#pragma once + +#include +#include + + +class ImageIO +{ +public: + static std::vector loadFromMemoryRGBA32(const unsigned char * data, const size_t size, size_t & width, size_t & height); +}; \ No newline at end of file diff --git a/src/Renderer_init_sdlgl.cpp b/src/Renderer_init_sdlgl.cpp index 38f4d03d6..2bc1b5e9c 100644 --- a/src/Renderer_init_sdlgl.cpp +++ b/src/Renderer_init_sdlgl.cpp @@ -12,6 +12,9 @@ #include #include "InputManager.h" #include "Log.h" +#include "ImageIO.h" +#include "../data/Resources.h" +#include "EmulationStation.h" extern bool WINDOWED; @@ -35,6 +38,32 @@ namespace Renderer return false; } + //ATM it is best to just leave the window icon alone on windows. + //When compiled as a Windows application, ES at least has an icon int the taskbar + //The method below looks pretty shite as alpha isn't taken into account... +#ifndef WIN32 + //try loading PNG from memory + size_t width = 0; + size_t height = 0; + std::vector rawData = ImageIO::loadFromMemoryRGBA32(es_logo_32_data, es_logo_32_data_len, width, height); + if (!rawData.empty()) { + //SDL interprets each pixel as a 32-bit number, so our masks must depend on the endianness (byte order) of the machine +#if SDL_BYTEORDER == SDL_BIG_ENDIAN + Uint32 rmask = 0xff000000; Uint32 gmask = 0x00ff0000; Uint32 bmask = 0x0000ff00; Uint32 amask = 0x000000ff; +#else + Uint32 rmask = 0x000000ff; Uint32 gmask = 0x0000ff00; Uint32 bmask = 0x00ff0000;Uint32 amask = 0xff000000; +#endif + //try creating SDL surface from logo data + SDL_Surface * logoSurface = SDL_CreateRGBSurfaceFrom((void *)rawData.data(), width, height, 32, width*4, rmask, gmask, bmask, amask); + if (logoSurface != nullptr) { + //change window icon. this sucks atm, but there's nothing better we can do. SDL 1.3 or 2.0 should sort this out... + SDL_WM_SetIcon(logoSurface, nullptr); + } + } +#endif + + SDL_WM_SetCaption("EmulationStation", "EmulationStation"); + SDL_GL_SetAttribute(SDL_GL_RED_SIZE, 8); SDL_GL_SetAttribute(SDL_GL_GREEN_SIZE, 8); SDL_GL_SetAttribute(SDL_GL_BLUE_SIZE, 8); @@ -48,8 +77,6 @@ namespace Renderer return false; } - SDL_WM_SetCaption("EmulationStation", NULL); - //usually display width/height are not specified, i.e. zero, which SDL automatically takes as "native resolution" //so, since other things rely on the size of the screen (damn currently unnormalized coordinate system), we set it here //even though the system was already initialized