/// <summary> /// Creates the browser. /// </summary> /// <param name="handle">The handle.</param> /// <param name="position">The position.</param> protected void CreateBrowser(IntPtr handle, CefRectangle position) { Application.Current.EnsureCefThread(); if (IsBrowserCreated) { throw new InvalidOperationException("Browser already created."); } Logger.Info("Creating browser."); var cefWindowInfo = CefWindowInfo.Create(); cefWindowInfo.SetAsChild(handle, position); var cefClient = new Client(); cefClient.BrowserCreated += (sender, e) => { CefBrowser = e.CefBrowser; if (BrowserCreated != null) { BrowserCreated(this, e); } }; var cefSettings = new CefBrowserSettings(); CefBrowserHost.CreateBrowser(cefWindowInfo, cefClient, cefSettings, Application.Current.GetContentUrl(View)); IsBrowserCreated = true; Logger.Info("Browser created."); }
protected override bool GetViewRect(CefBrowser browser, ref CefRectangle rect) { rect.X = rect.Y = 0; rect.Width = FRenderer.Size.Width; rect.Height = FRenderer.Size.Height; return(true); }
internal FindResultEventArgs(int count, CefRectangle selectionRect, int activeMatchOrdinal, bool finalUpdate) { Count = count; SelectionRect = selectionRect; ActiveMatchOrdinal = activeMatchOrdinal; FinalUpdate = finalUpdate; }
internal bool GetViewRect(ref CefRectangle rect) { bool rectProvided = false; CefRectangle browserRect = new CefRectangle(); // TODO: simplify this //_mainUiDispatcher.Invoke(DispatcherPriority.Normal, new Action(delegate //{ try { // The simulated screen and view rectangle are the same. This is necessary // for popup menus to be located and sized inside the view. browserRect.X = browserRect.Y = 0; browserRect.Width = ViewSize.X; browserRect.Height = ViewSize.Y; rectProvided = true; } catch (Exception ex) { Log.Error("WebBrowserControl: Caught exception in GetViewRect(): " + ex.Message); rectProvided = false; } //})); if (rectProvided) { rect = browserRect; } //_logger.Debug("GetViewRect result provided:{0} Rect: X{1} Y{2} H{3} W{4}", rectProvided, browserRect.X, browserRect.Y, browserRect.Height, browserRect.Width); return(rectProvided); }
internal bool GetViewRect(ref CefRectangle rect) { bool rectProvided = false; CefRectangle browserRect = new CefRectangle(); // TODO: simplify this try { // The simulated screen and view rectangle are the same. This is necessary // for popup menus to be located and sized inside the view. browserRect.X = browserRect.Y = 0; browserRect.Width = (int)_browserWidth; browserRect.Height = (int)_browserHeight; rectProvided = true; } catch (Exception ex) { _logger.ErrorException("WpfCefBrowser: Caught exception in GetViewRect()", ex); rectProvided = false; } if (rectProvided) { rect = browserRect; } _logger.Debug("GetViewRect result provided:{0} Rect: X{1} Y{2} H{3} W{4}", rectProvided, browserRect.X, browserRect.Y, browserRect.Height, browserRect.Width); return(rectProvided); }
/// <summary> /// 处理获取当前ViewRect的事件 /// </summary> public void HandleGetViewRect(CefBrowser browser, ref CefRectangle rect) { rect.X = 0; rect.Y = 0; rect.Width = (int)_windowsWidth; rect.Height = (int)_windowsHeight; }
protected override void GetViewRect(CefBrowser browser, out CefRectangle rect) { var logicalSize = renderer.Size.DeviceToLogical(renderer.ScaleFactor); var width = Math.Max(1, (int)Math.Ceiling(logicalSize.X)); var height = Math.Max(1, (int)Math.Ceiling(logicalSize.Y)); rect = new CefRectangle(0, 0, width, height); }
protected override bool GetRootScreenRect(CefBrowser browser, ref CefRectangle rect) { rect.X = 0; rect.Y = 0; rect.Width = offscreenBrowser.Width; rect.Height = offscreenBrowser.Height; return(true); }
protected override bool GetViewRect(CefBrowser browser, ref CefRectangle rect) { rect.X = 0; rect.Y = 0; rect.Width = this._windowWidth; rect.Height = this._windowHeight; return(true); }
protected override bool GetViewRect(CefBrowser browser, ref CefRectangle rect) { if (SizeEvent != null) { return(SizeEvent(ref rect)); } return(false); }
protected override bool GetViewRect(CefBrowser browser, ref CefRectangle rect) { rect.X = 0; rect.Y = 0; rect.Width = mClient.BrowserTexture.width; rect.Height = mClient.BrowserTexture.height; return(true); }
protected override bool GetViewRect(CefBrowser browser, ref CefRectangle rect) { //see https://www.magpcss.org/ceforum/viewtopic.php?f=6&t=12835 rect.X = 0; //_windowX; rect.Y = 0; //_windowY; rect.Width = _windowWidth; rect.Height = _windowHeight; return(true); }
protected override bool GetViewRect(CefBrowser browser, ref CefRectangle rect) { //rect.X = 0; //rect.Y = 0; //rect.Width = client.WindowsWidth; //rect.Height = client.WindowsHeight; this._renderOwner.HandleGetViewRect(browser, ref rect); return(true); }
public bool Size(ref CefRectangle rect) { rect.X = 0; rect.Y = 0; rect.Width = BrowserConfig.BrowserSourceSettings.Width; rect.Height = BrowserConfig.BrowserSourceSettings.Height; return(true); }
} // End Function GetViewRectImpl protected override void GetViewRect(CefBrowser browser, out CefRectangle rect) { System.Console.WriteLine("GetViewRect"); rect = new CefRectangle(); GetViewRectImpl(browser, ref rect); // return true; } // End Sub GetViewRect
protected override Boolean GetViewRect(CefBrowser browser, ref CefRectangle rect) { rect.X = 0; rect.Y = 0; rect.Width = this.Client.Width; rect.Height = this.Client.Height; Log.Trace("RenderHandler.GetViewRect( X: {0}, Y: {1}, Width: {2}, Height: {3} )", rect.X, rect.Y, rect.Width, rect.Height); return(true); }
} // End Function GetScreenPoint protected bool GetViewRectImpl(CefBrowser browser, ref CefRectangle rect) { System.Console.WriteLine("GetViewRectImpl"); rect.X = 0; rect.Y = 0; rect.Width = _windowWidth; rect.Height = _windowHeight; return(true); } // End Function GetViewRectImpl
protected override void OnPaint(CefBrowser browser, CefPaintElementType type, CefRectangle[] dirtyRects, IntPtr buffer, int width, int height) { _logger.Debug("Type: {0} Buffer: {1:X8} Width: {2} Height: {3}", type, buffer, width, height); foreach (var rect in dirtyRects) { _logger.Debug(" DirtyRect: X={0} Y={1} W={2} H={3}", rect.X, rect.Y, rect.Width, rect.Height); } if (type == CefPaintElementType.View) { _owner.HandleViewPaint(browser, type, dirtyRects, buffer, width, height); } // else if (type == CefPaintElementType.Popup) // this.browser.HandleWidgetPaint(browser, type, dirtyRects, buffer, width, height); }
/// <summary> /// 打开或者关闭DevTools /// </summary> /// <param name="_core"></param> /// <param name="browser"></param> public static void DevTools(CefWebBrowser _core, CefBrowser browser) { MainForm.Instance.Invoke(new Action(() => { if (!_core.DevToolsOpen) { if (MainForm.Instance.faTabStrip1.SelectedItem.DevToolsName == null || MainForm.Instance.faTabStrip1.SelectedItem.DevToolsName == string.Empty) { CefWindowInfo CefWindowInfo1; int devWidth = MainForm.Instance.faTabStrip1.SelectedItem.Width; MainForm.Instance.faTabStrip1.SelectedItem.splic.Panel1.AutoScroll = true; MainForm.Instance.faTabStrip1.SelectedItem.splic.Panel2.AutoScroll = true; MainForm.Instance.faTabStrip1.SelectedItem.splic.Panel2Collapsed = false; MainForm.Instance.faTabStrip1.SelectedItem.Tag = _core; CefWindowInfo1 = CefWindowInfo.Create(); CefWindowInfo1.X = devWidth / 2; CefWindowInfo1.Y = 0; CefRectangle rectangle = new CefRectangle(0, 0, devWidth / 2, _core.Height); //此举是为了多个Devtools打开的情况,要让后面的FindwindowEX函数能找到这个窗口的句柄 MainForm.Instance.faTabStrip1.SelectedItem.DevToolsName = "CefDevTools" + DateTime.Now.ToString("yyyyMMddHHmmss"); CefWindowInfo1.SetAsWindow(MainForm.Instance.faTabStrip1.SelectedItem.splic.Panel2.Handle, rectangle, MainForm.Instance.faTabStrip1.SelectedItem.DevToolsName); browser.GetHost().ShowDevTools(CefWindowInfo1, new DevFormClient(), new CefBrowserSettings(), new CefPoint(0, 0)); browser.GetHost().SetFocus(true); _core.DevToolsOpen = MainForm.Instance.faTabStrip1.SelectedItem.DevToolsOpen = true; MainForm.Instance.faTabStrip1.SelectedItem.ItemBrowser = browser; MainForm.Instance.faTabStrip1.SelectedItem.splic.BackColor = SystemColors.ControlDark; } else { MainForm.Instance.faTabStrip1.SelectedItem.splic.Panel2Collapsed = false; _core.DevToolsOpen = MainForm.Instance.faTabStrip1.SelectedItem.DevToolsOpen = true; MainForm.Instance.faTabStrip1.SelectedItem.ItemBrowser = browser; } } else { MainForm.Instance.faTabStrip1.SelectedItem.splic.Panel2Collapsed = true; _core.DevToolsOpen = MainForm.Instance.faTabStrip1.SelectedItem.DevToolsOpen = false; //_core = null; MainForm.Instance.faTabStrip1.SelectedItem.ItemBrowser = null; // MainForm.Instance.faTabStrip1.SelectedItem.DevToolsName = null; ResizeWindow(browser.GetHost().GetWindowHandle(), MainForm.Instance.faTabStrip1.SelectedItem.Width, MainForm.Instance.faTabStrip1.SelectedItem.Height); GC.Collect(); } })); }
protected override void GetViewRect(CefBrowser browser, out CefRectangle rect) { var handle = _owner.HostWindowHandle; var scaleFactor = DpiHelper.GetScaleFactorForCurrentWindow(handle); var clientRect = new RECT(); rect = new CefRectangle(); User32.GetClientRect(handle, ref clientRect); rect.X = rect.Y = 0; if (User32.IsIconic(handle) || clientRect.Width == 0 || clientRect.Height == 0) { var placement = new WINDOWPLACEMENT(); User32.GetWindowPlacement(_owner.HostWindowHandle, ref placement); clientRect = placement.rcNormalPosition; rect.Width = (int)(clientRect.Width / scaleFactor); rect.Height = (int)(clientRect.Height / scaleFactor); } else { rect.Width = (int)(clientRect.Width / scaleFactor); rect.Height = (int)(clientRect.Height / scaleFactor); } if (clientRect.Width != _view_width || clientRect.Height != _view_height) { _view_width = clientRect.Width; _view_height = clientRect.Height; DiscardDeviceResources(); } }
internal void OnPopupSize(CefRectangle rect) { _mainUiDispatcher.Invoke( new Action( () => { _popupImageBitmap = null; _popupImageBitmap = new WriteableBitmap( rect.Width, rect.Height, 96, 96, PixelFormats.Bgr32, null); _popupImage.Source = this._popupImageBitmap; })); }
protected override void OnPaint(CefBrowser browser, CefPaintElementType type, CefRectangle[] dirtyRects, IntPtr buffer, int width, int height) { synchronization.Post((_) => { if (type == CefPaintElementType.View) { if (this.Resize(width, height)) { ((Device)this.GraphicsDevice).ImmediateContext.UpdateSubresource(this._offscreenBuffer, 0, null, buffer, this._width * 4, 0); } else { for (int i = 0; i < dirtyRects.Length; i++) { CefRectangle cefRectangle = dirtyRects[i]; ((Device)this.GraphicsDevice).ImmediateContext.UpdateSubresource(this._offscreenBuffer, 0, new ResourceRegion?(new ResourceRegion(cefRectangle.X, cefRectangle.Y, 0, cefRectangle.X + cefRectangle.Width, cefRectangle.Y + cefRectangle.Height, 1)), buffer + cefRectangle.X * 4 + cefRectangle.Y * width * 4, this._width * 4, 0); } } ////try ////{ //// var Pointer = new DataPointer(buffer, this._windowWidth * this._windowHeight * 4); //// this._offscreenBuffer.SetData(Pointer); ////} ////catch (Exception) ////{ ////} //for (int i = 0; i < dirtyRects.Length; i++) //{ // CefRectangle cefRectangle = dirtyRects[i]; // var region = new ResourceRegion(cefRectangle.X, cefRectangle.Y, 0, cefRectangle.X + cefRectangle.Width, cefRectangle.Y + cefRectangle.Height, 1); // var pointer = new DataPointer(buffer + cefRectangle.X * 4 + cefRectangle.Y * width * 4, cefRectangle.Width * cefRectangle.Height * 4); // this._offscreenBuffer.SetData(pointer, 0, 0, region); //} } ((Device)this.GraphicsDevice).ImmediateContext.Flush(); }, null); }
//internal void OnPopupShow(bool show) //{ // if (_popup == null) // { // return; // } // _mainUiDispatcher.Invoke(new Action(() => _popup.IsOpen = show)); //} internal void OnPopupSize(CefRectangle rect) { _mainUiDispatcher.Invoke( new Action( () => { _popupImageBitmap = null; _popupImageBitmap = new WriteableBitmap( rect.Width, rect.Height, 96, 96, PixelFormats.Bgr32, null); _popupImage.Source = this._popupImageBitmap; //_popup.Width = rect.Width; //_popup.Height = rect.Height; //_popup.HorizontalOffset = rect.X; //_popup.VerticalOffset = rect.Y; })); }
} // End Constructor protected override bool GetRootScreenRect(CefBrowser browser, ref CefRectangle rect) { System.Console.WriteLine("GetRootScreenRect"); return(GetViewRectImpl(browser, ref rect)); } // End Function GetRootScreenRect
} // throw new NotImplementedException(); protected override void OnPopupSize(CefBrowser browser, CefRectangle rect) { }
protected override void OnPopupSize(CefBrowser browser, CefRectangle rect) { // _owner.OnPopupSize(rect); }
protected override bool GetViewRect(CefBrowser browser, ref CefRectangle rect) { return(_owner.GetViewRect(ref rect)); }
protected override void OnFindResult(CefBrowser browser, int identifier, int count, CefRectangle selectionRect, int activeMatchOrdinal, bool finalUpdate) { //throw new NotImplementedException(); }
protected override void GetViewRect(CefBrowser browser, out CefRectangle rect) { _owner.GetViewRect(out rect); }
protected override bool GetRootScreenRect(CefBrowser browser, ref CefRectangle rect) { return(GetViewRect(browser, ref rect)); }
protected override bool GetRootScreenRect(CefBrowser browser, ref CefRectangle rect) { _owner.GetViewRect(out rect); return(true); }
//protected override void OnPopupShow(CefBrowser browser, bool show) //{ // _owner.OnPopupShow(show); //} protected override void OnPopupSize(CefBrowser browser, CefRectangle rect) { _owner.OnPopupSize(rect); }
protected override bool GetViewRect(CefBrowser browser, ref CefRectangle rect) { return _owner.GetViewRect(ref rect); }