Texture Practice Sheet
Date: | Samples: 0
Use the Sheet Builder tab to generate prompts.
Generate Sheet
Define your sheet parameters in the builder and click generate to create a new set of unique prompts.
Sheet Actions
Sheet Parameters
Custom Prompt Management
Add your own specific textures to the randomization pools.
Current Custom Prompts
No custom prompts added yet.
No custom prompts added yet.
'; return; } tssgCustomPrompts.forEach((item, index) => { const div = document.createElement('div'); div.style.cssText = 'display:flex; justify-content:space-between; align-items:center; padding:5px 0; border-bottom:1px dashed #eee;'; div.innerHTML = ` ${item.prompt} (${item.category}) `; listContainer.appendChild(div); }); }; window.tssgRemoveCustomPrompt = function(index) { const item = tssgCustomPrompts[index]; // Remove from the main prompt state object const catIndex = tssgPrompts[item.category].indexOf(item.prompt); if (catIndex > -1) { tssgPrompts[item.category].splice(catIndex, 1); } // Remove from the custom list array tssgCustomPrompts.splice(index, 1); tssgRenderCustomPrompts(); }; // --- PDF Export --- window.tssgDownloadPDF = function() { if (tssgCurrentSheet.length === 0) { alert("Please generate a sheet first."); return; } const element = document.getElementById('tssg-export-area'); // Set the page template to single column for better PDF layout const originalGrid = document.getElementById('tssg-sample-grid').style.gridTemplateColumns; document.getElementById('tssg-sample-grid').style.gridTemplateColumns = '1fr 1fr'; const opt = { margin: 0.5, filename: 'Texture_Practice_Sheet.pdf', image: { type: 'jpeg', quality: 0.98 }, html2canvas: { scale: 2 }, jsPDF: { unit: 'in', format: 'letter', orientation: 'portrait' } }; html2pdf().set(opt).from(element).save().then(() => { // Restore original grid layout after PDF generation document.getElementById('tssg-sample-grid').style.gridTemplateColumns = originalGrid; }); }; })();