U
    \g%i                     @   sv   zd dl mZ W n ek
r,   dd ZY nX ddlmZ G dd deZG dd	 d	eZG d
d deZdd Z	dS )    )get_osfhandlec                 C   s   t dd S )NzThis isn't windows!)OSError)_ r   O/var/www/html/api-medvista/venv/lib/python3.8/site-packages/colorama/winterm.pyr      s    r      )win32c                   @   s,   e Zd ZdZdZdZdZdZdZdZ	dZ
d	S )
WinColorr   r                     N)__name__
__module____qualname__ZBLACKZBLUEZGREENZCYANZREDZMAGENTAZYELLOWZGREYr   r   r   r   r	      s   r	   c                   @   s   e Zd ZdZdZdZdS )WinStyler         N)r   r   r   ZNORMALBRIGHTBRIGHT_BACKGROUNDr   r   r   r   r      s   r   c                   @   s   e Zd Zdd Zdd Zdd Zd dd	Zd!ddZd"ddZd#ddZ	d$ddZ
dd Zd%ddZd&ddZd'ddZd(ddZdd ZdS ))WinTermc                 C   s>   t t jj| _| | j | j| _| j| _	| j
| _d| _d S )Nr   )r   GetConsoleScreenBufferInfoSTDOUTZwAttributes_default	set_attrs_fore_default_fore_back_default_back_style_default_style_lightselfr   r   r   __init__   s    zWinTerm.__init__c                 C   s   | j | jd  | j| jB  S )N   )r   r   r!   r#   r$   r   r   r   	get_attrs*   s    zWinTerm.get_attrsc                 C   s.   |d@ | _ |d? d@ | _|tjtjB @ | _d S )Nr   r   )r   r   r   r   r   r!   )r%   valuer   r   r   r   -   s    
zWinTerm.set_attrsNc                 C   s$   |  | j | j| jd d| _d S )N)attrsr   )r   r   set_consoler#   )r%   	on_stderrr   r   r   	reset_all2   s    zWinTerm.reset_allFc                 C   sL   |d kr| j }|| _|r*|  jtjO  _n|  jtj M  _| j|d d S N)r,   )r   r   r#   r   r   r+   )r%   forelightr,   r   r   r   r/   7   s    zWinTerm.forec                 C   sL   |d kr| j }|| _|r*|  jtjO  _n|  jtj M  _| j|d d S r.   )r    r   r#   r   r   r+   )r%   backr0   r,   r   r   r   r1   B   s    zWinTerm.backc                 C   s$   |d kr| j }|| _| j|d d S r.   )r"   r!   r+   )r%   styler,   r   r   r   r2   M   s    zWinTerm.stylec                 C   s0   |d kr|   }tj}|r tj}t|| d S N)r(   r   r   STDERRZSetConsoleTextAttribute)r%   r*   r,   handler   r   r   r+   S   s    zWinTerm.set_consolec                 C   s,   t |j}| jd7  _| jd7  _|S )Nr   )r   r   dwCursorPositionXY)r%   r5   positionr   r   r   get_position[   s    zWinTerm.get_positionc                 C   s,   |d krd S t j}|rt j}t || d S r3   )r   r   r4   SetConsoleCursorPosition)r%   r9   r,   r5   r   r   r   set_cursor_positionc   s    zWinTerm.set_cursor_positionc                 C   sB   t j}|rt j}| |}|j| |j| f}t j||dd d S )NF)adjust)r   r   r4   r:   r8   r7   r;   )r%   xyr,   r5   r9   Zadjusted_positionr   r   r   cursor_adjustm   s    
zWinTerm.cursor_adjustr   c           	      C   s   t j}|rt j}t |}|jj|jj }|jj|jj |jj }|dkrZ|j}|| }n8|dkrtt dd}|}n|dkrt dd}|}nd S t 	|d|| t 
||  || |dkrt |d d S )Nr   r   r
    )r   r   )r   r   r4   r   dwSizer7   r8   r6   COORDFillConsoleOutputCharacterFillConsoleOutputAttributer(   r;   )	r%   moder,   r5   csbiZcells_in_screenZcells_before_cursor
from_coordcells_to_eraser   r   r   erase_screenu   s(    

zWinTerm.erase_screenc                 C   s   t j}|rt j}t |}|dkr:|j}|jj|jj }nH|dkr\t d|jj}|jj}n&|dkr~t d|jj}|jj}nd S t 	|d|| t 
||  || d S )Nr   r   r
   rA   )r   r   r4   r   r6   rB   r7   rC   r8   rD   rE   r(   )r%   rF   r,   r5   rG   rH   rI   r   r   r   
erase_line   s     


zWinTerm.erase_linec                 C   s   t | d S r3   )r   ZSetConsoleTitle)r%   titler   r   r   	set_title   s    zWinTerm.set_title)N)NFF)NFF)NF)NF)NF)F)r   F)r   F)r   r   r   r&   r(   r   r-   r/   r1   r2   r+   r:   r<   r@   rJ   rK   rM   r   r   r   r   r      s   








 
r   c              	   C   sx   t jd kst  sdS zBt| }t |}t ||t jB  t |}|t j@ rVW dS W n ttfk
rr   Y dS X d S )NFT)	r   windllZwinapi_testr   ZGetConsoleModeZSetConsoleModeZ"ENABLE_VIRTUAL_TERMINAL_PROCESSINGr   	TypeError)fdr5   rF   r   r   r   enable_vt_processing   s    



rQ   N)
msvcrtr   ImportError r   objectr	   r   r   rQ   r   r   r   r   <module>   s    