/* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at https://mozilla.org/MPL/2.0/. */ //! Definition of Window. //! Implemented by headless and headed windows. use std::rc::Rc; use arboard::Clipboard; use euclid::{Length, Scale}; use servo::compositing::windowing::WindowMethods; use servo::servo_geometry::DeviceIndependentPixel; use servo::webrender_api::units::{DeviceIntPoint, DeviceIntSize, DevicePixel}; use servo::{Cursor, Servo}; use super::webview::{WebView, WebViewManager}; // This should vary by zoom level and maybe actual text size (focused or under cursor) pub const LINE_HEIGHT: f32 = 38.0; pub trait WindowPortsMethods: WindowMethods { fn id(&self) -> winit::window::WindowId; fn hidpi_factor(&self) -> Scale { self.device_pixel_ratio_override() .unwrap_or_else(|| self.device_hidpi_factor()) } fn device_hidpi_factor(&self) -> Scale; fn device_pixel_ratio_override( &self, ) -> Option>; fn page_height(&self) -> f32; fn get_fullscreen(&self) -> bool; fn handle_winit_event( &self, servo: &Servo, clipboard: &mut Option, webviews: &mut WebViewManager, event: winit::event::WindowEvent, ); fn is_animating(&self) -> bool; fn set_title(&self, _title: &str) {} /// Request a new inner size for the window, not including external decorations. fn request_resize(&self, webview: &WebView, inner_size: DeviceIntSize) -> Option; fn set_position(&self, _point: DeviceIntPoint) {} fn set_fullscreen(&self, _state: bool) {} fn set_cursor(&self, _cursor: Cursor) {} fn new_glwindow( &self, event_loop: &winit::event_loop::ActiveEventLoop, ) -> Rc; fn winit_window(&self) -> Option<&winit::window::Window>; fn toolbar_height(&self) -> Length; fn set_toolbar_height(&self, height: Length); }