/// <summary> /// /// </summary> /// <param name="freObjectSharp"></param> /// <param name="id"></param> /// <param name="ctx"></param> public FreNativeButton(FreObjectSharp freObjectSharp, string id, ref FREContext ctx) { _ctx = ctx; _upState = BitmapUtils.BitmapToSource( new FreBitmapDataSharp(freObjectSharp.GetProperty("upStateData").RawValue).GetAsBitmap()); _overState = BitmapUtils.BitmapToSource(new FreBitmapDataSharp(freObjectSharp.GetProperty("overStateData").RawValue) .GetAsBitmap()); _downState = BitmapUtils.BitmapToSource(new FreBitmapDataSharp(freObjectSharp.GetProperty("downStateData").RawValue) .GetAsBitmap()); _id = id; Width = _upState.Width; Height = _upState.Height; HorizontalAlignment = HorizontalAlignment.Left; VerticalAlignment = VerticalAlignment.Top; Source = _upState; MouseEnter += Button_MouseEnter; MouseLeave += Button_MouseLeave; MouseDown += Button_MouseDown; MouseUp += Button_MouseUp; X = Convert.ToDouble(freObjectSharp.GetProperty("x").Value); Y = Convert.ToDouble(freObjectSharp.GetProperty("y").Value); Visibility = Convert.ToBoolean(freObjectSharp.GetProperty("visible").Value) ? Visibility.Visible : Visibility.Hidden; RenderTransform = new TranslateTransform(X, Y); Opacity = Convert.ToDouble(freObjectSharp.GetProperty("alpha").Value); }
public FREObject SetPositionAndSize(FREContext ctx, uint argc, FREObject[] argv) { var tmpX = new FreObjectSharp(argv[0]).GetAsInt(); var tmpY = new FreObjectSharp(argv[1]).GetAsInt(); var tmpWidth = new FreObjectSharp(argv[2]).GetAsInt(); var tmpHeight = new FreObjectSharp(argv[3]).GetAsInt(); var updateWidth = false; var updateHeight = false; var updateX = false; var updateY = false; if (tmpWidth != _view.ViewWidth) { _view.ViewWidth = tmpWidth; updateWidth = true; } if (tmpHeight != _view.ViewHeight) { _view.ViewHeight = tmpHeight; updateHeight = true; } if (tmpX != _view.X) { _view.X = tmpX; updateX = true; } if (tmpY != _view.Y) { _view.Y = tmpY; updateY = true; } if (!updateX && !updateY && !updateWidth && !updateHeight) { return(FREObject.Zero); } var flgs = (WindowPositionFlags)0; if (!updateWidth && !updateHeight) { flgs |= WindowPositionFlags.SWP_NOSIZE; } if (!updateX && !updateY) { flgs |= WindowPositionFlags.SWP_NOMOVE; } WinApi.SetWindowPos(_cefWindow, new IntPtr(0), _view.X, _view.Y, _view.ViewWidth, _view.ViewHeight, flgs); WinApi.UpdateWindow(_cefWindow); return(FREObject.Zero); }
public FreNativeSprite(FreObjectSharp freObjectSharp) { HorizontalAlignment = HorizontalAlignment.Left; VerticalAlignment = VerticalAlignment.Top; X = Convert.ToDouble(freObjectSharp.GetProperty("x").Value); Y = Convert.ToDouble(freObjectSharp.GetProperty("y").Value); Visibility = Convert.ToBoolean(freObjectSharp.GetProperty("visible").Value) ? Visibility.Visible : Visibility.Hidden; RenderTransform = new TranslateTransform(X, Y); Opacity = Convert.ToDouble(freObjectSharp.GetProperty("alpha").Value); }
/// <summary> /// /// </summary> /// <param name="ctx"></param> /// <param name="argc"></param> /// <param name="argv"></param> /// <returns></returns> /// <exception cref="ArgumentOutOfRangeException"></exception> public static FREObject AddChild(FREContext ctx, uint argc, FREObject[] argv) { var inFre0 = argv[0]; if (inFre0 == FREObject.Zero) { return(FREObject.Zero); } var inFre1 = argv[1]; if (inFre1 == FREObject.Zero) { return(FREObject.Zero); } var parentId = new FreObjectSharp(inFre0).Value as string; var child = new FreObjectSharp(inFre1); var id = Convert.ToString(child.GetProperty("id").Value); var type = (FreStageSharp.FreNativeType)Convert.ToInt32(child.GetProperty("type").Value); switch (type) { case FreStageSharp.FreNativeType.Image: var nativeImage = new FreNativeImage(child); AddToParent(parentId, nativeImage); Children.Add(id, new Tuple <string, object>(parentId, nativeImage)); break; case FreStageSharp.FreNativeType.Button: var nativeButton = new FreNativeButton(child, id, ref ctx); AddToParent(parentId, nativeButton); Children.Add(id, new Tuple <string, object>(parentId, nativeButton)); break; case FreStageSharp.FreNativeType.Sprite: var nativeSprite = new FreNativeSprite(child); AddToParent(parentId, nativeSprite); Children.Add(id, new Tuple <string, object>(parentId, nativeSprite)); break; default: throw new ArgumentOutOfRangeException(); } return(FREObject.Zero); }
public FREObject EvaluateJavaScript(FREContext ctx, uint argc, FREObject[] argv) { var js = new FreObjectSharp(argv[0]).GetAsString(); var callbackFre = new FreObjectSharp(argv[1]); if (FreObjectTypeSharp.Null == callbackFre.GetType()) { EvaluateJavaScript(js); } else { var callback = callbackFre.GetAsString(); EvaluateJavaScript(js, callback); } return(FREObject.Zero); }
public FREObject CallJavascriptFunction(FREContext ctx, uint argc, FREObject[] argv) { var js = Convert.ToString(new FreObjectSharp(argv[0]).Value); var callbackFre = new FreObjectSharp(argv[1]); if (FreObjectTypeSharp.Null == callbackFre.GetType()) { CallJavascriptFunction(js); } else { var callback = Convert.ToString(callbackFre.Value); CallJavascriptFunction(js, callback); } return(FREObject.Zero); }
/// <summary> /// /// </summary> /// <param name="freObjectSharp"></param> public FreNativeImage(FreObjectSharp freObjectSharp) { var bitmap = new FreBitmapDataSharp(freObjectSharp.GetProperty("bitmapData").RawValue).GetAsBitmap(); Width = bitmap.Width; Height = bitmap.Height; HorizontalAlignment = HorizontalAlignment.Left; VerticalAlignment = VerticalAlignment.Top; Source = BitmapUtils.BitmapToSource(bitmap); X = Convert.ToDouble(freObjectSharp.GetProperty("x").Value); Y = Convert.ToDouble(freObjectSharp.GetProperty("y").Value); Visibility = Convert.ToBoolean(freObjectSharp.GetProperty("visible").Value) ? Visibility.Visible : Visibility.Hidden; RenderTransform = new TranslateTransform(X, Y); Opacity = Convert.ToDouble(freObjectSharp.GetProperty("alpha").Value); }
public FREObject InjectScript(FREContext ctx, uint argc, FREObject[] argv) { var injectCodeFre = new FreObjectSharp(argv[0]); var injectScriptUrlFre = new FreObjectSharp(argv[1]); var injectStartLineFre = new FreObjectSharp(argv[2]); if (FreObjectTypeSharp.String == injectCodeFre.GetType()) { _view.InjectCode = Convert.ToString(injectCodeFre.Value); } if (FreObjectTypeSharp.String == injectScriptUrlFre.GetType()) { _view.InjectScriptUrl = Convert.ToString(injectScriptUrlFre.Value); } _view.InjectStartLine = Convert.ToInt32(injectStartLineFre.Value); return(FREObject.Zero); }
public FREObject EvaluateJavaScript(FREContext ctx, uint argc, FREObject[] argv) { try { var js = Convert.ToString(new FreObjectSharp(argv[0]).Value); var callbackFre = new FreObjectSharp(argv[1]); if (FreObjectTypeSharp.Null == callbackFre.GetType()) { EvaluateJavaScript(js); } else { var callback = Convert.ToString(callbackFre.Value); EvaluateJavaScript(js, callback); } } catch (Exception e) { return(new FreException(e).RawValue); } return(FREObject.Zero); }
private FREObject Capture(FREContext ctx, uint argc, FREObject[] argv) { var rect = new WinApi.Rect(); WinApi.GetWindowRect(_cefWindow, ref rect); var freX = new FreObjectSharp(argv[0]).GetAsInt(); var freY = new FreObjectSharp(argv[1]).GetAsInt(); var freW = new FreObjectSharp(argv[2]).GetAsInt(); var freH = new FreObjectSharp(argv[3]).GetAsInt(); var width = freW > 0 ? freW : rect.right - rect.left; var height = freH > 0 ? freW : rect.bottom - rect.top; var bmp = new Bitmap(width, height, System.Drawing.Imaging.PixelFormat.Format32bppArgb); var graphics = Graphics.FromImage(bmp); graphics.CopyFromScreen(rect.left + freX, rect.top + freY, 0, 0, new Size(width, height), CopyPixelOperation.SourceCopy); var ret = new FreBitmapDataSharp(bmp); return(ret.Get()); }
public FREObject GetTabDetails(FREContext ctx, uint argc, FREObject[] argv) { var tabDetails = _view.TabDetails; try { var tmp = new FreObjectSharp("Vector.<com.tuarua.webview.TabDetails>", null); var vecTabDetails = new FreArraySharp(tmp.RawValue); for (var index = 0; index < tabDetails.Count; index++) { var tabDetail = tabDetails[index] as TabDetails; if (tabDetail == null) { continue; } var currentTabFre = new FreObjectSharp("com.tuarua.webview.TabDetails", index, tabDetail.Address, tabDetail.Title, tabDetail.IsLoading, tabDetail.CanGoBack, tabDetail.CanGoForward, 1.0); vecTabDetails.SetObjectAt(currentTabFre, (uint)index); } return(vecTabDetails.RawValue); } catch (Exception e) { return(new FreException(e).RawValue); } }
private FREObject GetDisplayDevices(FREContext ctx, uint argc, FREObject[] argv) { var vecDisplayDevices = new FREArray("com.tuarua.DisplayDevice"); var dd = new DisplayDevice(); dd.cb = Marshal.SizeOf(dd); _displayDeviceMap.Clear(); try { uint index = 0; while (WinApi.EnumDisplayDevices(null, index++, ref dd, 0)) { dynamic displayDevice = new FreObjectSharp("com.tuarua.DisplayDevice"); dynamic displayMonitor = new FreObjectSharp("com.tuarua.Monitor"); displayDevice.isPrimary = dd.StateFlags.HasFlag(DisplayDeviceStateFlags.PrimaryDevice); displayDevice.isActive = dd.StateFlags.HasFlag(DisplayDeviceStateFlags.AttachedToDesktop); displayDevice.isRemovable = dd.StateFlags.HasFlag(DisplayDeviceStateFlags.Removable); displayDevice.isVgaCampatible = dd.StateFlags.HasFlag(DisplayDeviceStateFlags.VgaCompatible); var monitor = new DisplayDevice(); monitor.cb = Marshal.SizeOf(monitor); if (!WinApi.EnumDisplayDevices(dd.DeviceName, index - 1, ref monitor, 0)) { continue; } var dm = new Devmode(); dm.dmSize = (short)Marshal.SizeOf(dm); if (WinApi.EnumDisplaySettings(dd.DeviceName, WinApi.EnumCurrentSettings, ref dm) == 0) { continue; } var availdm = new Devmode(); availdm.dmSize = (short)Marshal.SizeOf(availdm); IList <DisplaySettings> availableDisplaySettings = new List <DisplaySettings>(); var freAvailableDisplaySettings = displayDevice.availableDisplaySettings; for (var iModeNum = 0; WinApi.EnumDisplaySettings(dd.DeviceName, iModeNum, ref availdm) != 0; iModeNum++) { var settings = new DisplaySettings { Width = availdm.dmPelsWidth, Height = availdm.dmPelsHeight, BitDepth = Convert.ToInt32(availdm.dmBitsPerPel), RefreshRate = availdm.dmDisplayFrequency }; if (HasDisplaySetting(availableDisplaySettings, settings)) { continue; } availableDisplaySettings.Add(settings); dynamic displaySettings = new FreObjectSharp("com.tuarua.DisplaySettings"); displaySettings.width = availdm.dmPelsWidth; displaySettings.height = availdm.dmPelsHeight; displaySettings.refreshRate = availdm.dmDisplayFrequency; displaySettings.bitDepth = Convert.ToInt32(availdm.dmBitsPerPel); freAvailableDisplaySettings.Push(displaySettings); } displayMonitor.friendlyName = monitor.DeviceString; displayMonitor.name = monitor.DeviceName; displayMonitor.id = monitor.DeviceID; displayMonitor.key = monitor.DeviceKey; displayDevice.friendlyName = dd.DeviceString; displayDevice.name = dd.DeviceName; displayDevice.id = dd.DeviceID; displayDevice.key = dd.DeviceKey; dynamic currentDisplaySettings = new FreObjectSharp("com.tuarua.DisplaySettings"); currentDisplaySettings.width = dm.dmPelsWidth; currentDisplaySettings.height = dm.dmPelsHeight; currentDisplaySettings.refreshRate = dm.dmDisplayFrequency; currentDisplaySettings.bitDepth = Convert.ToInt32(dm.dmBitsPerPel); displayDevice.currentDisplaySettings = currentDisplaySettings; displayDevice.monitor = displayMonitor; vecDisplayDevices.Push(displayDevice); _displayDeviceMap.Add(dd.DeviceKey, dd); } } catch (Exception e) { Trace(e.Message); Trace(e.Source); Trace(e.StackTrace); } return(vecDisplayDevices.RawValue); }
public FREObject InitView(FREContext ctx, uint argc, FREObject[] argv) { _airWindow = System.Diagnostics.Process.GetCurrentProcess().MainWindowHandle; var inFre5 = new FreObjectSharp(argv[5]); //settings var cefSettingsFre = inFre5.GetProperty("cef"); //Trace("initing view and here is a trace"); var googleApiKeyFre = cefSettingsFre.GetProperty("GOOGLE_API_KEY"); var googleDefaultClientIdFre = cefSettingsFre.GetProperty("GOOGLE_DEFAULT_CLIENT_ID"); var googleDefaultClientSecretFre = cefSettingsFre.GetProperty("GOOGLE_DEFAULT_CLIENT_SECRET"); if (FreObjectTypeSharp.String == googleApiKeyFre.GetType()) { Environment.SetEnvironmentVariable("GOOGLE_API_KEY", Convert.ToString(googleApiKeyFre.Value)); } if (FreObjectTypeSharp.String == googleDefaultClientIdFre.GetType()) { Environment.SetEnvironmentVariable("GOOGLE_DEFAULT_CLIENT_ID", Convert.ToString(googleDefaultClientIdFre.Value)); } if (FreObjectTypeSharp.String == googleDefaultClientSecretFre.GetType()) { Environment.SetEnvironmentVariable("GOOGLE_DEFAULT_CLIENT_SECRET", Convert.ToString(googleDefaultClientSecretFre.Value)); } var clArr = new FreArraySharp(cefSettingsFre.GetProperty("commandLineArgs").RawValue); var argsDict = new Dictionary <string, string>(); uint i; for (i = 0; i < clArr.Length; ++i) { var argFre = clArr.GetObjectAt(i); var key = Convert.ToString(argFre.GetProperty("key").Value); var val = Convert.ToString(argFre.GetProperty("value").Value); if (string.IsNullOrEmpty(key) || string.IsNullOrEmpty(val)) { continue; } argsDict.Add(key, val); } var whiteList = new FreArraySharp(inFre5.GetProperty("urlWhiteList").RawValue).GetAsArrayList(); _view = new CefView { InitialUrl = Convert.ToString(new FreObjectSharp(argv[0]).Value), Background = _backgroundColorBrush, X = Convert.ToInt32(new FreObjectSharp(argv[1]).Value), Y = Convert.ToInt32(new FreObjectSharp(argv[2]).Value), ViewWidth = Convert.ToInt32(new FreObjectSharp(argv[3]).Value), ViewHeight = Convert.ToInt32(new FreObjectSharp(argv[4]).Value), RemoteDebuggingPort = Convert.ToInt32(cefSettingsFre.GetProperty("remoteDebuggingPort").Value), CachePath = Convert.ToString(cefSettingsFre.GetProperty("cachePath").Value), LogLevel = Convert.ToInt32(cefSettingsFre.GetProperty("logSeverity").Value), BrowserSubprocessPath = Convert.ToString(cefSettingsFre.GetProperty("browserSubprocessPath").Value), EnableDownloads = Convert.ToBoolean(cefSettingsFre.GetProperty("enableDownloads").Value), UserAgent = Convert.ToString(inFre5.GetProperty("userAgent").Value), CommandLineArgs = argsDict, WhiteList = whiteList, PopupBehaviour = (PopupBehaviour)inFre5.GetProperty("popup").GetProperty("behaviour").Value, PopupDimensions = new Tuple <int, int>( Convert.ToInt32(inFre5.GetProperty("popup").GetProperty("dimensions").GetProperty("width").Value), Convert.ToInt32(inFre5.GetProperty("popup").GetProperty("dimensions").GetProperty("height").Value) ) }; _view.Init(); var parameters = new HwndSourceParameters(); parameters.SetPosition(_view.X, _view.Y); parameters.SetSize(_view.ViewWidth, _view.ViewHeight); parameters.ParentWindow = _airWindow; parameters.WindowName = "Cef Window"; parameters.WindowStyle = (int)WindowStyles.WS_CHILD; parameters.AcquireHwndFocusInMenuMode = true; var source = new HwndSource(parameters) { RootVisual = _view }; _cefWindow = source.Handle; WinApi.RegisterTouchWindow(_cefWindow, TouchWindowFlags.TWF_WANTPALM); return(FREObject.Zero); }
/// <summary> /// Creates a C# FREObject from a C FREObject /// </summary> /// <param name="freObject"></param> public FreRectangleSharp(FreObjectSharp freObject) { RawValue = freObject.RawValue; }
public FREObject InitView(FREContext ctx, uint argc, FREObject[] argv) { _airWindow = System.Diagnostics.Process.GetCurrentProcess().MainWindowHandle; if (_airWindow == Hwnd.Zero) { var e = new Exception( "Cannot find AIR window to attach webView to. Ensure you init the ANE AFTER your main Sprite is initialised. " + "Please see https://forum.starling-framework.org/topic/webviewane-for-osx/page/7?replies=201#post-105524 for more details"); return(new FreException(e).RawValue); } try { var inFre1 = new FreRectangleSharp(argv[1]); //viewport var inFre2 = new FreObjectSharp(argv[2]); //settings var inFre4 = new FreObjectSharp(argv[4]); //backgroundColor var cefSettingsFre = inFre2.GetProperty("cef"); var googleApiKeyFre = cefSettingsFre.GetProperty("GOOGLE_API_KEY"); var googleDefaultClientIdFre = cefSettingsFre.GetProperty("GOOGLE_DEFAULT_CLIENT_ID"); var googleDefaultClientSecretFre = cefSettingsFre.GetProperty("GOOGLE_DEFAULT_CLIENT_SECRET"); if (FreObjectTypeSharp.String == googleApiKeyFre.GetType()) { Environment.SetEnvironmentVariable("GOOGLE_API_KEY", Convert.ToString(googleApiKeyFre.Value)); } if (FreObjectTypeSharp.String == googleDefaultClientIdFre.GetType()) { Environment.SetEnvironmentVariable("GOOGLE_DEFAULT_CLIENT_ID", Convert.ToString(googleDefaultClientIdFre.Value)); } if (FreObjectTypeSharp.String == googleDefaultClientSecretFre.GetType()) { Environment.SetEnvironmentVariable("GOOGLE_DEFAULT_CLIENT_SECRET", Convert.ToString(googleDefaultClientSecretFre.Value)); } var clArr = new FreArraySharp(cefSettingsFre.GetProperty("commandLineArgs").RawValue); var argsDict = new Dictionary <string, string>(); uint i; for (i = 0; i < clArr.Length; ++i) { var argFre = clArr.GetObjectAt(i); var key = Convert.ToString(argFre.GetProperty("key").Value); var val = Convert.ToString(argFre.GetProperty("value").Value); if (string.IsNullOrEmpty(key) || string.IsNullOrEmpty(val)) { continue; } argsDict.Add(key, val); } var whiteList = new FreArraySharp(inFre2.GetProperty("urlWhiteList").RawValue).GetAsArrayList(); var blackList = new FreArraySharp(inFre2.GetProperty("urlBlackList").RawValue).GetAsArrayList(); var rgb = FreSharpHelper.GetAsUInt(inFre4.RawValue); _backgroundColor = Color.FromRgb( Convert.ToByte((rgb >> 16) & 0xff), Convert.ToByte((rgb >> 8) & 0xff), Convert.ToByte((rgb >> 0) & 0xff)); var viewPort = inFre1.Value; _view = new CefView { InitialUrl = Convert.ToString(new FreObjectSharp(argv[0]).Value), Background = new SolidColorBrush(_backgroundColor), X = Convert.ToInt32(viewPort.X), Y = Convert.ToInt32(viewPort.Y), ViewWidth = Convert.ToInt32(viewPort.Width), ViewHeight = Convert.ToInt32(viewPort.Height), RemoteDebuggingPort = Convert.ToInt32(cefSettingsFre.GetProperty("remoteDebuggingPort").Value), CachePath = Convert.ToString(cefSettingsFre.GetProperty("cachePath").Value), CacheEnabled = Convert.ToBoolean(inFre2.GetProperty("cacheEnabled").Value), LogLevel = Convert.ToInt32(cefSettingsFre.GetProperty("logSeverity").Value), BrowserSubprocessPath = Convert.ToString(cefSettingsFre.GetProperty("browserSubprocessPath").Value), ContextMenuEnabled = Convert.ToBoolean(cefSettingsFre.GetProperty("contextMenu") .GetProperty("enabled") .Value), EnableDownloads = Convert.ToBoolean(cefSettingsFre.GetProperty("enableDownloads").Value), UserAgent = Convert.ToString(inFre2.GetProperty("userAgent").Value), CommandLineArgs = argsDict, WhiteList = whiteList, BlackList = blackList, PopupBehaviour = (PopupBehaviour)inFre2.GetProperty("popup").GetProperty("behaviour").Value, PopupDimensions = new Tuple <int, int>( Convert.ToInt32( inFre2.GetProperty("popup").GetProperty("dimensions").GetProperty("width").Value), Convert.ToInt32(inFre2.GetProperty("popup").GetProperty("dimensions").GetProperty("height") .Value) ) }; _view.Init(); } catch (Exception e) { return(new FreException(e).RawValue); //return as3 error and throw in swc } var parameters = new HwndSourceParameters(); parameters.SetPosition(_view.X, _view.Y); parameters.SetSize(_view.ViewWidth, _view.ViewHeight); parameters.ParentWindow = _airWindow; parameters.WindowName = "Cef Window"; parameters.WindowStyle = (int)WindowStyles.WS_CHILD; parameters.AcquireHwndFocusInMenuMode = true; var source = new HwndSource(parameters) { RootVisual = _view }; _cefWindow = source.Handle; WinApi.RegisterTouchWindow(_cefWindow, TouchWindowFlags.TWF_WANTPALM); return(FREObject.Zero); }
/// <summary> /// Converts a FREObject to a C# Point /// </summary> /// <param name="freObject"></param> /// <returns>Point</returns> public static Point AsPoint(this FREObject freObject) { dynamic fre = new FreObjectSharp(freObject); return(new Point(fre.x, fre.y)); }
/// <summary> /// Converts a FREObject to a C# Rect. /// </summary> /// <param name="freObject"></param> /// <returns></returns> public static Rect AsRect(this FREObject freObject) { dynamic fre = new FreObjectSharp(freObject); return(new Rect(fre.x, fre.y, fre.width, fre.height)); }
private FREObject InitView(FREContext ctx, uint argc, FREObject[] argv) { FreSharpLogger.GetInstance().Context = Context; _airWindow = Process.GetCurrentProcess().MainWindowHandle; if (_airWindow == Hwnd.Zero) { return(new FreException( "Cannot find AIR window to attach webView to. Ensure you init the ANE AFTER your main Sprite is initialized. " + "Please see https://forum.starling-framework.org/topic/webviewane-for-osx/page/7?replies=201#post-105524 for more details") .RawValue); } bool useTransparentBackground; try { dynamic settings = new FreObjectSharp(argv[2]); _useEdge = settings.engine == 1; UrlRequestHeaderManager.GetInstance().PersistRequestHeaders = settings.persistRequestHeaders; dynamic cefSettings = new FreObjectSharp(settings.cef); var freUrl = argv[0]; UrlRequest initialUrl = null; if (FreObjectTypeSharp.Null != freUrl.Type()) { initialUrl = new UrlRequest(freUrl, _useEdge); UrlRequestHeaderManager.GetInstance().Add(initialUrl); } var viewPort = argv[1].AsRect(); useTransparentBackground = settings.useTransparentBackground; FREArray clArr = cefSettings.commandLineArgs; var argsDict = new Dictionary <string, string>(); foreach (var argFre in clArr) { var key = argFre.GetProp("key").AsString(); var val = argFre.GetProp("value").AsString(); if (string.IsNullOrEmpty(key) || string.IsNullOrEmpty(val)) { continue; } argsDict.Add(key, val); } ArrayList whiteList = settings.urlWhiteList.AsArrayList(); ArrayList blackList = settings.urlBlackList.AsArrayList(); _backgroundColor = argv[4].AsColor(); var backgroundMediaColor = new System.Windows.Media.Color { A = _backgroundColor.A, R = _backgroundColor.R, G = _backgroundColor.G, B = _backgroundColor.B }; _useHiDpi = settings.useHiDPI; if (Environment.OSVersion.Version.Major > 7) { _scaleFactor = _useHiDpi ? WinApi.GetScaleFactor(_airWindow) : 1.0; } else { _scaleFactor = _useHiDpi ? WinApi.GetScaleFactor() : 1.0; } if (_useEdge) { EdgeView.Context = Context; _view = new EdgeView { Background = new SolidColorBrush(backgroundMediaColor) }; } else { CefView.Context = Context; dynamic contextMenu = new FreObjectSharp(settings.contextMenu); dynamic popup = new FreObjectSharp(settings.popup); dynamic dimensions = new FreObjectSharp(popup.dimensions); _view = new CefView { Background = new SolidColorBrush(backgroundMediaColor), RemoteDebuggingPort = cefSettings.remoteDebuggingPort, EnablePrintPreview = cefSettings.enablePrintPreview, CachePath = cefSettings.cachePath, DownloadPath = settings.downloadPath, EnableDownloads = settings.enableDownloads, CacheEnabled = settings.cacheEnabled, LogLevel = cefSettings.logSeverity, AcceptLanguageList = cefSettings.acceptLanguageList, Locale = cefSettings.locale, ContextMenuEnabled = contextMenu.enabled, UserAgent = settings.userAgent, UserDataPath = cefSettings.userDataPath, CommandLineArgs = argsDict, PopupBehaviour = (PopupBehaviour)popup.behaviour, PopupDimensions = new Tuple <int, int>(dimensions.width, dimensions.height), ScaleFactor = _scaleFactor }; } _view.InitialUrl = initialUrl; _view.WhiteList = whiteList; _view.BlackList = blackList; _view.X = Convert.ToInt32(viewPort.X * _scaleFactor); _view.Y = Convert.ToInt32(viewPort.Y * _scaleFactor); _view.ViewWidth = Convert.ToInt32(viewPort.Width * _scaleFactor); _view.ViewHeight = Convert.ToInt32(viewPort.Height * _scaleFactor); _view.Init(); } catch (Exception e) { return(new FreException(e).RawValue); } var parameters = new HwndSourceParameters(); parameters.SetPosition(_view.X, _view.Y); parameters.SetSize(_view.ViewWidth, _view.ViewHeight); parameters.ParentWindow = _airWindow; parameters.WindowName = "Cef Window"; parameters.WindowStyle = (int)WindowStyles.WS_CHILD; parameters.AcquireHwndFocusInMenuMode = true; if (useTransparentBackground && Environment.OSVersion.Version.Major > 7) { parameters.ExtendedWindowStyle = (int)WindowExStyles.WS_EX_LAYERED; parameters.UsesPerPixelTransparency = true; } var source = _useEdge ? new HwndSource(parameters) { RootVisual = (EdgeView)_view } : new HwndSource(parameters) { RootVisual = (CefView)_view }; if (useTransparentBackground && source.CompositionTarget != null) { source.CompositionTarget.BackgroundColor = Colors.Transparent; } _webViewWindow = source.Handle; MessageTouchDevice.RegisterTouchWindow(_webViewWindow); return(FREObject.Zero); }
private FREObject RunObjectTests(FREContext ctx, uint argc, FREObject[] argv) { Trace("***********Start Object test***********"); var person = argv[0]; if (person == FREObject.Zero) { return(FREObject.Zero); } var newPerson = new FREObject().Init("com.tuarua.Person"); Trace("New Person.ToString()", newPerson.toString()); Trace("New Person has property name:", newPerson.hasOwnProperty("name"), newPerson.hasOwnProperty("name") ? "✅" : "❌"); Trace("New Person is of type CLASS:", newPerson.Type(), newPerson.Type().Equals(FreObjectTypeSharp.Class) ? "✅" : "❌"); Trace("New Person className is com.tuarua::Person", newPerson.ClassName() == "com.tuarua::Person" ? "✅" : "❌"); dynamic sharpPerson = new FreObjectSharp("com.tuarua.Person", "Ben McBobster", 80); Trace("sharpPerson.RawValue.toString()", ((FREObject)sharpPerson.RawValue()).toString()); //case sensitive, calls as3 toString NOT c# ToString() var oldAge = person.GetProp("age").AsInt(); Trace("Get property as Int :", oldAge, oldAge.Equals(21) ? "✅" : "❌"); var newAge = oldAge + 10; person.SetProp("age", newAge); Trace("Set property to Int :", person.GetProp("age").AsInt(), person.GetProp("age").AsInt().Equals(31) ? "✅" : "❌"); var addition = person.Call("add", 100, 33); Trace("Call add :", 131, addition.AsInt().Equals(133) ? "✅" : "❌"); try { var dictionary = person.AsDictionary(); if (dictionary == null) { return(person); } var city = (Dictionary <string, object>)dictionary["city"]; if (city == null) { return(person); } var name = city["name"]; Trace("Get property from Dict :", name, name.Equals("Portland") ? "✅" : "❌"); var sharpPersonType = sharpPerson.Type(); Trace("Dynamic Person is of type CLASS:", sharpPersonType, sharpPersonType.Equals(FreObjectTypeSharp.Class) ? "✅" : "❌"); Trace("Dynamic Person has property name:", sharpPerson.hasOwnProperty("name"), sharpPerson.hasOwnProperty("name") ? "✅" : "❌"); dynamic sharpCity = new FreObjectSharp("com.tuarua.City"); FreObjectTypeSharp sharpCityType = sharpCity.Type(); Trace("Dynamic City is of type CLASS:", sharpCityType, sharpCityType.Equals(FreObjectTypeSharp.Class) ? "✅" : "❌"); sharpCity.name = "San Francisco"; int sharpAge = sharpPerson.age; string sharpName = sharpPerson.name; string sharpOptional = sharpPerson.opt; double sharpHeight = sharpPerson.height; bool sharpIsMan = sharpPerson.isMan; Trace("Dynamic age as int:", sharpAge, sharpAge.Equals(80) ? "✅" : "❌"); Trace("Dynamic name as string:", sharpName, sharpName.Equals("Ben McBobster") ? "✅" : "❌"); Trace("Dynamic Optional string:", sharpOptional == null, (sharpOptional == null).Equals(true) ? "✅" : "❌"); Trace("Dynamic height as double:", sharpHeight, sharpHeight.Equals(1.8) ? "✅" : "❌"); Trace("Dynamic isMan as bool:", sharpIsMan, sharpIsMan.Equals(false) ? "✅" : "❌"); sharpPerson.age = 999; sharpPerson.height = 1.88; sharpPerson.isMan = true; sharpPerson.city = sharpCity; Trace("Dynamic age as int:", (int)sharpPerson.age, ((int)sharpPerson.age).Equals(999) ? "✅" : "❌"); Trace("Dynamic height as double:", (double)sharpPerson.height, ((double)sharpPerson.height).Equals(1.88) ? "✅" : "❌"); Trace("Dynamic isMan as bool:", (bool)sharpPerson.isMan, ((bool)sharpPerson.isMan).Equals(true) ? "✅" : "❌"); sharpPerson.age = 111.ToFREObject(); sharpPerson.height = 2; Trace("Dynamic age as int:", (int)sharpPerson.age, ((int)sharpPerson.age).Equals(111) ? "✅" : "❌"); Trace("Dynamic height as double:", (double)sharpPerson.height, ((double)sharpPerson.height).Equals(2) ? "✅" : "❌"); } catch (Exception e) { Trace(e.GetType()); Trace(e.Message); Trace(e.Source); Trace(e.StackTrace); } return(sharpPerson.RawValue()); }