mur_common/hub/
style_preset.rs1use serde::{Deserialize, Serialize};
2
3#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
6pub struct StylePreset {
7 pub id: String,
8 pub display_name: String,
9 pub author: String,
10 pub version: u32,
11 pub family: PresetFamily,
12 pub description: String,
13 pub llm_image_gen: LlmImageGen,
14 pub expressions: Vec<ExpressionDef>,
15 pub renderer: RendererConfig,
16}
17
18#[derive(Debug, Clone, Copy, Serialize, Deserialize, PartialEq, Eq)]
20#[serde(rename_all = "lowercase")]
21pub enum PresetFamily {
22 Chibi,
23 Pixel,
24 Live2d,
25 Polaroid,
26}
27
28#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
30pub struct LlmImageGen {
31 pub base_prompt: String,
32 pub negative_prompt: String,
33 pub size: String,
35 pub steps: u32,
36 #[serde(default)]
38 pub img2img: bool,
39 #[serde(default)]
41 pub requires_source_image: bool,
42}
43
44#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
46pub struct ExpressionDef {
47 pub id: String,
48 pub prompt_suffix: String,
49}
50
51#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
53pub struct RendererConfig {
54 pub family: PresetFamily,
55 pub default_size: SizeConfig,
56 pub idle_animation: IdleAnimation,
57 pub blink_interval_s: [f32; 2],
59 pub crossfade_ms: u32,
60}
61
62#[derive(Debug, Clone, Copy, Serialize, Deserialize, PartialEq, Eq)]
63pub struct SizeConfig {
64 pub w: u32,
65 pub h: u32,
66}
67
68#[derive(Debug, Clone, Copy, Serialize, Deserialize, PartialEq, Eq)]
69#[serde(rename_all = "lowercase")]
70pub enum IdleAnimation {
71 Breathe,
72 None,
73}