U
    祡c+                     @   sf   d dl mZmZ ddlmZ ddlmZ ddlmZ erTddl	m
Z
mZmZmZmZ G dd dZd	S )
    )OptionalTYPE_CHECKING   )Segment)	StyleType)	loop_last)ConsoleConsoleOptionsRenderResultRenderableTypeGroupc                   @   sL   e Zd ZU dZded< ddddee edddd	Zd
dddddZ	dS )ScreenzA renderable that fills the terminal screen and crops excess.

    Args:
        renderable (RenderableType): Child renderable.
        style (StyleType, optional): Optional background style. Defaults to None.
    r   
renderableNF)styleapplication_mode)renderablesr   r   returnc                G   s&   ddl m} || | _|| _|| _d S )Nr   )r   )Zrich.consoler   r   r   r   )selfr   r   r   r    r   //tmp/pip-unpacked-wheel-qkhzhrww/rich/screen.py__init__   s    
zScreen.__init__r   r	   r
   )consoleoptionsr   c                 c   s   |j \}}| jr|| jnd }|j||d}|j| jp:d||dd}tj||||d}| jrftdnt	 }t
|D ]\}	}
|
E d H  |	sv|V  qvd S )N)widthheight T)r   pad)r   z
)sizer   Z	get_styleupdateZrender_linesr   r   Z	set_shaper   liner   )r   r   r   r   r   r   Zrender_optionslinesnew_linelastr   r   r   r   __rich_console__(   s    
   
zScreen.__rich_console__)
__name__
__module____qualname____doc____annotations__r   r   boolr   r#   r   r   r   r   r      s   
 r   N)typingr   r   segmentr   r   r   Z_loopr   r   r   r	   r
   r   r   r   r   r   r   r   <module>   s   	