64cdcc58ae4b08fcf5a52c0b24f2a01ad8575701
[platform/core/csapi/tizenfx.git] / src / Tizen.Multimedia.Camera / Camera / StillImage.cs
1 /*
2  * Copyright (c) 2016 Samsung Electronics Co., Ltd All Rights Reserved
3  *
4  * Licensed under the Apache License, Version 2.0 (the License);
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an AS IS BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16
17 using System;
18 using System.Diagnostics;
19 using System.Runtime.InteropServices;
20 using static Interop.Camera;
21
22 namespace Tizen.Multimedia
23 {
24     /// <summary>
25     /// The class containing the captured still image.
26     /// </summary>
27     /// <since_tizen> 4 </since_tizen>
28     public class StillImage
29     {
30         internal StillImage(IntPtr ptr)
31         {
32             var unmanagedStruct = Marshal.PtrToStructure<StillImageDataStruct>(ptr);
33
34             Format = unmanagedStruct.Format;
35             Resolution = new Size(unmanagedStruct.Width, unmanagedStruct.Height);
36
37             if (unmanagedStruct.Data != IntPtr.Zero && unmanagedStruct.DataLength > 0)
38             {
39                 Data = new byte[unmanagedStruct.DataLength];
40                 Marshal.Copy(unmanagedStruct.Data, Data, 0, (int)unmanagedStruct.DataLength);
41             }
42             else
43             {
44                 Debug.Fail("CameraStillImage Data is null!");
45             }
46
47             //Exif can be null
48             if (unmanagedStruct.ExifLength > 0)
49             {
50                 Exif = new byte[unmanagedStruct.ExifLength];
51                 Marshal.Copy(unmanagedStruct.Exif, Exif, 0, (int)unmanagedStruct.ExifLength);
52             }
53         }
54
55         /// <summary>
56         /// The pixel format of the still image.
57         /// </summary>
58         /// <since_tizen> 4 </since_tizen>
59         public CameraPixelFormat Format { get; }
60
61         /// <summary>
62         /// The resolution of the still image.
63         /// </summary>
64         /// <since_tizen> 4 </since_tizen>
65         public Size Resolution { get; }
66
67         /// <summary>
68         /// The buffer containing the still image.
69         /// </summary>
70         /// <since_tizen> 4 </since_tizen>
71         public byte[] Data { get; }
72
73         /// <summary>
74         /// The Exif data describing additional metadata of still image.
75         /// Please refer Exif specification for more details.
76         /// </summary>
77         /// <since_tizen> 4 </since_tizen>
78         public byte[] Exif { get; }
79     }
80 }