180bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru 280bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru/* 380bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru * Copyright 2006 The Android Open Source Project 480bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru * 580bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru * Use of this source code is governed by a BSD-style license that can be 680bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru * found in the LICENSE file. 780bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru */ 880bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru 980bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru 1080bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru#ifndef SkBase64_DEFINED 1180bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru#define SkBase64_DEFINED 1280bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru 1380bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru#include "SkTypes.h" 1480bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru 1580bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Querustruct SkBase64 { 1680bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Querupublic: 1780bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru enum Error { 1880bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru kNoError, 1980bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru kPadError, 2080bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru kBadCharError 2180bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru }; 2280bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru 2380bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru SkBase64(); 2480bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru Error decode(const char* src, size_t length); 2580bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru char* getData() { return fData; } 2680bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru /** 2780bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru Base64 encodes src into dst. encode is a pointer to at least 65 chars. 2880bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru encode[64] will be used as the pad character. Encodings other than the 2980bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru default encoding cannot be decoded. 3080bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru */ 3180bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru static size_t Encode(const void* src, size_t length, void* dest, const char* encode = NULL); 3280bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru 3380bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru#ifdef SK_SUPPORT_UNITTEST 3480bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru static void UnitTest(); 3580bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru#endif 3680bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queruprivate: 3780bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru Error decode(const void* srcPtr, size_t length, bool writeDestination); 3880bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru 3980bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru size_t fLength; 4080bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru char* fData; 4180bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru friend class SkImageBaseBitmap; 4280bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru}; 4380bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru 4480bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru#endif // SkBase64_DEFINED 45