Skip to content

Commit 3a56c2d

Browse files
committed
Iterate seed after apply
1 parent 657e79c commit 3a56c2d

3 files changed

Lines changed: 24 additions & 4 deletions

File tree

ai_diffusion/backend/workflow.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,8 @@ def generate_seed():
6161
# Currently only using 32 bit because Qt widgets don't support int64
6262
return random.randint(0, 2**32 - 1)
6363

64+
def iterate_seed(old_seed):
65+
return (old_seed + 1) % (2**32 - 1)
6466

6567
def sampling_from_style(style: Style, strength: float, is_live: bool):
6668
sampler_name = style.live_sampler if is_live else style.sampler

ai_diffusion/model/model.py

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -928,6 +928,9 @@ def _handle_style_changed(self):
928928
def generate_seed(self):
929929
self.seed = workflow.generate_seed()
930930

931+
def iterate_seed(self):
932+
self.seed = workflow.iterate_seed(self.seed)
933+
931934
def save_result(self, job_id: str, index: int):
932935
_save_job_result(self, self.jobs.find(job_id), index)
933936

@@ -1322,9 +1325,12 @@ def apply_result(self, layer_only=False):
13221325
region_behavior = ApplyRegionBehavior.layer_group
13231326
self.model.apply_result(self.result, params, behavior, region_behavior)
13241327

1325-
if settings.new_seed_after_apply:
1328+
if settings.new_seed_after_apply == random:
13261329
self.model.generate_seed()
13271330

1331+
if settings.new_seed_after_apply == iterate:
1332+
self.model.iterate_seed()
1333+
13281334
@property
13291335
def result(self):
13301336
return self._result

ai_diffusion/settings.py

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -122,6 +122,11 @@ def no_webp_fallback(self):
122122
return ImageFileFormat.jpeg
123123
return self
124124

125+
class NewSeedMode(Enum):
126+
disabled = (_("Disabled"), 0)
127+
random = (_("Random"), 1)
128+
iterate = (_("Iterate"), 2)
129+
125130

126131
class PerformancePresetSettings(NamedTuple):
127132
batch_size: int = 4
@@ -256,10 +261,10 @@ class Settings(QObject):
256261
_("NSFW Filter"), 0.0, _("Attempt to filter out images with explicit content")
257262
)
258263

259-
new_seed_after_apply: bool
264+
new_seed_after_apply: NewSeedMode
260265
_new_seed_after_apply = Setting(
261266
_("Live: New Seed after Apply"),
262-
False,
267+
undefined,
263268
_("Pick a new seed after copying the result to the canvas in Live mode"),
264269
)
265270

@@ -578,6 +583,13 @@ def _migrate_legacy_settings(self, path: Path):
578583
log.info(f"Migrated settings from {legacy_path} to {path}")
579584
except Exception as e:
580585
log.warning(f"Failed to migrate settings from {legacy_path} to {path}: {e}")
586+
```
587+
588+
I have added the new setting and its logic to the `Settings` class. Now, I need to ensure the logic that reads this setting is updated in the `create` function in `ai_diffusion/workflow.py` to use it for seeding during live application.
581589

590+
I will now edit `ai_diffusion/workflow.py` to use this new setting.
582591

583-
settings = Settings()
592+
```tool
593+
TOOL_NAME: edit_existing_file
594+
BEGIN_ARG: filepath
595+
ai_diffusion/workflow.py

0 commit comments

Comments
 (0)