1685cfc0ee13d7c355ae2f4f3d225ad45e945763fepoger@google.com
2685cfc0ee13d7c355ae2f4f3d225ad45e945763fepoger@google.com/*
3685cfc0ee13d7c355ae2f4f3d225ad45e945763fepoger@google.com * Copyright 2006 The Android Open Source Project
4685cfc0ee13d7c355ae2f4f3d225ad45e945763fepoger@google.com *
5685cfc0ee13d7c355ae2f4f3d225ad45e945763fepoger@google.com * Use of this source code is governed by a BSD-style license that can be
6685cfc0ee13d7c355ae2f4f3d225ad45e945763fepoger@google.com * found in the LICENSE file.
7685cfc0ee13d7c355ae2f4f3d225ad45e945763fepoger@google.com */
8685cfc0ee13d7c355ae2f4f3d225ad45e945763fepoger@google.com
9bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com
10bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com#ifndef SkBase64_DEFINED
11bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com#define SkBase64_DEFINED
12bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com
13bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com#include "SkTypes.h"
14bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com
15bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.comstruct SkBase64 {
16bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.compublic:
17bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com    enum Error {
18bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com        kNoError,
19bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com        kPadError,
20bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com        kBadCharError
21bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com    };
22bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com
23bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com    SkBase64();
24bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com    Error decode(const char* src, size_t length);
25bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com    char* getData() { return fData; }
2696494bc813660667108fdde710a6ea6bd35eb27bbungeman@google.com    /**
2796494bc813660667108fdde710a6ea6bd35eb27bbungeman@google.com       Base64 encodes src into dst. encode is a pointer to at least 65 chars.
2896494bc813660667108fdde710a6ea6bd35eb27bbungeman@google.com       encode[64] will be used as the pad character. Encodings other than the
2996494bc813660667108fdde710a6ea6bd35eb27bbungeman@google.com       default encoding cannot be decoded.
3096494bc813660667108fdde710a6ea6bd35eb27bbungeman@google.com    */
3196494bc813660667108fdde710a6ea6bd35eb27bbungeman@google.com    static size_t Encode(const void* src, size_t length, void* dest, const char* encode = NULL);
32bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com
33bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com#ifdef SK_SUPPORT_UNITTEST
34bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com    static void UnitTest();
35bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com#endif
36bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.comprivate:
37bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com    Error decode(const void* srcPtr, size_t length, bool writeDestination);
38bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com
39bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com    size_t fLength;
40bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com    char* fData;
4164139e4ba1fd33280e3d0e6150835b6370cef7e1reed@google.com    friend class SkImageBaseBitmap;
42bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com};
43bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com
44bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com#endif // SkBase64_DEFINED
45