From 94dcc72f13094157f344f284aec4edf0c0f5faa1 Mon Sep 17 00:00:00 2001 From: George Hazan Date: Sun, 11 Aug 2013 10:41:37 +0000 Subject: ProtoGetAvatarFormat, ProtoGetAvatarFileFormat, ProtoGetBufferFormat, ProtoGetAvatarExtension - standard helpers for protocol avatars' processing instead of the zoo that existed previously git-svn-id: http://svn.miranda-ng.org/main/trunk@5645 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c --- src/mir_core/protos.cpp | 100 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 100 insertions(+) (limited to 'src/mir_core/protos.cpp') diff --git a/src/mir_core/protos.cpp b/src/mir_core/protos.cpp index 098bf280d4..369f8b7abd 100644 --- a/src/mir_core/protos.cpp +++ b/src/mir_core/protos.cpp @@ -141,3 +141,103 @@ MIR_CORE_DLL(HANDLE) ProtoForkThreadEx(PROTO_INTERFACE *pThis, ProtoThreadFunc p UINT lthreadID; return (HANDLE)::mir_forkthreadowner((pThreadFuncOwner) *(void**)&pFunc, pThis, param, threadID ? threadID : <hreadID); } + +///////////////////////////////////////////////////////////////////////////////////////// + +MIR_CORE_DLL(LPCTSTR) ProtoGetAvatarExtension(int format) +{ + if (format == PA_FORMAT_PNG) + return _T(".png"); + if (format == PA_FORMAT_JPEG) + return _T(".jpg"); + if (format == PA_FORMAT_ICON) + return _T(".ico"); + if (format == PA_FORMAT_BMP) + return _T(".bmp"); + if (format == PA_FORMAT_GIF) + return _T(".gif"); + if (format == PA_FORMAT_SWF) + return _T(".swf"); + if (format == PA_FORMAT_XML) + return _T(".xml"); + + return _T(""); +} + +MIR_CORE_DLL(int) ProtoGetAvatarFormat(const TCHAR *ptszFileName) +{ + if (ptszFileName == NULL) + return PA_FORMAT_UNKNOWN; + + const TCHAR *ptszExt = _tcsrchr(ptszFileName, '.'); + if (ptszExt == NULL) + return PA_FORMAT_UNKNOWN; + + if (!_tcsicmp(ptszExt, _T(".png"))) + return PA_FORMAT_PNG; + + if (!_tcsicmp(ptszExt, _T(".jpg")) || !_tcsicmp(ptszExt, _T(".jpeg"))) + return PA_FORMAT_JPEG; + + if (!_tcsicmp(ptszExt, _T(".ico"))) + return PA_FORMAT_ICON; + + if (!_tcsicmp(ptszExt, _T(".bmp")) || _tcsicmp(ptszExt, _T(".rle"))) + return PA_FORMAT_BMP; + + if (!_tcsicmp(ptszExt, _T(".gif"))) + return PA_FORMAT_GIF; + + if (!_tcsicmp(ptszExt, _T(".swf"))) + return PA_FORMAT_SWF; + + if (!_tcsicmp(ptszExt, _T(".xml"))) + return PA_FORMAT_XML; + + return PA_FORMAT_UNKNOWN; +} + +MIR_CORE_DLL(int) ProtoGetBufferFormat(const void *pBuffer, const TCHAR **ptszExtension) +{ + if (!memcmp(pBuffer, "%PNG", 4)) { + if (ptszExtension) *ptszExtension = _T(".png"); + return PA_FORMAT_PNG; + } + + if (!memcmp(pBuffer, "GIF8", 4)) { + if (ptszExtension) *ptszExtension = _T(".gif"); + return PA_FORMAT_GIF; + } + + if (!memicmp(pBuffer, "