mirror of
https://git.datalinker.icu/comfyanonymous/ComfyUI
synced 2026-09-04 08:47:08 +08:00
Added Recraft Controls + Recraft Color RGB nodes (#57)
This commit is contained in:
parent
5e2962ffe5
commit
b2f55ba329
@ -8,6 +8,68 @@ from typing import Optional
|
||||
from pydantic import BaseModel, Field, conint, confloat
|
||||
|
||||
|
||||
class RecraftColor:
|
||||
def __init__(self, r: int, g: int, b: int):
|
||||
self.color = [r, g, b]
|
||||
|
||||
def create_api_model(self):
|
||||
return RecraftColorObject(rgb=self.color)
|
||||
|
||||
|
||||
class RecraftColorChain:
|
||||
def __init__(self):
|
||||
self.colors: list[RecraftColor] = []
|
||||
|
||||
def get_first(self):
|
||||
if len(self.colors) > 0:
|
||||
return self.colors[0]
|
||||
return None
|
||||
|
||||
def add(self, color: RecraftColor):
|
||||
self.colors.append(color)
|
||||
|
||||
def create_api_model(self):
|
||||
if not self.colors:
|
||||
return None
|
||||
colors_api = [x.create_api_model() for x in self.colors]
|
||||
return colors_api
|
||||
|
||||
def clone(self):
|
||||
c = RecraftColorChain()
|
||||
for color in self.colors:
|
||||
c.add(color)
|
||||
return c
|
||||
|
||||
def clone_and_merge(self, other: RecraftColorChain):
|
||||
c = self.clone()
|
||||
for color in other.colors:
|
||||
c.add(color)
|
||||
return c
|
||||
|
||||
|
||||
class RecraftControls:
|
||||
def __init__(self, colors: RecraftColorChain=None, background_color: RecraftColorChain=None,
|
||||
artistic_level: int=None, no_text: bool=None):
|
||||
self.colors = colors
|
||||
self.background_color = background_color
|
||||
self.artistic_level = artistic_level
|
||||
self.no_text = no_text
|
||||
|
||||
def create_api_model(self):
|
||||
if self.colors is None and self.background_color is None and self.artistic_level is None and self.no_text is None:
|
||||
return None
|
||||
colors_api = None
|
||||
background_color_api = None
|
||||
if self.colors:
|
||||
colors_api = self.colors.create_api_model()
|
||||
if self.background_color:
|
||||
first_background = self.background_color.get_first()
|
||||
background_color_api = first_background.create_api_model() if first_background else None
|
||||
|
||||
return RecraftControlsObject(colors=colors_api, background_color=background_color_api,
|
||||
artistic_level=self.artistic_level, no_text=self.no_text)
|
||||
|
||||
|
||||
class RecraftColor:
|
||||
def __init__(self, r: int, g: int, b: int):
|
||||
self.color = [r, g, b]
|
||||
|
||||
@ -235,6 +235,75 @@ class RecraftControlsNode:
|
||||
return (RecraftControls(colors=colors, background_color=background_color), )
|
||||
|
||||
|
||||
class RecraftColorRGBNode:
|
||||
"""
|
||||
Create Recraft Color by choosing specific RGB values.
|
||||
"""
|
||||
|
||||
RETURN_TYPES = (RecraftIO.COLOR,)
|
||||
RETURN_NAMES = ("recraft_color",)
|
||||
FUNCTION = "create_color"
|
||||
CATEGORY = "api node/image/Recraft"
|
||||
|
||||
@classmethod
|
||||
def INPUT_TYPES(s):
|
||||
return {
|
||||
"required": {
|
||||
"r": (IO.INT, {
|
||||
"default": 0,
|
||||
"min": 0,
|
||||
"max": 255,
|
||||
"tooltip": "Red value of color."
|
||||
}),
|
||||
"g": (IO.INT, {
|
||||
"default": 0,
|
||||
"min": 0,
|
||||
"max": 255,
|
||||
"tooltip": "Green value of color."
|
||||
}),
|
||||
"b": (IO.INT, {
|
||||
"default": 0,
|
||||
"min": 0,
|
||||
"max": 255,
|
||||
"tooltip": "Blue value of color."
|
||||
}),
|
||||
},
|
||||
"optional": {
|
||||
"recraft_color": (RecraftIO.COLOR,),
|
||||
}
|
||||
}
|
||||
|
||||
def create_color(self, r: int, g: int, b: int, recraft_color: RecraftColorChain=None):
|
||||
recraft_color = recraft_color.clone() if recraft_color else RecraftColorChain()
|
||||
recraft_color.add(RecraftColor(r, g, b))
|
||||
return (recraft_color, )
|
||||
|
||||
|
||||
class RecraftControlsNode:
|
||||
"""
|
||||
Create Recraft Controls for customizing Recraft generation.
|
||||
"""
|
||||
|
||||
RETURN_TYPES = (RecraftIO.CONTROLS,)
|
||||
RETURN_NAMES = ("recraft_controls",)
|
||||
FUNCTION = "create_controls"
|
||||
CATEGORY = "api node/image/Recraft"
|
||||
|
||||
@classmethod
|
||||
def INPUT_TYPES(s):
|
||||
return {
|
||||
"required": {
|
||||
},
|
||||
"optional": {
|
||||
"colors": (RecraftIO.COLOR,),
|
||||
"background_color": (RecraftIO.COLOR,),
|
||||
}
|
||||
}
|
||||
|
||||
def create_controls(self, colors: RecraftColorChain=None, background_color: RecraftColorChain=None):
|
||||
return (RecraftControls(colors=colors, background_color=background_color), )
|
||||
|
||||
|
||||
class RecraftStyleV3RealisticImageNode:
|
||||
"""
|
||||
Select realistic_image style and optional substyle.
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user