summaryrefslogtreecommitdiff
path: root/internal/config
diff options
context:
space:
mode:
Diffstat (limited to 'internal/config')
-rw-r--r--internal/config/config.go30
-rw-r--r--internal/config/config_test.go25
2 files changed, 55 insertions, 0 deletions
diff --git a/internal/config/config.go b/internal/config/config.go
index a79c1ce..4107d61 100644
--- a/internal/config/config.go
+++ b/internal/config/config.go
@@ -103,6 +103,11 @@ type StyleConfig struct {
Manga []string `mapstructure:"manga" yaml:"manga"`
Horror []string `mapstructure:"horror" yaml:"horror"`
Watercolor []string `mapstructure:"watercolor" yaml:"watercolor"`
+ Pulp []string `mapstructure:"pulp" yaml:"pulp"`
+ Mecha []string `mapstructure:"mecha" yaml:"mecha"`
+ PixelArt []string `mapstructure:"pixel_art" yaml:"pixel_art"`
+ InkWash []string `mapstructure:"ink_wash" yaml:"ink_wash"`
+ Clay []string `mapstructure:"clay" yaml:"clay"`
}
// NarrationConfig stores narration prompt knobs.
@@ -188,6 +193,26 @@ func DefaultConfig() *Config {
"pure transparent watercolor storybook comic style, visible cold-press paper grain, watery pigment blooms, uneven wash edges, granulation, soft bleeding colors, pale layered washes, loose pencil underdrawing, no digital airbrush, no oil-paint texture, no glossy comic coloring",
"hand-painted watercolor children's adventure style, translucent pastel washes, wet-on-wet skies, dry-brush texture, white paper highlights, delicate ink-and-pencil outlines, puddled pigment edges, airy negative space, gentle low-contrast rendering",
},
+ Pulp: []string{
+ "retro pulp adventure cover style, painted poster energy, dramatic rim light, saturated inks, worn paper grain, bold composition, vintage print imperfections",
+ "mid-century pulp sci-fi comic style, chromatic airbrushed highlights, atomic-age props, bold diagonals, distressed halftone texture, high adventure mood",
+ },
+ Mecha: []string{
+ "high-detail mecha comic style, hard-surface armor plates, mechanical joints, cockpit glass reflections, technical line art, industrial lighting",
+ "anime mecha action page style, towering robots, dynamic perspective, panel-like motion energy, sparks and smoke, crisp cel-shaded rendering",
+ },
+ PixelArt: []string{
+ "16-bit pixel-art comic scene, limited palette, clean pixel clusters, deliberate dithering, retro game-era perspective, sharp pixel edges",
+ "retro pixel-art storyboard style, chunky sprites, high-contrast palette ramps, tiled-environment texture, no anti-aliasing, classic console look",
+ },
+ InkWash: []string{
+ "ink-wash brush painting style, sumi-e inspired strokes, expressive black ink gradients, controlled bleed on paper, minimal but dramatic composition",
+ "monochrome ink-and-wash comic style, calligraphic brush lines, soft gray washes, negative-space storytelling, textured rice-paper feel",
+ },
+ Clay: []string{
+ "stop-motion clay diorama style, hand-sculpted clay characters, thumbprint texture, miniature set lighting, tactile handcrafted look",
+ "plasticine comic tableau style, sculpted figures, soft studio shadows, practical miniature props, playful clay surface detail",
+ },
},
Narration: NarrationConfig{
Voices: []string{
@@ -454,6 +479,11 @@ func setDefaults(v *viper.Viper, cfg *Config) {
v.SetDefault("styles.manga", cfg.Styles.Manga)
v.SetDefault("styles.horror", cfg.Styles.Horror)
v.SetDefault("styles.watercolor", cfg.Styles.Watercolor)
+ v.SetDefault("styles.pulp", cfg.Styles.Pulp)
+ v.SetDefault("styles.mecha", cfg.Styles.Mecha)
+ v.SetDefault("styles.pixel_art", cfg.Styles.PixelArt)
+ v.SetDefault("styles.ink_wash", cfg.Styles.InkWash)
+ v.SetDefault("styles.clay", cfg.Styles.Clay)
v.SetDefault("narration.voices", cfg.Narration.Voices)
v.SetDefault("narration.chunk_words", cfg.Narration.ChunkWords)
diff --git a/internal/config/config_test.go b/internal/config/config_test.go
index 98b72db..c7aa2c8 100644
--- a/internal/config/config_test.go
+++ b/internal/config/config_test.go
@@ -58,6 +58,16 @@ styles:
- custom horror
watercolor:
- custom watercolor
+ pulp:
+ - custom pulp
+ mecha:
+ - custom mecha
+ pixel_art:
+ - custom pixel art
+ ink_wash:
+ - custom ink wash
+ clay:
+ - custom clay
narration:
chunk_words: 42
`)), 0o644); err != nil {
@@ -119,6 +129,21 @@ narration:
if got, want := len(cfg.Styles.Watercolor), 1; got != want || cfg.Styles.Watercolor[0] != "custom watercolor" {
t.Fatalf("Styles.Watercolor = %#v, want %q", cfg.Styles.Watercolor, "custom watercolor")
}
+ if got, want := len(cfg.Styles.Pulp), 1; got != want || cfg.Styles.Pulp[0] != "custom pulp" {
+ t.Fatalf("Styles.Pulp = %#v, want %q", cfg.Styles.Pulp, "custom pulp")
+ }
+ if got, want := len(cfg.Styles.Mecha), 1; got != want || cfg.Styles.Mecha[0] != "custom mecha" {
+ t.Fatalf("Styles.Mecha = %#v, want %q", cfg.Styles.Mecha, "custom mecha")
+ }
+ if got, want := len(cfg.Styles.PixelArt), 1; got != want || cfg.Styles.PixelArt[0] != "custom pixel art" {
+ t.Fatalf("Styles.PixelArt = %#v, want %q", cfg.Styles.PixelArt, "custom pixel art")
+ }
+ if got, want := len(cfg.Styles.InkWash), 1; got != want || cfg.Styles.InkWash[0] != "custom ink wash" {
+ t.Fatalf("Styles.InkWash = %#v, want %q", cfg.Styles.InkWash, "custom ink wash")
+ }
+ if got, want := len(cfg.Styles.Clay), 1; got != want || cfg.Styles.Clay[0] != "custom clay" {
+ t.Fatalf("Styles.Clay = %#v, want %q", cfg.Styles.Clay, "custom clay")
+ }
if got, want := cfg.Narration.ChunkWords, 42; got != want {
t.Fatalf("Narration.ChunkWords = %d, want %d", got, want)
}