viewpoint_cdp/protocol/page_screencast/
mod.rs1use serde::{Deserialize, Serialize};
6
7#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Default)]
9#[serde(rename_all = "lowercase")]
10pub enum ScreencastFormat {
11 #[default]
13 Jpeg,
14 Png,
16}
17
18#[derive(Debug, Clone, Serialize, Default)]
20#[serde(rename_all = "camelCase")]
21pub struct StartScreencastParams {
22 #[serde(skip_serializing_if = "Option::is_none")]
24 pub format: Option<ScreencastFormat>,
25 #[serde(skip_serializing_if = "Option::is_none")]
27 pub quality: Option<i32>,
28 #[serde(skip_serializing_if = "Option::is_none")]
30 pub max_width: Option<i32>,
31 #[serde(skip_serializing_if = "Option::is_none")]
33 pub max_height: Option<i32>,
34 #[serde(skip_serializing_if = "Option::is_none")]
36 pub every_nth_frame: Option<i32>,
37}
38
39impl StartScreencastParams {
40 pub fn new() -> Self {
42 Self::default()
43 }
44
45 #[must_use]
47 pub fn format(mut self, format: ScreencastFormat) -> Self {
48 self.format = Some(format);
49 self
50 }
51
52 #[must_use]
54 pub fn quality(mut self, quality: i32) -> Self {
55 self.quality = Some(quality);
56 self
57 }
58
59 #[must_use]
61 pub fn max_width(mut self, width: i32) -> Self {
62 self.max_width = Some(width);
63 self
64 }
65
66 #[must_use]
68 pub fn max_height(mut self, height: i32) -> Self {
69 self.max_height = Some(height);
70 self
71 }
72
73 #[must_use]
75 pub fn every_nth_frame(mut self, n: i32) -> Self {
76 self.every_nth_frame = Some(n);
77 self
78 }
79}
80
81#[derive(Debug, Clone, Serialize, Default)]
83pub struct StopScreencastParams {}
84
85#[derive(Debug, Clone, Serialize)]
87#[serde(rename_all = "camelCase")]
88pub struct ScreencastFrameAckParams {
89 pub session_id: i32,
91}
92
93#[derive(Debug, Clone, Deserialize)]
97#[serde(rename_all = "camelCase")]
98pub struct ScreencastFrameEvent {
99 pub data: String,
101 pub metadata: ScreencastFrameMetadata,
103 pub session_id: i32,
105}
106
107#[derive(Debug, Clone, Deserialize)]
109#[serde(rename_all = "camelCase")]
110pub struct ScreencastFrameMetadata {
111 pub offset_top: f64,
113 pub page_scale_factor: f64,
115 pub device_width: f64,
117 pub device_height: f64,
119 pub scroll_offset_x: f64,
121 pub scroll_offset_y: f64,
123 pub timestamp: Option<f64>,
125}
126
127#[derive(Debug, Clone, Deserialize)]
131pub struct ScreencastVisibilityChangedEvent {
132 pub visible: bool,
134}