-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathindex.html
More file actions
137 lines (113 loc) · 4.48 KB
/
index.html
File metadata and controls
137 lines (113 loc) · 4.48 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>TutuDVD – Old-TV Screensaver</title>
<link rel="preconnect" href="https://fonts.googleapis.com" />
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
<link href="https://fonts.googleapis.com/css2?family=Savate:wght@500;700&display=swap" rel="stylesheet" />
<link rel="stylesheet" href="style.css" />
</head>
<body>
<!-- Canvas ---------------------------------------------------------- -->
<div id="canvas-wrap">
<canvas id="screen"></canvas>
</div>
<!-- Debug overlay --------------------------------------------------- -->
<div id="debug" class="hidden">
<div>Bounce: <span id="dbg-bounces">0</span></div>
<div>Index: <span id="dbg-index">0</span></div>
<div>Text: <span id="dbg-text">–</span></div>
<div>Pos: <span id="dbg-pos">–</span></div>
<div>Vel: <span id="dbg-vel">–</span></div>
</div>
<!-- Export progress ------------------------------------------------- -->
<div id="progress-wrap">
<div id="progress-label">Exporting… 0 / 0 frames</div>
<div id="progress-bar-track">
<div id="progress-bar-fill"></div>
</div>
</div>
<!-- Controls -------------------------------------------------------- -->
<div id="controls">
<!-- File loader -->
<button id="btn-load" title="Load a JSON or CSV text list">📂 Load texts</button>
<input type="file" id="file-input" accept=".json,.csv,.txt" style="display:none" />
<div class="sep"></div>
<!-- Seed -->
<label>Seed
<input type="text" id="inp-seed" value="tutudvd" class="wide" title="Deterministic seed (string or number)" />
</label>
<!-- Speed -->
<label>Speed
<input type="number" id="inp-speed" value="180" min="10" max="2000" step="10" title="px/s in preview resolution" />
</label>
<!-- Padding -->
<label>Padding
<input type="number" id="inp-padding" value="20" min="0" max="200" step="1" title="Inset from inner screen border (px at preview resolution)" />
</label>
<!-- Font size -->
<label>Font px
<input type="number" id="inp-fontsize" value="48" min="8" max="400" step="1" title="Font size in preview pixels" />
</label>
<!-- Trail gap -->
<label>Trail gap
<input type="number" id="inp-trailgap" value="42" min="1" max="400" step="1" title="Distance between trail echoes (px)" />
</label>
<div class="sep"></div>
<!-- FPS -->
<label>FPS
<select id="sel-fps">
<option value="30">30</option>
<option value="60" selected>60</option>
</select>
</label>
<!-- Export resolution -->
<label>Export res
<select id="sel-res">
<option value="preview">Preview</option>
<option value="1280x720">1280×720</option>
<option value="1920x1080" selected>1920×1080</option>
<option value="3840x2160">3840×2160</option>
</select>
</label>
<!-- Export duration -->
<label>Duration s
<input type="number" id="inp-duration" value="30" min="1" max="3600" step="1" title="Export duration in seconds" />
</label>
<!-- Export format -->
<label>Format
<select id="sel-format">
<option value="webm">WebM (video)</option>
<option value="zip">PNG sequence (zip)</option>
</select>
</label>
<div class="sep"></div>
<!-- Scanlines toggle -->
<label title="Toggle scanline overlay">
<input type="checkbox" id="chk-scanlines" checked /> Scanlines
</label>
<!-- Vignette toggle -->
<label title="Toggle vignette overlay">
<input type="checkbox" id="chk-vignette" checked /> Vignette
</label>
<!-- Debug toggle -->
<label title="Toggle debug overlay">
<input type="checkbox" id="chk-debug" /> Debug
</label>
<div class="sep"></div>
<!-- Action buttons -->
<button id="btn-startstop" class="primary">▶ Start</button>
<button id="btn-reset">↺ Reset</button>
<button id="btn-export" class="primary">⬇ Export</button>
<button id="btn-cancel-export" class="danger" style="display:none">✕ Cancel</button>
</div>
<!-- JSZip for PNG-sequence export (loaded lazily) -->
<script>
// We defer loading JSZip until actually needed (see app.js exportFramesZip)
window._JSZIP_CDN = 'https://cdnjs.cloudflare.com/ajax/libs/jszip/3.10.1/jszip.min.js';
</script>
<script src="app.js"></script>
</body>
</html>