Release 4.0.0-preview1-00051
[platform/core/csapi/tizenfx.git] / src / Tizen.Multimedia.Vision / MediaVision / Quadrangle.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
19 namespace Tizen.Multimedia
20 {
21     /// <summary>
22     /// Represents a region with 4 <see cref="Point"/>s.
23     /// </summary>
24     /// <since_tizen> 3</since_tizen>
25     public class Quadrangle
26     {
27
28         /// <summary>
29         /// Initialize a new instance of the <see cref="Quadrangle"/> class with an array of <see cref="Point"/>.
30         /// </summary>
31         /// <remarks><paramref name="points"/> must have 4 elements.</remarks>
32         /// <param name="points">four points that define object bounding quadrangle.</param>
33         /// <exception cref="ArgumentException">The Length of <paramref name="points"/> is not 4.</exception>
34         /// <since_tizen> 3</since_tizen>
35         public Quadrangle(Point[] points)
36         {
37             if (points.Length != 4)
38             {
39                 throw new ArgumentException($"{points} must have 4 elements.");
40             }
41
42             Points = points;
43         }
44
45         /// <summary>
46         /// Gets four points that define the object bounding quadrangle.
47         /// </summary>
48         /// <since_tizen> 3</since_tizen>
49         public Point[] Points { get; }
50
51         /// <summary>
52         /// Returns a string that represents the current object.
53         /// </summary>
54         /// <returns>A string that represents the current object.</returns>
55         public override string ToString() =>
56             $"[{{{Points[0].ToString()}}}, {{{Points[1].ToString()}}}, {{{Points[2].ToString()}}}, {{{Points[3].ToString()}}}]";
57     }
58 }