Release 4.0.0-preview1-00267
[platform/core/csapi/tizenfx.git] / src / ElmSharp / ElmSharp / Point3D.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 ElmSharp
20 {
21     /// <summary>
22     /// The Point3D is a Struct that defining a 3-D point.
23     /// </summary>
24     public struct Point3D : IEquatable<Point3D>
25     {
26         /// <summary>
27         /// The X coordinate of a 3D point.
28         /// </summary>
29         public int X;
30
31         /// <summary>
32         /// The Y coordinate of a 3D point.
33         /// </summary>
34         public int Y;
35
36         /// <summary>
37         /// The Z coordinate of a 3D point.
38         /// </summary>
39         public int Z;
40
41         /// <summary>
42         /// A human-readable representation of the <see cref="T:Tizen.UI.Point3D" />.
43         /// </summary>
44         /// <returns>The string is formatted as "{{X={0} Y={1} Z={2}}}".</returns>
45         public override string ToString()
46         {
47             return string.Format("{{X={0} Y={1} Z={2}}}", X, Y, Z);
48         }
49
50         ///
51         public override int GetHashCode()
52         {
53             unchecked
54             {
55                 int hashCode = X.GetHashCode();
56                 hashCode = (hashCode * 397) ^ Y.GetHashCode();
57                 hashCode = (hashCode * 397) ^ Z.GetHashCode();
58                 return hashCode;
59             }
60         }
61
62         /// <summary>
63         /// Indicates whether this instance and a specified object are equal.
64         /// </summary>
65         /// <param name="obj">The object to compare with the current instance.</param>
66         /// <returns>
67         /// true if obj and this instance are the same type and represent the same value.
68         /// otherwise, false.
69         /// </returns>
70         public override bool Equals(object obj)
71         {
72             if (!(obj is Point3D))
73                 return false;
74
75             return Equals((Point3D)obj);
76         }
77
78         /// <summary>
79         /// Indicates whether this instance and a <see cref="Point3D"/> object are equal.
80         /// </summary>
81         /// <param name="other">The <see cref="Point3D"/> to compare with the current instance.</param>
82         /// <returns>
83         /// true if obj and this instance are the same type and represent the same value.
84         /// otherwise, false.
85         /// </returns>
86         public bool Equals(Point3D other)
87         {
88             return X.Equals(other.X) && Y.Equals(other.Y) && Z.Equals(other.Z);
89         }
90
91         /// <summary>
92         /// Whether the two <see cref="T:Tizen.UI.Point3D" />s are equal.
93         /// </summary>
94         /// <param name="p1">A <see cref="T:Tizen.UI.Point3D" /> on the left hand side.</param>
95         /// <param name="p2">A <see cref="T:Tizen.UI.Point3D" /> on the right hand side.</param>
96         /// <returns>True if the two <see cref="T:Tizen.UI.Point3D" />s have equal values.</returns>
97         public static bool operator ==(Point3D p1, Point3D p2)
98         {
99             return p1.Equals(p2);
100         }
101
102         /// <summary>
103         /// Whether two <see cref="T:Tizen.UI.Point3D" />s are not equal.
104         /// </summary>
105         /// <param name="p1">A <see cref="T:Tizen.UI.Point3D" /> on the left hand side.</param>
106         /// <param name="p2">A <see cref="T:Tizen.UI.Point3D" /> on the right hand side.</param>
107         /// <returns>True if the two <see cref="T:Tizen.UI.Point3D" />s do not have equal values.</returns>
108         public static bool operator !=(Point3D p1, Point3D p2)
109         {
110             return !p1.Equals(p2);
111         }
112     }
113 }