Release 4.0.0-preview1-00051
[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     public class StillImage
28     {
29         internal StillImage(IntPtr ptr)
30         {
31             var unmanagedStruct = Marshal.PtrToStructure<StillImageDataStruct>(ptr);
32
33             Format = unmanagedStruct.Format;
34             Resolution = new Size(unmanagedStruct.Width, unmanagedStruct.Height);
35
36             if (unmanagedStruct.Data != IntPtr.Zero && unmanagedStruct.DataLength > 0)
37             {
38                 Data = new byte[unmanagedStruct.DataLength];
39                 Marshal.Copy(unmanagedStruct.Data, Data, 0, (int)unmanagedStruct.DataLength);
40             }
41             else
42             {
43                 Debug.Fail("CameraStillImage Data is null!");
44             }
45
46             //Exif can be null
47             if (unmanagedStruct.ExifLength > 0)
48             {
49                 Exif = new byte[unmanagedStruct.ExifLength];
50                 Marshal.Copy(unmanagedStruct.Exif, Exif, 0, (int)unmanagedStruct.ExifLength);
51             }
52         }
53
54         /// <summary>
55         /// The pixel format of the still image.
56         /// </summary>
57         /// <since_tizen> 3 </since_tizen>
58         public CameraPixelFormat Format { get; }
59
60         /// <summary>
61         /// The resolution of the still image.
62         /// </summary>
63         /// <since_tizen> 3 </since_tizen>
64         public Size Resolution { get; }
65
66         /// <summary>
67         /// The buffer containing still image.
68         /// </summary>
69         /// <since_tizen> 3 </since_tizen>
70         public byte[] Data { get; }
71
72         /// <summary>
73         /// The Exif data describing additional metadata of still image.
74         /// Please refer Exif specification for more details.
75         /// </summary>
76         /// <since_tizen> 3 </since_tizen>
77         public byte[] Exif { get; }
78     }
79 }