ó
    öÞ j[  ã                   óŒ  • S r SSKrSSKrSSKJr  SSKJrJrJrJ	r	  SSK
r
 SSKJrJrJr  Sr SSKr/ SQr/ S	QS
S/S/SS/S.rSrSrSr " S S\5      r " S S\5      r " S S5      r " S S\5      r " S S\5      r " S S\5      r " S S \5      rg! \ a    Sr Ntf = f! \ a     SSKr N€! \ a    Sr  N‹f = ff = f)!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                   ó   • \ rS rSrSrSrg)ÚPilNotAvailableé4   z,When Python imaging library is not available© N©Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__Ú__static_attributes__r    ó    ÚQ/var/www/html/gaurav/venv/lib/python3.13/site-packages/pygments/formatters/img.pyr   r   4   s   † Ü6r(   r   c                   ó   • \ rS rSrSrSrg)ÚFontNotFoundé8   z(When there are no usable fonts specifiedr    Nr!   r    r(   r)   r+   r+   8   s   † Ü2r(   r+   c                   ób   • \ rS rSrSrSS jrS rS rS rS r	SS jr
S	 rS
 rS rS rS rSrg)ÚFontManageré<   z6
Manages a set of fonts: normal, italic, bold, etc...
c                 ó–  • Xl         X l        0 U l        S U l        SU l        [        US5      (       d$  [        R                  R                  U5      (       aC  [        R                  " XR                  5      nSU l        [         H  nX0R                  U'   M     g [        R                  R                  S5      (       a#  U(       d  [        U l         U R!                  5         g [        R                  R                  S5      (       a#  U(       d  ["        U l         U R%                  5         g U(       d  [&        U l         U R)                  5         g )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)Úselfr4   r5   ÚfontÚstyles        r)   Ú__init__ÚFontManager.__init__A   sâ   € Ø"ŒØ"ŒØˆŒ
ØˆŒØˆŒÜ�9˜f×%Ñ%¬¯©¯©¸	×)BÑ)BÜ×%Ò% i·±Ó@ˆDØ ˆDŒMß�Ø$(—
‘
˜5Ó!ñ  ð ä�<‰<×"Ñ" 5×)Ñ)ÞÜ!6�”Ø×ÑÕÜ�\‰\×$Ñ$ X×.Ñ.ÞÜ!6�”Ø×ÑÕæÜ!6�”Ø×ÑÕr(   c                 ót  • [         R                  " SU SU 3S/[         R                  S S9nUR                  5       u  pEUR                  S:X  aj  UR                  5       nU HS  nUR                  S5      (       a  M  UR                  5       R                  5       R                  S5      nU(       d  MQ  Us  $    g g )Nzfc-listz:style=Úfile)ÚstdoutÚstderrr   s   Fontconfig warning:Ú:)	Ú
subprocessÚPopenÚPIPEÚcommunicateÚ
returncodeÚ
splitlinesrA   ÚdecodeÚstrip)	rH   ÚnamerJ   ÚprocrO   Ú_ÚlinesÚliner;   s	            r)   Ú_get_nix_font_pathÚFontManager._get_nix_font_path\   sª   € Ü×Ò ¨t¨f°G¸E¸7Ð,CÀVÐ LÜ'1§¡¸tñEˆà×$Ñ$Ó&‰	ˆØ�?‰?˜aÓØ×%Ñ%Ó'ˆEÛ�Ø—?‘?Ð#9×:Ñ:ÙØ—{‘{“}×*Ñ*Ó,×2Ñ2°3Ó7�ß�4Ø’Kñ ð ð  r(   c                 óB  • [         S    HQ  nU R                  U R                  U5      nUc  M$  [        R                  " X R
                  5      U R                  S'     O   [        SU R                   S35      eS H¢  n[         U    HR  nU R                  U R                  U5      nUc  M$  [        R                  " X R
                  5      U R                  U'     M`     US:X  a  U R                  S   U R                  U'   M†  U R                  S   U R                  U'   M¤     g )Nr   úNo usable fonts named: "Ú"©r   r   r   r   r   )r>   r_   r4   r
   r=   r5   r6   r+   )rH   rZ   r;   rJ   Ú	stylenames        r)   rG   ÚFontManager._create_nixj   sõ   € Ü˜8Ô$ˆDØ×*Ñ*¨4¯>©>¸4Ó@ˆDØÓÜ'0×'9Ò'9¸$ÇÁÓ'O�—
‘
˜8Ñ$Ùñ	 %ô Ð!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Ó%ò 6r(   c                 óh   • UR                  US-   U-   R                  5       R                  5       5      $ )NÚ )ÚgetrY   Úlower)rH   Úfont_maprZ   rJ   s       r)   Ú_get_mac_font_pathÚFontManager._get_mac_font_path~   s,   € Ø�|‰|˜T C™Z¨%Ñ/×6Ñ6Ó8×>Ñ>Ó@ÓAÐAr(   c                 ó"  ^• 0 n[         R                  R                  [         R                  " S5      S5      SS4 H2  mUR	                  U4S j[         R
                  " T5       5       5        M4     [        S    HQ  nU R                  XR                  U5      nUc  M$  [        R                  " X0R                  5      U R                  S'     O   [        SU R                   S35      eS	 H¢  n[        U    HR  nU R                  XR                  U5      nUc  M$  [        R                  " X0R                  5      U R                  U'     M`     US
:X  a  U R                  S   U R                  U'   M†  U R                  S   U R                  U'   M¤     g )NÚHOMEzLibrary/Fonts/z/Library/Fonts/z/System/Library/Fonts/c              3   ó&  >#   • U H‡  u    pU H{  nUR                  5       R                  S 5      (       d  M)  [        R                  R	                  U5      S   R                  5       [        R                  R                  TU5      4v •  M}     M‰     g7f))ÚttfÚttcr   N)rj   Úendswithr:   r;   ÚsplitextÚjoin)Ú.0r\   ÚfilesÚfÚfont_dirs       €r)   Ú	<genexpr>Ú*FontManager._create_mac.<locals>.<genexpr>…   sr   øé € ð 7á#4‘K�A�qÛ�AØ—7‘7“9×%Ñ% n×5ó L”—‘×!Ñ! !Ó$ QÑ'×-Ñ-Ó/´·±·±¸hÈÓ1JÕKáñ LÚ#4ùs   ƒ/B¶ABr   rb   rc   rd   r   r   )r:   r;   ru   ÚgetenvÚupdateÚwalkr>   rl   r4   r
   r=   r5   r6   r+   )rH   rk   rZ   r;   rJ   re   ry   s         @r)   rE   ÚFontManager._create_mac�   sO  ø€ ØˆÜŸ™Ÿ™¤b§i¢i°Ó&7Ð9IÓJØ*Ð,DóFˆHà�O‰Oô 7ä#%§7¢7¨8Ô#4ó7ö 7ñFô ˜8Ô$ˆDØ×*Ñ*¨8·^±^ÀTÓJˆDØÓÜ'0×'9Ò'9¸$ÇÁÓ'O�—
‘
˜8Ñ$Ùñ	 %ô Ð!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Ó%ò 6r(   c                 óø   • S HG  nU H>  n SR                  X&=(       a    SU-   U5      n[        R                  " X5      u  p‰Us  s  $    MI     U(       a  [	        SU SUS    S35      eg ! [         a     Mp  f = f)N)r   z (TrueType)z{}{}{}rh   zFont z (r   z) not found in registry)ÚformatÚ_winregÚQueryValueExÚOSErrorr+   )
rH   ÚkeyÚbasenameÚstylesÚfailÚsuffixrJ   ÚvalnameÚvalr\   s
             r)   Ú_lookup_winÚFontManager._lookup_winž   s†   € Û)ˆFÛ�ðØ&Ÿo™o¨h×8KÀ#ÀeÁ)ÈVÓT�GÜ$×1Ò1°#Ó?‘F�CØ”Jó	  ñ *ö Ü" U¨8¨*°B°v¸a±y°kÐAXÐ#YÓZÐZØøô ó Úðús   Œ7A+Á+
A9Á8A9c                 óÌ  • S n[         R                  S4[         R                  S4[         R                  S4[         R                  S4/nU GH"  n [         R                  " U6 n U R	                  X@R
                  [        S   S5      n[        R                  " XPR                  5      U R                  S'   S Hœ  nU R	                  X@R
                  [        U   5      nU(       a/  [        R                  " XPR                  5      U R                  U'   M\  US:X  a  U R                  S   U R                  U'   M€  U R                  S   U R                  U'   Mž      [         R                  " U5          g    U(       a  Ue[        S5      e! [         a  nUn S nAOS nAff = f [         R                  " U5        GMn  ! [         R                  " U5        f = f! [         a     GM—  f = f)	Nz2Software\Microsoft\Windows NT\CurrentVersion\Fontsz/Software\Microsoft\Windows\CurrentVersion\Fontsr   Trd   r   r   z$Can't open Windows font registry key)r‚   ÚHKEY_CURRENT_USERÚHKEY_LOCAL_MACHINEÚOpenKeyrŒ   r4   r>   r
   r=   r5   r6   ÚCloseKeyr+   r„   )rH   ÚlookuperrorÚkeynamesÚkeynamer…   r;   rJ   Úerrs           r)   rC   ÚFontManager._create_win¬   s™  € ØˆÜ×/Ñ/Ð1fÐgÜ×/Ñ/Ð1cÐdÜ×0Ñ0Ð2gÐhÜ×0Ñ0Ð2dÐeðhˆô  ˆGðÜ—o’o wÐ/�ð*Ø×+Ñ+¨C·±ÄÈÑAQÐSWÓX�DÜ+4×+=Ò+=¸dÇNÁNÓ+S�D—J‘J˜xÑ(Û!A˜Ø#×/Ñ/°·^±^Ä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ñ "Bð ô ×$Ò$ SÖ)ñ'  ö: Ø!Ð!ÜÐFÓGÐGøô $ó &Ø"%•Kûð&úØä×$Ò$ S×)ø”G×$Ò$ SÕ)ûÜó ÛðúsO   ÁGÁ$C3FÅGÆ
FÆFÆF9ÆFÆF9Æ GÆ9GÇGÇ
G#Ç"G#c                 ó$   • U R                  S5      $ )z
Get the character size.
ÚM)Úget_text_size©rH   s    r)   Úget_char_sizeÚFontManager.get_char_sizeÓ   s   € ð ×!Ñ! #Ó&Ð&r(   c                 óŒ   • U R                   S   n[        US5      (       a  UR                  U5      SS $ UR                  U5      $ )z$
Get the text size (width, height).
r   Úgetbboxé   é   )r6   r9   rŸ   Úgetsize)rH   ÚtextrI   s      r)   rš   ÚFontManager.get_text_sizeÙ   sD   € ð �z‰z˜(Ñ#ˆÜ�4˜×#Ñ#Ø—<‘< Ó% a¨Ð*Ð*à—<‘< Ó%Ð%r(   c                 óÂ  • U(       a8  U(       a1  U R                   (       a  U R                  S5      $ U R                  S   $ U(       a1  U R                   (       a  U R                  S5      $ U R                  S   $ U(       a1  U R                   (       a  U R                  S5      $ U R                  S   $ U R                   (       a  U R                  S5      $ U R                  S   $ )z.
Get the font based on bold and italic flags.
r   r   r   r   )r8   Ú	get_styler6   )rH   ÚboldÚobliques      r)   Úget_fontÚFontManager.get_fontã   s£   € ö –GØ�}�}Ø—~‘~ lÓ3Ð3à—:‘:˜lÑ+Ð+ÞØ�}�}Ø—~‘~ fÓ-Ð-à—:‘:˜fÑ%Ð%ÞØ�}�}Ø—~‘~ hÓ/Ð/à—:‘:˜hÑ'Ð'à�}�}Ø—~‘~ hÓ/Ð/à—:‘:˜hÑ'Ð'r(   c                 ó¬   • U R                   U   n[        U    H  n UR                  U5        Us  $    U$ ! [         a     M*  [         a    Us s  $ f = f)ze
Get the specified style of the font if it is a variable font.
If not found, return the normal font.
)r6   r>   Úset_variation_by_nameÚ
ValueErrorr„   )rH   rJ   rI   Ú
style_names       r)   r¦   ÚFontManager.get_styleü   s`   € ð
 �z‰z˜%Ñ ˆÜ  œ-ˆJðØ×*Ñ*¨:Ô6Ø’ñ (ð ˆøô ó ÚÜó Ø”ðús   �6¶
AÁAÁA)r7   r4   r5   r6   r8   N)é   )F)r"   r#   r$   r%   r&   rK   r_   rG   rl   rE   rŒ   rC   rœ   rš   r©   r¦   r'   r    r(   r)   r.   r.   <   sA   † ñôò6ò=ò(Bò=ô:ò%HòN'ò&ò(õ2r(   r.   c                   ó¢   • \ rS rSrSrSr/ SQrS/rSrSr	S r
SS	 jrS
 rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rSrg)r   i  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                 óh  • [         (       d  [        S5      e[        R                  " U 40 UD6  SU l        [        U R                  5      U l        U R                  R                  c  SU l        OU R                  R                  U l        [        US/ SQU R                  SS9U l        [        US	S
5      U l        [        USS5      U l        [        USS5      n[        UR!                  SS5      U5      U l        U R"                  R%                  5       u  U l        U l        UR!                  SS5      U l        UR!                  SS5      U l        [        USS5      U l        [1        USS5      U l        [1        USS5      U l        [        USS5      U l        [1        USS5      U l        [1        USS5      U l        [        USS5      U l        [        USS5      U l        U R8                  (       a/  U R&                  U R.                  -  U R6                  S-  -   U l         OS U l         / U l!        [E        US!/ 5      nU H(  n U RB                  RG                  [I        U5      5        M*     UR!                  S"U R                  RL                  5      =(       d    S#U l'        / U l(        g! [J         a     Mu  f = f)$z5
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    r5   r°   r4   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   rK   r7   ÚdictrJ   r‡   Úbackground_colorr   Údefault_image_formatr·   r   r¼   r¾   r.   ri   r6   rœ   ÚfontwÚfonthr¿   rÀ   rÁ   r   rÂ   rÃ   rÄ   rÆ   rÇ   rÈ   rÊ   Úline_number_widthrË   r   ÚappendÚintr­   Úhighlight_colorrÌ   Ú	drawables)rH   ÚoptionsÚfontsizeÚhl_lines_strr^   s        r)   rK   ÚImageFormatter.__init__†  sv  € ÷ Š}Ü!Ø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   È?$J#Ê#
J1Ê0J1c                 ó   • [        S5      e)NzWThe -S option is meaningless for the image formatter. Use -O style=<stylename> instead.)ÚNotImplementedError)rH   Úargs     r)   Úget_style_defsÚImageFormatter.get_style_defs¾  s   € Ü!ð #Qó Rð 	Rr(   c                 ó4   • U R                   U R                  -   $ )z
Get the height of a line.
)rÒ   r¾   r›   s    r)   Ú_get_line_heightÚImageFormatter._get_line_heightÂ  s   € ð �z‰z˜DŸM™MÑ)Ð)r(   c                 ó@   • XR                  5       -  U R                  -   $ )z(
Get the Y coordinate of a line number.
)râ   r¼   ©rH   Úlinenos     r)   Ú_get_line_yÚImageFormatter._get_line_yÈ  s   € ð ×-Ñ-Ó/Ñ/°$·.±.Ñ@Ð@r(   c                 ó   • U R                   $ )z
Get the width of a character.
)rÑ   r›   s    r)   Ú_get_char_widthÚImageFormatter._get_char_widthÎ  s   € ð �z‰zÐr(   c                 ó8   • XR                   -   U R                  -   $ )z/
Get the X coordinate of a character position.
)r¼   rÓ   )rH   Ú
linelengths     r)   Ú_get_char_xÚImageFormatter._get_char_xÔ  s   € ð ŸN™NÑ*¨T×-CÑ-CÑCÐCr(   c                 óF   • U R                  U5      U R                  U5      4$ )z<
Get the actual position for a character and line position.
)rî   rç   )rH   rí   ræ   s      r)   Ú_get_text_posÚImageFormatter._get_text_posÚ  s%   € ð ×Ñ 
Ó+¨T×-=Ñ-=¸fÓ-EÐEÐEr(   c                 ó<   • U R                   U R                  U5      4$ )z9
Get the actual position for the start of a line number.
)r¼   rç   rå   s     r)   Ú_get_linenumber_posÚ"ImageFormatter._get_linenumber_posà  s   € ð —‘ × 0Ñ 0°Ó 8Ð9Ð9r(   c                 ó*   • US   b
  SUS   -   nU$ SnU$ )z5
Get the correct color for the token from the style.
ÚcolorÚ#z#000r    )rH   rJ   Úfills      r)   Ú_get_text_colorÚImageFormatter._get_text_coloræ  s/   € ð �‰>Ñ%Ø˜˜w™Ñ'ˆDð ˆð ˆDØˆr(   c                 ó*   • US   b
  SUS   -   nU$ SnU$ )z@
Get the correct background color for the token from the style.
ÚbgcolorNrø   r    )rH   rJ   Úbg_colors      r)   Ú_get_text_bg_colorÚ!ImageFormatter._get_text_bg_colorð  s1   € ð �ÑÑ'Ø˜U 9Ñ-Ñ-ˆHð ˆð ˆHØˆr(   c                 óF   • U R                   R                  US   US   5      $ )z%
Get the correct font for the style.
r§   Úitalic)r6   r©   )rH   rJ   s     r)   Ú_get_style_fontÚImageFormatter._get_style_fontú  s#   € ð �z‰z×"Ñ" 5¨¡=°%¸±/ÓBÐBr(   c                 ó€   • U R                  U5      U R                  -   U R                  US-   5      U R                  -   4$ )z
Get the required image size.
r   )rî   r¼   rç   )rH   ÚmaxlinelengthÚ	maxlinenos      r)   Ú_get_image_sizeÚImageFormatter._get_image_size   sB   € ð × Ñ  Ó/°$·.±.Ñ@Ø× Ñ  ¨Q¡Ó/°$·.±.Ñ@ðBð 	Br(   c                 óü   • U R                  U R                  U5      [        U5      R                  U R                  5      U R
                  R                  U R                  U R                  5      U R                  SS9  g)z1
Remember a line number drawable to paint later.
N©rI   Útext_fgÚtext_bg)
Ú
_draw_textrô   ÚstrÚrjustrÁ   r6   r©   rÂ   rÃ   r¿   )rH   Úposnoræ   s      r)   Ú_draw_linenumberÚImageFormatter._draw_linenumber  sj   € ð 	�‰Ø×$Ñ$ UÓ+Ü�‹K×Ñ˜d×4Ñ4Ó5Ø—‘×$Ñ$ T×%:Ñ%:Ø%)×%<Ñ%<ó>à×'Ñ'Øð 	ò 	
r(   c                 ó@   • U R                   R                  XX4U45        g)z2
Remember a single drawable tuple to paint later.
N)r×   rÔ   )rH   Úposr£   rI   r  r  s         r)   r  ÚImageFormatter._draw_text  s   € ð 	�‰×Ñ˜s¨$¸ÐAÕBr(   c                 óÎ  • S=n=p4S=pVU GHD  u  pxXpR                   ;  a  UR                  nXpR                   ;  a  M  U R                   U   n	UR                  S5      nUR                  S5      n
[	        U
5       HÒ  u  p¼UR                  S5      nU(       a”  U R                  U R                  Xb5      UU R                  U	5      U R                  U	5      U R                  U	5      S9  U R                  R                  U5      u  pïXn-  n[        XV5      nU[        U5      -  n[        XC5      nUR                  S5      (       d  MÉ  SnSnUS-  nMÔ     GMG     XPl        X@l        X l        g)z)
Create drawables for the token content.
r   r¡   TÚ
r  rÉ   N)r‡   ÚparentÚ
expandtabsrW   Ú	enumerateÚrstripr  rñ   r  rú   rÿ   r6   rš   ÚmaxÚlenrs   r  Ú	maxcharnor  )rH   Útokensourceræ   Úcharnor  r  rí   ÚttypeÚvaluerJ   r]   Úir^   ÚtempÚ
temp_widthr\   s                   r)   Ú_create_drawablesÚ ImageFormatter._create_drawables  sX  € ð '(Ð'ˆÐ'�Ø%&Ð&ˆÜ'‰LˆEØŸ{™{Ó*ØŸ™�ð Ÿ{™{Õ*à—K‘K Ñ&ˆEð ×$Ñ$ QÓ'ˆEØ×$Ñ$ TÓ*ˆEä$ UÖ+‘�Ø—{‘{ 4Ó(�ÞØ—O‘OØ×*Ñ*¨:Ó>ØØ#×3Ñ3°EÓ:Ø"&×"6Ñ"6°uÓ"=Ø"&×"9Ñ"9¸%Ó"@ð $ñ ð %)§J¡J×$<Ñ$<¸TÓ$B‘M�JØÑ,�JÜ$'¨Ó$B�MØœc $›iÑ'�FÜ # IÓ 6�IØ—=‘= ×&Ó&à!"�JØ�FØ˜a‘K’Fô' ,ñ (ð< +ÔØ"ŒØ�r(   c                 óÆ   • U R                   (       d  g[        U R                  5       H6  nXR                  -   nX R                  -  S:X  d  M%  U R                  X5        M8     g)z(
Create drawables for the line numbers.
Nr   )rÆ   Úranger  rÊ   rÈ   r  )rH   ÚpÚns      r)   Ú_draw_line_numbersÚ!ImageFormatter._draw_line_numbersB  sP   € ð × × ØÜ�t—~‘~Ö&ˆAØ×*Ñ*Ñ*ˆAØ×)Ñ)Ñ)¨aÕ/Ø×%Ñ% aÖ+ò 'r(   c                 óv  • U R                   (       d  gU R                  c  g[        R                  " U5      nUR                  S   nU R
                  U R                  -   U R                  -
  nUR                  SXC4/U R                  S9  U R                  (       a  UR                  US4XC4/U R                  S9  Ag)z0
Paint the line number background on the image.
Néÿÿÿÿ)r   r   ©rù   r   )rÆ   r¿   r	   ÚDrawÚsizer¼   rÓ   rÄ   Ú	rectanglerÀ   rÇ   r^   )rH   ÚimÚdrawÚrecthÚrectws        r)   Ú_paint_line_number_bgÚ$ImageFormatter._paint_line_number_bgM  s©   € ð × × ØØ×ÑÑ&ØÜ�~Š~˜bÓ!ˆØ—‘˜‘ˆØ—‘ ×!7Ñ!7Ñ7¸$×:NÑ:NÑNˆØ�‰˜  Ð/Ø ×/Ñ/ð 	ñ 	1à×%×%Ø�I‰I˜˜q�z E >Ð2¸×9LÑ9LˆIÑMÙr(   c           	      óÜ  • U R                  U5        U R                  5         [        R                  " SU R	                  U R
                  U R                  5      U R                  5      nU R                  U5        [        R                  " U5      nU R                  (       a•  U R                  U R                  -   U R                  -
  S-   nU R                  5       nUR                   S   U-
  nU R                   H:  nU R#                  US-
  5      n	UR%                  XY4XW-   X–-   4/U R&                  S9  M<     U R(                   H  u  p«pÍnU(       aa  [+        US5      (       a  UR-                  X¼S9nOUR/                  U5      SS nUR%                  U
S   U
S   U
S   US   -   U
S   US   -   /US9  UR1                  X«XÍS	9  M�     UR3                  X R4                  R7                  5       5        g)
zø
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   r1  Útextsize)r£   rI   r    N)rI   rù   )r'  r-  r   Únewr  r  r  rÏ   r9  r	   r2  rË   r¼   rÓ   rÄ   râ   r3  rç   r4  rÌ   r×   r9   r=  rŸ   r£   Úsaver·   Úupper)rH   r   Úoutfiler5  r6  Úxr7  r8  Ú
linenumberÚyr  r#  rI   r  r  Ú	text_sizes                   r)   r�   Ú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�
Ø×$Ñ$ Z°!¡^Ó4�Ø—‘  ¨©°A±IÐ(>Ð?Ø$(§M¡Mð ó 3ñ ,ð 37·.´.Ñ.ˆC˜ wÞä˜4 ×,Ñ,Ø $§¡°5 Ð 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 tˆIÓ:ñ 3Að 	�‰�×*Ñ*×0Ñ0Ó2Õ3r(   )rÏ   r×   r7   rÒ   r6   rÑ   rÌ   rË   r·   r¼   rÀ   rÂ   rÁ   r¿   rÃ   rÄ   rÇ   rÊ   rÈ   rÓ   rÆ   r¾   r  r  r  r‡   N)r   )r"   r#   r$   r%   r&   rZ   ÚaliasesÚ	filenamesÚunicodeoutputrÐ   rK   rß   râ   rç   rê   rî   rñ   rô   rú   rÿ   r  r  r  r  r'  r-  r9  r�   r'   r    r(   r)   r   r     sŠ   † ñlð^ €DÚ#€GØ�	€Ià€Mà Ðò6ôpRò*òAòòDòFò:òòòCòBò
òCò& òP	,òõ"#4r(   r   c                   ó,   • \ rS rSrSrSrS/rS/rSrSr	g)r   i‡  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*.gifr    N©
r"   r#   r$   r%   r&   rZ   rG  rH  rÐ   r'   r    r(   r)   r   r   ‡  s"   † ñð €DØˆg€GØ�	€IØ Ór(   r   c                   ó.   • \ rS rSrSrSrSS/rS/rSrSr	g)	r   i•  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*.jpgr    NrL  r    r(   r)   r   r   •  s$   † ñð €DØ�fˆo€GØ�	€IØ!Ór(   r   c                   ó.   • \ rS rSrSrSrSS/rS/rSrSr	g)	r   i£  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*.bmpr    NrL  r    r(   r)   r   r   £  s%   † ñð €DØ�hÐ€GØ�	€IØ Ór(   r   ) r&   r:   r?   Úpygments.formatterr   Úpygments.utilr   r   r   r   rR   ÚPILr   r	   r
   rÍ   ÚImportErrorr‚   ÚwinregÚ__all__r>   rF   rB   rD   r   Ú	Exceptionr+   r.   r   r   r   r   r    r(   r)   Ú<module>rZ     s  ðñó 
Û 
å (÷ó ó ðß/Ñ/Ø€MðÛò €ò GØ˜hÐ'Ø�(Ø! =Ð1ñ	
€ð +Ð Ø%Ð ØÐ ô7�kô 7ô3�9ô 3÷Oñ Oôds4�Yô s4ôr!˜ô !ô"˜ô "ô!˜õ !øðY ó Ø‚Mðûð
 ó ðÝ øØó Ø‹ðúðús:   ¢B ¯B& ÂB#Â"B#Â&CÂ-B3Â3B?Â;CÂ>B?Â?C