/* * Copyright(c) 2021 Samsung Electronics Co., Ltd. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ using System; using System.ComponentModel; namespace Tizen.NUI { /// /// The Matrix class represents transformations and projections.
/// The matrix is stored as a flat array and is Column Major, i.e. the storage order is as follows (numbers represent indices of array):
/// /// 0 4 8 12 /// 1 5 9 13 /// 2 6 10 14 /// 3 7 11 15 /// /// Each axis is contiguous in memory, so the x-axis corresponds to elements 0, 1, 2 and 3, the y-axis corresponds to /// elements 4, 5, 6, 7, the z-axis corresponds to elements 12, 13, 14 and 15, and the translation vector corresponds to /// elements 12, 13 and 14. ///
/// This will be public opened in next tizen after ACR done. Before ACR, need to be hidden as inhouse API. [EditorBrowsable(EditorBrowsableState.Never)] public class Matrix : Disposable { internal Matrix(global::System.IntPtr cPtr, bool cMemoryOwn) : base(cPtr, cMemoryOwn) { } /// This will not be public opened. [EditorBrowsable(EditorBrowsableState.Never)] protected override void ReleaseSwigCPtr(System.Runtime.InteropServices.HandleRef swigCPtr) { Interop.Matrix.DeleteMatrix(swigCPtr); } /// /// The constructor initialized as zero. /// /// This will be public opened in next tizen after ACR done. Before ACR, need to be hidden as inhouse API. [EditorBrowsable(EditorBrowsableState.Never)] public Matrix() : this(Interop.Matrix.NewMatrix(), true) { if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); } /// /// The constructor whether initialize matrix or not. /// /// True if we want to initialize values as zero. False if we just allocate and do not initalize value. /// This will be public opened in next tizen after ACR done. Before ACR, need to be hidden as inhouse API. [EditorBrowsable(EditorBrowsableState.Never)] public Matrix(bool initialize) : this(Interop.Matrix.NewMatrix(initialize), true) { if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); } /// /// The constructor with continuous float array. /// /// Array of float value. /// /// Please note that NUI using column major matrix. /// /// This will be public opened in next tizen after ACR done. Before ACR, need to be hidden as inhouse API. [EditorBrowsable(EditorBrowsableState.Never)] public Matrix(float[] array) : this(Interop.Matrix.NewMatrix(array), true) { if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); } /// /// The constructor with Rotation to be rotation transform matrix. /// /// Rotation information. /// This will be public opened in next tizen after ACR done. Before ACR, need to be hidden as inhouse API. [EditorBrowsable(EditorBrowsableState.Never)] public Matrix(Rotation rotation) : this(Interop.Matrix.NewMatrixQuaternion(Rotation.getCPtr(rotation)), true) { if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); } /// /// The constructor. /// /// Matrix to create this matrix from /// This will be public opened in next tizen after ACR done. Before ACR, need to be hidden as inhouse API. [EditorBrowsable(EditorBrowsableState.Never)] public Matrix(Matrix matrix) : this(Interop.Matrix.NewMatrix(Matrix.getCPtr(matrix)), true) { if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); } /// /// Assign. /// /// A reference to the copied handle. /// A reference to this. internal Matrix Assign(Matrix rhs) { Matrix ret = new Matrix(Interop.Matrix.Assign(SwigCPtr, Matrix.getCPtr(rhs)), false); if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); return ret; } /// /// The matrix as identity /// /// /// [[1, 0, 0, 0], /// [0, 1, 0, 0], /// [0, 0, 1, 0], /// [0, 0, 0, 1]] /// /// This will be public opened in next tizen after ACR done. Before ACR, need to be hidden as inhouse API. [EditorBrowsable(EditorBrowsableState.Never)] public static Matrix Identity { get { global::System.IntPtr cPtr = Interop.Matrix.IdentityGet(); Matrix ret = (cPtr == global::System.IntPtr.Zero) ? null : new Matrix(cPtr, false); if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); return ret; } } /// /// Get/set the value of matrix by it's index. /// /// The index to get/set value. /// This will be public opened in next tizen after ACR done. Before ACR, need to be hidden as inhouse API. [EditorBrowsable(EditorBrowsableState.Never)] public float this[uint index] { set { SetValueAtIndex(index, value); } get { return ValueOfIndex(index); } } /// /// Multiply Matrix and Vector4. /// /// /// returns = lhs * rhs; /// /// The left-hand-side Matrix. /// The right-hand-side Vector4. /// The vector multiply as lhs * rhs. /// This will be public opened in next tizen after ACR done. Before ACR, need to be hidden as inhouse API. [EditorBrowsable(EditorBrowsableState.Never)] public static Vector4 operator *(Matrix lhs, Vector4 rhs) { return lhs?.Multiply(rhs); } /// /// Multiply Rotation matrix and Matrix. /// /// /// returns = lhs * rhs; /// /// The left-hand-side Rotation. /// The right-hand-side Matrix. /// The Matrix multiply as lhs * rhs. /// This will be public opened in next tizen after ACR done. Before ACR, need to be hidden as inhouse API. [EditorBrowsable(EditorBrowsableState.Never)] public static Matrix operator *(Rotation lhs, Matrix rhs) { Matrix ret = new Matrix(false); Matrix.Multiply(ret, rhs, lhs); // Note : Mutliply function be used for time-critical path. lhs and rhs is not matched as normal sense. return ret; } /// /// Multiply Matrix and Matrix. /// /// /// returns = lhs * rhs; /// /// The left-hand-side Matrix. /// The right-hand-side Matrix. /// The Matrix multiply as lhs * rhs. /// This will be public opened in next tizen after ACR done. Before ACR, need to be hidden as inhouse API. [EditorBrowsable(EditorBrowsableState.Never)] public static Matrix operator *(Matrix lhs, Matrix rhs) { return lhs?.Multiply(rhs); } /// /// Make matrix as identity. /// /// This will be public opened in next tizen after ACR done. Before ACR, need to be hidden as inhouse API. [EditorBrowsable(EditorBrowsableState.Never)] public void SetIdentity() { Interop.Matrix.SetIdentity(SwigCPtr); if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); } /// /// Make matrix as identity and multiply scale. /// /// The scale value to be multiplied into identity Matrix. /// This will be public opened in next tizen after ACR done. Before ACR, need to be hidden as inhouse API. [EditorBrowsable(EditorBrowsableState.Never)] public void SetIdentityAndScale(Vector3 scale) { Interop.Matrix.SetIdentityAndScale(SwigCPtr, Vector3.getCPtr(scale)); if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); } /// /// Inverts a transform Matrix.
/// Any Matrix representing only a rotation and/or translation /// can be inverted using this function. It is faster and more accurate then using Invert(). ///
/// The inverse of this Matrix. /// This will be public opened in next tizen after ACR done. Before ACR, need to be hidden as inhouse API. [EditorBrowsable(EditorBrowsableState.Never)] public void InvertTransform(Matrix result) { Interop.Matrix.InvertTransform(SwigCPtr, Matrix.getCPtr(result)); if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); } /// /// Generic brute force matrix invert. /// /// True if successful. /// This will be public opened in next tizen after ACR done. Before ACR, need to be hidden as inhouse API. [EditorBrowsable(EditorBrowsableState.Never)] public bool Invert() { bool ret = Interop.Matrix.Invert(SwigCPtr); if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); return ret; } /// /// Swaps the rows to columns. /// /// This will be public opened in next tizen after ACR done. Before ACR, need to be hidden as inhouse API. [EditorBrowsable(EditorBrowsableState.Never)] public void Transpose() { Interop.Matrix.Transpose(SwigCPtr); if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); } /// /// Returns the X Axis from a Transform matrix. /// /// The X axis. /// This will be public opened in next tizen after ACR done. Before ACR, need to be hidden as inhouse API. [EditorBrowsable(EditorBrowsableState.Never)] public Vector3 GetXAxis() { Vector3 ret = new Vector3(Interop.Matrix.GetXAxis(SwigCPtr), true); if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); return ret; } /// /// Returns the Y Axis from a Transform matrix. /// /// The Y axis. /// This will be public opened in next tizen after ACR done. Before ACR, need to be hidden as inhouse API. [EditorBrowsable(EditorBrowsableState.Never)] public Vector3 GetYAxis() { Vector3 ret = new Vector3(Interop.Matrix.GetYAxis(SwigCPtr), true); if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); return ret; } /// /// Returns the Z Axis from a Transform matrix. /// /// The Z axis. /// This will be public opened in next tizen after ACR done. Before ACR, need to be hidden as inhouse API. [EditorBrowsable(EditorBrowsableState.Never)] public Vector3 GetZAxis() { Vector3 ret = new Vector3(Interop.Matrix.GetZAxis(SwigCPtr), true); if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); return ret; } /// /// Sets the X Axis to a Transform matrix.
/// This assumes the matrix is a transform matrix. ///
/// The X axis. /// This will be public opened in next tizen after ACR done. Before ACR, need to be hidden as inhouse API. [EditorBrowsable(EditorBrowsableState.Never)] public void SetXAxis(Vector3 axis) { Interop.Matrix.SetXAxis(SwigCPtr, Vector3.getCPtr(axis)); if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); } /// /// Sets the Y Axis to a Transform matrix.
/// This assumes the matrix is a transform matrix. ///
/// The Y axis. /// This will be public opened in next tizen after ACR done. Before ACR, need to be hidden as inhouse API. [EditorBrowsable(EditorBrowsableState.Never)] public void SetYAxis(Vector3 axis) { Interop.Matrix.SetYAxis(SwigCPtr, Vector3.getCPtr(axis)); if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); } /// /// Sets the Z Axis to a Transform matrix.
/// This assumes the matrix is a transform matrix. ///
/// The Z axis. /// This will be public opened in next tizen after ACR done. Before ACR, need to be hidden as inhouse API. [EditorBrowsable(EditorBrowsableState.Never)] public void SetZAxis(Vector3 axis) { Interop.Matrix.SetZAxis(SwigCPtr, Vector3.getCPtr(axis)); if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); } /// /// Gets the translate from a Transform matrix.
/// This assumes the matrix is a transform matrix. ///
/// The Translation. /// This will be public opened in next tizen after ACR done. Before ACR, need to be hidden as inhouse API. [EditorBrowsable(EditorBrowsableState.Never)] public Vector4 GetTranslation() { Vector4 ret = new Vector4(Interop.Matrix.GetTranslation(SwigCPtr), false); if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); return ret; } /// /// Gets the x, y, and z components of translate from a Transform matrix.
/// This assumes the matrix is a transform matrix. ///
/// The Translation. /// This will be public opened in next tizen after ACR done. Before ACR, need to be hidden as inhouse API. [EditorBrowsable(EditorBrowsableState.Never)] public Vector3 GetTranslation3() { Vector3 ret = new Vector3(Interop.Matrix.GetTranslation3(SwigCPtr), false); if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); return ret; } /// /// Sets the translate to a Transform matrix.
/// This assumes the matrix is a transform matrix. ///
/// The Translation. /// The translation. /// This will be public opened in next tizen after ACR done. Before ACR, need to be hidden as inhouse API. [EditorBrowsable(EditorBrowsableState.Never)] public void SetTranslation(Vector4 translation) { Interop.Matrix.SetTranslationVector4(SwigCPtr, Vector4.getCPtr(translation)); if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); } /// /// Sets the translate to a Transform matrix.
/// This assumes the matrix is a transform matrix. ///
/// The translation. /// This will be public opened in next tizen after ACR done. Before ACR, need to be hidden as inhouse API. [EditorBrowsable(EditorBrowsableState.Never)] public void SetTranslation(Vector3 translation) { Interop.Matrix.SetTranslationVector3(SwigCPtr, Vector3.getCPtr(translation)); if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); } /// /// Makes the axes of the matrix orthogonal to each other and of unit length.
/// This function is used to correct floating point errors which would otherwise accumulate /// as operations are applied to the matrix.
/// This assumes the matrix is a transform matrix. ///
/// This will be public opened in next tizen after ACR done. Before ACR, need to be hidden as inhouse API. [EditorBrowsable(EditorBrowsableState.Never)] public void OrthoNormalize() { Interop.Matrix.OrthoNormalize(SwigCPtr); if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); } /// /// Function to multiply two matrices and store the result onto third.
/// Use this method in time critical path as it does not require temporaries.
///
/// /// This Mutliply function be used for time-critical path. lhs and rhs is not matched as normal sense. /// /// /// result = rhs * lhs; /// /// Result of the multiplication. /// The left-hand-side Matrix. this can be same matrix as result. /// The right-hand-side Matrix. this cannot be same matrix as result. /// This will be public opened in next tizen after ACR done. Before ACR, need to be hidden as inhouse API. [EditorBrowsable(EditorBrowsableState.Never)] public static void Multiply(Matrix result, Matrix lhs, Matrix rhs) { Interop.Matrix.Multiply(Matrix.getCPtr(result), Matrix.getCPtr(lhs), Matrix.getCPtr(rhs)); if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); } /// /// Function to multiply a matrix and rotataion and store the result onto third.
/// Use this method in time critical path as it does not require temporaries.
///
/// /// This Mutliply function be used for time-critical path. lhs and rhs is not matched as normal sense. /// /// /// result = rhs * lhs; /// /// Result of the multiplication. /// The left-hand-side Matrix. this can be same matrix as result. /// The right-hand-side Rotation. /// This will be public opened in next tizen after ACR done. Before ACR, need to be hidden as inhouse API. [EditorBrowsable(EditorBrowsableState.Never)] public static void Multiply(Matrix result, Matrix lhs, Rotation rhs) { Interop.Matrix.MultiplyQuaternion(Matrix.getCPtr(result), Matrix.getCPtr(lhs), Rotation.getCPtr(rhs)); if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); } /// /// Multiply the Matrix and Vector4. /// /// /// returns = this * rhs; /// /// The right-hand-side Vector4. /// The vector multiply as this * rhs. /// This will be public opened in next tizen after ACR done. Before ACR, need to be hidden as inhouse API. [EditorBrowsable(EditorBrowsableState.Never)] public Vector4 Multiply(Vector4 rhs) { Vector4 ret = new Vector4(Interop.Matrix.MultiplyVector4(SwigCPtr, Vector4.getCPtr(rhs)), true); if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); return ret; } /// /// Multiply the Matrix and Matrix. /// /// /// returns = this * rhs; /// /// The right-hand-side Matrix. /// The matrix multiply as this * rhs. /// This will be public opened in next tizen after ACR done. Before ACR, need to be hidden as inhouse API. [EditorBrowsable(EditorBrowsableState.Never)] public Matrix Multiply(Matrix rhs) { Matrix ret = new Matrix(Interop.Matrix.Multiply(SwigCPtr, Matrix.getCPtr(rhs)), true); if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); return ret; } /// /// Multiply the Matrix and Matrix. Result will be stored into this Matrix. /// /// /// this = this * rhs; /// /// The right-hand-side Matrix. /// This will be public opened in next tizen after ACR done. Before ACR, need to be hidden as inhouse API. [EditorBrowsable(EditorBrowsableState.Never)] public void MultiplyAssign(Matrix rhs) { Interop.Matrix.MultiplyAssign(SwigCPtr, Matrix.getCPtr(rhs)); if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); } /// /// Gets the hash code of this Matrix. /// /// The Hash Code. /// This will be public opened in next tizen after ACR done. Before ACR, need to be hidden as inhouse API. [EditorBrowsable(EditorBrowsableState.Never)] public override int GetHashCode() { return SwigCPtr.Handle.GetHashCode(); } /// /// Compares if rhs is equal to. /// /// The matrix to compare. /// Returns true if the two matrixes are equal, otherwise false. /// This will be public opened in next tizen after ACR done. Before ACR, need to be hidden as inhouse API. [EditorBrowsable(EditorBrowsableState.Never)] public bool EqualTo(Matrix rhs) { bool ret = Interop.Matrix.EqualTo(SwigCPtr, Matrix.getCPtr(rhs)); if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); return ret; } /// /// Compares if rhs is not equal to. /// /// The matrix to compare. /// Returns true if the two matrixes are not equal, otherwise false. /// This will be public opened in next tizen after ACR done. Before ACR, need to be hidden as inhouse API. [EditorBrowsable(EditorBrowsableState.Never)] public bool NotEqualTo(Matrix rhs) { bool ret = Interop.Matrix.NotEqualTo(SwigCPtr, Matrix.getCPtr(rhs)); if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); return ret; } /// /// Sets this matrix to contain the position, scale and rotation components.
/// Performs scale, rotation, then translation ///
/// Scale to apply. /// Rotation to apply. /// Translation to apply. /// This will be public opened in next tizen after ACR done. Before ACR, need to be hidden as inhouse API. [EditorBrowsable(EditorBrowsableState.Never)] public void SetTransformComponents(Vector3 scale, Rotation rotation, Vector3 translation) { Interop.Matrix.SetTransformComponents(SwigCPtr, Vector3.getCPtr(scale), Rotation.getCPtr(rotation), Vector3.getCPtr(translation)); if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); } /// /// Sets this matrix to contain the inverse of the position, scale and rotation components.
/// Performs scale, rotation, then translation ///
/// Scale to apply. /// Rotation to apply. /// Translation to apply. /// This will be public opened in next tizen after ACR done. Before ACR, need to be hidden as inhouse API. [EditorBrowsable(EditorBrowsableState.Never)] public void SetInverseTransformComponents(Vector3 scale, Rotation rotation, Vector3 translation) { Interop.Matrix.SetInverseTransformComponents(SwigCPtr, Vector3.getCPtr(scale), Rotation.getCPtr(rotation), Vector3.getCPtr(translation)); if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); } /// /// Sets this matrix to contain the inverse of the orthonormal basis and position components.
/// Performs scale, rotation, then translation ///
/// The X axis of the basis. /// The Y axis of the basis. /// The Z axis of the basis. /// Translation to apply. /// This will be public opened in next tizen after ACR done. Before ACR, need to be hidden as inhouse API. [EditorBrowsable(EditorBrowsableState.Never)] public void SetInverseTransformComponents(Vector3 xAxis, Vector3 yAxis, Vector3 zAxis, Vector3 translation) { Interop.Matrix.SetInverseTransformComponents(SwigCPtr, Vector3.getCPtr(xAxis), Vector3.getCPtr(yAxis), Vector3.getCPtr(zAxis), Vector3.getCPtr(translation)); if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); } /// /// Gets the position, scale and rotation components from the given transform matrix.
///
/// /// This matrix must not contain skews or shears. /// /// Position to set. /// Rotation to set - only valid if the transform matrix has not been skewed or sheared /// Scale to set - only valid if the transform matrix has not been skewed or sheared. /// This will be public opened in next tizen after ACR done. Before ACR, need to be hidden as inhouse API. [EditorBrowsable(EditorBrowsableState.Never)] public void GetTransformComponents(Vector3 position, Rotation rotation, Vector3 scale) { Interop.Matrix.GetTransformComponents(SwigCPtr, Vector3.getCPtr(position), Rotation.getCPtr(rotation), Vector3.getCPtr(scale)); if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); } /// /// Get the value of matrix by it's index. /// /// The index to get value. /// A value of index /// This will be public opened in next tizen after ACR done. Before ACR, need to be hidden as inhouse API. [EditorBrowsable(EditorBrowsableState.Never)] public float ValueOfIndex(uint index) { float ret = Interop.Matrix.ValueOfIndex(SwigCPtr, index); if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); return ret; } /// /// Get the value of matrix by it's row index and column index. /// /// The row index to get value. /// The column index to get value. /// A value of index /// This will be public opened in next tizen after ACR done. Before ACR, need to be hidden as inhouse API. [EditorBrowsable(EditorBrowsableState.Never)] public float ValueOfIndex(uint indexRow, uint indexColumn) { float ret = Interop.Matrix.ValueOfIndex(SwigCPtr, indexRow, indexColumn); if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); return ret; } /// /// Set the value at matrix by it's index. /// /// The index to set value. /// The value to set. /// This will be public opened in next tizen after ACR done. Before ACR, need to be hidden as inhouse API. [EditorBrowsable(EditorBrowsableState.Never)] public void SetValueAtIndex(uint index, float value) { Interop.Matrix.SetValueAtIndex(SwigCPtr, index, value); if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); } /// /// Set the value at matrix by it's row index and column index. /// /// The row index to set value. /// The column index to set value. /// The value to set. /// This will be public opened in next tizen after ACR done. Before ACR, need to be hidden as inhouse API. [EditorBrowsable(EditorBrowsableState.Never)] public void SetValueAtIndex(uint indexRow, uint indexColumn, float value) { Interop.Matrix.SetValueAtIndex(SwigCPtr, indexRow, indexColumn, value); if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); } /// /// Get the matrix class from native IntPtr /// /// The native IntPtr. /// New created matrix by inputed cPtr internal static Matrix GetMatrixFromPtr(global::System.IntPtr cPtr) { Matrix ret = new Matrix(cPtr, false); if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); return ret; } } }