[SCM] exiv2 packaging branch, master, updated. debian/0.25-3.1-3734-gdcbc29a
Maximiliano Curia
maxy at moszumanska.debian.org
Thu Jul 13 17:42:36 UTC 2017
Gitweb-URL: http://git.debian.org/?p=pkg-kde/kde-extras/exiv2.git;a=commitdiff;h=72bdc99
The following commit has been merged in the master branch:
commit 72bdc994f08be8095b244bf409192f4997eeab7a
Author: vog <vog at notjusthosting.com>
Date: Mon Jul 18 15:24:35 2011 +0000
Added helper function decodeHex() that is needed to decode some types of EPS previews
---
src/preview.cpp | 39 +++++++++++++++++++++++++++++++++++++++
1 file changed, 39 insertions(+)
diff --git a/src/preview.cpp b/src/preview.cpp
index 40e9e73..aa289fe 100644
--- a/src/preview.cpp
+++ b/src/preview.cpp
@@ -68,6 +68,11 @@ namespace {
}
/*!
+ @brief Decode a Hex string.
+ */
+ DataBuf decodeHex(const byte *src, long srcSize);
+
+ /*!
@brief Decode a Base64 string.
*/
DataBuf decodeBase64(const std::string &src);
@@ -865,6 +870,40 @@ namespace {
return valid();
}
+ DataBuf decodeHex(const byte *src, long srcSize)
+ {
+ // create decoding table
+ byte invalid = 16;
+ byte decodeHexTable[256];
+ for (long i = 0; i < 256; i++) decodeHexTable[i] = invalid;
+ for (byte i = 0; i < 10; i++) decodeHexTable[static_cast<byte>('0') + i] = i;
+ for (byte i = 0; i < 6; i++) decodeHexTable[static_cast<byte>('A') + i] = i + 10;
+ for (byte i = 0; i < 6; i++) decodeHexTable[static_cast<byte>('a') + i] = i + 10;
+
+ // calculate dest size
+ long validSrcSize = 0;
+ for (long srcPos = 0; srcPos < srcSize; srcPos++) {
+ if (decodeHexTable[src[srcPos]] != invalid) validSrcSize++;
+ }
+ const long destSize = validSrcSize / 2;
+
+ // allocate dest buffer
+ DataBuf dest(destSize);
+
+ // decode
+ for (long srcPos = 0, destPos = 0; destPos < destSize; destPos++) {
+ byte buffer = 0;
+ for (int bufferPos = 1; bufferPos >= 0 && srcPos < srcSize; srcPos++) {
+ byte srcValue = decodeHexTable[src[srcPos]];
+ if (srcValue == invalid) continue;
+ buffer |= srcValue << (bufferPos * 4);
+ bufferPos--;
+ }
+ dest.pData_[destPos] = buffer;
+ }
+ return dest;
+ }
+
static const char encodeBase64Table[64 + 1] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
DataBuf decodeBase64(const std::string& src)
--
exiv2 packaging
More information about the pkg-kde-commits
mailing list