Skip to content

Commit 8b2e878

Browse files
tpmoddingclaude
andcommitted
Feat hyperion-project#762: classic LED layout — per-corner gap control
Replaces the single commented-out cornergap with four independent inputs (TL, TR, BR, BL). Each corner gap overrides edgegap for its two adjacent edge ends; old configs with only edgegap continue to work unchanged. Save/restore is schema-driven and requires no extra code. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
1 parent 71c9d3a commit 8b2e878

3 files changed

Lines changed: 87 additions & 24 deletions

File tree

assets/webconfig/content/conf_leds.html

Lines changed: 36 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -265,16 +265,42 @@ <h4 class="panel-title">
265265
<div class="input-group-addon" data-i18n="edt_append_percent_v">%</div>
266266
</td>
267267
</tr>
268-
<!-- <tr>
269-
<td class="ltd">
270-
<label class="ltdlabel" for="ip_cl_cornergap" data-i18n="conf_leds_layout_cl_cornergap">Corner Gap</label>
271-
</td>
272-
<td class="itd input-group">
273-
<input class="form-control ledCLconstr " id="ip_cl_cornergap" type="number" value="0" min="0" max="50" step="1"></input>
274-
<div class="input-group-addon" data-i18n="edt_append_percent">%</div>
275-
</td>
276-
</tr>
277-
-->
268+
<tr>
269+
<td class="ltd">
270+
<label class="ltdlabel" for="ip_cl_cornergaptl" data-i18n="conf_leds_layout_cl_cornergaptl">Corner Gap TL</label>
271+
</td>
272+
<td class="itd input-group">
273+
<input class="form-control ledCLconstr" id="ip_cl_cornergaptl" type="number" value="0" min="0" max="50" step="1"></input>
274+
<div class="input-group-addon" data-i18n="edt_append_percent">%</div>
275+
</td>
276+
</tr>
277+
<tr>
278+
<td class="ltd">
279+
<label class="ltdlabel" for="ip_cl_cornergaptr" data-i18n="conf_leds_layout_cl_cornergaptr">Corner Gap TR</label>
280+
</td>
281+
<td class="itd input-group">
282+
<input class="form-control ledCLconstr" id="ip_cl_cornergaptr" type="number" value="0" min="0" max="50" step="1"></input>
283+
<div class="input-group-addon" data-i18n="edt_append_percent">%</div>
284+
</td>
285+
</tr>
286+
<tr>
287+
<td class="ltd">
288+
<label class="ltdlabel" for="ip_cl_cornergapbr" data-i18n="conf_leds_layout_cl_cornergapbr">Corner Gap BR</label>
289+
</td>
290+
<td class="itd input-group">
291+
<input class="form-control ledCLconstr" id="ip_cl_cornergapbr" type="number" value="0" min="0" max="50" step="1"></input>
292+
<div class="input-group-addon" data-i18n="edt_append_percent">%</div>
293+
</td>
294+
</tr>
295+
<tr>
296+
<td class="ltd">
297+
<label class="ltdlabel" for="ip_cl_cornergapbl" data-i18n="conf_leds_layout_cl_cornergapbl">Corner Gap BL</label>
298+
</td>
299+
<td class="itd input-group">
300+
<input class="form-control ledCLconstr" id="ip_cl_cornergapbl" type="number" value="0" min="0" max="50" step="1"></input>
301+
<div class="input-group-addon" data-i18n="edt_append_percent">%</div>
302+
</td>
303+
</tr>
278304
</tbody>
279305
</table>
280306
</div>

assets/webconfig/js/content_leds.js

Lines changed: 27 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -284,7 +284,17 @@ function createClassicLedLayoutSimple(ledstop, ledsleft, ledsright, ledsbottom,
284284
}
285285

286286
function createClassicLedLayout(params) {
287-
var edgeHGap = params.edgeVGap / (16 / 9);
287+
// Per-corner gaps (fall back to uniform edgeVGap when not specified)
288+
var gapTL = (params.cornergaptl !== undefined && !isNaN(params.cornergaptl)) ? params.cornergaptl : params.edgeVGap;
289+
var gapTR = (params.cornergaptr !== undefined && !isNaN(params.cornergaptr)) ? params.cornergaptr : params.edgeVGap;
290+
var gapBR = (params.cornergapbr !== undefined && !isNaN(params.cornergapbr)) ? params.cornergapbr : params.edgeVGap;
291+
var gapBL = (params.cornergapbl !== undefined && !isNaN(params.cornergapbl)) ? params.cornergapbl : params.edgeVGap;
292+
// Horizontal (aspect-ratio-adjusted) components
293+
var gapTL_H = gapTL / (16 / 9);
294+
var gapTR_H = gapTR / (16 / 9);
295+
var gapBR_H = gapBR / (16 / 9);
296+
var gapBL_H = gapBL / (16 / 9);
297+
var edgeHGap = params.edgeVGap / (16 / 9); // kept for backward-compat reference
288298
var ledArray = [];
289299

290300
function createFinalArray(array) {
@@ -338,12 +348,12 @@ function createClassicLedLayout(params) {
338348
}
339349

340350
function createTopLeds() {
341-
var steph = (params.pttrh - params.pttlh - (2 * edgeHGap)) / params.ledstop;
351+
var steph = (params.pttrh - params.pttlh - gapTL_H - gapTR_H) / params.ledstop;
342352
var stepv = (params.pttrv - params.pttlv) / params.ledstop;
343353

344354
for (var i = 0; i < params.ledstop; i++) {
345-
var hmin = ovl("-", params.pttlh + (steph * Number([i])) + edgeHGap);
346-
var hmax = ovl("+", params.pttlh + (steph * Number([i + 1])) + edgeHGap);
355+
var hmin = ovl("-", params.pttlh + (steph * Number([i])) + gapTL_H);
356+
var hmax = ovl("+", params.pttlh + (steph * Number([i + 1])) + gapTL_H);
347357
var vmin = params.pttlv + (stepv * Number([i]));
348358
var vmax = vmin + params.ledsHDepth;
349359
createLedArray(hmin, hmax, vmin, vmax);
@@ -352,24 +362,24 @@ function createClassicLedLayout(params) {
352362

353363
function createRightLeds() {
354364
var steph = (params.ptbrh - params.pttrh) / params.ledsright;
355-
var stepv = (params.ptbrv - params.pttrv - (2 * params.edgeVGap)) / params.ledsright;
365+
var stepv = (params.ptbrv - params.pttrv - gapTR - gapBR) / params.ledsright;
356366

357367
for (var i = 0; i < params.ledsright; i++) {
358368
var hmax = params.pttrh + (steph * Number([i + 1]));
359369
var hmin = hmax - params.ledsVDepth;
360-
var vmin = ovl("-", params.pttrv + (stepv * Number([i])) + params.edgeVGap);
361-
var vmax = ovl("+", params.pttrv + (stepv * Number([i + 1])) + params.edgeVGap);
370+
var vmin = ovl("-", params.pttrv + (stepv * Number([i])) + gapTR);
371+
var vmax = ovl("+", params.pttrv + (stepv * Number([i + 1])) + gapTR);
362372
createLedArray(hmin, hmax, vmin, vmax);
363373
}
364374
}
365375

366376
function createBottomLeds() {
367-
var steph = (params.ptbrh - params.ptblh - (2 * edgeHGap)) / params.ledsbottom;
377+
var steph = (params.ptbrh - params.ptblh - gapBL_H - gapBR_H) / params.ledsbottom;
368378
var stepv = (params.ptbrv - params.ptblv) / params.ledsbottom;
369379

370380
for (var i = params.ledsbottom - 1; i > -1; i--) {
371-
var hmin = ovl("-", params.ptblh + (steph * Number([i])) + edgeHGap);
372-
var hmax = ovl("+", params.ptblh + (steph * Number([i + 1])) + edgeHGap);
381+
var hmin = ovl("-", params.ptblh + (steph * Number([i])) + gapBL_H);
382+
var hmax = ovl("+", params.ptblh + (steph * Number([i + 1])) + gapBL_H);
373383
var vmax = params.ptblv + (stepv * Number([i]));
374384
var vmin = vmax - params.ledsHDepth;
375385
createLedArray(hmin, hmax, vmin, vmax);
@@ -378,13 +388,13 @@ function createClassicLedLayout(params) {
378388

379389
function createLeftLeds() {
380390
var steph = (params.ptblh - params.pttlh) / params.ledsleft;
381-
var stepv = (params.ptblv - params.pttlv - (2 * params.edgeVGap)) / params.ledsleft;
391+
var stepv = (params.ptblv - params.pttlv - gapTL - gapBL) / params.ledsleft;
382392

383393
for (var i = params.ledsleft - 1; i > -1; i--) {
384394
var hmin = params.pttlh + (steph * Number([i]));
385395
var hmax = hmin + params.ledsVDepth;
386-
var vmin = ovl("-", params.pttlv + (stepv * Number([i])) + params.edgeVGap);
387-
var vmax = ovl("+", params.pttlv + (stepv * Number([i + 1])) + params.edgeVGap);
396+
var vmin = ovl("-", params.pttlv + (stepv * Number([i])) + gapTL);
397+
var vmax = ovl("+", params.pttlv + (stepv * Number([i + 1])) + gapTL);
388398
createLedArray(hmin, hmax, vmin, vmax);
389399
}
390400
}
@@ -438,7 +448,10 @@ function createClassicLeds() {
438448
ledsVDepth: parseInt($("#ip_cl_vdepth").val()) / 100,
439449
ledsHDepth: parseInt($("#ip_cl_hdepth").val()) / 100,
440450
edgeVGap: parseInt($("#ip_cl_edgegap").val()) / 100 / 2,
441-
//cornerVGap : parseInt($("#ip_cl_cornergap").val())/100/2,
451+
cornergaptl: parseInt($("#ip_cl_cornergaptl").val()) / 100 / 2,
452+
cornergaptr: parseInt($("#ip_cl_cornergaptr").val()) / 100 / 2,
453+
cornergapbr: parseInt($("#ip_cl_cornergapbr").val()) / 100 / 2,
454+
cornergapbl: parseInt($("#ip_cl_cornergapbl").val()) / 100 / 2,
442455
overlap: $("#ip_cl_overlap").val() / 100,
443456

444457
//trapezoid values % -> float

libsrc/hyperion/schema/schema-ledConfig.json

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,30 @@
6666
"maximum": 50,
6767
"default": 0
6868
},
69+
"cornergaptl": {
70+
"type": "integer",
71+
"minimum": 0,
72+
"maximum": 50,
73+
"default": 0
74+
},
75+
"cornergaptr": {
76+
"type": "integer",
77+
"minimum": 0,
78+
"maximum": 50,
79+
"default": 0
80+
},
81+
"cornergapbr": {
82+
"type": "integer",
83+
"minimum": 0,
84+
"maximum": 50,
85+
"default": 0
86+
},
87+
"cornergapbl": {
88+
"type": "integer",
89+
"minimum": 0,
90+
"maximum": 50,
91+
"default": 0
92+
},
6993
"ptlh": {
7094
"type": "integer",
7195
"minimum": 0,

0 commit comments

Comments
 (0)