(ledshoriz, ledsvert, cabling, start)
| 484 | } |
| 485 | |
| 486 | function createMatrixLayout(ledshoriz, ledsvert, cabling, start) |
| 487 | { |
| 488 | // Big thank you to RanzQ (Juha Rantanen) from Github for this script |
| 489 | // https://raw.githubusercontent.com/RanzQ/hyperion-audio-effects/master/matrix-config.js |
| 490 | |
| 491 | var parallel = false |
| 492 | var leds = [] |
| 493 | var hblock = 1.0 / ledshoriz |
| 494 | var vblock = 1.0 / ledsvert |
| 495 | |
| 496 | if (cabling == "parallel") |
| 497 | { |
| 498 | parallel = true |
| 499 | } |
| 500 | |
| 501 | /** |
| 502 | * Adds led to the hyperhdr config led array |
| 503 | * @param {Number} x Horizontal position in matrix |
| 504 | * @param {Number} y Vertical position in matrix |
| 505 | */ |
| 506 | function addLed(x, y) |
| 507 | { |
| 508 | var hscanMin = x * hblock |
| 509 | var hscanMax = (x + 1) * hblock |
| 510 | var vscanMin = y * vblock |
| 511 | var vscanMax = (y + 1) * vblock |
| 512 | |
| 513 | hscanMin = round(hscanMin); |
| 514 | hscanMax = round(hscanMax); |
| 515 | vscanMin = round(vscanMin); |
| 516 | vscanMax = round(vscanMax); |
| 517 | |
| 518 | leds.push( |
| 519 | { |
| 520 | hmin: hscanMin, |
| 521 | hmax: hscanMax, |
| 522 | vmin: vscanMin, |
| 523 | vmax: vscanMax, |
| 524 | group: 0 |
| 525 | }) |
| 526 | } |
| 527 | |
| 528 | var startYX = start.split('-') |
| 529 | var startX = startYX[1] === 'right' ? ledshoriz - 1 : 0 |
| 530 | var startY = startYX[0] === 'bottom' ? ledsvert - 1 : 0 |
| 531 | var endX = startX === 0 ? ledshoriz - 1 : 0 |
| 532 | var endY = startY === 0 ? ledsvert - 1 : 0 |
| 533 | var forward = startX < endX |
| 534 | |
| 535 | var downward = startY < endY |
| 536 | |
| 537 | var x, y |
| 538 | |
| 539 | for (y = startY; downward && y <= endY || !downward && y >= endY; y += downward ? 1 : -1) |
| 540 | { |
| 541 | for (x = startX; forward && x <= endX || !forward && x >= endX; x += forward ? 1 : -1) |
| 542 | { |
| 543 | addLed(x, y) |
no test coverage detected