Skip to content

WLED TV v1.3.5

Latest

Choose a tag to compare

@leonida92 leonida92 released this 07 Nov 20:15

WLED TV v1.3.5 - Fixture Geometry Engine & Canvas Layout Solvers

Fixture Geometry Engine Consolidation

  • FixtureGeometryEngine: Dedicated domain geometry module consolidating:
    • Physical LED coordinate mapping across 4 perimeter corners (clockwise & counter-clockwise) with pixel-accurate 16:9 depth normalization.
    • Aspect ratio crop calculations and temporal letterbox/pillarbox snap thresholds (Cinemascope 2.39:1, 4:3 pillarbox, fullscreen 16:9).
    • Ambient fixture sub-zone partitioning (LEFT_AMBIENT, RIGHT_AMBIENT, TOP_AMBIENT, BOTTOM_AMBIENT, and full screen).
    • High-performance layout solving for UI views (calculatePreviewLayout, calculateZoneCanvasLayout).
  • NormalizedRect Pure Domain Primitive:
    • Zero-dependency immutable normalized coordinate rectangle (left, top, right, bottom) with helper properties (width, height, centerX, centerY).
    • Isolated Android RectF boundary conversions strictly into ui.views.RectAdapters.kt, keeping domain and geometry models 100% pure Kotlin.

Decoupled Pure Optical Color Engine

  • ScreenColorProcessor:
    • Stripped of all physical coordinate math and fixture layout collaborators, transforming it into a pure optical color sampling and transformation engine.
    • Margin probing writes directly to primitive floats with zero object allocations on every frame.
    • Optical color extraction operates directly on List<NormalizedRect> slices.

Zero-Allocation 60Hz Streaming Cadence

  • Mutation-Driven Zone Caching:
    • Implemented deviceZonesCache in FixtureGeometryEngine, guaranteeing zero heap allocations during steady-state 60Hz ambient streaming.
    • Invalidation is strictly mutation-driven, firing only when video aspect crop boundaries change or configuration is updated.

UI Views as Pure Rendering Adapters

  • TvPerimeterPreviewView & ZoneCanvasView:
    • Converted into pure rendering adapters with pre-computed geometry vectors, eliminating all layout math and allocations from onDraw.

Architecture & Standards

  • Recorded ADR 0004: Fixture Geometry Engine & Canvas Layout Solvers.
  • Added automated guardrail test geometryPackage_hasZeroAndroidSdkImports to enforce zero Android SDK imports in pure domain packages.
  • Updated GLOSSARY.md, AGENTS.md, and CODING_STANDARDS.md.
  • All JVM unit tests passing 100% green in ~8s.