o
    )1_                  	   @   s  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y1   dZdd Z	dd Z
Y dS w 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%_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S )ii    N)LibraryLoader)wintypesc                  G      d S N _r   r   0/usr/lib/python3/dist-packages/colorama/win32.py<lambda>       r
   c                  G   r   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LeftBottomRightr   )selfr   r   r	   __str__   s   z"CONSOLE_SCREEN_BUFFER_INFO.__str__N)
__name__
__module____qualname____doc__COORDr   WORD
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_test\   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>c   s    zwinapi_test.<locals>.<genexpr>)any_GetStdHandleSTDOUTSTDERRr   r   r   r	   winapi_testb   s   r3   c                 C   s    t | }t }t|t|}|S r   )r0   r   r&   r   )	stream_idr(   r)   r*   r   r   r	   GetConsoleScreenBufferInfof   s   r5   c                 C   s   t | }t||S r   )r0   _SetConsoleTextAttribute)r4   attrsr(   r   r   r	   SetConsoleTextAttributem   s   
r8   Tc                 C   sv   t | }|jdks|jdkrd S t |jd |jd }|r2ttj}| j|j7  _| j|j7  _t| }t	||S )Nr      )
r"   r   r   r5   r1   r   r   r   r0   _SetConsoleCursorPosition)r4   positionadjustadjusted_positionsrr(   r   r   r	   SetConsoleCursorPositionq   s   

r?   c                 C   sB   t | }t| }t|}td}t||||t|}|jS )Nr   )r0   r   encoder   DWORD_FillConsoleOutputCharacterAr   value)r4   charlengthstartr(   num_writtenr*   r   r   r	   FillConsoleOutputCharacter   s   

rH   c                 C   s:   t | }t|}t|}td}t||||t|S )za FillConsoleOutputAttribute( hConsole, csbi.wAttributes, dwConSize, coordScreen, &cCharsWritten )r   )r0   r   r#   rA   _FillConsoleOutputAttributer   )r4   attrrE   rF   r(   	attributerG   r   r   r	   FillConsoleOutputAttribute   s   


rL   c                 C   s   t | S r   )_SetConsoleTitleW)titler   r   r	   SetConsoleTitle   s   rO   )T)*r1   r2   ctypesr   WinDLLwindllr   AttributeErrorImportErrorr8   r3   r   r   r   r   _COORDr"   r   kernel32GetStdHandler0   rA   argtypesHANDLErestyper5   r&   BOOLr6   r#   r?   r:   FillConsoleOutputCharacterArB   rL   rI   SetConsoleTitleWrM   LPCWSTRr+   rH   rO   r   r   r   r	   <module>   s|   



