Added PixelBuffer for image loading and operations.
[platform/core/uifw/dali-adaptor.git] / platform-abstractions / portable / alpha-mask.h
1 #ifndef DALI_INTERNAL_ADAPTOR_ALPHA_MASK_H
2 #define DALI_INTERNAL_ADAPTOR_ALPHA_MASK_H
3
4 /*
5  * Copyright (c) 2017 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 #include "pixel-buffer-impl.h"
20
21 namespace Dali
22 {
23 namespace Internal
24 {
25 namespace Adaptor
26 {
27
28
29 /**
30  * Apply the mask to a buffer's alpha channel
31  * @param[in] buffer The buffer to apply the mask to
32  * @param[in] mask The mask to apply
33  */
34 void ApplyMaskToAlphaChannel( PixelBuffer& buffer, const PixelBuffer& mask );
35
36 /**
37  * Create a new PixelBuffer with an alpha channel large enough to handle the alpha from
38  * the mask, converting the color values to the new size, and either multiplying the mask's
39  * alpha into the existing alpha value, or writing the mask's alpha value directly into
40  * the new buffer's alpha channel.
41  *
42  * @param[in] buffer The buffer to apply the mask to
43  * @param[in] mask The mask to apply
44  * @return A new pixel buffer containing the masked image
45  */
46 PixelBufferPtr CreateNewMaskedBuffer( const PixelBuffer& buffer, const PixelBuffer& mask );
47
48 /**
49  * Read a weighted sample from the given channel for a given coordinate
50  * @param[in] buffer The buffer to read from
51  * @param[in] pixelFormat The pixel format of the buffer
52  * @param[in] stride The stride across the buffer
53  * @param[in] x The x coordinate to sample from
54  * @param[in] y The y coordinate to sample from
55  * @param[in] width The width of the buffer in pixels
56  * @param[in] height  The height of the buffer in pixels
57  * @param[in] channel The channel to read from
58  * @return An averaged value from the 4 pixels around the given coordinate
59  */
60 float ReadWeightedSample( unsigned char* buffer, Pixel::Format pixelFormat, int stride, float x, float y, int width, int height, Channel channel );
61
62 } //namespace Adaptor
63 } //namespace Internal
64 } //namespace Dali
65
66 #endif // DALI_INTERNAL_ADAPTOR_ALPHA_MASK_H