a
    Ad                     @   sf   d dl Z d dlZd dlmZ d dlmZmZmZm	Z	 d dl
mZ d dlmZmZ G dd dejZdS )    N)	deepbooruimages
processingshared)	Processed)optsstatec                   @   s,   e Zd Zdd Zdd Zdd Zdd Zd	S )
Scriptc                 C   s   dS )NZLoopback )selfr
   r
   8/var/www/html/stable-diffusion-webui/scripts/loopback.pytitle   s    zScript.titlec                 C   s   |S )Nr
   )r   
is_img2imgr
   r
   r   show   s    zScript.showc              	   C   sl   t jddddd| dd}t jdddd	d
| dd}t jdg ddd}t jdg ddd}||||gS )N       ZLoops   loops)minimummaximumsteplabelvalueelem_idr   g{Gz?Final denoising strength      ?final_denoising_strengthzDenoising strength curve)
AggressiveLinearLazyr   )r   choicesr   z,Append interrogated prompt at each iteration)NoneCLIP	DeepBoorur!   )grSliderr   Dropdown)r   r   r   r   denoising_curveappend_interrogationr
   r
   r   ui   s
    z	Script.uic                    s  t | |j} d|_d|_d|_d }d }d }	|jg }
g }|j}|j}|j}| t	_
t |jd g} fdd}g }t|D ]}||_|_d }tD ]>}d|_d|_d|_tjr||_|dkr<|r| dnd	|_|d
kr| jtj|jd 7  _n&|dkr<| jtj|jd 7  _d|d  d d|d  d| t	_t |}t	jrz q|d u r|j}|j}	|jd |_||d |_t	jr q|jd }|g|_d|_|dkr|| || q|dkrt	jst	js|| || ||_t	jr q0qt|dkrtj |dd}tj!r|tj"||j#d||jtj$|tj% d|d
 tj&r|
| |
| }t'||||	}|S )N)r   zDenoising curver   r   c                    st   }dkr|S | d  } dkr:t |t j d }n& dkr\dt |t j d  }n|} | }| S )Nr   r   r   r   )mathsinpicos)loopstrengthprogresschanger'   r   Zinitial_denoising_strengthr   r
   r   calculate_denoising_strength2   s    z0Script.run.<locals>.calculate_denoising_strengthTr!   z,  r"   r#   z
Iteration /z, batch )rowsgrid)infoshort_filenamer7   p)(r   fix_seedn_iterextra_generation_params
batch_sizedenoising_strengthinit_imagespromptinpainting_fillr   	job_countsetup_color_correctionrangedo_not_save_gridr   img2img_color_correctioncolor_correctionsr   interrogatorinterrogater   modeltagjobprocess_imagesinterruptedseedr8   skippedr   appendlen
image_grid	grid_save
save_imageoutpath_gridsgrid_formatgrid_extended_filenamereturn_gridr   )r   r:   r   r   r'   r(   batch_countr8   initial_seedZinitial_infogridsZ
all_imagesZoriginal_init_imageoriginal_promptZoriginal_inpainting_fillZinitial_color_correctionsr3   historynZ
last_imagei	processedr7   r
   r2   r   run   s    




&





(
z
Script.runN)__name__
__module____qualname__r   r   r)   rc   r
   r
   r
   r   r	   
   s   r	   )r*   gradior$   modules.scriptsscriptsmodulesr   r   r   r   Zmodules.processingr   Zmodules.sharedr   r   r	   r
   r
   r
   r   <module>   s   