
    \
j{                         d dl T ddlmZmZmZmZ d dlmZmZm	Z	 d dlm
Z
mZ  G d de          Z G d d	e          Z G d
 de          Z G d de          ZdS )    )*   )DisplayScreen
ScreenModeCanvas)CGDirectDisplayIDquartzcf)cfstring_to_stringcfarray_to_listc                       e Zd Zd ZdS )CocoaDisplayc                      d}t          |z              }t                      }t          j        ||t	          |                      fdt          |          d |j                 D             S )N   c                 0    g | ]}t          |          S  )CocoaScreen).0	displayIDselfs     M/DATA/AppData/hermes/venv/lib/python3.11/site-packages/pyglet/canvas/cocoa.py
<listcomp>z,CocoaDisplay.get_screens.<locals>.<listcomp>4   s#    aaaD),,aaa    )r	   c_uint32r
   CGGetActiveDisplayListbyreflistvalue)r   maxDisplaysactiveDisplayscounts   `   r   get_screenszCocoaDisplay.get_screens/   sm    +k9<<

%k>5<<PPPaaaad>>R>RS_TYT_S_>`aaaar   N)__name__
__module____qualname__r#   r   r   r   r   r   -   s(        b b b b br   r   c                   H     e Zd Z fdZd Zd Zd Zd Zd Zd Z	d Z
 xZS )	r   c           	         t          j        |          }|j        j        |j        j        }}|j        j        |j        j        }}t          t          |           
                    |t          |          t          |          t          |          t          |                     || _        |                                 | _        d S N)r
   CGDisplayBoundsoriginxysizewidthheightsuperr   __init__int_cg_display_idget_mode_default_mode)	r   displayr   boundsr,   r-   r/   r0   	__class__s	           r   r2   zCocoaScreen.__init__9   s    '	22 }1)6;+=vk4  ))'3q663q663u::sSY{{[[['!]]__r   c                 X    t          | j        | d           }|                    |          S r)   )CocoaCanvasr7   match)r   templatecanvass      r   get_matching_configsz CocoaScreen.get_matching_configs[   s'    T\466~~f%%%r   c                      t          t          j         j        d                     } fdt	          |          D             }t          j        |           |S )Nc                 0    g | ]}t          |          S r   )CocoaScreenMode)r   cgmoder   s     r   r   z)CocoaScreen.get_modes.<locals>.<listcomp>a   s#    VVV6v..VVVr   )c_void_pr
   CGDisplayCopyAllDisplayModesr4   r   r   	CFRelease)r   cgmodesmodess   `  r   	get_modeszCocoaScreen.get_modes_   sW    6>t?RTXYYZZVVVV_W=U=UVVV
Wr   c                     t          t          j        | j                            }t	          | |          }t          j        |           |S r)   )rD   r
   CGDisplayCopyDisplayModer4   rB   CGDisplayModeRelease)r   rC   modes      r   r5   zCocoaScreen.get_modee   sB    &9$:MNNOOtV,,#F+++r   c                     |j         | u sJ t          j        | j                   t          j        | j        |j        d            |j        | _        |j        | _        d S r)   )screenr
   CGDisplayCapturer4   CGDisplaySetDisplayModerC   r/   r0   )r   rM   s     r   set_modezCocoaScreen.set_modek   sY    {d"""" 3444&t':DKNNNZ
kr   c                      g d}                                  t           fd|D                       rd S t          j         j         j        j        d            t          j         j                   d S )N)r/   r0   depthratec              3   f   K   | ]+}t          |          t          j        |          k    V  ,d S r)   )getattrr6   )r   attrcurrent_moder   s     r   	<genexpr>z+CocoaScreen.restore_mode.<locals>.<genexpr>u   sS       $ $ |T**gd6H$.O.OO $ $ $ $ $ $r   )r5   allr
   rQ   r4   r6   rC   CGDisplayRelease)r   match_attrsrY   s   ` @r   restore_modezCocoaScreen.restore_moder   s    :::}} $ $ $ $ $"$ $ $ $ $ 	 F&t':D<N<UW[\\\ 344444r   c                 8    t          j        | j                   d S r)   )r
   rP   r4   r   s    r   capture_displayzCocoaScreen.capture_display|        344444r   c                 8    t          j        | j                   d S r)   )r
   r\   r4   r`   s    r   release_displayzCocoaScreen.release_display   rb   r   )r$   r%   r&   r2   r?   rI   r5   rR   r^   ra   rd   __classcell__r9   s   @r   r   r   7   s        
- 
- 
- 
- 
-D& & &    " " "5 5 55 5 55 5 5 5 5 5 5r   r   c                   *     e Zd Z fdZd Zd Z xZS )rB   c                    t          t          |                               |           t          j        |           || _        t          t          j        |                    | _        t          t          j	        |                    | _
        |                     |          | _        t          j        |          | _        d S r)   )r1   rB   r2   r
   CGDisplayModeRetainrC   r3   CGDisplayModeGetWidthr/   CGDisplayModeGetHeightr0   getBitsPerPixelrT   CGDisplayModeGetRefreshRaterU   )r   rO   rC   r9   s      r   r2   zCocoaScreenMode.__init__   s    ot$$--f555"6***5f==>>
&7??@@))&11
6v>>			r   c                 F    t          j        | j                   d | _        d S r)   )r
   rL   rC   r`   s    r   __del__zCocoaScreenMode.__del__   s     #DK000r   c                     d}d}d}t          t          j        |                    }t          |          }t	          j        |           ||k    rdS ||k    rdS ||k    rdS dS )NPPPPPPPPz-RRRRRGGGGGBBBBBz --------RRRRRRRRGGGGGGGGBBBBBBBB          r   )rD   r
   CGDisplayModeCopyPixelEncodingr   r   rF   )r   rC   IO8BitIndexedPixelsIO16BitDirectPixelsIO32BitDirectPixelscfstringpixelEncodings          r   rl   zCocoaScreenMode.getBitsPerPixel   s~    (0@FA&IIJJ*844
X/////////qr   )r$   r%   r&   r2   ro   rl   re   rf   s   @r   rB   rB      sV        ? ? ? ? ?        r   rB   c                        e Zd Z fdZ xZS )r;   c                 t    t          t          |                               |           || _        || _        d S r)   )r1   r;   r2   rO   nsview)r   r7   rO   r}   r9   s       r   r2   zCocoaCanvas.__init__   s3    k4  ))'222r   )r$   r%   r&   r2   re   rf   s   @r   r;   r;      s8                r   r;   N)ctypesbaser   r   r   r   pyglet.libs.darwin.cocoapyr	   r
   r   r   r   r   r   rB   r;   r   r   r   <module>r      s1  J     5 5 5 5 5 5 5 5 5 5 5 5 D D D D D D D D D D J J J J J J J Jb b b b b7 b b bI5 I5 I5 I5 I5& I5 I5 I5X    j   >    &     r   