o
    OZŽhò  ã                   @   s¸   d Z ddlZddlZddlZddlmZ ej ej 	e
¡¡ZdZdZdZdZdZd	efd
d„Zdd„ Zdejd	efdd„Zddd„ZedkrZeejƒdkrRejd ndZeeƒ dS dS )ax   pygame.examples.scroll

An zoomed image viewer that demonstrates Surface.scroll

This example shows a scrollable image that has a zoom factor of eight.
It uses the Surface.scroll function to shift the image on the display
surface. A clip rectangle protects a margin area. If called as a function,
the example accepts an optional image file path. If run as a program
it takes an optional file path command line argument. If no file
is provided a default image file is used.

When running click on a black triangle to move one pixel in the direction
the triangle points. Or use the arrow keys. Close the window or press ESC
to quit.
é    N)Úscaleé   é   é   é   é   Ú	directionc                 C   s  |\}}|t kr%|d |d f|d |d f|d |d f||d ff}n^|tkrF|d |d f|d |d f|d |d f||d ff}n=|tkrg|d |d f|d |d f|d |d f|d |ff}n|d |d f|d |d f|d |d f|d |ff}tj | ||¡ d S )Né   é   r   )ÚDIR_UPÚDIR_DOWNÚDIR_LEFTÚpgZdrawZpolygon)ZsurfÚcolorÚposnr   ÚxÚyZ	pointlist© r   úE/var/www/auris/lib/python3.10/site-packages/pygame/examples/scroll.pyÚ
draw_arrow"   s   :::8r   c                 C   s&   t | d||ƒ t ||ddf||ƒ d S )NÚblackr   )r   )ÚscreenÚregionsr   r   r   r   r   Úadd_arrow_button/   s   r   Úimagec           	      C   s   d }d }|   ¡ }| ¡ \}}|tkr2|jdkr1| jtd | dd¡ | ¡ }d|_| ¡ }t|_n}|t	kr_|j
|k r^| jt d | dd¡ | ¡ }d|_|j
|_
| ¡ }t|_|j
|_
nP|tkrƒ|jdkr‚| jtd | dd¡ | ¡ }d|_| ¡ }t|_n,|tkr¯|j|k r¯| jt d | dd¡ | ¡ }d|_|j|_| ¡ }t|_|j|_|d urÌ|d urÎt| |¡|j|  |¡ƒ tj |¡ d S d S d S )Nr   )Zdyéÿÿÿÿr   )Zdx)Úget_clipÚget_sizer   ÚtopÚscrollÚzoom_factorZmove_ipÚcopyÚhr   Úbottomr   ÚleftÚwÚ	DIR_RIGHTÚrightr   Ú
subsurfaceÚsizer   ÚdisplayÚupdate)	r   r   r   Ú	view_rectZsrc_rectZdst_rectZzoom_view_rectÚimage_wÚimage_hr   r   r   Úscroll_view4   s^   
€
€
€
þr/   c              
   C   sh  | d u rt j tdd¡} d}d}|d t |d t f}|d d|  |d d|  f}t d¡}t ¡  tj 	d	¡ tj
 ¡ \}}tj
 d
d¡ z]tj |¡}| |¡ tj ¡  tj | ¡ ¡ }	|	 ¡ \}
}|
|d k su||d k rtdƒ td| ƒ W tj
 ||¡ t ¡  d S t |dd¡}t||d|d d ftƒ t|||d d |d d ftƒ t|||d d dftƒ t|||d d |d d ftƒ tj ¡  | |||d |d f¡ t dd|d |d ¡}t|	 |¡|| |  ¡ ¡ƒ tj ¡  d }tj! "¡ }| #¡  d}|rštj$ %¡ }tj
 &¡ }|tj' r(t(||	t|ƒ |tj) r5t(||	t|ƒ |tj* rBt(||	t|ƒ |tj+ rOt(||	t|ƒ |D ](}|j,tj-kr^d}qQ|j,tj.kro| /|j0¡d }qQ|j,tj1krxd }qQ|r„t(||	||ƒ | #d¡ |sW tj
 ||¡ t ¡  d S W tj
 ||¡ t ¡  d S tj
 ||¡ t ¡  w )NÚdatazarraydemo.bmpéP   )r
   é   r   r   r   ZbeigezScroll Exampleiô  r
   z/The source image is too small for this example.z'A %i by %i or larger image is required.é   é(   TF)2ÚosÚpathÚjoinÚmain_dirr    r   ÚColorÚinitr*   Zset_captionÚkeyZ
get_repeatZ
set_repeatÚset_modeÚfillÚflipr   ÚloadÚconvertr   ÚprintÚquitÚSurfacer   r   r&   r   r   Zset_clipZRectr   r(   r   ÚtimeZClockZtickÚeventÚgetZget_pressedZK_UPr/   ZK_DOWNZK_LEFTZK_RIGHTÚtypeZQUITZMOUSEBUTTONDOWNZget_atÚposZMOUSEBUTTONUP)Ú
image_fileÚmarginZ	view_sizeZzoom_view_sizeZwin_sizeÚbackground_colorZold_k_delayZold_k_intervalr   r   r-   r.   r   r,   r   ÚclockZgoingÚeventsÚkeysÚer   r   r   Úmainc   s–    


AÀÿÿ
ý



€
â!Þ!ÿ
rP   Ú__main__)N)Ú__doc__Úsysr5   Zpygamer   Zpygame.transformr   r6   ÚdirnameÚabspathÚ__file__r8   r   r   r   r&   r    Úintr   r   rC   r/   rP   Ú__name__ÚlenÚargvrI   r   r   r   r   Ú<module>   s&   
/`þ