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 )iõÿÿÿiôÿÿÿé    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|   
ýÿþþþûûÿ


