Ë
    æØjj[  ã                   ó†  — d Z ddlZddlZddlmZ ddlmZmZmZm	Z	 ddl
Z
	 ddlmZmZmZ dZ	 ddlZg d¢Zg d	¢d
dgdgddgdœZdZdZdZ G d„ de«      Z G d„ de«      Z G d„ d«      Z G d„ de«      Z G d„ de«      Z G d„ de«      Z G d„ d e«      Zy# e$ r dZY Œsw xY w# e$ r 	 ddlZn# e$ r dZY nw xY wY ŒŒw xY w)!zÒ
    pygments.formatters.img
    ~~~~~~~~~~~~~~~~~~~~~~~

    Formatter for Pixmap output.

    :copyright: Copyright 2006-present by the Pygments team, see AUTHORS.
    :license: BSD, see LICENSE for details.
é    N)Ú	Formatter)Úget_bool_optÚget_int_optÚget_list_optÚget_choice_opt)ÚImageÚ	ImageDrawÚ	ImageFontTF)ÚImageFormatterÚGifImageFormatterÚJpgImageFormatterÚBmpImageFormatter)Ú ÚRomanÚBookÚNormalÚRegularÚMediumÚObliqueÚItalicÚBoldzBold ObliquezBold Italic)ÚNORMALÚITALICÚBOLDÚ
BOLDITALICzDejaVu Sans MonozCourier NewÚMenloc                   ó   — e Zd ZdZy)ÚPilNotAvailablez,When Python imaging library is not availableN©Ú__name__Ú
__module__Ú__qualname__Ú__doc__© ó    úY/opt/eval-harness/bench_task/venv/lib/python3.12/site-packages/pygments/formatters/img.pyr   r   4   s   „ Ú6r%   r   c                   ó   — e Zd ZdZy)ÚFontNotFoundz(When there are no usable fonts specifiedNr   r$   r%   r&   r(   r(   8   s   „ Ú2r%   r(   c                   óV   — e Zd ZdZdd„Zd„ Zd„ Zd„ Zd„ Zdd„Z	d„ Z
d	„ Zd
„ Zd„ Zd„ Zy)ÚFontManagerz>
    Manages a set of fonts: normal, italic, bold, etc...
    c                 óR  — || _         || _        i | _        d | _        d| _        t        |d«      st        j                  j                  |«      rBt        j                  || j                  «      }d| _        t        D ]  }|| j                  |<   Œ y t        j                  j                  d«      r|st        | _         | j!                  «        y t        j                  j                  d«      r|st"        | _         | j%                  «        y |st&        | _         | j)                  «        y )NFÚreadTÚwinÚdarwin)Ú	font_nameÚ	font_sizeÚfontsÚencodingÚvariableÚhasattrÚosÚpathÚisfiler
   ÚtruetypeÚSTYLESÚsysÚplatformÚ
startswithÚDEFAULT_FONT_NAME_WINÚ_create_winÚDEFAULT_FONT_NAME_MACÚ_create_macÚDEFAULT_FONT_NAME_NIXÚ_create_nix)Úselfr/   r0   ÚfontÚstyles        r&   Ú__init__zFontManager.__init__A   sã   € Ø"ˆŒØ"ˆŒØˆŒ
ØˆŒØˆŒÜ�9˜fÔ%¬¯©¯©¸	Ô)BÜ×%Ñ% i°·±Ó@ˆDØ ˆDŒMÜò )�Ø$(�—
‘
˜5Ò!ð)ð ä�<‰<×"Ñ" 5Ô)ÙÜ!6�”Ø×ÑÕÜ�\‰\×$Ñ$ XÔ.ÙÜ!6�”Ø×ÑÕáÜ!6�”Ø×ÑÕr%   c                 ó^  — t        j                  d|› d|› �dgt         j                  d ¬«      }|j                  «       \  }}|j                  dk(  r]|j                  «       }|D ]G  }|j                  d«      rŒ|j                  «       j                  «       j                  d«      }|sŒE|c S  y y )Nzfc-listz:style=Úfile)ÚstdoutÚstderrr   s   Fontconfig warning:ú:)	Ú
subprocessÚPopenÚPIPEÚcommunicateÚ
returncodeÚ
splitlinesr<   ÚdecodeÚstrip)	rC   ÚnamerE   ÚprocrI   Ú_ÚlinesÚliner6   s	            r&   Ú_get_nix_font_pathzFontManager._get_nix_font_path\   s¬   € Ü×Ñ ¨t¨f°G¸E¸7Ð,CÀVÐ LÜ'1§¡¸tôEˆà×$Ñ$Ó&‰	ˆ�Ø�?‰?˜aÒØ×%Ñ%Ó'ˆEØò  �Ø—?‘?Ð#9Ô:ØØ—{‘{“}×*Ñ*Ó,×2Ñ2°3Ó7�ÚØ’Kð ð ð  r%   c                 ó,  — t         d   D ]O  }| j                  | j                  |«      }|€Œ"t        j                  || j
                  «      | j                  d<    n t        d| j                  › d�«      ‚dD ]›  }t         |   D ]O  }| j                  | j                  |«      }|€Œ"t        j                  || j
                  «      | j                  |<    Œ] |dk(  r| j                  d   | j                  |<   Œ€| j                  d   | j                  |<   Œ� y )Nr   úNo usable fonts named: "ú"©r   r   r   r   r   )r9   rY   r/   r
   r8   r0   r1   r(   )rC   rT   r6   rE   Ú	stylenames        r&   rB   zFontManager._create_nixj   s
  € Ü˜8Ñ$ò 	MˆDØ×*Ñ*¨4¯>©>¸4Ó@ˆDØÑÜ'0×'9Ñ'9¸$ÀÇÁÓ'O�—
‘
˜8Ñ$Ùð		Mô Ð!9¸$¿.¹.Ð9IÈÐKÓLÐLØ5ò 
	=ˆEÜ# E™]ò 	=�	Ø×.Ñ.¨t¯~©~¸yÓI�ØÑ#Ü(1×(:Ñ(:¸4ÀÇÁÓ(P�D—J‘J˜uÑ%Ùð		=ð ˜LÒ(Ø(,¯
©
°6Ñ(:�D—J‘J˜uÒ%à(,¯
©
°8Ñ(<�D—J‘J˜uÒ%ñ
	=r%   c                 óh   — |j                  |dz   |z   j                  «       j                  «       «      S )Nú )ÚgetrS   Úlower)rC   Úfont_maprT   rE   s       r&   Ú_get_mac_font_pathzFontManager._get_mac_font_path~   s,   € Ø�|‰|˜T C™Z¨%Ñ/×6Ñ6Ó8×>Ñ>Ó@ÓAÐAr%   c                 ó  ‡— i }t         j                  j                  t        j                  d«      d«      ddfD ]/  Š|j	                  ˆfd„t        j
                  ‰«      D «       «       Œ1 t        d   D ]P  }| j                  || j                  |«      }|€Œ#t        j                  || j                  «      | j                  d<    n t        d| j                  › d�«      ‚d	D ]œ  }t        |   D ]P  }| j                  || j                  |«      }|€Œ#t        j                  || j                  «      | j                  |<    Œ^ |d
k(  r| j                  d   | j                  |<   Œ�| j                  d   | j                  |<   Œž y )NÚHOMEzLibrary/Fonts/z/Library/Fonts/z/System/Library/Fonts/c              3   ó  •K  — | ]~  \  }}}|D ]s  }|j                  «       j                  d «      rRt        j                  j	                  |«      d   j                  «       t        j                  j                  ‰|«      f–— Œu Œ€ y­w))ÚttfÚttcr   N)rb   Úendswithr5   r6   ÚsplitextÚjoin)Ú.0rV   ÚfilesÚfÚfont_dirs       €r&   ú	<genexpr>z*FontManager._create_mac.<locals>.<genexpr>…   sy   øè ø€ ò 7á�A�q˜%Øò7ð Ø—7‘7“9×%Ñ% nÔ5ô —‘×!Ñ! !Ó$ QÑ'×-Ñ-Ó/´·±·±¸hÈÓ1JÔKð7ØKñ7ùs   ƒBBr   r[   r\   r]   r   r   )r5   r6   rl   ÚgetenvÚupdateÚwalkr9   rd   r/   r
   r8   r0   r1   r(   )rC   rc   rT   r6   rE   r^   rp   s         @r&   r@   zFontManager._create_mac�   sl  ø€ ØˆÜŸ™Ÿ™¤b§i¡i°Ó&7Ð9IÓJØ*Ð,DðFò 	7ˆHà�O‰Oó 7ä#%§7¡7¨8Ó#4ô7õ 7ð	7ô ˜8Ñ$ò 	MˆDØ×*Ñ*¨8°T·^±^ÀTÓJˆDØÑÜ'0×'9Ñ'9¸$ÀÇÁÓ'O�—
‘
˜8Ñ$Ùð		Mô Ð!9¸$¿.¹.Ð9IÈÐKÓLÐLØ5ò 
	=ˆEÜ# E™]ò 	=�	Ø×.Ñ.¨x¸¿¹ÈÓS�ØÑ#Ü(1×(:Ñ(:¸4ÀÇÁÓ(P�D—J‘J˜uÑ%Ùð		=ð ˜LÒ(Ø(,¯
©
°6Ñ(:�D—J‘J˜uÒ%à(,¯
©
°8Ñ(<�D—J‘J˜uÒ%ñ
	=r%   c                 óÞ   — dD ]B  }|D ];  }	 dj                  ||xr d|z   |«      }t        j                  ||«      \  }}	|c c S  ŒD |rt	        d|› d|d   › d�«      ‚y # t        $ r Y Œcw xY w)N)r   z (TrueType)z{}{}{}r`   zFont z (r   z) not found in registry)ÚformatÚ_winregÚQueryValueExÚOSErrorr(   )
rC   ÚkeyÚbasenameÚstylesÚfailÚsuffixrE   ÚvalnameÚvalrV   s
             r&   Ú_lookup_winzFontManager._lookup_winž   s–   € Ø)ò 	ˆFØò �ðØ&Ÿo™o¨h¸Ò8KÀ#ÀeÁ)ÈVÓT�GÜ$×1Ñ1°#°wÓ?‘F�C˜Ø”Jñ	ð	ñ Ü" U¨8¨*°B°v¸a±y°kÐAXÐ#YÓZÐZØøô ò Ùðús   Œ4A Á 	A,Á+A,c                 ó¢  — d }t         j                  dft         j                  dft         j                  dft         j                  dfg}|D �]  }	 t        j                  |Ž }	 | j	                  || j
                  t        d   d«      }t        j                  || j                  «      | j                  d<   dD ]”  }| j	                  || j
                  t        |   «      }|r.t        j                  || j                  «      | j                  |<   ŒW|dk(  r| j                  d   | j                  |<   Œy| j                  d   | j                  |<   Œ– 	 t        j                  |«        y  |r|‚t        d«      ‚# t        $ r}|}Y d }~nd }~ww xY w	 t        j                  |«       n# t        j                  |«       w xY w�Œv# t        $ r Y �Œ‚w xY w)	Nz2Software\Microsoft\Windows NT\CurrentVersion\Fontsz/Software\Microsoft\Windows\CurrentVersion\Fontsr   Tr]   r   r   z$Can't open Windows font registry key)rw   ÚHKEY_CURRENT_USERÚHKEY_LOCAL_MACHINEÚOpenKeyr�   r/   r9   r
   r8   r0   r1   ÚCloseKeyr(   ry   )rC   ÚlookuperrorÚkeynamesÚkeynamerz   r6   rE   Úerrs           r&   r>   zFontManager._create_win¬   s²  € ØˆÜ×/Ñ/Ð1fÐgÜ×/Ñ/Ð1cÐdÜ×0Ñ0Ð2gÐhÜ×0Ñ0Ð2dÐeðhˆð  ó 	HˆGðÜ—o‘o wÐ/�ð*Ø×+Ñ+¨C°·±ÄÈÑAQÐSWÓX�DÜ+4×+=Ñ+=¸dÀDÇNÁNÓ+S�D—J‘J˜xÑ(Ø!Aò I˜Ø#×/Ñ/°°T·^±^ÄVÈEÁ]ÓS˜ÙÜ09×0BÑ0BÀ4ÈÏÉÓ0X˜DŸJ™J uÒ-à$¨Ò4Ø48·J±J¸vÑ4F §
¡
¨5Ò 1à48·J±J¸xÑ4H §
¡
¨5Ò 1ðIð ô ×$Ñ$ SÖ)ð'	Hñ: Ø!Ð!ÜÐFÓGÐGøô $ò &Ø"%•Kûð&úØä×$Ñ$ SÕ)ø”G×$Ñ$ SÕ)úÑ)øÜò ÚðúsO   ÁGÁ#C+E6ÅGÅ6	FÅ?FÆF%ÆFÆF%ÆGÆ%F<Æ<GÇ	GÇGc                 ó$   — | j                  d«      S )z)
        Get the character size.
        ÚM)Úget_text_size©rC   s    r&   Úget_char_sizezFontManager.get_char_sizeÓ   s   € ð ×!Ñ! #Ó&Ð&r%   c                 ó‚   — | j                   d   }t        |d«      r|j                  |«      dd S |j                  |«      S )z4
        Get the text size (width, height).
        r   Úgetbboxé   é   )r1   r4   r‘   Úgetsize)rC   ÚtextrD   s      r&   r�   zFontManager.get_text_sizeÙ   sA   € ð �z‰z˜(Ñ#ˆÜ�4˜Ô#Ø—<‘< Ó% a¨Ð*Ð*à—<‘< Ó%Ð%r%   c                 ór  — |r.|r,| j                   r| j                  d«      S | j                  d   S |r,| j                   r| j                  d«      S | j                  d   S |r,| j                   r| j                  d«      S | j                  d   S | j                   r| j                  d«      S | j                  d   S )z>
        Get the font based on bold and italic flags.
        r   r   r   r   )r3   Ú	get_styler1   )rC   ÚboldÚobliques      r&   Úget_fontzFontManager.get_fontã   s£   € ñ ‘GØ�}Š}Ø—~‘~ lÓ3Ð3à—:‘:˜lÑ+Ð+ÙØ�}Š}Ø—~‘~ fÓ-Ð-à—:‘:˜fÑ%Ð%ÙØ�}Š}Ø—~‘~ hÓ/Ð/à—:‘:˜hÑ'Ð'à�}Š}Ø—~‘~ hÓ/Ð/à—:‘:˜hÑ'Ð'r%   c                 ó¤   — | j                   |   }t        |   D ]  }	 |j                  |«       |c S  |S # t        $ r Y Œ't        $ r |cY c S w xY w)z}
        Get the specified style of the font if it is a variable font.
        If not found, return the normal font.
        )r1   r9   Úset_variation_by_nameÚ
ValueErrorry   )rC   rE   rD   Ú
style_names       r&   r—   zFontManager.get_styleü   se   € ð
 �z‰z˜%Ñ ˆÜ  ™-ò 	ˆJðØ×*Ñ*¨:Ô6Ø’ð	ð ˆøô ò ÙÜò Ø”ðús   �5µ	AÁ 
AÁAN)é   )F)r    r!   r"   r#   rF   rY   rB   rd   r@   r�   r>   r�   r�   rš   r—   r$   r%   r&   r*   r*   <   sA   „ ñóò6ò=ò(Bò=ó:ò%HòN'ò&ò(ó2r%   r*   c                   ó˜   — e Zd ZdZdZg d¢ZdgZdZdZd„ Z	dd„Z
d	„ Zd
„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zy)r   a;
  
    Create a PNG image from source code. This uses the Python Imaging Library to
    generate a pixmap from the source code.

    .. versionadded:: 0.10

    Additional options accepted:

    `image_format`
        An image format to output to that is recognised by PIL, these include:

        * "PNG" (default)
        * "JPEG"
        * "BMP"
        * "GIF"

    `line_pad`
        The extra spacing (in pixels) between each line of text.

        Default: 2

    `font_name`
        The font name to be used as the base font from which others, such as
        bold and italic fonts will be generated.  This really should be a
        monospace font to look sane.
        If a filename or a file-like object is specified, the user must
        provide different styles of the font.

        Default: "Courier New" on Windows, "Menlo" on Mac OS, and
                 "DejaVu Sans Mono" on \*nix

    `font_size`
        The font size in points to be used.

        Default: 14

    `image_pad`
        The padding, in pixels to be used at each edge of the resulting image.

        Default: 10

    `line_numbers`
        Whether line numbers should be shown: True/False

        Default: True

    `line_number_start`
        The line number of the first line.

        Default: 1

    `line_number_step`
        The step used when printing line numbers.

        Default: 1

    `line_number_bg`
        The background colour (in "#123456" format) of the line number bar, or
        None to use the style background color.

        Default: "#eed"

    `line_number_fg`
        The text color of the line numbers (in "#123456"-like format).

        Default: "#886"

    `line_number_chars`
        The number of columns of line numbers allowable in the line number
        margin.

        Default: 2

    `line_number_bold`
        Whether line numbers will be bold: True/False

        Default: False

    `line_number_italic`
        Whether line numbers will be italicized: True/False

        Default: False

    `line_number_separator`
        Whether a line will be drawn between the line number area and the
        source code area: True/False

        Default: True

    `line_number_pad`
        The horizontal padding (in pixels) between the line number margin, and
        the source code area.

        Default: 6

    `hl_lines`
        Specify a list of lines to be highlighted.

        .. versionadded:: 1.2

        Default: empty list

    `hl_color`
        Specify the color for highlighting lines.

        .. versionadded:: 1.2

        Default: highlight color of the selected style
    Úimg)r¡   ÚIMGÚpngz*.pngFr£   c                 óD  — t         st        d«      ‚t        j                  | fi |¤Ž d| _        t        | j                  «      | _        | j                  j                  €d| _        n| j                  j                  | _        t        |dg d¢| j                  d¬«      | _        t        |d	d
«      | _        t        |dd«      | _        t        |dd«      }t        |j!                  dd«      |«      | _        | j"                  j%                  «       \  | _        | _        |j!                  dd«      | _        |j!                  dd«      | _        t        |dd«      | _        t1        |dd«      | _        t1        |dd«      | _        t        |dd«      | _        t1        |dd«      | _        t1        |dd«      | _        t        |dd«      | _        t        |dd«      | _        | j8                  r/| j&                  | j.                  z  | j6                  dz  z   | _         nd | _         g | _!        tE        |d!g «      }|D ]'  }	 | jB                  jG                  tI        |«      «       Œ) |j!                  d"| j                  jL                  «      xs d#| _'        g | _(        y# tJ        $ r Y Œlw xY w)$zE
        See the class docstring for explanation of options.
        z5Python Imaging Library is required for this formatterÚlatin1Nz#fffÚimage_format)r£   ÚjpegÚgifÚbmpT)ÚnormcaseÚ	image_padé
   Úline_padr’   r0   rŸ   r/   r   Úline_number_fgz#886Úline_number_bgz#eedÚline_number_charsÚline_number_boldFÚline_number_italicÚline_number_padé   Úline_numbersÚline_number_separatorÚline_number_stepé   Úline_number_startr   Úhl_linesÚhl_colorz#f90))Úpil_availabler   r   rF   r2   ÚdictrE   r|   Úbackground_colorr   Údefault_image_formatr¦   r   r«   r­   r*   ra   r1   r�   ÚfontwÚfonthr®   r¯   r°   r   r±   r²   r³   rµ   r¶   r·   r¹   Úline_number_widthrº   r   ÚappendÚintr�   Úhighlight_colorr»   Ú	drawables)rC   ÚoptionsÚfontsizeÚhl_lines_strrX   s        r&   rF   zImageFormatter.__init__†  sy  € õ Ü!ØGóIð Iä×Ñ˜4Ñ+ 7Ò+Ø ˆŒä˜4Ÿ:™:Ó&ˆŒØ�:‰:×&Ñ&Ð.Ø$*ˆDÕ!à$(§J¡J×$?Ñ$?ˆDÔ!ä*Ø�^Ò%BØ×%Ñ%°ô6ˆÔô % W¨k¸2Ó>ˆŒÜ# G¨Z¸Ó;ˆŒä˜w¨°RÓ8ˆÜ  §¡¨[¸"Ó!=¸xÓHˆŒ
Ø!%§¡×!9Ñ!9Ó!;ÑˆŒ
�D”Jà%Ÿk™kÐ*:¸FÓCˆÔØ%Ÿk™kÐ*:¸FÓCˆÔÜ!,¨WØ-@À!ó"EˆÔä ,¨WØ-?Àó!HˆÔä".¨wØ/CÀUó#LˆÔä*¨7Ð4EÀqÓIˆÔÜ(¨°.À$ÓGˆÔÜ%1°'Ø2IÈ4ó&QˆÔ"ä +¨GÐ5GÈÓ KˆÔÜ!,¨WÐ6IÈ1Ó!MˆÔØ×ÒØ&*§j¡j°4×3IÑ3IÑ&IØ&*×&:Ñ&:¸QÑ&>ñ'?ˆDÕ"ð &'ˆDÔ"ØˆŒÜ# G¨Z¸Ó<ˆØ ò 	ˆDðØ—‘×$Ñ$¤S¨£YÕ/ð	ð
  Ÿ™ JØ$(§J¡J×$>Ñ$>ó@ò JØCIð 	Œàˆ�øô	 ò Ùðús   È6$JÊ	JÊJc                 ó   — t        d«      ‚)NzWThe -S option is meaningless for the image formatter. Use -O style=<stylename> instead.)ÚNotImplementedError)rC   Úargs     r&   Úget_style_defszImageFormatter.get_style_defs¾  s   € Ü!ð #Qó Rð 	Rr%   c                 ó4   — | j                   | j                  z   S )z+
        Get the height of a line.
        )rÁ   r­   rŽ   s    r&   Ú_get_line_heightzImageFormatter._get_line_heightÂ  s   € ð �z‰z˜DŸM™MÑ)Ð)r%   c                 óB   — || j                  «       z  | j                  z   S )z8
        Get the Y coordinate of a line number.
        )rÏ   r«   ©rC   Úlinenos     r&   Ú_get_line_yzImageFormatter._get_line_yÈ  s!   € ð ˜×-Ñ-Ó/Ñ/°$·.±.Ñ@Ð@r%   c                 ó   — | j                   S )z/
        Get the width of a character.
        )rÀ   rŽ   s    r&   Ú_get_char_widthzImageFormatter._get_char_widthÎ  s   € ð �z‰zÐr%   c                 ó:   — || j                   z   | j                  z   S )z?
        Get the X coordinate of a character position.
        )r«   rÂ   )rC   Ú
linelengths     r&   Ú_get_char_xzImageFormatter._get_char_xÔ  s   € ð ˜DŸN™NÑ*¨T×-CÑ-CÑCÐCr%   c                 óF   — | j                  |«      | j                  |«      fS )zL
        Get the actual position for a character and line position.
        )rØ   rÓ   )rC   r×   rÒ   s      r&   Ú_get_text_poszImageFormatter._get_text_posÚ  s%   € ð ×Ñ 
Ó+¨T×-=Ñ-=¸fÓ-EÐEÐEr%   c                 ó<   — | j                   | j                  |«      fS )zI
        Get the actual position for the start of a line number.
        )r«   rÓ   rÑ   s     r&   Ú_get_linenumber_posz"ImageFormatter._get_linenumber_posà  s   € ð —‘ × 0Ñ 0°Ó 8Ð9Ð9r%   c                 ó(   — |d   �
d|d   z   }|S d}|S )zE
        Get the correct color for the token from the style.
        Úcolorú#z#000r$   )rC   rE   Úfills      r&   Ú_get_text_colorzImageFormatter._get_text_coloræ  s/   € ð �‰>Ð%Ø˜˜w™Ñ'ˆDð ˆð ˆDØˆr%   c                 ó(   — |d   �
d|d   z   }|S d}|S )zP
        Get the correct background color for the token from the style.
        ÚbgcolorNrß   r$   )rC   rE   Úbg_colors      r&   Ú_get_text_bg_colorz!ImageFormatter._get_text_bg_colorð  s1   € ð �ÑÐ'Ø˜U 9Ñ-Ñ-ˆHð ˆð ˆHØˆr%   c                 óF   — | j                   j                  |d   |d   «      S )z5
        Get the correct font for the style.
        r˜   Úitalic)r1   rš   )rC   rE   s     r&   Ú_get_style_fontzImageFormatter._get_style_fontú  s#   € ð �z‰z×"Ñ" 5¨¡=°%¸±/ÓBÐBr%   c                 ó€   — | j                  |«      | j                  z   | j                  |dz   «      | j                  z   fS )z.
        Get the required image size.
        r   )rØ   r«   rÓ   )rC   ÚmaxlinelengthÚ	maxlinenos      r&   Ú_get_image_sizezImageFormatter._get_image_size   sB   € ð × Ñ  Ó/°$·.±.Ñ@Ø× Ñ  ¨Q¡Ó/°$·.±.Ñ@ðBð 	Br%   c                 ó  — | j                  | j                  |«      t        |«      j                  | j                  «      | j
                  j                  | j                  | j                  «      | j                  d¬«       y)zA
        Remember a line number drawable to paint later.
        N©rD   Útext_fgÚtext_bg)
Ú
_draw_textrÜ   ÚstrÚrjustr°   r1   rš   r±   r²   r®   )rC   ÚposnorÒ   s      r&   Ú_draw_linenumberzImageFormatter._draw_linenumber  sj   € ð 	�‰Ø×$Ñ$ UÓ+Ü�‹K×Ñ˜d×4Ñ4Ó5Ø—‘×$Ñ$ T×%:Ñ%:Ø%)×%<Ñ%<ó>à×'Ñ'Øð 	õ 	
r%   c                 óD   — | j                   j                  |||||f«       y)zB
        Remember a single drawable tuple to paint later.
        N)rÆ   rÃ   )rC   Úposr•   rD   rï   rð   s         r&   rñ   zImageFormatter._draw_text  s!   € ð 	�‰×Ñ˜s D¨$°¸ÐAÕBr%   c                 óÈ  — dx}x}}dx}}|D �]=  \  }}|| j                   vr|j                  }|| j                   vrŒ| j                   |   }	|j                  d«      }|j                  d«      }
t	        |
«      D ]Ï  \  }}|j                  d«      }|rœ| j                  | j                  ||«      || j                  |	«      | j                  |	«      | j                  |	«      ¬«       | j                  j                  |«      \  }}||z  }t        ||«      }|t        |«      z  }t        ||«      }|j                  d«      sŒÇd}d}|dz  }ŒÑ �Œ@ || _        || _        || _        y)z9
        Create drawables for the token content.
        r   r“   Tú
rî   r¸   N)r|   ÚparentÚ
expandtabsrQ   Ú	enumerateÚrstriprñ   rÚ   rè   rá   rå   r1   r�   ÚmaxÚlenrj   rê   Ú	maxcharnorë   )rC   ÚtokensourcerÒ   Úcharnor   rê   r×   ÚttypeÚvaluerE   rW   ÚirX   ÚtempÚ
temp_widthrV   s                   r&   Ú_create_drawablesz ImageFormatter._create_drawables  s{  € ð '(Ð'ˆÐ'�˜)Ø%&Ð&ˆ˜
Ø'ó 	 ‰LˆE�5Ø˜tŸ{™{Ñ*ØŸ™�ð ˜tŸ{™{Ò*à—K‘K Ñ&ˆEð ×$Ñ$ QÓ'ˆEØ×$Ñ$ TÓ*ˆEä$ UÓ+ò  ‘��4Ø—{‘{ 4Ó(�ÙØ—O‘OØ×*Ñ*¨:°vÓ>ØØ#×3Ñ3°EÓ:Ø"&×"6Ñ"6°uÓ"=Ø"&×"9Ñ"9¸%Ó"@ð $ô ð %)§J¡J×$<Ñ$<¸TÓ$B‘M�J Ø *Ñ,�JÜ$'¨°zÓ$B�MØœc $›iÑ'�FÜ # I¨vÓ 6�IØ—=‘= Õ&à!"�JØ�FØ˜a‘K‘Fò' ð	 ð< +ˆÔØ"ˆŒØˆ�r%   c                 óº   — | j                   syt        | j                  «      D ]6  }|| j                  z   }|| j                  z  dk(  sŒ%| j                  ||«       Œ8 y)z8
        Create drawables for the line numbers.
        Nr   )rµ   Úrangerë   r¹   r·   rõ   )rC   ÚpÚns      r&   Ú_draw_line_numbersz!ImageFormatter._draw_line_numbersB  s[   € ð × Ò ØÜ�t—~‘~Ó&ò 	,ˆAØ�D×*Ñ*Ñ*ˆAØ�D×)Ñ)Ñ)¨aÓ/Ø×%Ñ% a¨Õ+ñ	,r%   c                 ón  — | j                   sy| j                  €yt        j                  |«      }|j                  d   }| j
                  | j                  z   | j                  z
  }|j                  d||fg| j                  ¬«       | j                  r#|j                  |df||fg| j                  ¬«       ~y)z@
        Paint the line number background on the image.
        Néÿÿÿÿ)r   r   ©rà   r   )rµ   r®   r	   ÚDrawÚsizer«   rÂ   r³   Ú	rectangler¯   r¶   rX   )rC   ÚimÚdrawÚrecthÚrectws        r&   Ú_paint_line_number_bgz$ImageFormatter._paint_line_number_bgM  s­   € ð × Ò ØØ×ÑÐ&ØÜ�~‰~˜bÓ!ˆØ—‘˜‘ˆØ—‘ ×!7Ñ!7Ñ7¸$×:NÑ:NÑNˆØ�‰˜ ¨ Ð/Ø ×/Ñ/ð 	ô 	1à×%Ò%Ø�I‰I˜˜q�z E¨5 >Ð2¸×9LÑ9LˆIÔMÙr%   c           	      óÜ  — | j                  |«       | j                  «        t        j                  d| j	                  | j
                  | j                  «      | j                  «      }| j                  |«       t        j                  |«      }| j                  r™| j                  | j                  z   | j                  z
  dz   }| j                  «       }|j                   d   |z
  }| j                  D ]?  }| j#                  |dz
  «      }	|j%                  ||	f||z   |	|z   fg| j&                  ¬«       ŒA | j(                  D ]‚  \  }
}}}}|rct+        |d«      r|j-                  ||¬«      }n|j/                  |«      dd }|j%                  |
d   |
d   |
d   |d   z   |
d   |d   z   g|¬«       |j1                  |
|||¬	«       Œ„ |j3                  || j4                  j7                  «       «       y)
a   
        Format ``tokensource``, an iterable of ``(tokentype, tokenstring)``
        tuples and write it into ``outfile``.

        This implementation calculates where it should draw each token on the
        pixmap, then calculates the required pixmap size and draws the items.
        ÚRGBr¸   r   r  Útextsize)r•   rD   r’   N)rD   rà   )r  r  r   Únewrì   rê   rë   r¾   r  r	   r  rº   r«   rÂ   r³   rÏ   r  rÓ   r  r»   rÆ   r4   r  r‘   r•   Úsaver¦   Úupper)rC   r  Úoutfiler  r  Úxr  r  Ú
linenumberÚyr÷   r  rD   rï   rð   Ú	text_sizes                   r&   rv   zImageFormatter.format^  sØ  € ð 	×Ñ˜{Ô+Ø×ÑÔ!Ü�Y‰YØØ× Ñ  ×!3Ñ!3°T·^±^ÓDØ×!Ñ!ó
ˆð
 	×"Ñ" 2Ô&Ü�~‰~˜bÓ!ˆà�=Š=Ø—‘ ×!7Ñ!7Ñ7¸$×:NÑ:NÑNÐQRÑRˆAØ×)Ñ)Ó+ˆEØ—G‘G˜A‘J ‘NˆEØ"Ÿm™mò 3�
Ø×$Ñ$ Z°!¡^Ó4�Ø—‘  A ¨¨U©°A¸±IÐ(>Ð?Ø$(§M¡Mð õ 3ð3ð 37·.±.ò 	;Ñ.ˆC�˜˜g wÙä˜4 Ô,Ø $§¡°5¸t Ó D‘Ià $§¡¨UÓ 3°A°BÐ 7�IØ—‘  A¡¨¨A©°°A±¸À1¹Ñ0EÀsÈ1ÁvÐPYÐZ[ÑP\ÑG\Ð]Ðdk�ÔlØ�I‰I�c˜5 t°'ˆIÕ:ð	;ð 	�‰�˜×*Ñ*×0Ñ0Ó2Õ3r%   N)r   )r    r!   r"   r#   rT   ÚaliasesÚ	filenamesÚunicodeoutputr¿   rF   rÍ   rÏ   rÓ   rÕ   rØ   rÚ   rÜ   rá   rå   rè   rì   rõ   rñ   r  r  r  rv   r$   r%   r&   r   r     sŠ   „ ñlð^ €DÚ#€GØ�	€Ià€Mà Ðò6ópRò*òAòòDòFò:òòòCòBò
òCò& òP	,òó"#4r%   r   c                   ó$   — e Zd ZdZdZdgZdgZdZy)r   z�
    Create a GIF image from source code. This uses the Python Imaging Library to
    generate a pixmap from the source code.

    .. versionadded:: 1.0
    Úimg_gifr¨   z*.gifN©r    r!   r"   r#   rT   r$  r%  r¿   r$   r%   r&   r   r   ‡  s"   „ ñð €DØˆg€GØ�	€IØ Ñr%   r   c                   ó&   — e Zd ZdZdZddgZdgZdZy)r   zž
    Create a JPEG image from source code. This uses the Python Imaging Library to
    generate a pixmap from the source code.

    .. versionadded:: 1.0
    Úimg_jpgÚjpgr§   z*.jpgNr)  r$   r%   r&   r   r   •  s$   „ ñð €DØ�fˆo€GØ�	€IØ!Ñr%   r   c                   ó&   — e Zd ZdZdZddgZdgZdZy)r   z 
    Create a bitmap image from source code. This uses the Python Imaging Library to
    generate a pixmap from the source code.

    .. versionadded:: 1.0
    Úimg_bmpr©   Úbitmapz*.bmpNr)  r$   r%   r&   r   r   £  s%   „ ñð €DØ�hÐ€GØ�	€IØ Ñr%   r   ) r#   r5   r:   Úpygments.formatterr   Úpygments.utilr   r   r   r   rL   ÚPILr   r	   r
   r¼   ÚImportErrorrw   ÚwinregÚ__all__r9   rA   r=   r?   r   Ú	Exceptionr(   r*   r   r   r   r   r$   r%   r&   ú<module>r7     s  ðñó 
Û 
å (÷ó ó ðß/Ñ/Ø€MðÛò €ò GØ˜hÐ'Ø�(Ø! =Ð1ñ	
€ð +Ð Ø%Ð ØÐ ô7�kô 7ô3�9ô 3÷Oñ Oôds4�Yô s4ôr!˜ô !ô"˜ô "ô!˜õ !øðY ò Ø‚Mðûð
 ò ðÜ øØò ØŠðüðúsF   ¢B ¯B% ÂB"Â!B"Â%C Â+B0Â/C Â0B:Â7C Â9B:Â:C Â?C 