Example #1
0
        /// <summary>
        /// Calls a method on a FREObject
        /// </summary>
        /// <param name="inFre"></param>
        /// <param name="method">The method name</param>
        /// <param name="args">Arguments to pass to the method</param>
        /// <returns></returns>
        public static FREObject Call(this FREObject inFre, string method, params object[] args)
        {
            uint resultPtr = 0;
            var  argsArr   = new ArrayList();

            if (args != null)
            {
                for (var i = 0; i < args.Length; i++)
                {
                    argsArr.Add(args.ElementAt(i));
                }
            }

            var ret = FreSharpHelper.Core.callMethod(inFre, method, FreSharpHelper.ArgsToArgv(argsArr),
                                                     FreSharpHelper.GetArgsC(argsArr), ref resultPtr);

            var status = (FreResultSharp)resultPtr;

            if (status == FreResultSharp.Ok)
            {
                return(ret);
            }

            FreSharpHelper.ThrowFreException(status, "cannot call method " + method, ret);
            return(FREObject.Zero);
        }
Example #2
0
        /// <summary>
        /// Sets the C# FreObject in the C# FreArray at i.
        /// </summary>
        public void Set(uint index, object value)
        {
            uint resultPtr = 0;

            FreSharpHelper.Core.setObjectAt(RawValue, index,
                                            FreSharpHelper.FREObjectFromObject(value), ref resultPtr);
        }
Example #3
0
        /// <summary>
        /// Sets the C# FreObject in the C# FreArray at i.
        /// </summary>

        public void Set(uint index, object value)
        {
            uint resultPtr = 0;
            var  v         = new FreObjectSharp(FreSharpHelper.FreObjectSharpFromObject(value).RawValue);

            FreSharpHelper.Core.setObjectAt(RawValue, index, v.RawValue, ref resultPtr);
        }
Example #4
0
        /// <summary>
        /// Creates a FREObject
        /// </summary>
        /// <param name="value"></param>
        /// <param name="className">Name of the Class</param>
        /// <param name="args">Arguments to pass to the Class</param>
        /// <returns></returns>
        public static FREObject Init(this FREObject value, string className, params object[] args)
        {
            uint resultPtr = 0;
            var  argsArr   = new ArrayList();

            if (args != null)
            {
                for (var i = 0; i < args.Length; i++)
                {
                    argsArr.Add(args.ElementAt(i));
                }
            }

            var rawValue = FreSharpHelper.Core.getFREObject(className, FreSharpHelper.ArgsToArgv(argsArr),
                                                            FreSharpHelper.GetArgsC(argsArr), ref resultPtr);
            var status = (FreResultSharp)resultPtr;

            if (status == FreResultSharp.Ok)
            {
                return(rawValue);
            }

            FreSharpHelper.ThrowFreException(status, "cannot create class " + className, rawValue);
            return(FREObject.Zero);
        }
Example #5
0
        /// <summary>
        /// Calls a method on a FREObject.
        /// </summary>
        /// <param name="freObject"></param>
        /// <param name="method">The method name.</param>
        /// <param name="args">Arguments to pass to the method.</param>
        /// <returns></returns>
        public static FREObject Call(this FREObject freObject, string method, params object[] args)
        {
            uint resultPtr = 0;
            var  argsArr   = new ArrayList();

            if (args != null)
            {
                for (var i = 0; i < args.Length; i++)
                {
                    argsArr.Add(args.ElementAt(i));
                }
            }

            var ret = FreSharpHelper.Core.callMethod(freObject, method, FreSharpHelper.ArgsToArgv(argsArr),
                                                     FreSharpHelper.GetArgsC(argsArr), ref resultPtr);

            var status = (FreResultSharp)resultPtr;

            if (status == FreResultSharp.Ok)
            {
                return(ret);
            }
            Logger.Error($"cannot call method {method} of {freObject.toString()}", status, ret);
            return(FREObject.Zero);
        }
Example #6
0
        /// <summary>
        /// Calls a method on a FREArray
        /// </summary>
        /// <param name="inFre"></param>
        /// <param name="methodName">The method name</param>
        /// <param name="args">Arguments to pass to the method</param>
        /// <returns></returns>
        public static FREArray Call(this FREObject inFre, string methodName, ArrayList args)
        {
            uint resultPtr = 0;
            var  ret       = new FREArray(FreSharpHelper.Core.callMethod(inFre, methodName,
                                                                         FreSharpHelper.ArgsToArgv(args), FreSharpHelper.GetArgsC(args), ref resultPtr));
            var status = (FreResultSharp)resultPtr;

            if (status == FreResultSharp.Ok)
            {
                return(ret);
            }

            FreSharpHelper.ThrowFreException(status, "cannot call method " + methodName, ret.RawValue);
            return(null);
        }
Example #7
0
        /// <summary>
        /// Creates a FREObject.
        /// </summary>
        /// <param name="value"></param>
        /// <param name="name">Name of the Class.</param>
        /// <returns></returns>
        public static FREObject Init(this FREObject value, string name)
        {
            uint resultPtr = 0;
            var  argsArr   = new ArrayList();
            var  ret       = FreSharpHelper.Core.getFREObject(name, FreSharpHelper.ArgsToArgv(argsArr),
                                                              FreSharpHelper.GetArgsC(argsArr), ref resultPtr);
            var status = (FreResultSharp)resultPtr;

            if (status == FreResultSharp.Ok)
            {
                return(ret);
            }
            Logger.Error($"cannot create class {name}", status, ret);
            return(FREObject.Zero);
        }
Example #8
0
        /// <summary>
        /// Calls a method on a FREArray.
        /// </summary>
        /// <param name="freObject"></param>
        /// <param name="methodName">The method name.</param>
        /// <param name="args">Arguments to pass to the method.</param>
        /// <returns></returns>
        public static FREArray Call(this FREObject freObject, string methodName, ArrayList args)
        {
            uint resultPtr = 0;
            var  fre       = FreSharpHelper.Core.callMethod(freObject, methodName,
                                                            FreSharpHelper.ArgsToArgv(args), FreSharpHelper.GetArgsC(args), ref resultPtr);
            var ret    = new FREArray(fre);
            var status = (FreResultSharp)resultPtr;

            if (status == FreResultSharp.Ok)
            {
                return(ret);
            }
            Logger.Error($"cannot call method {methodName} of {freObject.toString()}", status, fre);
            return(null);
        }
        /// <summary>
        ///
        /// </summary>
        /// <param name="value"></param>
        /// <param name="name"></param>
        /// <returns></returns>
        public static FREObject Init(this FREObject value, string name)
        {
            uint resultPtr = 0;
            var  argsArr   = new ArrayList();
            var  rawValue  = FreSharpHelper.Core.getFREObject(name, FreSharpHelper.ArgsToArgv(argsArr),
                                                              FreSharpHelper.GetArgsC(argsArr), ref resultPtr);
            var status = (FreResultSharp)resultPtr;

            if (status == FreResultSharp.Ok)
            {
                return(rawValue);
            }
            FreSharpHelper.ThrowFreException(status, "cannot create class " + name, rawValue);
            return(FREObject.Zero);
        }
Example #10
0
        /// <summary>
        /// Initialise a System.Drawing.Color from a FREObject.
        /// </summary>
        /// <param name="inFre"></param>
        /// <param name="hasAlpha">Set to true when the AS3 uint is in ARGB format</param>
        /// <returns></returns>
        public static Color AsColor(this FREObject inFre, bool hasAlpha = false)
        {
            var rgb = FreSharpHelper.GetAsUInt(new FreObjectSharp(inFre).RawValue);

            if (hasAlpha)
            {
                return(Color.FromArgb(
                           Convert.ToByte((rgb >> 24) & 0xff),
                           Convert.ToByte((rgb >> 16) & 0xff),
                           Convert.ToByte((rgb >> 8) & 0xff),
                           Convert.ToByte((rgb >> 0) & 0xff)));
            }
            return(Color.FromArgb(
                       Convert.ToByte((rgb >> 16) & 0xff),
                       Convert.ToByte((rgb >> 8) & 0xff),
                       Convert.ToByte((rgb >> 0) & 0xff)));
        }
Example #11
0
        /// <summary>
        /// Returns the FREArray as a C# bool[].
        /// </summary>
        /// <returns></returns>
        public bool[] AsBoolArray()
        {
            var arr = new bool[Length];
            var len = Length;

            if (len <= 0)
            {
                return(arr);
            }
            for (uint i = 0; i < len; i++)
            {
                var itm = At(i);
                if (itm.Type() != FreObjectTypeSharp.Boolean)
                {
                    return(arr);
                }

                arr.SetValue(FreSharpHelper.GetAsBool(itm), i);
            }

            return(arr);
        }
Example #12
0
        /// <summary>
        /// Returns the FREArray as a C# string[].
        /// </summary>
        /// <returns></returns>
        public string[] AsStringArray()
        {
            var arr = new string[Length];
            var len = Length;

            if (len <= 0)
            {
                return(arr);
            }
            for (uint i = 0; i < len; i++)
            {
                var itm = At(i);
                if (itm.Type() != FreObjectTypeSharp.String)
                {
                    return(arr);
                }

                arr[i] = FreSharpHelper.GetAsString(itm);
            }

            return(arr);
        }
Example #13
0
        /// <summary>
        /// Returns the FREArray as a C# double[].
        /// </summary>
        /// <returns></returns>
        public double[] AsDoubleArray()
        {
            var arr = new double[Length];
            var len = Length;

            if (len <= 0)
            {
                return(arr);
            }
            for (uint i = 0; i < len; i++)
            {
                var itm = At(i);
                if (itm.Type() != FreObjectTypeSharp.Number && itm.Type() != FreObjectTypeSharp.Int)
                {
                    return(arr);
                }

                arr[i] = FreSharpHelper.GetAsDouble(itm);
            }

            return(arr);
        }
Example #14
0
        /// <summary>
        /// Returns the FREArray as C# uint[].
        /// </summary>
        /// <returns></returns>
        public uint[] AsUIntArray()
        {
            var arr = new uint[Length];
            var len = Length;

            if (len <= 0)
            {
                return(arr);
            }
            for (uint i = 0; i < len; i++)
            {
                var itm = At(i);
                if (itm.Type() != FreObjectTypeSharp.Int)
                {
                    return(arr);
                }

                arr[i] = FreSharpHelper.GetAsUInt(itm);
            }

            return(arr);
        }
Example #15
0
 /// <summary>
 /// Traces the message to the console.
 /// </summary>
 /// <param name="message">Message to log.</param>
 /// <param name="type">Type of error</param>
 /// <param name="freException">The Exception</param>
 public void Error(string message, FreResultSharp type, FREObject freException)
 {
     Context?.DispatchEvent("TRACE", $"[FreSharp] ‼ {type} {message}");
     if (FreObjectTypeSharp.Class != freException.Type())
     {
         return;
     }
     try {
         if (!freException.hasOwnProperty("getStackTrace"))
         {
             return;
         }
         var asStackTrace = freException.Call("getStackTrace");
         if (FreObjectTypeSharp.String == asStackTrace.Type())
         {
             Context?.DispatchEvent("TRACE", $"[FreSharp] ‼ {FreSharpHelper.GetAsString(asStackTrace)}");
         }
     }
     catch (Exception) {
         //ignored
     }
 }
Example #16
0
        /// <summary>
        /// Adds one or more elements to the end of an array and returns the new length of the array.
        /// </summary>
        /// <param name="args">One or more values to append to the array.</param>
        public void Push(params object[] args)
        {
            uint resultPtr = 0;
            var  argsArr   = new ArrayList();

            if (args != null)
            {
                for (var i = 0; i < args.Length; i++)
                {
                    argsArr.Add(args.ElementAt(i));
                }
            }

            var ret = FreSharpHelper.Core.callMethod(RawValue, "push", FreSharpHelper.ArgsToArgv(argsArr),
                                                     FreSharpHelper.GetArgsC(argsArr), ref resultPtr);
            var status = (FreResultSharp)resultPtr;

            if (status == FreResultSharp.Ok)
            {
                return;
            }
            Logger.Error("cannot call method push on FREArray", status, ret);
        }
Example #17
0
 /// <summary>
 /// Converts a FREObject to a C# bool
 /// </summary>
 /// <param name="inFre"></param>
 /// <returns></returns>
 public static bool AsBool(this FREObject inFre) => FreSharpHelper.GetAsBool(inFre);
Example #18
0
 /// <summary>
 /// Converts a FREObject to a DateTime
 /// </summary>
 /// <param name="inFre"></param>
 /// <returns></returns>
 public static DateTime AsDateTime(this FREObject inFre) => FreSharpHelper.GetAsDateTime(inFre);
Example #19
0
 /// <summary>
 /// Converts a FREObject to a C# string
 /// </summary>
 /// <param name="inFre"></param>
 /// <returns></returns>
 public static string AsString(this FREObject inFre) => FreSharpHelper.GetAsString(inFre);
Example #20
0
 /// <summary>
 /// Converts a FREObject to a C# uint
 /// </summary>
 /// <param name="inFre"></param>
 /// <returns></returns>
 public static uint AsUInt(this FREObject inFre) => FreSharpHelper.GetAsUInt(inFre);
Example #21
0
 /// <summary>
 /// Converts a FREObject to a C# double
 /// </summary>
 /// <param name="inFre"></param>
 /// <returns></returns>
 public static double AsDouble(this FREObject inFre) => FreSharpHelper.GetAsDouble(inFre);
Example #22
0
 /// <summary>
 /// Converts a FREObject to a C# Dictionary&lt;string, object&gt;
 /// </summary>
 /// <param name="inFre"></param>
 /// <returns></returns>
 public static Dictionary <string, object> AsDictionary(this FREObject inFre) =>
 FreSharpHelper.GetAsDictionary(inFre);
Example #23
0
        /// <summary>
        ///
        /// </summary>
        /// <returns></returns>
        public ArrayList GetAsArrayList()
        {
            var al  = new ArrayList();
            var len = Length;

            if (len <= 0)
            {
                return(al);
            }
            for (uint i = 0; i < len; i++)
            {
                var itm  = At(i);
                var type = itm.Type();
                switch (type)
                {
                case FreObjectTypeSharp.String:
                    al.Add(FreSharpHelper.GetAsString(itm));
                    break;

                case FreObjectTypeSharp.Bytearray:
                    var ba = new FreByteArraySharp(itm);
                    ba.Acquire();
                    var baTarget = new byte[ba.Length];
                    ba.Bytes.CopyTo(baTarget, 0);
                    al.Add(baTarget);
                    ba.Release();
                    break;

                case FreObjectTypeSharp.Array:
                case FreObjectTypeSharp.Vector:
                    var arrFre = new FREArray(itm);
                    al.Add(arrFre.GetAsArrayList());
                    break;

                case FreObjectTypeSharp.Bitmapdata:
                    var bmdFre = new FreBitmapDataSharp(itm);
                    al.Add(bmdFre.GetAsBitmap());
                    break;

                case FreObjectTypeSharp.Boolean:
                    al.Add(FreSharpHelper.GetAsBool(itm));
                    break;

                case FreObjectTypeSharp.Null:
                    break;

                case FreObjectTypeSharp.Int:
                    al.Add(FreSharpHelper.GetAsInt(itm));
                    break;

                case FreObjectTypeSharp.Object:
                case FreObjectTypeSharp.Class:
                    al.Add(FreSharpHelper.GetAsDictionary(itm));
                    break;

                case FreObjectTypeSharp.Number:
                    al.Add(FreSharpHelper.GetAsDouble(itm));
                    break;

                case FreObjectTypeSharp.Rectangle:
                    var rectFre = new FreRectangleSharp(itm);
                    al.Add(rectFre.Value);
                    break;

                default:
                    throw new ArgumentOutOfRangeException();
                }
            }
            return(al);
        }
Example #24
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="inFre"></param>
 /// <param name="name"></param>
 /// <param name="value"></param>
 public static void SetProp(this FREObject inFre, string name, object value)
 {
     //throws ? //TODO
     FreSharpHelper.SetProperty(inFre, name, value);
 }
Example #25
0
 /// <summary>
 /// Gets the property of a FREObject
 /// </summary>
 /// <param name="inFre"></param>
 /// <param name="name">Name of the property</param>
 /// <returns></returns>
 public static FREObject GetProp(this FREObject inFre, string name)
 {
     return(FreSharpHelper.GetProperty(inFre, name));
 }
Example #26
0
 /// <summary>
 /// Call this function to get an extension context’s ActionScript data.
 /// </summary>
 /// <returns></returns>
 public FREObject GetActionScriptData()
 {
     return(_rawValue == FREObject.Zero
         ? FREObject.Zero
         : FreSharpHelper.GetActionScriptData(ref _rawValue));
 }
Example #27
0
 /// <summary>
 /// Dispatches an event. Mimics FREDispatchStatusEventAsync.
 /// </summary>
 /// <param name="name"></param>
 /// <param name="value"></param>
 public void DispatchEvent(string name, string value)
 {
     FreSharpHelper.DispatchEvent(ref _rawValue, name, value);
 }
Example #28
0
 /// <summary>
 /// Sets the property of a FREObject
 /// </summary>
 /// <param name="inFre"></param>
 /// <param name="name">Name of the property</param>
 /// <param name="value">Value of the property</param>
 public static void SetProp(this FREObject inFre, string name, FREObject value)
 {
     FreSharpHelper.SetProperty(inFre, name, value);
 }
Example #29
0
 /// <summary>
 /// Call this function to set an extension context’s ActionScript data.
 /// </summary>
 /// <param name="value">FREObject to set</param>
 public void SetActionScriptData(FREObject value)
 {
     FreSharpHelper.SetActionScriptData(ref _rawValue, value);
 }
Example #30
0
 /// <summary>
 /// Returns the type of the FREObject
 /// </summary>
 /// <param name="inFre"></param>
 /// <returns></returns>
 public static FreObjectTypeSharp Type(this FREObject inFre) => FreSharpHelper.GetType(inFre);