feat: Implement scrolling camera with layout-aware filtering
- Rename VERTICAL camera mode to FEED (rapid single-item view) - Add SCROLL camera mode with float accumulation for smooth movie-credits style scrolling - Add estimate_block_height() for cheap layout calculation without full rendering - Replace ViewportFilterStage with layout-aware filtering that tracks camera position - Add render caching to FontStage to avoid re-rendering items - Fix CameraStage to use global canvas height for scrolling bounds - Add horizontal padding in Camera.apply() to prevent ghosting - Add get_dimensions() to MultiDisplay for proper viewport sizing - Fix PygameDisplay to auto-detect viewport from window size - Update presets to use scroll camera with appropriate speeds
This commit is contained in:
@@ -627,12 +627,12 @@ class TestStageAdapters:
|
||||
from engine.pipeline.adapters import CameraStage
|
||||
from engine.pipeline.core import PipelineContext
|
||||
|
||||
camera = Camera(mode=CameraMode.VERTICAL)
|
||||
camera = Camera(mode=CameraMode.FEED)
|
||||
stage = CameraStage(camera, name="vertical")
|
||||
PipelineContext()
|
||||
|
||||
assert "camera" in stage.capabilities
|
||||
assert "source" in stage.dependencies # Prefix matches any source
|
||||
assert "render.output" in stage.dependencies # Depends on rendered content
|
||||
|
||||
|
||||
class TestDataSourceStage:
|
||||
|
||||
Reference in New Issue
Block a user