From f89a418b5c96ba5ea8d9b366b839adbafdb84cfb Mon Sep 17 00:00:00 2001 From: Aloshi Date: Thu, 22 Aug 2013 21:41:40 -0500 Subject: [PATCH] Moving from GuiBox to simple mobile-style Nine Patches. --- CMakeLists.txt | 4 + data/ResourceUtil.cpp | 20 +- data/Resources.h | 6 + data/converted/button_png.cpp | 406 ++++++++++++++++++++++++++ data/converted/frame_png.cpp | 300 +++++++++++++++++++ data/resources/button.png | Bin 0 -> 3981 bytes data/resources/frame.png | Bin 0 -> 2921 bytes src/components/ButtonComponent.cpp | 10 +- src/components/ButtonComponent.h | 5 + src/components/GuiGameEd.cpp | 11 +- src/components/GuiGameEd.h | 4 +- src/components/NinePatchComponent.cpp | 165 +++++++++++ src/components/NinePatchComponent.h | 34 +++ 13 files changed, 945 insertions(+), 20 deletions(-) create mode 100644 data/converted/button_png.cpp create mode 100644 data/converted/frame_png.cpp create mode 100644 data/resources/button.png create mode 100644 data/resources/frame.png create mode 100644 src/components/NinePatchComponent.cpp create mode 100644 src/components/NinePatchComponent.h diff --git a/CMakeLists.txt b/CMakeLists.txt index b599f9f67..86370a5b2 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -140,6 +140,7 @@ set(ES_HEADERS ${CMAKE_CURRENT_SOURCE_DIR}/src/components/ButtonComponent.h ${CMAKE_CURRENT_SOURCE_DIR}/src/components/ComponentListComponent.h ${CMAKE_CURRENT_SOURCE_DIR}/src/components/ImageComponent.h + ${CMAKE_CURRENT_SOURCE_DIR}/src/components/NinePatchComponent.h ${CMAKE_CURRENT_SOURCE_DIR}/src/components/ScrollableContainer.h ${CMAKE_CURRENT_SOURCE_DIR}/src/components/SliderComponent.h ${CMAKE_CURRENT_SOURCE_DIR}/src/components/SwitchComponent.h @@ -187,6 +188,7 @@ set(ES_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/src/components/ButtonComponent.cpp ${CMAKE_CURRENT_SOURCE_DIR}/src/components/ComponentListComponent.cpp ${CMAKE_CURRENT_SOURCE_DIR}/src/components/ImageComponent.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/src/components/NinePatchComponent.cpp ${CMAKE_CURRENT_SOURCE_DIR}/src/components/ScrollableContainer.cpp ${CMAKE_CURRENT_SOURCE_DIR}/src/components/SliderComponent.cpp ${CMAKE_CURRENT_SOURCE_DIR}/src/components/SwitchComponent.cpp @@ -214,6 +216,8 @@ set(ES_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/data/converted/glow_vert_png.cpp ${CMAKE_CURRENT_SOURCE_DIR}/data/converted/glow_off_hor_png.cpp ${CMAKE_CURRENT_SOURCE_DIR}/data/converted/glow_off_vert_png.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/data/converted/button_png.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/data/converted/frame_png.cpp ) SOURCE_GROUP(resources FILES ResourceUtil.cpp) diff --git a/data/ResourceUtil.cpp b/data/ResourceUtil.cpp index f2cd6a3df..1fb69cbe3 100644 --- a/data/ResourceUtil.cpp +++ b/data/ResourceUtil.cpp @@ -2,12 +2,14 @@ #include "Resources.h" -const size_t res2hNrOfFiles = 8; +const size_t res2hNrOfFiles = 10; const Res2hEntry res2hFiles[res2hNrOfFiles] = { {":/bar.png", bar_png_size, bar_png_data}, + {":/button.png", button_png_size, button_png_data}, {":/corner.png", corner_png_size, corner_png_data}, {":/ES_logo_16.png", ES_logo_16_png_size, ES_logo_16_png_data}, {":/ES_logo_32.png", ES_logo_32_png_size, ES_logo_32_png_data}, + {":/frame.png", frame_png_size, frame_png_data}, {":/glow_hor.png", glow_hor_png_size, glow_hor_png_data}, {":/glow_off_hor.png", glow_off_hor_png_size, glow_off_hor_png_data}, {":/glow_off_vert.png", glow_off_vert_png_size, glow_off_vert_png_data}, @@ -16,13 +18,15 @@ const Res2hEntry res2hFiles[res2hNrOfFiles] = { res2hMapType::value_type mapTemp[] = { std::make_pair(":/bar.png", res2hFiles[0]), - std::make_pair(":/corner.png", res2hFiles[1]), - std::make_pair(":/ES_logo_16.png", res2hFiles[2]), - std::make_pair(":/ES_logo_32.png", res2hFiles[3]), - std::make_pair(":/glow_hor.png", res2hFiles[4]), - std::make_pair(":/glow_off_hor.png", res2hFiles[5]), - std::make_pair(":/glow_off_vert.png", res2hFiles[6]), - std::make_pair(":/glow_vert.png", res2hFiles[7]) + std::make_pair(":/button.png", res2hFiles[1]), + std::make_pair(":/corner.png", res2hFiles[2]), + std::make_pair(":/ES_logo_16.png", res2hFiles[3]), + std::make_pair(":/ES_logo_32.png", res2hFiles[4]), + std::make_pair(":/frame.png", res2hFiles[5]), + std::make_pair(":/glow_hor.png", res2hFiles[6]), + std::make_pair(":/glow_off_hor.png", res2hFiles[7]), + std::make_pair(":/glow_off_vert.png", res2hFiles[8]), + std::make_pair(":/glow_vert.png", res2hFiles[9]) }; res2hMapType res2hMap(mapTemp, mapTemp + sizeof mapTemp / sizeof mapTemp[0]); diff --git a/data/Resources.h b/data/Resources.h index 3d2986ae6..eaf81da7b 100644 --- a/data/Resources.h +++ b/data/Resources.h @@ -8,6 +8,9 @@ extern const size_t bar_png_size; extern const unsigned char bar_png_data[]; +extern const size_t button_png_size; +extern const unsigned char button_png_data[]; + extern const size_t corner_png_size; extern const unsigned char corner_png_data[]; @@ -17,6 +20,9 @@ extern const unsigned char ES_logo_16_png_data[]; extern const size_t ES_logo_32_png_size; extern const unsigned char ES_logo_32_png_data[]; +extern const size_t frame_png_size; +extern const unsigned char frame_png_data[]; + extern const size_t glow_hor_png_size; extern const unsigned char glow_hor_png_data[]; diff --git a/data/converted/button_png.cpp b/data/converted/button_png.cpp new file mode 100644 index 000000000..f120fa94c --- /dev/null +++ b/data/converted/button_png.cpp @@ -0,0 +1,406 @@ +//this file was auto-generated from "button.png" by res2h + +#include "../Resources.h" + +const size_t button_png_size = 3981; +const unsigned char button_png_data[3981] = { + 0x89,0x50,0x4e,0x47,0x0d,0x0a,0x1a,0x0a,0x00,0x00, + 0x00,0x0d,0x49,0x48,0x44,0x52,0x00,0x00,0x00,0x30, + 0x00,0x00,0x00,0x30,0x08,0x06,0x00,0x00,0x00,0x57, + 0x02,0xf9,0x87,0x00,0x00,0x00,0x09,0x70,0x48,0x59, + 0x73,0x00,0x00,0x0b,0x13,0x00,0x00,0x0b,0x13,0x01, + 0x00,0x9a,0x9c,0x18,0x00,0x00,0x0a,0x4f,0x69,0x43, + 0x43,0x50,0x50,0x68,0x6f,0x74,0x6f,0x73,0x68,0x6f, + 0x70,0x20,0x49,0x43,0x43,0x20,0x70,0x72,0x6f,0x66, + 0x69,0x6c,0x65,0x00,0x00,0x78,0xda,0x9d,0x53,0x67, + 0x54,0x53,0xe9,0x16,0x3d,0xf7,0xde,0xf4,0x42,0x4b, + 0x88,0x80,0x94,0x4b,0x6f,0x52,0x15,0x08,0x20,0x52, + 0x42,0x8b,0x80,0x14,0x91,0x26,0x2a,0x21,0x09,0x10, + 0x4a,0x88,0x21,0xa1,0xd9,0x15,0x51,0xc1,0x11,0x45, + 0x45,0x04,0x1b,0xc8,0xa0,0x88,0x03,0x8e,0x8e,0x80, + 0x8c,0x15,0x51,0x2c,0x0c,0x8a,0x0a,0xd8,0x07,0xe4, + 0x21,0xa2,0x8e,0x83,0xa3,0x88,0x8a,0xca,0xfb,0xe1, + 0x7b,0xa3,0x6b,0xd6,0xbc,0xf7,0xe6,0xcd,0xfe,0xb5, + 0xd7,0x3e,0xe7,0xac,0xf3,0x9d,0xb3,0xcf,0x07,0xc0, + 0x08,0x0c,0x96,0x48,0x33,0x51,0x35,0x80,0x0c,0xa9, + 0x42,0x1e,0x11,0xe0,0x83,0xc7,0xc4,0xc6,0xe1,0xe4, + 0x2e,0x40,0x81,0x0a,0x24,0x70,0x00,0x10,0x08,0xb3, + 0x64,0x21,0x73,0xfd,0x23,0x01,0x00,0xf8,0x7e,0x3c, + 0x3c,0x2b,0x22,0xc0,0x07,0xbe,0x00,0x01,0x78,0xd3, + 0x0b,0x08,0x00,0xc0,0x4d,0x9b,0xc0,0x30,0x1c,0x87, + 0xff,0x0f,0xea,0x42,0x99,0x5c,0x01,0x80,0x84,0x01, + 0xc0,0x74,0x91,0x38,0x4b,0x08,0x80,0x14,0x00,0x40, + 0x7a,0x8e,0x42,0xa6,0x00,0x40,0x46,0x01,0x80,0x9d, + 0x98,0x26,0x53,0x00,0xa0,0x04,0x00,0x60,0xcb,0x63, + 0x62,0xe3,0x00,0x50,0x2d,0x00,0x60,0x27,0x7f,0xe6, + 0xd3,0x00,0x80,0x9d,0xf8,0x99,0x7b,0x01,0x00,0x5b, + 0x94,0x21,0x15,0x01,0xa0,0x91,0x00,0x20,0x13,0x65, + 0x88,0x44,0x00,0x68,0x3b,0x00,0xac,0xcf,0x56,0x8a, + 0x45,0x00,0x58,0x30,0x00,0x14,0x66,0x4b,0xc4,0x39, + 0x00,0xd8,0x2d,0x00,0x30,0x49,0x57,0x66,0x48,0x00, + 0xb0,0xb7,0x00,0xc0,0xce,0x10,0x0b,0xb2,0x00,0x08, + 0x0c,0x00,0x30,0x51,0x88,0x85,0x29,0x00,0x04,0x7b, + 0x00,0x60,0xc8,0x23,0x23,0x78,0x00,0x84,0x99,0x00, + 0x14,0x46,0xf2,0x57,0x3c,0xf1,0x2b,0xae,0x10,0xe7, + 0x2a,0x00,0x00,0x78,0x99,0xb2,0x3c,0xb9,0x24,0x39, + 0x45,0x81,0x5b,0x08,0x2d,0x71,0x07,0x57,0x57,0x2e, + 0x1e,0x28,0xce,0x49,0x17,0x2b,0x14,0x36,0x61,0x02, + 0x61,0x9a,0x40,0x2e,0xc2,0x79,0x99,0x19,0x32,0x81, + 0x34,0x0f,0xe0,0xf3,0xcc,0x00,0x00,0xa0,0x91,0x15, + 0x11,0xe0,0x83,0xf3,0xfd,0x78,0xce,0x0e,0xae,0xce, + 0xce,0x36,0x8e,0xb6,0x0e,0x5f,0x2d,0xea,0xbf,0x06, + 0xff,0x22,0x62,0x62,0xe3,0xfe,0xe5,0xcf,0xab,0x70, + 0x40,0x00,0x00,0xe1,0x74,0x7e,0xd1,0xfe,0x2c,0x2f, + 0xb3,0x1a,0x80,0x3b,0x06,0x80,0x6d,0xfe,0xa2,0x25, + 0xee,0x04,0x68,0x5e,0x0b,0xa0,0x75,0xf7,0x8b,0x66, + 0xb2,0x0f,0x40,0xb5,0x00,0xa0,0xe9,0xda,0x57,0xf3, + 0x70,0xf8,0x7e,0x3c,0x3c,0x45,0xa1,0x90,0xb9,0xd9, + 0xd9,0xe5,0xe4,0xe4,0xd8,0x4a,0xc4,0x42,0x5b,0x61, + 0xca,0x57,0x7d,0xfe,0x67,0xc2,0x5f,0xc0,0x57,0xfd, + 0x6c,0xf9,0x7e,0x3c,0xfc,0xf7,0xf5,0xe0,0xbe,0xe2, + 0x24,0x81,0x32,0x5d,0x81,0x47,0x04,0xf8,0xe0,0xc2, + 0xcc,0xf4,0x4c,0xa5,0x1c,0xcf,0x92,0x09,0x84,0x62, + 0xdc,0xe6,0x8f,0x47,0xfc,0xb7,0x0b,0xff,0xfc,0x1d, + 0xd3,0x22,0xc4,0x49,0x62,0xb9,0x58,0x2a,0x14,0xe3, + 0x51,0x12,0x71,0x8e,0x44,0x9a,0x8c,0xf3,0x32,0xa5, + 0x22,0x89,0x42,0x92,0x29,0xc5,0x25,0xd2,0xff,0x64, + 0xe2,0xdf,0x2c,0xfb,0x03,0x3e,0xdf,0x35,0x00,0xb0, + 0x6a,0x3e,0x01,0x7b,0x91,0x2d,0xa8,0x5d,0x63,0x03, + 0xf6,0x4b,0x27,0x10,0x58,0x74,0xc0,0xe2,0xf7,0x00, + 0x00,0xf2,0xbb,0x6f,0xc1,0xd4,0x28,0x08,0x03,0x80, + 0x68,0x83,0xe1,0xcf,0x77,0xff,0xef,0x3f,0xfd,0x47, + 0xa0,0x25,0x00,0x80,0x66,0x49,0x92,0x71,0x00,0x00, + 0x5e,0x44,0x24,0x2e,0x54,0xca,0xb3,0x3f,0xc7,0x08, + 0x00,0x00,0x44,0xa0,0x81,0x2a,0xb0,0x41,0x1b,0xf4, + 0xc1,0x18,0x2c,0xc0,0x06,0x1c,0xc1,0x05,0xdc,0xc1, + 0x0b,0xfc,0x60,0x36,0x84,0x42,0x24,0xc4,0xc2,0x42, + 0x10,0x42,0x0a,0x64,0x80,0x1c,0x72,0x60,0x29,0xac, + 0x82,0x42,0x28,0x86,0xcd,0xb0,0x1d,0x2a,0x60,0x2f, + 0xd4,0x40,0x1d,0x34,0xc0,0x51,0x68,0x86,0x93,0x70, + 0x0e,0x2e,0xc2,0x55,0xb8,0x0e,0x3d,0x70,0x0f,0xfa, + 0x61,0x08,0x9e,0xc1,0x28,0xbc,0x81,0x09,0x04,0x41, + 0xc8,0x08,0x13,0x61,0x21,0xda,0x88,0x01,0x62,0x8a, + 0x58,0x23,0x8e,0x08,0x17,0x99,0x85,0xf8,0x21,0xc1, + 0x48,0x04,0x12,0x8b,0x24,0x20,0xc9,0x88,0x14,0x51, + 0x22,0x4b,0x91,0x35,0x48,0x31,0x52,0x8a,0x54,0x20, + 0x55,0x48,0x1d,0xf2,0x3d,0x72,0x02,0x39,0x87,0x5c, + 0x46,0xba,0x91,0x3b,0xc8,0x00,0x32,0x82,0xfc,0x86, + 0xbc,0x47,0x31,0x94,0x81,0xb2,0x51,0x3d,0xd4,0x0c, + 0xb5,0x43,0xb9,0xa8,0x37,0x1a,0x84,0x46,0xa2,0x0b, + 0xd0,0x64,0x74,0x31,0x9a,0x8f,0x16,0xa0,0x9b,0xd0, + 0x72,0xb4,0x1a,0x3d,0x8c,0x36,0xa1,0xe7,0xd0,0xab, + 0x68,0x0f,0xda,0x8f,0x3e,0x43,0xc7,0x30,0xc0,0xe8, + 0x18,0x07,0x33,0xc4,0x6c,0x30,0x2e,0xc6,0xc3,0x42, + 0xb1,0x38,0x2c,0x09,0x93,0x63,0xcb,0xb1,0x22,0xac, + 0x0c,0xab,0xc6,0x1a,0xb0,0x56,0xac,0x03,0xbb,0x89, + 0xf5,0x63,0xcf,0xb1,0x77,0x04,0x12,0x81,0x45,0xc0, + 0x09,0x36,0x04,0x77,0x42,0x20,0x61,0x1e,0x41,0x48, + 0x58,0x4c,0x58,0x4e,0xd8,0x48,0xa8,0x20,0x1c,0x24, + 0x34,0x11,0xda,0x09,0x37,0x09,0x03,0x84,0x51,0xc2, + 0x27,0x22,0x93,0xa8,0x4b,0xb4,0x26,0xba,0x11,0xf9, + 0xc4,0x18,0x62,0x32,0x31,0x87,0x58,0x48,0x2c,0x23, + 0xd6,0x12,0x8f,0x13,0x2f,0x10,0x7b,0x88,0x43,0xc4, + 0x37,0x24,0x12,0x89,0x43,0x32,0x27,0xb9,0x90,0x02, + 0x49,0xb1,0xa4,0x54,0xd2,0x12,0xd2,0x46,0xd2,0x6e, + 0x52,0x23,0xe9,0x2c,0xa9,0x9b,0x34,0x48,0x1a,0x23, + 0x93,0xc9,0xda,0x64,0x6b,0xb2,0x07,0x39,0x94,0x2c, + 0x20,0x2b,0xc8,0x85,0xe4,0x9d,0xe4,0xc3,0xe4,0x33, + 0xe4,0x1b,0xe4,0x21,0xf2,0x5b,0x0a,0x9d,0x62,0x40, + 0x71,0xa4,0xf8,0x53,0xe2,0x28,0x52,0xca,0x6a,0x4a, + 0x19,0xe5,0x10,0xe5,0x34,0xe5,0x06,0x65,0x98,0x32, + 0x41,0x55,0xa3,0x9a,0x52,0xdd,0xa8,0xa1,0x54,0x11, + 0x35,0x8f,0x5a,0x42,0xad,0xa1,0xb6,0x52,0xaf,0x51, + 0x87,0xa8,0x13,0x34,0x75,0x9a,0x39,0xcd,0x83,0x16, + 0x49,0x4b,0xa5,0xad,0xa2,0x95,0xd3,0x1a,0x68,0x17, + 0x68,0xf7,0x69,0xaf,0xe8,0x74,0xba,0x11,0xdd,0x95, + 0x1e,0x4e,0x97,0xd0,0x57,0xd2,0xcb,0xe9,0x47,0xe8, + 0x97,0xe8,0x03,0xf4,0x77,0x0c,0x0d,0x86,0x15,0x83, + 0xc7,0x88,0x67,0x28,0x19,0x9b,0x18,0x07,0x18,0x67, + 0x19,0x77,0x18,0xaf,0x98,0x4c,0xa6,0x19,0xd3,0x8b, + 0x19,0xc7,0x54,0x30,0x37,0x31,0xeb,0x98,0xe7,0x99, + 0x0f,0x99,0x6f,0x55,0x58,0x2a,0xb6,0x2a,0x7c,0x15, + 0x91,0xca,0x0a,0x95,0x4a,0x95,0x26,0x95,0x1b,0x2a, + 0x2f,0x54,0xa9,0xaa,0xa6,0xaa,0xde,0xaa,0x0b,0x55, + 0xf3,0x55,0xcb,0x54,0x8f,0xa9,0x5e,0x53,0x7d,0xae, + 0x46,0x55,0x33,0x53,0xe3,0xa9,0x09,0xd4,0x96,0xab, + 0x55,0xaa,0x9d,0x50,0xeb,0x53,0x1b,0x53,0x67,0xa9, + 0x3b,0xa8,0x87,0xaa,0x67,0xa8,0x6f,0x54,0x3f,0xa4, + 0x7e,0x59,0xfd,0x89,0x06,0x59,0xc3,0x4c,0xc3,0x4f, + 0x43,0xa4,0x51,0xa0,0xb1,0x5f,0xe3,0xbc,0xc6,0x20, + 0x0b,0x63,0x19,0xb3,0x78,0x2c,0x21,0x6b,0x0d,0xab, + 0x86,0x75,0x81,0x35,0xc4,0x26,0xb1,0xcd,0xd9,0x7c, + 0x76,0x2a,0xbb,0x98,0xfd,0x1d,0xbb,0x8b,0x3d,0xaa, + 0xa9,0xa1,0x39,0x43,0x33,0x4a,0x33,0x57,0xb3,0x52, + 0xf3,0x94,0x66,0x3f,0x07,0xe3,0x98,0x71,0xf8,0x9c, + 0x74,0x4e,0x09,0xe7,0x28,0xa7,0x97,0xf3,0x7e,0x8a, + 0xde,0x14,0xef,0x29,0xe2,0x29,0x1b,0xa6,0x34,0x4c, + 0xb9,0x31,0x65,0x5c,0x6b,0xaa,0x96,0x97,0x96,0x58, + 0xab,0x48,0xab,0x51,0xab,0x47,0xeb,0xbd,0x36,0xae, + 0xed,0xa7,0x9d,0xa6,0xbd,0x45,0xbb,0x59,0xfb,0x81, + 0x0e,0x41,0xc7,0x4a,0x27,0x5c,0x27,0x47,0x67,0x8f, + 0xce,0x05,0x9d,0xe7,0x53,0xd9,0x53,0xdd,0xa7,0x0a, + 0xa7,0x16,0x4d,0x3d,0x3a,0xf5,0xae,0x2e,0xaa,0x6b, + 0xa5,0x1b,0xa1,0xbb,0x44,0x77,0xbf,0x6e,0xa7,0xee, + 0x98,0x9e,0xbe,0x5e,0x80,0x9e,0x4c,0x6f,0xa7,0xde, + 0x79,0xbd,0xe7,0xfa,0x1c,0x7d,0x2f,0xfd,0x54,0xfd, + 0x6d,0xfa,0xa7,0xf5,0x47,0x0c,0x58,0x06,0xb3,0x0c, + 0x24,0x06,0xdb,0x0c,0xce,0x18,0x3c,0xc5,0x35,0x71, + 0x6f,0x3c,0x1d,0x2f,0xc7,0xdb,0xf1,0x51,0x43,0x5d, + 0xc3,0x40,0x43,0xa5,0x61,0x95,0x61,0x97,0xe1,0x84, + 0x91,0xb9,0xd1,0x3c,0xa3,0xd5,0x46,0x8d,0x46,0x0f, + 0x8c,0x69,0xc6,0x5c,0xe3,0x24,0xe3,0x6d,0xc6,0x6d, + 0xc6,0xa3,0x26,0x06,0x26,0x21,0x26,0x4b,0x4d,0xea, + 0x4d,0xee,0x9a,0x52,0x4d,0xb9,0xa6,0x29,0xa6,0x3b, + 0x4c,0x3b,0x4c,0xc7,0xcd,0xcc,0xcd,0xa2,0xcd,0xd6, + 0x99,0x35,0x9b,0x3d,0x31,0xd7,0x32,0xe7,0x9b,0xe7, + 0x9b,0xd7,0x9b,0xdf,0xb7,0x60,0x5a,0x78,0x5a,0x2c, + 0xb6,0xa8,0xb6,0xb8,0x65,0x49,0xb2,0xe4,0x5a,0xa6, + 0x59,0xee,0xb6,0xbc,0x6e,0x85,0x5a,0x39,0x59,0xa5, + 0x58,0x55,0x5a,0x5d,0xb3,0x46,0xad,0x9d,0xad,0x25, + 0xd6,0xbb,0xad,0xbb,0xa7,0x11,0xa7,0xb9,0x4e,0x93, + 0x4e,0xab,0x9e,0xd6,0x67,0xc3,0xb0,0xf1,0xb6,0xc9, + 0xb6,0xa9,0xb7,0x19,0xb0,0xe5,0xd8,0x06,0xdb,0xae, + 0xb6,0x6d,0xb6,0x7d,0x61,0x67,0x62,0x17,0x67,0xb7, + 0xc5,0xae,0xc3,0xee,0x93,0xbd,0x93,0x7d,0xba,0x7d, + 0x8d,0xfd,0x3d,0x07,0x0d,0x87,0xd9,0x0e,0xab,0x1d, + 0x5a,0x1d,0x7e,0x73,0xb4,0x72,0x14,0x3a,0x56,0x3a, + 0xde,0x9a,0xce,0x9c,0xee,0x3f,0x7d,0xc5,0xf4,0x96, + 0xe9,0x2f,0x67,0x58,0xcf,0x10,0xcf,0xd8,0x33,0xe3, + 0xb6,0x13,0xcb,0x29,0xc4,0x69,0x9d,0x53,0x9b,0xd3, + 0x47,0x67,0x17,0x67,0xb9,0x73,0x83,0xf3,0x88,0x8b, + 0x89,0x4b,0x82,0xcb,0x2e,0x97,0x3e,0x2e,0x9b,0x1b, + 0xc6,0xdd,0xc8,0xbd,0xe4,0x4a,0x74,0xf5,0x71,0x5d, + 0xe1,0x7a,0xd2,0xf5,0x9d,0x9b,0xb3,0x9b,0xc2,0xed, + 0xa8,0xdb,0xaf,0xee,0x36,0xee,0x69,0xee,0x87,0xdc, + 0x9f,0xcc,0x34,0x9f,0x29,0x9e,0x59,0x33,0x73,0xd0, + 0xc3,0xc8,0x43,0xe0,0x51,0xe5,0xd1,0x3f,0x0b,0x9f, + 0x95,0x30,0x6b,0xdf,0xac,0x7e,0x4f,0x43,0x4f,0x81, + 0x67,0xb5,0xe7,0x23,0x2f,0x63,0x2f,0x91,0x57,0xad, + 0xd7,0xb0,0xb7,0xa5,0x77,0xaa,0xf7,0x61,0xef,0x17, + 0x3e,0xf6,0x3e,0x72,0x9f,0xe3,0x3e,0xe3,0x3c,0x37, + 0xde,0x32,0xde,0x59,0x5f,0xcc,0x37,0xc0,0xb7,0xc8, + 0xb7,0xcb,0x4f,0xc3,0x6f,0x9e,0x5f,0x85,0xdf,0x43, + 0x7f,0x23,0xff,0x64,0xff,0x7a,0xff,0xd1,0x00,0xa7, + 0x80,0x25,0x01,0x67,0x03,0x89,0x81,0x41,0x81,0x5b, + 0x02,0xfb,0xf8,0x7a,0x7c,0x21,0xbf,0x8e,0x3f,0x3a, + 0xdb,0x65,0xf6,0xb2,0xd9,0xed,0x41,0x8c,0xa0,0xb9, + 0x41,0x15,0x41,0x8f,0x82,0xad,0x82,0xe5,0xc1,0xad, + 0x21,0x68,0xc8,0xec,0x90,0xad,0x21,0xf7,0xe7,0x98, + 0xce,0x91,0xce,0x69,0x0e,0x85,0x50,0x7e,0xe8,0xd6, + 0xd0,0x07,0x61,0xe6,0x61,0x8b,0xc3,0x7e,0x0c,0x27, + 0x85,0x87,0x85,0x57,0x86,0x3f,0x8e,0x70,0x88,0x58, + 0x1a,0xd1,0x31,0x97,0x35,0x77,0xd1,0xdc,0x43,0x73, + 0xdf,0x44,0xfa,0x44,0x96,0x44,0xde,0x9b,0x67,0x31, + 0x4f,0x39,0xaf,0x2d,0x4a,0x35,0x2a,0x3e,0xaa,0x2e, + 0x6a,0x3c,0xda,0x37,0xba,0x34,0xba,0x3f,0xc6,0x2e, + 0x66,0x59,0xcc,0xd5,0x58,0x9d,0x58,0x49,0x6c,0x4b, + 0x1c,0x39,0x2e,0x2a,0xae,0x36,0x6e,0x6c,0xbe,0xdf, + 0xfc,0xed,0xf3,0x87,0xe2,0x9d,0xe2,0x0b,0xe3,0x7b, + 0x17,0x98,0x2f,0xc8,0x5d,0x70,0x79,0xa1,0xce,0xc2, + 0xf4,0x85,0xa7,0x16,0xa9,0x2e,0x12,0x2c,0x3a,0x96, + 0x40,0x4c,0x88,0x4e,0x38,0x94,0xf0,0x41,0x10,0x2a, + 0xa8,0x16,0x8c,0x25,0xf2,0x13,0x77,0x25,0x8e,0x0a, + 0x79,0xc2,0x1d,0xc2,0x67,0x22,0x2f,0xd1,0x36,0xd1, + 0x88,0xd8,0x43,0x5c,0x2a,0x1e,0x4e,0xf2,0x48,0x2a, + 0x4d,0x7a,0x92,0xec,0x91,0xbc,0x35,0x79,0x24,0xc5, + 0x33,0xa5,0x2c,0xe5,0xb9,0x84,0x27,0xa9,0x90,0xbc, + 0x4c,0x0d,0x4c,0xdd,0x9b,0x3a,0x9e,0x16,0x9a,0x76, + 0x20,0x6d,0x32,0x3d,0x3a,0xbd,0x31,0x83,0x92,0x91, + 0x90,0x71,0x42,0xaa,0x21,0x4d,0x93,0xb6,0x67,0xea, + 0x67,0xe6,0x66,0x76,0xcb,0xac,0x65,0x85,0xb2,0xfe, + 0xc5,0x6e,0x8b,0xb7,0x2f,0x1e,0x95,0x07,0xc9,0x6b, + 0xb3,0x90,0xac,0x05,0x59,0x2d,0x0a,0xb6,0x42,0xa6, + 0xe8,0x54,0x5a,0x28,0xd7,0x2a,0x07,0xb2,0x67,0x65, + 0x57,0x66,0xbf,0xcd,0x89,0xca,0x39,0x96,0xab,0x9e, + 0x2b,0xcd,0xed,0xcc,0xb3,0xca,0xdb,0x90,0x37,0x9c, + 0xef,0x9f,0xff,0xed,0x12,0xc2,0x12,0xe1,0x92,0xb6, + 0xa5,0x86,0x4b,0x57,0x2d,0x1d,0x58,0xe6,0xbd,0xac, + 0x6a,0x39,0xb2,0x3c,0x71,0x79,0xdb,0x0a,0xe3,0x15, + 0x05,0x2b,0x86,0x56,0x06,0xac,0x3c,0xb8,0x8a,0xb6, + 0x2a,0x6d,0xd5,0x4f,0xab,0xed,0x57,0x97,0xae,0x7e, + 0xbd,0x26,0x7a,0x4d,0x6b,0x81,0x5e,0xc1,0xca,0x82, + 0xc1,0xb5,0x01,0x6b,0xeb,0x0b,0x55,0x0a,0xe5,0x85, + 0x7d,0xeb,0xdc,0xd7,0xed,0x5d,0x4f,0x58,0x2f,0x59, + 0xdf,0xb5,0x61,0xfa,0x86,0x9d,0x1b,0x3e,0x15,0x89, + 0x8a,0xae,0x14,0xdb,0x17,0x97,0x15,0x7f,0xd8,0x28, + 0xdc,0x78,0xe5,0x1b,0x87,0x6f,0xca,0xbf,0x99,0xdc, + 0x94,0xb4,0xa9,0xab,0xc4,0xb9,0x64,0xcf,0x66,0xd2, + 0x66,0xe9,0xe6,0xde,0x2d,0x9e,0x5b,0x0e,0x96,0xaa, + 0x97,0xe6,0x97,0x0e,0x6e,0x0d,0xd9,0xda,0xb4,0x0d, + 0xdf,0x56,0xb4,0xed,0xf5,0xf6,0x45,0xdb,0x2f,0x97, + 0xcd,0x28,0xdb,0xbb,0x83,0xb6,0x43,0xb9,0xa3,0xbf, + 0x3c,0xb8,0xbc,0x65,0xa7,0xc9,0xce,0xcd,0x3b,0x3f, + 0x54,0xa4,0x54,0xf4,0x54,0xfa,0x54,0x36,0xee,0xd2, + 0xdd,0xb5,0x61,0xd7,0xf8,0x6e,0xd1,0xee,0x1b,0x7b, + 0xbc,0xf6,0x34,0xec,0xd5,0xdb,0x5b,0xbc,0xf7,0xfd, + 0x3e,0xc9,0xbe,0xdb,0x55,0x01,0x55,0x4d,0xd5,0x66, + 0xd5,0x65,0xfb,0x49,0xfb,0xb3,0xf7,0x3f,0xae,0x89, + 0xaa,0xe9,0xf8,0x96,0xfb,0x6d,0x5d,0xad,0x4e,0x6d, + 0x71,0xed,0xc7,0x03,0xd2,0x03,0xfd,0x07,0x23,0x0e, + 0xb6,0xd7,0xb9,0xd4,0xd5,0x1d,0xd2,0x3d,0x54,0x52, + 0x8f,0xd6,0x2b,0xeb,0x47,0x0e,0xc7,0x1f,0xbe,0xfe, + 0x9d,0xef,0x77,0x2d,0x0d,0x36,0x0d,0x55,0x8d,0x9c, + 0xc6,0xe2,0x23,0x70,0x44,0x79,0xe4,0xe9,0xf7,0x09, + 0xdf,0xf7,0x1e,0x0d,0x3a,0xda,0x76,0x8c,0x7b,0xac, + 0xe1,0x07,0xd3,0x1f,0x76,0x1d,0x67,0x1d,0x2f,0x6a, + 0x42,0x9a,0xf2,0x9a,0x46,0x9b,0x53,0x9a,0xfb,0x5b, + 0x62,0x5b,0xba,0x4f,0xcc,0x3e,0xd1,0xd6,0xea,0xde, + 0x7a,0xfc,0x47,0xdb,0x1f,0x0f,0x9c,0x34,0x3c,0x59, + 0x79,0x4a,0xf3,0x54,0xc9,0x69,0xda,0xe9,0x82,0xd3, + 0x93,0x67,0xf2,0xcf,0x8c,0x9d,0x95,0x9d,0x7d,0x7e, + 0x2e,0xf9,0xdc,0x60,0xdb,0xa2,0xb6,0x7b,0xe7,0x63, + 0xce,0xdf,0x6a,0x0f,0x6f,0xef,0xba,0x10,0x74,0xe1, + 0xd2,0x45,0xff,0x8b,0xe7,0x3b,0xbc,0x3b,0xce,0x5c, + 0xf2,0xb8,0x74,0xf2,0xb2,0xdb,0xe5,0x13,0x57,0xb8, + 0x57,0x9a,0xaf,0x3a,0x5f,0x6d,0xea,0x74,0xea,0x3c, + 0xfe,0x93,0xd3,0x4f,0xc7,0xbb,0x9c,0xbb,0x9a,0xae, + 0xb9,0x5c,0x6b,0xb9,0xee,0x7a,0xbd,0xb5,0x7b,0x66, + 0xf7,0xe9,0x1b,0x9e,0x37,0xce,0xdd,0xf4,0xbd,0x79, + 0xf1,0x16,0xff,0xd6,0xd5,0x9e,0x39,0x3d,0xdd,0xbd, + 0xf3,0x7a,0x6f,0xf7,0xc5,0xf7,0xf5,0xdf,0x16,0xdd, + 0x7e,0x72,0x27,0xfd,0xce,0xcb,0xbb,0xd9,0x77,0x27, + 0xee,0xad,0xbc,0x4f,0xbc,0x5f,0xf4,0x40,0xed,0x41, + 0xd9,0x43,0xdd,0x87,0xd5,0x3f,0x5b,0xfe,0xdc,0xd8, + 0xef,0xdc,0x7f,0x6a,0xc0,0x77,0xa0,0xf3,0xd1,0xdc, + 0x47,0xf7,0x06,0x85,0x83,0xcf,0xfe,0x91,0xf5,0x8f, + 0x0f,0x43,0x05,0x8f,0x99,0x8f,0xcb,0x86,0x0d,0x86, + 0xeb,0x9e,0x38,0x3e,0x39,0x39,0xe2,0x3f,0x72,0xfd, + 0xe9,0xfc,0xa7,0x43,0xcf,0x64,0xcf,0x26,0x9e,0x17, + 0xfe,0xa2,0xfe,0xcb,0xae,0x17,0x16,0x2f,0x7e,0xf8, + 0xd5,0xeb,0xd7,0xce,0xd1,0x98,0xd1,0xa1,0x97,0xf2, + 0x97,0x93,0xbf,0x6d,0x7c,0xa5,0xfd,0xea,0xc0,0xeb, + 0x19,0xaf,0xdb,0xc6,0xc2,0xc6,0x1e,0xbe,0xc9,0x78, + 0x33,0x31,0x5e,0xf4,0x56,0xfb,0xed,0xc1,0x77,0xdc, + 0x77,0x1d,0xef,0xa3,0xdf,0x0f,0x4f,0xe4,0x7c,0x20, + 0x7f,0x28,0xff,0x68,0xf9,0xb1,0xf5,0x53,0xd0,0xa7, + 0xfb,0x93,0x19,0x93,0x93,0xff,0x04,0x03,0x98,0xf3, + 0xfc,0x63,0x33,0x2d,0xdb,0x00,0x00,0x00,0x04,0x67, + 0x41,0x4d,0x41,0x00,0x00,0xb1,0x8e,0x7c,0xfb,0x51, + 0x93,0x00,0x00,0x00,0x20,0x63,0x48,0x52,0x4d,0x00, + 0x00,0x7a,0x25,0x00,0x00,0x80,0x83,0x00,0x00,0xf9, + 0xff,0x00,0x00,0x80,0xe9,0x00,0x00,0x75,0x30,0x00, + 0x00,0xea,0x60,0x00,0x00,0x3a,0x98,0x00,0x00,0x17, + 0x6f,0x92,0x5f,0xc5,0x46,0x00,0x00,0x04,0xa8,0x49, + 0x44,0x41,0x54,0x78,0xda,0xcc,0x5a,0xbb,0x72,0xe3, + 0x48,0x0c,0xec,0x56,0xf9,0x0b,0xac,0x2a,0xff,0x98, + 0xd3,0xdb,0x74,0x2f,0xb8,0x4d,0xf6,0x4b,0x9c,0xec, + 0x25,0x4e,0x1d,0xfb,0xc3,0x4e,0x55,0xd2,0x07,0xac, + 0x48,0xf6,0x06,0x1c,0xcc,0x60,0x1e,0xa4,0x48,0x8a, + 0xf6,0x99,0x81,0x6d,0x49,0x1c,0x0c,0x80,0x6e,0x34, + 0x30,0x94,0x89,0xe9,0x4b,0xf8,0x5a,0x17,0x27,0xdf, + 0x94,0x92,0xaf,0x24,0xe3,0x8b,0xcb,0xe5,0xf2,0x25, + 0x3c,0x7f,0x7c,0x7c,0x4c,0x59,0x95,0xe8,0x7c,0x4d, + 0x01,0x4c,0x39,0xfe,0xf3,0xe7,0xcf,0x80,0x85,0x00, + 0x10,0xa2,0x40,0x10,0x10,0x20,0x02,0xb4,0xdf,0x19, + 0x64,0xe3,0xbd,0x8c,0xb6,0x43,0xae,0x54,0xe6,0x32, + 0x2d,0x96,0x00,0xd2,0x19,0x0d,0x37,0xbd,0xbc,0xbc, + 0x4c,0x06,0x52,0x05,0xe0,0x1d,0xff,0xf1,0xcf,0x0f, + 0x08,0x02,0xc8,0xd1,0x49,0xfb,0xdb,0x36,0x85,0xed, + 0xa5,0xc4,0x37,0x8e,0x6f,0x32,0x44,0x63,0xef,0x51, + 0x82,0xc8,0x70,0xef,0xe8,0xe0,0x98,0x48,0x65,0x54, + 0x10,0x19,0x93,0x45,0xfb,0x49,0x80,0x10,0x7e,0xfd, + 0xfa,0x37,0x0b,0x24,0x0b,0xc0,0x2c,0x5d,0x2e,0x17, + 0x7c,0xff,0xfb,0x7b,0x83,0xfd,0xc5,0x66,0x0c,0xc6, + 0xa5,0x79,0xc6,0x6a,0x8e,0xca,0x09,0x0e,0x8e,0xe9, + 0x69,0xac,0x67,0x55,0x8e,0xaf,0xaf,0xaf,0x1e,0x09, + 0x3e,0x94,0xb4,0xb9,0xfe,0xfe,0x9d,0xd7,0x8b,0xda, + 0x25,0xa4,0xa9,0xaa,0x9a,0x91,0x03,0xa3,0x5a,0xb9, + 0x78,0x99,0xad,0x40,0xe1,0xe0,0xab,0x05,0x11,0xf3, + 0x74,0x3e,0x9f,0xf1,0xd7,0xb7,0x6f,0x55,0x8e,0x18, + 0x7e,0xc8,0xa8,0x51,0x6c,0x28,0x67,0x84,0xd9,0x8b, + 0xf4,0x3b,0x77,0xd0,0x1c,0x51,0xa2,0x5b,0x51,0x3f, + 0x46,0x8c,0xb8,0xce,0x8c,0x87,0x0c,0xbc,0xbd,0xbd, + 0xe1,0x78,0x3c,0x02,0x00,0x1e,0xcc,0x79,0x00,0xe8, + 0xae,0xd7,0x68,0x44,0x32,0xfe,0x95,0x86,0x02,0x73, + 0x18,0x78,0x1a,0x60,0x66,0x4c,0x87,0x8c,0x63,0x79, + 0x44,0x1a,0xb3,0xc7,0x2a,0x4a,0xef,0x5f,0xb2,0x49, + 0xca,0xdd,0xc1,0xe8,0x93,0x25,0xe2,0x7c,0x3e,0xe3, + 0x78,0x3c,0x8e,0x9f,0x9c,0xcf,0x67,0x3c,0x3f,0x3f, + 0x57,0x91,0xb6,0x58,0x94,0x80,0xa4,0x17,0x91,0xe8, + 0x78,0x52,0x93,0x50,0x94,0x66,0x32,0xd4,0xce,0x28, + 0x07,0x8c,0xb1,0xa9,0x2d,0x4a,0x15,0xd4,0xd9,0xbe, + 0x00,0xde,0xdf,0xdf,0x71,0x3c,0x1e,0x11,0x6b,0xe0, + 0x7a,0xbd,0x36,0x21,0x57,0x56,0x8f,0x09,0xde,0x26, + 0x7f,0xeb,0xd8,0x6b,0xf4,0x4a,0xbe,0x37,0x0a,0x40, + 0x72,0x88,0x7a,0xd7,0x1b,0xf7,0x66,0x01,0x30,0x93, + 0x43,0xe4,0xaa,0xa3,0x05,0x02,0xb3,0xba,0xb5,0x86, + 0x5a,0xc8,0x0c,0xb2,0x81,0xf9,0xf4,0xf5,0x60,0x7d, + 0xa0,0xeb,0xae,0x49,0x1a,0xe9,0x98,0x17,0x3c,0x27, + 0x39,0xfe,0x1d,0x6c,0x5a,0x73,0x8a,0xc8,0x04,0x5d, + 0xb7,0x16,0x26,0x2a,0x52,0x27,0x66,0xc1,0x9a,0x43, + 0x2a,0x98,0x10,0x44,0x64,0xb9,0x6b,0x92,0xae,0xe0, + 0xac,0x16,0xe5,0x48,0x1c,0xfc,0x72,0x08,0x74,0x6d, + 0xee,0xcc,0x88,0xdc,0xac,0xfc,0x95,0xd2,0xd9,0x58, + 0x25,0x4f,0xc9,0x8c,0x62,0x13,0x96,0xe7,0x28,0xd4, + 0x75,0xd7,0xa8,0x3c,0x63,0x46,0x43,0x1f,0x09,0xad, + 0xdd,0x06,0x0d,0x65,0xd0,0x5b,0x91,0x2a,0xf4,0xce, + 0xb2,0x5d,0x29,0xeb,0xa6,0x10,0x93,0xd2,0x80,0x6e, + 0x9d,0x52,0xe3,0xb2,0xbd,0xc2,0xeb,0xb8,0x8f,0xe4, + 0x28,0xce,0x56,0x0d,0x74,0x70,0x58,0x39,0x24,0xfc, + 0x06,0x73,0x9d,0x36,0x2c,0xc8,0x79,0x93,0xd9,0xa3, + 0x90,0x7a,0x40,0xe9,0x54,0xa3,0xf4,0xf3,0x0e,0xdd, + 0xee,0xd8,0x0e,0x81,0xee,0x8e,0x29,0x57,0x3b,0x96, + 0xf6,0xd2,0xfd,0x26,0x03,0x98,0x72,0x64,0xc6,0x41, + 0xce,0xcc,0x45,0x99,0xa8,0xb4,0xef,0x9b,0x5e,0x7e, + 0x13,0xf6,0xa4,0x42,0x7d,0xdf,0x87,0xf6,0x7e,0x63, + 0x0e,0x2b,0x1b,0x2d,0x1c,0x2d,0xd2,0x0c,0x59,0xcb, + 0xb1,0x13,0x07,0xc2,0x2b,0x56,0xc9,0x44,0xab,0x8d, + 0x96,0x1f,0x33,0x2a,0xd4,0x75,0x5d,0x1c,0xfb,0x19, + 0x78,0x1b,0xcb,0x8d,0xcc,0x14,0x23,0xc9,0x9d,0x20, + 0xe7,0x2d,0xd9,0x18,0xbd,0x14,0x0a,0x96,0x48,0x09, + 0xa2,0x0f,0xd8,0x07,0xe9,0x86,0x87,0x10,0x84,0x8d, + 0xf3,0x60,0x94,0x84,0x4c,0x30,0x76,0xa8,0x01,0xac, + 0xa3,0xdb,0xce,0x57,0x0c,0xa0,0xef,0xfb,0x5a,0x67, + 0xe3,0xd9,0x45,0xc5,0x4c,0xc3,0x4c,0xe7,0x11,0xe6, + 0x1f,0xb9,0xd1,0x2b,0x22,0xc8,0x7c,0xc6,0x43,0x36, + 0x17,0xd5,0xba,0x2f,0x29,0x1b,0xe0,0xac,0xe9,0x65, + 0x33,0x62,0x33,0x80,0xae,0x8f,0xbc,0x1c,0x37,0x65, + 0x2a,0x2c,0xe6,0x43,0x0a,0xc5,0x74,0x9c,0x8c,0x07, + 0x1c,0xeb,0x1d,0xac,0x68,0x48,0xa4,0x82,0xb1,0xde, + 0x9b,0x9a,0x3a,0xb3,0xa9,0x95,0x91,0x72,0x81,0x64, + 0x4a,0xb4,0x8d,0x27,0xc2,0x26,0x85,0x86,0xbe,0x3e, + 0xf2,0xd9,0x91,0x91,0x04,0x90,0x4d,0x19,0x2e,0x1e, + 0xb7,0x26,0xcf,0x9d,0x1b,0xfe,0x04,0x15,0xa9,0xf3, + 0x87,0x41,0xb9,0xf3,0x73,0x1c,0x5b,0xc2,0x78,0xa2, + 0x02,0x8c,0x71,0x44,0x69,0x04,0x30,0xf4,0x7d,0xf3, + 0x00,0x51,0x8f,0x02,0x1e,0xf6,0x1c,0xde,0xf6,0x3d, + 0xc5,0xa8,0x20,0xd4,0x07,0xa3,0x7a,0x5e,0xcf,0xc5, + 0x2b,0xa8,0x8b,0xdc,0x8c,0x56,0x53,0x68,0xe8,0x5d, + 0x94,0xf1,0xd4,0x02,0x0c,0xb9,0x6e,0x32,0xd9,0x8b, + 0xfa,0x4d,0x02,0xc3,0x90,0xba,0x25,0x98,0x86,0xbc, + 0x74,0xa0,0xf1,0x3e,0xd2,0xa9,0xd7,0x54,0xd7,0x45, + 0x7a,0x87,0x46,0xa5,0x61,0x4c,0x36,0x1b,0x7d,0x60, + 0xe8,0x87,0x86,0x92,0x0c,0x9f,0xff,0xe8,0x4a,0xcb, + 0xf6,0x35,0xba,0x1d,0x16,0x3f,0x98,0xe3,0x1a,0x2f, + 0xb8,0x61,0x9d,0x93,0xb4,0x15,0xcf,0xe7,0x0e,0xcb, + 0x8d,0xcf,0x78,0x54,0x1e,0xb1,0xa8,0x9d,0x1e,0x50, + 0xf2,0x66,0x5e,0x0f,0xab,0x0c,0x70,0xc2,0x23,0x6d, + 0x7d,0xaa,0xca,0x1b,0xb6,0x75,0x2f,0x02,0x45,0x23, + 0xd0,0xf6,0xc4,0xdd,0xa4,0xa9,0x16,0x2e,0xd6,0x26, + 0x0a,0xad,0xe4,0x81,0x78,0x07,0x6d,0xd6,0xed,0x75, + 0xb8,0x9f,0x9f,0xdc,0x79,0x0e,0xe2,0x67,0x05,0xa0, + 0x7b,0x0b,0xe0,0x7f,0x40,0x80,0xf8,0xe0,0x8b,0xab, + 0x3f,0x3b,0x2c,0xa3,0xc5,0x54,0x72,0x96,0x6e,0xc8, + 0x1d,0xb2,0xaf,0x25,0x01,0xb4,0x68,0xc1,0x1d,0x36, + 0xd4,0x87,0x21,0x79,0xb8,0x0d,0x95,0xf6,0xe7,0x98, + 0xb6,0xda,0xe3,0x92,0x00,0x74,0x07,0x2d,0xb4,0x3e, + 0xc5,0x9c,0xbb,0xff,0xb6,0x40,0x1c,0xd6,0x25,0x53, + 0x77,0xf1,0x35,0xce,0x49,0x2c,0x9b,0xa3,0x36,0xa3, + 0xfb,0xb0,0x57,0xef,0x5a,0xcf,0x1d,0x6d,0x58,0x5b, + 0x7f,0xe5,0x14,0x11,0x38,0x9d,0x4e,0x9f,0xa7,0x9f, + 0xe2,0x46,0xdb,0xaa,0x02,0x3f,0x00,0xc0,0xd3,0xd3, + 0xd3,0xbe,0xa3,0xc4,0x94,0x53,0xdc,0x82,0x44,0x6d, + 0xcb,0x27,0xfb,0xe0,0xef,0xd8,0x86,0xc2,0x8a,0x62, + 0xd6,0x56,0xda,0xb1,0x72,0xde,0x92,0x1e,0x29,0x94, + 0x50,0xe0,0x76,0xfa,0x70,0x0b,0x72,0x5c,0x59,0x3b, + 0x19,0x63,0x68,0x47,0x4a,0xda,0x37,0xf5,0xa7,0xd3, + 0x7f,0x68,0xd3,0x6a,0xea,0xd9,0xa7,0x8a,0xfe,0x37, + 0xf7,0x0c,0xb5,0xf5,0xd1,0x32,0x58,0x4a,0x76,0x34, + 0xbf,0xa9,0x9f,0x82,0x69,0xd3,0x93,0xb7,0xc9,0xaf, + 0x8d,0xd6,0x3f,0xd5,0x6b,0xf9,0x53,0x05,0x90,0x9e, + 0xad,0x1a,0x12,0x27,0x7c,0xa5,0xcb,0x9c,0x6f,0xfe, + 0xb3,0xc7,0x67,0x75,0x81,0x8f,0x18,0x57,0xff,0x0c, + 0x00,0xd6,0x5e,0xf1,0xee,0x67,0xbc,0x3b,0xd3,0x00, + 0x00,0x00,0x00,0x49,0x45,0x4e,0x44,0xae,0x42,0x60, + 0x82 +}; diff --git a/data/converted/frame_png.cpp b/data/converted/frame_png.cpp new file mode 100644 index 000000000..c23db3442 --- /dev/null +++ b/data/converted/frame_png.cpp @@ -0,0 +1,300 @@ +//this file was auto-generated from "frame.png" by res2h + +#include "../Resources.h" + +const size_t frame_png_size = 2921; +const unsigned char frame_png_data[2921] = { + 0x89,0x50,0x4e,0x47,0x0d,0x0a,0x1a,0x0a,0x00,0x00, + 0x00,0x0d,0x49,0x48,0x44,0x52,0x00,0x00,0x00,0x30, + 0x00,0x00,0x00,0x30,0x08,0x06,0x00,0x00,0x00,0x57, + 0x02,0xf9,0x87,0x00,0x00,0x00,0x09,0x70,0x48,0x59, + 0x73,0x00,0x00,0x0b,0x13,0x00,0x00,0x0b,0x13,0x01, + 0x00,0x9a,0x9c,0x18,0x00,0x00,0x0a,0x4f,0x69,0x43, + 0x43,0x50,0x50,0x68,0x6f,0x74,0x6f,0x73,0x68,0x6f, + 0x70,0x20,0x49,0x43,0x43,0x20,0x70,0x72,0x6f,0x66, + 0x69,0x6c,0x65,0x00,0x00,0x78,0xda,0x9d,0x53,0x67, + 0x54,0x53,0xe9,0x16,0x3d,0xf7,0xde,0xf4,0x42,0x4b, + 0x88,0x80,0x94,0x4b,0x6f,0x52,0x15,0x08,0x20,0x52, + 0x42,0x8b,0x80,0x14,0x91,0x26,0x2a,0x21,0x09,0x10, + 0x4a,0x88,0x21,0xa1,0xd9,0x15,0x51,0xc1,0x11,0x45, + 0x45,0x04,0x1b,0xc8,0xa0,0x88,0x03,0x8e,0x8e,0x80, + 0x8c,0x15,0x51,0x2c,0x0c,0x8a,0x0a,0xd8,0x07,0xe4, + 0x21,0xa2,0x8e,0x83,0xa3,0x88,0x8a,0xca,0xfb,0xe1, + 0x7b,0xa3,0x6b,0xd6,0xbc,0xf7,0xe6,0xcd,0xfe,0xb5, + 0xd7,0x3e,0xe7,0xac,0xf3,0x9d,0xb3,0xcf,0x07,0xc0, + 0x08,0x0c,0x96,0x48,0x33,0x51,0x35,0x80,0x0c,0xa9, + 0x42,0x1e,0x11,0xe0,0x83,0xc7,0xc4,0xc6,0xe1,0xe4, + 0x2e,0x40,0x81,0x0a,0x24,0x70,0x00,0x10,0x08,0xb3, + 0x64,0x21,0x73,0xfd,0x23,0x01,0x00,0xf8,0x7e,0x3c, + 0x3c,0x2b,0x22,0xc0,0x07,0xbe,0x00,0x01,0x78,0xd3, + 0x0b,0x08,0x00,0xc0,0x4d,0x9b,0xc0,0x30,0x1c,0x87, + 0xff,0x0f,0xea,0x42,0x99,0x5c,0x01,0x80,0x84,0x01, + 0xc0,0x74,0x91,0x38,0x4b,0x08,0x80,0x14,0x00,0x40, + 0x7a,0x8e,0x42,0xa6,0x00,0x40,0x46,0x01,0x80,0x9d, + 0x98,0x26,0x53,0x00,0xa0,0x04,0x00,0x60,0xcb,0x63, + 0x62,0xe3,0x00,0x50,0x2d,0x00,0x60,0x27,0x7f,0xe6, + 0xd3,0x00,0x80,0x9d,0xf8,0x99,0x7b,0x01,0x00,0x5b, + 0x94,0x21,0x15,0x01,0xa0,0x91,0x00,0x20,0x13,0x65, + 0x88,0x44,0x00,0x68,0x3b,0x00,0xac,0xcf,0x56,0x8a, + 0x45,0x00,0x58,0x30,0x00,0x14,0x66,0x4b,0xc4,0x39, + 0x00,0xd8,0x2d,0x00,0x30,0x49,0x57,0x66,0x48,0x00, + 0xb0,0xb7,0x00,0xc0,0xce,0x10,0x0b,0xb2,0x00,0x08, + 0x0c,0x00,0x30,0x51,0x88,0x85,0x29,0x00,0x04,0x7b, + 0x00,0x60,0xc8,0x23,0x23,0x78,0x00,0x84,0x99,0x00, + 0x14,0x46,0xf2,0x57,0x3c,0xf1,0x2b,0xae,0x10,0xe7, + 0x2a,0x00,0x00,0x78,0x99,0xb2,0x3c,0xb9,0x24,0x39, + 0x45,0x81,0x5b,0x08,0x2d,0x71,0x07,0x57,0x57,0x2e, + 0x1e,0x28,0xce,0x49,0x17,0x2b,0x14,0x36,0x61,0x02, + 0x61,0x9a,0x40,0x2e,0xc2,0x79,0x99,0x19,0x32,0x81, + 0x34,0x0f,0xe0,0xf3,0xcc,0x00,0x00,0xa0,0x91,0x15, + 0x11,0xe0,0x83,0xf3,0xfd,0x78,0xce,0x0e,0xae,0xce, + 0xce,0x36,0x8e,0xb6,0x0e,0x5f,0x2d,0xea,0xbf,0x06, + 0xff,0x22,0x62,0x62,0xe3,0xfe,0xe5,0xcf,0xab,0x70, + 0x40,0x00,0x00,0xe1,0x74,0x7e,0xd1,0xfe,0x2c,0x2f, + 0xb3,0x1a,0x80,0x3b,0x06,0x80,0x6d,0xfe,0xa2,0x25, + 0xee,0x04,0x68,0x5e,0x0b,0xa0,0x75,0xf7,0x8b,0x66, + 0xb2,0x0f,0x40,0xb5,0x00,0xa0,0xe9,0xda,0x57,0xf3, + 0x70,0xf8,0x7e,0x3c,0x3c,0x45,0xa1,0x90,0xb9,0xd9, + 0xd9,0xe5,0xe4,0xe4,0xd8,0x4a,0xc4,0x42,0x5b,0x61, + 0xca,0x57,0x7d,0xfe,0x67,0xc2,0x5f,0xc0,0x57,0xfd, + 0x6c,0xf9,0x7e,0x3c,0xfc,0xf7,0xf5,0xe0,0xbe,0xe2, + 0x24,0x81,0x32,0x5d,0x81,0x47,0x04,0xf8,0xe0,0xc2, + 0xcc,0xf4,0x4c,0xa5,0x1c,0xcf,0x92,0x09,0x84,0x62, + 0xdc,0xe6,0x8f,0x47,0xfc,0xb7,0x0b,0xff,0xfc,0x1d, + 0xd3,0x22,0xc4,0x49,0x62,0xb9,0x58,0x2a,0x14,0xe3, + 0x51,0x12,0x71,0x8e,0x44,0x9a,0x8c,0xf3,0x32,0xa5, + 0x22,0x89,0x42,0x92,0x29,0xc5,0x25,0xd2,0xff,0x64, + 0xe2,0xdf,0x2c,0xfb,0x03,0x3e,0xdf,0x35,0x00,0xb0, + 0x6a,0x3e,0x01,0x7b,0x91,0x2d,0xa8,0x5d,0x63,0x03, + 0xf6,0x4b,0x27,0x10,0x58,0x74,0xc0,0xe2,0xf7,0x00, + 0x00,0xf2,0xbb,0x6f,0xc1,0xd4,0x28,0x08,0x03,0x80, + 0x68,0x83,0xe1,0xcf,0x77,0xff,0xef,0x3f,0xfd,0x47, + 0xa0,0x25,0x00,0x80,0x66,0x49,0x92,0x71,0x00,0x00, + 0x5e,0x44,0x24,0x2e,0x54,0xca,0xb3,0x3f,0xc7,0x08, + 0x00,0x00,0x44,0xa0,0x81,0x2a,0xb0,0x41,0x1b,0xf4, + 0xc1,0x18,0x2c,0xc0,0x06,0x1c,0xc1,0x05,0xdc,0xc1, + 0x0b,0xfc,0x60,0x36,0x84,0x42,0x24,0xc4,0xc2,0x42, + 0x10,0x42,0x0a,0x64,0x80,0x1c,0x72,0x60,0x29,0xac, + 0x82,0x42,0x28,0x86,0xcd,0xb0,0x1d,0x2a,0x60,0x2f, + 0xd4,0x40,0x1d,0x34,0xc0,0x51,0x68,0x86,0x93,0x70, + 0x0e,0x2e,0xc2,0x55,0xb8,0x0e,0x3d,0x70,0x0f,0xfa, + 0x61,0x08,0x9e,0xc1,0x28,0xbc,0x81,0x09,0x04,0x41, + 0xc8,0x08,0x13,0x61,0x21,0xda,0x88,0x01,0x62,0x8a, + 0x58,0x23,0x8e,0x08,0x17,0x99,0x85,0xf8,0x21,0xc1, + 0x48,0x04,0x12,0x8b,0x24,0x20,0xc9,0x88,0x14,0x51, + 0x22,0x4b,0x91,0x35,0x48,0x31,0x52,0x8a,0x54,0x20, + 0x55,0x48,0x1d,0xf2,0x3d,0x72,0x02,0x39,0x87,0x5c, + 0x46,0xba,0x91,0x3b,0xc8,0x00,0x32,0x82,0xfc,0x86, + 0xbc,0x47,0x31,0x94,0x81,0xb2,0x51,0x3d,0xd4,0x0c, + 0xb5,0x43,0xb9,0xa8,0x37,0x1a,0x84,0x46,0xa2,0x0b, + 0xd0,0x64,0x74,0x31,0x9a,0x8f,0x16,0xa0,0x9b,0xd0, + 0x72,0xb4,0x1a,0x3d,0x8c,0x36,0xa1,0xe7,0xd0,0xab, + 0x68,0x0f,0xda,0x8f,0x3e,0x43,0xc7,0x30,0xc0,0xe8, + 0x18,0x07,0x33,0xc4,0x6c,0x30,0x2e,0xc6,0xc3,0x42, + 0xb1,0x38,0x2c,0x09,0x93,0x63,0xcb,0xb1,0x22,0xac, + 0x0c,0xab,0xc6,0x1a,0xb0,0x56,0xac,0x03,0xbb,0x89, + 0xf5,0x63,0xcf,0xb1,0x77,0x04,0x12,0x81,0x45,0xc0, + 0x09,0x36,0x04,0x77,0x42,0x20,0x61,0x1e,0x41,0x48, + 0x58,0x4c,0x58,0x4e,0xd8,0x48,0xa8,0x20,0x1c,0x24, + 0x34,0x11,0xda,0x09,0x37,0x09,0x03,0x84,0x51,0xc2, + 0x27,0x22,0x93,0xa8,0x4b,0xb4,0x26,0xba,0x11,0xf9, + 0xc4,0x18,0x62,0x32,0x31,0x87,0x58,0x48,0x2c,0x23, + 0xd6,0x12,0x8f,0x13,0x2f,0x10,0x7b,0x88,0x43,0xc4, + 0x37,0x24,0x12,0x89,0x43,0x32,0x27,0xb9,0x90,0x02, + 0x49,0xb1,0xa4,0x54,0xd2,0x12,0xd2,0x46,0xd2,0x6e, + 0x52,0x23,0xe9,0x2c,0xa9,0x9b,0x34,0x48,0x1a,0x23, + 0x93,0xc9,0xda,0x64,0x6b,0xb2,0x07,0x39,0x94,0x2c, + 0x20,0x2b,0xc8,0x85,0xe4,0x9d,0xe4,0xc3,0xe4,0x33, + 0xe4,0x1b,0xe4,0x21,0xf2,0x5b,0x0a,0x9d,0x62,0x40, + 0x71,0xa4,0xf8,0x53,0xe2,0x28,0x52,0xca,0x6a,0x4a, + 0x19,0xe5,0x10,0xe5,0x34,0xe5,0x06,0x65,0x98,0x32, + 0x41,0x55,0xa3,0x9a,0x52,0xdd,0xa8,0xa1,0x54,0x11, + 0x35,0x8f,0x5a,0x42,0xad,0xa1,0xb6,0x52,0xaf,0x51, + 0x87,0xa8,0x13,0x34,0x75,0x9a,0x39,0xcd,0x83,0x16, + 0x49,0x4b,0xa5,0xad,0xa2,0x95,0xd3,0x1a,0x68,0x17, + 0x68,0xf7,0x69,0xaf,0xe8,0x74,0xba,0x11,0xdd,0x95, + 0x1e,0x4e,0x97,0xd0,0x57,0xd2,0xcb,0xe9,0x47,0xe8, + 0x97,0xe8,0x03,0xf4,0x77,0x0c,0x0d,0x86,0x15,0x83, + 0xc7,0x88,0x67,0x28,0x19,0x9b,0x18,0x07,0x18,0x67, + 0x19,0x77,0x18,0xaf,0x98,0x4c,0xa6,0x19,0xd3,0x8b, + 0x19,0xc7,0x54,0x30,0x37,0x31,0xeb,0x98,0xe7,0x99, + 0x0f,0x99,0x6f,0x55,0x58,0x2a,0xb6,0x2a,0x7c,0x15, + 0x91,0xca,0x0a,0x95,0x4a,0x95,0x26,0x95,0x1b,0x2a, + 0x2f,0x54,0xa9,0xaa,0xa6,0xaa,0xde,0xaa,0x0b,0x55, + 0xf3,0x55,0xcb,0x54,0x8f,0xa9,0x5e,0x53,0x7d,0xae, + 0x46,0x55,0x33,0x53,0xe3,0xa9,0x09,0xd4,0x96,0xab, + 0x55,0xaa,0x9d,0x50,0xeb,0x53,0x1b,0x53,0x67,0xa9, + 0x3b,0xa8,0x87,0xaa,0x67,0xa8,0x6f,0x54,0x3f,0xa4, + 0x7e,0x59,0xfd,0x89,0x06,0x59,0xc3,0x4c,0xc3,0x4f, + 0x43,0xa4,0x51,0xa0,0xb1,0x5f,0xe3,0xbc,0xc6,0x20, + 0x0b,0x63,0x19,0xb3,0x78,0x2c,0x21,0x6b,0x0d,0xab, + 0x86,0x75,0x81,0x35,0xc4,0x26,0xb1,0xcd,0xd9,0x7c, + 0x76,0x2a,0xbb,0x98,0xfd,0x1d,0xbb,0x8b,0x3d,0xaa, + 0xa9,0xa1,0x39,0x43,0x33,0x4a,0x33,0x57,0xb3,0x52, + 0xf3,0x94,0x66,0x3f,0x07,0xe3,0x98,0x71,0xf8,0x9c, + 0x74,0x4e,0x09,0xe7,0x28,0xa7,0x97,0xf3,0x7e,0x8a, + 0xde,0x14,0xef,0x29,0xe2,0x29,0x1b,0xa6,0x34,0x4c, + 0xb9,0x31,0x65,0x5c,0x6b,0xaa,0x96,0x97,0x96,0x58, + 0xab,0x48,0xab,0x51,0xab,0x47,0xeb,0xbd,0x36,0xae, + 0xed,0xa7,0x9d,0xa6,0xbd,0x45,0xbb,0x59,0xfb,0x81, + 0x0e,0x41,0xc7,0x4a,0x27,0x5c,0x27,0x47,0x67,0x8f, + 0xce,0x05,0x9d,0xe7,0x53,0xd9,0x53,0xdd,0xa7,0x0a, + 0xa7,0x16,0x4d,0x3d,0x3a,0xf5,0xae,0x2e,0xaa,0x6b, + 0xa5,0x1b,0xa1,0xbb,0x44,0x77,0xbf,0x6e,0xa7,0xee, + 0x98,0x9e,0xbe,0x5e,0x80,0x9e,0x4c,0x6f,0xa7,0xde, + 0x79,0xbd,0xe7,0xfa,0x1c,0x7d,0x2f,0xfd,0x54,0xfd, + 0x6d,0xfa,0xa7,0xf5,0x47,0x0c,0x58,0x06,0xb3,0x0c, + 0x24,0x06,0xdb,0x0c,0xce,0x18,0x3c,0xc5,0x35,0x71, + 0x6f,0x3c,0x1d,0x2f,0xc7,0xdb,0xf1,0x51,0x43,0x5d, + 0xc3,0x40,0x43,0xa5,0x61,0x95,0x61,0x97,0xe1,0x84, + 0x91,0xb9,0xd1,0x3c,0xa3,0xd5,0x46,0x8d,0x46,0x0f, + 0x8c,0x69,0xc6,0x5c,0xe3,0x24,0xe3,0x6d,0xc6,0x6d, + 0xc6,0xa3,0x26,0x06,0x26,0x21,0x26,0x4b,0x4d,0xea, + 0x4d,0xee,0x9a,0x52,0x4d,0xb9,0xa6,0x29,0xa6,0x3b, + 0x4c,0x3b,0x4c,0xc7,0xcd,0xcc,0xcd,0xa2,0xcd,0xd6, + 0x99,0x35,0x9b,0x3d,0x31,0xd7,0x32,0xe7,0x9b,0xe7, + 0x9b,0xd7,0x9b,0xdf,0xb7,0x60,0x5a,0x78,0x5a,0x2c, + 0xb6,0xa8,0xb6,0xb8,0x65,0x49,0xb2,0xe4,0x5a,0xa6, + 0x59,0xee,0xb6,0xbc,0x6e,0x85,0x5a,0x39,0x59,0xa5, + 0x58,0x55,0x5a,0x5d,0xb3,0x46,0xad,0x9d,0xad,0x25, + 0xd6,0xbb,0xad,0xbb,0xa7,0x11,0xa7,0xb9,0x4e,0x93, + 0x4e,0xab,0x9e,0xd6,0x67,0xc3,0xb0,0xf1,0xb6,0xc9, + 0xb6,0xa9,0xb7,0x19,0xb0,0xe5,0xd8,0x06,0xdb,0xae, + 0xb6,0x6d,0xb6,0x7d,0x61,0x67,0x62,0x17,0x67,0xb7, + 0xc5,0xae,0xc3,0xee,0x93,0xbd,0x93,0x7d,0xba,0x7d, + 0x8d,0xfd,0x3d,0x07,0x0d,0x87,0xd9,0x0e,0xab,0x1d, + 0x5a,0x1d,0x7e,0x73,0xb4,0x72,0x14,0x3a,0x56,0x3a, + 0xde,0x9a,0xce,0x9c,0xee,0x3f,0x7d,0xc5,0xf4,0x96, + 0xe9,0x2f,0x67,0x58,0xcf,0x10,0xcf,0xd8,0x33,0xe3, + 0xb6,0x13,0xcb,0x29,0xc4,0x69,0x9d,0x53,0x9b,0xd3, + 0x47,0x67,0x17,0x67,0xb9,0x73,0x83,0xf3,0x88,0x8b, + 0x89,0x4b,0x82,0xcb,0x2e,0x97,0x3e,0x2e,0x9b,0x1b, + 0xc6,0xdd,0xc8,0xbd,0xe4,0x4a,0x74,0xf5,0x71,0x5d, + 0xe1,0x7a,0xd2,0xf5,0x9d,0x9b,0xb3,0x9b,0xc2,0xed, + 0xa8,0xdb,0xaf,0xee,0x36,0xee,0x69,0xee,0x87,0xdc, + 0x9f,0xcc,0x34,0x9f,0x29,0x9e,0x59,0x33,0x73,0xd0, + 0xc3,0xc8,0x43,0xe0,0x51,0xe5,0xd1,0x3f,0x0b,0x9f, + 0x95,0x30,0x6b,0xdf,0xac,0x7e,0x4f,0x43,0x4f,0x81, + 0x67,0xb5,0xe7,0x23,0x2f,0x63,0x2f,0x91,0x57,0xad, + 0xd7,0xb0,0xb7,0xa5,0x77,0xaa,0xf7,0x61,0xef,0x17, + 0x3e,0xf6,0x3e,0x72,0x9f,0xe3,0x3e,0xe3,0x3c,0x37, + 0xde,0x32,0xde,0x59,0x5f,0xcc,0x37,0xc0,0xb7,0xc8, + 0xb7,0xcb,0x4f,0xc3,0x6f,0x9e,0x5f,0x85,0xdf,0x43, + 0x7f,0x23,0xff,0x64,0xff,0x7a,0xff,0xd1,0x00,0xa7, + 0x80,0x25,0x01,0x67,0x03,0x89,0x81,0x41,0x81,0x5b, + 0x02,0xfb,0xf8,0x7a,0x7c,0x21,0xbf,0x8e,0x3f,0x3a, + 0xdb,0x65,0xf6,0xb2,0xd9,0xed,0x41,0x8c,0xa0,0xb9, + 0x41,0x15,0x41,0x8f,0x82,0xad,0x82,0xe5,0xc1,0xad, + 0x21,0x68,0xc8,0xec,0x90,0xad,0x21,0xf7,0xe7,0x98, + 0xce,0x91,0xce,0x69,0x0e,0x85,0x50,0x7e,0xe8,0xd6, + 0xd0,0x07,0x61,0xe6,0x61,0x8b,0xc3,0x7e,0x0c,0x27, + 0x85,0x87,0x85,0x57,0x86,0x3f,0x8e,0x70,0x88,0x58, + 0x1a,0xd1,0x31,0x97,0x35,0x77,0xd1,0xdc,0x43,0x73, + 0xdf,0x44,0xfa,0x44,0x96,0x44,0xde,0x9b,0x67,0x31, + 0x4f,0x39,0xaf,0x2d,0x4a,0x35,0x2a,0x3e,0xaa,0x2e, + 0x6a,0x3c,0xda,0x37,0xba,0x34,0xba,0x3f,0xc6,0x2e, + 0x66,0x59,0xcc,0xd5,0x58,0x9d,0x58,0x49,0x6c,0x4b, + 0x1c,0x39,0x2e,0x2a,0xae,0x36,0x6e,0x6c,0xbe,0xdf, + 0xfc,0xed,0xf3,0x87,0xe2,0x9d,0xe2,0x0b,0xe3,0x7b, + 0x17,0x98,0x2f,0xc8,0x5d,0x70,0x79,0xa1,0xce,0xc2, + 0xf4,0x85,0xa7,0x16,0xa9,0x2e,0x12,0x2c,0x3a,0x96, + 0x40,0x4c,0x88,0x4e,0x38,0x94,0xf0,0x41,0x10,0x2a, + 0xa8,0x16,0x8c,0x25,0xf2,0x13,0x77,0x25,0x8e,0x0a, + 0x79,0xc2,0x1d,0xc2,0x67,0x22,0x2f,0xd1,0x36,0xd1, + 0x88,0xd8,0x43,0x5c,0x2a,0x1e,0x4e,0xf2,0x48,0x2a, + 0x4d,0x7a,0x92,0xec,0x91,0xbc,0x35,0x79,0x24,0xc5, + 0x33,0xa5,0x2c,0xe5,0xb9,0x84,0x27,0xa9,0x90,0xbc, + 0x4c,0x0d,0x4c,0xdd,0x9b,0x3a,0x9e,0x16,0x9a,0x76, + 0x20,0x6d,0x32,0x3d,0x3a,0xbd,0x31,0x83,0x92,0x91, + 0x90,0x71,0x42,0xaa,0x21,0x4d,0x93,0xb6,0x67,0xea, + 0x67,0xe6,0x66,0x76,0xcb,0xac,0x65,0x85,0xb2,0xfe, + 0xc5,0x6e,0x8b,0xb7,0x2f,0x1e,0x95,0x07,0xc9,0x6b, + 0xb3,0x90,0xac,0x05,0x59,0x2d,0x0a,0xb6,0x42,0xa6, + 0xe8,0x54,0x5a,0x28,0xd7,0x2a,0x07,0xb2,0x67,0x65, + 0x57,0x66,0xbf,0xcd,0x89,0xca,0x39,0x96,0xab,0x9e, + 0x2b,0xcd,0xed,0xcc,0xb3,0xca,0xdb,0x90,0x37,0x9c, + 0xef,0x9f,0xff,0xed,0x12,0xc2,0x12,0xe1,0x92,0xb6, + 0xa5,0x86,0x4b,0x57,0x2d,0x1d,0x58,0xe6,0xbd,0xac, + 0x6a,0x39,0xb2,0x3c,0x71,0x79,0xdb,0x0a,0xe3,0x15, + 0x05,0x2b,0x86,0x56,0x06,0xac,0x3c,0xb8,0x8a,0xb6, + 0x2a,0x6d,0xd5,0x4f,0xab,0xed,0x57,0x97,0xae,0x7e, + 0xbd,0x26,0x7a,0x4d,0x6b,0x81,0x5e,0xc1,0xca,0x82, + 0xc1,0xb5,0x01,0x6b,0xeb,0x0b,0x55,0x0a,0xe5,0x85, + 0x7d,0xeb,0xdc,0xd7,0xed,0x5d,0x4f,0x58,0x2f,0x59, + 0xdf,0xb5,0x61,0xfa,0x86,0x9d,0x1b,0x3e,0x15,0x89, + 0x8a,0xae,0x14,0xdb,0x17,0x97,0x15,0x7f,0xd8,0x28, + 0xdc,0x78,0xe5,0x1b,0x87,0x6f,0xca,0xbf,0x99,0xdc, + 0x94,0xb4,0xa9,0xab,0xc4,0xb9,0x64,0xcf,0x66,0xd2, + 0x66,0xe9,0xe6,0xde,0x2d,0x9e,0x5b,0x0e,0x96,0xaa, + 0x97,0xe6,0x97,0x0e,0x6e,0x0d,0xd9,0xda,0xb4,0x0d, + 0xdf,0x56,0xb4,0xed,0xf5,0xf6,0x45,0xdb,0x2f,0x97, + 0xcd,0x28,0xdb,0xbb,0x83,0xb6,0x43,0xb9,0xa3,0xbf, + 0x3c,0xb8,0xbc,0x65,0xa7,0xc9,0xce,0xcd,0x3b,0x3f, + 0x54,0xa4,0x54,0xf4,0x54,0xfa,0x54,0x36,0xee,0xd2, + 0xdd,0xb5,0x61,0xd7,0xf8,0x6e,0xd1,0xee,0x1b,0x7b, + 0xbc,0xf6,0x34,0xec,0xd5,0xdb,0x5b,0xbc,0xf7,0xfd, + 0x3e,0xc9,0xbe,0xdb,0x55,0x01,0x55,0x4d,0xd5,0x66, + 0xd5,0x65,0xfb,0x49,0xfb,0xb3,0xf7,0x3f,0xae,0x89, + 0xaa,0xe9,0xf8,0x96,0xfb,0x6d,0x5d,0xad,0x4e,0x6d, + 0x71,0xed,0xc7,0x03,0xd2,0x03,0xfd,0x07,0x23,0x0e, + 0xb6,0xd7,0xb9,0xd4,0xd5,0x1d,0xd2,0x3d,0x54,0x52, + 0x8f,0xd6,0x2b,0xeb,0x47,0x0e,0xc7,0x1f,0xbe,0xfe, + 0x9d,0xef,0x77,0x2d,0x0d,0x36,0x0d,0x55,0x8d,0x9c, + 0xc6,0xe2,0x23,0x70,0x44,0x79,0xe4,0xe9,0xf7,0x09, + 0xdf,0xf7,0x1e,0x0d,0x3a,0xda,0x76,0x8c,0x7b,0xac, + 0xe1,0x07,0xd3,0x1f,0x76,0x1d,0x67,0x1d,0x2f,0x6a, + 0x42,0x9a,0xf2,0x9a,0x46,0x9b,0x53,0x9a,0xfb,0x5b, + 0x62,0x5b,0xba,0x4f,0xcc,0x3e,0xd1,0xd6,0xea,0xde, + 0x7a,0xfc,0x47,0xdb,0x1f,0x0f,0x9c,0x34,0x3c,0x59, + 0x79,0x4a,0xf3,0x54,0xc9,0x69,0xda,0xe9,0x82,0xd3, + 0x93,0x67,0xf2,0xcf,0x8c,0x9d,0x95,0x9d,0x7d,0x7e, + 0x2e,0xf9,0xdc,0x60,0xdb,0xa2,0xb6,0x7b,0xe7,0x63, + 0xce,0xdf,0x6a,0x0f,0x6f,0xef,0xba,0x10,0x74,0xe1, + 0xd2,0x45,0xff,0x8b,0xe7,0x3b,0xbc,0x3b,0xce,0x5c, + 0xf2,0xb8,0x74,0xf2,0xb2,0xdb,0xe5,0x13,0x57,0xb8, + 0x57,0x9a,0xaf,0x3a,0x5f,0x6d,0xea,0x74,0xea,0x3c, + 0xfe,0x93,0xd3,0x4f,0xc7,0xbb,0x9c,0xbb,0x9a,0xae, + 0xb9,0x5c,0x6b,0xb9,0xee,0x7a,0xbd,0xb5,0x7b,0x66, + 0xf7,0xe9,0x1b,0x9e,0x37,0xce,0xdd,0xf4,0xbd,0x79, + 0xf1,0x16,0xff,0xd6,0xd5,0x9e,0x39,0x3d,0xdd,0xbd, + 0xf3,0x7a,0x6f,0xf7,0xc5,0xf7,0xf5,0xdf,0x16,0xdd, + 0x7e,0x72,0x27,0xfd,0xce,0xcb,0xbb,0xd9,0x77,0x27, + 0xee,0xad,0xbc,0x4f,0xbc,0x5f,0xf4,0x40,0xed,0x41, + 0xd9,0x43,0xdd,0x87,0xd5,0x3f,0x5b,0xfe,0xdc,0xd8, + 0xef,0xdc,0x7f,0x6a,0xc0,0x77,0xa0,0xf3,0xd1,0xdc, + 0x47,0xf7,0x06,0x85,0x83,0xcf,0xfe,0x91,0xf5,0x8f, + 0x0f,0x43,0x05,0x8f,0x99,0x8f,0xcb,0x86,0x0d,0x86, + 0xeb,0x9e,0x38,0x3e,0x39,0x39,0xe2,0x3f,0x72,0xfd, + 0xe9,0xfc,0xa7,0x43,0xcf,0x64,0xcf,0x26,0x9e,0x17, + 0xfe,0xa2,0xfe,0xcb,0xae,0x17,0x16,0x2f,0x7e,0xf8, + 0xd5,0xeb,0xd7,0xce,0xd1,0x98,0xd1,0xa1,0x97,0xf2, + 0x97,0x93,0xbf,0x6d,0x7c,0xa5,0xfd,0xea,0xc0,0xeb, + 0x19,0xaf,0xdb,0xc6,0xc2,0xc6,0x1e,0xbe,0xc9,0x78, + 0x33,0x31,0x5e,0xf4,0x56,0xfb,0xed,0xc1,0x77,0xdc, + 0x77,0x1d,0xef,0xa3,0xdf,0x0f,0x4f,0xe4,0x7c,0x20, + 0x7f,0x28,0xff,0x68,0xf9,0xb1,0xf5,0x53,0xd0,0xa7, + 0xfb,0x93,0x19,0x93,0x93,0xff,0x04,0x03,0x98,0xf3, + 0xfc,0x63,0x33,0x2d,0xdb,0x00,0x00,0x00,0x04,0x67, + 0x41,0x4d,0x41,0x00,0x00,0xb1,0x8e,0x7c,0xfb,0x51, + 0x93,0x00,0x00,0x00,0x20,0x63,0x48,0x52,0x4d,0x00, + 0x00,0x7a,0x25,0x00,0x00,0x80,0x83,0x00,0x00,0xf9, + 0xff,0x00,0x00,0x80,0xe9,0x00,0x00,0x75,0x30,0x00, + 0x00,0xea,0x60,0x00,0x00,0x3a,0x98,0x00,0x00,0x17, + 0x6f,0x92,0x5f,0xc5,0x46,0x00,0x00,0x00,0x84,0x49, + 0x44,0x41,0x54,0x78,0xda,0xec,0xd3,0x39,0x0e,0x80, + 0x30,0x10,0x43,0xd1,0x71,0xc4,0xfd,0xaf,0x6c,0x2a, + 0x24,0xc8,0xd2,0xd0,0x10,0xa3,0xef,0x32,0x69,0xfc, + 0x32,0x19,0xd9,0xae,0x45,0x96,0x17,0x1f,0x45,0xb3, + 0xc3,0x63,0xf3,0xd2,0xb3,0x6e,0x0f,0x48,0x0b,0x29, + 0xdf,0x43,0xdc,0x03,0x52,0xca,0x0f,0x69,0x95,0x1b, + 0x5f,0x00,0x07,0x23,0xa2,0x27,0x50,0x55,0xe5,0x74, + 0x40,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0xf0,0x02,0xa0,0xe0,0xfe,0x4a,0x9e,0x80,0xee,0x5f, + 0x48,0x7f,0xd8,0x01,0x05,0xbd,0xbc,0x56,0x4b,0xac, + 0xcd,0x21,0x43,0xb7,0x13,0x00,0x00,0xff,0xff,0x03, + 0x00,0xdd,0x97,0x0d,0x61,0x33,0x1b,0xed,0x21,0x00, + 0x00,0x00,0x00,0x49,0x45,0x4e,0x44,0xae,0x42,0x60, + 0x82 +}; diff --git a/data/resources/button.png b/data/resources/button.png new file mode 100644 index 0000000000000000000000000000000000000000..93ce17ccaf621cb78881640ef1caebfdf8539e71 GIT binary patch literal 3981 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 TGaKz800000NkvXXu0mjf_%T^Z literal 0 HcmV?d00001 diff --git a/src/components/ButtonComponent.cpp b/src/components/ButtonComponent.cpp index 0edb2e552..74dcdc00b 100644 --- a/src/components/ButtonComponent.cpp +++ b/src/components/ButtonComponent.cpp @@ -2,11 +2,17 @@ #include "../Renderer.h" #include "../Window.h" -ButtonComponent::ButtonComponent(Window* window) : GuiComponent(window) +ButtonComponent::ButtonComponent(Window* window) : GuiComponent(window), + mBox(window, ":/button.png") { setSize(64, 48); } +void ButtonComponent::onSizeChanged() +{ + mBox.setSize(mSize); +} + void ButtonComponent::setPressedFunc(std::function f) { mPressedFunc = f; @@ -38,6 +44,8 @@ void ButtonComponent::render(const Eigen::Affine3f& parentTrans) { Eigen::Affine3f trans = parentTrans * getTransform(); + mBox.render(trans); + if(mTextCache) { Eigen::Vector3f centerOffset((mSize.x() - mTextCache->metrics.size.x()) / 2, (mSize.y() - mTextCache->metrics.size.y()) / 2, 0); diff --git a/src/components/ButtonComponent.h b/src/components/ButtonComponent.h index 190332141..d7b4130c6 100644 --- a/src/components/ButtonComponent.h +++ b/src/components/ButtonComponent.h @@ -3,6 +3,7 @@ #include "../GuiComponent.h" #include #include "../Font.h" +#include "NinePatchComponent.h" class ButtonComponent : public GuiComponent { @@ -15,10 +16,14 @@ public: void render(const Eigen::Affine3f& parentTrans) override; void setText(const std::string& text, unsigned int color); + + void onSizeChanged() override; + private: std::shared_ptr getFont(); std::function mPressedFunc; std::string mText; std::unique_ptr mTextCache; + NinePatchComponent mBox; }; diff --git a/src/components/GuiGameEd.cpp b/src/components/GuiGameEd.cpp index 3085cab0d..4e7972068 100644 --- a/src/components/GuiGameEd.cpp +++ b/src/components/GuiGameEd.cpp @@ -5,7 +5,7 @@ #define MDED_RESERVED_ROWS 3 GuiGameEd::GuiGameEd(Window* window, GameData* game, const std::vector& mdd) : GuiComponent(window), - mBox(mWindow, 0, 0, 0, 0), + mBox(mWindow, ":/frame.png", 0xAAAAAAFF, 0xCCCCCCFF), mList(window, Eigen::Vector2i(3, mdd.size() + MDED_RESERVED_ROWS)), mPathDisp(window), mGame(game), @@ -20,14 +20,7 @@ GuiGameEd::GuiGameEd(Window* window, GameData* game, const std::vector& mdd); - GuiBox mBox; + NinePatchComponent mBox; ComponentListComponent mList; diff --git a/src/components/NinePatchComponent.cpp b/src/components/NinePatchComponent.cpp new file mode 100644 index 000000000..f4ff0eba4 --- /dev/null +++ b/src/components/NinePatchComponent.cpp @@ -0,0 +1,165 @@ +#include "NinePatchComponent.h" +#include "../Window.h" +#include "../Log.h" +#include "../Renderer.h" + +NinePatchComponent::NinePatchComponent(Window* window, const std::string& path, unsigned int edgeColor, unsigned int centerColor) : GuiComponent(window), + mEdgeColor(edgeColor), mCenterColor(centerColor), + mTexture(TextureResource::get(*window->getResourceManager(), path)), + mVertices(NULL), mColors(NULL) +{ + buildVertices(); +} + +void NinePatchComponent::buildVertices() +{ + if(mVertices != NULL) + delete[] mVertices; + + if(mColors != NULL) + delete[] mColors; + + if(mTexture->getSize() == Eigen::Vector2i::Zero()) + { + mVertices = NULL; + mColors = NULL; + LOG(LogWarning) << "NinePatchComponent missing texture!"; + return; + } + + mVertices = new Vertex[6 * 9]; + mColors = new GLubyte[6 * 9 * 4]; + Renderer::buildGLColorArray(mColors, mEdgeColor, 6 * 9); + Renderer::buildGLColorArray(&mColors[4 * 6 * 4], mCenterColor, 6); + + const Eigen::Vector2f ts = mTexture->getSize().cast(); + + //coordinates on the image in pixels, top left origin + const Eigen::Vector2f pieceCoords[9] = { + Eigen::Vector2f(0, 0), + Eigen::Vector2f(16, 0), + Eigen::Vector2f(32, 0), + Eigen::Vector2f(0, 16), + Eigen::Vector2f(16, 16), + Eigen::Vector2f(32, 16), + Eigen::Vector2f(0, 32), + Eigen::Vector2f(16, 32), + Eigen::Vector2f(32, 32), + }; + + const Eigen::Vector2f pieceSizes = getCornerSize(); + + //corners never stretch, so we calculate a width and height for slices 1, 3, 5, and 7 + float borderWidth = mSize.x() - (pieceSizes.x() * 2); //should be pieceSizes[0] and pieceSizes[2] + if(borderWidth < pieceSizes.x()) + borderWidth = pieceSizes.x(); + + float borderHeight = mSize.y() - (pieceSizes.y() * 2); //should be pieceSizes[0] and pieceSizes[6] + if(borderHeight < pieceSizes.y()) + borderHeight = pieceSizes.y(); + + mVertices[0 * 6].pos = pieceCoords[0]; //top left + mVertices[1 * 6].pos = pieceCoords[1]; //top middle + mVertices[2 * 6].pos = pieceCoords[1] + Eigen::Vector2f(borderWidth, 0); //top right + + mVertices[3 * 6].pos = mVertices[0 * 6].pos + Eigen::Vector2f(0, pieceSizes.y()); //mid left + mVertices[4 * 6].pos = mVertices[3 * 6].pos + Eigen::Vector2f(pieceSizes.x(), 0); //mid middle + mVertices[5 * 6].pos = mVertices[4 * 6].pos + Eigen::Vector2f(borderWidth, 0); //mid right + + mVertices[6 * 6].pos = mVertices[3 * 6].pos + Eigen::Vector2f(0, borderHeight); //bot left + mVertices[7 * 6].pos = mVertices[6 * 6].pos + Eigen::Vector2f(pieceSizes.x(), 0); //bot middle + mVertices[8 * 6].pos = mVertices[7 * 6].pos + Eigen::Vector2f(borderWidth, 0); //bot right + + int v = 0; + for(int slice = 0; slice < 9; slice++) + { + Eigen::Vector2f size; + + //corners + if(slice == 0 || slice == 2 || slice == 6 || slice == 8) + size = pieceSizes; + + //vertical borders + if(slice == 1 || slice == 7) + size << borderWidth, pieceSizes.y(); + + //horizontal borders + if(slice == 3 || slice == 5) + size << pieceSizes.x(), borderHeight; + + //center + if(slice == 4) + size << borderWidth, borderHeight; + + //no resizing will be necessary + //mVertices[v + 0] is already correct + mVertices[v + 1].pos = mVertices[v + 0].pos + size; + mVertices[v + 2].pos << mVertices[v + 0].pos.x(), mVertices[v + 1].pos.y(); + + mVertices[v + 3].pos << mVertices[v + 1].pos.x(), mVertices[v + 0].pos.y(); + mVertices[v + 4].pos = mVertices[v + 1].pos; + mVertices[v + 5].pos = mVertices[v + 0].pos; + + //texture coordinates + //the y = (1 - y) is to deal with texture coordinates having a bottom left corner origin vs. verticies having a top left origin + mVertices[v + 0].tex << pieceCoords[slice].x() / ts.x(), 1 - (pieceCoords[slice].y() / ts.y()); + mVertices[v + 1].tex << (pieceCoords[slice].x() + pieceSizes.x()) / ts.x(), 1 - ((pieceCoords[slice].y() + pieceSizes.y()) / ts.y()); + mVertices[v + 2].tex << mVertices[v + 0].tex.x(), mVertices[v + 1].tex.y(); + + mVertices[v + 3].tex << mVertices[v + 1].tex.x(), mVertices[v + 0].tex.y(); + mVertices[v + 4].tex = mVertices[v + 1].tex; + mVertices[v + 5].tex = mVertices[v + 0].tex; + + v += 6; + } +} + +void NinePatchComponent::render(const Eigen::Affine3f& parentTrans) +{ + Eigen::Affine3f trans = parentTrans * getTransform(); + if(mTexture) + { + Renderer::setMatrix(trans); + + mTexture->bind(); + + glEnable(GL_TEXTURE_2D); + glEnable(GL_BLEND); + glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + + glEnableClientState(GL_VERTEX_ARRAY); + glEnableClientState(GL_TEXTURE_COORD_ARRAY); + glEnableClientState(GL_COLOR_ARRAY); + + glVertexPointer(2, GL_FLOAT, sizeof(Vertex), &mVertices[0].pos); + glTexCoordPointer(2, GL_FLOAT, sizeof(Vertex), &mVertices[0].tex); + glColorPointer(4, GL_UNSIGNED_BYTE, 0, mColors); + + glDrawArrays(GL_TRIANGLES, 0, 6 * 9); + + glDisableClientState(GL_VERTEX_ARRAY); + glDisableClientState(GL_TEXTURE_COORD_ARRAY); + glDisableClientState(GL_COLOR_ARRAY); + + glDisable(GL_TEXTURE_2D); + glDisable(GL_BLEND); + } + + renderChildren(trans); +} + +void NinePatchComponent::onSizeChanged() +{ + buildVertices(); +} + +Eigen::Vector2f NinePatchComponent::getCornerSize() const +{ + return Eigen::Vector2f(16, 16); +} + +void NinePatchComponent::fitTo(Eigen::Vector2f size) +{ + setSize(size + Eigen::Vector2f(getCornerSize().x() * 2, getCornerSize().y() * 2)); + setPosition(-getCornerSize().x(), -getCornerSize().y()); +} diff --git a/src/components/NinePatchComponent.h b/src/components/NinePatchComponent.h new file mode 100644 index 000000000..102d9c374 --- /dev/null +++ b/src/components/NinePatchComponent.h @@ -0,0 +1,34 @@ +#pragma once + +#include "../GuiComponent.h" +#include "../resources/TextureResource.h" + +class NinePatchComponent : public GuiComponent +{ +public: + NinePatchComponent(Window* window, const std::string& path, unsigned int edgeColor = 0xFFFFFFFF, unsigned int centerColor = 0xFFFFFFFF); + + void render(const Eigen::Affine3f& parentTrans) override; + + void onSizeChanged() override; + + void fitTo(Eigen::Vector2f size); + +private: + Eigen::Vector2f getCornerSize() const; + + void buildVertices(); + + struct Vertex + { + Eigen::Vector2f pos; + Eigen::Vector2f tex; + }; + + Vertex* mVertices; + GLubyte* mColors; + + unsigned int mEdgeColor; + unsigned int mCenterColor; + std::shared_ptr mTexture; +};