[TCSACR-37][Camera/Recorder] Modify camera, recorder privilege for some APIs
[platform/core/csapi/tizenfx.git] / src / Tizen.Multimedia.Camera / Camera / CameraDisplaySettings.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 Native = Interop.CameraDisplay;
18
19 namespace Tizen.Multimedia
20 {
21     /// <summary>
22     /// The CameraDisplay class allows you to manage display for the camera.
23     /// It allows to set and get various display properties such as
24     /// rotation, display visibility and display mode.
25     /// </summary>
26     public class CameraDisplaySettings
27     {
28         internal readonly Camera _camera;
29
30         internal CameraDisplaySettings(Camera camera)
31         {
32             _camera = camera;
33         }
34
35         /// <summary>
36         /// The display mode.
37         /// </summary>
38         /// <value>A <see cref="CameraDisplayMode"/> that specifies the display mode.</value>
39         /// <exception cref="ObjectDisposedException" > The camera already has been disposed.</exception>
40         public CameraDisplayMode Mode
41         {
42             get
43             {
44                 CameraDisplayMode val = CameraDisplayMode.LetterBox;
45
46                 CameraErrorFactory.ThrowIfError(Native.GetMode(_camera.GetHandle(), out val),
47                     "Failed to get camera display mode");
48
49                 return val;
50             }
51
52             set
53             {
54                 CameraErrorFactory.ThrowIfError(Native.SetMode(_camera.GetHandle(), value),
55                     "Failed to set camera display mode.");
56             }
57         }
58
59         /// <summary>
60         /// The display visibility.
61         /// True if camera display visible, otherwise false.
62         /// </summary>
63         /// <exception cref="ObjectDisposedException" > The camera already has been disposed.</exception>
64         public bool Visible
65         {
66             get
67             {
68                 bool val = false;
69
70                 CameraErrorFactory.ThrowIfError(Native.GetVisible(_camera.GetHandle(), out val),
71                     "Failed to get visible value");
72
73                 return val;
74             }
75
76             set
77             {
78                 CameraErrorFactory.ThrowIfError(Native.SetVisible(_camera.GetHandle(), value),
79                     "Failed to set display visible.");
80             }
81         }
82
83         /// <summary>
84         /// The display rotation.
85         /// </summary>
86         /// <value>A <see cref="CameraRotation"/> that specifies the rotation of camera device.</value>
87         /// <exception cref="ObjectDisposedException" > The camera already has been disposed.</exception>
88         public CameraRotation Rotation
89         {
90             get
91             {
92                 CameraRotation val = CameraRotation.None;
93
94                 CameraErrorFactory.ThrowIfError(Native.GetRotation(_camera.GetHandle(), out val),
95                     "Failed to get display rotation");
96
97                 return val;
98             }
99
100             set
101             {
102                 CameraErrorFactory.ThrowIfError(Native.SetRotation(_camera.GetHandle(), value),
103                     "Failed to set display rotation.");
104             }
105         }
106
107         /// <summary>
108         /// The display flip.
109         /// </summary>
110         /// <value>A <see cref="CameraFlip"/> that specifies camera flip type.</value>
111         /// <exception cref="ObjectDisposedException" > The camera already has been disposed.</exception>
112         public CameraFlip Flip
113         {
114             get
115             {
116                 CameraFlip val = CameraFlip.None;
117
118                 CameraErrorFactory.ThrowIfError(Native.GetFlip(_camera.GetHandle(), out val),
119                     "Failed to get display flip");
120
121                 return val;
122             }
123
124             set
125             {
126                 CameraErrorFactory.ThrowIfError(Native.SetFlip(_camera.GetHandle(), value),
127                     "Failed to set display flip.");
128             }
129         }
130
131         /// <summary>
132         /// the ROI(Region Of Interest) area of display.
133         /// </summary>
134         /// <exception cref="ObjectDisposedException" > The camera already has been disposed.</exception>
135         public Rectangle RoiArea
136         {
137             get
138             {
139                 int x = 0;
140                 int y = 0;
141                 int width = 0;
142                 int height = 0;
143
144                 CameraErrorFactory.ThrowIfError(Native.GetRoiArea(_camera.GetHandle(), out x, out y, out width, out height),
145                     "Failed to get display roi area");
146
147                 return new Rectangle(x, y, width, height);
148             }
149
150             set
151             {
152                 CameraErrorFactory.ThrowIfError(Native.SetRoiArea(_camera.GetHandle(),
153                     value.X, value.Y, value.Width, value.Height), "Failed to set display roi area.");
154             }
155         }
156     }
157 }
158