From 42829b3b6dbb7ac46ca4b39cca79b8163882cf0e Mon Sep 17 00:00:00 2001 From: Bim Overbohm Date: Thu, 16 May 2013 21:26:19 +0200 Subject: [PATCH 1/6] 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 From 4b4c891b303c939928f5dbc873a4f3a33726cf5c Mon Sep 17 00:00:00 2001 From: Bim Overbohm Date: Thu, 16 May 2013 21:29:41 +0200 Subject: [PATCH 2/6] Find proper home path Should work on more systems now. --- src/platform.cpp | 31 +++++++++++++++++++++++++------ 1 file changed, 25 insertions(+), 6 deletions(-) diff --git a/src/platform.cpp b/src/platform.cpp index bf88d70b2..33e7620e6 100644 --- a/src/platform.cpp +++ b/src/platform.cpp @@ -1,12 +1,31 @@ #include "platform.h" #include + std::string getHomePath() { - //this gives you something like "/home/YOUR_USERNAME" on Linux and "C:\Users\YOUR_USERNAME\" on Windows - const char* home = getenv("HOME"); - if(home == NULL) - return ""; - else - return home; + std::string homePath; + + //this should give you something like "/home/YOUR_USERNAME" on Linux and "C:\Users\YOUR_USERNAME\" on Windows + const char * envHome = getenv("HOME"); + if(envHome != nullptr) { + homePath = envHome; + } +#ifdef WIN32 + //but does not seem to work for Windwos XP or Vista, so try something else + if (homePath.empty()) { + const char * envDir = getenv("HOMEDRIVE"); + const char * envPath = getenv("HOMEPATH"); + if (envDir != nullptr && envPath != nullptr) { + homePath = envDir; + homePath += envPath; + } + } +#else + if (homePath.empty()) { + homePath = "~"; + } +#endif + + return homePath; } From 802aa50ad9f0ab0c4ea66b57ab67d56781acf047 Mon Sep 17 00:00:00 2001 From: Bim Overbohm Date: Thu, 16 May 2013 23:25:54 +0200 Subject: [PATCH 3/6] Fix compile errors on Ubuntu --- CMakeLists.txt | 2 +- data/Resources.h | 2 ++ src/ImageIO.cpp | 2 ++ 3 files changed, 5 insertions(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index f3b2ce20a..1b4eba507 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -35,7 +35,7 @@ endif() find_package(FreeType REQUIRED) find_package(FreeImage REQUIRED) find_package(SDL REQUIRED) -find_package(Boost REQUIRED) +find_package(Boost REQUIRED COMPONENTS system filesystem) #------------------------------------------------------------------------------- #set up compiler flags and excutable names diff --git a/data/Resources.h b/data/Resources.h index e77ec04df..1e7274a37 100644 --- a/data/Resources.h +++ b/data/Resources.h @@ -1,5 +1,7 @@ #pragma once +#include + //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, diff --git a/src/ImageIO.cpp b/src/ImageIO.cpp index e75bc80cb..4f63e9537 100644 --- a/src/ImageIO.cpp +++ b/src/ImageIO.cpp @@ -1,5 +1,7 @@ #include "ImageIO.h" +#include + #include "Log.h" From e92a68fb46d0a68fa3d67878211bc3275ee5ec59 Mon Sep 17 00:00:00 2001 From: Bim Overbohm Date: Fri, 17 May 2013 11:43:50 +0200 Subject: [PATCH 4/6] Improve CMake script for Windows builds Enable multi-processor compilation in Visual Studio / NMake. Disable console in release builds (broken in CMake atm, you have to set linker /SUBSYSTEM:WINDOWS manually). --- CMakeLists.txt | 14 ++++++++++++++ .../EmulationStation_vs2010.vcxproj | 9 +++++++-- .../EmulationStation_vs2010/lib_paths.props | 4 ++-- data/logo/bin2h.exe | Bin 0 -> 14848 bytes src/EmulationStation.aps | Bin 0 -> 114216 bytes 5 files changed, 23 insertions(+), 4 deletions(-) create mode 100644 data/logo/bin2h.exe create mode 100644 src/EmulationStation.aps diff --git a/CMakeLists.txt b/CMakeLists.txt index 1b4eba507..f67e4a728 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -47,6 +47,8 @@ if(MSVC) set(CMAKE_DEBUG_POSTFIX "d") add_definitions(-D_CRT_SECURE_NO_DEPRECATE) add_definitions(-D_CRT_NONSTDC_NO_DEPRECATE) + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /MP") #multi-processor compilation + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /MP") #multi-processor compilation endif() if(CMAKE_COMPILER_IS_GNUCXX) @@ -225,3 +227,15 @@ set(LIBRARY_OUTPUT_PATH ${dir} CACHE PATH "Build directory" FORCE) include_directories(${ES_INCLUDE_DIRS}) add_executable(emulationstation ${ES_SOURCES} ${ES_HEADERS}) target_link_libraries(emulationstation ${ES_LIBRARIES}) + +#special properties for windows builds +if(MSVC) + #show console in debug builds, but not in proper release builds + #Note that up to CMake 2.8.10 this feature is broken: http://public.kitware.com/Bug/view.php?id=12566 + set_target_properties(emulationstation PROPERTIES LINK_FLAGS_DEBUG "/SUBSYSTEM:CONSOLE") + set_target_properties(emulationstation PROPERTIES COMPILE_DEFINITIONS_DEBUG "_CONSOLE") + set_target_properties(emulationstation PROPERTIES LINK_FLAGS_RELWITHDEBINFO "/SUBSYSTEM:CONSOLE") + set_target_properties(emulationstation PROPERTIES COMPILE_DEFINITIONS_RELWITHDEBINFO "_CONSOLE") + set_target_properties(emulationstation PROPERTIES LINK_FLAGS_RELEASE "/SUBSYSTEM:WINDOWS") + set_target_properties(emulationstation PROPERTIES LINK_FLAGS_MINSIZEREL "/SUBSYSTEM:WINDOWS") +endif() \ No newline at end of file diff --git a/EmulationStation_vs2010/EmulationStation_vs2010/EmulationStation_vs2010.vcxproj b/EmulationStation_vs2010/EmulationStation_vs2010/EmulationStation_vs2010.vcxproj index d29e27a3d..b85cd4758 100644 --- a/EmulationStation_vs2010/EmulationStation_vs2010/EmulationStation_vs2010.vcxproj +++ b/EmulationStation_vs2010/EmulationStation_vs2010/EmulationStation_vs2010.vcxproj @@ -43,23 +43,28 @@ Level3 Disabled + WIN32;USE_OPENGL_DESKTOP;%(PreprocessorDefinitions) true + false + false Level3 - MaxSpeed + Disabled true true - USE_OPENGL_DESKTOP;%(PreprocessorDefinitions) + WIN32;USE_OPENGL_DESKTOP;%(PreprocessorDefinitions) true true true + false + false diff --git a/EmulationStation_vs2010/EmulationStation_vs2010/lib_paths.props b/EmulationStation_vs2010/EmulationStation_vs2010/lib_paths.props index 4b9b5bf1d..671614079 100644 --- a/EmulationStation_vs2010/EmulationStation_vs2010/lib_paths.props +++ b/EmulationStation_vs2010/EmulationStation_vs2010/lib_paths.props @@ -3,8 +3,8 @@ - $(IncludePath) - $(LibraryPath) + C:/Programmierung/Projekte/trunk_clean/freetype2/include;C:/Users/kr.ERPA/Documents/GitHub/FreeImage/Dist;C:\Users\kr.ERPA\Documents\GitHub\SDL-1.2.15\include;C:\Programmierung\Projekte\VPackNG\modules\boost-1.53.0\include;%(AdditionalLibraryDirectories);$(IncludePath) + C:/Programmierung/Projekte/trunk_clean/freetype2/lib;C:/Users/kr.ERPA/Documents/GitHub/FreeImage/Dist;C:\Users\kr.ERPA\Documents\GitHub\SDL-1.2.15\lib\x86;C:\Programmierung\Projekte\VPackNG\modules\boost-1.53.0\lib;$(LibraryPath) diff --git a/data/logo/bin2h.exe b/data/logo/bin2h.exe new file mode 100644 index 0000000000000000000000000000000000000000..63a5c5215dadc4332d25059a5a272d71e29fd6d0 GIT binary patch literal 14848 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 Sr=P3WBHK{?{P|z>!2bX#R@2@9 literal 0 HcmV?d00001 diff --git a/src/EmulationStation.aps b/src/EmulationStation.aps new file mode 100644 index 0000000000000000000000000000000000000000..b2906ad07e4aed9e78bd38ad340d75701d2bfe6d GIT binary patch literal 114216 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 XxTW?qqk;fGMFK3#ysqZU}54*fom191i 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
79* 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 Date: Fri, 17 May 2013 11:55:50 +0200 Subject: [PATCH 5/6] Revert "Improve CMake script for Windows builds" This reverts commit e92a68fb46d0a68fa3d67878211bc3275ee5ec59. --- CMakeLists.txt | 14 -------------- .../EmulationStation_vs2010.vcxproj | 9 ++------- .../EmulationStation_vs2010/lib_paths.props | 4 ++-- data/logo/bin2h.exe | Bin 14848 -> 0 bytes src/EmulationStation.aps | Bin 114216 -> 0 bytes 5 files changed, 4 insertions(+), 23 deletions(-) delete mode 100644 data/logo/bin2h.exe delete mode 100644 src/EmulationStation.aps diff --git a/CMakeLists.txt b/CMakeLists.txt index f67e4a728..1b4eba507 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -47,8 +47,6 @@ if(MSVC) set(CMAKE_DEBUG_POSTFIX "d") add_definitions(-D_CRT_SECURE_NO_DEPRECATE) add_definitions(-D_CRT_NONSTDC_NO_DEPRECATE) - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /MP") #multi-processor compilation - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /MP") #multi-processor compilation endif() if(CMAKE_COMPILER_IS_GNUCXX) @@ -227,15 +225,3 @@ set(LIBRARY_OUTPUT_PATH ${dir} CACHE PATH "Build directory" FORCE) include_directories(${ES_INCLUDE_DIRS}) add_executable(emulationstation ${ES_SOURCES} ${ES_HEADERS}) target_link_libraries(emulationstation ${ES_LIBRARIES}) - -#special properties for windows builds -if(MSVC) - #show console in debug builds, but not in proper release builds - #Note that up to CMake 2.8.10 this feature is broken: http://public.kitware.com/Bug/view.php?id=12566 - set_target_properties(emulationstation PROPERTIES LINK_FLAGS_DEBUG "/SUBSYSTEM:CONSOLE") - set_target_properties(emulationstation PROPERTIES COMPILE_DEFINITIONS_DEBUG "_CONSOLE") - set_target_properties(emulationstation PROPERTIES LINK_FLAGS_RELWITHDEBINFO "/SUBSYSTEM:CONSOLE") - set_target_properties(emulationstation PROPERTIES COMPILE_DEFINITIONS_RELWITHDEBINFO "_CONSOLE") - set_target_properties(emulationstation PROPERTIES LINK_FLAGS_RELEASE "/SUBSYSTEM:WINDOWS") - set_target_properties(emulationstation PROPERTIES LINK_FLAGS_MINSIZEREL "/SUBSYSTEM:WINDOWS") -endif() \ No newline at end of file diff --git a/EmulationStation_vs2010/EmulationStation_vs2010/EmulationStation_vs2010.vcxproj b/EmulationStation_vs2010/EmulationStation_vs2010/EmulationStation_vs2010.vcxproj index b85cd4758..d29e27a3d 100644 --- a/EmulationStation_vs2010/EmulationStation_vs2010/EmulationStation_vs2010.vcxproj +++ b/EmulationStation_vs2010/EmulationStation_vs2010/EmulationStation_vs2010.vcxproj @@ -43,28 +43,23 @@ Level3 Disabled - WIN32;USE_OPENGL_DESKTOP;%(PreprocessorDefinitions) true - false - false Level3 - Disabled + MaxSpeed true true - WIN32;USE_OPENGL_DESKTOP;%(PreprocessorDefinitions) + USE_OPENGL_DESKTOP;%(PreprocessorDefinitions) true true true - false - false diff --git a/EmulationStation_vs2010/EmulationStation_vs2010/lib_paths.props b/EmulationStation_vs2010/EmulationStation_vs2010/lib_paths.props index 671614079..4b9b5bf1d 100644 --- a/EmulationStation_vs2010/EmulationStation_vs2010/lib_paths.props +++ b/EmulationStation_vs2010/EmulationStation_vs2010/lib_paths.props @@ -3,8 +3,8 @@ - C:/Programmierung/Projekte/trunk_clean/freetype2/include;C:/Users/kr.ERPA/Documents/GitHub/FreeImage/Dist;C:\Users\kr.ERPA\Documents\GitHub\SDL-1.2.15\include;C:\Programmierung\Projekte\VPackNG\modules\boost-1.53.0\include;%(AdditionalLibraryDirectories);$(IncludePath) - C:/Programmierung/Projekte/trunk_clean/freetype2/lib;C:/Users/kr.ERPA/Documents/GitHub/FreeImage/Dist;C:\Users\kr.ERPA\Documents\GitHub\SDL-1.2.15\lib\x86;C:\Programmierung\Projekte\VPackNG\modules\boost-1.53.0\lib;$(LibraryPath) + $(IncludePath) + $(LibraryPath) diff --git a/data/logo/bin2h.exe b/data/logo/bin2h.exe deleted file mode 100644 index 63a5c5215dadc4332d25059a5a272d71e29fd6d0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14848 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 Sr=P3WBHK{?{P|z>!2bX#R@2@9 diff --git a/src/EmulationStation.aps b/src/EmulationStation.aps deleted file mode 100644 index b2906ad07e4aed9e78bd38ad340d75701d2bfe6d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 114216 zcmeFa2RxPU`#Am_duA17WMmv1t0*gEBoRr36cwQo84(qg(%z8@?M>3qlG7e4w3G%V zWQ3-D&i}d&k4~c0=l%YEzTf}rci!)-`+n|mt^2yKdp-|>AP5BjCbI(|`oqr&o|FN` z5R(W?2$@VuXFe}iXN2&*L?NtbFhzSt0 zBb*3Fc(#LoM?)NcIb8J&fiOS=%^L?{tR%q9E*TOcuq z@B_?qiJ3$&6trNK(IxZ=UBU=JA9z5H1_FR4piB__=LhA(i7-fuCe$IF#A6LPVZ;m; z{tze;2<7KODFUzr5fMOZT30Ia@%>4mGau_{0haHjg8`cYa2LwL70#mV%fhKk@UhW$ zgPc&H{+*^CK?4a$Ac(QV04R^LB9>4HrvXQf@GnY40DPy~fhFt*9<`xF6su&1-B1Vz zc=BgqLCu5^3jk{%qy#`cf}jGhmzfB;(+FP{ooNuC&C(zNZH#<5b=Jj}LB2?x;?tk= zXGw?w&hdaV7$`9>Gdt*rcxq}f0>*z=b=a_B z+%)gON$NIADoV}{0TMfQJSN&1OazQ8IJ*QWjj&M}Y~h`RW!drJvv#EP#Sx!4n0klA z%2i4x6kt8h`UVzYoM%~Sftb&sa*m~+n9}x<7uj(jU94-!Aee@21XDLfqC_q*aF2qk zYcPUb;H*93lT%8F6>Ur+fx$!^$Op*-@{Dw`u6DR|9?epD2$@HQ%EK&&NZWMLj7nG&aZX zL<9xN9ND>3{4oP~51b{p2kI=PQmJ17Y5?*89s-mDR6yQzt5Mc_mc_&|Jtj_iY;9?M zBsEpM80$7Pa57z86@t~()#Cx)L-{RG-V5S30ErNPi)p4trooFMqM3-p)77K6r}|K? z7T_4vi-hnBKq17F0Ecw<`t1DA3jBe8#DR5p08{`}0*=|;`9~eNI4b&;PT(m>kq|F2 zqJGyO=nP#d0rgZMuA!u4rXns5`V)OpFnqX~Kjz`jMoCHKkeFC`8+3MWNm*Igr7C0>8<28pwK$a$##hNR1y zDoN+%+p7Am?UFBb@8ta9kue7kR;6lK-@^Ir&c~jSy zyb;eB?D$a*)KzyG)JG|e)mbK4PU6?wE7qVnRw*6)hfw#j=1G^}cyaTVK-(~5 zDN!%Fv`N@@_jj-Xb0vtC0{~Z8lWo6}l@Vp7)Pav!VXaF$AI+hlrN=V!o z!Z`Y}5BRZu3BWtxKLo-90H~Wv034$ipsstv|0ntZp6vl29iRo`M}Z#B3FwHsH~n;P z-&@eW#(G`ti|yCdz7Wq+QBko6yf`Ol251GS0A2EEYC`+^{oKB!9gVY7I`Q!!=Z$7X zN`;BqhrcKf+!yu?D1pypcR~4>1p_ zrHhGye*oMa_`yFY{p=s?l$1)_J8_dVP!80UvGULUO;6b{R33Cf@=f9=2=H%8Kl?Xp zWo5T*{rgvwxXG}Y!c}og;CS1%{>y6op2ryn zC8gNJ{{3rEj^&^$Y>#@*u{X&1NcZp{=ZhPtZ%IiQUx07Kt)$fR_(JLy<*-*$dSe9z zvCYRRS)G_CJ+q`cZcMXNvg;ThLEos8-uNbQ_ZGS;IG*i}AJcj(|EK9rigwHWWxev} z$WD8SfN@Og3m)bYCV|jEh!CX&FF_|bJ76&)_BvFLiH^L3VivSdBPfw)M# zhhZ_O05v-1X)t+%U-x;M0;E|0{HOCYK+*M6HZ>imY-aXU+1&iClC^au0>)Wskk?i4 zUy2N|u-GVc`7&!A%04f`G|c;_$l{zFe6?A3d_zo4w+mjm`V)Oj!@Tb05l3I<_w4o1 zw`!QG6ll6Cd{j49iATSyVM>hy9lw$D^{wHosr`vQrePkIQ66dB3&l70J^|MxxOuhO@3-cy|NsIf@YdtZ~X z-pFd1(LwdNzUH5Izg>Blc^TsFjV`7mk3g$@_#5sY=9A?7Qm!rX4oQ=<;Ug2~sw}`b znNI9r-07I}wf``G<&JsBL>_w61GW+BT>mb}4fBznVAws8R@s@pRmvkr)~Og8m4U9a z5Lj_Ylbt@Zihtg{R&vhSJ!I(t+M*|WfHBn=+Z%P>o%V=E3R7p9)K_&Am1i*in&KWr zcRgYn=BenKJd+x~>?ENEIT(-t|HqTs96=#=&cS75%QdzH&9>oZM%oY!%uQ;sJYk0q}(#fDX<-Qvvn>RCPWxA&zr% zoV(A#x`@MUluZ>mKZm(`jh>EP($JwpHw@JtIu2xhdik;t^XgSWW^FBJ*Lq{*NaZ@x z&H>kJ04B(X>ld8+)&M=Ui&YT63GfM^0-kaHi)$a`qYUXI4n1AHI+A`&coZ|x*Pj_M zeI`>+Pwy$}oRpaiKYrw78X2ju>LU)o#i9>k4apOx;}2*$122x)r$JT&DDxZu>DNFz z48bxw+B#*6=6CGTk$hk{RBz~8Yip$nk}es-T%QSiWno?X0WOk0>K5fg_zZNlaSZ|C ze0at^#cBWs0MduK8w~yM139y1&kXEZe~~=s57V#wL;AR`V67=3M4g)h_yFMkCKLE* zgAm*2ImE{xZT$U;{-5d}^gRW@9q>;?*@0Fr(gvu7vC-w(4 zJ^-L?BQyZ5>A=f8h&MtUZ4=v|3;^5b9@77v{q@%WX8Qir|2_jwc0ii*!Nzc1jP`+j zupL5de_Y$8`-V@>FI4J`yZAef7lj{6_g@IBys1S2!E@I%CG&8uC6Z3LOXu2 z{!|B=LBPWd(21G0wzeSTaH^<)|KSJ!BLV(rBFq20CF^t#O{vOp`$R>X$TiS1DXFhU zs;qIRd(l2UtEz(kl>-0UxyBO}J=mnG+PnY7vB6APxr$uxHBu-{>mmQa_%j5?9}0}a zEc!71DF1r=F;!NM3zCt+Lr&IO7Q^Sfyeu9%_0YHR7vvrSw0U`9{Oyz-Lm3$uf0cV4 zf1&M+T@@5Q;(j?heT<_Xur1IY(4M;cKx_<5!#r$n)cJS0JJzQie8Bueq38Jr`cJ4_ za92Q}y*qvK`5r%i>r7dvRU-U(t?V+h$NBkT9;)2) z{0n8kx#37<0mjMnNaDkt4w^9kWYax2H_Shk zd!K(Ief&ZH(FPlQmj`;lwm^FTo~p55G*Xg^NIJcR(0z+UMPdG}4D)YjZ#?7Zko))Z z?+y++^nh)F_F$~ivHmbsrpAG;-}uT+uBqj`*Cj8>2c}^jmZ2&ecdS2DVEv&0>krU* zZ}V=FX7>>70sTn#bkiY5+ph{9`H4QJVP5z0hy!tTPygFziy@{PFAE*~i9V)b-rwTw zYduqC!*OQH#!tb+Cb)NDe)IHcua z9+qL7Xa9>F{TXWD%T`TWyKTVQbxg7S`M87%wnbM$8v{x|avyh*F;sOGEdsujchcp$rEo%2XfRV}S6u&2@3 zUEkfGu?&_48}h`u?6?rOnx<~Cs-{jp(qzy3+c?ZEhEuiGYPJ02nzd%jHdA%gN?3FN zKb5AoovNYHs%&D?D77rUo%d<7zWS*(L~)ih|^k=IV%OJqmSZkDt1YgW_H zu0`5^%Qw~oyk1mIYKzYL0qv~4jaCX%YYxbutyYEUG_S#pYF9_U?ylp$J`09jdp+3P ztC6a%*`lVYT_rnuPBUdiE9||rGY7b>Z>MTNI`Hr}GC;k_>RQy+VcEhz?n{9Ta6g8r z4{Ozq{Spe3(*EsDUwQ5-_m1&~+#eALzQq*xN?~^J4)ey&GiYJ|Y$jDhtMyN10NWgf z`u&ObUiSB-7+br}+_|c%nSxiZGDVK3GbOeqvH;_lhIw85?_=H|`TSMbA%kX1Uu}tX zj;o_q&9a$Z_$BwL$Z+WU0bj+FlUo%gPHX|$aZSvm(r8~)b#-4NV4O_HGUAEJtz3)V zckNI8ihs;QTf+VT?eN<^t*)zj2m30ymq+s0Q;2uHbTI`& zWEgr(lu6ZuJp&r`cy}M(8{VGMS!0I=?YNq{X1nP0V?D~y!TTKKo#nTC!qYvCB?I_K z^fRQs$&kf+hmFT}ulKjlU{kT!KSX>pf06$qSJ%mJ}BKruP1w1jDt+LZnA}X zV-U2o)ac8WNwt%E+8Az47H_3#t5uWyKsjxwgX0vQCG-Y3?z;i6c!vgQ<{qh!gI$s+k1%juiT+r9010YC7|uKVh0E*4$DZ%yLw&VQ#4yYtrya~3?;K>m>y z%7A)!1?BTQpUJksx(7-8NDH2s(P2?Pojs5;xi~p9fsgc|Lsj$k?-%Qp|7+I-S$sj+ zt~o(>{*jiFl9CASMUntzShf!`m_q(#01q+^`Gn^s0BC!p+(jh+NDI?v`33aK{}lJh zOz1m#dU~qwE?pApmH+f~5hzFfLgL1-C;maF3xQ@=e}=m>BiZXoP)tBtJd*B~!gS{W)a|Kza zlkYr8L!R+0iR76KaZTUl+pr$ccetbAD!oHc*eu7 zYqA`k#h^@SQ1pjA`o8l257`fUKO}j(i2MV8j=>$`v|ITt8ARmrv6WQy5OnvUZ|AhYpo_f+hp4mzO|Fa>) zaSQoJy*B~m0ng||@hp{97yTD0!=Lz1sQ+(`Urf+5zWbsGG>~V~u6hjF&jg|D&*RtZ z;2y`XzRVwzVg8`4`N#7ID_fz`5en;MQ)znJn$jUai!udD5{>eDXfbD>`g#D$rcKlsB)&*a4Tulx3 zPeft=q#N(}OrgNuk1Xt;sP%3C1bBZw`xm^EGN3K7`a?&b{=5Av=&NY&aL=Ph-br~n zWPtrEwcqbw>8h&U@spEl{(koU-Tq15$q@TA`X%(O+G>5@Kh#vyszx7)ex`e0C3*fa zg#AM~*gsVL{r(}$sikz()T-AH7|`o|29kd=e9y)GHCcRV>qLcdUF$>|Rr8Cks`g6+ zjCb}K=0pX@mSpjjtpm8qyY9FA$SeE3i;nn!0kD6o*0=pzv{|4v4E;~GuyBv|Px4KM zOhUiwoq}qvJmyuwqs(-X?aV}pcotwB(=d;`H?WnczVSQ0F<)31&H%vwz+B{y&SGGk znhfJWYj+v2PorP@(YKy>L-N(v@Eh^!4W+Zc3JAdY1^5}Xb9R|Jc>nYB3({|Z3|`m{ zXiL~1kazS;=vy%z$GB^PQm^~UbN6zi1uwoHJQ&W8K)>iC(a&_q0Ovh`j2ks^$aly`GdUy3yb>3;JX*MBX9MbYI4|xAa z@6Rxqbk2@%-t-bC5X2ks%J4ty9~iR;A{K7PVQ5Yea4!jNCK2$C75rcY-ax>$B~~ck z)DgxqFl?eQnQ>6A38>LA%LV)^NPGz&5kPXC=5cKSZ%-?Tr}HTWHVo_<&MpU4Nh zG@@$2J-SYR276{9-SI*mECHzraL=!pEGK+6yU+HIWyyL}P0iOJ-zvn}oet6_%c)T{ zkSC+=W&X)$!0$smrU$85xKhX`oD`>~faV83J=}F_ra9+JHFjWBB}&GI!$Q1iUydGvS@t_TiOW ztouRuz9`M7LkG}Cmmt5Ls-@PhlOW0DFL_W*%JQFvJQqt}NKQy#s%dE9_=s>3d666C z!yw-`g?kfB1rt|t{9F%w|8Oq&ALxV=+WZvK(_S!$X$TWi_WLa(zJU&=fevVD44tJ? z%;E1lbfeHdH~&ACyQ_X8Gav7@z}-Qn)cB>K2O2|e)HIO&+Yk3$DDh3qK@JN#`;Pjl ze?kW!H>=%sw@dsWH@gm4@ox9_MliVBDebK_T{84C-v2hgmhk~(Z)d;P)BV0GdmhFm zJhzkn1MT3ie;~V0SG&V~l%Hh&O`1g8!JF*z@jfqR_B(xsDV~d3t?e6mR<@viE{GC4lxsA}*VSn##^L^EWUYlH{6U9L{G)LJ$5I^Q(9e^;uCFqa<%ZFPn404hzssnu zUJE)+>m0A~E);B^tM*60ION%49+m+=j%8VO6^+I*g=W)#=;z&K?d=(TB903dR=R)Wk8!*)2S^58uwYh3=f_~bRk^P;dn<=Hfd6AG8PqiyqSFrd zSqC^a;{2df{@>13*?A!67dXD-7{@N>Pw`gxj$XV}N1JO<--At?vg7(E;)oM$0lyW- zlyZ(|60G+vzQ423y$|5ni1Pz1kFxv?4_!Kd@%<;6N#75$YX!=Z_I@Au#Ba;}D?h{y z^4vq2WNiX}sRNuJ{3o)L0sxMSIJfETPCL%^I_YG}%F4pmEdSjf(tvi!M4C7!?B4G9 zjPnDWBSAmD^q+78`UW!8cAdC^J=*_JxMPTXz&LsTe?oRr7NiAqS#}^YBfUo*40MV^ z-r7+HvfiJDpy#95_C1Y(25?sw=K2h3M}PmWgW?P4oF6pWvj z^s1B3C4b6;hK5>^v$I0iefly6Q5VS|ZX34|A2c0dUI%j<_VFF&R|9|+&UJS85&YSC z!uc84s&8jqT;Dzc!0$d|KhFSwZ%q9BO)=K|0Om-FMvhF%@|F)8%bwm2UAU?1`#VM> z3~^1|b;p{WCK<YX{uKd5~fymP<~lU&?bcu^)&J`Bmd zb^LZBv~}11JmMkYmm#hsBexq zoX3s-L3Y$b_}tJgdD!Uy-H)JqJeLW=^rf(Ov3Bi%F35)WPubsRAmcVRL%^p}Yk}+! z`zwIspOzonoZSvcIWX-bemjOu2e@9Sh3_jd*xR0r`+3h`PJs6wNN}_tN8$NaUWa|8vC(ElA^nf!2fF#4a~ZPzS@ShWN4bk3JON=AKm!0P4?>bY z-Vy%cUJm4?VSaefyq|1<)B_nVS+JPIvmWeVAH09l<>z{n9n;U8>Bp)Ey#2J60NOpu z-~Ig%vJZmNI8bqb%d%6hhY-%}{EiVzr=9sGo%tlsWa!;hr~?nKoteJg(|;>J>H*&6 zfxB6(^Tx~L#wjv>B{!LumL^Wp{^=e7(C$%wl$V{)p5o93KfEJ|IzYWZ`f9+-TJ!Xv z10Qx=kZ+4+CcAm`Nq)oOBXE9v72e}`3E!dnt?i=@NZ$wbwApE69BB6_KcwTHba$xh zZohzn0_8jb_ZbM;-<$Z!_934MetQHv56BayJ3IdD14+AQ4=v3{G2tH5D|L0XZ_&|% z`XqmNxHPN%am-?;jd7seoBX8BbPwZ59EcC<^PtA@%xmWI{ah#|7H6}U)~eop2Q+-JFsKDZZfjV z%Wez!&PsAmwugBB*8TzKzv}-$PW=8l-uYmMo#cBfK;OF;`O#;b28aVN?{4oXGy4z9 z{FVO${{GeR?|1$m^b!obv$r|MziMe|iLuLv_nU#&*^r0p9oG9b?D>G_uf{*9w-WIE zkI#RA=62*CWU@i}JpkSbBIiH_kk8&1epovp9>`Ba9Dh3hfja-K`EPY6-x9z>D?m^F z4`oLG@q>OqF9BGW?f2L7-~ZzJhb2GC0P=-(m+@E6-Q|a}=2*U`^-sia);~xeeG54+ z#SrlKy8g}Uef_(&lV@zR-vPFD*L%9i1M~x&>*2fy^SZY=;v?+?$3QczL;fJIWBu#* z^ZM6);;+}gB#!Q3_x%q>D^bTtCvLYX5g!~C6`AT_v+VmHxHkcO>;Tx^7XZ7n>P{2n zl83r$AUq4 zWqpyEy$tA;wg0(PN{S^jDLWZXllxz^|0xIipWkKgic3kwqu*rUw{qEK>uVhJb`;)~ zU{rE({iK5;_)e@AsBq@VIs-Y}S9!aa1Gzwb z)b_Z61Ameq?I2yG?QxB-)?KbYc?KL8(FS^ZCow_t zzj*#7nb4!`_%0E)J@Wo1vUV>E_RqRs2Ynru|2@AC*b3=^vK{B2Xb1mhUqIX-Q^)zI zES!H5Kfd?HZU=I5|JnH`DZ3BI{;ikyQAwSk4&uR20&lRV@GqW!Q#;SU!LR*FcGLrf z0_Wdye|P>3U52%mm=3bzx2Q=ue-|F^ct4k%ryOISA9S~^zCL%1@16G_)ZqSuDBOSO zp}+T(hTp`Nll$}g4?>d?&E4TGD_H~!Jr)Qia;XDy(BdAl= zYavWS+XDFI{in{dta>=F6Z~;*(`Oyv7^tia_n*}M?EVuf0(doo_G^Z3a<@1AK_6h( zMH|6UmnU$neU;<_rp*uwvR`!Rgw##<5X)kny8)Yh}ix?L3US^)@m&QyJU&~x284Z7HHh={f$282t zGVFB@5|uaqL~gR|ph4t4*uT5~$fkq!sDteia2EOt9rQ3ifb~Mo2X9iTrTeIkyHI6px9 z0H1aV!gg2_wBwwxlxN9{zRLHzau0ZJ6idQf59a#hzQRSMiQ_x@cOTH#b@X?Zzx^lg zzmr`7eWDNgL>w3JJ${@YARjna!a}%Sz%>)3vC=0f*fX|EtYE(6q5sgQewGZ(-}(U`MmRQh^3)|eJ3Yu_z5fE|OI`23WDD=^ zvktHed-naK(V2nfF*!lRk;y6FR`2>#TzoP-|g?9{?YX>asv;0^V>phys>y#KDL26qqC)Ef~n4!-oi z^8Py$KCb|uF2EnmZhsNNtJ?%q9{zSs6hRDzzhP6VKoDH;F@!jj7%*Uf7&=3kE8{P= zts^vNefI#qd;lQ{SXRD`zz;hR<_rQqtU$yv3HvT9uU#Rq0?dHU6gt|0Y!|Yf5G$&x_mI`@U*Qx6FhEgG03L|__#KH=;~i~< z1*Gw=ov_^)>j^*;q7;G;i+Y6~o{81%tVd0ZD*liX872GV3DbPC%7>$~eeY}zdY*N~ zif_BN@%HHoJXU=CRamx!gz2e!`Pu6hhdza9|IsJXg_?(+Wqb&KvPI?xJ6M{G2 zm2gK9h6?$E)42^t@qIk-B&76xwGWli>E#&-REnZuQ}hQz0Zr zb7oJlm=a~|a&6dl=^b~rHV7Szmq`}iv3|1pz1t(>gGLRPJe^he>gwo5&*A-#Pg@qF z6;$VT_3XwcV-gAXF(b6=nuNpJ#yPBhJWa;GXx(J>{d&|#1Gi>3=UA@2pD{df!Omu@ z4`oJv@_lagtgkE&cFOdEkKwq+h zD5sW2cqDGPe{*sw;k9$$qQFx}(qsiM@zm~Vzbm*<(EaGwJ(reiIjySaX7KIu4{_%+ zwB!3&ZTR|-%yvN<;Yb{;mTRp{Oxi9!_ui_;T+rGEnGGY1_j5*xMGcN};S-bf|76bF zf1vC)(S}nC?}g9Fv-(uu&ve_nBK62tw}=~e+FqqimK>^LI>eUCN6UQf zuC&@Wi+wh!@(3;$y-XXzbmJ?XsCYfpp2$jSlcHpE9@&3WZwi^NCzjmWxcBpu zBZdn?U570{xp!AU!nDcpVgC0I6rEHlH-F;rQ7x|WUfbJ)V;Jdt97+6&b!WL0F0S-m zzhi9cJLgoT56Fk0p`@WzYjMozn2dd`juo4~$%GyqH~0u+B=hivSlS^zLWkJEdE($B zP4lszHe4S@Z(J^#lSr&JZx$)IJWzO*yeo1e!4xmG+&yc~x*28RB{sY2F7i!YZ}22; z--cGTSNGm#N!jkS2v@$aBqq+}ma+Ai6>a=6t5-+Rt1MTF&?p1t-@b@D7U!)t^vIA+ zM^2wz>@T*_@BCnc`gRfLoZI`B+Rq!NR$%>zE>=4t%Fy+ifst0hs|Su| zw8c9sHfOt61gcJ#ak-#t9wHyo8c;2+YQ=aI9b|(4GbK5C|1bOTxwau9HTLdbsF@K4jU(R(p_=q20r**0v)v=3Gdvxlrv zaE11GR9^nlFi?C{%+-y_MRE1-iYM;Tx^>%In8x+Zz&AL+zqoj=TK^qKV%E;$H%-mr zyPf65?Iqk6|9Ga%;q?v`nT%%H*RiILtW0LSVHS91ZjKx)^=W>Uefarem*LuR=9CeF ziWeT)Fw)&!#?$>GB97C>ydT!aw_PXxeHNEO`@6LD#@?5<6wb@ZIrQ-Pf&r^HKfAJX zH4+i>I=b$&{g#~InB#`?9heJSUtX4Y<`iz@ocg6$`SzEZ<&Ywsq|3 zS?1OH4fXM&%c>NZMRHeWmL=|xPSwzH3KuyRx4?3xn?3Q+mSIHKr27uplAF^m$-`4| zAiQqJ4w)l|nNB~o{jq6cRj z-=CNKka|q8NweWm_{Lae$!%Lhp1ixWY6aH^`aH{(eqhuoZ3+8Euc}%cv9B<6_}ohg zd-fRZyD(Z@X`{ZRz2R(9DS7Ui}S>-o`)m#J?$nH=>!DlCXWx0daIQwyL2Gt2!`#lL6dthC`d^gIye#;GWvXkxxY}Hx4dSKRzVPhF5xHY89&n=;tHAGiEl}|NX z;-YN#sd?e$4K&J_)HWvP%USx?{9HSpWxiRww{Z38DMj_>TnYQk)x}ocSpBhivBTsS zK|;bGQW{+6#yzdKIABwEy`dp=HowTEK@r8TmW^_(`EWp2vTV&>rK`gy-@KhW;I;eO zves6QsS~fOw(nUbyj{m`^Zm-tIYImu(?2m~&pi(bc@itTbNH)Od-uoAb5If+zm+38 z`oYXc2TdAUMMgVsmf3Q4)Scu~YF1OqGqr1hD*cSbzl}@Uo0(rATJqt8%FI(AU8gBJ z%PEc-(VTrXoqDgn-aqBV{aIy!SFfqqRex??XiuXQs4Ni{Jbbt ztNulz%{z0Bh@<)Gk;kS?NqYFIz5U*ieKQ2h%bC{BUP3~$Hp)XI=BN${UnKCvP1SAD z#Lvs_tC$)F(kh>ohAIjOel$wCeMKRrpRivoL;mp5w~ftMv!R{OlvG3A2 zFRiJYn6~WOH<_xM$s0e*watCMlh;r3Nm<0r@%7<%?*_$(wHQsMYL+E!QImLL?n@YY z@tq96RR1KE`(0YbqGtQA7i?l$g%^xk9A`rJcOGfBx_R=Xj4kp$qrBydvSn5bOCogg zvP|oYUdxs_Ff@Ghbf?sB&&aT^s=AYQY3-}=i^Z?sJ-$Qe#SqWDY|Rf}%59E+(cUBK zXtU>e&66UNi20@JY561O3a+dz8?#uX`fBR)=v!aD?6Qk&6#10C??wI6Gm<6Q%Xj)| zIXMdyX_oKy3zJU+6}_mXmLFx?~h0nJy2_memO z%e~py!!JZ^m^EnOC#fydUge5c=)IIQo5Y)EYXA8D3y17e!!%P5%sRKih@o1+_08YW zCwBjsSv9G5&!0T7dA7{w^Ete=^B>F#7_-%-R9f-+{RNtYCr5r{;i^>|tgGF#>-bkB z982bl>StM^@19Xy|9)EXq2%({Dzwk~k1D1nN#wgq&Gm8Iz3NqaD-O~}rk$Hl(@&}9 zFd4a^kLi?~15lj5f4g?Y*Bf;mTcJ zpPi2_U^W|@M0=b5P|CfoU39s-qxn8zlZ&m5Wh)unviiEg2@4Z!E;T>#UH{r|@970= zUffR>79MTCs)!Qft5F`M%3T^5{^{GT>C5LlYbZEe^tn=_R&Hh%+u5XwSuRuy z=CYVv+^Uw-4nAg6sA}56xEDF8*EAW$=I)=Ot0eu4;-kOaeKV_{v|%PwZDg)aiex{h zb7#FLPPm$1Bb;=SsVp&I<(xqZ%sPu<#{Bv*F;4sTm0jR}(!|ZJdF1GYw1*ETU7`Af zf8paewqzS!dbgB8TR1WBWu5={WfR7p4tkegPIq`b?JjMC!_pl>vhqO^uwZVZe zVk}qEqs(?n7B0{Yi9h?{#z3okJ2@zeAHTZKSRDJhah(A-_rmNwS8mHUY!rRlwo8KW zNX)kop1V>oBBCVw^TM?ymO&qaZ;ovnTv|`hqnlW+ygX;|OpnC8xNGC>cgKnx9=Jx- z>qX(H8L6#&soFY~#h%xm!S_%sO;d+)D8L;5gZ+RJjFY*{D46-&f5CI+#j=U6udMva zt)9)fwlAySlBDtWjybgW+jcy+vuZ~RH=4P$jwnBw>f&q|oF}PWTX#@bGVg_1n8%b9 z=RsK%A05T()m~z8%ZsIaZjG9KZpqW9hgOvbwqM-5c|@{)m8#c~N!iYEk@^pr!(QZm z+4o+eoF2L4)M-Vlv5SI3m9HA?91-@8ZZY-S&QTXr>hEozw)IL)Ue{11d_7(dI%g@dY^&_b1mS+6 zbmfKY+q%$m{7bvR`I$>+~^N-${#+&96Gn1d)+$Ii5|(5>=XKzp3fS(&p&I1 zWf1?V6-3(Z=w)SlPt?CSoy}a~x`yR0*)@`I;wV&noCyJ50q>Il#+#B=IY^gcLR;6`7Yv3d)sqo0kiB4lTw^<#&WBGb$+2DKqxQxZ4^t`R< zZ=P9Bc{Ly^r(Ug9?E@XwnQB^|8;&w}@wD|@cC=u~yxk@F=|MpgE9e^)xId*S#78|k zZ5EUjnC-TCzsli9=0+oBsZ{rIR@ajIORo0qw_%od=9cB6Y3>sTM=+bcHt%nBE>f%A z@?P`gC>e3t+D88~e7=Isiebkn8#t!kcD3JqI6&RypjZ60!nAv^SbnrzwBDn?<7|0j zz9^1}kxLcF?sKkteQr}uR>-(f0`I&xu6nCD$WE~CbF-(i-K+;T_PftT>A4(Y^uIXr zNb=F7B{SkhHEDMb=79nRM2EZ`Mf5`6fC^+fIg2udk&E40$m8lfMHodL=z! z2cKcsD6YGAQ}WjTgw`8GbcD?g7^w0lTYUmfy_VKV2`N6$d@ zGn@D>`d%4YrhG@9%kiG?b6wjNGP?fOyN_0zfe|aM^1CQAes<2t^3NVNu|pqkFastG z9(ybm81gX3b;446=Vvjp37qO1W0#1&{p#>~=L}it6E>UoZ^-iCQXSW#wfRfsLV^AcHW7de(;XDHpgy**E@Wz=~cBeLmC>^#x`$J zW^x|R)7RP(+h(mmwR`AtSnYmhKDYgBB!@gOY@F-28XUCml=;^p~RB$0ZD6p1+}%OIxK46w(4e^Ktq_~^>LD4 zv&M3PIj_;LEH&LXuk7vH>6Zry6mDGde2J~5MwEB1VSuP%py?eE58W#5_$Xn6VohzO zP129*VP>iR^=r~5h0`PUCbz|AQj=0dE!+ATG_R~XJ?`<$vdV~vg>DmlTiVYJxVGWW z2hS3JOF@|H*wBsUnP;zF=F=c^aBA*u9|N?i`;rdU42k8UPVV}7(PB}uhJ|Cemd-bk za!kIugClH9;a~&ZI4f_i2b=uPhg=mT8eA0SF8u$ z&_$;gYWiE34*0NdZ{B6Igk|y$DR(6k7VIlMvWZWvu}XFR4vscoU?owty1L1m$+7VA z8iz~KYcE{T3{ln2Y!0i*OWUHqXI{u(L;=EQKL#-=(&+RsAkL4{a*fUTEfhO4*K^t{8o5PRPZ1>H@9X z^+&qPuF)$EdEYE+O3%!%oNPL^KH#P02ValWwVpXM6KZ##bmyP_^wMa3&$)NcJnuJV|MnZKCTJT4X$wDDXV12b4fo+snL;IK@{B> zVr~)HxZvO>?{Q@j3zR-f6V)^q1goBro6Wvm~(rHxWvNUe;lnHj6ev)E`4 z4aPT_(sWYo+*ap;2a zG@<+_mMc{xr+jkbO58oH=JbHr!x=MkUIg9!np^b3K4?6u z9;&vBwx>%N=kT4=nkoe?SH95N@h*q&<@y~d8rrb_9r1X(#G>j6{TJ^I=I%f1 zgZ1yyxkLDm7KQPKM=}W;yIiTKbLFQ$+&_73zf~NE_!XmRQym6s?&dWVUUp>nWYuxg zZ>KJfHtfIrbN2fS+gC&NG$O!&vuwpTVG*aH=@X+|pNu@`B{w?Z<&1T$YRAn>2j{fQ zX-hRuO#ZBAc0N1l=(JZy3#9_R?wAOcx+~PlyvizH*k7f6y;Sza<#+EUtm{|Bwb-w4 z+SRv{JmpueNzl{`)VreSzMH!1)xOywZdi|EIOMg?44WG#UoXlv3Ap)g_PG1&V5TuT z!7DY`@0`|tU+yn^9PMu1$h?1ZovIO+(}x-vjmIZ8$3#!%hpswRAtT{LEaT+2XPP!Q z!XMo^Ge>zGCCxVRR@Af^rq%-^l%$Cx82gK+d+^WU@sm10?o0z1k zvi4O4i}(4P^$%{*96mYf!=HAI@{W?f#8%Q;&~d&Hwd_X}DjUWv@i5U}vt zGV|Pp9rVksb7O6n%ieNaxOQj6@iGo$JH245X>X)f9c-@?wOknZHAZm9fCiP2gx8G5 zOH(gX9Y#jl-ky@#oU^RoATdkpp$qfN51*vWE2@+?(51@{4;ouB@#KRY#fdi(Dyz+4uX|N6svLH8{c1DD%X9rgezR%>`TM4c1FMwR-lZs8y?@ znx_f~xVcQ2?(X!_X`f0iE$_yTq51a|&AxGL5KtVRJSNrX@V4l0ly9T8UirzC8S%#5 zr^m)^h}*Da!+oWA(Y=!r%gy&lXtd3=<3A=Su>HUmXT$1{Z?ux2_4TioiKIQBT;pt-Am`5MkUuTYl;>W5 z%hT&mjytrsBGk}o1GTKdOH+STlqcWEwt;E&jqmr1hY>m_Jg#khb2zr#@l=tHS=;TK z_n#QdctD$_D>RTxSus9vxzN4&9D}7dz%iHY;N%Q7>N~#q)A(Pn)|9UwrVz{5^nrRJ z)O!7v*x8fQ%twc|i8gUW7#vbtlR8_flvZlwk$7u|KQr6Y`+4C#-nq%AY)hC^8TR!q zB_n4fg>RJKy*O*`+ZWSI$DHy`O*Yi4TSL?G3rJh^Fh<2@&%2T}cZJqRjo~XCe)p99 zJ6_dwo128QXu17f?&P%Ez0c3X%vb1g-0)Jxoc8-C-8~HN7cO}+!C-ECSnBpX4$(;M zN3rksPy-!v-!(T_d42eB;S=$4_42}vvGP9Zvs7MtT{%Cat#xvto%&$DrmEWNG4+No zXYR{5J2lBFi?(z4#K>y>3%n^+8z;8(EATnmY|i1AFVnAGQc&@!XSic>+eOL=$~L3< zH8VVK42gHw%=dN%3WMMwvuRYTJunSQ?7MQxPe5IL7PjBiHT2C)b@2jRrgD(!i^uzb)Ca26(ST; za$E7n7%|n$v;}U#%;E^Gz}%UO zUTt+SEvC@#eB|;mf20$1O3yHIuBTJg`>HFgZxTi)v^{wnHrAV&tV}&(uw?g($l;L@ z;sOUEqc1NGU34(Dh91SC`=a*Px0Dc$Yk^a}KLpNQv3+ht_WaUu$K(&izo2A)mA0rc znRh6$zs_$edfxrBU6&x*J z?{Be43LYk}wJvYNpe&jcpQ7dDO1=4(YSh~$kF9;HA0MAHXp${&UBrdwDf{Rb-I(L} zKc`R1kTN+30%$&V)D=3Q&8*ty*KVW0xo0GR@D|4K(Z6V&SXI^`B zaEaXjmthLTn)EuEqFqm}&3js7m!so%ig-3>_}JCnuV0x=lh|3YxN~N44Qp$KdBU;> zj-I|qIiBww-zfjJ26nbPbnnE6F(&ZM%cI_W#YvAT{>Ga=t1i;H=x}XXd_<<+{l#&M zJra{RT5rB6DJe-h!!iD-IoJ3_L>8@R XxTW?qqk;fGMFK3#ysqZU}54*fom191i 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
79* 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 Date: Fri, 17 May 2013 11:58:43 +0200 Subject: [PATCH 6/6] Improve CMake script for Windows builds - Only CMakeLists.txt Enable multi-processor compilation in Visual Studio / NMake. Disable console in release builds (broken in CMake atm, you have to set linker /SUBSYSTEM:WINDOWS manually). Did I already say that the automatic "select all" of GitHub for Windows sucks?! --- CMakeLists.txt | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index 1b4eba507..f67e4a728 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -47,6 +47,8 @@ if(MSVC) set(CMAKE_DEBUG_POSTFIX "d") add_definitions(-D_CRT_SECURE_NO_DEPRECATE) add_definitions(-D_CRT_NONSTDC_NO_DEPRECATE) + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /MP") #multi-processor compilation + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /MP") #multi-processor compilation endif() if(CMAKE_COMPILER_IS_GNUCXX) @@ -225,3 +227,15 @@ set(LIBRARY_OUTPUT_PATH ${dir} CACHE PATH "Build directory" FORCE) include_directories(${ES_INCLUDE_DIRS}) add_executable(emulationstation ${ES_SOURCES} ${ES_HEADERS}) target_link_libraries(emulationstation ${ES_LIBRARIES}) + +#special properties for windows builds +if(MSVC) + #show console in debug builds, but not in proper release builds + #Note that up to CMake 2.8.10 this feature is broken: http://public.kitware.com/Bug/view.php?id=12566 + set_target_properties(emulationstation PROPERTIES LINK_FLAGS_DEBUG "/SUBSYSTEM:CONSOLE") + set_target_properties(emulationstation PROPERTIES COMPILE_DEFINITIONS_DEBUG "_CONSOLE") + set_target_properties(emulationstation PROPERTIES LINK_FLAGS_RELWITHDEBINFO "/SUBSYSTEM:CONSOLE") + set_target_properties(emulationstation PROPERTIES COMPILE_DEFINITIONS_RELWITHDEBINFO "_CONSOLE") + set_target_properties(emulationstation PROPERTIES LINK_FLAGS_RELEASE "/SUBSYSTEM:WINDOWS") + set_target_properties(emulationstation PROPERTIES LINK_FLAGS_MINSIZEREL "/SUBSYSTEM:WINDOWS") +endif() \ No newline at end of file