forked from genewildish/Mainline
- Replace estimate_block_height (PIL-based) with estimate_simple_height (word wrap) - Update viewport filter tests to match new height-based filtering (~4 items vs 24) - Fix CI task duplication in mise.toml (remove redundant depends) Closes #38 Closes #36
39 lines
1.4 KiB
Python
39 lines
1.4 KiB
Python
"""Factory functions for creating stage instances."""
|
|
|
|
from engine.pipeline.adapters.camera import CameraStage
|
|
from engine.pipeline.adapters.data_source import DataSourceStage
|
|
from engine.pipeline.adapters.display import DisplayStage
|
|
from engine.pipeline.adapters.effect_plugin import EffectPluginStage
|
|
from engine.pipeline.adapters.transform import FontStage
|
|
|
|
|
|
def create_stage_from_display(display, name: str = "terminal") -> DisplayStage:
|
|
"""Create a DisplayStage from a display instance."""
|
|
return DisplayStage(display, name=name)
|
|
|
|
|
|
def create_stage_from_effect(effect_plugin, name: str) -> EffectPluginStage:
|
|
"""Create an EffectPluginStage from an effect plugin."""
|
|
return EffectPluginStage(effect_plugin, name=name)
|
|
|
|
|
|
def create_stage_from_source(data_source, name: str = "headlines") -> DataSourceStage:
|
|
"""Create a DataSourceStage from a data source."""
|
|
return DataSourceStage(data_source, name=name)
|
|
|
|
|
|
def create_stage_from_camera(camera, name: str = "vertical") -> CameraStage:
|
|
"""Create a CameraStage from a camera instance."""
|
|
return CameraStage(camera, name=name)
|
|
|
|
|
|
def create_stage_from_font(
|
|
font_path: str | None = None,
|
|
font_size: int | None = None,
|
|
font_ref: str | None = "default",
|
|
name: str = "font",
|
|
) -> FontStage:
|
|
"""Create a FontStage with specified font configuration."""
|
|
# FontStage currently doesn't use these parameters but keeps them for compatibility
|
|
return FontStage(name=name)
|