messaging_api_line/models/
flex_text.rs1use crate::models;
12use serde::{Deserialize, Serialize};
13
14#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
15pub struct FlexText {
16 #[serde(rename = "type", skip_serializing_if = "Option::is_none")]
17 pub r#type: Option<String>,
18 #[serde(rename = "flex", skip_serializing_if = "Option::is_none")]
19 pub flex: Option<i32>,
20 #[serde(rename = "text", skip_serializing_if = "Option::is_none")]
21 pub text: Option<String>,
22 #[serde(rename = "size", skip_serializing_if = "Option::is_none")]
23 pub size: Option<String>,
24 #[serde(rename = "align", skip_serializing_if = "Option::is_none")]
25 pub align: Option<Align>,
26 #[serde(rename = "gravity", skip_serializing_if = "Option::is_none")]
27 pub gravity: Option<Gravity>,
28 #[serde(rename = "color", skip_serializing_if = "Option::is_none")]
29 pub color: Option<String>,
30 #[serde(rename = "weight", skip_serializing_if = "Option::is_none")]
31 pub weight: Option<Weight>,
32 #[serde(rename = "style", skip_serializing_if = "Option::is_none")]
33 pub style: Option<Style>,
34 #[serde(rename = "decoration", skip_serializing_if = "Option::is_none")]
35 pub decoration: Option<Decoration>,
36 #[serde(rename = "wrap", skip_serializing_if = "Option::is_none")]
37 pub wrap: Option<bool>,
38 #[serde(rename = "lineSpacing", skip_serializing_if = "Option::is_none")]
39 pub line_spacing: Option<String>,
40 #[serde(rename = "margin", skip_serializing_if = "Option::is_none")]
41 pub margin: Option<String>,
42 #[serde(rename = "position", skip_serializing_if = "Option::is_none")]
43 pub position: Option<Position>,
44 #[serde(rename = "offsetTop", skip_serializing_if = "Option::is_none")]
45 pub offset_top: Option<String>,
46 #[serde(rename = "offsetBottom", skip_serializing_if = "Option::is_none")]
47 pub offset_bottom: Option<String>,
48 #[serde(rename = "offsetStart", skip_serializing_if = "Option::is_none")]
49 pub offset_start: Option<String>,
50 #[serde(rename = "offsetEnd", skip_serializing_if = "Option::is_none")]
51 pub offset_end: Option<String>,
52 #[serde(rename = "action", skip_serializing_if = "Option::is_none")]
53 pub action: Option<Box<models::Action>>,
54 #[serde(rename = "maxLines", skip_serializing_if = "Option::is_none")]
55 pub max_lines: Option<i32>,
56 #[serde(rename = "contents", skip_serializing_if = "Option::is_none")]
57 pub contents: Option<Vec<models::FlexSpan>>,
58 #[serde(rename = "adjustMode", skip_serializing_if = "Option::is_none")]
59 pub adjust_mode: Option<AdjustMode>,
60 #[serde(rename = "scaling", skip_serializing_if = "Option::is_none")]
61 pub scaling: Option<bool>,
62}
63
64impl FlexText {
65 pub fn new(r#type: String) -> FlexText {
66 FlexText {
67 r#type: Some(r#type),
68 flex: None,
69 text: None,
70 size: None,
71 align: None,
72 gravity: None,
73 color: None,
74 weight: None,
75 style: None,
76 decoration: None,
77 wrap: None,
78 line_spacing: None,
79 margin: None,
80 position: None,
81 offset_top: None,
82 offset_bottom: None,
83 offset_start: None,
84 offset_end: None,
85 action: None,
86 max_lines: None,
87 contents: None,
88 adjust_mode: None,
89 scaling: None,
90 }
91 }
92}
93#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
95pub enum Align {
96 #[serde(rename = "start")]
97 Start,
98 #[serde(rename = "end")]
99 End,
100 #[serde(rename = "center")]
101 Center,
102}
103
104impl Default for Align {
105 fn default() -> Align {
106 Self::Start
107 }
108}
109#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
111pub enum Gravity {
112 #[serde(rename = "top")]
113 Top,
114 #[serde(rename = "bottom")]
115 Bottom,
116 #[serde(rename = "center")]
117 Center,
118}
119
120impl Default for Gravity {
121 fn default() -> Gravity {
122 Self::Top
123 }
124}
125#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
127pub enum Weight {
128 #[serde(rename = "regular")]
129 Regular,
130 #[serde(rename = "bold")]
131 Bold,
132}
133
134impl Default for Weight {
135 fn default() -> Weight {
136 Self::Regular
137 }
138}
139#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
141pub enum Style {
142 #[serde(rename = "normal")]
143 Normal,
144 #[serde(rename = "italic")]
145 Italic,
146}
147
148impl Default for Style {
149 fn default() -> Style {
150 Self::Normal
151 }
152}
153#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
155pub enum Decoration {
156 #[serde(rename = "none")]
157 None,
158 #[serde(rename = "underline")]
159 Underline,
160 #[serde(rename = "line-through")]
161 LineThrough,
162}
163
164impl Default for Decoration {
165 fn default() -> Decoration {
166 Self::None
167 }
168}
169#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
171pub enum Position {
172 #[serde(rename = "relative")]
173 Relative,
174 #[serde(rename = "absolute")]
175 Absolute,
176}
177
178impl Default for Position {
179 fn default() -> Position {
180 Self::Relative
181 }
182}
183#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
185pub enum AdjustMode {
186 #[serde(rename = "shrink-to-fit")]
187 ShrinkToFit,
188}
189
190impl Default for AdjustMode {
191 fn default() -> AdjustMode {
192 Self::ShrinkToFit
193 }
194}