diff options
-rw-r--r-- | include/m_protocols.h | 1 | ||||
-rw-r--r-- | src/mir_app/src/proto_utils.cpp | 13 |
2 files changed, 13 insertions, 1 deletions
diff --git a/include/m_protocols.h b/include/m_protocols.h index ae22742824..27a3963f1f 100644 --- a/include/m_protocols.h +++ b/include/m_protocols.h @@ -375,6 +375,7 @@ ProtoBroadcastAck(), listeners must hook ME_PROTO_ACK, note that lParam = ACKDAT #define PA_FORMAT_GIF 5
#define PA_FORMAT_SWF 6
#define PA_FORMAT_XML 7
+#define PA_FORMAT_WEBP 8
typedef struct {
MCONTACT hContact; // this might have to be set by the caller too
diff --git a/src/mir_app/src/proto_utils.cpp b/src/mir_app/src/proto_utils.cpp index 771ebc9cff..98b55fcdf8 100644 --- a/src/mir_app/src/proto_utils.cpp +++ b/src/mir_app/src/proto_utils.cpp @@ -209,6 +209,8 @@ MIR_APP_DLL(LPCTSTR) ProtoGetAvatarExtension(int format) return L".swf";
if (format == PA_FORMAT_XML)
return L".xml";
+ if (format == PA_FORMAT_WEBP)
+ return L".webp";
return L"";
}
@@ -243,6 +245,9 @@ MIR_APP_DLL(int) ProtoGetAvatarFormat(const wchar_t *ptszFileName) if (!wcsicmp(ptszExt, L".xml"))
return PA_FORMAT_XML;
+ if (!wcsicmp(ptszExt, L".webp"))
+ return PA_FORMAT_WEBP;
+
return PA_FORMAT_UNKNOWN;
}
@@ -273,6 +278,11 @@ MIR_APP_DLL(int) ProtoGetBufferFormat(const void *pBuffer, const wchar_t **ptszE if (ptszExtension) *ptszExtension = L".bmp";
return PA_FORMAT_BMP;
}
+
+ if (!memcmp(pBuffer, "RIFF", 4) && !memcmp((char*)pBuffer+8, "WEBP", 4)) {
+ if (ptszExtension) *ptszExtension = L".webp";
+ return PA_FORMAT_WEBP;
+ }
}
if (ptszExtension) *ptszExtension = L"";
@@ -305,7 +315,8 @@ static char *wszMimeTypes[] = "image/bmp", // PA_FORMAT_BMP
"image/gif", // PA_FORMAT_GIF
"image/swf", // PA_FORMAT_SWF
- "application/xml" // PA_FORMAT_XML
+ "application/xml", // PA_FORMAT_XML
+ "image/webp", // PA_FORMAT_WEBP
};
MIR_APP_DLL(const char*) ProtoGetAvatarMimeType(int iFileType)
|