Skip to content

OrbittingVolley

Demo

Quick Start

orbittingvolley.py
from terminaltexteffects.effects.effect_orbittingvolley import OrbittingVolley

effect = OrbittingVolley("YourTextHere")
with effect.terminal_output() as terminal:
    for frame in effect:
        terminal.print(frame)

Four launchers orbit the canvas firing volleys of characters inward to build the input text from the center out.

Classes:

Name Description
OrbittingVolley

Four launchers orbit the canvas firing volleys of characters inward to build the input text from the center out.

OrbittingVolleyConfig

Configuration for the OrbittingVolley effect.

OrbittingVolleyIterator

Effect iterator for OrbittingVolley. Does not normally need to be called directly.

OrbittingVolley

Bases: BaseEffect[OrbittingVolleyConfig]

Four launchers orbit the canvas firing volleys of characters inward to build the input text from the center out.

Attributes:

Name Type Description
effect_config OrbittingVolleyConfig

Configuration for the effect.

terminal_config TerminalConfig

Configuration for the terminal.

Source code in terminaltexteffects/effects/effect_orbittingvolley.py
class OrbittingVolley(BaseEffect[OrbittingVolleyConfig]):
    """Four launchers orbit the canvas firing volleys of characters inward to build the input text from the center out.

    Attributes:
        effect_config (OrbittingVolleyConfig): Configuration for the effect.
        terminal_config (TerminalConfig): Configuration for the terminal.
    """

    _config_cls = OrbittingVolleyConfig
    _iterator_cls = OrbittingVolleyIterator

    def __init__(self, input_data: str) -> None:
        """Initialize the effect with the provided input data.

        Args:
            input_data (str): The input data to use for the effect."""
        super().__init__(input_data)

__init__(input_data)

Initialize the effect with the provided input data.

Parameters:

Name Type Description Default
input_data str

The input data to use for the effect.

required
Source code in terminaltexteffects/effects/effect_orbittingvolley.py
def __init__(self, input_data: str) -> None:
    """Initialize the effect with the provided input data.

    Args:
        input_data (str): The input data to use for the effect."""
    super().__init__(input_data)

OrbittingVolleyConfig dataclass

Bases: ArgsDataClass

Configuration for the OrbittingVolley effect.

Attributes:

Name Type Description
top_launcher_symbol str

Symbol for the top launcher.

right_launcher_symbol str

Symbol for the right launcher.

bottom_launcher_symbol str

Symbol for the bottom launcher.

left_launcher_symbol str

Symbol for the left launcher.

final_gradient_stops tuple[Color, ...]

Tuple of colors for the final color gradient. If only one color is provided, the characters will be displayed in that color.

final_gradient_steps tuple[int, ...] | int

Tuple of the number of gradient steps to use. More steps will create a smoother and longer gradient animation. Valid values are n > 0.

final_gradient_direction Direction

Direction of the final gradient.

launcher_movement_speed float

Orbitting speed of the launchers. Valid values are n > 0.

character_movement_speed float

Speed of the launched characters. Valid values are n > 0.

volley_size float

Percent of total input characters each launcher will fire per volley. Lower limit of one character. Valid values are 0 < n <= 1.

launch_delay int

Number of animation ticks to wait between volleys of characters. Valid values are n >= 0.

character_easing EasingFunction

Easing function to use for launched character movement.

Source code in terminaltexteffects/effects/effect_orbittingvolley.py
@argclass(
    name="orbittingvolley",
    help="Four launchers orbit the canvas firing volleys of characters inward to build the input text from the center out.",
    description="orbittingvolley | Four launchers orbit the canvas firing volleys of characters inward to build the input text from the center out.",
    epilog=f"""{argvalidators.EASING_EPILOG}

Example: terminaltexteffects orbittingvolley --top-launcher-symbol █ --right-launcher-symbol █ --bottom-launcher-symbol █ --left-launcher-symbol █ --final-gradient-stops FFA15C 44D492 --final-gradient-steps 12 --launcher-movement-speed 0.5 --character-movement-speed 1 --volley-size 0.03 --launch-delay 50 --character-easing OUT_SINE""",
)
@dataclass
class OrbittingVolleyConfig(ArgsDataClass):
    """Configuration for the OrbittingVolley effect.

    Attributes:
        top_launcher_symbol (str): Symbol for the top launcher.
        right_launcher_symbol (str): Symbol for the right launcher.
        bottom_launcher_symbol (str): Symbol for the bottom launcher.
        left_launcher_symbol (str): Symbol for the left launcher.
        final_gradient_stops (tuple[Color, ...]): Tuple of colors for the final color gradient. If only one color is provided, the characters will be displayed in that color.
        final_gradient_steps (tuple[int, ...] | int): Tuple of the number of gradient steps to use. More steps will create a smoother and longer gradient animation. Valid values are n > 0.
        final_gradient_direction (Gradient.Direction): Direction of the final gradient.
        launcher_movement_speed (float): Orbitting speed of the launchers. Valid values are n > 0.
        character_movement_speed (float): Speed of the launched characters. Valid values are n > 0.
        volley_size (float): Percent of total input characters each launcher will fire per volley. Lower limit of one character. Valid values are 0 < n <= 1.
        launch_delay (int): Number of animation ticks to wait between volleys of characters. Valid values are n >= 0.
        character_easing (easing.EasingFunction): Easing function to use for launched character movement."""

    top_launcher_symbol: str = ArgField(
        cmd_name="--top-launcher-symbol",
        type_parser=argvalidators.Symbol.type_parser,
        default="█",
        metavar=argvalidators.Symbol.METAVAR,
        help="Symbol for the top launcher.",
    )  # type: ignore[assignment]
    "str : Symbol for the top launcher."

    right_launcher_symbol: str = ArgField(
        cmd_name="--right-launcher-symbol",
        type_parser=argvalidators.Symbol.type_parser,
        default="█",
        metavar=argvalidators.Symbol.METAVAR,
        help="Symbol for the right launcher.",
    )  # type: ignore[assignment]
    "str : Symbol for the right launcher."

    bottom_launcher_symbol: str = ArgField(
        cmd_name="--bottom-launcher-symbol",
        type_parser=argvalidators.Symbol.type_parser,
        default="█",
        metavar=argvalidators.Symbol.METAVAR,
        help="Symbol for the bottom launcher.",
    )  # type: ignore[assignment]
    "str : Symbol for the bottom launcher."

    left_launcher_symbol: str = ArgField(
        cmd_name="--left-launcher-symbol",
        type_parser=argvalidators.Symbol.type_parser,
        default="█",
        metavar=argvalidators.Symbol.METAVAR,
        help="Symbol for the left launcher.",
    )  # type: ignore[assignment]
    "str : Symbol for the left launcher."

    final_gradient_stops: tuple[Color, ...] = ArgField(
        cmd_name="--final-gradient-stops",
        type_parser=argvalidators.ColorArg.type_parser,
        nargs="+",
        default=(Color("FFA15C"), Color("44D492")),
        metavar=argvalidators.ColorArg.METAVAR,
        help="Space separated, unquoted, list of colors for the character gradient (applied from bottom to top). If only one color is provided, the characters will be displayed in that color.",
    )  # type: ignore[assignment]
    "tuple[Color, ...] : Tuple of colors for the final color gradient. If only one color is provided, the characters will be displayed in that color."

    final_gradient_steps: tuple[int, ...] | int = ArgField(
        cmd_name="--final-gradient-steps",
        type_parser=argvalidators.PositiveInt.type_parser,
        nargs="+",
        default=12,
        metavar=argvalidators.PositiveInt.METAVAR,
        help="Space separated, unquoted, list of the number of gradient steps to use. More steps will create a smoother and longer gradient animation.",
    )  # type: ignore[assignment]
    "tuple[int, ...] | int : Int or Tuple of ints for the number of gradient steps to use. More steps will create a smoother and longer gradient animation."

    final_gradient_direction: Gradient.Direction = ArgField(
        cmd_name="--final-gradient-direction",
        type_parser=argvalidators.GradientDirection.type_parser,
        default=Gradient.Direction.RADIAL,
        metavar=argvalidators.GradientDirection.METAVAR,
        help="Direction of the final gradient.",
    )  # type: ignore[assignment]
    "Gradient.Direction : Direction of the final gradient."

    launcher_movement_speed: float = ArgField(
        cmd_name="--launcher-movement-speed",
        type_parser=argvalidators.PositiveFloat.type_parser,
        default=0.5,
        metavar=argvalidators.PositiveFloat.METAVAR,
        help="Orbitting speed of the launchers.",
    )  # type: ignore[assignment]
    "float : Orbitting speed of the launchers."

    character_movement_speed: float = ArgField(
        cmd_name="--character-movement-speed",
        type_parser=argvalidators.PositiveFloat.type_parser,
        default=1,
        metavar=argvalidators.PositiveFloat.METAVAR,
        help="Speed of the launched characters.",
    )  # type: ignore[assignment]
    "float : Speed of the launched characters."

    volley_size: float = ArgField(
        cmd_name="--volley-size",
        type_parser=argvalidators.Ratio.type_parser,
        default=0.03,
        metavar=argvalidators.Ratio.METAVAR,
        help="Percent of total input characters each launcher will fire per volley. Lower limit of one character.",
    )  # type: ignore[assignment]
    "float : Percent of total input characters each launcher will fire per volley. Lower limit of one character."

    launch_delay: int = ArgField(
        cmd_name="--launch-delay",
        type_parser=argvalidators.NonNegativeInt.type_parser,
        default=50,
        metavar=argvalidators.NonNegativeInt.METAVAR,
        help="Number of animation ticks to wait between volleys of characters.",
    )  # type: ignore[assignment]
    "int : Number of animation ticks to wait between volleys of characters."

    character_easing: easing.EasingFunction = ArgField(
        cmd_name=["--character-easing"],
        default=easing.out_sine,
        type_parser=argvalidators.Ease.type_parser,
        metavar=argvalidators.Ease.METAVAR,
        help="Easing function to use for launched character movement.",
    )  # type: ignore[assignment]
    "easing.EasingFunction : Easing function to use for launched character movement."

    @classmethod
    def get_effect_class(cls):
        return OrbittingVolley

bottom_launcher_symbol: str = ArgField(cmd_name='--bottom-launcher-symbol', type_parser=argvalidators.Symbol.type_parser, default='█', metavar=argvalidators.Symbol.METAVAR, help='Symbol for the bottom launcher.') class-attribute instance-attribute

str : Symbol for the bottom launcher.

character_easing: easing.EasingFunction = ArgField(cmd_name=['--character-easing'], default=easing.out_sine, type_parser=argvalidators.Ease.type_parser, metavar=argvalidators.Ease.METAVAR, help='Easing function to use for launched character movement.') class-attribute instance-attribute

easing.EasingFunction : Easing function to use for launched character movement.

character_movement_speed: float = ArgField(cmd_name='--character-movement-speed', type_parser=argvalidators.PositiveFloat.type_parser, default=1, metavar=argvalidators.PositiveFloat.METAVAR, help='Speed of the launched characters.') class-attribute instance-attribute

float : Speed of the launched characters.

final_gradient_direction: Gradient.Direction = ArgField(cmd_name='--final-gradient-direction', type_parser=argvalidators.GradientDirection.type_parser, default=Gradient.Direction.RADIAL, metavar=argvalidators.GradientDirection.METAVAR, help='Direction of the final gradient.') class-attribute instance-attribute

Gradient.Direction : Direction of the final gradient.

final_gradient_steps: tuple[int, ...] | int = ArgField(cmd_name='--final-gradient-steps', type_parser=argvalidators.PositiveInt.type_parser, nargs='+', default=12, metavar=argvalidators.PositiveInt.METAVAR, help='Space separated, unquoted, list of the number of gradient steps to use. More steps will create a smoother and longer gradient animation.') class-attribute instance-attribute

tuple[int, ...] | int : Int or Tuple of ints for the number of gradient steps to use. More steps will create a smoother and longer gradient animation.

final_gradient_stops: tuple[Color, ...] = ArgField(cmd_name='--final-gradient-stops', type_parser=argvalidators.ColorArg.type_parser, nargs='+', default=(Color('FFA15C'), Color('44D492')), metavar=argvalidators.ColorArg.METAVAR, help='Space separated, unquoted, list of colors for the character gradient (applied from bottom to top). If only one color is provided, the characters will be displayed in that color.') class-attribute instance-attribute

tuple[Color, ...] : Tuple of colors for the final color gradient. If only one color is provided, the characters will be displayed in that color.

launch_delay: int = ArgField(cmd_name='--launch-delay', type_parser=argvalidators.NonNegativeInt.type_parser, default=50, metavar=argvalidators.NonNegativeInt.METAVAR, help='Number of animation ticks to wait between volleys of characters.') class-attribute instance-attribute

int : Number of animation ticks to wait between volleys of characters.

launcher_movement_speed: float = ArgField(cmd_name='--launcher-movement-speed', type_parser=argvalidators.PositiveFloat.type_parser, default=0.5, metavar=argvalidators.PositiveFloat.METAVAR, help='Orbitting speed of the launchers.') class-attribute instance-attribute

float : Orbitting speed of the launchers.

left_launcher_symbol: str = ArgField(cmd_name='--left-launcher-symbol', type_parser=argvalidators.Symbol.type_parser, default='█', metavar=argvalidators.Symbol.METAVAR, help='Symbol for the left launcher.') class-attribute instance-attribute

str : Symbol for the left launcher.

right_launcher_symbol: str = ArgField(cmd_name='--right-launcher-symbol', type_parser=argvalidators.Symbol.type_parser, default='█', metavar=argvalidators.Symbol.METAVAR, help='Symbol for the right launcher.') class-attribute instance-attribute

str : Symbol for the right launcher.

top_launcher_symbol: str = ArgField(cmd_name='--top-launcher-symbol', type_parser=argvalidators.Symbol.type_parser, default='█', metavar=argvalidators.Symbol.METAVAR, help='Symbol for the top launcher.') class-attribute instance-attribute

str : Symbol for the top launcher.

volley_size: float = ArgField(cmd_name='--volley-size', type_parser=argvalidators.Ratio.type_parser, default=0.03, metavar=argvalidators.Ratio.METAVAR, help='Percent of total input characters each launcher will fire per volley. Lower limit of one character.') class-attribute instance-attribute

float : Percent of total input characters each launcher will fire per volley. Lower limit of one character.