mirror of
https://github.com/Matysh/houseplan-card
synced 2026-07-31 08:28:31 +00:00
fix v1.37.3: true dashed open boundary, rendered above the glow
- outlineWithout trims the rooms' solid strokes under open stretches (.room.noedge kills the polygon stroke incl. hover; trimmed .room-outline path draws the remaining walls) - dash color follows the space stroke color; openwalls layer moved after the glow layer - +1 unit test (105); smoke_openwall extended; docs same-commit
This commit is contained in:
@@ -7,6 +7,7 @@ import {
|
||||
kelvinToRgb, glowColorOf, doorSector, hasRoomBehind,
|
||||
controlsAction, isControllable,
|
||||
sharedBoundary, openZoneOf, distToSegment,
|
||||
outlineWithout,
|
||||
segmentCm, formatLength, roomEdges, roomPoly, pointOnBoundary, pointStrictlyInside, roomsOverlap,
|
||||
mergeRooms, splitRoom, polygonArea, closestPointOnBoundary, isActiveState, snapToWall, openingAmount, fillColorsOf, lerpColor, roomFillStyle, stateIcon, lightColorOf, isAlarmState, parseRoomRef, diffNewDevices,
|
||||
} from '../test-build/logic.js';
|
||||
@@ -703,3 +704,20 @@ test('distToSegment', () => {
|
||||
assert.equal(distToSegment([3, 5], [0, 0, 0, 10]), 3);
|
||||
assert.ok(Math.abs(distToSegment([-3, -4], [0, 0, 0, 10]) - 5) < 1e-9);
|
||||
});
|
||||
|
||||
test('outlineWithout: removes the cut stretch, keeps the rest', () => {
|
||||
const sq = [[0, 0], [10, 0], [10, 10], [0, 10]];
|
||||
// вырез середины нижней стены: 3..7
|
||||
const pieces = outlineWithout(sq, [[3, 0, 7, 0]]);
|
||||
const len = (s) => Math.hypot(s[2] - s[0], s[3] - s[1]);
|
||||
const total = pieces.reduce((a, s) => a + len(s), 0);
|
||||
assert.ok(Math.abs(total - (40 - 4)) < 1e-6);
|
||||
// куски нижней стены: 0..3 и 7..10
|
||||
const bottom = pieces.filter((s) => s[1] === 0 && s[3] === 0);
|
||||
assert.equal(bottom.length, 2);
|
||||
// вырез целого ребра
|
||||
const p2 = outlineWithout(sq, [[0, 0, 10, 0]]);
|
||||
assert.ok(Math.abs(p2.reduce((a, s) => a + len(s), 0) - 30) < 1e-6);
|
||||
// без вырезов — весь периметр
|
||||
assert.ok(Math.abs(outlineWithout(sq, []).reduce((a, s) => a + len(s), 0) - 40) < 1e-6);
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user