1 /*
2  * Copyright 2006 The Android Open Source Project
3  *
4  * Use of this source code is governed by a BSD-style license that can be
5  * found in the LICENSE file.
6  */
7 
8 #ifndef SkBase64_DEFINED
9 #define SkBase64_DEFINED
10 
11 #include "include/core/SkTypes.h"
12 
13 struct SkBase64 {
14 public:
15     enum Error {
16         kNoError,
17         kPadError,
18         kBadCharError
19     };
20 
21     SkBase64();
22     Error decode(const char* src, size_t length);
getDataSkBase6423     char* getData() { return fData; }
24     /**
25        Base64 encodes src into dst. encode is a pointer to at least 65 chars.
26        encode[64] will be used as the pad character. Encodings other than the
27        default encoding cannot be decoded.
28     */
29     static size_t Encode(const void* src, size_t length, void* dest, const char* encode = nullptr);
30 
31 private:
32     Error decode(const void* srcPtr, size_t length, bool writeDestination);
33 
34     size_t fLength;
35     char* fData;
36     friend class SkImageBaseBitmap;
37 };
38 
39 #endif // SkBase64_DEFINED
40