From 3f562e65d86f411263f57494bbcbd8ede2e65381 Mon Sep 17 00:00:00 2001 From: Joseph Davies Date: Sat, 7 May 2011 15:37:35 -0700 Subject: [PATCH 01/18] Add libPNG support stubs. --- CMakeLists.txt | 3 +- .../Plasma/PubUtilLib/plGImage/CMakeLists.txt | 5 + Sources/Plasma/PubUtilLib/plGImage/plPNG.cpp | 139 ++++++++++++++++++ Sources/Plasma/PubUtilLib/plGImage/plPNG.h | 54 +++++++ 4 files changed, 200 insertions(+), 1 deletion(-) create mode 100644 Sources/Plasma/PubUtilLib/plGImage/plPNG.cpp create mode 100644 Sources/Plasma/PubUtilLib/plGImage/plPNG.h diff --git a/CMakeLists.txt b/CMakeLists.txt index 1b4c51da..84fc3855 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -10,6 +10,7 @@ find_package(PythonLibs REQUIRED) find_package(EXPAT REQUIRED) find_package(ZLIB REQUIRED) find_package(PhysX REQUIRED) #TODO: Not required if we aren't building the client +find_package(PNG REQUIRED) find_package(Ogg REQUIRED) #TODO: Not required if we aren't building the client find_package(Vorbis REQUIRED) #TODO: Not required if we aren't building the client find_package(Speex REQUIRED) #TODO: Not required if we aren't building the client @@ -86,4 +87,4 @@ endif(MSVC) include_directories(${OPENSSL_INCLUDE_DIR}) add_subdirectory(Sources/Plasma) -add_subdirectory(Sources/Tools) \ No newline at end of file +add_subdirectory(Sources/Tools) diff --git a/Sources/Plasma/PubUtilLib/plGImage/CMakeLists.txt b/Sources/Plasma/PubUtilLib/plGImage/CMakeLists.txt index e2baff10..992e5853 100644 --- a/Sources/Plasma/PubUtilLib/plGImage/CMakeLists.txt +++ b/Sources/Plasma/PubUtilLib/plGImage/CMakeLists.txt @@ -3,6 +3,9 @@ include_directories("../../NucleusLib/inc") include_directories("../../NucleusLib") include_directories("../../PubUtilLib") +find_package(PNG REQUIRED) +include_directories(${PNG_INCLUDE_DIR}) + set(plGImage_SOURCES hsCodecManager.cpp hsDXTDirectXCodec.cpp @@ -17,6 +20,7 @@ set(plGImage_SOURCES plFontCache.cpp plLODMipmap.cpp plMipmap.cpp + plPNG.cpp plTGAWriter.cpp plWinFontCache.cpp ) @@ -37,6 +41,7 @@ set(plGImage_HEADERS plGImageCreatable.h plLODMipmap.h plMipmap.h + plPNG.h plTGAWriter.h plWinFontCache.h ) diff --git a/Sources/Plasma/PubUtilLib/plGImage/plPNG.cpp b/Sources/Plasma/PubUtilLib/plGImage/plPNG.cpp new file mode 100644 index 00000000..83f9a4ec --- /dev/null +++ b/Sources/Plasma/PubUtilLib/plGImage/plPNG.cpp @@ -0,0 +1,139 @@ +/*==LICENSE==* + +CyanWorlds.com Engine - MMOG client, server and tools +Copyright (C) 2011 Cyan Worlds, Inc. + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . + +You can contact Cyan Worlds, Inc. by email legal@cyan.com + or by snail mail at: + Cyan Worlds, Inc. + 14617 N Newport Hwy + Mead, WA 99021 + +*==LICENSE==*/ + +#include "hsTypes.h" +#include "hsStream.h" +#include "hsExceptions.h" +#include "hsUtils.h" +#include "plPNG.h" +#include "plGImage/plMipmap.h" + +#include + + +plMipmap *plPNG::IRead( hsStream *inStream ) +{ + plMipmap *newMipmap = NULL; + png_structp png_ptr; + png_infop info_ptr; + png_infop end_info; + + try + { + // Check PNG Signature + png_byte sig[8]; + inStream->Read8Bytes((char *) sig); + if (!png_sig_cmp(sig, 0, 8)) + { + inStream->Rewind(); + + // Allocate required structs + png_ptr = png_create_read_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL); + if (!png_ptr) + throw( false ); + + info_ptr = png_create_info_struct(png_ptr); + if (!info_ptr) + { + png_destroy_read_struct(&png_ptr, (png_infopp)NULL, (png_infopp)NULL); + throw( false ); + } + + end_info = png_create_info_struct(png_ptr); + if (!end_info) + { + png_destroy_read_struct(&png_ptr, &info_ptr, (png_infopp)NULL); + throw( false ); + } + + + + // Clean up allocated structs + png_destroy_read_struct(&png_ptr, &info_ptr, &end_info); + } + } + catch( ... ) + { + if (newMipmap != NULL) + { + delete newMipmap; + newMipmap = NULL; + } + } + + return newMipmap; +} + +plMipmap* plPNG::ReadFromFile( const char *fileName ) +{ + wchar* wFilename = hsStringToWString(fileName); + plMipmap* retVal = ReadFromFile(wFilename); + delete [] wFilename; + return retVal; +} + +plMipmap* plPNG::ReadFromFile( const wchar *fileName ) +{ + hsUNIXStream in; + if (!in.Open(fileName, L"rb")) + return false; + plMipmap* ret = IRead(&in); + in.Close(); + return ret; +} + +hsBool plPNG::IWrite( plMipmap *source, hsStream *outStream ) +{ + hsBool result = true; + + try + { + } + catch( ... ) + { + result = false; + } + + return result; +} + +hsBool plPNG::WriteToFile( const char *fileName, plMipmap *sourceData ) +{ + wchar* wFilename = hsStringToWString(fileName); + hsBool retVal = WriteToFile(wFilename, sourceData); + delete [] wFilename; + return retVal; +} + +hsBool plPNG::WriteToFile( const wchar *fileName, plMipmap *sourceData ) +{ + hsUNIXStream out; + if (!out.Open(fileName, L"wb")) + return false; + hsBool ret = IWrite(sourceData, &out); + out.Close(); + return ret; +} \ No newline at end of file diff --git a/Sources/Plasma/PubUtilLib/plGImage/plPNG.h b/Sources/Plasma/PubUtilLib/plGImage/plPNG.h new file mode 100644 index 00000000..22ac28fc --- /dev/null +++ b/Sources/Plasma/PubUtilLib/plGImage/plPNG.h @@ -0,0 +1,54 @@ +/*==LICENSE==* + +CyanWorlds.com Engine - MMOG client, server and tools +Copyright (C) 2011 Cyan Worlds, Inc. + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . + +You can contact Cyan Worlds, Inc. by email legal@cyan.com + or by snail mail at: + Cyan Worlds, Inc. + 14617 N Newport Hwy + Mead, WA 99021 + +*==LICENSE==*/ + +#ifndef _plPNG_h +#define _plPNG_h + + +//// Class Definition ///////////////////////////////////////////////////////// + +class plMipmap; +class hsStream; + +class plPNG +{ + protected: + + plMipmap *IRead( hsStream *inStream ); + hsBool IWrite( plMipmap *source, hsStream *outStream ); + + public: + + plMipmap *ReadFromStream( hsStream *inStream ) { return IRead( inStream ); } + plMipmap *ReadFromFile( const char *fileName ); + plMipmap *ReadFromFile( const wchar *fileName ); + + hsBool WriteToStream( hsStream *outStream, plMipmap *sourceData ) { return IWrite( sourceData, outStream ); } + hsBool WriteToFile( const char *fileName, plMipmap *sourceData ); + hsBool WriteToFile( const wchar *fileName, plMipmap *sourceData ); +}; + +#endif // _plPNG_h \ No newline at end of file From 4f8ac12d405c89ed9bde8510f909c7008809a14e Mon Sep 17 00:00:00 2001 From: Joseph Davies Date: Mon, 9 May 2011 22:09:27 -0700 Subject: [PATCH 02/18] Add PNG read support to plPNG. --- Sources/Plasma/Apps/plClient/CMakeLists.txt | 1 + Sources/Plasma/PubUtilLib/plGImage/plPNG.cpp | 94 ++++++++++++++++++-- Sources/Plasma/PubUtilLib/plGImage/plPNG.h | 4 +- 3 files changed, 89 insertions(+), 10 deletions(-) diff --git a/Sources/Plasma/Apps/plClient/CMakeLists.txt b/Sources/Plasma/Apps/plClient/CMakeLists.txt index d0bd4802..8398b41e 100644 --- a/Sources/Plasma/Apps/plClient/CMakeLists.txt +++ b/Sources/Plasma/Apps/plClient/CMakeLists.txt @@ -198,6 +198,7 @@ target_link_libraries(plClient ${OPENAL_LIBRARY}) target_link_libraries(plClient ${OPENSSL_LIBRARIES}) target_link_libraries(plClient ${EXPAT_LIBRARY}) target_link_libraries(plClient ${JPEG_LIBRARY}) +target_link_libraries(plClient ${PNG_LIBRARY}) target_link_libraries(plClient ${Speex_LIBRARY}) target_link_libraries(plClient ${PHYSX_LIBRARIES}) target_link_libraries(plClient ${Ogg_LIBRARIES}) diff --git a/Sources/Plasma/PubUtilLib/plGImage/plPNG.cpp b/Sources/Plasma/PubUtilLib/plGImage/plPNG.cpp index 83f9a4ec..43178089 100644 --- a/Sources/Plasma/PubUtilLib/plGImage/plPNG.cpp +++ b/Sources/Plasma/PubUtilLib/plGImage/plPNG.cpp @@ -32,9 +32,39 @@ You can contact Cyan Worlds, Inc. by email legal@cyan.com #include "plGImage/plMipmap.h" #include +#define PNGSIGSIZE 8 +// Custom functions to read and write data from or to an hsStream +// used by libPNG's respective functions +void pngReadDelegate(png_structp png_ptr, png_bytep png_data, png_size_t length) +{ + hsStream *inStream = (hsStream *)png_get_io_ptr(png_ptr); + inStream->Read(length, (UInt8 *)png_data); +} + +void pngWriteDelegate(png_structp png_ptr, png_bytep png_data, png_size_t length) +{ +} + +void pngFlushDelegate(png_structp png_ptr) +{ +} + +//// Singleton Instance /////////////////////////////////////////////////////// + +plPNG &plPNG::Instance( void ) +{ + static plPNG theInstance; + return theInstance; +} -plMipmap *plPNG::IRead( hsStream *inStream ) +//// IRead //////////////////////////////////////////////////////////////////// +// Given an open hsStream, reads the PNG data off of the +// stream and decodes it into a new plMipmap. The mipmap's buffer ends up +// being a packed RGBA buffer. +// Returns a pointer to the new mipmap if successful, NULL otherwise. + +plMipmap* plPNG::IRead( hsStream *inStream ) { plMipmap *newMipmap = NULL; png_structp png_ptr; @@ -44,12 +74,10 @@ plMipmap *plPNG::IRead( hsStream *inStream ) try { // Check PNG Signature - png_byte sig[8]; + png_byte sig[PNGSIGSIZE]; inStream->Read8Bytes((char *) sig); - if (!png_sig_cmp(sig, 0, 8)) + if (!png_sig_cmp(sig, 0, PNGSIGSIZE)) { - inStream->Rewind(); - // Allocate required structs png_ptr = png_create_read_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL); if (!png_ptr) @@ -69,10 +97,57 @@ plMipmap *plPNG::IRead( hsStream *inStream ) throw( false ); } + // Assign delegate function for reading from hsStream + png_set_read_fn(png_ptr, (png_voidp)inStream, pngReadDelegate); + + // Get PNG Header information + png_set_sig_bytes(png_ptr, PNGSIGSIZE); + png_read_info(png_ptr, info_ptr); + png_uint_32 imgWidth = png_get_image_width(png_ptr, info_ptr); + png_uint_32 imgHeight = png_get_image_height(png_ptr, info_ptr); + png_uint_32 bitdepth = png_get_bit_depth(png_ptr, info_ptr); + png_uint_32 channels = png_get_channels(png_ptr, info_ptr); + png_uint_32 color_type = png_get_color_type(png_ptr, info_ptr); + + // Convert images to RGB color space + switch (color_type) { + case PNG_COLOR_TYPE_PALETTE: + png_set_palette_to_rgb(png_ptr); + channels = 3; + break; + case PNG_COLOR_TYPE_GRAY: + if (bitdepth < 8) + png_set_expand_gray_1_2_4_to_8(png_ptr); + bitdepth = 8; + break; + } + + // Convert transparency (if needed) to a full alpha channel + if (png_get_valid(png_ptr, info_ptr, PNG_INFO_tRNS)) + { + png_set_tRNS_to_alpha(png_ptr); + channels+=1; + } + + png_set_bgr(png_ptr); + + /// Construct a new mipmap to hold everything + newMipmap = TRACKED_NEW plMipmap(imgWidth, imgHeight, plMipmap::kARGB32Config, 1, plMipmap::kUncompressed); + + char *destp = (char *)newMipmap->GetImage(); + png_bytep *row_ptrs = new png_bytep[imgHeight]; + const unsigned int stride = imgWidth * bitdepth * channels / 8; + // Assign row pointers to the appropriate locations in the newly-created Mipmap + for (size_t i = 0; i < imgHeight; i++) + { + row_ptrs[i] = (png_bytep)destp + (i * stride); + } + png_read_image(png_ptr, row_ptrs); // Clean up allocated structs png_destroy_read_struct(&png_ptr, &info_ptr, &end_info); + delete [] row_ptrs; } } catch( ... ) @@ -105,12 +180,13 @@ plMipmap* plPNG::ReadFromFile( const wchar *fileName ) return ret; } -hsBool plPNG::IWrite( plMipmap *source, hsStream *outStream ) +hsBool plPNG::IWrite( plMipmap *source, hsStream *outStream ) { hsBool result = true; try { + //png_set_write_fn(png_ptr, (png_voidp)&outStream, pngWriteDelegate, pngFlushDelegate); } catch( ... ) { @@ -120,7 +196,7 @@ hsBool plPNG::IWrite( plMipmap *source, hsStream *outStream ) return result; } -hsBool plPNG::WriteToFile( const char *fileName, plMipmap *sourceData ) +hsBool plPNG::WriteToFile( const char *fileName, plMipmap *sourceData ) { wchar* wFilename = hsStringToWString(fileName); hsBool retVal = WriteToFile(wFilename, sourceData); @@ -128,7 +204,7 @@ hsBool plPNG::WriteToFile( const char *fileName, plMipmap *sourceData ) return retVal; } -hsBool plPNG::WriteToFile( const wchar *fileName, plMipmap *sourceData ) +hsBool plPNG::WriteToFile( const wchar *fileName, plMipmap *sourceData ) { hsUNIXStream out; if (!out.Open(fileName, L"wb")) @@ -136,4 +212,4 @@ hsBool plPNG::WriteToFile( const wchar *fileName, plMipmap *sourceData ) hsBool ret = IWrite(sourceData, &out); out.Close(); return ret; -} \ No newline at end of file +} diff --git a/Sources/Plasma/PubUtilLib/plGImage/plPNG.h b/Sources/Plasma/PubUtilLib/plGImage/plPNG.h index 22ac28fc..2f6eb0f9 100644 --- a/Sources/Plasma/PubUtilLib/plGImage/plPNG.h +++ b/Sources/Plasma/PubUtilLib/plGImage/plPNG.h @@ -49,6 +49,8 @@ class plPNG hsBool WriteToStream( hsStream *outStream, plMipmap *sourceData ) { return IWrite( sourceData, outStream ); } hsBool WriteToFile( const char *fileName, plMipmap *sourceData ); hsBool WriteToFile( const wchar *fileName, plMipmap *sourceData ); + + static plPNG &Instance( void ); }; -#endif // _plPNG_h \ No newline at end of file +#endif // _plPNG_h From e08ed209478681e5d7f5f3ecfaa6e38951f7b616 Mon Sep 17 00:00:00 2001 From: Joseph Davies Date: Tue, 10 May 2011 23:47:27 -0700 Subject: [PATCH 03/18] Add PNG write support to plPNG. --- Sources/Plasma/PubUtilLib/plGImage/plPNG.cpp | 50 +++++++++++++++++--- 1 file changed, 44 insertions(+), 6 deletions(-) diff --git a/Sources/Plasma/PubUtilLib/plGImage/plPNG.cpp b/Sources/Plasma/PubUtilLib/plGImage/plPNG.cpp index 43178089..5fc1bccf 100644 --- a/Sources/Plasma/PubUtilLib/plGImage/plPNG.cpp +++ b/Sources/Plasma/PubUtilLib/plGImage/plPNG.cpp @@ -44,10 +44,8 @@ void pngReadDelegate(png_structp png_ptr, png_bytep png_data, png_size_t length) void pngWriteDelegate(png_structp png_ptr, png_bytep png_data, png_size_t length) { -} - -void pngFlushDelegate(png_structp png_ptr) -{ + hsStream *outStream = (hsStream *)png_get_io_ptr(png_ptr); + outStream->Write(length, (UInt8 *)png_data); } //// Singleton Instance /////////////////////////////////////////////////////// @@ -129,13 +127,14 @@ plMipmap* plPNG::IRead( hsStream *inStream ) channels+=1; } + // Invert color byte-order as used by plMipmap for DirectX png_set_bgr(png_ptr); /// Construct a new mipmap to hold everything newMipmap = TRACKED_NEW plMipmap(imgWidth, imgHeight, plMipmap::kARGB32Config, 1, plMipmap::kUncompressed); char *destp = (char *)newMipmap->GetImage(); - png_bytep *row_ptrs = new png_bytep[imgHeight]; + png_bytep *row_ptrs = TRACKED_NEW png_bytep[imgHeight]; const unsigned int stride = imgWidth * bitdepth * channels / 8; // Assign row pointers to the appropriate locations in the newly-created Mipmap @@ -186,7 +185,46 @@ hsBool plPNG::IWrite( plMipmap *source, hsStream *outStream ) try { - //png_set_write_fn(png_ptr, (png_voidp)&outStream, pngWriteDelegate, pngFlushDelegate); + // Allocate required structs + png_structp png_ptr = png_create_write_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL); + if (!png_ptr) + throw( false ); + + png_infop info_ptr = png_create_info_struct(png_ptr); + if (!info_ptr) + { + png_destroy_write_struct(&png_ptr, (png_infopp)NULL); + throw( false ); + } + + // Assign delegate function for writing to hsStream + png_set_write_fn(png_ptr, (png_voidp)outStream, pngWriteDelegate, NULL); + + UInt8 psize = source->GetPixelSize(); + png_set_IHDR(png_ptr, info_ptr, source->GetWidth(), source->GetHeight(), 8, PNG_COLOR_TYPE_RGB_ALPHA, + PNG_INTERLACE_NONE, PNG_COMPRESSION_TYPE_DEFAULT, PNG_FILTER_TYPE_DEFAULT); + + // Invert color byte-order as used by plMipmap for DirectX + png_set_bgr(png_ptr); + + // Write out the image metadata + png_write_info(png_ptr, info_ptr); + + char *srcp = (char *)source->GetImage(); + png_bytep *row_ptrs = TRACKED_NEW png_bytep[source->GetHeight()]; + const unsigned int stride = source->GetWidth() * source->GetPixelSize() / 8; + + // Assign row pointers to the appropriate locations in the newly-created Mipmap + for (size_t i = 0; i < source->GetHeight(); i++) + { + row_ptrs[i] = (png_bytep)srcp + (i * stride); + } + png_write_image(png_ptr, row_ptrs); + png_write_end(png_ptr, info_ptr); + + // Clean up allocated structs + png_destroy_write_struct(&png_ptr, &info_ptr); + delete [] row_ptrs; } catch( ... ) { From 555b0d94b211b7631341a0bd4c1f501dfd1c5499 Mon Sep 17 00:00:00 2001 From: Joseph Davies Date: Wed, 11 May 2011 00:17:55 -0700 Subject: [PATCH 04/18] AStyle formatting fixes. --- Sources/Plasma/PubUtilLib/plGImage/plPNG.cpp | 132 +++++++++---------- Sources/Plasma/PubUtilLib/plGImage/plPNG.h | 25 ++-- 2 files changed, 76 insertions(+), 81 deletions(-) diff --git a/Sources/Plasma/PubUtilLib/plGImage/plPNG.cpp b/Sources/Plasma/PubUtilLib/plGImage/plPNG.cpp index 5fc1bccf..f41e7961 100644 --- a/Sources/Plasma/PubUtilLib/plGImage/plPNG.cpp +++ b/Sources/Plasma/PubUtilLib/plGImage/plPNG.cpp @@ -38,19 +38,19 @@ You can contact Cyan Worlds, Inc. by email legal@cyan.com // used by libPNG's respective functions void pngReadDelegate(png_structp png_ptr, png_bytep png_data, png_size_t length) { - hsStream *inStream = (hsStream *)png_get_io_ptr(png_ptr); - inStream->Read(length, (UInt8 *)png_data); + hsStream* inStream = (hsStream*)png_get_io_ptr(png_ptr); + inStream->Read(length, (UInt8*)png_data); } void pngWriteDelegate(png_structp png_ptr, png_bytep png_data, png_size_t length) { - hsStream *outStream = (hsStream *)png_get_io_ptr(png_ptr); - outStream->Write(length, (UInt8 *)png_data); + hsStream* outStream = (hsStream*)png_get_io_ptr(png_ptr); + outStream->Write(length, (UInt8*)png_data); } //// Singleton Instance /////////////////////////////////////////////////////// -plPNG &plPNG::Instance( void ) +plPNG& plPNG::Instance(void) { static plPNG theInstance; return theInstance; @@ -62,42 +62,42 @@ plPNG &plPNG::Instance( void ) // being a packed RGBA buffer. // Returns a pointer to the new mipmap if successful, NULL otherwise. -plMipmap* plPNG::IRead( hsStream *inStream ) +plMipmap* plPNG::IRead(hsStream* inStream) { - plMipmap *newMipmap = NULL; + plMipmap* newMipmap = NULL; png_structp png_ptr; png_infop info_ptr; png_infop end_info; - try - { + try { // Check PNG Signature png_byte sig[PNGSIGSIZE]; - inStream->Read8Bytes((char *) sig); - if (!png_sig_cmp(sig, 0, PNGSIGSIZE)) - { + inStream->Read8Bytes((char*) sig); + + if (!png_sig_cmp(sig, 0, PNGSIGSIZE)) { // Allocate required structs png_ptr = png_create_read_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL); - if (!png_ptr) - throw( false ); + + if (!png_ptr) { + throw(false); + } info_ptr = png_create_info_struct(png_ptr); - if (!info_ptr) - { - png_destroy_read_struct(&png_ptr, (png_infopp)NULL, (png_infopp)NULL); - throw( false ); + + if (!info_ptr) { + png_destroy_read_struct(&png_ptr, (png_infopp)NULL, (png_infopp)NULL); + throw(false); } end_info = png_create_info_struct(png_ptr); - if (!end_info) - { - png_destroy_read_struct(&png_ptr, &info_ptr, (png_infopp)NULL); - throw( false ); + + if (!end_info) { + png_destroy_read_struct(&png_ptr, &info_ptr, (png_infopp)NULL); + throw(false); } // Assign delegate function for reading from hsStream png_set_read_fn(png_ptr, (png_voidp)inStream, pngReadDelegate); - // Get PNG Header information png_set_sig_bytes(png_ptr, PNGSIGSIZE); png_read_info(png_ptr, info_ptr); @@ -114,45 +114,41 @@ plMipmap* plPNG::IRead( hsStream *inStream ) channels = 3; break; case PNG_COLOR_TYPE_GRAY: - if (bitdepth < 8) + + if (bitdepth < 8) { png_set_expand_gray_1_2_4_to_8(png_ptr); + } + bitdepth = 8; - break; + break; } // Convert transparency (if needed) to a full alpha channel - if (png_get_valid(png_ptr, info_ptr, PNG_INFO_tRNS)) - { + if (png_get_valid(png_ptr, info_ptr, PNG_INFO_tRNS)) { png_set_tRNS_to_alpha(png_ptr); - channels+=1; + channels += 1; } // Invert color byte-order as used by plMipmap for DirectX png_set_bgr(png_ptr); - /// Construct a new mipmap to hold everything newMipmap = TRACKED_NEW plMipmap(imgWidth, imgHeight, plMipmap::kARGB32Config, 1, plMipmap::kUncompressed); - - char *destp = (char *)newMipmap->GetImage(); - png_bytep *row_ptrs = TRACKED_NEW png_bytep[imgHeight]; + char* destp = (char*)newMipmap->GetImage(); + png_bytep* row_ptrs = TRACKED_NEW png_bytep[imgHeight]; const unsigned int stride = imgWidth * bitdepth * channels / 8; // Assign row pointers to the appropriate locations in the newly-created Mipmap - for (size_t i = 0; i < imgHeight; i++) - { + for (size_t i = 0; i < imgHeight; i++) { row_ptrs[i] = (png_bytep)destp + (i * stride); } - png_read_image(png_ptr, row_ptrs); + png_read_image(png_ptr, row_ptrs); // Clean up allocated structs png_destroy_read_struct(&png_ptr, &info_ptr, &end_info); delete [] row_ptrs; } - } - catch( ... ) - { - if (newMipmap != NULL) - { + } catch (...) { + if (newMipmap != NULL) { delete newMipmap; newMipmap = NULL; } @@ -161,7 +157,7 @@ plMipmap* plPNG::IRead( hsStream *inStream ) return newMipmap; } -plMipmap* plPNG::ReadFromFile( const char *fileName ) +plMipmap* plPNG::ReadFromFile(const char* fileName) { wchar* wFilename = hsStringToWString(fileName); plMipmap* retVal = ReadFromFile(wFilename); @@ -169,72 +165,69 @@ plMipmap* plPNG::ReadFromFile( const char *fileName ) return retVal; } -plMipmap* plPNG::ReadFromFile( const wchar *fileName ) +plMipmap* plPNG::ReadFromFile(const wchar* fileName) { hsUNIXStream in; - if (!in.Open(fileName, L"rb")) + + if (!in.Open(fileName, L"rb")) { return false; + } + plMipmap* ret = IRead(&in); in.Close(); return ret; } -hsBool plPNG::IWrite( plMipmap *source, hsStream *outStream ) +hsBool plPNG::IWrite(plMipmap* source, hsStream* outStream) { hsBool result = true; - try - { + try { // Allocate required structs png_structp png_ptr = png_create_write_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL); - if (!png_ptr) - throw( false ); + + if (!png_ptr) { + throw(false); + } png_infop info_ptr = png_create_info_struct(png_ptr); - if (!info_ptr) - { + + if (!info_ptr) { png_destroy_write_struct(&png_ptr, (png_infopp)NULL); - throw( false ); + throw(false); } // Assign delegate function for writing to hsStream png_set_write_fn(png_ptr, (png_voidp)outStream, pngWriteDelegate, NULL); - UInt8 psize = source->GetPixelSize(); - png_set_IHDR(png_ptr, info_ptr, source->GetWidth(), source->GetHeight(), 8, PNG_COLOR_TYPE_RGB_ALPHA, - PNG_INTERLACE_NONE, PNG_COMPRESSION_TYPE_DEFAULT, PNG_FILTER_TYPE_DEFAULT); - + png_set_IHDR(png_ptr, info_ptr, source->GetWidth(), source->GetHeight(), 8, PNG_COLOR_TYPE_RGB_ALPHA, + PNG_INTERLACE_NONE, PNG_COMPRESSION_TYPE_DEFAULT, PNG_FILTER_TYPE_DEFAULT); // Invert color byte-order as used by plMipmap for DirectX png_set_bgr(png_ptr); - // Write out the image metadata png_write_info(png_ptr, info_ptr); - - char *srcp = (char *)source->GetImage(); - png_bytep *row_ptrs = TRACKED_NEW png_bytep[source->GetHeight()]; + char* srcp = (char*)source->GetImage(); + png_bytep* row_ptrs = TRACKED_NEW png_bytep[source->GetHeight()]; const unsigned int stride = source->GetWidth() * source->GetPixelSize() / 8; // Assign row pointers to the appropriate locations in the newly-created Mipmap - for (size_t i = 0; i < source->GetHeight(); i++) - { + for (size_t i = 0; i < source->GetHeight(); i++) { row_ptrs[i] = (png_bytep)srcp + (i * stride); } + png_write_image(png_ptr, row_ptrs); png_write_end(png_ptr, info_ptr); - // Clean up allocated structs png_destroy_write_struct(&png_ptr, &info_ptr); delete [] row_ptrs; - } - catch( ... ) - { + } catch (...) { result = false; } return result; } -hsBool plPNG::WriteToFile( const char *fileName, plMipmap *sourceData ) +hsBool plPNG::WriteToFile(const char* fileName, plMipmap* sourceData) { wchar* wFilename = hsStringToWString(fileName); hsBool retVal = WriteToFile(wFilename, sourceData); @@ -242,11 +235,14 @@ hsBool plPNG::WriteToFile( const char *fileName, plMipmap *sourceData ) return retVal; } -hsBool plPNG::WriteToFile( const wchar *fileName, plMipmap *sourceData ) +hsBool plPNG::WriteToFile(const wchar* fileName, plMipmap* sourceData) { hsUNIXStream out; - if (!out.Open(fileName, L"wb")) + + if (!out.Open(fileName, L"wb")) { return false; + } + hsBool ret = IWrite(sourceData, &out); out.Close(); return ret; diff --git a/Sources/Plasma/PubUtilLib/plGImage/plPNG.h b/Sources/Plasma/PubUtilLib/plGImage/plPNG.h index 2f6eb0f9..f193b639 100644 --- a/Sources/Plasma/PubUtilLib/plGImage/plPNG.h +++ b/Sources/Plasma/PubUtilLib/plGImage/plPNG.h @@ -33,24 +33,23 @@ You can contact Cyan Worlds, Inc. by email legal@cyan.com class plMipmap; class hsStream; -class plPNG -{ - protected: +class plPNG { +protected: - plMipmap *IRead( hsStream *inStream ); - hsBool IWrite( plMipmap *source, hsStream *outStream ); + plMipmap* IRead(hsStream* inStream); + hsBool IWrite(plMipmap* source, hsStream* outStream); - public: +public: - plMipmap *ReadFromStream( hsStream *inStream ) { return IRead( inStream ); } - plMipmap *ReadFromFile( const char *fileName ); - plMipmap *ReadFromFile( const wchar *fileName ); + plMipmap* ReadFromStream(hsStream* inStream) { return IRead(inStream); } + plMipmap* ReadFromFile(const char* fileName); + plMipmap* ReadFromFile(const wchar* fileName); - hsBool WriteToStream( hsStream *outStream, plMipmap *sourceData ) { return IWrite( sourceData, outStream ); } - hsBool WriteToFile( const char *fileName, plMipmap *sourceData ); - hsBool WriteToFile( const wchar *fileName, plMipmap *sourceData ); + hsBool WriteToStream(hsStream* outStream, plMipmap* sourceData) { return IWrite(sourceData, outStream); } + hsBool WriteToFile(const char* fileName, plMipmap* sourceData); + hsBool WriteToFile(const wchar* fileName, plMipmap* sourceData); - static plPNG &Instance( void ); + static plPNG& Instance(void); }; #endif // _plPNG_h From b84bb5da9991dbd39b5fc591c397158bdedc2646 Mon Sep 17 00:00:00 2001 From: Joseph Davies Date: Wed, 11 May 2011 17:02:14 -0700 Subject: [PATCH 05/18] Add Python function and glue for PNG saving. --- .../Plasma/FeatureLib/pfPython/pyImage.cpp | 7 ++++ Sources/Plasma/FeatureLib/pfPython/pyImage.h | 1 + .../FeatureLib/pfPython/pyImageGlue.cpp | 36 +++++++++++++++++++ 3 files changed, 44 insertions(+) diff --git a/Sources/Plasma/FeatureLib/pfPython/pyImage.cpp b/Sources/Plasma/FeatureLib/pfPython/pyImage.cpp index d76c3072..9719ca2a 100644 --- a/Sources/Plasma/FeatureLib/pfPython/pyImage.cpp +++ b/Sources/Plasma/FeatureLib/pfPython/pyImage.cpp @@ -160,6 +160,13 @@ void pyImage::SaveAsJPEG(const wchar* fileName, UInt8 quality) plJPEG::Instance().WriteToFile( fileName, this->GetImage() ); } +#include "plGImage/plPNG.h" +void pyImage::SaveAsPNG(const wchar* fileName) +{ + + plPNG::Instance().WriteToFile( fileName, this->GetImage() ); +} + #include "hsResMgr.h" #include "pnKeyedObject/plUoid.h" PyObject* pyImage::LoadJPEGFromDisk(const wchar* filename, UInt16 width, UInt16 height) diff --git a/Sources/Plasma/FeatureLib/pfPython/pyImage.h b/Sources/Plasma/FeatureLib/pfPython/pyImage.h index d19f7ec0..5c584da6 100644 --- a/Sources/Plasma/FeatureLib/pfPython/pyImage.h +++ b/Sources/Plasma/FeatureLib/pfPython/pyImage.h @@ -150,6 +150,7 @@ public: UInt32 GetWidth(); // returns the width of the image UInt32 GetHeight(); // returns the height of the image void SaveAsJPEG(const wchar* fileName, UInt8 quality = 75); + void SaveAsPNG(const wchar* fileName); static PyObject* LoadJPEGFromDisk(const wchar* filename, UInt16 width, UInt16 height); // returns pyImage #endif }; diff --git a/Sources/Plasma/FeatureLib/pfPython/pyImageGlue.cpp b/Sources/Plasma/FeatureLib/pfPython/pyImageGlue.cpp index bf93fe70..7d5e7a6a 100644 --- a/Sources/Plasma/FeatureLib/pfPython/pyImageGlue.cpp +++ b/Sources/Plasma/FeatureLib/pfPython/pyImageGlue.cpp @@ -158,6 +158,41 @@ PYTHON_METHOD_DEFINITION(ptImage, saveAsJPEG, args) PYTHON_RETURN_ERROR; } } + +PYTHON_METHOD_DEFINITION(ptImage, saveAsPNG, args) +{ + PyObject* filenameObj; + if (!PyArg_ParseTuple(args, "O", &filenameObj)) + { + PyErr_SetString(PyExc_TypeError, "saveAsPNG expects a string"); + PYTHON_RETURN_ERROR; + } + + if (PyUnicode_Check(filenameObj)) + { + int strLen = PyUnicode_GetSize(filenameObj); + wchar_t* text = TRACKED_NEW wchar_t[strLen + 1]; + PyUnicode_AsWideChar((PyUnicodeObject*)filenameObj, text, strLen); + text[strLen] = L'\0'; + self->fThis->SaveAsPNG(text); + delete [] text; + PYTHON_RETURN_NONE; + } + else if (PyString_Check(filenameObj)) + { + // we'll allow this, just in case something goes weird + char* text = PyString_AsString(filenameObj); + wchar_t* wText = hsStringToWString(text); + self->fThis->SaveAsPNG(wText); + delete [] wText; + PYTHON_RETURN_NONE; + } + else + { + PyErr_SetString(PyExc_TypeError, "saveAsPNG expects a string"); + PYTHON_RETURN_ERROR; + } +} #endif // BUILDING_PYPLASMA PYTHON_START_METHODS_TABLE(ptImage) @@ -167,6 +202,7 @@ PYTHON_START_METHODS_TABLE(ptImage) PYTHON_METHOD_NOARGS(ptImage, getWidth, "Returns the width of the image"), PYTHON_METHOD_NOARGS(ptImage, getHeight, "Returns the height of the image"), PYTHON_METHOD(ptImage, saveAsJPEG, "Params: filename,quality=75\nSaves this image to disk as a JPEG file"), + PYTHON_METHOD(ptImage, saveAsPNG, "Params: filename\nSaves this image to disk as a PNG file"), #endif PYTHON_END_METHODS_TABLE; From 3fa99eb67309d7e9ed628f8b0362dfad6fc07e9a Mon Sep 17 00:00:00 2001 From: Joseph Davies Date: Mon, 30 May 2011 16:44:46 -0700 Subject: [PATCH 06/18] Fix for plPNG::IRead not reading final end block of image. --- Sources/Plasma/PubUtilLib/plGImage/plPNG.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/Sources/Plasma/PubUtilLib/plGImage/plPNG.cpp b/Sources/Plasma/PubUtilLib/plGImage/plPNG.cpp index f41e7961..ff7e9026 100644 --- a/Sources/Plasma/PubUtilLib/plGImage/plPNG.cpp +++ b/Sources/Plasma/PubUtilLib/plGImage/plPNG.cpp @@ -143,6 +143,7 @@ plMipmap* plPNG::IRead(hsStream* inStream) } png_read_image(png_ptr, row_ptrs); + png_read_end(png_ptr, end_info); // Clean up allocated structs png_destroy_read_struct(&png_ptr, &info_ptr, &end_info); delete [] row_ptrs; From 090c950c74ce7bd11c30c38697f3aa711ed3f564 Mon Sep 17 00:00:00 2001 From: Joseph Davies Date: Sat, 25 Jun 2011 20:22:53 -0700 Subject: [PATCH 07/18] Fix for plPNG::IRead improperly handling 24-bit RGB and non-transparent paletted images. --- Sources/Plasma/PubUtilLib/plGImage/plPNG.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/Sources/Plasma/PubUtilLib/plGImage/plPNG.cpp b/Sources/Plasma/PubUtilLib/plGImage/plPNG.cpp index ff7e9026..768a7ef7 100644 --- a/Sources/Plasma/PubUtilLib/plGImage/plPNG.cpp +++ b/Sources/Plasma/PubUtilLib/plGImage/plPNG.cpp @@ -127,6 +127,10 @@ plMipmap* plPNG::IRead(hsStream* inStream) if (png_get_valid(png_ptr, info_ptr, PNG_INFO_tRNS)) { png_set_tRNS_to_alpha(png_ptr); channels += 1; + } else if (channels == 3) { + // Add an opaque alpha channel if still none exists + png_set_filler(png_ptr, 0xff, PNG_FILLER_AFTER); + channels = 4; } // Invert color byte-order as used by plMipmap for DirectX From 2d409a27edc439dd82ef72d4128b894e176e21d8 Mon Sep 17 00:00:00 2001 From: Joseph Davies Date: Wed, 1 Jun 2011 12:54:30 -0700 Subject: [PATCH 08/18] Add new plClientResMgr for graphic resources external to client executable. --- Sources/Plasma/PubUtilLib/CMakeLists.txt | 1 + .../PubUtilLib/plClientResMgr/CMakeLists.txt | 17 +++ .../plClientResMgr/plClientResMgr.cpp | 132 ++++++++++++++++++ .../plClientResMgr/plClientResMgr.h | 50 +++++++ 4 files changed, 200 insertions(+) create mode 100644 Sources/Plasma/PubUtilLib/plClientResMgr/CMakeLists.txt create mode 100644 Sources/Plasma/PubUtilLib/plClientResMgr/plClientResMgr.cpp create mode 100644 Sources/Plasma/PubUtilLib/plClientResMgr/plClientResMgr.h diff --git a/Sources/Plasma/PubUtilLib/CMakeLists.txt b/Sources/Plasma/PubUtilLib/CMakeLists.txt index b9f942df..7bea08db 100644 --- a/Sources/Plasma/PubUtilLib/CMakeLists.txt +++ b/Sources/Plasma/PubUtilLib/CMakeLists.txt @@ -6,6 +6,7 @@ add_subdirectory(plAudible) add_subdirectory(plAudio) add_subdirectory(plAudioCore) add_subdirectory(plAvatar) +add_subdirectory(plClientResMgr) add_subdirectory(plCompression) add_subdirectory(plContainer) #add_subdirectory(plDeviceSelector) # Not being used by any current slns diff --git a/Sources/Plasma/PubUtilLib/plClientResMgr/CMakeLists.txt b/Sources/Plasma/PubUtilLib/plClientResMgr/CMakeLists.txt new file mode 100644 index 00000000..c26d7233 --- /dev/null +++ b/Sources/Plasma/PubUtilLib/plClientResMgr/CMakeLists.txt @@ -0,0 +1,17 @@ +include_directories("../../CoreLib") +include_directories("../../NucleusLib/inc") +include_directories("../../NucleusLib") +include_directories("../../PubUtilLib") + +set(plClientResMgr_SOURCES + plClientResMgr.cpp +) + +set(plClientResMgr_HEADERS + plClientResMgr.h +) + +add_library(plClientResMgr STATIC ${plClientResMgr_SOURCES} ${plClientResMgr_HEADERS}) + +source_group("Source Files" FILES ${plClientResMgr_SOURCES}) +source_group("Header Files" FILES ${plClientResMgr_HEADERS}) diff --git a/Sources/Plasma/PubUtilLib/plClientResMgr/plClientResMgr.cpp b/Sources/Plasma/PubUtilLib/plClientResMgr/plClientResMgr.cpp new file mode 100644 index 00000000..2b0b7a0e --- /dev/null +++ b/Sources/Plasma/PubUtilLib/plClientResMgr/plClientResMgr.cpp @@ -0,0 +1,132 @@ +/*==LICENSE==* + +CyanWorlds.com Engine - MMOG client, server and tools +Copyright (C) 2011 Cyan Worlds, Inc. + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . + +You can contact Cyan Worlds, Inc. by email legal@cyan.com + or by snail mail at: + Cyan Worlds, Inc. + 14617 N Newport Hwy + Mead, WA 99021 + +*==LICENSE==*/ + +#include "hsTypes.h" +#include "hsUtils.h" +#include "hsStream.h" +#include "hsResMgr.h" +#include "plJPEG/plJPEG.h" +#include "plGImage/plPNG.h" +#include "plGImage/plMipmap.h" + +#include "plClientResMgr.h" + + +//// Singleton Instance /////////////////////////////////////////////////////// + +plClientResMgr& plClientResMgr::Instance(void) +{ + static plClientResMgr theInstance; + return theInstance; +} + +plClientResMgr::plClientResMgr() +{ + this->ClientResources = TRACKED_NEW std::map; +} + +plClientResMgr::~plClientResMgr() +{ + if (this->ClientResources) { + std::map::iterator it; + + for (it = this->ClientResources->begin(); it != this->ClientResources->end(); ++it) { + it->second->UnRef(); + } + + delete this->ClientResources; + } +} + +void plClientResMgr::ILoadResources(const char* resfile) +{ + if (!resfile) { + return; + } + + wchar* wFilename = hsStringToWString(resfile); + hsUNIXStream in; + + if (in.Open(wFilename, L"rb")) { + UInt32 header = in.ReadSwap32(); + UInt32 version = in.ReadSwap32(); + UInt32 num_resources = 0; + + switch (version) { + case 1: + num_resources = in.ReadSwap32(); + + for (int i = 0; i < num_resources; i++) { + plMipmap* res_data = NULL; + UInt32 res_size = 0; + char* tmp_name = in.ReadSafeStringLong(); + std::string res_name = std::string(tmp_name); + std::string res_type = res_name.substr(res_name.length() - 4, 4); + delete tmp_name; + + // Version 1 doesn't encode format, so we'll try some simple + // extension sniffing + if (res_type == ".png") { + // Read resource stream size, but the PNG has that info in the header + // so it's not needed + res_size = in.ReadSwap32(); + res_data = plPNG::Instance().ReadFromStream(&in); + } else if (res_type == ".jpg") { + // Don't read resource stream size, as plJPEG's reader will need it + res_data = plJPEG::Instance().ReadFromStream(&in); + } else { + // Original Myst5 format only is known to support Targa, + // so default fallback is targa + // TODO - Add plTarga::ReadFromStream() + } + + (*this->ClientResources)[res_name] = res_data; + } + + break; + default: + break; + } + + in.Close(); + } + + delete wFilename; +} + +plMipmap* plClientResMgr::getResource(const char* resname) +{ + plMipmap* resmipmap = NULL; + std::map::iterator it = this->ClientResources->find(resname); + + if (it != this->ClientResources->end()) { + resmipmap = it->second; + } else { + hsAssert(resmipmap, "Unknown client resource requested."); + } + + return resmipmap; +} diff --git a/Sources/Plasma/PubUtilLib/plClientResMgr/plClientResMgr.h b/Sources/Plasma/PubUtilLib/plClientResMgr/plClientResMgr.h new file mode 100644 index 00000000..15e08028 --- /dev/null +++ b/Sources/Plasma/PubUtilLib/plClientResMgr/plClientResMgr.h @@ -0,0 +1,50 @@ +/*==LICENSE==* + +CyanWorlds.com Engine - MMOG client, server and tools +Copyright (C) 2011 Cyan Worlds, Inc. + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . + +You can contact Cyan Worlds, Inc. by email legal@cyan.com + or by snail mail at: + Cyan Worlds, Inc. + 14617 N Newport Hwy + Mead, WA 99021 + +*==LICENSE==*/ + +#ifndef _plClientResMgr_h +#define _plClientResMgr_h + +#include +#include + +class plMipmap; + +class plClientResMgr { +protected: + std::map* ClientResources; + +public: + plClientResMgr(); + ~plClientResMgr(); + + void ILoadResources(const char* resfile); + + plMipmap* getResource(const char* resname); + + static plClientResMgr& Instance(void); +}; + +#endif // _plClientResMgr_ From 1bdbf0a790a89fc52ec175431ff4dfb75e3865eb Mon Sep 17 00:00:00 2001 From: Joseph Davies Date: Thu, 16 Jun 2011 22:05:49 -0700 Subject: [PATCH 09/18] Add functions to load a specified resource from the plClientResMgr onto a plate. --- .../Plasma/PubUtilLib/plPipeline/plPlates.cpp | 29 +++++++++++++++++++ .../Plasma/PubUtilLib/plPipeline/plPlates.h | 2 ++ 2 files changed, 31 insertions(+) diff --git a/Sources/Plasma/PubUtilLib/plPipeline/plPlates.cpp b/Sources/Plasma/PubUtilLib/plPipeline/plPlates.cpp index ce596176..c4952ea0 100644 --- a/Sources/Plasma/PubUtilLib/plPipeline/plPlates.cpp +++ b/Sources/Plasma/PubUtilLib/plPipeline/plPlates.cpp @@ -35,6 +35,7 @@ You can contact Cyan Worlds, Inc. by email legal@cyan.com #include "plPlates.h" #include "plJPEG/plJPEG.h" +#include "plGImage/plPNG.h" #include "plGImage/plMipmap.h" #include "plSurface/plLayer.h" #include "plSurface/hsGMaterial.h" @@ -43,6 +44,7 @@ You can contact Cyan Worlds, Inc. by email legal@cyan.com #include "hsGDeviceRef.h" #include "hsResMgr.h" #include "plPipeDebugFlags.h" +#include "plClientResMgr/plClientResMgr.h" // A bit of a hack so that we will have the correct instance in the SceneViewer @@ -526,6 +528,33 @@ void plPlate::ReloadFromJPEGResource( const char *resName, UInt32 colorKey ) } } +void plPlate::CreateFromResourceDat(const char *resName) +{ + if (resName) + { + plMipmap* resTexture = TRACKED_NEW plMipmap; + resTexture->CopyFrom(plClientResMgr::Instance().getResource(resName)); + + char keyName[128]; + sprintf( keyName, "PlateResource#%d", fMagicUniqueKeyInt++ ); + hsgResMgr::ResMgr()->NewKey(keyName, resTexture, plLocation::kGlobalFixedLoc); + CreateMaterial(resTexture->GetWidth(), resTexture->GetHeight(), true, resTexture); + } + else + { + // Null resource request - Create a blank Material instead + CreateMaterial(32, 32, true); + } +} + +void plPlate::ReloadFromResourceDat(const char *resName) +{ + if (resName) + { + fMipmap->CopyFrom(plClientResMgr::Instance().getResource(resName)); + } +} + //// ILink /////////////////////////////////////////////////////////////////// // Links a plate into a plate list, but also sorts by decreasing depth, // so the plate won't actually necessarily be added after the pointer diff --git a/Sources/Plasma/PubUtilLib/plPipeline/plPlates.h b/Sources/Plasma/PubUtilLib/plPipeline/plPlates.h index 3e0e64e8..cde53ad9 100644 --- a/Sources/Plasma/PubUtilLib/plPipeline/plPlates.h +++ b/Sources/Plasma/PubUtilLib/plPipeline/plPlates.h @@ -131,6 +131,8 @@ class plPlate void ReloadFromResource( const char *resName, UInt32 colorKey = 0x00ff00ff ); void CreateFromJPEGResource( const char *resName, UInt32 colorKey = 0x00ff00ff ); void ReloadFromJPEGResource( const char *resName, UInt32 colorKey = 0x00ff00ff ); + void CreateFromResourceDat( const char *resName ); + void ReloadFromResourceDat( const char *resName ); }; //// plGraphPlate Class Definition /////////////////////////////////////////// From 3027e0605c2c5e509d7e7a46592a61c188955c92 Mon Sep 17 00:00:00 2001 From: Joseph Davies Date: Thu, 16 Jun 2011 22:16:50 -0700 Subject: [PATCH 10/18] Refactor plPlates CreateResource function names. Add support for external resource Cursors. Add support for external resource Progress Linking Book. Add support for external resource Voice Chat indicators. --- Sources/Plasma/Apps/plClient/CMakeLists.txt | 1 + Sources/Plasma/Apps/plClient/winmain.cpp | 4 ++ .../Plasma/PubUtilLib/plAudio/plVoiceChat.cpp | 12 ++--- .../PubUtilLib/plInputCore/plInputDevice.cpp | 8 ++-- .../PubUtilLib/plInputCore/plInputDevice.h | 48 +++++++++---------- .../plInputCore/plInputInterfaceMgr.cpp | 2 +- .../PubUtilLib/plPipeline/plDTProgressMgr.cpp | 6 +-- .../Plasma/PubUtilLib/plPipeline/plPlates.cpp | 8 ++-- .../Plasma/PubUtilLib/plPipeline/plPlates.h | 8 ++-- .../plProgressMgr/plProgressMgr.cpp | 41 ++++++++-------- .../PubUtilLib/plProgressMgr/plProgressMgr.h | 4 +- 11 files changed, 71 insertions(+), 71 deletions(-) diff --git a/Sources/Plasma/Apps/plClient/CMakeLists.txt b/Sources/Plasma/Apps/plClient/CMakeLists.txt index 8398b41e..ca500991 100644 --- a/Sources/Plasma/Apps/plClient/CMakeLists.txt +++ b/Sources/Plasma/Apps/plClient/CMakeLists.txt @@ -123,6 +123,7 @@ target_link_libraries(plClient plAudible) target_link_libraries(plClient plAudio) target_link_libraries(plClient plAudioCore) target_link_libraries(plClient plAvatar) +target_link_libraries(plClient plClientResMgr) #target_link_libraries(plClient plClientKey) target_link_libraries(plClient plCompression) target_link_libraries(plClient plContainer) diff --git a/Sources/Plasma/Apps/plClient/winmain.cpp b/Sources/Plasma/Apps/plClient/winmain.cpp index 6a0799b8..77c052f1 100644 --- a/Sources/Plasma/Apps/plClient/winmain.cpp +++ b/Sources/Plasma/Apps/plClient/winmain.cpp @@ -39,6 +39,7 @@ You can contact Cyan Worlds, Inc. by email legal@cyan.com #include "hsStream.h" #include "hsUtils.h" #include "plClient.h" +#include "plClientResMgr/plClientResMgr.h" #include "plNetClient/plNetClientMgr.h" #include "plNetClient/plNetLinkingMgr.h" #include "plInputCore/plInputManager.h" @@ -754,6 +755,9 @@ bool InitClient( HWND hWnd ) plResManager *resMgr = TRACKED_NEW plResManager; resMgr->SetDataPath("dat"); hsgResMgr::Init(resMgr); + + plClientResMgr::Instance().ILoadResources("resource.dat"); + gClient = TRACKED_NEW plClient; if( gClient == nil ) return false; diff --git a/Sources/Plasma/PubUtilLib/plAudio/plVoiceChat.cpp b/Sources/Plasma/PubUtilLib/plAudio/plVoiceChat.cpp index 3d5f7d15..c99190ef 100644 --- a/Sources/Plasma/PubUtilLib/plAudio/plVoiceChat.cpp +++ b/Sources/Plasma/PubUtilLib/plAudio/plVoiceChat.cpp @@ -50,8 +50,8 @@ You can contact Cyan Worlds, Inc. by email legal@cyan.com #include "plPipeline/plDebugText.h" #include "plStatusLog/plStatusLog.h" -#define MICROPHONE 121 -#define TALKING 122 +#define MICROPHONE "ui_microphone.png" +#define TALKING "ui_speaker.png" #define NUM_CHANNELS 1 #define VOICE_STOP_MS 2000 #define MAX_DATA_SIZE 1024 * 4 // 4 KB @@ -68,13 +68,13 @@ hsBool plVoicePlayer::fEnabled = true; plVoiceRecorder::plVoiceRecorder() { plPlateManager::Instance().CreatePlate( &fDisabledIcon ); - fDisabledIcon->CreateFromResource( MAKEINTRESOURCE( MICROPHONE ) ); + fDisabledIcon->CreateFromResource( MICROPHONE ); fDisabledIcon->SetPosition(-0.90, -0.90); fDisabledIcon->SetSize(0.0675, 0.09); fDisabledIcon->SetVisible(false); plPlateManager::Instance().CreatePlate( &fTalkIcon ); - fTalkIcon->CreateFromResource( MAKEINTRESOURCE( TALKING ) ); + fTalkIcon->CreateFromResource( TALKING ); fTalkIcon->SetPosition(-0.9,-0.9); fTalkIcon->SetSize(0.0675, 0.09); fTalkIcon->SetVisible(false); @@ -192,7 +192,7 @@ void plVoiceRecorder::DrawDisabledIcon(hsBool b) plPlateManager::Instance().CreatePlate( &fDisabledIcon ); if (fDisabledIcon) { - fDisabledIcon->CreateFromResource( MAKEINTRESOURCE( MICROPHONE ) ); + fDisabledIcon->CreateFromResource( MICROPHONE ); fDisabledIcon->SetPosition(-0.90, -0.90); fDisabledIcon->SetSize(0.0675, 0.09); fDisabledIcon->SetVisible(false); @@ -209,7 +209,7 @@ void plVoiceRecorder::DrawTalkIcon(hsBool b) { plPlateManager::Instance().CreatePlate( &fTalkIcon ); if (fTalkIcon) - { fTalkIcon->CreateFromResource( MAKEINTRESOURCE( TALKING ) ); + { fTalkIcon->CreateFromResource( TALKING ); fTalkIcon->SetPosition(-0.9,-0.9); fTalkIcon->SetSize(0.0675, 0.09); fTalkIcon->SetVisible(false); diff --git a/Sources/Plasma/PubUtilLib/plInputCore/plInputDevice.cpp b/Sources/Plasma/PubUtilLib/plInputCore/plInputDevice.cpp index 99bf7c9e..6f467b35 100644 --- a/Sources/Plasma/PubUtilLib/plInputCore/plInputDevice.cpp +++ b/Sources/Plasma/PubUtilLib/plInputCore/plInputDevice.cpp @@ -296,16 +296,16 @@ void plMouseDevice::SetDisplayResolution(hsScalar Width, hsScalar Height) IUpdateCursorSize(); } -void plMouseDevice::CreateCursor( int cursor ) +void plMouseDevice::CreateCursor( char* cursor ) { if( fCursor == nil ) { plPlateManager::Instance().CreatePlate( &fCursor ); - fCursor->CreateFromResource( MAKEINTRESOURCE( cursor ) ); + fCursor->CreateFromResource(cursor); } else { - fCursor->ReloadFromResource( MAKEINTRESOURCE( cursor ) ); + fCursor->ReloadFromResource(cursor); } fCursor->SetPosition( 0, 0, 0 ); IUpdateCursorSize(); @@ -406,7 +406,7 @@ void plMouseDevice::ShowCursor(hsBool override) fInstance->fCursor->SetVisible( true ); } -void plMouseDevice::NewCursor(int cursor) +void plMouseDevice::NewCursor(char* cursor) { fInstance->fCursorID = cursor; fInstance->CreateCursor(cursor); diff --git a/Sources/Plasma/PubUtilLib/plInputCore/plInputDevice.h b/Sources/Plasma/PubUtilLib/plInputCore/plInputDevice.h index 3451ce7b..2197cf8a 100644 --- a/Sources/Plasma/PubUtilLib/plInputCore/plInputDevice.h +++ b/Sources/Plasma/PubUtilLib/plInputCore/plInputDevice.h @@ -118,27 +118,27 @@ public: class plPlate; -#define CURSOR_UP IDB_CURSOR_UP -#define CURSOR_DOWN IDB_CURSOR_DOWN -#define CURSOR_RIGHT IDB_CURSOR_RIGHT -#define CURSOR_LEFT IDB_CURSOR_LEFT -#define CURSOR_OPEN IDB_CURSOR_OPEN -#define CURSOR_GRAB IDB_CURSOR_GRAB -#define CURSOR_CLICKED IDB_CURSOR_CLICKED -#define CURSOR_POISED IDB_CURSOR_POISED -#define CURSOR_ARROW IDB_CURSOR_ARROW -#define CURSOR_4WAY_OPEN IDB_CURSOR_4WAYOPEN -#define CURSOR_4WAY_CLOSED IDB_CURSOR_4WAYCLOSED -#define CURSOR_UPDOWN_CLOSED IDB_CURSOR_UPDOWNCLOSED -#define CURSOR_UPDOWN_OPEN IDB_CURSOR_UPDOWNOPEN -#define CURSOR_LEFTRIGHT_CLOSED IDB_CURSOR_LEFTRIGHTCLOSED -#define CURSOR_LEFTRIGHT_OPEN IDB_CURSOR_LEFTRIGHTOPEN -#define CURSOR_OFFER_BOOK IDB_CURSOR_BOOK -#define CURSOR_OFFER_BOOK_HI IDB_CURSOR_BOOK_HIGHLIGHT -#define CURSOR_OFFER_BOOK_CLICKED IDB_CURSOR_BOOK_CLICKED -#define CURSOR_CLICK_DISABLED IDB_CURSOR_DISABLED -#define CURSOR_HAND IDB_CURSOR_HAND -#define CURSOR_UPWARD IDB_CURSOR_UPWARD +#define CURSOR_UP "cursor_up.png" +#define CURSOR_DOWN "cursor_down.png" +#define CURSOR_RIGHT "cursor_right.png" +#define CURSOR_LEFT "cursor_left.png" +#define CURSOR_OPEN "cursor_open.png" +#define CURSOR_GRAB "cursor_grab.png" +#define CURSOR_CLICKED "cursor_clicked.png" +#define CURSOR_POISED "cursor_poised.png" +#define CURSOR_ARROW "cursor_up.png" +#define CURSOR_4WAY_OPEN "bitmap1.png" +#define CURSOR_4WAY_CLOSED "bitmap3.png" +#define CURSOR_UPDOWN_CLOSED "bmp00001.png" +#define CURSOR_UPDOWN_OPEN "bitmap2.png" +#define CURSOR_LEFTRIGHT_CLOSED "bmp00003.png" +#define CURSOR_LEFTRIGHT_OPEN "bmp00002.png" +#define CURSOR_OFFER_BOOK "book.png" +#define CURSOR_OFFER_BOOK_HI "book_hig.png" +#define CURSOR_OFFER_BOOK_CLICKED "book_cli.png" +#define CURSOR_CLICK_DISABLED "cursor_disabled.png" +#define CURSOR_HAND "cursor_up.png" +#define CURSOR_UPWARD "cursor_upward.png" class plInputEventMsg; @@ -171,7 +171,7 @@ public: static void SetMsgAlways(bool b) { plMouseDevice::bMsgAlways = b; } static void ShowCursor(hsBool override = false); - static void NewCursor(int cursor); + static void NewCursor(char* cursor); static void HideCursor(hsBool override = false); static bool GetHideCursor() { return plMouseDevice::bCursorHidden; } static void SetCursorOpacity( hsScalar opacity = 1.f ); @@ -201,11 +201,11 @@ protected: plPlate *fCursor; - int fCursorID; + char* fCursorID; static plMouseDevice* fInstance; static plMouseInfo fDefaultMouseControlMap[]; - void CreateCursor( int cursor ); + void CreateCursor( char* cursor ); void IUpdateCursorSize(); static bool bMsgAlways; static bool bCursorHidden; diff --git a/Sources/Plasma/PubUtilLib/plInputCore/plInputInterfaceMgr.cpp b/Sources/Plasma/PubUtilLib/plInputCore/plInputInterfaceMgr.cpp index f07e81b4..72e85b6f 100644 --- a/Sources/Plasma/PubUtilLib/plInputCore/plInputInterfaceMgr.cpp +++ b/Sources/Plasma/PubUtilLib/plInputCore/plInputInterfaceMgr.cpp @@ -235,7 +235,7 @@ void plInputInterfaceMgr::ResetClickableState() void plInputInterfaceMgr::IUpdateCursor( Int32 newCursor ) { - int mouseCursorResID; + char* mouseCursorResID; fCurrentCursor = newCursor; diff --git a/Sources/Plasma/PubUtilLib/plPipeline/plDTProgressMgr.cpp b/Sources/Plasma/PubUtilLib/plPipeline/plDTProgressMgr.cpp index d98c3e43..0ee95f9a 100644 --- a/Sources/Plasma/PubUtilLib/plPipeline/plDTProgressMgr.cpp +++ b/Sources/Plasma/PubUtilLib/plPipeline/plDTProgressMgr.cpp @@ -40,8 +40,6 @@ You can contact Cyan Worlds, Inc. by email legal@cyan.com #include "plDebugText.h" #include "plPlates.h" -#include "../../Apps/plClient/res/resource.h" - #include "hsTimer.h" @@ -81,7 +79,7 @@ void plDTProgressMgr::Activate() { plPlateManager::Instance().CreatePlate( &fActivePlate ); - fActivePlate->CreateFromJPEGResource( MAKEINTRESOURCE( plProgressMgr::GetLoadingFrameID(fCurrentImage) ), 0 ); + fActivePlate->CreateFromResource(plProgressMgr::GetLoadingFrameID(fCurrentImage)); fActivePlate->SetVisible(true); fActivePlate->SetOpacity(1.0f); fActivePlate->SetSize(0.6, 0.6, true); @@ -143,7 +141,7 @@ void plDTProgressMgr::Draw( plPipeline *p ) fLastDraw = currentMs; - fActivePlate->ReloadFromJPEGResource(MAKEINTRESOURCE(plProgressMgr::GetInstance()->GetLoadingFrameID(fCurrentImage)), 0); + fActivePlate->ReloadFromResource(plProgressMgr::GetLoadingFrameID(fCurrentImage)); fActivePlate->SetVisible(true); fActivePlate->SetOpacity(1.0f); fActivePlate->SetSize(0.6, 0.6, true); diff --git a/Sources/Plasma/PubUtilLib/plPipeline/plPlates.cpp b/Sources/Plasma/PubUtilLib/plPipeline/plPlates.cpp index c4952ea0..26564ccf 100644 --- a/Sources/Plasma/PubUtilLib/plPipeline/plPlates.cpp +++ b/Sources/Plasma/PubUtilLib/plPipeline/plPlates.cpp @@ -295,7 +295,7 @@ void plPlate::ISetResourceAlphas(UInt32 colorKey) } } -void plPlate::CreateFromResource( const char *resName, UInt32 colorKey ) +void plPlate::CreateFromBMPResource( const char *resName, UInt32 colorKey ) { /* Someday the following might actually work, once we get a plugin that @@ -374,7 +374,7 @@ void plPlate::CreateFromResource( const char *resName, UInt32 colorKey ) //// ReloadFromResource ////////////////////////////////////////////////////// // Creates a plate's material from a resource of the given name. -void plPlate::ReloadFromResource( const char *resName, UInt32 colorKey ) +void plPlate::ReloadFromBMPResource( const char *resName, UInt32 colorKey ) { UInt32 width, height; @@ -528,7 +528,7 @@ void plPlate::ReloadFromJPEGResource( const char *resName, UInt32 colorKey ) } } -void plPlate::CreateFromResourceDat(const char *resName) +void plPlate::CreateFromResource(const char *resName) { if (resName) { @@ -547,7 +547,7 @@ void plPlate::CreateFromResourceDat(const char *resName) } } -void plPlate::ReloadFromResourceDat(const char *resName) +void plPlate::ReloadFromResource(const char *resName) { if (resName) { diff --git a/Sources/Plasma/PubUtilLib/plPipeline/plPlates.h b/Sources/Plasma/PubUtilLib/plPipeline/plPlates.h index cde53ad9..9e165a87 100644 --- a/Sources/Plasma/PubUtilLib/plPipeline/plPlates.h +++ b/Sources/Plasma/PubUtilLib/plPipeline/plPlates.h @@ -127,12 +127,12 @@ class plPlate void SetSize( hsScalar width, hsScalar height, bool adjustByAspectRatio = false ); plMipmap *CreateMaterial( UInt32 width, UInt32 height, hsBool withAlpha, plMipmap* texture = NULL ); - void CreateFromResource( const char *resName, UInt32 colorKey = 0x00ff00ff ); - void ReloadFromResource( const char *resName, UInt32 colorKey = 0x00ff00ff ); + void CreateFromBMPResource( const char *resName, UInt32 colorKey = 0x00ff00ff ); + void ReloadFromBMPResource( const char *resName, UInt32 colorKey = 0x00ff00ff ); void CreateFromJPEGResource( const char *resName, UInt32 colorKey = 0x00ff00ff ); void ReloadFromJPEGResource( const char *resName, UInt32 colorKey = 0x00ff00ff ); - void CreateFromResourceDat( const char *resName ); - void ReloadFromResourceDat( const char *resName ); + void CreateFromResource( const char *resName ); + void ReloadFromResource( const char *resName ); }; //// plGraphPlate Class Definition /////////////////////////////////////////// diff --git a/Sources/Plasma/PubUtilLib/plProgressMgr/plProgressMgr.cpp b/Sources/Plasma/PubUtilLib/plProgressMgr/plProgressMgr.cpp index eba00d78..0027509a 100644 --- a/Sources/Plasma/PubUtilLib/plProgressMgr/plProgressMgr.cpp +++ b/Sources/Plasma/PubUtilLib/plProgressMgr/plProgressMgr.cpp @@ -50,26 +50,10 @@ You can contact Cyan Worlds, Inc. by email legal@cyan.com plProgressMgr *plProgressMgr::fManager = nil; -int plProgressMgr::fImageRotation[] = { - IDR_LOADING_01, - IDR_LOADING_18, - IDR_LOADING_17, - IDR_LOADING_16, - IDR_LOADING_15, - IDR_LOADING_14, - IDR_LOADING_13, - IDR_LOADING_12, - IDR_LOADING_11, - IDR_LOADING_10, - IDR_LOADING_09, - IDR_LOADING_08, - IDR_LOADING_07, - IDR_LOADING_06, - IDR_LOADING_05, - IDR_LOADING_04, - IDR_LOADING_03, - IDR_LOADING_02 -}; +#define LOADING_RES "xLoading_Linking.%02d.png" +#define LOADING_RES_COUNT 18 + +char* plProgressMgr::fImageRotation[LOADING_RES_COUNT]; int plProgressMgr::fStaticTextIDs[] = { 0, @@ -84,10 +68,23 @@ plProgressMgr::plProgressMgr() fManager = this; fCallbackProc = nil; fCurrentStaticText = kNone; + + // Fill array with pre-computed loading frame IDs + for (int i=0; i < LOADING_RES_COUNT; i++) + { + char* frameID = TRACKED_NEW char[128]; + sprintf(frameID, LOADING_RES, i); + fImageRotation[i] = frameID; + } } plProgressMgr::~plProgressMgr() { + for (int i=0; i < LOADING_RES_COUNT; i++) + { + delete fImageRotation[i]; + } + while( fOperations != nil ) delete fOperations; fManager = nil; @@ -229,9 +226,9 @@ void plProgressMgr::CancelAllOps( void ) fCurrentStaticText = kNone; } -int plProgressMgr::GetLoadingFrameID(int index) +char* plProgressMgr::GetLoadingFrameID(int index) { - if (index < (sizeof(fImageRotation) / sizeof(int))) + if (index < LOADING_RES_COUNT) return fImageRotation[index]; else return fImageRotation[0]; diff --git a/Sources/Plasma/PubUtilLib/plProgressMgr/plProgressMgr.h b/Sources/Plasma/PubUtilLib/plProgressMgr/plProgressMgr.h index 34d526e0..e54e8c97 100644 --- a/Sources/Plasma/PubUtilLib/plProgressMgr/plProgressMgr.h +++ b/Sources/Plasma/PubUtilLib/plProgressMgr/plProgressMgr.h @@ -180,7 +180,7 @@ class plProgressMgr private: static plProgressMgr *fManager; - static int fImageRotation[]; + static char* fImageRotation[]; static int fStaticTextIDs[]; protected: @@ -213,7 +213,7 @@ class plProgressMgr virtual ~plProgressMgr(); static plProgressMgr* GetInstance() { return fManager; } - static int GetLoadingFrameID(int index); + static char* GetLoadingFrameID(int index); static int GetStaticTextID(StaticText staticTextType); virtual void Draw( plPipeline *p ) { } From b4422d2e95a9a7c529c384d185104b4086469f29 Mon Sep 17 00:00:00 2001 From: Joseph Davies Date: Thu, 16 Jun 2011 22:23:34 -0700 Subject: [PATCH 11/18] Remove unnecessary resources. --- .../Plasma/Apps/plClient/res/Microphone.bmp | Bin 630 -> 0 bytes Sources/Plasma/Apps/plClient/res/Speaker.bmp | Bin 630 -> 0 bytes Sources/Plasma/Apps/plClient/res/bitmap1.bmp | Bin 630 -> 0 bytes Sources/Plasma/Apps/plClient/res/bitmap2.bmp | Bin 630 -> 0 bytes Sources/Plasma/Apps/plClient/res/bitmap3.bmp | Bin 630 -> 0 bytes Sources/Plasma/Apps/plClient/res/bmp00001.bmp | Bin 630 -> 0 bytes Sources/Plasma/Apps/plClient/res/bmp00002.bmp | Bin 630 -> 0 bytes Sources/Plasma/Apps/plClient/res/bmp00003.bmp | Bin 630 -> 0 bytes Sources/Plasma/Apps/plClient/res/bmp00004.bmp | Bin 2166 -> 0 bytes Sources/Plasma/Apps/plClient/res/bmp00005.bmp | Bin 630 -> 0 bytes Sources/Plasma/Apps/plClient/res/book.bmp | Bin 630 -> 0 bytes Sources/Plasma/Apps/plClient/res/book_cli.bmp | Bin 630 -> 0 bytes Sources/Plasma/Apps/plClient/res/book_hig.bmp | Bin 630 -> 0 bytes .../Apps/plClient/res/cursor_clicked.bmp | Bin 630 -> 0 bytes .../Apps/plClient/res/cursor_disabled.bmp | Bin 630 -> 0 bytes .../Plasma/Apps/plClient/res/cursor_down.bmp | Bin 630 -> 0 bytes .../Plasma/Apps/plClient/res/cursor_grab.bmp | Bin 630 -> 0 bytes .../Plasma/Apps/plClient/res/cursor_left.bmp | Bin 630 -> 0 bytes .../Plasma/Apps/plClient/res/cursor_open.bmp | Bin 630 -> 0 bytes .../Apps/plClient/res/cursor_poised.bmp | Bin 630 -> 0 bytes .../Plasma/Apps/plClient/res/cursor_right.bmp | Bin 630 -> 0 bytes Sources/Plasma/Apps/plClient/res/cursor_u.bmp | Bin 2102 -> 0 bytes .../Plasma/Apps/plClient/res/cursor_up.bmp | Bin 2102 -> 0 bytes .../Apps/plClient/res/cursor_upward.bmp | Bin 630 -> 0 bytes Sources/Plasma/Apps/plClient/res/plClient.rc | 49 ------------------ Sources/Plasma/Apps/plClient/res/resource.h | 41 --------------- .../Apps/plClient/res/xLoading_Linking.01.jpg | Bin 6506 -> 0 bytes .../Apps/plClient/res/xLoading_Linking.02.jpg | Bin 6493 -> 0 bytes .../Apps/plClient/res/xLoading_Linking.03.jpg | Bin 6464 -> 0 bytes .../Apps/plClient/res/xLoading_Linking.04.jpg | Bin 6515 -> 0 bytes .../Apps/plClient/res/xLoading_Linking.05.jpg | Bin 6437 -> 0 bytes .../Apps/plClient/res/xLoading_Linking.06.jpg | Bin 6566 -> 0 bytes .../Apps/plClient/res/xLoading_Linking.07.jpg | Bin 6414 -> 0 bytes .../Apps/plClient/res/xLoading_Linking.08.jpg | Bin 6526 -> 0 bytes .../Apps/plClient/res/xLoading_Linking.09.jpg | Bin 6440 -> 0 bytes .../Apps/plClient/res/xLoading_Linking.10.jpg | Bin 6501 -> 0 bytes .../Apps/plClient/res/xLoading_Linking.11.jpg | Bin 6450 -> 0 bytes .../Apps/plClient/res/xLoading_Linking.12.jpg | Bin 6510 -> 0 bytes .../Apps/plClient/res/xLoading_Linking.13.jpg | Bin 6393 -> 0 bytes .../Apps/plClient/res/xLoading_Linking.14.jpg | Bin 6547 -> 0 bytes .../Apps/plClient/res/xLoading_Linking.15.jpg | Bin 6432 -> 0 bytes .../Apps/plClient/res/xLoading_Linking.16.jpg | Bin 6495 -> 0 bytes .../Apps/plClient/res/xLoading_Linking.17.jpg | Bin 6466 -> 0 bytes .../Apps/plClient/res/xLoading_Linking.18.jpg | Bin 6519 -> 0 bytes 44 files changed, 90 deletions(-) delete mode 100644 Sources/Plasma/Apps/plClient/res/Microphone.bmp delete mode 100644 Sources/Plasma/Apps/plClient/res/Speaker.bmp delete mode 100644 Sources/Plasma/Apps/plClient/res/bitmap1.bmp delete mode 100644 Sources/Plasma/Apps/plClient/res/bitmap2.bmp delete mode 100644 Sources/Plasma/Apps/plClient/res/bitmap3.bmp delete mode 100644 Sources/Plasma/Apps/plClient/res/bmp00001.bmp delete mode 100644 Sources/Plasma/Apps/plClient/res/bmp00002.bmp delete mode 100644 Sources/Plasma/Apps/plClient/res/bmp00003.bmp delete mode 100644 Sources/Plasma/Apps/plClient/res/bmp00004.bmp delete mode 100644 Sources/Plasma/Apps/plClient/res/bmp00005.bmp delete mode 100644 Sources/Plasma/Apps/plClient/res/book.bmp delete mode 100644 Sources/Plasma/Apps/plClient/res/book_cli.bmp delete mode 100644 Sources/Plasma/Apps/plClient/res/book_hig.bmp delete mode 100644 Sources/Plasma/Apps/plClient/res/cursor_clicked.bmp delete mode 100644 Sources/Plasma/Apps/plClient/res/cursor_disabled.bmp delete mode 100644 Sources/Plasma/Apps/plClient/res/cursor_down.bmp delete mode 100644 Sources/Plasma/Apps/plClient/res/cursor_grab.bmp delete mode 100644 Sources/Plasma/Apps/plClient/res/cursor_left.bmp delete mode 100644 Sources/Plasma/Apps/plClient/res/cursor_open.bmp delete mode 100644 Sources/Plasma/Apps/plClient/res/cursor_poised.bmp delete mode 100644 Sources/Plasma/Apps/plClient/res/cursor_right.bmp delete mode 100644 Sources/Plasma/Apps/plClient/res/cursor_u.bmp delete mode 100644 Sources/Plasma/Apps/plClient/res/cursor_up.bmp delete mode 100644 Sources/Plasma/Apps/plClient/res/cursor_upward.bmp delete mode 100644 Sources/Plasma/Apps/plClient/res/xLoading_Linking.01.jpg delete mode 100644 Sources/Plasma/Apps/plClient/res/xLoading_Linking.02.jpg delete mode 100644 Sources/Plasma/Apps/plClient/res/xLoading_Linking.03.jpg delete mode 100644 Sources/Plasma/Apps/plClient/res/xLoading_Linking.04.jpg delete mode 100644 Sources/Plasma/Apps/plClient/res/xLoading_Linking.05.jpg delete mode 100644 Sources/Plasma/Apps/plClient/res/xLoading_Linking.06.jpg delete mode 100644 Sources/Plasma/Apps/plClient/res/xLoading_Linking.07.jpg delete mode 100644 Sources/Plasma/Apps/plClient/res/xLoading_Linking.08.jpg delete mode 100644 Sources/Plasma/Apps/plClient/res/xLoading_Linking.09.jpg delete mode 100644 Sources/Plasma/Apps/plClient/res/xLoading_Linking.10.jpg delete mode 100644 Sources/Plasma/Apps/plClient/res/xLoading_Linking.11.jpg delete mode 100644 Sources/Plasma/Apps/plClient/res/xLoading_Linking.12.jpg delete mode 100644 Sources/Plasma/Apps/plClient/res/xLoading_Linking.13.jpg delete mode 100644 Sources/Plasma/Apps/plClient/res/xLoading_Linking.14.jpg delete mode 100644 Sources/Plasma/Apps/plClient/res/xLoading_Linking.15.jpg delete mode 100644 Sources/Plasma/Apps/plClient/res/xLoading_Linking.16.jpg delete mode 100644 Sources/Plasma/Apps/plClient/res/xLoading_Linking.17.jpg delete mode 100644 Sources/Plasma/Apps/plClient/res/xLoading_Linking.18.jpg diff --git a/Sources/Plasma/Apps/plClient/res/Microphone.bmp b/Sources/Plasma/Apps/plClient/res/Microphone.bmp deleted file mode 100644 index c1e2ad0068272a7921dcedb042f492ae6a83a94e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 630 zcmZuvOKa3n6h4|UF^#B25kwGO_*@N~%#3wr5lqYw#f{bn#q)6H^eKp+FT>Fzhv6w%gtl!#x4Q~6 zXMe%5lgluB!UX&unlS(~|5oZEY9|o>Nr3XX>Fy1oWCY4R#1vZ(l?kB%H&LgGiPwy@ zNCXcAq;Pu!LvUZ~0#a8;$uSMZf2;yx;b@yN3bwJz_B&WT*%_p`0^L5_}u#8p_m;H@`DV7P2p?UfHcIJ${|%m#9b5_mU2p zykc+W`42TFup#M(YQ52;)jYrAQ9t}375$@*|MMG+C3V$g+fi))!(eo zTTg~E8e(2t7~+7f_zbW)*+xTi(Sby$JD3U@JQH2Jh@Z+0)ZuoB8)$)C$SdH$i&1|F V`@3|CzoAZxQ)^k}vi?mL{%@=Ju0;R< diff --git a/Sources/Plasma/Apps/plClient/res/Speaker.bmp b/Sources/Plasma/Apps/plClient/res/Speaker.bmp deleted file mode 100644 index 1b49e354c1087ebbccf3490e2d9470838d04f91e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 630 zcmZvYL1+^}6oy~dwszgw89}H=;~YX7gciKnTg}CT=%G>%3Z7DHj1&(^%vDTUr64^- zcWY}-E7@q-lMpw--Xz#0dlRXlb5W4S&EQGfH0x{{i3i{C-n{R<`3K&cxtx%oX9*EQ z!UKIDf?<&f>-Udf5IxTW|G=G-FkZd~j~cr$eIpH5?ytha$|jt>Fbn4{-G=e-42+$k zK+c?pp%Dbb%4wkgHUIBHBLFVLm`nXiKs4Ph0P8bn`14COh6(Q#CNZ=+vRnQQq^EE= z;#hX;dkyd(OsZIGHszLP8n>{|4(V*QDo7T>Ze(RGymExDW+jsx&=i8uZH<~gNq_1@6BfCDv^6b-G7?L1lIeGH)-`y fL(p4vT?Hy>-h(2f?vI?(>oQLK(6;tPzMuX9aMfi; diff --git a/Sources/Plasma/Apps/plClient/res/bitmap2.bmp b/Sources/Plasma/Apps/plClient/res/bitmap2.bmp deleted file mode 100644 index 4b34da1a30e3f54fc6bf413d2f8798a0ea946c83..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 630 zcmaJ;u@S={3{-NtGo3R+O3#r#ySQ=-rN&|;cP`}@hZFd7ED-z)Sv>Olv)rZFf^~ww zs^8=R1gqx`pVb|Uq%tKXM{o>)oHKThSeatx2#(<)U(PM0KF(aVKPMhky8_G=))%;D zgW23<1Sq%Wf^idx>n|bBaT^dj%>4W2tu~siSDf;>9^c1$g!CRd{_fll?iX|6_A%%G I#r&&e2ic!fzW@LL diff --git a/Sources/Plasma/Apps/plClient/res/bitmap3.bmp b/Sources/Plasma/Apps/plClient/res/bitmap3.bmp deleted file mode 100644 index 048af6fd3260590e1e55add0099d0c86f812d52a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 630 zcmZ`$I}(C05Pdq%kPeSv={fAZ3l&3`be3F+Bhkg~`4%!xvgjro_RHJP<2jzO(Wv(> zz7;; zOq?2acA!UV`|cha+&3$AS}E=k9CVgt;ny>$(*XAf4o~^AZE5QBw(W~$JdN0;{ VkYlFx(t2vWP5NQlFYV_?(HjqtV>kc+ diff --git a/Sources/Plasma/Apps/plClient/res/bmp00002.bmp b/Sources/Plasma/Apps/plClient/res/bmp00002.bmp deleted file mode 100644 index 834ed5c63a9786d11eb2534db78057cd99086feb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 630 zcmdT68Yn4VX!h42n_;vz%xH5mF>WmZrbJ9I?GMn%H^R%Sg6VARqj-kQ{l- rb*^w3$sM8d0jI%|^%8NYb{p$)|JQvq@O&@n`i9SbXbt`LZNHcvYZg>T diff --git a/Sources/Plasma/Apps/plClient/res/bmp00003.bmp b/Sources/Plasma/Apps/plClient/res/bmp00003.bmp deleted file mode 100644 index 51b55ecb6c281e17b7c193a91f5d13e8737c64e7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 630 zcmdT=F%kkH5Q~m8M|VEK(s$VV7pfaOwzKq0Jn1^@VitEsj~D1dAY>N^T&~L=Jr<2; z;S|{6Af|}C(__FnV7*p}&{@La&g}3Z55sT!`?|vg8RPMB26uvjD6gF^hzbpQtc|{}zHbMetX% zD55iE^67+oXLKW+EzaivWOU9N*HArxXJcF8;G5DVI`fB63A$nPRiWyu-4Vqq12)m4 zi4yox?!`_BTpHz;4L~qw7ZXbM7z(SI4yR!BRdnp;(Lv8N-8?8{Yqdy~(augzU`{}s z@Y<#XUd||tPUU!SKF8NELANHs}J0Z9S)hRN*mwCpb9SMJAZJR|4ztAPd3V9ma8ZwBOqh Bs@4Di diff --git a/Sources/Plasma/Apps/plClient/res/bmp00005.bmp b/Sources/Plasma/Apps/plClient/res/bmp00005.bmp deleted file mode 100644 index 28c52b980439c3492ef1e3fce9d8fd20e92c5fac..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 630 zcmd6jI}!sS2!=@}GhQQQ&XGQMv0Ck*bC2b%D9P`-v#?2@3CiOGWYp(txzZ*J>;rn= z^+Gp9ki9-3S|P$Fk?CL&Qtusp6l~jMHX<^gi_ZtI?BckNZr~J?14Xq$g|42IpR5^TLf$DX5m@4|$#pkxaR%9XeUEU3o_OXdD{LMfH1s;a?`Kff@_ z1h3W+;U(wN0SlM@Eo{Z0>)!Xz@HXcJsFt_X8#YDcH2*6H}i;&KXKgDcO%E}?3X*iWo2$- PBa08VP5YA~0{P}2awn%( diff --git a/Sources/Plasma/Apps/plClient/res/book_cli.bmp b/Sources/Plasma/Apps/plClient/res/book_cli.bmp deleted file mode 100644 index 150c1e2ff01d08cfc3f87eb421920bf74537bc6d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 630 zcmbu6F%H5o3`Gq>YB#RH$T`@#3lqvxC0nvoxl(V@E)mB_7i7NOmb6F=2sd`}?Bv%` zF4y~>)b5C9_-XbX9k7DU^$FI|5n+&X(}aj6bzO&93ao>eWd+A4DTMUZ2Fs=`RUoq| z>~ovM7mE$Z7Pf(TjLlL`+%xCLv+x6YYyPNzp0}!B^m_fj$^~g_fEao+522hQ<*Ufu+c THFL;~G~U}V^-qdO%rE}}gx07G diff --git a/Sources/Plasma/Apps/plClient/res/book_hig.bmp b/Sources/Plasma/Apps/plClient/res/book_hig.bmp deleted file mode 100644 index a0c29ab5d0767bc98980954d2255d02991c55fa7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 630 zcmbu6F%H5o3`Gq>YB#RH$T`@#3lqvxIa{(+xl(V@E)mCQ7i7NOmbOR?2sd`}>^S{V zF4y~>%zm-QCXRij!ds4`elkR2difXbXQ!tC diff --git a/Sources/Plasma/Apps/plClient/res/cursor_clicked.bmp b/Sources/Plasma/Apps/plClient/res/cursor_clicked.bmp deleted file mode 100644 index 0ba268a916c640145d84e4183c54f770f4373dae..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 630 zcmdTe){^T(XeZ^2_n<$3u-|=H!_jJX8SVVz Xuk6YFt#|wVef~YK2Tt#$i?#zJx2Egm#w M`n>WyzisV-J{;F>`2YX_ diff --git a/Sources/Plasma/Apps/plClient/res/cursor_down.bmp b/Sources/Plasma/Apps/plClient/res/cursor_down.bmp deleted file mode 100644 index 32dccd994aa2d41e2c712a96c0261b354b943570..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 630 zcmc&vu@S={3{-r%gN}@lGIONQF0Op;V1um0Na>R9^WrEZ&MsV8@bHp=f1a;pk`@cs z2XXJX$d!!I`$}&e%0)_>Qi?KygQV8VT`Oo)0A&P+mUP*UF#CG?_&k4I9)V&D32+zQ wz|Z!vW-A?eS+N@du!bn-1QXq4Bba$O7>7;E2p-MH_eQ@@BONWJgM#im@A}DK-{Zw z#s0YrW>e=#=-dz!GHxQv8Vq<^wgJ8n^Z4$sHkz$RoZfRjuE+gwztKn7kN?s>94V5+3$7tx9=52KFGCAeGZ4#4m3%!23T_JC|A dq;Kk=Nga?>Yx^c~*)i>JLV$3BZEdGlDOgjJZVCJq#4N>fU?-sU|jX08|7 zx!Dc}GNPRaJv9psq3mm2qsBNiCq<`3nI!0rb=3V5l+NEjE;0J@fM~6gnZAzhvKMRA+7}f Y_^V9b<+s_KxA)oitREP^myZwj6SQ_dp#T5? diff --git a/Sources/Plasma/Apps/plClient/res/cursor_right.bmp b/Sources/Plasma/Apps/plClient/res/cursor_right.bmp deleted file mode 100644 index 4b186b8db38b61aa0b9cabfcc0c9f1bfa2341681..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 630 zcmdT=I~Id53=_P*2U~lDjy*?r?!v^1H^yEmN9vZ*l}!2y8JLS>IkNMylIJkB2%8um z#J!-wg^X6#MQ;V-fQ7?MjNl+iDREZC!{IJQaHynk3hUg*pHSw k=H`wy8IQ)J*Pt{X<@J7`x(}%O@xS+a)}|Z1q2o`(2Zf_W8vpgh>Hu;(wqpmFmrU@A_bn=~PL4$(HLsNpX-RZ&KR zDGEVCniL!fA=BS`2d=v$RTbU4x4Z9~H}m~=-tK&{GgdoxM$%jEUO$ajdJ3Tb`B+N) zwOp<*oVnF%wbJUxO1IxXYcv{ZJRWOvb5mPeTbfKJnog(M-rm-1Hq-w8z7~sx=JUCB zcXzdXm)hG)ebBk`XXxAcFP&ds>;0Fn7#YJEg%Rtip&6Q?S=DmA#L*qy(H-5xi>G8ha7gTY{ENH7=-27|$1Ff>dU z3T8J5b?WSk+pMcY zS}-Uu6}$_VMrJfhJ=CA40IS0hJ+yjNc@9hNn*0dso~5W zj%>B-8rK_r(!s%j4i67?babTS<71tjo$2)SR2LT)y1cy9)zy`5Zfy zKAxQL9WUu_{RZlVdTmzg)@kbTFOIGoPU?mibQ>Fk1-kxlEj*Ntb2pIw*gb5#6bG&! wpL~w~1<&!m{@~NRh@*pejW) zwcJFN3WEs9LMjX?Cf}~?gn(j^-Y3oO?SH%Te>;2E>z_8HT&FdWH{88?j01Umfd2bB z;4VkGMk4%WG}?Bw+{$=7mhtzo+<*HdwOUOYjfOOvO=-8=(&==h+wIEn@v)qooXEw+ zh4lM<>GgVYc6KJCw;|`}A@5}>@x$fobScxjJ9+o{3r0#9kqF-o6;06;O|ur;DTZ$7 zhHmJFo|h%`gq|2A^n^|)j_&A=?g)+^jDvA_aaLNzUrD4aQVA*cGzx>lpfD&51qlX) zL19oB6o!HcgTkONC=3ciL5D$MP#6>jg+T)i4uwNAM?|Rr3Vr@1!U^=eWmpVz!^lW# zu#__J(6}*J43<(BI1CPh!{9JDN~z#57z_r3A(zhJFc=I5$17+{3Gvzf7?<+q>Oh5e zVpb_N-U+6JX~H1El<-bGOe9HoC%nsX6mN9=6aESRd_)QVL~Rlb35G-+^085svU?PI z+I)=E!0~g~91h2?9Bt;H1`da34mMVfn?(+b!{R_VhUFE2#aZY~as-EkKS3VO#9{GV zkHV7QhI|TWFa!(%L%L%whZHYCSXiaJh-tED!%NXcU Vr>geUH*fFR^Lg6;OaG?=zW|a2;Uxe7 diff --git a/Sources/Plasma/Apps/plClient/res/cursor_upward.bmp b/Sources/Plasma/Apps/plClient/res/cursor_upward.bmp deleted file mode 100644 index 7dac47457eb48dd93ba75371886244e6cf7b7167..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 630 zcmdT=F%rTc5L_K+k`A9>={xNGi&a|aQu-yHWEZ=2kAdXE*jT!-up9^Mal21P6igbg z;-&I{lax^RO`a=F1F3YRWJ*+%$T@4a2ulZPN>sCu4S#`wd^n?{oHK2KumJJ3t)r3$ z#TrVPuGU}I{eAs=y&rUbn~ye+2{5kUGCO;~lYFn65`lE(>F}<6B}7-P9Spm4{f2(z FD?aCPMQ;EA diff --git a/Sources/Plasma/Apps/plClient/res/plClient.rc b/Sources/Plasma/Apps/plClient/res/plClient.rc index fcc40005..abda8c40 100644 --- a/Sources/Plasma/Apps/plClient/res/plClient.rc +++ b/Sources/Plasma/Apps/plClient/res/plClient.rc @@ -40,29 +40,6 @@ END // Bitmap // -IDB_CURSOR_UP BITMAP "cursor_up.bmp" -IDB_CURSOR_DOWN BITMAP "cursor_down.bmp" -IDB_CURSOR_LEFT BITMAP "cursor_right.bmp" -IDB_CURSOR_RIGHT BITMAP "cursor_left.bmp" -IDB_CURSOR_OPEN BITMAP "cursor_open.bmp" -IDB_CURSOR_GRAB BITMAP "cursor_grab.bmp" -IDB_CURSOR_CLICKED BITMAP "cursor_clicked.bmp" -IDB_CURSOR_POISED BITMAP "cursor_poised.bmp" -IDB_CURSOR_ARROW BITMAP "cursor_u.bmp" -IDB_CURSOR_4WAYOPEN BITMAP "bitmap1.bmp" -IDB_CURSOR_UPDOWNCLOSED BITMAP "bmp00001.bmp" -IDB_CURSOR_UPDOWNOPEN BITMAP "bitmap2.bmp" -IDB_CURSOR_4WAYCLOSED BITMAP "bitmap3.bmp" -IDB_CURSOR_LEFTRIGHTCLOSED BITMAP "bmp00003.bmp" -IDB_CURSOR_LEFTRIGHTOPEN BITMAP "bmp00002.bmp" -IDB_MICROPHONE BITMAP "Microphone.bmp" -IDB_TALKING BITMAP "Speaker.bmp" -IDB_CURSOR_BOOK_HIGHLIGHT BITMAP "book_hig.bmp" -IDB_CURSOR_BOOK BITMAP "book.bmp" -IDB_CURSOR_BOOK_CLICKED BITMAP "book_cli.bmp" -IDB_CURSOR_DISABLED BITMAP "cursor_disabled.bmp" -IDB_CURSOR_HAND BITMAP "bmp00005.bmp" -IDB_CURSOR_UPWARD BITMAP "cursor_upward.bmp" IDB_BANNER BITMAP "banner.bmp" ///////////////////////////////////////////////////////////////////////////// @@ -303,32 +280,6 @@ END // IDR_CNSL1 CNSL "cnsl1.bin" - -///////////////////////////////////////////////////////////////////////////// -// -// JPEG -// - -IDR_LOADING_01 JPEG "xLoading_Linking.01.jpg" -IDR_LOADING_02 JPEG "xLoading_Linking.02.jpg" -IDR_LOADING_03 JPEG "xLoading_Linking.03.jpg" -IDR_LOADING_04 JPEG "xLoading_Linking.04.jpg" -IDR_LOADING_05 JPEG "xLoading_Linking.05.jpg" -IDR_LOADING_06 JPEG "xLoading_Linking.06.jpg" -IDR_LOADING_07 JPEG "xLoading_Linking.07.jpg" -IDR_LOADING_08 JPEG "xLoading_Linking.08.jpg" -IDR_LOADING_09 JPEG "xLoading_Linking.09.jpg" -IDR_LOADING_10 JPEG "xLoading_Linking.10.jpg" -IDR_LOADING_11 JPEG "xLoading_Linking.11.jpg" -IDR_LOADING_12 JPEG "xLoading_Linking.12.jpg" -IDR_LOADING_13 JPEG "xLoading_Linking.13.jpg" -IDR_LOADING_14 JPEG "xLoading_Linking.14.jpg" -IDR_LOADING_15 JPEG "xLoading_Linking.15.jpg" -IDR_LOADING_16 JPEG "xLoading_Linking.16.jpg" -IDR_LOADING_17 JPEG "xLoading_Linking.17.jpg" -IDR_LOADING_18 JPEG "xLoading_Linking.18.jpg" -IDR_LOADING_LINKTEXT JPEG "xLoading_Linking_Text.jpg" -IDR_LOADING_UPDATETEXT JPEG "xLoading_Updating_Text.jpg" #endif // English (U.S.) resources ///////////////////////////////////////////////////////////////////////////// diff --git a/Sources/Plasma/Apps/plClient/res/resource.h b/Sources/Plasma/Apps/plClient/res/resource.h index fa14a614..112ad248 100644 --- a/Sources/Plasma/Apps/plClient/res/resource.h +++ b/Sources/Plasma/Apps/plClient/res/resource.h @@ -2,33 +2,10 @@ // Microsoft Visual C++ generated include file. // Used by plClient.rc // -#define IDB_CURSOR_UP 112 -#define IDB_CURSOR_DOWN 113 -#define IDB_CURSOR_RIGHT 114 -#define IDB_CURSOR_LEFT 115 -#define IDB_CURSOR_OPEN 116 -#define IDB_CURSOR_GRAB 117 -#define IDB_CURSOR_CLICKED 118 -#define IDB_CURSOR_POISED 119 -#define IDB_MICROPHONE 121 -#define IDB_TALKING 122 -#define IDB_CURSOR_ARROW 123 -#define IDB_CURSOR_4WAYOPEN 124 -#define IDB_CURSOR_UPDOWNCLOSED 125 -#define IDB_CURSOR_UPDOWNOPEN 126 -#define IDB_CURSOR_4WAYCLOSED 127 -#define IDB_CURSOR_LEFTRIGHTCLOSED 128 -#define IDB_CURSOR_LEFTRIGHTOPEN 129 #define IDI_ICON_DIRT 135 #define IDD_LOADING 136 #define IDD_EXCEPTION 138 #define IDR_CNSL1 139 -#define IDB_CURSOR_BOOK_HIGHLIGHT 141 -#define IDB_CURSOR_BOOK 142 -#define IDB_CURSOR_BOOK_CLICKED 143 -#define IDB_CURSOR_DISABLED 144 -#define IDB_CURSOR_HAND 145 -#define IDB_CURSOR_UPWARD 147 #define IDD_URUTAP_LOGIN 148 #define IDD_URU_LOGIN 149 #define IDB_BANNER 151 @@ -37,24 +14,6 @@ #define IDD_URULOGIN_EULA 154 #define IDD_AUTHFAILED 155 #define IDD_AUTHENTICATING 156 -#define IDR_LOADING_01 177 -#define IDR_LOADING_02 178 -#define IDR_LOADING_03 179 -#define IDR_LOADING_04 180 -#define IDR_LOADING_05 181 -#define IDR_LOADING_06 182 -#define IDR_LOADING_07 183 -#define IDR_LOADING_08 184 -#define IDR_LOADING_09 185 -#define IDR_LOADING_10 186 -#define IDR_LOADING_11 187 -#define IDR_LOADING_12 188 -#define IDR_LOADING_13 189 -#define IDR_LOADING_14 190 -#define IDR_LOADING_15 191 -#define IDR_LOADING_16 192 -#define IDR_LOADING_17 193 -#define IDR_LOADING_18 194 #define IDR_LOADING_LINKTEXT 195 #define IDR_LOADING_UPDATETEXT 196 #define IDC_CRASHINFO 1001 diff --git a/Sources/Plasma/Apps/plClient/res/xLoading_Linking.01.jpg b/Sources/Plasma/Apps/plClient/res/xLoading_Linking.01.jpg deleted file mode 100644 index 204ab4aabfe370d4c309162e3845a382920f5aba..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6506 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 Koqy%acmD?0wqzp! diff --git a/Sources/Plasma/Apps/plClient/res/xLoading_Linking.02.jpg b/Sources/Plasma/Apps/plClient/res/xLoading_Linking.02.jpg deleted file mode 100644 index 7a5dca29a0ab6f023e24219592bbc115d84a2ab3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6493 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 R-(8*2;BRhs1;O~y{{h@Zg?9h| diff --git a/Sources/Plasma/Apps/plClient/res/xLoading_Linking.03.jpg b/Sources/Plasma/Apps/plClient/res/xLoading_Linking.03.jpg deleted file mode 100644 index 4e7ed7421ab64139a568ba279f0ec1d188591e86..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6464 zcmds5XHZnxwmwaha{~=XkkFt+5lKo8HgN!3fhHRW5(W{;O-4X$ku(B|O3u(tMzUlO zBqt>YksO+2BcWe2x8}a7x-&KJy`OKL^HuFS`|R55TeZ$!-#UaZggJmwS5rq50Fi(I zZQ=zG&Oju<{}U@=002HBmpKBF7t!d?$2>^VKj@v$@e=Va5FkCrzal_oKFYs5DLh;slbgp7$#QjMG$ai4cNvxDr#0X_6r<>mo5tli%84J%3Z%9uW=Kusim!>d&kJw1Ziq!Zewd_|IoqF$=$=# z%iG5n^)xIz;#uT#bo_6x5)zYMze&!>%*xKm&C4$+E3c@m`cPd{+tS+B-qG3hse5R6 zWOQu&%h!qdg~e}6-K!|)uNJ+t@6z636vC|T6w(o37EU{betpbwr5QnLz3&kN$tDgDmqe?}|1W zdQ0rk(PSp|rKyJR)9at7C!h*xjh@t5QaWUyRap>l;2(iR&i6m_p5Yrl8)qrifOP2- zfHt`MM9N#)xB&6&h44hFPzv2#@`Q;2G4DWNhYVYIPvYRQ?aN(Q98^(|P7i!iTCGc@JR}#drQJd1`SElhzs?Obc840@B%sTQdlwqqO)G^s0Nd}wF zKdD#Uc(~G1GaG5XiEY3<_t;LBR!y;&tgS%{*Y>vlmUdTohu-pBKWn661mL4RcfP6J_m^98RX5Qz>cR3Uh+3Tq5#8jtY&dt!~ zEGo(XsYjWhB0u;??6szTCkcfQq;g^lgwa!ZwQA1B( z2D`8z%!1G3b|>lz3sV$m#m%59cxnnx9k9yI3m$og#QN*KJ%+WSJYT-`wYH(`>$`?- zP)Tq$NV?`)GNhP1)9oC09662qs_9cmlQyd|U0HnslNrTxa0yPep1$JgKM~FUq@-^t zlrI{pl~f#YKz>|RP5@?EmUbF5v{=uFGOM#MfzeZISn1M`kNd6XI?g&fN=)S`QWsjI zY{nX1Tpk&hT;!$~#+VQSfm@>LEN%pCKDr#&lXi~~}xh(k$gS?!fYAY8KLp2b~dUH7> zRP;6O^9?*IN!;XFS$MhptEXXI<{me#Nh?W z?$r*rVdyxI-9~-)P$vk^g5=}7{dGde&z*&J@tStCk>7~1v)%}g-Ux4P7|Gz(d%5Z9 zpy72D+U<$};cX6wY)DkC#C=OolyVL3wz$^K_=%yfnbmJ(B?FDs*3oMjr!l)I0q z&CO6dbh+3k*$fE{%uTMbxMPAQC5FtjrMzBK&H$zVD0TA2M!2s!Y zj}NUG(593~?N6kK->WGas^fYTcN3L*IJUW5c5Z_RfTGr3u@Y9kR&Yg6;MnL30kF7y zy69KfAA_c;${-p}_@ z3q3eiR$-*To9uhm?s5p=;hsxQKgQbT^eFEsjSzr?^>|!w(icUu{F|9hZ@hz*I8)cn zgBY%yeOg#2F(9qWP}$+@Tt|Pvh4yseSeT1-=D3dYVMh;&7cy5`(_0X5Xg6;LQ3DuH zsUqTi0Hj^^$(2zVPBm!^v}!&t#;w}efN*4m-#QNliN2l-6O=x9VnfmK-s z*8g~cfz}%TXbzsIwVPVUe>#jG)Ay5THwp2VRUV*Ly31)JCStST)Vj3fd-pkWwN1Y1;BQP`x=HrpM`l2$4=!xlQtF6?7Of}%gT%|Nn> zOJlx}b?=5ksRf7b=1@^*mflIhsCua5-IAhv4B*wLczXiSxIzHJcz)@S?LC;a*uQh= zw!wNeXr6MY>G-#xS+eW9z+T(f-Y zr^1i;etUu8{q>3qRIp0{uWf@w<|@~N%Gbst>*>Blp)SHvDldqn-FLcavcDA}^ip#` zXPyayS@TOrB#K^WA*{MO@puQgv!II?6DA!9091xsen8Eg1*xD)-P;VFsZL(27oMXj zX0|v@)2=#fu8M#OoQmoi=o~+_)^v?LLHI5>#|f^J!RPt!)>g(?oC)u^EQf!)TLDd+ z?qf1uaVANC3!HAYLF?v&*sOi5?Pcq1!_W2&2gaZt%1k>hooM?Y@i1B3>8kejim>_* z%eqi8d~WBDK!GaO8S}}>r||{uwKeAZ0e9y)Exx{yuFDjQyk_I}a#nXQALd}0g*JXQ zm%nLl5;a`k(LvM~k)ddjz9c7C8BsmYb+NqEHzdJI58HW(%;>~jkV_A>A2gj%of)^{ zWf`PQr?em)z57a{#rTFNu!^CL;b60@$qfK}l)QXG$8ZwxS?kBGAo*Wp zopT~iuQ$#sd)oQp>p|?zOU|I+rg$0GHaDxzaMdwo4$FxT;vD*{%I}Kzuoj(H7dPBN zr{B&h2mJYJn9QBLT)Sw?Tn=FrN7Nmubtcno9~6_(<@pnD#dX)Ft0i?m9dQ{uEjsnJ zg|i^ENgAHckE4IJ8@ykdVv5<~s!k6Vz6sSek+bZ@>4(Nu zyH~ErcAz3Vrbqh@FmBM%oAI39#BkK;P_G2?n4cE5|8!d9ujngWUngGMLj=t`hVFOqnM95dArc-U(vMpY*ztP^2{fEtOI->|3 z-i8=$j)q8fxx|y8D&e3?v5(7JvuDT9@2|7E^TFrNQ7`9SNq0b5S>OnOKAF;^xks!H zhJ)?C?@WgJ+(?ei2YzIOnCPj#S-t1 zPu>}e)zQUEJ~~Y)un012)~)&;A9K zVCFCHLM5Z#-MRHPIZ3FGXMwKxtK!|fJa*do4y7iUexxhzp2a6@r%YB!&-Y85J@+1~ zg5Mz_rY0tD515H5Q^tra#k)2oE6!XDo>EU@`XwaUa+hkqmyAAg-( zRc%rRbD@KN7s)YDSY+0jyOtz-*#8~QnP74NHHdidS&!?tkz`T1!T~in%WZH2K48wm z#cQ;<@|rngyNTf9^@CjekNMNa7j}o6FrVkz3>TIi4xkjl^#N?pHhU9uid>#|%hM+0 zEBY<2c=o8-WIbbKqN$^Obcn4!maxMvIogC0`;ORHVnrnx&B6HPmdMI^Uxg6Gz&HL6 zMU8^^&@RwnvwZY0uj@GG$-c4XljzS3nx*)DZwSd*3zd>Nn@|uedAbtckZFaLn5zj( z-A;3}z5#dPGKP}W8NOYN}nYF1Lj@xMwdDeG;DEa=R?AlJ@D)F4M7M(c^8Zh7tr-}{_91+(gW6yLQ$g3odc zb(0n(qK0)U_1Rj7BEK2az*>Svg;vsj4pJ+=NX{5ws#;cK3$B;T;gy=yYzpH3oJ9aE z?+A?f^JLJ%9JP`7`%yPeLB)(IYtFgT?qX#he!PFKg3;1j7xtG_3+ybNI>h-jKQz2KwS%b{!*8AMu{6XVcQ*Ezb-7b(Gc*!3wt?qS1c7;@J*ZNM@Xm zNGmDQYG<$AE08P2ZiK(3hX9DbvMsI>mFP$w;W(_5>5bnE3r>p*{jzQTq%;1xQ=!{0)F(F+ z_tubxZ0%7Ux1q)=R%&v_)w10`#fEzd*pgf?))`U0Y}PYBTW&rnH({5otIF#giXpmCjK%>BFt*tV*Bke7?d~C@pfO*rHT5<46W2-jqr?8C%tU$tqm-?_5+$3)m zoy1{fk=<6tJG0#{;I*Hv`yy{6L^MUv0DbArDF5xxogme9tIILn4XezG8xqyiZNbJi4tSx8_4g zy=-maP6VvqKSFbigemao}<7=-Cgq zWq>*p$I#3=L964Jy>#DeVvzZVVWmp53M6A-A7@w4vB?s&HhqH^Wz4{h|K^j_Q&nmb z-Aljywva8t5?pIPG0(nU*#dzldeoN zDAGiUrDpo5He~&_zx8lCc4ZSw`{noOl6yWb=1_0#1U(gnOh|tPTzyg8a;vDiw625azLP_-ZK0?Jm2p~Df zdDq|ReC!%I$YzkIPDW07k&24)A|>S| zY6$Hm>MPWgl(h7;SD;Y3t8`Sf*BI#O7$9_XP$GgDDM5milmdE*^3o;f|CP=z058sPj&@i3FdHx+<6?I zP0p!M)dtlW-r^FnatpaYL3fq@8pHJ)+%O(qVG&U=aS2I9C1n*=HFXVLJ$(bDp^>rm zeH&Xldk05%4^OX0-afvePr||@BA;Rs5}zj}r=+H(=j7()7Zes1m*A>vYU}D>H@skSF zN!iOc^dpeQ^d0(b@AvC*xBTnqdk(N zcqND|R4v%zO6QxXu9szA!yS_il>`f*`ag-(QfTCrbtMf_k9mA}$+0rKMpJXAVym)3 z5ih~TA+^$b*by4@*&&PGw$2t8t-zR_pteT$nu<@qVHi8H{6}0T?{@r0ec__9J*u=l zwD+S9pI2F(NVrYg3~>YN{11c8Q=YY-2H_Bzb|bGe8h2Cw1mO{(-p-dXnk-*xI;=Rw zcRJ7?_hKXFrEsGjhw0uSI^sSBa{Z#nT3vxfDWR6J4frOrNJ#hCV{BTOeUA%d+U zKct!a-5CHW-~if%tZxfZRlw5d#CV>PSlSi9)Q zXQpUc8>-{V+$h$k-W5>F8|<~WfO)a*1E;J?PJOX9DHn>E`|z^Di_F<-edgM%ITEpe>l z&dluaiA{;USA~nEYu$}+WkU6Up82}u$g9dP zUr;ijuhK4xXL+aS7B;Wx<(CGp1XT%J8Exfz^Yt+yT(29F*L1J<#qwpAb>GO%!NmQw zP6S0}Z#^9jDyN@O`-7j_jUVQ!h9{n-PdY{mBH82+oc{!<&#@cUtL z`_$aqDk$>eTP}7@7S06;I^v{L8G0g*ltvj1$8T;dvuk0=0>HjbIN~JerrqKfjK>*J z9gyT+&*HLeH_`N{!&vozuFBn}(fes7AYgZz$k0uds}_na`9bZ49ZhC0Sc#PiA+T7QgOP-@j-Wf`JwN-jWLGO<~vRK|@O~ z(L@ceF_7aCfqUR$@d{IXn%Dt6yk?zI=(A50&BijUbo9`mW_9<*F%@S|`9{I(CGxrL zX%)xzZ(@T#(av!4e$PPC2uHIIqf+;RB-h;T>LMw4H5TGOuP-*s?bT$R;tOww?Ozrr z)DA2DII$ng~bB& zgW9}Y>6?)mMK^hTinx4MzJ2#%zk(7en!D``u!fF%ODSR)^_tW4SNsnxV&8y+%00q8 zbR**B_xNFj3TqperHAn52t3)T7fn zf~G-7K@{xoQ7~EQFZANr{GD-F^z^QO9ZYQZiOuTC`uj~b(aFp0C&CZ(VjsF9c>Sw% z%oI8Z9(A9sc*BKjbaSzxUh4kS(A$gm5OOTJtX<@Rt^Oaxjt!ZBKpm$65p5N;@u^c| zb=q}w_e|l|X&5}x6H;B>%AL@igW0p(3jDCKz}V2V5wJmNw`#^WV}Mfgt?q@D-=?t_ z!aqVdX*TD@=%-{uUzl#*y45GI3>8U=Itpu-w_()e^H7EaS6gF0t=9b@jUKB~TBgK! zi^yeU`b{L4FZL@cUig*oJXHE?V#7(axS+;@5OHdx5QH4#TT2 zu+26Q>McVPBxo$6YHs>1C6#q&AkmmeVPJ8iiJhsEhS~Z(cfClf%=Zqgv3fqgU$V%& z`0PSnH){jyK+{13@3)j}{x~x&@a3K}Ab^3iFEvaFwF}itS@tSdw|Nto3{2?BiaJFB9n%_3X6(#tN0vGZ^Ayp zo)X0{cb9qHbtaPTKsz^j?hKGz&yLhv?j2U2n#NZZbv`OrByCigSFr5e2amk=^+*sN z804e#lHm7E)W-TIeoc(OeGePkYCMO1jO9OyxM~vYmiPAtBFrs>KD=- zv8oxJyJd5W)pt)G<)94ppAsoHP@O+ zE_LNu8I)q}FCA%OKLakChYQUK%oy|73{J8Iv7_8y$$wp&aIHKQxVzZzIc88upES%8 z70DTm@TMS+ZAEDKtgD-WesAlA8=+Ns*g4)lU!|7bay{6Mq+^OM>Jzpj3%Hj{!4dfJUY`a3 zr=N2!h`ZC>m4T(@#fq3C@I(m&dUPKy?z*8X{dpAq%SLmwj z1$->JaCLZU-DI+N@j4>DerRG$LZbOsc$qbRw~f}@LRls%YGQ}Ek+CFwxfF*FT^4Ur zPE+O?+CZP)JwXoq4$mIW_+`?9H~$RXS&0?5gr6X~8bTYxhZhRqwg zaNI`okUVE9&eu#ybAQ0)!6Jl5J2(~e_~e8~FEM6{N{|MW_BoA6+ii19>Wr-5h9?wk z7U#kR`1;qiRJp}oi#b15h9Jd5FuVgPjxHj6nx5&b;v{dag#Y9YgqsXc}ef}_1CnO z%|5kD+1pGMCg_B#EgwSmk1#yl=^AYD_fGgHlnc}8nDK*2jp-|!==;?#7aJ6rA|Lkp zF&ybM#V)PTbe5S2a|m*(rcg+%cR69-G6+O3=|;y~!oaW`3U62=CR!Y~12bOt=BB`d zxsQ-CW-aYO)!o=0k+ESVYpq)cAg<6+5s##mlvIw%PQMm-M-REQJaLp?W>9zFQQ>9xyqh8s{jQ^MfR}f+kQabY#{cw ziJcz8L>OU18dh0nlFfI2x)1^ubN9O+lLgA;4ESW#Gz8@aG3hK7&c1DPAG6Hl3+r!+ z?}blUxT?Dep<%2aT|T3%A+ex{uyj#oiVRva=g=ix--1yDo0i^_#DY^vR^QhK+SAcO zL3hu9*o&q?gV#^>4hu1J?$Yrc@L3DK)Ugw-2OH(zJ(i>wFGr*tXLzvef9T=tJN{xD zAL}I{{8As1aB*tyap~0KP#>4>W2=;7oe!sh-w6pu70LmlRT3v&eDI?Z>+7~A8j(NV z^6Lb$|K@S{W$(L{t|%L5O?8IJJO0e~PbQM;pVU69lpQQU(N3lI#!eI)xZJ-gd7GX? zJ2zZKMesd!ul&L`;sn;XBdxWS_*j}!a8n?tt7P^>cybe%LsNoI(|gI_{FBOySrN#Y zOBGH3H=yIUFh%2E?cnFl2o3yPp zIfQ;(waYW`@n{s`Vj+0#8B-Nk<`)bsj|eFoZTwZKS+f*8&2g&at1k&NegMu5YG2GS z`A#SJv~JmJQ)mx+MSt8`paFNSn)Qy#``wEfd9Sc}HW&Gl2YtQR*skC{_JX$CLfJ?|sig zUJVD0^o!=!gJ6`?o2}S)mgTG4=8h?sk|1^Nc+aPunV;YXS^PN?8TrG#IXE+4#Y=h?U|g$>`M|^;;s4A;6XGa(aEDb ziN9R65{9mZ zSJpSYU>0SQH+=Nz+U5$E!vT$ol<OJMv8~py$dlghUb@@i4Qw~!@lluk}wSF(U>312~d@qe>nJ`>^Qp-xqS@(k6el%p` zp^%;kv*@yVlb^}AKDRFR#c6%j5KAVeVw9-b`7@tRBFwIiksN2Jy%;bs|Ri>tDfNnh*JIdNvFC-NAh^&mDyzReV8-epy zSugXK`SaH$D17i_vK3J>e||jq;{6v@Tj#tl377^wH+9)yf~4GeTKQ+__w%VVPT0|` zR!aAOvR??W*EnM18B3lRF&ktOT{Bi?*H?8%dInLOf72luE1zfc6}>~ftY5P}IqLGN zA%ZmLVQTVDu(vY3jLFkrlTHC{bnyczOlIQJEL=7m3YqK!Ck&C5&SFR2Vf)9 zmA+63<}fqyf{nR2&hP}$uwJ!%BX3?6LG5z*700S|IjqlmL zrf}jq^J&En-1kX@k(HlLghx1s=Bx~ia-%AA5SgS6f2L`c8xy)jbQeJ zB4jV&&^Kfhj;?1qxYxkhk*h{6SNu8c@@JKU3REhIXPK{N59TAsKlcpK4ehQw`P}-d zhK_5Bc~~Nq{^PqWjj5(R%a?7ARIHMvd+0YO>cz&^Oy0WVdrTo$WM0(zMLUJ%UMrYd zN|g1PY=V0(epp5a=8E^?_AI}nVzAF!CxusU0uulhG*aDKJ*f`>FPIGFFW|_46DTZ&<*cgkxpDU?SuwSm^Rf9 z-IC;CxQcv=!NnjcT>D-3^tznk7fG{S2%j*|7hMfwTz53) cj;ZtYaxmJT33+(@X(f|Me diff --git a/Sources/Plasma/Apps/plClient/res/xLoading_Linking.05.jpg b/Sources/Plasma/Apps/plClient/res/xLoading_Linking.05.jpg deleted file mode 100644 index ffc63e0f038a64c66eb9109d4ff428adc4182369..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6437 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 diff --git a/Sources/Plasma/Apps/plClient/res/xLoading_Linking.06.jpg b/Sources/Plasma/Apps/plClient/res/xLoading_Linking.06.jpg deleted file mode 100644 index ea4af1110c9a43279f99b2a602d1cd666e65cd83..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6566 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 diff --git a/Sources/Plasma/Apps/plClient/res/xLoading_Linking.07.jpg b/Sources/Plasma/Apps/plClient/res/xLoading_Linking.07.jpg deleted file mode 100644 index a71c70ec5020d9f8591049a34b5f2165588dd091..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6414 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 diff --git a/Sources/Plasma/Apps/plClient/res/xLoading_Linking.09.jpg b/Sources/Plasma/Apps/plClient/res/xLoading_Linking.09.jpg deleted file mode 100644 index f64abe9a8d9fa59d1c72020842b2cf5cd63e8bf5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6440 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 diff --git a/Sources/Plasma/Apps/plClient/res/xLoading_Linking.10.jpg b/Sources/Plasma/Apps/plClient/res/xLoading_Linking.10.jpg deleted file mode 100644 index 0723892fbdb9db29f8be40e2f5c746bdc855c3ea..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6501 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 diff --git a/Sources/Plasma/Apps/plClient/res/xLoading_Linking.11.jpg b/Sources/Plasma/Apps/plClient/res/xLoading_Linking.11.jpg deleted file mode 100644 index ba36ed190593b9973e098c055e1726f45ca8f2fc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6450 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 diff --git a/Sources/Plasma/Apps/plClient/res/xLoading_Linking.12.jpg b/Sources/Plasma/Apps/plClient/res/xLoading_Linking.12.jpg deleted file mode 100644 index 8fcaea0f1b707053fde589666c98873b08b9ebc0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6510 zcmbVP2Ut@}(>@`D08%wUP>K`<42pm#Md=Ae0|cp|3Q83aFahbkgbsp;N+g0(1f&-Q zRH`7-Tj)*Tib&`vA|E&E#3RImm)NcESim3EY8oa2D zhx|*9Hln>k<$wC`u;74qq_!1%qiJ^biOwErbzDPe;#mgqfM?2on8-%6-Mbk%gf32dIx%di#6(J=+U>K$U z%zC8bRyhp9fe_#{ywYQ`1KX>8yp$~YK8C1!waNO1o7)(u*URVK@gIB1=4#yybSwh_ z(@h@9ADq85Jld6QX3~xAPeh8x^ea%A1A-F|n@5wzx&sKicF0Fa}Dd0=eLxd{%8Kd;-#J zWzSW$dS&k?b|S~fB1Z1Q2ApUf(fG}F#BgB7^tj1U7}?zWnEtNxr2GNE{=qil4#ysC zd>7F%s&{MDibJ*rkxMz=(4pF}**q8HF_N?MR54^9+es*!6^UFj}As5d0n-&H6yW%~cAB*-5XuMQA zZHjkC-UnyKwpAL)6r9DR$eZDdmn=?g2W8a-$&@~_O*d|PrF5^ez-tbMG0e|(3h`tV zA(gQGeP|e*ssvs|OYy!{=sGK=D5L__Uo z_xZA2BXV-vmfY}HiCDI$0!!w!68F(h$K;GY7sa-?UZ)Ti->Or%DV}s897h) z%hem|V09EkRd2tFdhF*Gz+f;ZuZ(nQ*#=|I8s*C#FqM{MT9EW%)HVK@LU{FW^AF6- zA6THd~t z$Y6rVGnzxLc*{S{x{cb1TqZ2X#Ku80^RNoB9)%X!g+$(+ldG8DoP12So%8HBo!!Uv zyPvhwcb+m#h^Z4P2omhONvVjIu6$Ct62_x^CH}+P{FXWqouj`wZDOMBLHfemwO`Xn zWw}ugX4)<-Q*Gc8NktF*PYk6sDzPWBmEG%_GK~t=Yht^>&ZEJT-@H&DYH)9?tGC!m zzdCLUQkBRGkGNc&|e z?F&`9S{I<1O>$(ghZ{_EE6Xa7RnN_$nj-1C6wmB1aLKN1jT41;dtk7*n~%M>lk69s zINN1{zN_eVvQG9xOn+FHYnpFGCFcQ9Xj@YcRtp-JUDN6PMOFry$9S#4-&rjS)D}$48C&QRAIc~bv+Y}^I#iGlXS??YfOSm~)ZR_i z@nPxNxA8Mj35RR#z6rt6^7YFuvP1+T!Q-EdolRhSL*Rk%LZ&%?C_dzg+%P`6qk2^+^T#U zb9v+IdghZb!BK8~EuxtIL*4So1rnk4&=649m0nb@w8?UPdAE@LJCVY>5+(|Ay<%mx z-WvCkUL4J=$Zfr`Xw2S9;TtOz|M?OY(-dc%~}8!7#?Z+<9!}+{2MwlNXJsITO{yrMCxw)>r@YWB1c*V@omwLW{xu z@dp65bf0zj{=PuEyG$@RWLbl6#=xK7e6Of!a86sz)S7RFeP6aP$EVElv8a7)091Ky zp>61kCe>eb7EN(FY9UMHtLgU|t%$i_3Jv@ENkP;QYE0#Ki3C!%)Fg8gSOFV0CS$K%bE)?$SZ?cEGDBp(3LHa}6Jr!DYuuUj%_ zehfYte2!|+TM4mA-n^^G2HiGX$G!Cpk5XVazmKimD3&?;fs+-dxaU3l*5mdjD~BUS zg#5yMk`*=oV}RJuUSHx>^Da5){6hRLz1xrJ0$$V=DMs6fJ(CM|L4k5-nL{8S$e$BesZP;}Qd#3Yh)L2{$7LQ0FMQ-A?!+ z?pWi@wwYC*!H};Sg_k&eG9Ta5m(0nZg@_$bY3bKKd;a4n^#IH{Oq{^|`$x!PSpVnv z8PKeLXGsik-VCzdk?UA_G~@bO@h-U*LESx+)7!VNcE7VFm?-n^fOiWz-=G6 z#o#kl5VxS|#@ER%`K}_9@8yUe^Xs=e?Mobf;6`mi6O#qI!_`*{SuH|Z`-=oE=vGlz zcZ$?00lV7%T*~*V#EOyU{nMa3>1|0pcUO0Vc;%5WBYysW7r&5jyKCi_(^Il*Hd6I< zJ_RZ9mQE+`#jo@X^!pp$3m0R3N1QWL46$01j%{?~zB8fP^M*BgPyk_mzC#9*j;;#? zpli~dUMKjrf2PGRKikKR82D4vOGKA(7cs~?)a4Wb@_rm2!Ch&p)a6UXl4a2eI0)o7<3QwR&K=@tJU(rcUGDwDyL-% zXFfdtX)~4GkvsQXlhpDOw~uT0`oirOXQlX-I8ehEdRgF_xpqeloyn!2>>;~hHac1r z%crYn%M6}s_YFH58Gd_DFw|+C&Nn(~h!;8xK=9#R>Ea&o@8<;u^e!jcOT3Bzk5{!B zSVxFxC5{@Xm=#>W@~Ai3i#eAc0OFd)NfMl+0*mQ$Ibz0hQNn%QYIC2yTTxT2EUIVz z9-eFXA_nT6DE{eHt?J_e0NSH}WLKDj^0fzz6T{qh2wmemuSx5cUZb_D!R|C&J3*Yb zpMuT>L(II7b#Citu&9Noi!DWe(a;fMfx>gAT_cRh%S9eJCKkgrpOlS91nmJpQfkrc zTT27lf7Ca%TN}E&nxeDTg!?RY!@XEt+vS<+rFxV)>h3d<7+=F+j@As7)0K_)|KbQ0ZoQ7s-RwwpJR67EZvYd{8(r!N8soI`LwpiQoV>eIifYKb5sWD4x}xQ( zPj;le|0zp|I5CsCl^=F%EUowQ`T?-LQr@z=YB{Hq?o}`-^^se3uY#sJ_F7}}=eF@d zZNbm%BKHHTTa>?>y-m8(S!e6Oxn+~A*^kjYRU5ByqBfHAa_VkCg=j#zSpEF+ugRrl zwdH~dM3zL+n?v{S=k3)Q#u1NKWJe8`t5Q(-Q@w#UG2E6pc ze2OP3-hR(9#dcHKgG31yBFo&m<$7MpUyl_^h@V1E4DViFNe;`PGxLezqvTagFiY>e z8*_#M2SBHZet_5@a*9Yb2}_Yvj)lcA>4T-SR4Fo>~&%wuplm8~+(m#c6 zueK3RLc~L9eT;G(>fr_F%5D*y93Xx6Y-jfdnw*i!^}dcRX&pzD5$Yo31$^RyL%H-^ zyTw@hl{98Sj#EB;(#e&|)NP}|aIWC?n+HgzlUnnnoR2TZ7Pl@jkyaV_&vnVoNEb}j zdW*As)%3veZWB`OuqbU7xJG82EvB3#pHJhC3~GPf>_INmjgI#0!*|V4cge2=7?O|1 zZs}OvaalekxPQMD>1yJuMS&!MzXjuXUMNizVdoa|V&-_#c;js-8OxH8eIji}!I1}w zi5)K3U5oC*X7O*!H#bIun!M)VWo`z?F=H9?9Hot8(gf*ZPiY*_)^{;bL3@ ziKsbCU3KhK3gNZrd+uO)qvyMFlyt{|qUT=W7@?SKoBNOV95eEC3XlOS!M7j9rT8&K zD4x~Ml8nC|S2m}K7QLbDv~+*+Ylo)=`}Q5_S_Q;6y=e{phiTJMs4tk&517vi?Z+aH%U;7%FW+aCL`Xy$hBL8d-}K%cTMz+t zW6_cv1TG$Ry*v##JLlwJH&&bIZ1-ZM!HL^if^!zs37;h%D;x2XZxmdzFMd@Vaogfi zVS1X2#+sSSC3R|4F}e`^>+D15G_aFD77iC?DOE}`4=<`1fu$2(T&7VVCDm3olPwfd)|c?Rj^EEvfF}z+85e3eRvC+H*HF`S^i+mf z(Rf<z@Twh1_1QnKEuwhI zoYThQHgSl8ZP%$P+&6>qb(io_I?>@+@1^w9p%wdTsrWBqHn#80VXr@vs`^~K_8(D% zje5mWhfj!N==vRw3o*{)&S}jUzVUgy$dpvC=VRCz_x37Z1g;{yZ+{v&9=+F1J(2A& zAAOR1pb5Y7*25(UYSHN-h|oB=x(F*JqY=+05fZ2L-Bi{t7-OE+!fYQ~l&_>VkNiAg z8p7>-_tvRmu2c8|QC0G_2M%VdQC3NGBa&C_y2C|Nmg->_zdHEJtks}O)f#L-!G8J8 zxdYitV?p`Uy>3GPSG509eyPfyt{)2(Qwc;2zEXfYT(gSC+uk2TnQ=QS^k>WI<*vjc zo~Sn*05IfK0eXM9%Je!-F?gAX-FQf`Nam@`a4pzIuAIS%HpO1pv z3eUp#nyXYb2r`A3z;2*h^yxm=PmifK-Zaup^evx7g#d>0VRa|WoKmAaJug%Q?dZ~J z!kY@gOzRzftW!VJT*^#k&oQR$mV;gIFfL?53@x^Ms^=_3w_V+yne65DSeC2Q2gJbP z%|>1RqE+F84O^YK*bK}`9gjsz117_u1%gQAAgd;70W(p^6-pRBRG96{^T_$ z@hF!Ow8%{%_oq_hr73VuQ8UAm3pu}hGwzCuJIr62{I#Ch6uGifcbWHA4(J{@@GL*N zZF4~=PT;?Dei~B^NXI7(2R%>l@_Gk;pK5KEFjD!qf?h3~=DC}J%Ik$3qD+#4FPXB~ zO;5DM;I6ulS=Bz?666zz0TX&22kSgyHg3u#)n?GA%h)Cgy5zi4l4gcyd|)a2C$s-U z+u1j#cDNo2LZPq+7$wFy8{93Kv+nfYOvw>((&jqXe=?7@btQm4OeP>`2ss~H{+<{9 Mksto$%X%>UUnjO>s{jB1 diff --git a/Sources/Plasma/Apps/plClient/res/xLoading_Linking.13.jpg b/Sources/Plasma/Apps/plClient/res/xLoading_Linking.13.jpg deleted file mode 100644 index 61dbd92a20e853db800d457591a091262119a7fe..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6393 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 C2OUfR diff --git a/Sources/Plasma/Apps/plClient/res/xLoading_Linking.14.jpg b/Sources/Plasma/Apps/plClient/res/xLoading_Linking.14.jpg deleted file mode 100644 index 13a7146408647b626fe07a83f4896c8d000b6228..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6547 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 UsueuW)cqsaod>+X1OM^A06V5JkpKVy diff --git a/Sources/Plasma/Apps/plClient/res/xLoading_Linking.16.jpg b/Sources/Plasma/Apps/plClient/res/xLoading_Linking.16.jpg deleted file mode 100644 index bf85fe391c51d9223083ddc4d55a4ce55fe1baff..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6495 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 RhF*Xc?Akx8nJE#c{tMzUOr8J$ diff --git a/Sources/Plasma/Apps/plClient/res/xLoading_Linking.18.jpg b/Sources/Plasma/Apps/plClient/res/xLoading_Linking.18.jpg deleted file mode 100644 index 997543340eb50bbb8784045fcc52c4302b68ac6b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6519 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 W>Sxg?Pxi Date: Thu, 16 Jun 2011 23:04:16 -0700 Subject: [PATCH 12/18] Add support for external resource Linking and Update text. --- Sources/Plasma/Apps/plClient/res/resource.h | 2 -- .../Apps/plClient/res/xLoading_Linking_Text.jpg | Bin 30056 -> 0 bytes .../plClient/res/xLoading_Updating_Text.jpg | Bin 30050 -> 0 bytes .../PubUtilLib/plPipeline/plDTProgressMgr.cpp | 2 +- .../PubUtilLib/plProgressMgr/plProgressMgr.cpp | 8 ++++---- .../PubUtilLib/plProgressMgr/plProgressMgr.h | 4 ++-- 6 files changed, 7 insertions(+), 9 deletions(-) delete mode 100644 Sources/Plasma/Apps/plClient/res/xLoading_Linking_Text.jpg delete mode 100644 Sources/Plasma/Apps/plClient/res/xLoading_Updating_Text.jpg diff --git a/Sources/Plasma/Apps/plClient/res/resource.h b/Sources/Plasma/Apps/plClient/res/resource.h index 112ad248..6e27c82e 100644 --- a/Sources/Plasma/Apps/plClient/res/resource.h +++ b/Sources/Plasma/Apps/plClient/res/resource.h @@ -14,8 +14,6 @@ #define IDD_URULOGIN_EULA 154 #define IDD_AUTHFAILED 155 #define IDD_AUTHENTICATING 156 -#define IDR_LOADING_LINKTEXT 195 -#define IDR_LOADING_UPDATETEXT 196 #define IDC_CRASHINFO 1001 #define IDC_COPY 1002 #define IDC_MSG 1003 diff --git a/Sources/Plasma/Apps/plClient/res/xLoading_Linking_Text.jpg b/Sources/Plasma/Apps/plClient/res/xLoading_Linking_Text.jpg deleted file mode 100644 index a70429fafac648ce7431e31f315d63dc13cb3491..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 30056 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 UY%Kh7u&HWgS1s#Z#K=GY3)Ez+sQ>@~ diff --git a/Sources/Plasma/Apps/plClient/res/xLoading_Updating_Text.jpg b/Sources/Plasma/Apps/plClient/res/xLoading_Updating_Text.jpg deleted file mode 100644 index 90c02ed4da057509c99ff24cb8b7e14b947f1184..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 30050 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::GetStaticTextID(fCurrentStaticText)), 0); + fStaticTextPlate->CreateFromResource(plProgressMgr::GetStaticTextID(fCurrentStaticText)); fStaticTextPlate->SetVisible(true); fStaticTextPlate->SetOpacity(1.0f); fStaticTextPlate->SetSize(2 * 0.192f, 2 * 0.041f, true); diff --git a/Sources/Plasma/PubUtilLib/plProgressMgr/plProgressMgr.cpp b/Sources/Plasma/PubUtilLib/plProgressMgr/plProgressMgr.cpp index 0027509a..9fa6de0a 100644 --- a/Sources/Plasma/PubUtilLib/plProgressMgr/plProgressMgr.cpp +++ b/Sources/Plasma/PubUtilLib/plProgressMgr/plProgressMgr.cpp @@ -55,9 +55,9 @@ plProgressMgr *plProgressMgr::fManager = nil; char* plProgressMgr::fImageRotation[LOADING_RES_COUNT]; -int plProgressMgr::fStaticTextIDs[] = { - 0, - IDR_LOADING_UPDATETEXT, +char* plProgressMgr::fStaticTextIDs[] = { + "xLoading_Linking_Text.png", + "xLoading_Updating_Text.png" }; //// Constructor & Destructor //////////////////////////////////////////////// @@ -234,7 +234,7 @@ char* plProgressMgr::GetLoadingFrameID(int index) return fImageRotation[0]; } -int plProgressMgr::GetStaticTextID(StaticText staticTextType) +char* plProgressMgr::GetStaticTextID(StaticText staticTextType) { return fStaticTextIDs[staticTextType]; } diff --git a/Sources/Plasma/PubUtilLib/plProgressMgr/plProgressMgr.h b/Sources/Plasma/PubUtilLib/plProgressMgr/plProgressMgr.h index e54e8c97..fd9d15a4 100644 --- a/Sources/Plasma/PubUtilLib/plProgressMgr/plProgressMgr.h +++ b/Sources/Plasma/PubUtilLib/plProgressMgr/plProgressMgr.h @@ -181,7 +181,7 @@ class plProgressMgr static plProgressMgr *fManager; static char* fImageRotation[]; - static int fStaticTextIDs[]; + static char* fStaticTextIDs[]; protected: @@ -214,7 +214,7 @@ class plProgressMgr static plProgressMgr* GetInstance() { return fManager; } static char* GetLoadingFrameID(int index); - static int GetStaticTextID(StaticText staticTextType); + static char* GetStaticTextID(StaticText staticTextType); virtual void Draw( plPipeline *p ) { } From c5cfe9373baa401ea26521d5b393c4684ff7379b Mon Sep 17 00:00:00 2001 From: Joseph Davies Date: Thu, 16 Jun 2011 23:13:57 -0700 Subject: [PATCH 13/18] Remove embedded-resource code. --- .../Plasma/PubUtilLib/plPipeline/plPlates.cpp | 299 ------------------ .../Plasma/PubUtilLib/plPipeline/plPlates.h | 4 - 2 files changed, 303 deletions(-) diff --git a/Sources/Plasma/PubUtilLib/plPipeline/plPlates.cpp b/Sources/Plasma/PubUtilLib/plPipeline/plPlates.cpp index 26564ccf..1b95d3e1 100644 --- a/Sources/Plasma/PubUtilLib/plPipeline/plPlates.cpp +++ b/Sources/Plasma/PubUtilLib/plPipeline/plPlates.cpp @@ -229,305 +229,6 @@ plMipmap *plPlate::CreateMaterial( UInt32 width, UInt32 height, hsBool withAl //// CreateFromResource ////////////////////////////////////////////////////// // Creates a plate's material from a resource of the given name. -// This is where hacks beget hacks. -// We have two problems here. First, the main cursor we use most of the time (IDB_CURSOR_UP) -// is a greyscale cursor, so it's color is copied to alpha and then set to white. But its -// color doesn't go to black, it goes to 0x040404, which when used for alpha is just enough -// to be annoying in 32 bit (ghost white square around cursor). -// Second, Win98 seems to be doing some sort of dither on the cursors that use a color key -// (colorKey == 0xff00ff), so the purple parts aren't exactly matching the colorKey, so -// we have a big opaque (except for the parts that dither out to 0xff00ff) purple square -// around the cursor. -// So, when it comes to color keying, we're going to pretend we're in 16 bit mode, and only -// check the upper 5 bits of each channel. If they match the colorKey, close enough to be -// transparent. -// For grey scale, if the alpha comes out less than 8 (upper 5 bits off), again close enough -// for complete transparency. -// -// All this happens in CreateFromResource and ReloadFromResource, so I've moved the alpha setting -// code to a function they can both use, rather than cut and pasting code (what a concept, must -// be one of those new-fangled OOP patterns). -// -void plPlate::ISetResourceAlphas(UInt32 colorKey) -{ - if( !fMipmap ) - return; - - /// Set alphas - colorKey &= 0x00f8f8f8; - - UInt32 numPix = fMipmap->GetWidth() * fMipmap->GetHeight(); - - UInt32 *d; - int i; - hsBool hasColorKey = false; - for( i = 0, d = (UInt32 *)(fMipmap->GetImage()); i < numPix; i++ ) - { - if( (d[ i ] & 0x00f8f8f8) == colorKey ) - { - hasColorKey = true; - break; - } - } - if( hasColorKey ) - { - for( i = 0, d = (UInt32 *)(fMipmap->GetImage()); i < numPix; i++ ) - { - // Win98 for some reason likes to return full alpha on the pixels, - // whereas Win2k/XP likes 0 alpha. Go figure... - if( ( d[ i ] & 0x00f8f8f8 ) == colorKey ) - d[ i ] = 0; - else - d[ i ] |= 0xff000000; - } - } - else - { - // No color key, must be a b/w alpha mask - for( i = 0, d = (UInt32 *)(fMipmap->GetImage()); i < numPix; i++ ) - { - UInt32 alpha = d[i] & 0xff; - if( !(alpha & 0xf8) ) - d[i] = 0x00ffffff; - else - d[ i ] = ( alpha << 24 ) | 0x00ffffff; - } - } -} - -void plPlate::CreateFromBMPResource( const char *resName, UInt32 colorKey ) -{ -/* - Someday the following might actually work, once we get a plugin that - exports a material in the latest format, plus have the material actually - read in its layers (or maybe we'll have to read() them in manually?) - Right now, we just keep it here so we don't have to look up how to do it - when we need it. - - hsRAMStream rsrcStream; - HGLOBAL rsrcHdl; - HRSRC findInfo; - UInt8 *ptr; - UInt32 size; - - - findInfo = FindResource( GetModuleHandle( nil ), (LPCTSTR)1001, "HSMR" ); - size = SizeofResource( GetModuleHandle( nil ), findInfo ); - rsrcHdl = LoadResource( GetModuleHandle( nil ), findInfo ); - ptr = (UInt8 *)LockResource( rsrcHdl ); - - rsrcStream.Write( size, ptr ); - - UnlockResource( rsrcHdl ); - - rsrcStream.Rewind(); - - fMaterial = TRACKED_NEW hsGMaterial; - fMaterial->Read( &rsrcStream ); -*/ - UInt32 width, height; - - -#if HS_BUILD_FOR_WIN32 - HBITMAP rsrc; - BITMAPINFO bMapInfo; - HDC hDC = GetDC( nil ); - - rsrc = (HBITMAP)LoadImage( gHInstance, resName, IMAGE_BITMAP, 0, 0, LR_CREATEDIBSECTION ); - if( rsrc == nil ) - { - /// Copy data into a new material - CreateMaterial( 32, 32, true ); - SetSize( 0.1, 0.1 ); - ReleaseDC( nil, hDC ); - return; - } - -// hsAssert( rsrc != nil, "Cannot find specified resource" ); - - memset( &bMapInfo, 0, sizeof( bMapInfo ) ); - bMapInfo.bmiHeader.biSize = sizeof( bMapInfo.bmiHeader ); - height = GetDIBits( hDC, rsrc, 0, 0, nil, &bMapInfo, DIB_RGB_COLORS ); - hsAssert( height != 0, "Cannot get resource bitmap bits" ); - - width = bMapInfo.bmiHeader.biWidth; - height = bMapInfo.bmiHeader.biHeight; - bMapInfo.bmiHeader.biBitCount = 32; - bMapInfo.bmiHeader.biCompression = BI_RGB; -#endif - - /// Copy data into a new material - CreateMaterial( width, height, true ); - SetSize( (float)width, (float)height ); - -#if HS_BUILD_FOR_WIN32 - bMapInfo.bmiHeader.biHeight *= -1; - GetDIBits( hDC, rsrc, 0, height, fMipmap->GetImage(), &bMapInfo, DIB_RGB_COLORS ); - - ReleaseDC( nil, hDC ); - DeleteObject( rsrc ); -#endif - - ISetResourceAlphas(colorKey); -} - -//// ReloadFromResource ////////////////////////////////////////////////////// -// Creates a plate's material from a resource of the given name. - -void plPlate::ReloadFromBMPResource( const char *resName, UInt32 colorKey ) -{ - UInt32 width, height; - - - if( !fMaterial || fMaterial->GetNumLayers() < 1 || fMaterial->GetLayer( 0 ) == nil || fMipmap == nil ) - { - hsStatusMessage( "WARNING: Not refilling plate material; bitmap not yet assigned\n" ); - return; - } - -#if HS_BUILD_FOR_WIN32 - HBITMAP rsrc; - BITMAPINFO bMapInfo; - HDC hDC = GetDC( nil ); - - rsrc = (HBITMAP)LoadImage( gHInstance, resName, IMAGE_BITMAP, 0, 0, LR_CREATEDIBSECTION ); - if( rsrc == nil ) - { - ReleaseDC( nil, hDC ); - return; - } - -// hsAssert( rsrc != nil, "Cannot find specified resource" ); - - memset( &bMapInfo, 0, sizeof( bMapInfo ) ); - bMapInfo.bmiHeader.biSize = sizeof( bMapInfo.bmiHeader ); - height = GetDIBits( hDC, rsrc, 0, 0, nil, &bMapInfo, DIB_RGB_COLORS ); - hsAssert( height != 0, "Cannot get resource bitmap bits" ); - - width = bMapInfo.bmiHeader.biWidth; - height = bMapInfo.bmiHeader.biHeight; - bMapInfo.bmiHeader.biBitCount = 32; - bMapInfo.bmiHeader.biCompression = BI_RGB; -#endif - - /// Copy the data into the existing material - if( fMipmap->GetWidth() != width || fMipmap->GetHeight() != height ) - { - hsStatusMessage( "WARNING: Not refilling plate material; resource size does not match\n" ); - } - -#if HS_BUILD_FOR_WIN32 - bMapInfo.bmiHeader.biHeight *= -1; - GetDIBits( hDC, rsrc, 0, height, fMipmap->GetImage(), &bMapInfo, DIB_RGB_COLORS ); - - ReleaseDC( nil, hDC ); - DeleteObject( rsrc ); -#endif - - ISetResourceAlphas(colorKey); - - if( fMipmap->GetDeviceRef() ) - fMipmap->GetDeviceRef()->SetDirty( true ); -} - -void plPlate::CreateFromJPEGResource( const char *resName, UInt32 colorKey ) -{ - hsRAMStream stream; - plMipmap* jpgTexture = nil; - -#if HS_BUILD_FOR_WIN32 - - HRSRC res = FindResource(NULL, resName, "JPEG"); - if (!res) - goto error; - - HGLOBAL resourceLoaded = LoadResource(NULL, res); - if (!resourceLoaded) - goto error; - - byte* data = (byte*)LockResource(resourceLoaded); - if (!data) - goto error; - - DWORD resSize = SizeofResource(NULL, res); - if (resSize == 0) - goto error; - - stream.Write(sizeof(DWORD), &resSize); - stream.Write(resSize, data); - stream.Rewind(); - - UnlockResource(resourceLoaded); - - char keyName[128]; - sprintf( keyName, "PlateJPEG#%d", fMagicUniqueKeyInt++ ); - - jpgTexture = plJPEG::Instance().ReadFromStream(&stream); - - if (jpgTexture) - { - hsgResMgr::ResMgr()->NewKey(keyName, jpgTexture, plLocation::kGlobalFixedLoc); - -#endif - - CreateMaterial( 256, 256, true, jpgTexture); - ISetResourceAlphas(colorKey); - return; - } - -error: - /// Copy data into a new material - CreateMaterial( 32, 32, true ); - SetSize( 0.1, 0.1 ); - return; -} - -void plPlate::ReloadFromJPEGResource( const char *resName, UInt32 colorKey ) -{ - hsRAMStream stream; - plMipmap* jpgTexture = nil; - -#if HS_BUILD_FOR_WIN32 - - HRSRC res = FindResource(NULL, resName, "JPEG"); - if (!res) - return; - - HGLOBAL resourceLoaded = LoadResource(NULL, res); - if (!resourceLoaded) - return; - - byte* data = (byte*)LockResource(resourceLoaded); - if (!data) - return; - - DWORD resSize = SizeofResource(NULL, res); - if (resSize == 0) - return; - - stream.Write(sizeof(DWORD), &resSize); - stream.Write(resSize, data); - stream.Rewind(); - - UnlockResource(resourceLoaded); - - jpgTexture = plJPEG::Instance().ReadFromStream(&stream); - - if (jpgTexture) - { - -#endif - fMipmap->CopyFrom(jpgTexture); - - ISetResourceAlphas(colorKey); - - if( fMipmap->GetDeviceRef() ) - fMipmap->GetDeviceRef()->SetDirty( true ); - - delete jpgTexture; - } -} - void plPlate::CreateFromResource(const char *resName) { if (resName) diff --git a/Sources/Plasma/PubUtilLib/plPipeline/plPlates.h b/Sources/Plasma/PubUtilLib/plPipeline/plPlates.h index 9e165a87..11521445 100644 --- a/Sources/Plasma/PubUtilLib/plPipeline/plPlates.h +++ b/Sources/Plasma/PubUtilLib/plPipeline/plPlates.h @@ -127,10 +127,6 @@ class plPlate void SetSize( hsScalar width, hsScalar height, bool adjustByAspectRatio = false ); plMipmap *CreateMaterial( UInt32 width, UInt32 height, hsBool withAlpha, plMipmap* texture = NULL ); - void CreateFromBMPResource( const char *resName, UInt32 colorKey = 0x00ff00ff ); - void ReloadFromBMPResource( const char *resName, UInt32 colorKey = 0x00ff00ff ); - void CreateFromJPEGResource( const char *resName, UInt32 colorKey = 0x00ff00ff ); - void ReloadFromJPEGResource( const char *resName, UInt32 colorKey = 0x00ff00ff ); void CreateFromResource( const char *resName ); void ReloadFromResource( const char *resName ); }; From 186cf5f621c7e682cad7ab5d751f818b4e0652e7 Mon Sep 17 00:00:00 2001 From: Joseph Davies Date: Thu, 16 Jun 2011 23:31:20 -0700 Subject: [PATCH 14/18] Cleanup of additional unnecessary resources and dependencies. --- Sources/Plasma/Apps/plClient/CMakeLists.txt | 44 ------------------- .../PubUtilLib/plInputCore/plInputDevice.h | 1 - .../plProgressMgr/plProgressMgr.cpp | 1 - 3 files changed, 46 deletions(-) diff --git a/Sources/Plasma/Apps/plClient/CMakeLists.txt b/Sources/Plasma/Apps/plClient/CMakeLists.txt index ca500991..521994e3 100644 --- a/Sources/Plasma/Apps/plClient/CMakeLists.txt +++ b/Sources/Plasma/Apps/plClient/CMakeLists.txt @@ -42,53 +42,9 @@ set(plClient_RESOURCES res/resource.h res/banner.bmp - res/bitmap1.bmp - res/bitmap2.bmp - res/bitmap3.bmp - res/bmp00001.bmp - res/bmp00002.bmp - res/bmp00003.bmp - res/bmp00004.bmp - res/bmp00005.bmp - res/book.bmp - res/book_cli.bmp - res/book_hig.bmp res/cnsl1.bin - res/cursor_clicked.bmp - res/cursor_disabled.bmp - res/cursor_down.bmp - res/cursor_grab.bmp - res/cursor_left.bmp - res/cursor_open.bmp - res/cursor_poised.bmp - res/cursor_right.bmp - res/cursor_u.bmp - res/cursor_up.bmp - res/cursor_upward.bmp res/Dirt.ICO res/headspin.ico - res/Microphone.bmp - res/Speaker.bmp - res/xLoading_Linking.01.jpg - res/xLoading_Linking.02.jpg - res/xLoading_Linking.03.jpg - res/xLoading_Linking.04.jpg - res/xLoading_Linking.05.jpg - res/xLoading_Linking.06.jpg - res/xLoading_Linking.07.jpg - res/xLoading_Linking.08.jpg - res/xLoading_Linking.09.jpg - res/xLoading_Linking.10.jpg - res/xLoading_Linking.11.jpg - res/xLoading_Linking.12.jpg - res/xLoading_Linking.13.jpg - res/xLoading_Linking.14.jpg - res/xLoading_Linking.15.jpg - res/xLoading_Linking.16.jpg - res/xLoading_Linking.17.jpg - res/xLoading_Linking.18.jpg - res/xLoading_Linking_Text.jpg - res/xLoading_Updating_Text.jpg ) add_executable(plClient WIN32 ${plClient_SOURCES} ${plClient_HEADERS} diff --git a/Sources/Plasma/PubUtilLib/plInputCore/plInputDevice.h b/Sources/Plasma/PubUtilLib/plInputCore/plInputDevice.h index 2197cf8a..d9c10021 100644 --- a/Sources/Plasma/PubUtilLib/plInputCore/plInputDevice.h +++ b/Sources/Plasma/PubUtilLib/plInputCore/plInputDevice.h @@ -34,7 +34,6 @@ You can contact Cyan Worlds, Inc. by email legal@cyan.com #include "pnInputCore/plOSMsg.h" #include "hsBitVector.h" #include "hsTemplates.h" -#include "../../Apps/plClient/res/resource.h" class plMessage; enum plKeyDef; struct plMouseInfo; diff --git a/Sources/Plasma/PubUtilLib/plProgressMgr/plProgressMgr.cpp b/Sources/Plasma/PubUtilLib/plProgressMgr/plProgressMgr.cpp index 9fa6de0a..7ba9f65d 100644 --- a/Sources/Plasma/PubUtilLib/plProgressMgr/plProgressMgr.cpp +++ b/Sources/Plasma/PubUtilLib/plProgressMgr/plProgressMgr.cpp @@ -39,7 +39,6 @@ You can contact Cyan Worlds, Inc. by email legal@cyan.com #include "hsTimer.h" #include "../plPipeline/plPlates.h" -#include "../Apps/plClient/res/resource.h" #include From ea355dc97b8fafda3070346d521e9f8e9ca0e443 Mon Sep 17 00:00:00 2001 From: Joseph Davies Date: Thu, 16 Jun 2011 23:51:24 -0700 Subject: [PATCH 15/18] Normalize cursor resource names. --- .../PubUtilLib/plInputCore/plInputDevice.h | 22 +++++++++---------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/Sources/Plasma/PubUtilLib/plInputCore/plInputDevice.h b/Sources/Plasma/PubUtilLib/plInputCore/plInputDevice.h index d9c10021..6fffe7bc 100644 --- a/Sources/Plasma/PubUtilLib/plInputCore/plInputDevice.h +++ b/Sources/Plasma/PubUtilLib/plInputCore/plInputDevice.h @@ -118,6 +118,7 @@ public: class plPlate; #define CURSOR_UP "cursor_up.png" +#define CURSOR_UPWARD "cursor_upward.png" #define CURSOR_DOWN "cursor_down.png" #define CURSOR_RIGHT "cursor_right.png" #define CURSOR_LEFT "cursor_left.png" @@ -125,19 +126,18 @@ class plPlate; #define CURSOR_GRAB "cursor_grab.png" #define CURSOR_CLICKED "cursor_clicked.png" #define CURSOR_POISED "cursor_poised.png" -#define CURSOR_ARROW "cursor_up.png" -#define CURSOR_4WAY_OPEN "bitmap1.png" -#define CURSOR_4WAY_CLOSED "bitmap3.png" -#define CURSOR_UPDOWN_CLOSED "bmp00001.png" -#define CURSOR_UPDOWN_OPEN "bitmap2.png" -#define CURSOR_LEFTRIGHT_CLOSED "bmp00003.png" -#define CURSOR_LEFTRIGHT_OPEN "bmp00002.png" -#define CURSOR_OFFER_BOOK "book.png" -#define CURSOR_OFFER_BOOK_HI "book_hig.png" -#define CURSOR_OFFER_BOOK_CLICKED "book_cli.png" +#define CURSOR_4WAY_OPEN "cursor_4way_open.png" +#define CURSOR_4WAY_CLOSED "cursor_4way_closed.png" +#define CURSOR_UPDOWN_OPEN "cursor_updown_open.png" +#define CURSOR_UPDOWN_CLOSED "cursor_updown_closed.png" +#define CURSOR_LEFTRIGHT_OPEN "cursor_leftright_open.png" +#define CURSOR_LEFTRIGHT_CLOSED "cursor_leftright_closed.png" +#define CURSOR_OFFER_BOOK "cursor_book.png" +#define CURSOR_OFFER_BOOK_HI "cursor_book_poised.png" +#define CURSOR_OFFER_BOOK_CLICKED "cursor_book_clicked.png" #define CURSOR_CLICK_DISABLED "cursor_disabled.png" #define CURSOR_HAND "cursor_up.png" -#define CURSOR_UPWARD "cursor_upward.png" +#define CURSOR_ARROW "cursor_up.png" class plInputEventMsg; From 613ceada9a985b56ce2f16b4d4cddc4596d081d6 Mon Sep 17 00:00:00 2001 From: Joseph Davies Date: Fri, 24 Jun 2011 18:04:47 -0700 Subject: [PATCH 16/18] Add automatic creation of external plClient resources. --- Sources/Plasma/Apps/plClient/CMakeLists.txt | 6 +- .../Apps/plClient/external/CMakeLists.txt | 30 + .../Apps/plClient/external/Cursor_Base.svg | 383 ++++ .../Apps/plClient/external/Linking_Book.svg | 508 ++++++ .../external/Loading_Text_rasterfont.svg | 207 +++ .../Apps/plClient/external/Voice_Chat.svg | 1595 +++++++++++++++++ .../plClient/external/create_resource_dat.py | 62 + .../Plasma/Apps/plClient/external/makeres.py | 52 + .../Apps/plClient/external/render_svg.py | 205 +++ 9 files changed, 3047 insertions(+), 1 deletion(-) create mode 100644 Sources/Plasma/Apps/plClient/external/CMakeLists.txt create mode 100644 Sources/Plasma/Apps/plClient/external/Cursor_Base.svg create mode 100644 Sources/Plasma/Apps/plClient/external/Linking_Book.svg create mode 100644 Sources/Plasma/Apps/plClient/external/Loading_Text_rasterfont.svg create mode 100644 Sources/Plasma/Apps/plClient/external/Voice_Chat.svg create mode 100644 Sources/Plasma/Apps/plClient/external/create_resource_dat.py create mode 100644 Sources/Plasma/Apps/plClient/external/makeres.py create mode 100644 Sources/Plasma/Apps/plClient/external/render_svg.py diff --git a/Sources/Plasma/Apps/plClient/CMakeLists.txt b/Sources/Plasma/Apps/plClient/CMakeLists.txt index 521994e3..fd4ccd22 100644 --- a/Sources/Plasma/Apps/plClient/CMakeLists.txt +++ b/Sources/Plasma/Apps/plClient/CMakeLists.txt @@ -15,6 +15,8 @@ include_directories(${OPENSSL_INCLUDE_DIR}) include_directories(${PYTHON_INCLUDE_DIR}) include_directories(${CURL_INCLUDE_DIR}) +add_subdirectory(external) + set(plClient_HEADERS plClient.h plClientCreatable.h @@ -40,7 +42,6 @@ set(plClient_TEXT set(plClient_RESOURCES res/plClient.rc res/resource.h - res/banner.bmp res/cnsl1.bin res/Dirt.ICO @@ -49,6 +50,9 @@ set(plClient_RESOURCES add_executable(plClient WIN32 ${plClient_SOURCES} ${plClient_HEADERS} ${plClient_TEXT} ${plClient_RESOURCES}) + +add_dependencies(plClient externalResources) + if(PLASMA_EXTERNAL_RELEASE) set_target_properties(plClient PROPERTIES OUTPUT_NAME "UruExplorer") endif(PLASMA_EXTERNAL_RELEASE) diff --git a/Sources/Plasma/Apps/plClient/external/CMakeLists.txt b/Sources/Plasma/Apps/plClient/external/CMakeLists.txt new file mode 100644 index 00000000..7de07535 --- /dev/null +++ b/Sources/Plasma/Apps/plClient/external/CMakeLists.txt @@ -0,0 +1,30 @@ +set(external_SCRIPTS + makeres.py + render_svg.py + create_resource_dat.py +) + +set(external_SOURCES + Cursor_Base.svg + Linking_Book.svg + Loading_Text_rasterfont.svg + Voice_Chat.svg +) + +if(PLASMA_EXTERNAL_RELEASE) + set(Make_Resource_Command + python ${CMAKE_CURRENT_SOURCE_DIR}/makeres.py --optimize --render --package -i ${CMAKE_CURRENT_SOURCE_DIR} -o ${CMAKE_CURRENT_BINARY_DIR}) +else(PLASMA_EXTERNAL_RELEASE) + set(Make_Resource_Command + python ${CMAKE_CURRENT_SOURCE_DIR}/makeres.py --render --package -i ${CMAKE_CURRENT_SOURCE_DIR} -o ${CMAKE_CURRENT_BINARY_DIR}) +endif(PLASMA_EXTERNAL_RELEASE) + +add_custom_command( + OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/resource.dat + COMMAND ${Make_Resource_Command} + DEPENDS ${external_SOURCES} ${external_SCRIPTS} +) +add_custom_target(externalResources DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/resource.dat) + +source_group("Source Files" FILES ${external_SOURCES}) +source_group("Script Files" FILES ${external_SCRIPTS}) diff --git a/Sources/Plasma/Apps/plClient/external/Cursor_Base.svg b/Sources/Plasma/Apps/plClient/external/Cursor_Base.svg new file mode 100644 index 00000000..737abfec --- /dev/null +++ b/Sources/Plasma/Apps/plClient/external/Cursor_Base.svg @@ -0,0 +1,383 @@ + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Sources/Plasma/Apps/plClient/external/Linking_Book.svg b/Sources/Plasma/Apps/plClient/external/Linking_Book.svg new file mode 100644 index 00000000..628b8b55 --- /dev/null +++ b/Sources/Plasma/Apps/plClient/external/Linking_Book.svg @@ -0,0 +1,508 @@ + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Sources/Plasma/Apps/plClient/external/Loading_Text_rasterfont.svg b/Sources/Plasma/Apps/plClient/external/Loading_Text_rasterfont.svg new file mode 100644 index 00000000..e93bdcbb --- /dev/null +++ b/Sources/Plasma/Apps/plClient/external/Loading_Text_rasterfont.svg @@ -0,0 +1,207 @@ + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Sources/Plasma/Apps/plClient/external/Voice_Chat.svg b/Sources/Plasma/Apps/plClient/external/Voice_Chat.svg new file mode 100644 index 00000000..42ae5ceb --- /dev/null +++ b/Sources/Plasma/Apps/plClient/external/Voice_Chat.svg @@ -0,0 +1,1595 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Sources/Plasma/Apps/plClient/external/create_resource_dat.py b/Sources/Plasma/Apps/plClient/external/create_resource_dat.py new file mode 100644 index 00000000..50374346 --- /dev/null +++ b/Sources/Plasma/Apps/plClient/external/create_resource_dat.py @@ -0,0 +1,62 @@ +#!/usr/bin/env python + +from __future__ import print_function +from __future__ import with_statement + +import os +import sys +import glob +import struct +from optparse import OptionParser + +version = 1 + +def create_resource_dat(resfilepath, inrespath): + datHeader = 0xCBBCF00D + datVersion = 0x00000001 + + ## Get list of files to archive + resourceList = glob.glob(os.path.join(inrespath, "*")) + resourceList.sort() + if len(resourceList) == 0: + print("No files found in '{0}'. Quitting.\n".format(inrespath)) + return False + print("{0} resources found in '{1}'.".format(len(resourceList), inrespath, )) + + ## Write each resource into the output file + with open(resfilepath, "wb") as datFile: + datFile.write(struct.pack(" Date: Wed, 29 Jun 2011 15:17:28 -0700 Subject: [PATCH 17/18] Fix rotation to match original clockwise direction. Cyan's resources were loaded into the array in reverse order, requiring the images to appear count-clockwise. This is no longer the case, as the array is now built in frame order. --- Sources/Plasma/Apps/plClient/external/render_svg.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Sources/Plasma/Apps/plClient/external/render_svg.py b/Sources/Plasma/Apps/plClient/external/render_svg.py index bd85ca60..b8d103c5 100644 --- a/Sources/Plasma/Apps/plClient/external/render_svg.py +++ b/Sources/Plasma/Apps/plClient/external/render_svg.py @@ -125,7 +125,7 @@ def render_loading_books(inpath, outpath): enable_only_layers(["circles"],layers) svg = rsvg.Handle(data=bookSVG.toxml()) ctx.translate(resSize["height"] / 2, resSize["width"] / 2) - ctx.rotate(math.radians(angle*(-5))) + ctx.rotate(math.radians(angle*(5))) ctx.translate(-resSize["width"] / 2, -resSize["height"] / 2) ctx.scale(ratioW, ratioH) svg.render_cairo(ctx) From 9dbb5ab2352287bfba0855ecae496d7e90549519 Mon Sep 17 00:00:00 2001 From: Joseph Davies Date: Sat, 2 Jul 2011 11:37:40 -0700 Subject: [PATCH 18/18] Changed font for UPDATING text image to match original. --- .../external/Loading_Text_rasterfont.svg | 61 +++++++++++-------- 1 file changed, 35 insertions(+), 26 deletions(-) diff --git a/Sources/Plasma/Apps/plClient/external/Loading_Text_rasterfont.svg b/Sources/Plasma/Apps/plClient/external/Loading_Text_rasterfont.svg index e93bdcbb..9e9ef2c4 100644 --- a/Sources/Plasma/Apps/plClient/external/Loading_Text_rasterfont.svg +++ b/Sources/Plasma/Apps/plClient/external/Loading_Text_rasterfont.svg @@ -25,7 +25,7 @@ inkscape:pageopacity="0.0" inkscape:pageshadow="2" inkscape:zoom="0.74023945" - inkscape:cx="358.16382" + inkscape:cx="563.12545" inkscape:cy="89.24182" inkscape:document-units="px" inkscape:current-layer="textUpdating" @@ -168,40 +168,49 @@ style="display:inline" transform="translate(314.84811,-319.4097)"> + inkscape:connector-curvature="0" + d="m 25.320627,483.66859 c -0.03675,10.74324 -1.283395,18.73646 -3.739951,23.97969 -3.483362,7.91992 -9.936606,11.87987 -19.3597511,11.87985 -15.5831789,0.0367 -23.3564039,-11.91648 -23.3196999,-35.85954 l 0,-73.25906 c 0.0045,-3.63898 0.105376,-6.8656 0.302495,-9.67987 0.197045,-2.814 0.462875,-5.16063 0.797491,-7.03991 l -29.919615,0 c 0.623315,5.97672 0.916645,10.52333 0.879989,13.63982 l 0.219997,80.07897 c -8e-6,16.05983 4.399931,29.25965 13.19983,39.59949 9.203186,10.74319 21.816345,16.09645 37.8395129,16.05979 15.6197241,-0.0367 28.1595501,-5.46326 37.6195161,-16.27979 8.79978,-10.37651 13.199719,-23.50299 13.19983,-39.37949 l 0,-71.93907 0,-8.1399 c 0.10072,-2.86441 0.229051,-5.44021 0.384995,-7.7274 0.155722,-2.28691 0.394052,-4.25771 0.71499,-5.91242 l -30.139612,0 c 0.439913,1.86095 0.769907,3.91425 0.989984,6.15992 0.219913,2.24594 0.329913,4.73924 0.329999,7.4799 z" + style="font-family:Collegiate;-inkscape-font-specification:Collegiate Bold" + id="path2998-1" /> + inkscape:connector-curvature="0" + d="m 117.16073,506.1083 c 14.26308,-5.93988 25.77626,-14.07977 34.53956,-24.41969 9.93644,-11.91644 14.92304,-25.04292 14.9598,-39.37949 -1e-4,-14.11637 -5.06003,-25.70288 -15.1798,-34.75955 -10.15661,-9.23974 -23.50309,-13.85968 -40.03949,-13.85982 l -32.99957,0 c 0.325401,1.86095 0.554564,4.51924 0.687489,7.97489 0.132902,3.45592 0.197068,7.7642 0.192499,12.92484 l 0,105.15864 c 0.03666,7.66325 -0.256673,14.55649 -0.879988,20.67974 l 28.59963,0 c -0.3392,-1.7554 -0.59587,-4.34953 -0.76999,-7.7824 -0.17421,-3.43286 -0.21087,-7.73197 -0.11,-12.89734 l 0,-7.6999 z m -5.05993,-88.43886 c 7.51652,1.2e-4 13.8231,2.20009 18.91975,6.59991 5.71986,4.87672 8.57982,11.4033 8.57989,19.57975 -0.0367,8.57998 -3.70335,16.71986 -10.99986,24.41969 -6.37997,6.81997 -13.85987,11.8799 -22.43971,15.1798 l 0,-65.77915 z" + style="font-family:Collegiate;-inkscape-font-specification:Collegiate Bold" + id="path3000-7" /> + inkscape:connector-curvature="0" + d="m 188.44123,393.68975 c 0.62331,3.33676 0.91664,10.30333 0.87999,20.89973 l 0,105.15864 c 0.0366,10.08322 -0.25667,16.97646 -0.87999,20.67974 l 45.97941,0 c 20.86298,0 35.23612,-6.81991 43.11944,-20.45974 6.34315,-10.96316 9.49643,-28.85624 9.45988,-53.67931 -0.0368,-48.39925 -19.32317,-72.59892 -57.85925,-72.59906 z m 71.27908,86.89888 c 0.0778,12.75529 -2.82796,21.94933 -8.71739,27.58214 -5.88958,5.63287 -15.23028,8.392 -28.02213,8.2774 l -6.81992,0 0,-98.99873 5.49993,0 c 14.73975,-0.0365 24.85961,3.11675 30.35961,9.45988 5.09652,5.68337 7.66315,15.87656 7.6999,30.5796 z" + style="font-family:Collegiate;-inkscape-font-specification:Collegiate Bold" + id="path3002-4" /> + inkscape:connector-curvature="0" + d="m 328.51225,540.42786 c 0.0366,-2.01664 1.06329,-6.78324 3.07996,-14.29982 l 5.05993,-17.81977 38.27951,0 4.39994,17.81977 c 0.87991,3.6208 1.5399,6.60909 1.97998,8.96489 0.43991,2.3558 0.65991,4.13411 0.65999,5.33493 l 30.57961,0 -8.57989,-32.11959 5.27993,0 0,-23.3197 -11.43985,0 -24.19969,-91.29882 -32.55958,0 -38.71951,146.73811 z m 28.15964,-104.49866 12.31984,49.05937 -25.95967,0 z" + style="font-family:Collegiate;-inkscape-font-specification:Collegiate Bold" + id="path3004-0" /> + inkscape:connector-curvature="0" + d="m 497.1829,417.66944 c 4.0607,1.2e-4 7.43398,0.0551 10.11987,0.165 2.68571,0.11012 4.73901,0.27511 6.15992,0.49499 l 0,-24.63968 -90.85883,0 0,24.63968 c 2.45663,-0.43987 7.88322,-0.65987 16.27979,-0.65999 l 15.6198,0 0,102.07868 c 0.0366,9.86322 -0.2567,16.75646 -0.87999,20.67974 l 28.81963,0 c -0.62339,-3.11662 -0.91672,-9.8632 -0.87999,-20.23974 l 0,-102.51868 15.6198,0 z" + style="font-family:Collegiate;-inkscape-font-specification:Collegiate Bold" + id="path3006-9" /> + inkscape:connector-curvature="0" + d="m 561.23086,540.42786 c -0.62337,-3.55662 -0.9167,-10.30319 -0.87999,-20.23974 l 0,-106.25863 c -0.0367,-10.1564 0.25662,-16.90298 0.87999,-20.23974 l -29.91962,0 c 0.3254,1.43929 0.55457,3.89592 0.68749,7.3699 0.1329,3.47426 0.19707,7.91086 0.1925,13.30983 l 0,105.37864 c 0.005,4.95912 -0.0596,9.17573 -0.1925,12.64984 -0.13292,3.47412 -0.36209,6.15075 -0.68749,8.0299 z" + style="font-family:Collegiate;-inkscape-font-specification:Collegiate Bold" + id="path3008-4" /> + inkscape:connector-curvature="0" + d="m 681.95847,540.64785 c -0.62343,-5.46326 -0.91676,-14.11647 -0.87998,-25.95966 l 0,-97.01875 c -1.1e-4,-8.79976 0.21989,-16.93965 0.65999,-24.41969 l -27.71965,0 c 0.69658,7.70004 1.06324,15.83993 1.09999,24.41969 l 0,46.4194 -43.11944,-70.39909 -29.25963,0 6.59992,12.09984 0,108.01861 c 0.005,5.60078 -0.0596,10.62404 -0.1925,15.0698 -0.13293,4.44578 -0.36209,8.36906 -0.68749,11.76985 l 27.93964,0 c -0.62337,-7.22323 -0.9167,-15.43645 -0.87999,-24.63968 l 0,-69.7391 39.59949,64.01917 c -0.11008,0.55919 -0.16508,1.47584 -0.165,2.74997 -7e-5,1.27417 0.0549,2.85082 0.165,4.72994 -0.0367,5.75661 -0.4034,13.38317 -1.09999,22.8797 z" + style="font-family:Collegiate;-inkscape-font-specification:Collegiate Bold" + id="path3010-8" /> + inkscape:connector-curvature="0" + d="m 801.81037,540.42786 c 1.97987,0.21999 3.51985,0.21999 4.61994,0 -0.0368,-1.4254 -0.18344,-3.85454 -0.44,-7.28741 -0.25677,-3.43287 -0.40343,-7.23698 -0.43999,-11.41235 l 0,-25.51967 c -0.005,-3.84074 0.0595,-7.48903 0.1925,-10.94487 0.1328,-3.45573 0.36197,-6.77401 0.68749,-9.95487 l -26.83966,0 c 0.47658,9.67994 0.62325,15.39986 0.44,17.15978 0.0366,17.59981 -7.07665,26.39969 -21.33973,26.39966 -17.41648,-0.0366 -26.14303,-17.34306 -26.17966,-51.91933 -3e-5,-34.13612 10.77982,-51.22255 32.33958,-51.25934 10.33979,-0.0365 20.23966,3.99674 29.69962,12.09985 l 0,-25.07968 c -8.35998,-7.29643 -18.25984,-10.96305 -29.69962,-10.99986 -19.95104,0.0827 -35.04833,6.46256 -45.29192,19.13975 -10.24362,12.67746 -15.38605,31.1572 -15.4273,55.43929 0.0367,50.85603 18.22308,76.30235 54.5593,76.33902 8.13983,-0.0367 15.39973,-1.72331 21.77972,-5.05994 5.05985,-2.82329 8.5798,-5.97658 10.55987,-9.45987 z" + style="font-family:Collegiate;-inkscape-font-specification:Collegiate Bold" + id="path3012" />