import { StableDiffusionParams } from "@/types" import { CharacterExpression, CharacterGender, CharacterPose, GenerationMode, HairColor, HairStyle } from './config' import { generateSeed } from "./generateSeed" export function getStableDiffusionParams({ generationMode, negativePrompt, characterAge, characterExpression, characterGender, characterHairColor, characterHairStyle, characterName, characterPose }: { generationMode: GenerationMode negativePrompt: string characterAge: number characterExpression: CharacterExpression characterGender: CharacterGender characterHairColor: HairColor characterHairStyle: HairStyle characterName: string characterPose: CharacterPose }): StableDiffusionParams { const baseParams: StableDiffusionParams = { prompt: "", negativePrompt: "", guidanceScale: 9, seed: generateSeed(), width: 1024, height: 1024, numInferenceSteps: 20, hfApiKey: "", } const params: StableDiffusionParams = { ...baseParams, ...generationMode === "characters" ? { prompt: [ `${characterAge} years old $${characterGender}`, `${characterHairColor} ${characterHairStyle}`, `looking ${characterExpression}`, `${characterPose}`, `named ${characterName}`, 'beautiful', 'award winning', 'sharp', 'crisp', 'centered', 'aligned' ].filter(x => x).join(", "), negativePrompt: [ negativePrompt, 'drawing', 'painting', 'unrealistic', 'sitting', 'chair', '3D render', 'unaligned', 'cropped', 'bad hands', 'wrong hands', 'deformed', 'glitch', 'blurry', 'overexposed' ].join(", "), } : { prompt: [ 'picture of a single', prompt, '3D render', 'logo', 'ios icon', 'illustration', 'vector graphics', 'svg', 'beautiful', 'award winning', 'sharp', 'crisp', 'centered', 'aligned', ].join(", "), negativePrompt: [ negativePrompt, 'photo', 'gradient', 'many', 'realistic', 'shadow', 'multiple', 'various', 'unaligned', 'cropped', 'bad hands', 'wrong hands', 'deformed', 'glitch', 'blurry', 'overexposed' ].join(", "), } } return params }