2 * Copyright (c) 2017 Samsung Electronics Co., Ltd.
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
8 * http://www.apache.org/licenses/LICENSE-2.0
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.
23 /// RelativeVector4 is a four dimensional vector.
24 /// All values(x, y, and z) should be between [0, 1].
26 public class RelativeVector4 : global::System.IDisposable
28 private global::System.Runtime.InteropServices.HandleRef swigCPtr;
29 protected bool swigCMemOwn;
31 internal RelativeVector4(global::System.IntPtr cPtr, bool cMemoryOwn)
33 swigCMemOwn = cMemoryOwn;
34 swigCPtr = new global::System.Runtime.InteropServices.HandleRef(this, cPtr);
37 internal static global::System.Runtime.InteropServices.HandleRef getCPtr(RelativeVector4 obj)
39 return (obj == null) ? new global::System.Runtime.InteropServices.HandleRef(null, global::System.IntPtr.Zero) : obj.swigCPtr;
42 //A Flag to check who called Dispose(). (By User or DisposeQueue)
43 private bool isDisposeQueued = false;
44 //A Flat to check if it is already disposed.
45 protected bool disposed = false;
51 isDisposeQueued = true;
52 DisposeQueue.Instance.Add(this);
58 //Throw excpetion if Dispose() is called in separate thread.
59 if (!Window.IsInstalled())
61 throw new System.InvalidOperationException("This API called from separate thread. This API must be called from MainThread.");
66 Dispose(DisposeTypes.Implicit);
70 Dispose(DisposeTypes.Explicit);
71 System.GC.SuppressFinalize(this);
75 protected virtual void Dispose(DisposeTypes type)
82 if(type == DisposeTypes.Explicit)
85 //Release your own managed resources here.
86 //You should release all of your own disposable objects here.
89 //Release your own unmanaged resources here.
90 //You should not access any managed member here except static instance.
91 //because the execution order of Finalizes is non-deterministic.
93 if (swigCPtr.Handle != global::System.IntPtr.Zero)
98 NDalicPINVOKE.delete_Vector4(swigCPtr);
100 swigCPtr = new global::System.Runtime.InteropServices.HandleRef(null, global::System.IntPtr.Zero);
107 /// Addition operator.
109 /// <param name="arg1">Vector to add</param>
110 /// <param name="arg2">Vector to add</param>
111 /// <returns>A vector containing the result of the addition</returns>
112 public static RelativeVector4 operator +(RelativeVector4 arg1, RelativeVector4 arg2)
114 RelativeVector4 result = arg1.Add(arg2);
120 /// Subtraction operator.
122 /// <param name="arg1">Vector to subtract</param>
123 /// <param name="arg2">Vector to subtract</param>
124 /// <returns>A vector containing the result of the subtraction</returns>
125 public static RelativeVector4 operator -(RelativeVector4 arg1, RelativeVector4 arg2)
127 RelativeVector4 result = arg1.Subtract(arg2);
133 /// Multiplication operator.
135 /// <param name="arg1">The vector to multiply</param>
136 /// <param name="arg2">The vector to multiply</param>
137 /// <returns>A vector containing the result of the multiplication</returns>
138 public static RelativeVector4 operator *(RelativeVector4 arg1, RelativeVector4 arg2)
140 RelativeVector4 result = arg1.Multiply(arg2);
146 /// Multiplication operator.
148 /// <param name="arg1">The vector to multiply</param>
149 /// <param name="arg2">The float value to scale the vector</param>
150 /// <returns>A vector containing the result of the scaling</returns>
151 public static RelativeVector4 operator *(RelativeVector4 arg1, float arg2)
153 RelativeVector4 result = arg1.Multiply(arg2);
159 /// Division operator.
161 /// <param name="arg1">The vector to divide</param>
162 /// <param name="arg2">The vector to divide</param>
163 /// <returns>A vector containing the result of the division</returns>
164 public static RelativeVector4 operator /(RelativeVector4 arg1, RelativeVector4 arg2)
166 RelativeVector4 result = arg1.Divide(arg2);
172 /// Division operator.
174 /// <param name="arg1">The vector to divide</param>
175 /// <param name="arg2">The float value to scale the vector by</param>
176 /// <returns>A vector containing the result of the scaling</returns>
177 public static RelativeVector4 operator /(RelativeVector4 arg1, float arg2)
179 RelativeVector4 result = arg1.Divide(arg2);
186 /// Const array subscript operator overload. Should be 0, 1 3 or 3.
188 /// <param name="index">Subscript index</param>
189 /// <returns>The float at the given index</returns>
190 public float this[uint index]
194 return ValueOfIndex(index);
200 internal static RelativeVector4 GetRelativeVector4FromPtr(global::System.IntPtr cPtr)
202 RelativeVector4 ret = new RelativeVector4(cPtr, false);
203 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
211 public RelativeVector4() : this(NDalicPINVOKE.new_Vector4__SWIG_0(), true)
213 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
219 /// <param name="x">x component</param>
220 /// <param name="y">y component</param>
221 /// <param name="z">z component</param>
222 /// <param name="w">w component</param>
223 public RelativeVector4(float x, float y, float z, float w) : this(NDalicPINVOKE.new_Vector4__SWIG_1(x, y, z, w), true)
229 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
235 /// <param name="relativeVector2">RelativeVector2 to create this vector from</param>
236 public RelativeVector4(RelativeVector2 relativeVector2) : this(NDalicPINVOKE.new_Vector4__SWIG_3(RelativeVector2.getCPtr(relativeVector2)), true)
238 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
244 /// <param name="relativeVector3">RelativeVector3 to create this vector from</param>
245 public RelativeVector4(RelativeVector3 relativeVector3) : this(NDalicPINVOKE.new_Vector4__SWIG_4(RelativeVector3.getCPtr(relativeVector3)), true)
247 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
250 private RelativeVector4 Add(RelativeVector4 rhs)
252 RelativeVector4 ret = new RelativeVector4(NDalicPINVOKE.Vector4_Add(swigCPtr, RelativeVector4.getCPtr(rhs)), true);
253 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
257 private RelativeVector4 Subtract(RelativeVector4 rhs)
259 RelativeVector4 ret = new RelativeVector4(NDalicPINVOKE.Vector4_Subtract__SWIG_0(swigCPtr, RelativeVector4.getCPtr(rhs)), true);
260 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
264 private RelativeVector4 Multiply(RelativeVector4 rhs)
266 RelativeVector4 ret = new RelativeVector4(NDalicPINVOKE.Vector4_Multiply__SWIG_0(swigCPtr, RelativeVector4.getCPtr(rhs)), true);
267 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
271 private RelativeVector4 Multiply(float rhs)
273 RelativeVector4 ret = new RelativeVector4(NDalicPINVOKE.Vector4_Multiply__SWIG_1(swigCPtr, rhs), true);
274 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
278 private RelativeVector4 Divide(RelativeVector4 rhs)
280 RelativeVector4 ret = new RelativeVector4(NDalicPINVOKE.Vector4_Divide__SWIG_0(swigCPtr, RelativeVector4.getCPtr(rhs)), true);
281 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
285 private RelativeVector4 Divide(float rhs)
287 RelativeVector4 ret = new RelativeVector4(NDalicPINVOKE.Vector4_Divide__SWIG_1(swigCPtr, rhs), true);
288 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
292 private float ValueOfIndex(uint index)
294 float ret = NDalicPINVOKE.Vector4_ValueOfIndex__SWIG_0(swigCPtr, index);
295 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
300 /// Compare if rhs is equal to
302 /// <param name="rhs">The vector to compare</param>
303 /// <returns>Returns true if the two vectors are equal, otherwise false</returns>
304 public bool EqualTo(RelativeVector4 rhs)
306 bool ret = NDalicPINVOKE.Vector4_EqualTo(swigCPtr, RelativeVector4.getCPtr(rhs));
307 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
312 /// Compare if rhs is not equal to
314 /// <param name="rhs">The vector to compare</param>
315 /// <returns>Returns true if the two vectors are not equal, otherwise false</returns>
316 public bool NotEqualTo(RelativeVector4 rhs)
318 bool ret = NDalicPINVOKE.Vector4_NotEqualTo(swigCPtr, RelativeVector4.getCPtr(rhs));
319 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
332 NDalicPINVOKE.Vector4_X_set(swigCPtr, value);
333 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
337 float ret = NDalicPINVOKE.Vector4_X_get(swigCPtr);
338 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
351 NDalicPINVOKE.Vector4_Y_set(swigCPtr, value);
352 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
356 float ret = NDalicPINVOKE.Vector4_Y_get(swigCPtr);
357 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
370 NDalicPINVOKE.Vector4_Z_set(swigCPtr, value);
371 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
375 float ret = NDalicPINVOKE.Vector4_Z_get(swigCPtr);
376 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
389 NDalicPINVOKE.Vector4_W_set(swigCPtr, value);
390 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
394 float ret = NDalicPINVOKE.Vector4_W_get(swigCPtr);
395 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
402 public static implicit operator Vector4(RelativeVector4 relativeVector4)
404 return new Vector4(relativeVector4.X, relativeVector4.Y, relativeVector4.Z, relativeVector4.W);
409 public static implicit operator RelativeVector4(Vector4 vec)
415 return new RelativeVector4(vec.X, vec.Y, vec.Z, vec.W);
418 internal static void ValueCheck(RelativeVector4 relativeVector4)
420 if(relativeVector4.X < 0.0f)
422 relativeVector4.X = 0.0f;
423 Tizen.Log.Fatal("NUI", "The value of Result is invalid! Should be between [0, 1].");
425 else if(relativeVector4.X > 1.0f)
427 relativeVector4.X = 1.0f;
428 Tizen.Log.Fatal("NUI", "The value of Result is invalid! Should be between [0, 1].");
430 if(relativeVector4.Y < 0.0f)
432 relativeVector4.Y = 0.0f;
433 Tizen.Log.Fatal("NUI", "The value of Result is invalid! Should be between [0, 1].");
435 else if(relativeVector4.Y > 1.0f)
437 relativeVector4.Y = 1.0f;
438 Tizen.Log.Fatal("NUI", "The value of Result is invalid! Should be between [0, 1].");
440 if(relativeVector4.Z < 0.0f)
442 relativeVector4.Z = 0.0f;
443 Tizen.Log.Fatal("NUI", "The value of Result is invalid! Should be between [0, 1].");
445 else if(relativeVector4.Z > 1.0f)
447 relativeVector4.Z = 1.0f;
448 Tizen.Log.Fatal("NUI", "The value of Result is invalid! Should be between [0, 1].");
450 if(relativeVector4.W < 0.0f)
452 relativeVector4.W = 0.0f;
453 Tizen.Log.Fatal("NUI", "The value of Result is invalid! Should be between [0, 1].");
455 else if(relativeVector4.W > 1.0f)
457 relativeVector4.W = 1.0f;
458 Tizen.Log.Fatal("NUI", "The value of Result is invalid! Should be between [0, 1].");
462 internal static void ValueCheck(float value)
467 Tizen.Log.Fatal("NUI", "The value of Parameters is invalid! Should be between [0, 1].");
469 else if(value > 1.0f)
472 Tizen.Log.Fatal("NUI", "The value of Parameters is invalid! Should be between [0, 1].");