DALi Version 1.2.32
[platform/core/uifw/dali-adaptor.git] / platform-abstractions / tizen / data-cache / data-compression.h
1 #ifndef __DALI_TIZEN_PLATFORM_DATA_COMPRESSION_H__
2 #define __DALI_TIZEN_PLATFORM_DATA_COMPRESSION_H__
3
4 /*
5  * Copyright (c) 2014 Samsung Electronics Co., Ltd.
6  *
7  * Licensed under the Apache License, Version 2.0 (the "License");
8  * you may not use this file except in compliance with the License.
9  * You may obtain a copy of the License at
10  *
11  * http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing, software
14  * distributed under the License is distributed on an "AS IS" BASIS,
15  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16  * See the License for the specific language governing permissions and
17  * limitations under the License.
18  *
19  */
20
21
22 namespace Dali
23 {
24 namespace TizenPlatform
25 {
26 namespace DataCompression
27 {
28
29 /**
30  * Return the maximum size of a buffer required to hold a number of bytes.
31  * Required because compressing data, can end up being bigger
32  * than the original data.
33  * @return maximum buffer size required to compress inputSize
34  */
35 std::size_t GetMaximumRleCompressedSize(const std::size_t inputSize);
36
37 /**
38  * RLE Encodes an array of data
39  * @param input input data
40  * @param inputLength input data length in bytes
41  * @param output output data, pre-allocated by caller
42  * @param outputLength size of the output buffer in bytes
43  * @param encodedSize number of bytes written to outputBuffer
44  */
45 void EncodeRle(  const unsigned char* input,
46                  const std::size_t inputLength,
47                  unsigned char* output,
48                  const std::size_t outputLength,
49                  std::size_t &encodedSize );
50
51 /**
52  * RLE Decodes an array of data.
53  * @param[in] input input data
54  * @param[in] inputLength input data length in bytes
55  * @param[out] output output data, pre-allocated by caller, allocated using GetMaximumRleCompressedSize()
56  * @param[in] outputLength size of output data in bytes
57  * @param[out] decodedSize the number of bytes decoded into outputBuffer
58  */
59 bool DecodeRle( const unsigned char* input,
60                 const std::size_t inputLength,
61                 unsigned char* output,
62                 const std::size_t outputLength,
63                std::size_t& decodedSize);
64
65
66 } // namespace DataCompression
67
68 } // namespace TizenPlatform
69
70 } // namespace Dali
71
72 #endif // __DALI_TIZEN_PLATFORM_DATA_COMPRESSION_H__