B
    ,Db              	   @   s  d Z dZy.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 nnX 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 ee eeeiZ'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   5G:\easytimepro\master/mysite/_utils\colorama\win32.py<lambda>       r   c              G   s   d S )Nr   )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_RECTZ_fields_r   r   r   r   r   r      s   
r   c             C   s   t  }t| t|}t|S )N)r   _GetConsoleScreenBufferInfor	   bool)handlecsbisuccessr   r   r   _winapi_test^   s    r$   c               C   s   t dd t D S )Nc             s   s   | ]}t |V  qd S )N)r$   ).0hr   r   r   	<genexpr>e   s    zwinapi_test.<locals>.<genexpr>)anyhandlesvaluesr   r   r   r   winapi_testd   s    r+   c             C   s    t |  }t }t|t|}|S )N)r)   r   r   r	   )	stream_idr!   r"   r#   r   r   r   GetConsoleScreenBufferInfog   s
    r-   c             C   s   t |  }t||S )N)r)   _SetConsoleTextAttribute)r,   Zattrsr!   r   r   r   SetConsoleTextAttributen   s    r/   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   r-   STDOUTr   r   r   r)   _SetConsoleCursorPosition)r,   ZpositionZadjustZadjusted_positionsrr!   r   r   r   SetConsoleCursorPositionr   s    
r4   c             C   sB   t |  }t| }t|}td}t||||t|}|jS )Nr   )r)   r   encoder   DWORD_FillConsoleOutputCharacterAr	   value)r,   charlengthstartr!   num_writtenr#   r   r   r   FillConsoleOutputCharacter   s    

r=   c             C   s:   t |  }t|}t|}td}t||||t|S )za FillConsoleOutputAttribute( hConsole, csbi.wAttributes, dwConSize, coordScreen, &cCharsWritten )r   )r)   r   r   r6   _FillConsoleOutputAttributer	   )r,   attrr:   r;   r!   Z	attributer<   r   r   r   FillConsoleOutputAttribute   s    


r@   c             C   s   t | S )N)_SetConsoleTitleW)titler   r   r   SetConsoleTitle   s    rC   )T)+r1   ZSTDERRZctypesr   ZWinDLLZwindllr   AttributeErrorImportErrorr/   r+   r	   r
   r   r   Z_COORDr   r   Zkernel32ZGetStdHandleZ_GetStdHandler6   ZargtypesZHANDLEZrestyper-   r   ZBOOLr.   r   r4   r2   ZFillConsoleOutputCharacterAr7   r@   r>   ZSetConsoleTitleWrA   ZLPCWSTRr)   r$   r=   rC   r   r   r   r   <module>   sn   






