/// <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); }
/// <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); }
/// <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); }
/// <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); }
/// <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); }
/// <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); }
/// <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); }
/// <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); }
/// <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))); }
/// <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); }
/// <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); }
/// <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); }
/// <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); }
/// <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 } }
/// <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); }
/// <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);
/// <summary> /// Converts a FREObject to a DateTime /// </summary> /// <param name="inFre"></param> /// <returns></returns> public static DateTime AsDateTime(this FREObject inFre) => FreSharpHelper.GetAsDateTime(inFre);
/// <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);
/// <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);
/// <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);
/// <summary> /// Converts a FREObject to a C# Dictionary<string, object> /// </summary> /// <param name="inFre"></param> /// <returns></returns> public static Dictionary <string, object> AsDictionary(this FREObject inFre) => FreSharpHelper.GetAsDictionary(inFre);
/// <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); }
/// <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); }
/// <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)); }
/// <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)); }
/// <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); }
/// <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); }
/// <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); }
/// <summary> /// Returns the type of the FREObject /// </summary> /// <param name="inFre"></param> /// <returns></returns> public static FreObjectTypeSharp Type(this FREObject inFre) => FreSharpHelper.GetType(inFre);