erniebot_rs/text2image/
option.rs1use serde::{Deserialize, Serialize};
2use strum_macros::{Display, EnumString};
3
4#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default, Display, EnumString)]
7pub enum Size {
8 #[default]
9 #[strum(serialize = "1024x1024")]
10 #[serde(rename = "1024x1024")]
11 S1024x1024,
12 #[strum(serialize = "768x768")]
13 #[serde(rename = "768x768")]
14 S768x768,
15 #[strum(serialize = "768x1024")]
16 #[serde(rename = "768x1024")]
17 S768x1024,
18 #[strum(serialize = "1024x768")]
19 #[serde(rename = "1024x768")]
20 S1024x768,
21 #[strum(serialize = "576x1024")]
22 #[serde(rename = "576x1024")]
23 S576x1024,
24 #[strum(serialize = "1024x576")]
25 #[serde(rename = "1024x576")]
26 S1024x576,
27}
28
29#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default, EnumString)]
30pub enum SamplerIndex {
31 #[default]
32 #[strum(serialize = "Euler a")]
33 #[serde(rename = "Euler a")]
34 EulerA,
35 #[strum(serialize = "Euler")]
36 #[serde(rename = "Euler")]
37 Euler,
38 #[strum(serialize = "DPM++ 2M")]
39 #[serde(rename = "DPM++ 2M")]
40 DPMpp2M,
41 #[strum(serialize = "DPM++ 2M Karras")]
42 #[serde(rename = "DPM++ 2M Karras")]
43 DPMpp2MKarras,
44 #[strum(serialize = "LMS Karras")]
45 #[serde(rename = "LMS Karras")]
46 LMSKarras,
47 #[strum(serialize = "DPM++ SDE")]
48 #[serde(rename = "DPM++ SDE")]
49 DPMppSDE,
50 #[strum(serialize = "DPM++ SDE Karras")]
51 #[serde(rename = "DPM++ SDE Karras")]
52 DPMppSDEKarras,
53 #[strum(serialize = "DPM2 a Karras")]
54 #[serde(rename = "DPM2 a Karras")]
55 DPM2AKarras,
56 #[strum(serialize = "Heun")]
57 #[serde(rename = "Heun")]
58 Heun,
59 #[strum(serialize = "DPM++ 2M SDE")]
60 #[serde(rename = "DPM++ 2M SDE")]
61 DPMpp2MSDE,
62 #[strum(serialize = "DPM++ 2M SDE Karras")]
63 #[serde(rename = "DPM++ 2M SDE Karras")]
64 DPMpp2MSDEKarras,
65 #[strum(serialize = "DPM2")]
66 #[serde(rename = "DPM2")]
67 DPM2,
68 #[strum(serialize = "DPM2 Karras")]
69 #[serde(rename = "DPM2 Karras")]
70 DPM2Karras,
71 #[strum(serialize = "DPM2 a")]
72 #[serde(rename = "DPM2 a")]
73 DPM2A,
74 #[strum(serialize = "LMS")]
75 #[serde(rename = "LMS")]
76 LMS,
77}
78
79#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default, EnumString)]
80pub enum Style {
81 #[default]
82 #[strum(serialize = "Base")]
83 #[serde(rename = "Base")]
84 Base,
85 #[strum(serialize = "3D Model")]
86 #[serde(rename = "3D Model")]
87 Model3D,
88 #[strum(serialize = "Analog Film")]
89 #[serde(rename = "Analog Film")]
90 AnalogFilm,
91 #[strum(serialize = "Anime")]
92 #[serde(rename = "Anime")]
93 Anime,
94 #[strum(serialize = "Cinematic")]
95 #[serde(rename = "Cinematic")]
96 Cinematic,
97 #[strum(serialize = "Comic Book")]
98 #[serde(rename = "Comic Book")]
99 ComicBook,
100 #[strum(serialize = "Craft Clay")]
101 #[serde(rename = "Craft Clay")]
102 CraftClay,
103 #[strum(serialize = "Digital Art")]
104 #[serde(rename = "Digital Art")]
105 DigitalArt,
106 #[strum(serialize = "Enhance")]
107 #[serde(rename = "Enhance")]
108 Enhance,
109 #[strum(serialize = "Fantasy Art")]
110 #[serde(rename = "Fantasy Art")]
111 FantasyArt,
112 #[strum(serialize = "Isometric")]
113 #[serde(rename = "Isometric")]
114 Isometric,
115 #[strum(serialize = "Line Art")]
116 #[serde(rename = "Line Art")]
117 LineArt,
118 #[strum(serialize = "Lowpoly")]
119 #[serde(rename = "Lowpoly")]
120 Lowpoly,
121 #[strum(serialize = "Neonpunk")]
122 #[serde(rename = "Neonpunk")]
123 Neonpunk,
124 #[strum(serialize = "Origami")]
125 #[serde(rename = "Origami")]
126 Origami,
127 #[strum(serialize = "Photographic")]
128 #[serde(rename = "Photographic")]
129 Photographic,
130 #[strum(serialize = "Pixel Art")]
131 #[serde(rename = "Pixel Art")]
132 PixelArt,
133 #[strum(serialize = "Texture")]
134 #[serde(rename = "Texture")]
135 Texture,
136}
137
138#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, EnumString)]
139#[serde(rename_all(serialize = "snake_case", deserialize = "snake_case"))]
140pub enum Text2ImageOpt {
141 NegativePrompt(String),
142 Size(Size),
143 N(u32), Steps(u32), SamplerIndex(SamplerIndex),
146 Seed(u32), CfgScale(f32), Style(Style),
149 UserId(String),
150}
151
152#[cfg(test)]
153mod tests {
154 use super::Size;
155 #[test]
156 fn test_size() {
157 let size = Size::S1024x1024;
158 assert_eq!(size.to_string(), "1024x1024");
159 }
160}