<!DOCTYPE html> <html lang="en-US"> <head> <meta charset="utf-8" /> <title>openOutpaint 🐠</title> <link href="css/index.css" rel="stylesheet" /> <link rel="icon" type="image/x-icon" href="favicon.ico"> </head> <body> <!-- Main Toolbar --> <div id="infoContainer" class="uiContainer"> <div id="infoTitleBar" class="draggable uiTitleBar">openOutpaint 🐠</div> <div id="info" class="info" style="min-width:200px;"> <label for="host">Host</label> <input id="host" value="http://127.0.0.1:7860"><br /> <!-- Prompts section --> <button type="button" class="collapsible">Prompts</button> <div class="content"> <label for="prompt">Prompt:</label> <br> <textarea id="prompt">oceanographic study, underwater wildlife, award winning</textarea><br /> <label for="negPrompt">Negative prompt:</label> <br> <textarea id="negPrompt">people, person, humans, human, divers, diver, glitch, error, text, watermark, bad quality, blurry</textarea><br /> <hr> </div> <button type="button" class="collapsible">Stable Diffusion settings</button> <div class="content"> <label for="seed">Seed (-1 for random):</label> <br> <input type="number" id="seed" onchange="changeSeed()" min="1" max="9999999999" value="-1" step="1" /><br /> <label for="samplerSelect">Sampler:</label> <select id="samplerSelect" onchange="changeSampler()"> <option value="DDIM">DDIM</option> <option value="Euler a">Euler A</option> <option value="Euler">Euler</option> <option value="LMS">LMS</option> <option value="Heun">Heun</option> <option value="DPM2">DPM2</option> <option value="DPM2 a">DPM2a</option> <option value="DPM++ 2S a">DPM++2Sa</option> <option value="DPM++ 2m">DPM++2m</option> <option value="DPM fast">DPM fast</option> <option value="DPM adaptive">DPM adaptive</option> <option value="LMS Karras">LMS Karras</option> <option value="DPM2 Karras">DPM2 Karras</option> <option value="DPM2 a Karras">DPM2a Karras</option> <option value="DPM++ 2S a Karras">DPM++2Sa Karras</option> <option value="DPM++ 2M Karras">DPM++2M Karras</option> </select><br /> <label for="steps">Steps: <input type="number" id="stepsTxt"></label><br /> <input type="range" id="steps" name="steps" min="1" max="50" /><br /> <label for="cfgScale">CFG scale: <input type="number" id="cfgScaleTxt"></label> <br /> <input type="range" id="cfgScale" name="cfgScale" min="-1" max="25" step="0.5" /><br /> <label for="batchSize">Batch size: <input type="number" id="batchSizeText"></label><br /> <input type="range" id="batchSize" name="batchSize" min="1" max="8" step="1" /><br /> <label for="batchCount">Batch count: <input type="number" id="batchCountText"></label><br /> <input type="range" id="batchCount" name="batchCount" min="1" max="8" step="1" /><br /> <hr> </div> <label for="scaleFactor">Scale factor: <input type="number" id="scaleFactorTxt"></label><br /> <input type="range" id="scaleFactor" name="scaleFactor" min="1" max="16" /><br /> <label for="cbxSnap">Snap to grid?</label> <input type="checkbox" id="cbxSnap" onchange="changeSnapMode()" checked="checked"><br /> <label for="cbxEnableErasing">Right-click erase?</label> <input type="checkbox" id="cbxEnableErasing" onchange="changeEnableErasing()"><br /> <label for="cbxPaint">Mask mode?</label> <input type="checkbox" id="cbxPaint" onchange="changePaintMode()"><br /> <label for="cbxHRFix">Auto txt2img HRfix?</label> <input type="checkbox" id="cbxHRFix" onchange="changeHiResFix()"><br /> <label for="overMaskPx">Overmask px (0 to disable):</label> <input type="number" id="overMaskPx" onchange="changeOverMaskPx()" min="0" max="128" value="16" step="1" /><br /> <label for="maskBlur">Mask blur:</label> <span id="maskBlurText"></span><br /> <input type="number" id="maskBlur" name="maskBlur" min="0" max="256" value="0" step="1" onchange="changeMaskBlur()" /><br /> <button type="button" class="collapsible">Save/Load/New image</button> <div class="content"> <label for="preloadImage">Load image:</label> <input type="file" id="preloadImage" onchange="preloadImage()" accept="image/*" / style="width: 200px;"><br /> <button onclick="downloadCanvas()">Save canvas</button><br /> <button onclick="newImage()">Clear canvas</button> </div> <!-- Degub info --> <button type="button" class="collapsible">Debug info</button> <div id="coords" class="content"> <label for="mouseX">mouseX:</label> <span id="mouseX"></span> <br /> <label for="mouseY">mouseY:</label> <span id="mouseY"></span> <br /> <label for="canvasX">canvasX:</label> <span id="canvasX"></span> <br /> <label for="canvasY">canvasY:</label> <span id="canvasY"></span> <br /> <label for="snapX">snapX:</label> <span id="snapX"></span> <br /> <label for="snapY">snapY:</label> <span id="snapY"></span><br /> <label for="heldButton">Mouse button:</label> <span id="heldButton"></span><br /> <span id="version">Alpha release v0.0.6.1</span> <br /> <hr> </div> </div> </div> <!-- History Toolbar --> <div id="historyContainer" class="uiContainer" style="right: 0;"> <div id="historyTitleBar" class="draggable uiTitleBar">History</div> <div class="info" style="min-width:200px;"> <div id="history" class="history"> </div> <div class="toolbar"> <button type="button" onclick="commands.undo()" class="tool">undo</button> <button type="button" onclick="commands.redo()" class="tool">redo</button> </div> </div> </div> <div id="mainHSplit" class="mainHSplit"> <div id="uiWrapper" class="uiWrapper"> <div id="canvasHolder" class="canvasHolder" oncontextmenu="return false;"> <canvas id="backgroundCanvas" class="mainCanvases backgroundCanvas" width="2560" height="1440" style="z-index: 0;"> <!-- gray grid bg canvas --> <p>lol ur browser sucks</p> </canvas> <canvas id="canvas" class="mainCanvases canvas" width="2560" height="1440" style="z-index: 1;"> <!-- normal canvas on which images are drawn --> <p>lol ur browser sucks</p> </canvas> <canvas id="tempCanvas" class="mainCanvases tempCanvas" width="2560" height="1440" style="z-index: 2;"> <!-- temporary canvas on which images being selected/rejected or imported arbitrary images are superimposed --> <p>lol ur browser sucks</p> </canvas> <canvas id="targetCanvas" class="mainCanvases targetCanvas" width="2560" height="1440" style="z-index: 3;"> <!-- canvas on which "targeting" squares are drawn --> <p>lol ur browser sucks</p> </canvas> <canvas id="maskPaintCanvas" class="mainCanvases maskPaintCanvas" width="2560" height="1440" style="z-index: 4;"> <!-- canvas on which masking brush is "painted" --> <p>lol ur browser sucks</p> </canvas> <canvas id="overlayCanvas" class="mainCanvases overlayCanvas" width="2560" height="1440" style="z-index: 5;"> <!-- canvas on which "cursor" reticle or arc is drawn --> <p>lol ur browser sucks</p> </canvas> <div id="tempDiv" style="position: relative; z-index: 6;"> <!-- where popup buttons go --> </div> </div> </div> <div id="masks" class="masks"> <div> <!-- <canvas id="maskCanvasMonitor" class="maskCanvasMonitor" width="512" height="512"> <p>lol ur browser sucks</p> </canvas><br /> --> <canvas id="overMaskCanvasMonitor" class="overMaskCanvasMonitor" width="512" height="512"> <p>lol ur browser sucks</p> </canvas><br /> <canvas id="initImgCanvasMonitor" class="initImgCanvasMonitor" width="512" height="512"> <p>lol ur browser sucks</p> </canvas><br /> </div> </div> </div> <script src="js/util.js" type="text/javascript"></script> <script src="js/input.js" type="text/javascript"></script> <script src="js/commands.js" type="text/javascript"></script> <script src="js/index.js" type="text/javascript"></script> <script src="js/settingsbar.js" type="text/javascript"></script> <script src="js/shortcuts.js" type="text/javascript"></script> </body> </html>