U
    c%                  	   @   s  d Z dZdZz.ddlZddlmZ eejZddlmZ W n. ee	fk
rh   dZdd Z
d	d ZY nX dd
lmZmZmZmZ ejZG dd deZejjZejge_eje_ejjZejeege_eje_ejj
Zejejge_eje_ejjZ ejege _eje _ejj!Z"ejeejeeejge"_eje"_ejj#Z$ejejejeeejge$_eje$_ejj%Z&ej'ge&_eje&_ejj(Z)ejeejge)_eje)_ejj*Z+ejejge+_eje+_dd Z,dd Ze fddZdd Z
d"ddZdd Z-dd Z#dd Z.dd Z(d d! Z*dS )#ii       N)LibraryLoader)wintypesc                  G   s   d S N _r   r   2/tmp/pip-unpacked-wheel-sbtr0pc4/colorama/win32.py<lambda>       r
   c                  G   s   d S r   r   r   r   r   r	   r
      r   )byref	Structurec_charPOINTERc                   @   s>   e Zd ZdZdefdefdejfdejfdefgZdd Z	d	S )
CONSOLE_SCREEN_BUFFER_INFOzstruct in wincon.h.dwSizedwCursorPositionwAttributessrWindowdwMaximumWindowSizec                 C   sH   d| j j| j j| jj| jj| j| jj| jj| jj| jj	| j
j| j
jf S )Nz"(%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d))r   YXr   r   r   TopLeftZBottomZRightr   )selfr   r   r	   __str__    s          z"CONSOLE_SCREEN_BUFFER_INFO.__str__N)
__name__
__module____qualname____doc__COORDr   WORDZ
SMALL_RECT_fields_r   r   r   r   r	   r      s   r   c                 C   s   t  }t| t|}t|S r   )r   _GetConsoleScreenBufferInfor   bool)handlecsbisuccessr   r   r	   _winapi_testl   s     r(   c                   C   s   t dd ttttfD S )Nc                 s   s   | ]}t |V  qd S r   )r(   ).0hr   r   r	   	<genexpr>s   s     zwinapi_test.<locals>.<genexpr>)any_GetStdHandleSTDOUTSTDERRr   r   r   r	   winapi_testr   s    r0   c                 C   s    t | }t }t|t|}|S r   )r-   r   r#   r   )	stream_idr%   r&   r'   r   r   r	   GetConsoleScreenBufferInfov   s     r2   c                 C   s   t | }t||S r   )r-   _SetConsoleTextAttribute)r1   attrsr%   r   r   r	   SetConsoleTextAttribute}   s    r5   Tc                 C   sv   t | }|jdks|jdkr d S t |jd |jd }|rdttj}| j|j7  _| j|j7  _t| }t	||S )Nr      )
r    r   r   r2   r.   r   r   r   r-   _SetConsoleCursorPosition)r1   positionadjustadjusted_positionsrr%   r   r   r	   SetConsoleCursorPosition   s    
r<   c                 C   sB   t | }t| }t|}td}t||||t|}|jS )Nr   )r-   r   encoder   DWORD_FillConsoleOutputCharacterAr   value)r1   charlengthstartr%   num_writtenr'   r   r   r	   FillConsoleOutputCharacter   s    

    rE   c                 C   s:   t | }t|}t|}td}t||||t|S )za FillConsoleOutputAttribute( hConsole, csbi.wAttributes, dwConSize, coordScreen, &cCharsWritten )r   )r-   r   r!   r>   _FillConsoleOutputAttributer   )r1   attrrB   rC   r%   	attributerD   r   r   r	   FillConsoleOutputAttribute   s    


    rI   c                 C   s   t | S r   )_SetConsoleTitleW)titler   r   r	   SetConsoleTitle   s    rL   c                 C   s(   t  }t| t|}|s"t |jS r   )r   r>   _GetConsoleModer   ctypesWinErrorr@   r%   moder'   r   r   r	   GetConsoleMode   s
    rR   c                 C   s   t | |}|st d S r   )_SetConsoleModerN   rO   rP   r   r   r	   SetConsoleMode   s    
rT   )T)/r.   r/   Z"ENABLE_VIRTUAL_TERMINAL_PROCESSINGrN   r   ZWinDLLwindllr   AttributeErrorImportErrorr5   r0   r   r   r   r   Z_COORDr    r   kernel32ZGetStdHandler-   r>   argtypesZHANDLErestyper2   r#   ZBOOLr3   r!   r<   r7   ZFillConsoleOutputCharacterAr?   rI   rF   ZSetConsoleTitleWrJ   ZLPCWSTRrR   rM   rT   rS   r(   rE   rL   r   r   r   r	   <module>   s   



