U
    }Ha                  	   @   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k
rd   dZdd Z	dd Z
Y nZX 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   s   d S N _r   r   2/tmp/pip-unpacked-wheel-25st9mmh/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_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    r/   c                 C   s    t | }t }t|t|}|S r   )r,   r   r"   r   )	stream_idr$   r%   r&   r   r   r   GetConsoleScreenBufferInfof   s     r1   c                 C   s   t | }t||S r   )r,   _SetConsoleTextAttribute)r0   attrsr$   r   r   r   SetConsoleTextAttributem   s    r4   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   r1   r-   r   r   r   r,   _SetConsoleCursorPosition)r0   positionadjustadjusted_positionsrr$   r   r   r   SetConsoleCursorPositionq   s    
r;   c                 C   sB   t | }t| }t|}td}t||||t|}|jS )Nr   )r,   r   encoder   DWORD_FillConsoleOutputCharacterAr   value)r0   charlengthstartr$   num_writtenr&   r   r   r   FillConsoleOutputCharacter   s    

    rD   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   )r0   attrrA   rB   r$   	attributerC   r   r   r   FillConsoleOutputAttribute   s    


    rH   c                 C   s   t | S r   )_SetConsoleTitleW)titler   r   r   SetConsoleTitle   s    rK   )T)*r-   r.   ctypesr   ZWinDLLwindllr   AttributeErrorImportErrorr4   r/   r   r   r   r   Z_COORDr   r   kernel32ZGetStdHandler,   r=   argtypesZHANDLErestyper1   r"   ZBOOLr2   r    r;   r6   ZFillConsoleOutputCharacterAr>   rH   rE   ZSetConsoleTitleWrI   ZLPCWSTRr'   rD   rK   r   r   r   r   <module>   sx   



