package imagegen import "context" // ColorizeRequest asks a colorization backend (DDColor style) to add color to // a grayscale/faded photo (ADR-0023). type ColorizeRequest struct { // Image is the image to colorize. Required. Image Image } // ColorizeOption mutates a ColorizeRequest before it is sent. Reserved for // future request settings (the reference backend takes no parameters). type ColorizeOption func(*ColorizeRequest) // Apply returns a copy of the request with all options applied. func (r ColorizeRequest) Apply(opts ...ColorizeOption) ColorizeRequest { for _, opt := range opts { opt(&r) } return r } // Colorizer adds color to grayscale images. type Colorizer interface { // Colorize returns the colorized image as a one-image Result. Colorize(ctx context.Context, req ColorizeRequest, opts ...ColorizeOption) (*Result, error) } // ColorizeModelOption configures a Colorizer at construction time. Reserved // for future per-model settings. type ColorizeModelOption func(*ColorizeModelConfig) // ColorizeModelConfig carries per-model construction settings. type ColorizeModelConfig struct{} // ApplyColorizeModelOptions folds options into a config. func ApplyColorizeModelOptions(opts []ColorizeModelOption) ColorizeModelConfig { var cfg ColorizeModelConfig for _, opt := range opts { opt(&cfg) } return cfg } // ColorizeProvider mints Colorizers bound to one backend. type ColorizeProvider interface { // Name is the registry identifier for the provider. Name() string // ColorizeModel returns a Colorizer bound to the given id (passed through // to the backend verbatim; no catalog validation). ColorizeModel(id string, opts ...ColorizeModelOption) (Colorizer, error) }