1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
use serde::{Deserialize, Serialize};
use crate::types::{Document, Integer};
/// Describes the way a background is filled based on the selected colors.
#[derive(Clone, Debug, Deserialize, PartialEq, PartialOrd, Serialize)]
#[serde(rename_all = "snake_case", tag = "type")]
pub enum BackgroundFill {
/// The background is a freeform gradient that rotates after every message in the chat.
FreeformGradient {
/// A list of the 3 or 4 base colors that are used to generate the freeform gradient in the RGB24 format.
colors: Vec<Integer>,
},
/// The background is a gradient fill.
Gradient {
/// Bottom color of the gradient in the RGB24 format.
bottom_color: Integer,
/// Clockwise rotation angle of the background fill in degrees; 0-359.
rotation_angle: Integer,
/// Top color of the gradient in the RGB24 format.
top_color: Integer,
},
/// The background is filled using the selected color.
Solid {
/// The color of the background fill in the RGB24 format.
color: Integer,
},
}
/// This object describes the type of a background.
#[serde_with::skip_serializing_none]
#[derive(Clone, Debug, Deserialize, PartialEq, PartialOrd, Serialize)]
#[serde(rename_all = "snake_case", tag = "type")]
pub enum BackgroundType {
/// The background is taken directly from a built-in chat theme.
ChatTheme {
/// Name of the chat theme, which is usually an emoji.
theme_name: String,
},
/// The background is automatically filled based on the selected colors.
Fill {
/// Dimming of the background in dark themes, as a percentage; 0-100.
dark_theme_dimming: Integer,
/// The background fill.
fill: BackgroundFill,
},
/// The background is a PNG or TGV (gzipped subset of SVG with MIME type “application/x-tgwallpattern”)
/// pattern to be combined with the background fill chosen by the user.
Pattern {
/// Document with the pattern.
document: Document,
///The background fill that is combined with the pattern.
fill: BackgroundFill,
/// Intensity of the pattern when it is shown above the filled background; 0-100.
intensity: Integer,
/// Whether the background fill must be applied only to the pattern itself. All other pixels are black in this case. For dark themes only.
is_inverted: Option<bool>,
/// Whether the background moves slightly when the device is tilted.
is_moving: Option<bool>,
},
/// The background is a wallpaper in the JPEG format.
Wallpaper {
/// Dimming of the background in dark themes, as a percentage; 0-100.
dark_theme_dimming: Integer,
/// Document with the wallpaper.
document: Document,
/// Whether the wallpaper is downscaled to fit in a 450x450 square and then box-blurred with radius 12.
is_blurred: Option<bool>,
/// Whether the background moves slightly when the device is tilted.
is_moving: Option<bool>,
},
}