use std::collections::HashMap;
use crate::ImageInfo;
use iced::keyboard;
use iced::mouse::{self, Interaction};
use iced::Point;
use iced::Size;
mod view_manager;
pub use view_manager::ViewManager;
#[cfg(feature = "blitz")]
pub mod blitz;
#[cfg(feature = "litehtml")]
pub mod litehtml;
#[cfg(feature = "servo")]
pub mod servo;
#[cfg(feature = "cef")]
pub mod cef_engine;
#[derive(Clone, Debug, Eq, PartialEq, PartialOrd, Ord)]
pub enum PageType {
Url(String),
Html(String),
}
pub enum PixelFormat {
Rgba,
Bgra,
}
pub type ViewId = usize;
pub trait Engine {
fn update(&mut self);
fn render(&mut self, size: Size<u32>);
fn request_render(&mut self, id: ViewId, size: Size<u32>);
fn new_view(&mut self, size: Size<u32>, content: Option<PageType>) -> ViewId;
fn remove_view(&mut self, id: ViewId);
fn has_view(&self, _id: ViewId) -> bool {
false
}
fn focus(&mut self);
fn unfocus(&self);
fn resize(&mut self, size: Size<u32>);
fn set_scale_factor(&mut self, _scale: f32) {}
fn handles_urls(&self) -> bool {
true
}
fn handle_keyboard_event(&mut self, id: ViewId, event: keyboard::Event);
fn handle_mouse_event(&mut self, id: ViewId, point: Point, event: mouse::Event);
fn scroll(&mut self, id: ViewId, delta: mouse::ScrollDelta);
fn goto(&mut self, id: ViewId, page_type: PageType);
fn refresh(&mut self, id: ViewId);
fn go_forward(&mut self, id: ViewId);
fn go_back(&mut self, id: ViewId);
fn get_url(&self, id: ViewId) -> String;
fn get_title(&self, id: ViewId) -> String;
fn get_cursor(&self, id: ViewId) -> Interaction;
fn get_view(&self, id: ViewId) -> &ImageInfo;
fn get_scroll_y(&self, _id: ViewId) -> f32 {
0.0
}
fn get_content_height(&self, _id: ViewId) -> f32 {
0.0
}
fn get_selected_text(&self, _id: ViewId) -> Option<String> {
None
}
fn get_selection_rects(&self, _id: ViewId) -> &[[f32; 4]] {
&[]
}
fn take_anchor_click(&mut self, _id: ViewId) -> Option<String> {
None
}
fn scroll_to_fragment(&mut self, _id: ViewId, _fragment: &str) -> bool {
false
}
fn take_pending_images(&mut self) -> Vec<(ViewId, String, String, bool)> {
Vec::new()
}
fn set_css_cache(&mut self, _id: ViewId, _cache: HashMap<String, String>) {}
fn load_image_from_bytes(
&mut self,
_id: ViewId,
_url: &str,
_bytes: &[u8],
_redraw_on_ready: bool,
) {
}
fn flush_staged_images(&mut self, _id: ViewId, _size: Size<u32>) {}
fn view_ids(&self) -> Vec<ViewId> {
Vec::new()
}
}