Merge "[TCSACR-85] Add EnableType method"
[platform/core/csapi/tizenfx.git] / src / Tizen.Multimedia.Vision / MediaVision / VisionColorSpace.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
20 namespace Tizen.Multimedia.Vision
21 {
22     /// <summary>
23     /// Specifies colorspaces for MediaVision.
24     /// </summary>
25     internal enum VisionColorSpace
26     {
27         /// <summary>
28         /// The colorspace type is Y800.
29         /// </summary>
30         Y800 = 1,
31         /// <summary>
32         /// The colorspace type is I420.
33         /// </summary>
34         I420,
35         /// <summary>
36         /// The colorspace type is NV12.
37         /// </summary>
38         NV12,
39         /// <summary>
40         /// The colorspace type is YV12.
41         /// </summary>
42         YV12,
43         /// <summary>
44         /// The colorspace type is NV21.
45         /// </summary>
46         NV21,
47         /// <summary>
48         /// The colorspace type is YUYV.
49         /// </summary>
50         Yuyv,
51         /// <summary>
52         /// The colorspace type is UYVY.
53         /// </summary>
54         Uyvy,
55         /// <summary>
56         /// The colorspace type is 422P.
57         /// </summary>
58         Yuv422P,
59         /// <summary>
60         /// The colorspace type is RGB565.
61         /// </summary>
62         Rgb565,
63         /// <summary>
64         /// The colorspace type is RGB888.
65         /// </summary>
66         Rgb888,
67         /// <summary>
68         /// The colorspace type is RGBA.
69         /// </summary>
70         Rgba
71     }
72
73     internal static class VisionColorSpaceExtensions
74     {
75         internal static ColorSpace ToCommonColorSpace(this VisionColorSpace value)
76         {
77             Debug.Assert(Enum.IsDefined(typeof(VisionColorSpace), value));
78
79             switch (value)
80             {
81                 case VisionColorSpace.Y800: return ColorSpace.Y800;
82
83                 case VisionColorSpace.I420: return ColorSpace.I420;
84
85                 case VisionColorSpace.NV12: return ColorSpace.NV12;
86
87                 case VisionColorSpace.YV12: return ColorSpace.YV12;
88
89                 case VisionColorSpace.NV21: return ColorSpace.NV21;
90
91                 case VisionColorSpace.Yuyv: return ColorSpace.Yuyv;
92
93                 case VisionColorSpace.Uyvy: return ColorSpace.Uyvy;
94
95                 case VisionColorSpace.Yuv422P: return ColorSpace.Yuv422P;
96
97                 case VisionColorSpace.Rgb565: return ColorSpace.Rgb565;
98
99                 case VisionColorSpace.Rgb888: return ColorSpace.Rgb888;
100
101                 case VisionColorSpace.Rgba: return ColorSpace.Rgba8888;
102             }
103
104             throw new NotSupportedException("Implementation does not support the specified value." + value.ToString());
105         }
106     }
107
108     internal static class VisionColorSpaceSupport
109     {
110         internal static VisionColorSpace ToVisionColorSpace(this ColorSpace colorSpace)
111         {
112             ValidationUtil.ValidateEnum(typeof(ColorSpace), colorSpace, nameof(colorSpace));
113
114             switch (colorSpace)
115             {
116                 case ColorSpace.Y800: return VisionColorSpace.Y800;
117
118                 case ColorSpace.I420: return VisionColorSpace.I420;
119
120                 case ColorSpace.NV12: return VisionColorSpace.NV12;
121
122                 case ColorSpace.YV12: return VisionColorSpace.YV12;
123
124                 case ColorSpace.NV21: return VisionColorSpace.NV21;
125
126                 case ColorSpace.Yuyv: return VisionColorSpace.Yuyv;
127
128                 case ColorSpace.Uyvy: return VisionColorSpace.Uyvy;
129
130                 case ColorSpace.Yuv422P: return VisionColorSpace.Yuv422P;
131
132                 case ColorSpace.Rgb565: return VisionColorSpace.Rgb565;
133
134                 case ColorSpace.Rgb888: return VisionColorSpace.Rgb888;
135
136                 case ColorSpace.Rgba8888: return VisionColorSpace.Rgba;
137             }
138
139             throw new NotSupportedException("Implementation does not support the specified value." + colorSpace.ToString());
140         }
141     }
142 }