Move SkBase64 to utils, allow user defined encoding.
git-svn-id: http://skia.googlecode.com/svn/trunk@3148 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/gyp/animator.gyp b/gyp/animator.gyp
index fc61e71..f713f3f 100644
--- a/gyp/animator.gyp
+++ b/gyp/animator.gyp
@@ -15,6 +15,7 @@
'../include/xml',
'../include/utils',
'../include/images',
+ '../src/utils',
],
'sources': [
'../include/animator/SkAnimator.h',
@@ -36,8 +37,6 @@
'../src/animator/SkAnimatorScript.h',
#'../src/animator/SkAnimatorScript2.cpp', fails on windows
#'../src/animator/SkAnimatorScript2.h',
- '../src/animator/SkBase64.cpp',
- '../src/animator/SkBase64.h',
'../src/animator/SkBoundable.cpp',
'../src/animator/SkBoundable.h',
'../src/animator/SkBuildCondensedInfo.cpp',
diff --git a/gyp/utils.gyp b/gyp/utils.gyp
index d8c421d..8d2415a 100644
--- a/gyp/utils.gyp
+++ b/gyp/utils.gyp
@@ -39,6 +39,8 @@
'../include/utils/SkUnitMappers.h',
'../include/utils/SkWGL.h',
+ '../src/utils/SkBase64.cpp',
+ '../src/utils/SkBase64.h',
'../src/utils/SkBoundaryPatch.cpp',
'../src/utils/SkCamera.cpp',
'../src/utils/SkColorMatrix.cpp',
diff --git a/src/animator/SkBase64.cpp b/src/utils/SkBase64.cpp
similarity index 95%
rename from src/animator/SkBase64.cpp
rename to src/utils/SkBase64.cpp
index 076f649..a8d4e87 100644
--- a/src/animator/SkBase64.cpp
+++ b/src/utils/SkBase64.cpp
@@ -12,7 +12,7 @@
#define DecodePad -2
#define EncodePad 64
-static const char encode[] =
+static const char default_encode[] =
"ABCDEFGHIJKLMNOPQRSTUVWXYZ"
"abcdefghijklmnopqrstuvwxyz"
"0123456789+/=";
@@ -109,7 +109,13 @@
#pragma warning ( pop )
#endif
-size_t SkBase64::Encode(const void* srcPtr, size_t length, void* dstPtr) {
+size_t SkBase64::Encode(const void* srcPtr, size_t length, void* dstPtr, const char* encodeMap) {
+ const char* encode;
+ if (NULL == encodeMap) {
+ encode = default_encode;
+ } else {
+ encode = encodeMap;
+ }
const unsigned char* src = (const unsigned char*) srcPtr;
unsigned char* dst = (unsigned char*) dstPtr;
if (dst) {
diff --git a/src/animator/SkBase64.h b/src/utils/SkBase64.h
similarity index 75%
rename from src/animator/SkBase64.h
rename to src/utils/SkBase64.h
index 69d256c..4f3b323 100644
--- a/src/animator/SkBase64.h
+++ b/src/utils/SkBase64.h
@@ -23,7 +23,12 @@
SkBase64();
Error decode(const char* src, size_t length);
char* getData() { return fData; }
- static size_t Encode(const void* src, size_t length, void* dest);
+ /**
+ Base64 encodes src into dst. encode is a pointer to at least 65 chars.
+ encode[64] will be used as the pad character. Encodings other than the
+ default encoding cannot be decoded.
+ */
+ static size_t Encode(const void* src, size_t length, void* dest, const char* encode = NULL);
#ifdef SK_SUPPORT_UNITTEST
static void UnitTest();