diff --git a/Sources/Plasma/CoreLib/CMakeLists.txt b/Sources/Plasma/CoreLib/CMakeLists.txt index ecbc18e4..e87d7754 100644 --- a/Sources/Plasma/CoreLib/CMakeLists.txt +++ b/Sources/Plasma/CoreLib/CMakeLists.txt @@ -82,7 +82,6 @@ set(CoreLib_HEADERS plGeneric.h plLoadMask.h plQuality.h - plRefCnt.h plString.h plTweak.h plViewTransform.h diff --git a/Sources/Plasma/CoreLib/HeadSpin.h b/Sources/Plasma/CoreLib/HeadSpin.h index 787d6ff9..9a51bf29 100644 --- a/Sources/Plasma/CoreLib/HeadSpin.h +++ b/Sources/Plasma/CoreLib/HeadSpin.h @@ -246,43 +246,6 @@ inline void hsSwap(float& a, float& b) b = c; } -//====================================== -// Color32 Type -//====================================== -struct hsColor32 { - - uint8_t b, g, r, a; - - inline void SetARGB(uint8_t aa, uint8_t rr, uint8_t gg, uint8_t bb) - { - this->a = aa; - this->r = rr; - this->g = gg; - this->b = bb; - } - - // Compatibility inlines, should be depricated - inline void Set(uint8_t rr, uint8_t gg, uint8_t bb) - { - this->r = rr; - this->g = gg; - this->b = bb; - } - inline void Set(uint8_t aa, uint8_t rr, uint8_t gg, uint8_t bb) - { - this->SetARGB(aa, rr, gg, bb); - } - - int operator==(const hsColor32& aa) const - { - return *(uint32_t*)&aa == *(uint32_t*)this; - } - int operator!=(const hsColor32& aa) { return !(aa == *this); } -}; -hsCTypeDefStruct(hsColor32) -typedef hsColor32 hsRGBAColor32; - - //=========================================================================== // Define a NOOP (null) statement //=========================================================================== diff --git a/Sources/Plasma/CoreLib/hsColorRGBA.h b/Sources/Plasma/CoreLib/hsColorRGBA.h index 7cc1f7d0..21010db3 100644 --- a/Sources/Plasma/CoreLib/hsColorRGBA.h +++ b/Sources/Plasma/CoreLib/hsColorRGBA.h @@ -45,6 +45,39 @@ You can contact Cyan Worlds, Inc. by email legal@cyan.com #include "hsStream.h" +struct hsColor32 { + + uint8_t b, g, r, a; + + inline void SetARGB(uint8_t aa, uint8_t rr, uint8_t gg, uint8_t bb) + { + this->a = aa; + this->r = rr; + this->g = gg; + this->b = bb; + } + + // Compatibility inlines, should be depricated + inline void Set(uint8_t rr, uint8_t gg, uint8_t bb) + { + this->r = rr; + this->g = gg; + this->b = bb; + } + inline void Set(uint8_t aa, uint8_t rr, uint8_t gg, uint8_t bb) + { + this->SetARGB(aa, rr, gg, bb); + } + + int operator==(const hsColor32& aa) const + { + return *(uint32_t*)&aa == *(uint32_t*)this; + } + int operator!=(const hsColor32& aa) { return !(aa == *this); } +}; +hsCTypeDefStruct(hsColor32) +typedef hsColor32 hsRGBAColor32; + struct hsColorRGBA { float r,g,b,a; diff --git a/Sources/Plasma/CoreLib/hsSTLStream.cpp b/Sources/Plasma/CoreLib/hsSTLStream.cpp index 8427e66b..23211b79 100644 --- a/Sources/Plasma/CoreLib/hsSTLStream.cpp +++ b/Sources/Plasma/CoreLib/hsSTLStream.cpp @@ -153,241 +153,3 @@ const void *hsVectorStream::GetData() else return nil; } - -///////////////////////////////////////////////////////////////////////////////////////// - -#ifdef HS_BUILD_FOR_WIN32 - -hsNamedPipeStream::hsNamedPipeStream(uint8_t flags, uint32_t timeout) : - fFlags(flags), - fPipe(INVALID_HANDLE_VALUE), - fReadMode(false), - fTimeout(timeout) -{ - memset(&fOverlap, 0, sizeof(OVERLAPPED)); - fOverlap.hEvent = CreateEvent(NULL, TRUE, TRUE, NULL); -} - -hsNamedPipeStream::~hsNamedPipeStream() -{ - CloseHandle(fOverlap.hEvent); - fOverlap.hEvent = INVALID_HANDLE_VALUE; -} - -bool hsNamedPipeStream::WaitForClientConnect() -{ - // Look for a client connect (this should return zero since it's overlapped) - BOOL ret = ConnectNamedPipe(fPipe, &fOverlap); - if (ret) - return true; - else - { - switch (GetLastError()) - { - // Waiting for client to connect - case ERROR_IO_PENDING: - if (WaitForSingleObject(fOverlap.hEvent, fTimeout) == WAIT_OBJECT_0) - return true; - break; - - // Client is already connected - case ERROR_PIPE_CONNECTED: -// if (SetEvent(fOverlap.hEvent)) - return true; - break; - } - } - - return false; -} - -bool hsNamedPipeStream::Open(const char *name, const char *mode) -{ - wchar_t* wName = hsStringToWString(name); - wchar_t* wMode = hsStringToWString(mode); - bool ret = Open(wName, wMode); - delete [] wName; - delete [] wMode; - return ret; -} - -bool hsNamedPipeStream::Open(const wchar_t *name, const wchar_t *mode) -{ - if (wcschr(mode, L'w')) - { - fReadMode = false; - - // Try to create the pipe - fPipe = CreateNamedPipeW(name, - PIPE_ACCESS_OUTBOUND | FILE_FLAG_OVERLAPPED, - PIPE_TYPE_BYTE, - 1, - 1024, - 1024, - fTimeout, - NULL); - - if (fPipe != INVALID_HANDLE_VALUE) - return true; - } - else if (wcschr(mode, L'r')) - { - fReadMode = true; - - fPipe = CreateFileW(name, - GENERIC_READ, - 0, // no sharing - NULL, // no security attributes - OPEN_EXISTING, // opens existing pipe - FILE_FLAG_OVERLAPPED, // default attributes - NULL); // no template file - - if (fPipe != INVALID_HANDLE_VALUE) - return true; - } - - return false; -} - -bool hsNamedPipeStream::Close() -{ - if (fPipe == INVALID_HANDLE_VALUE) - return false; - - if (fReadMode) - { - CloseHandle(fPipe); // Close our end of the pipe - fPipe = INVALID_HANDLE_VALUE; - } - else - { - FlushFileBuffers(fPipe); // Make sure the client is done reading - DisconnectNamedPipe(fPipe); // Disconnect the pipe from the client - CloseHandle(fPipe); // Close our end of the pipe - fPipe = INVALID_HANDLE_VALUE; - } - - return true; -} - -bool hsNamedPipeStream::ICheckOverlappedResult(BOOL result, uint32_t &numTransferred) -{ - // Read/Write succeeded, return now - if (result) - return true; - // Read failed because the operation is taking a while. Wait for it - else if (GetLastError() == ERROR_IO_PENDING) - { - if (WaitForSingleObject(fOverlap.hEvent, fTimeout) == WAIT_OBJECT_0) - { - BOOL oResult = GetOverlappedResult(fPipe, &fOverlap, (LPDWORD)&numTransferred, FALSE); - if (oResult) - return true; - hsAssert(oResult, "GetOverlappedResult failed"); - } - else - hsAssert(0, "Wait failed"); - } - else - hsAssert(0, "Read/Write failed"); - - return false; -} - -bool hsNamedPipeStream::IRead(uint32_t byteCount, void *buffer, uint32_t &numRead) -{ - numRead = 0; - - if (fPipe != INVALID_HANDLE_VALUE && fReadMode) - { - BOOL result = ReadFile(fPipe, buffer, byteCount, (LPDWORD)&numRead, &fOverlap); - if (ICheckOverlappedResult(result, numRead)) - return true; - } - - // If we got here, the pipe is probably broken. Throw if it is enabled. - if (fFlags & kThrowOnError) - throw this; - - return false; -} - -bool hsNamedPipeStream::IWrite(uint32_t byteCount, const void *buffer, uint32_t &numWritten) -{ - numWritten = 0; - - if (fPipe != INVALID_HANDLE_VALUE && !fReadMode) - { - BOOL result = WriteFile(fPipe, buffer, byteCount, (LPDWORD)&numWritten, &fOverlap); - if (ICheckOverlappedResult(result, numWritten)) - return true; - } - - // If we got here, the pipe is probably broken. Throw if it is enabled. - if (fFlags & kThrowOnError) - throw this; - - return false; -} - -uint32_t hsNamedPipeStream::Read(uint32_t byteCount, void *buffer) -{ - uint32_t totalRead = 0; - - // Read until we get all our data or an error - uint32_t numRead = 0; - while (IRead(byteCount-totalRead, (void*)((uint32_t)buffer+totalRead), numRead)) - { - totalRead += numRead; - - if (totalRead >= byteCount) - return totalRead; - } - - return totalRead; -} - -uint32_t hsNamedPipeStream::Write(uint32_t byteCount, const void *buffer) -{ - uint32_t totalWritten = 0; - - // Write until we get all our data or an error - uint32_t numWritten = 0; - while (IWrite(byteCount-totalWritten, (const void*)((uint32_t)buffer+totalWritten), numWritten)) - { - totalWritten += numWritten; - - if (totalWritten >= byteCount) - return totalWritten; - } - - return totalWritten; -} - -#ifdef __SGI_STL_PORT -using std::min; -#endif - -void hsNamedPipeStream::Skip(uint32_t deltaByteCount) -{ - char buf[256]; - - // Read until we get all our data or an error - uint32_t totalRead = 0; - uint32_t numRead = 0; - while (IRead(min((uint32_t)256L, deltaByteCount-totalRead), buf, numRead)) - { - totalRead += numRead; - - if (totalRead >= deltaByteCount) - return; - } - -} - -void hsNamedPipeStream::Rewind() -{ - hsAssert(0, "Rewind not allowed on a pipe"); -} - -#endif // HS_BUILD_FOR_WIN32 diff --git a/Sources/Plasma/CoreLib/hsSTLStream.h b/Sources/Plasma/CoreLib/hsSTLStream.h index 05711a18..40d8af9c 100644 --- a/Sources/Plasma/CoreLib/hsSTLStream.h +++ b/Sources/Plasma/CoreLib/hsSTLStream.h @@ -82,48 +82,3 @@ public: // In case you want to try and be efficient with your memory allocations void Reserve(uint32_t bytes) { fVector.reserve(bytes); } }; - -#ifdef HS_BUILD_FOR_WIN32 - - - -class hsNamedPipeStream : public hsStream -{ -protected: - HANDLE fPipe; - OVERLAPPED fOverlap; - bool fReadMode; // True for read, false for write - uint8_t fFlags; - uint32_t fTimeout; - - bool ICheckOverlappedResult(BOOL result, uint32_t &numTransferred); - bool IRead(uint32_t byteCount, void *buffer, uint32_t &numRead); - bool IWrite(uint32_t byteCount, const void *buffer, uint32_t &numWritten); - -public: - enum { kThrowOnError = 1 }; // Throws if a read or write operation fails - - hsNamedPipeStream(uint8_t flags=0, uint32_t timeout=INFINITE); - virtual ~hsNamedPipeStream(); - - // The server (writer) and client (reader) need to open the same file. - // The format is "\\.\pipe\pipeName". The '.' can be replaced with a - // computer name to do it over the network. 'pipeName' is whatever you - // want. - virtual bool Open(const char *name, const char *mode); - virtual bool Open(const wchar_t *name, const wchar_t *mode); - virtual bool Close(); - - virtual uint32_t Read(uint32_t byteCount, void *buffer); - virtual uint32_t Write(uint32_t byteCount, const void *buffer); - virtual void Skip(uint32_t deltaByteCount); - virtual void Rewind(); - - // - For the server (writer) only - - // After calling open, signal your client to start reading and call this function. - // If a client connects, this will return true and you can start writing. If it - // returns false, close the pipe, it ain't happening. - bool WaitForClientConnect(); -}; - -#endif // HS_BUILD_FOR_WIN32 diff --git a/Sources/Plasma/CoreLib/hsStream.h b/Sources/Plasma/CoreLib/hsStream.h index 00f61e17..be037e06 100644 --- a/Sources/Plasma/CoreLib/hsStream.h +++ b/Sources/Plasma/CoreLib/hsStream.h @@ -48,9 +48,6 @@ You can contact Cyan Worlds, Inc. by email legal@cyan.com #include "hsMemory.h" #include "plString.h" -namespace hsPackFileSys { -struct FileEntry; -} // Define this for use of Streams with Logging (commonly used w/ a packet sniffer) // These streams log their reads to an event list @@ -77,10 +74,6 @@ enum { kEolnCode = '\n', kComment = '#' }; -enum VDB_Type {// Virtual Database type - kVDB_GroupObject, - kVDB_Mesh - }; protected: uint32_t fBytesRead; uint32_t fPosition; @@ -287,9 +280,6 @@ public: void WriteLE(uint32_t* tag, uint32_t size) { WriteLEAtom(*tag, size); } void ReadLE(uint32_t* tag, uint32_t *size) { *tag = ReadLEAtom(size); } /* Overloaded End */ - virtual void VirtualSetPosition(uint32_t pos, VDB_Type ){ SetPosition(pos); }; - virtual hsPackFileSys::FileEntry *GetFileEntry() { return nil; } // Streams from Packfiles can return a FileEntry - }; class hsStreamable { diff --git a/Sources/Plasma/CoreLib/plRefCnt.h b/Sources/Plasma/CoreLib/plRefCnt.h deleted file mode 100644 index 4344d0ce..00000000 --- a/Sources/Plasma/CoreLib/plRefCnt.h +++ /dev/null @@ -1,89 +0,0 @@ -/*==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 . - -Additional permissions under GNU GPL version 3 section 7 - -If you modify this Program, or any covered work, by linking or -combining it with any of RAD Game Tools Bink SDK, Autodesk 3ds Max SDK, -NVIDIA PhysX SDK, Microsoft DirectX SDK, OpenSSL library, Independent -JPEG Group JPEG library, Microsoft Windows Media SDK, or Apple QuickTime SDK -(or a modified version of those libraries), -containing parts covered by the terms of the Bink SDK EULA, 3ds Max EULA, -PhysX SDK EULA, DirectX SDK EULA, OpenSSL and SSLeay licenses, IJG -JPEG Library README, Windows Media SDK EULA, or QuickTime SDK EULA, the -licensors of this Program grant you additional -permission to convey the resulting work. Corresponding Source for a -non-source form of such a combination shall include the source code for -the parts of OpenSSL and IJG JPEG Library used as well as that of the covered -work. - -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 plRefCnt_Defined -#define plRefCnt_Defined - -#include "HeadSpin.h" - -// plRef count addes refcount abilities to any plCreatable - -class plRefCnt -{ uint32_t fRefCnt; -public: - plRefCnt() : fRefCnt(1){} - ~plRefCnt(){} - bool TimeToDelete() { return (fRefCnt == 1); } - void Incr() { fRefCnt++; } - void Decr() { fRefCnt--; } -}; - - -#define DEFINE_REF_COUNT plRefCnt fMyRef;\ - virtual void UnRef() { /*hsDebugCode(hsThrowIfFalse(fRefCnt >= 1);)*/if (fMyRef.TimeToDelete()) delete this; else fMyRef.Decr(); }\ - virtual void Ref() { fMyRef.Incr(); } -/* -class hsRefCnt { -private: - int32_t fRefCnt; -public: - hsRefCnt() : fRefCnt(1) {} - virtual ~hsRefCnt(); - - int32_t RefCnt() const { return fRefCnt; } - virtual void UnRef(); - virtual void Ref(); -}; - -#define hsRefCnt_SafeRef(obj) do { if (obj) (obj)->Ref(); } while (0) -#define hsRefCnt_SafeUnRef(obj) do { if (obj) (obj)->UnRef(); } while (0) - -#define hsRefCnt_SafeAssign(dst, src) \ - do { \ - hsRefCnt_SafeRef(src); \ - hsRefCnt_SafeUnRef(dst); \ - dst = src; \ - } while (0) - -*/ - -#endif - diff --git a/Sources/Plasma/PubUtilLib/plGImage/hsDXTDirectXCodec.cpp b/Sources/Plasma/PubUtilLib/plGImage/hsDXTDirectXCodec.cpp index 57a50513..9933bdf9 100644 --- a/Sources/Plasma/PubUtilLib/plGImage/hsDXTDirectXCodec.cpp +++ b/Sources/Plasma/PubUtilLib/plGImage/hsDXTDirectXCodec.cpp @@ -59,6 +59,7 @@ You can contact Cyan Worlds, Inc. by email legal@cyan.com #endif #include "hsDXTDirectXCodec.h" +#include "hsColorRGBA.h" #include "plMipmap.h" #include "hsCodecManager.h" #include "plPipeline/hsGDDrawDllLoad.h" diff --git a/Sources/Plasma/PubUtilLib/plGImage/hsDXTDirectXCodec.h b/Sources/Plasma/PubUtilLib/plGImage/hsDXTDirectXCodec.h index a7a223f2..d614ac91 100644 --- a/Sources/Plasma/PubUtilLib/plGImage/hsDXTDirectXCodec.h +++ b/Sources/Plasma/PubUtilLib/plGImage/hsDXTDirectXCodec.h @@ -54,11 +54,10 @@ You can contact Cyan Worlds, Inc. by email legal@cyan.com #ifndef hsDXTDirectXCodec_inc #define hsDXTDirectXCodec_inc - - #include "hsCodec.h" class plMipmap; +typedef struct hsColor32 hsRGBAColor32; #if HS_BUILD_FOR_WIN32 struct IDirect3DDevice8; struct IDirectDrawSurface7; diff --git a/Sources/Plasma/PubUtilLib/plGImage/hsDXTSoftwareCodec.cpp b/Sources/Plasma/PubUtilLib/plGImage/hsDXTSoftwareCodec.cpp index 0d701215..4de8ea7f 100644 --- a/Sources/Plasma/PubUtilLib/plGImage/hsDXTSoftwareCodec.cpp +++ b/Sources/Plasma/PubUtilLib/plGImage/hsDXTSoftwareCodec.cpp @@ -41,6 +41,7 @@ You can contact Cyan Worlds, Inc. by email legal@cyan.com *==LICENSE==*/ #include #include "HeadSpin.h" +#include "hsColorRGBA.h" #include "hsDXTSoftwareCodec.h" #include "plMipmap.h" #include "hsCodecManager.h" diff --git a/Sources/Plasma/PubUtilLib/plGImage/hsDXTSoftwareCodec.h b/Sources/Plasma/PubUtilLib/plGImage/hsDXTSoftwareCodec.h index 4cc1e45e..23899b13 100644 --- a/Sources/Plasma/PubUtilLib/plGImage/hsDXTSoftwareCodec.h +++ b/Sources/Plasma/PubUtilLib/plGImage/hsDXTSoftwareCodec.h @@ -46,6 +46,7 @@ You can contact Cyan Worlds, Inc. by email legal@cyan.com #include "hsCodec.h" class plMipmap; +typedef struct hsColor32 hsRGBAColor32; class hsDXTSoftwareCodec : public hsCodec { diff --git a/Sources/Plasma/PubUtilLib/plGImage/plTGAWriter.cpp b/Sources/Plasma/PubUtilLib/plGImage/plTGAWriter.cpp index becc96f5..d7cb8172 100644 --- a/Sources/Plasma/PubUtilLib/plGImage/plTGAWriter.cpp +++ b/Sources/Plasma/PubUtilLib/plGImage/plTGAWriter.cpp @@ -53,6 +53,7 @@ You can contact Cyan Worlds, Inc. by email legal@cyan.com #include "HeadSpin.h" #include "plTGAWriter.h" +#include "hsColorRGBA.h" #include "plMipmap.h" #include "hsStream.h"