§
    XŠtj[  ã                   ó¶  — 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n# e$ r dZY nw xY w	 ddlZn# e$ r 	 ddlZn# e$ r dZY nw xY wY nw xY w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dS )!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dS )ÚPilNotAvailablez,When Python imaging library is not availableN©Ú__name__Ú
__module__Ú__qualname__Ú__doc__© ó    úU/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/pygments/formatters/img.pyr   r   4   s   € € € € € Ø6Ð6Ð6Ð6r%   r   c                   ó   — e Zd ZdZdS )ÚFontNotFoundz(When there are no usable fonts specifiedNr   r$   r%   r&   r(   r(   8   s   € € € € € Ø2Ð2Ð2Ð2r%   r(   c                   óX   — 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dS )ÚFontManagerz>
    Manages a set of fonts: normal, italic, bold, etc...
    é   c                 óh  — || _         || _        i | _        d | _        d| _        t          |d¦  «        st          j                             |¦  «        r7t          j
        || j        ¦  «        }d| _        t          D ]}|| j        |<   Œd S t          j                             d¦  «        r$|st          | _         |                      ¦   «          d S t          j                             d¦  «        r$|st"          | _         |                      ¦   «          d S |st&          | _         |                      ¦   «          d S )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)Úselfr0   r1   ÚfontÚstyles        r&   Ú__init__zFontManager.__init__A   s/  € Ø"ˆŒØ"ˆŒØˆŒ
ØˆŒØˆŒÝ�9˜fÑ%Ô%ð 	­¬¯ª¸	Ñ)BÔ)Bð 	ÝÔ% i°´Ñ@Ô@ˆDØ ˆDŒMÝð )ð )�Ø$(�”
˜5Ñ!Ð!àˆFåŒ<×"Ò" 5Ñ)Ô)ð 	Øð 7Ý!6�”Ø×ÒÑÔÐÐÐÝŒ\×$Ò$ XÑ.Ô.ð 	Øð 7Ý!6�”Ø×ÒÑÔÐÐÐàð 7Ý!6�”Ø×ÒÑÔÐÐÐr%   c                 ó|  — t          j        d|› d|› �dgt           j        d ¬¦  «        }|                     ¦   «         \  }}|j        dk    rp|                     ¦   «         }|D ]W}|                     d¦  «        rŒ|                     ¦   «                              ¦   «                              d¦  «        }|r|c S ŒXd S d S )Nzfc-listz:style=Úfile)ÚstdoutÚstderrr   s   Fontconfig warning:ú:)	Ú
subprocessÚPopenÚPIPEÚcommunicateÚ
returncodeÚ
splitlinesr=   ÚdecodeÚstrip)	rD   ÚnamerF   ÚprocrJ   Ú_ÚlinesÚliner7   s	            r&   Ú_get_nix_font_pathzFontManager._get_nix_font_path\   sÞ   € ÝÔ ¨tÐ,CÐ,C¸EÐ,CÐ,CÀVÐ LÝ'1¤¸tðEñ Eô Eˆà×$Ò$Ñ&Ô&‰	ˆ�ØŒ?˜aÒÐØ×%Ò%Ñ'Ô'ˆEØð  ð  �Ø—?’?Ð#9Ñ:Ô:ð ØØ—{’{‘}”}×*Ò*Ñ,Ô,×2Ò2°3Ñ7Ô7�Øð  Ø�K�K�Kð à�4ð  Ðr%   c                 óæ  — t           d         D ]C}|                      | j        |¦  «        }|�$t          j        || j        ¦  «        | j        d<    nŒDt          d| j        › d�¦  «        ‚dD ]„}t           |         D ]C}|                      | j        |¦  «        }|�$t          j        || j        ¦  «        | j        |<    n2ŒD|dk    r| j        d         | j        |<   Œo| j        d         | j        |<   Œ…d S )Nr   úNo usable fonts named: "ú"©r   r   r   r   r   )r:   rZ   r0   r
   r9   r1   r2   r(   )rD   rU   r7   rF   Ú	stylenames        r&   rC   zFontManager._create_nixj   s  € Ý˜8Ô$ð 	Mð 	MˆDØ×*Ò*¨4¬>¸4Ñ@Ô@ˆDØÐÝ'0Ô'9¸$ÀÄÑ'OÔ'O�”
˜8Ñ$Ø�ð  õ ÐK¸$¼.ÐKÐKÐKÑLÔLÐLØ5ð 
	=ð 
	=ˆEÝ# Eœ]ð 	=ð 	=�	Ø×.Ò.¨t¬~¸yÑIÔI�ØÐ#Ý(1Ô(:¸4ÀÄÑ(PÔ(P�D”J˜uÑ%Ø�Eð $ð ˜LÒ(Ð(Ø(,¬
°6Ô(:�D”J˜uÑ%Ð%à(,¬
°8Ô(<�D”J˜uÑ%øð
	=ð 
	=r%   c                 ó€   — |                      |dz   |z                        ¦   «                              ¦   «         ¦  «        S )Nú )ÚgetrT   Úlower)rD   Úfont_maprU   rF   s       r&   Ú_get_mac_font_pathzFontManager._get_mac_font_path~   s5   € Ø�|Š|˜T C™Z¨%Ñ/×6Ò6Ñ8Ô8×>Ò>Ñ@Ô@ÑAÔAÐAr%   c                 óÆ  ‡— i }t           j                             t          j        d¦  «        d¦  «        ddfD ]5Š|                     ˆfd„t          j        ‰¦  «        D ¦   «         ¦  «         Œ6t          d         D ]D}|                      || j        |¦  «        }|�$t          j
        || j        ¦  «        | j        d<    nŒEt          d| j        › d�¦  «        ‚d	D ]…}t          |         D ]D}|                      || j        |¦  «        }|�$t          j
        || j        ¦  «        | j        |<    n2ŒE|d
k    r| j        d         | j        |<   Œp| j        d         | j        |<   Œ†d S )NÚHOMEzLibrary/Fonts/z/Library/Fonts/z/System/Library/Fonts/c              3   ó&  •K  — | ]‹\  }}}|D ]‚}|                      ¦   «                              d ¦  «        ¯)t          j                             |¦  «        d                               ¦   «         t          j                             ‰|¦  «        fV — ŒƒŒŒdS ))ÚttfÚttcr   N)rc   Úendswithr6   r7   ÚsplitextÚjoin)Ú.0rW   ÚfilesÚfÚfont_dirs       €r&   ú	<genexpr>z*FontManager._create_mac.<locals>.<genexpr>…   s¦   øè è € ð 7ð 7á�A�q˜%Øð7ð 7ð Ø—7’7‘9”9×%Ò% nÑ5Ô5ð	7Ý”×!Ò! !Ñ$Ô$ QÔ'×-Ò-Ñ/Ô/µ´·²¸hÈÑ1JÔ1JÐKð7ð 7ð 7ð 7ð 7ð 7ð 7r%   r   r\   r]   r^   r   r   )r6   r7   rm   ÚgetenvÚupdateÚwalkr:   re   r0   r
   r9   r1   r2   r(   )rD   rd   rU   r7   rF   r_   rq   s         @r&   rA   zFontManager._create_mac�   sª  ø€ ØˆÝœŸš¥b¤i°Ñ&7Ô&7Ð9IÑJÔJØ*Ð,DðFð 	7ð 	7ˆHà�OŠOð 7ð 7ð 7ð 7å#%¤7¨8Ñ#4Ô#4ð7ñ 7ô 7ñ 7ô 7ð 7ð 7õ ˜8Ô$ð 	Mð 	MˆDØ×*Ò*¨8°T´^ÀTÑJÔJˆDØÐÝ'0Ô'9¸$ÀÄÑ'OÔ'O�”
˜8Ñ$Ø�ð  õ ÐK¸$¼.ÐKÐKÐKÑLÔLÐLØ5ð 
	=ð 
	=ˆEÝ# Eœ]ð 	=ð 	=�	Ø×.Ò.¨x¸¼ÈÑSÔS�ØÐ#Ý(1Ô(:¸4ÀÄÑ(PÔ(P�D”J˜uÑ%Ø�Eð $ð ˜LÒ(Ð(Ø(,¬
°6Ô(:�D”J˜uÑ%Ð%à(,¬
°8Ô(<�D”J˜uÑ%øð
	=ð 
	=r%   Fc                 óê   — dD ]Q}|D ]L}	 d                      ||od|z   |¦  «        }t          j        ||¦  «        \  }}	|c c S # t          $ r Y ŒIw xY wŒR|rt	          d|› d|d         › d�¦  «        ‚d S )N)r   z (TrueType)z{}{}{}ra   zFont z (r   z) not found in registry)ÚformatÚ_winregÚQueryValueExÚOSErrorr(   )
rD   ÚkeyÚbasenameÚstylesÚfailÚsuffixrF   ÚvalnameÚvalrW   s
             r&   Ú_lookup_winzFontManager._lookup_winž   sÁ   € Ø)ð 	ð 	ˆFØð ð �ðØ&Ÿošo¨h¸Ð8KÀ#ÀeÁ)ÈVÑTÔT�GÝ$Ô1°#°wÑ?Ô?‘F�C˜Ø�J�J�J�J�JøÝð ð ð Ø�Hðøøøðð ð [Ý"Ð#Y¨8Ð#YÐ#Y°v¸a´yÐ#YÐ#YÐ#YÑZÔZÐZØ�4s   Š5AÁ
AÁAc                 ó@  — d }t           j        dft           j        dft           j        dft           j        dfg}|D �]P}	 t          j        |Ž }	 |                      || j        t          d         d¦  «        }t          j        || j	        ¦  «        | j
        d<   dD ]}|                      || j        t          |         ¦  «        }|r#t          j        || j	        ¦  «        | j
        |<   ŒN|dk    r| j
        d         | j
        |<   Œj| j
        d         | j
        |<   Œ€	 t          j        |¦  «          d S # t          $ r}|}Y d }~nd }~ww xY w	 t          j        |¦  «         n# t          j        |¦  «         w xY w�ŒA# t          $ r Y �ŒNw xY w|r|‚t          d¦  «        ‚)	Nz2Software\Microsoft\Windows NT\CurrentVersion\Fontsz/Software\Microsoft\Windows\CurrentVersion\Fontsr   Tr^   r   r   z$Can't open Windows font registry key)rx   ÚHKEY_CURRENT_USERÚHKEY_LOCAL_MACHINEÚOpenKeyr‚   r0   r:   r
   r9   r1   r2   ÚCloseKeyr(   rz   )rD   ÚlookuperrorÚkeynamesÚkeynamer{   r7   rF   Úerrs           r&   r?   zFontManager._create_win¬   sï  € ØˆÝÔ/Ð1fÐgÝÔ/Ð1cÐdÝÔ0Ð2gÐhÝÔ0Ð2dÐeðhˆð  ð 	Hñ 	HˆGðÝ”o wÐ/�ð*Ø×+Ò+¨C°´ÅÈÔAQÐSWÑXÔX�DÝ+4Ô+=¸dÀDÄNÑ+SÔ+S�D”J˜xÑ(Ø!Að Ið I˜Ø#×/Ò/°°T´^ÅVÈEÄ]ÑSÔS˜Øð IÝ09Ô0BÀ4ÈÌÑ0XÔ0X˜DœJ uÑ-Ð-à$¨Ò4Ð4Ø48´J¸vÔ4F ¤
¨5Ñ 1Ð 1à48´J¸xÔ4H ¤
¨5Ñ 1Ð 1Øõ Ô$ SÑ)Ô)Ð)Ð)Ð)Ð)øõ $ð &ð &ð &Ø"%�K�K�K�K�K�Køøøøð&øøøØåÔ$ SÑ)Ô)Ð)Ð)ø•GÔ$ SÑ)Ô)Ð)Ð)øøøÑ)øÝð ð ð Ø‘ðøøøð ð "Ø!Ð!ÝÐFÑGÔGÐGsN   ¿E<ÁCD2ÄE<Ä2
EÄ<EÄ>E!ÅEÅE!ÅE<Å!E7Å7E<Å<
F
Æ	F
c                 ó,   — |                       d¦  «        S )z)
        Get the character size.
        ÚM)Úget_text_size©rD   s    r&   Úget_char_sizezFontManager.get_char_sizeÓ   s   € ð ×!Ò! #Ñ&Ô&Ð&r%   c                 ó    — | j         d         }t          |d¦  «        r|                     |¦  «        dd…         S |                     |¦  «        S )z4
        Get the text size (width, height).
        r   Úgetbboxé   é   )r2   r5   r’   Úgetsize)rD   ÚtextrE   s      r&   rŽ   zFontManager.get_text_sizeÙ   sO   € ð Œz˜(Ô#ˆÝ�4˜Ñ#Ô#ð 	&Ø—<’< Ñ%Ô% a¨ cÔ*Ð*à—<’< Ñ%Ô%Ð%r%   c                 óZ  — |r+|r)| j         r|                      d¦  «        S | j        d         S |r)| j         r|                      d¦  «        S | j        d         S |r)| j         r|                      d¦  «        S | j        d         S | j         r|                      d¦  «        S | j        d         S )z>
        Get the font based on bold and italic flags.
        r   r   r   r   )r4   Ú	get_styler2   )rD   ÚboldÚobliques      r&   Úget_fontzFontManager.get_fontã   sÇ   € ð ð 	(�Gð 	(ØŒ}ð 4Ø—~’~ lÑ3Ô3Ð3à”:˜lÔ+Ð+Øð 	(ØŒ}ð .Ø—~’~ fÑ-Ô-Ð-à”:˜fÔ%Ð%Øð 		(ØŒ}ð 0Ø—~’~ hÑ/Ô/Ð/à”:˜hÔ'Ð'àŒ}ð 0Ø—~’~ hÑ/Ô/Ð/à”:˜hÔ'Ð'r%   c                 ó°   — | j         |         }t          |         D ]:}	 |                     |¦  «         |c S # t          $ r Y Œ(t          $ r |cY c S w xY w|S )z}
        Get the specified style of the font if it is a variable font.
        If not found, return the normal font.
        )r2   r:   Úset_variation_by_nameÚ
ValueErrorrz   )rD   rF   rE   Ú
style_names       r&   r˜   zFontManager.get_styleü   s‹   € ð
 Œz˜%Ô ˆÝ  œ-ð 	ð 	ˆJðØ×*Ò*¨:Ñ6Ô6Ð6Ø���øÝð ð ð Ø�Ýð ð ð Ø�����ðøøøð ˆs   ž7·
AÁAÁAN)r+   )F)r    r!   r"   r#   rG   rZ   rC   re   rA   r‚   r?   r�   rŽ   r›   r˜   r$   r%   r&   r*   r*   <   sÔ   € € € € € ðð ðð ð ð ð6ð ð ð=ð =ð =ð(Bð Bð Bð=ð =ð =ð:ð ð ð ð%Hð %Hð %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dS )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                 óf  — 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          |                     dd¦  «        |¦  «        | _        | j                             ¦   «         \  | _        | _        |                     dd¦  «        | _        |                     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¦  «        | _        | j        r | j        | j        z  | j        dz  z   | _         nd | _         g | _!        tE          |d!g ¦  «        }|D ]:}	 | j!         #                    tI          |¦  «        ¦  «         Œ+# tJ          $ r Y Œ7w xY w|                     d"| j        j&        ¦  «        pd#| _'        g | _(        dS )$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“   r1   r+   r0   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   rG   r3   ÚdictrF   r}   Úbackground_colorr   Údefault_image_formatr¦   r   r«   r­   r*   rb   r2   r�   ÚfontwÚfonthr®   r¯   r°   r   r±   r²   r³   rµ   r¶   r·   r¹   Úline_number_widthrº   r   ÚappendÚintrž   Úhighlight_colorr»   Ú	drawables)rD   ÚoptionsÚfontsizeÚhl_lines_strrY   s        r&   rG   zImageFormatter.__init__†  sä  € õ ð 	IÝ!ØGñIô Ið IåÔ˜4Ð+Ð+ 7Ð+Ð+Ð+Ø ˆŒå˜4œ:Ñ&Ô&ˆŒØŒ:Ô&Ð.Ø$*ˆDÔ!Ð!à$(¤JÔ$?ˆDÔ!å*Ø�^Ð%BÐ%BÐ%BØÔ%°ð6ñ 6ô 6ˆÔõ % W¨k¸2Ñ>Ô>ˆŒÝ# G¨Z¸Ñ;Ô;ˆŒå˜w¨°RÑ8Ô8ˆÝ  §¢¨[¸"Ñ!=Ô!=¸xÑHÔHˆŒ
Ø!%¤×!9Ò!9Ñ!;Ô!;ÑˆŒ
�D”Jà%ŸkškÐ*:¸FÑCÔCˆÔØ%ŸkškÐ*:¸FÑCÔCˆÔÝ!,¨WØ-@À!ñ"Eô "EˆÔå ,¨WØ-?Àñ!Hô !HˆÔå".¨wØ/CÀUñ#Lô #LˆÔå*¨7Ð4EÀqÑIÔIˆÔÝ(¨°.À$ÑGÔGˆÔÝ%1°'Ø2IÈ4ñ&Qô &QˆÔ"å +¨GÐ5GÈÑ KÔ KˆÔÝ!,¨WÐ6IÈ1Ñ!MÔ!MˆÔØÔð 	'Ø&*¤j°4Ô3IÑ&IØ&*Ô&:¸QÑ&>ñ'?ˆDÔ"Ð"ð &'ˆDÔ"ØˆŒÝ# G¨Z¸Ñ<Ô<ˆØ ð 	ð 	ˆDðØ”×$Ò$¥S¨¡Y¤YÑ/Ô/Ð/Ð/øÝð ð ð Ø�ðøøøàŸš JØ$(¤JÔ$>ñ@ô @ð JØCIð 	ŒàˆŒˆˆs   É'I3É3
J É?J r   c                 ó    — t          d¦  «        ‚)NzWThe -S option is meaningless for the image formatter. Use -O style=<stylename> instead.)ÚNotImplementedError)rD   Úargs     r&   Úget_style_defszImageFormatter.get_style_defs¾  s   € Ý!ð #Qñ Rô Rð 	Rr%   c                 ó    — | 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˜DœMÑ)Ð)r%   c                 ó@   — ||                       ¦   «         z  | j        z   S )z8
        Get the Y coordinate of a line number.
        )rÏ   r«   ©rD   Ú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Ðr%   c                 ó&   — || j         z   | j        z   S )z?
        Get the X coordinate of a character position.
        )r«   rÂ   )rD   Ú
linelengths     r&   Ú_get_char_xzImageFormatter._get_char_xÔ  s   € ð ˜DœNÑ*¨TÔ-CÑCÐCr%   c                 óV   — |                       |¦  «        |                      |¦  «        fS )zL
        Get the actual position for a character and line position.
        )rØ   rÓ   )rD   r×   rÒ   s      r&   Ú_get_text_poszImageFormatter._get_text_posÚ  s+   € ð ×Ò 
Ñ+Ô+¨T×-=Ò-=¸fÑ-EÔ-EÐEÐEr%   c                 ó:   — | 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Ô 8Ð9Ð9r%   c                 ó2   — |d         �d|d         z   }nd}|S )zE
        Get the correct color for the token from the style.
        ÚcolorNú#z#000r$   )rD   rF   Úfills      r&   Ú_get_text_colorzImageFormatter._get_text_coloræ  s(   € ð �Œ>Ð%Ø˜˜wœÑ'ˆDˆDàˆDØˆr%   c                 ó2   — |d         �d|d         z   }nd}|S )zP
        Get the correct background color for the token from the style.
        ÚbgcolorNrß   r$   )rD   rF   Úbg_colors      r&   Ú_get_text_bg_colorz!ImageFormatter._get_text_bg_colorð  s*   € ð �ÔÐ'Ø˜U 9Ô-Ñ-ˆHˆHàˆHØˆr%   c                 óP   — | j                              |d         |d         ¦  «        S )z5
        Get the correct font for the style.
        r™   Úitalic)r2   r›   )rD   rF   s     r&   Ú_get_style_fontzImageFormatter._get_style_fontú  s$   € ð Œz×"Ò" 5¨¤=°%¸´/ÑBÔBÐBr%   c                 ó|   — |                       |¦  «        | j        z   |                      |dz   ¦  «        | j        z   fS )z.
        Get the required image size.
        r   )rØ   r«   rÓ   )rD   ÚmaxlinelengthÚ	maxlinenos      r&   Ú_get_image_sizezImageFormatter._get_image_size   sD   € ð × Ò  Ñ/Ô/°$´.Ñ@Ø× Ò  ¨Q¡Ñ/Ô/°$´.Ñ@ðBð 	Br%   c                 óú   — |                       |                      |¦  «        t          |¦  «                             | j        ¦  «        | j                             | j        | j        ¦  «        | j	        d¬¦  «         dS )zA
        Remember a line number drawable to paint later.
        N©rE   Útext_fgÚtext_bg)
Ú
_draw_textrÜ   ÚstrÚrjustr°   r2   r›   r±   r²   r®   )rD   ÚposnorÒ   s      r&   Ú_draw_linenumberzImageFormatter._draw_linenumber  s}   € ð 	�ŠØ×$Ò$ UÑ+Ô+Ý�‰KŒK×Ò˜dÔ4Ñ5Ô5Ø”×$Ò$ TÔ%:Ø%)Ô%<ñ>ô >àÔ'Øð 	ñ 	
ô 	
ð 	
ð 	
ð 	
r%   c                 óD   — | j                              |||||f¦  «         dS )zB
        Remember a single drawable tuple to paint later.
        N)rÆ   rÃ   )rD   Úposr–   rE   rï   rð   s         r&   rñ   zImageFormatter._draw_text  s+   € ð 	Œ×Ò˜s D¨$°¸ÐAÑBÔBÐBÐBÐBr%   c                 ó  — dx}x}}dx}}|D �][\  }}|| j         vr|j        }|| j         v°| j         |         }	|                     d¦  «        }|                     d¦  «        }
t	          |
¦  «        D ]õ\  }}|                     d¦  «        }|r»|                      |                      ||¦  «        ||                      |	¦  «        |  	                    |	¦  «        |  
                    |	¦  «        ¬¦  «         | j                             |¦  «        \  }}||z  }t          ||¦  «        }|t          |¦  «        z  }t          ||¦  «        }|                     d¦  «        r	d}d}|dz  }Œö�Œ]|| _        || _        || _        dS )z9
        Create drawables for the token content.
        r   r”   Tú
rî   r¸   N)r}   ÚparentÚ
expandtabsrR   Ú	enumerateÚrstriprñ   rÚ   rè   rá   rå   r2   rŽ   ÚmaxÚlenrk   rê   Ú	maxcharnorë   )rD   ÚtokensourcerÒ   Úcharnor   rê   r×   ÚttypeÚvaluerF   rX   ÚirY   ÚtempÚ
temp_widthrW   s                   r&   Ú_create_drawablesz ImageFormatter._create_drawables  s»  € ð '(Ð'ˆÐ'�˜)Ø%&Ð&ˆ˜
Ø'ð 	 ñ 	 ‰LˆE�5Ø˜tœ{Ð*Ð*Øœ�ð ˜tœ{Ð*Ð*à”K Ô&ˆEð ×$Ò$ QÑ'Ô'ˆEØ×$Ò$ TÑ*Ô*ˆEå$ UÑ+Ô+ð  ð  ‘��4Ø—{’{ 4Ñ(Ô(�Øð 7Ø—O’OØ×*Ò*¨:°vÑ>Ô>ØØ#×3Ò3°EÑ:Ô:Ø"&×"6Ò"6°uÑ"=Ô"=Ø"&×"9Ò"9¸%Ñ"@Ô"@ð $ñ ô ð ð %)¤J×$<Ò$<¸TÑ$BÔ$B‘M�J Ø *Ñ,�JÝ$'¨°zÑ$BÔ$B�MØ�c $™iœiÑ'�FÝ # I¨vÑ 6Ô 6�IØ—=’= Ñ&Ô&ð  à!"�JØ�FØ˜a‘K�Føñ' ð( +ˆÔØ"ˆŒØˆŒˆˆr%   c                 ó¢   — | j         sdS t          | j        ¦  «        D ]0}|| j        z   }|| j        z  dk    r|                      ||¦  «         Œ1dS )z8
        Create drawables for the line numbers.
        Nr   )rµ   Úrangerë   r¹   r·   rõ   )rD   ÚpÚns      r&   Ú_draw_line_numbersz!ImageFormatter._draw_line_numbersB  sn   € ð Ô ð 	ØˆFÝ�t”~Ñ&Ô&ð 	,ð 	,ˆAØ�DÔ*Ñ*ˆAØ�DÔ)Ñ)¨aÒ/Ð/Ø×%Ò% a¨Ñ+Ô+Ð+øð	,ð 	,r%   c                 ó.  — | j         sdS | j        €dS t          j        |¦  «        }|j        d         }| j        | j        z   | j        z
  }|                     d||fg| j	        ¬¦  «         | j
        r"|                     |df||fg| j        ¬¦  «         ~dS )z@
        Paint the line number background on the image.
        Néÿÿÿÿ)r   r   ©rà   r   )rµ   r®   r	   ÚDrawÚsizer«   rÂ   r³   Ú	rectangler¯   r¶   rY   )rD   ÚimÚdrawÚrecthÚrectws        r&   Ú_paint_line_number_bgz$ImageFormatter._paint_line_number_bgM  s¸   € ð Ô ð 	ØˆFØÔÐ&ØˆFÝŒ~˜bÑ!Ô!ˆØ”˜”ˆØ” Ô!7Ñ7¸$Ô:NÑNˆØ�Š˜ ¨ Ð/Ø Ô/ð 	ñ 	1ô 	1ð 	1àÔ%ð 	NØ�IŠI˜˜q�z E¨5 >Ð2¸Ô9LˆIÑMÔMÐMØˆDˆDr%   c           	      óþ  — |                       |¦  «         |                      ¦   «          t          j        d|                      | j        | j        ¦  «        | j        ¦  «        }|                      |¦  «         t          j
        |¦  «        }| j        rˆ| j        | j        z   | j        z
  dz   }|                      ¦   «         }|j        d         |z
  }| j        D ]B}|                      |dz
  ¦  «        }	|                     ||	f||z   |	|z   fg| j        ¬¦  «         ŒC| j        D ]­\  }
}}}}|rŠt+          |d¦  «        r|                     ||¬¦  «        }n|                     |¦  «        dd…         }|                     |
d         |
d         |
d         |d         z   |
d         |d         z   g|¬¦  «         |                     |
|||¬	¦  «         Œ®|                     || j                             ¦   «         ¦  «         dS )
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–   rE   r“   N)rE   rà   )r  r  r   Únewrì   rê   rë   r¾   r  r	   r  rº   r«   rÂ   r³   rÏ   r  rÓ   r  r»   rÆ   r5   r  r’   r–   Úsaver¦   Úupper)rD   r  Úoutfiler  r  Úxr  r  Ú
linenumberÚyr÷   r  rE   rï   rð   Ú	text_sizes                   r&   rw   zImageFormatter.format^  s   € ð 	×Ò˜{Ñ+Ô+Ð+Ø×ÒÑ!Ô!Ð!ÝŒYØØ× Ò  Ô!3°T´^ÑDÔDØÔ!ñ
ô 
ˆð
 	×"Ò" 2Ñ&Ô&Ð&ÝŒ~˜bÑ!Ô!ˆàŒ=ð 	3Ø” Ô!7Ñ7¸$Ô:NÑNÐQRÑRˆAØ×)Ò)Ñ+Ô+ˆEØ”G˜A”J ‘NˆEØ"œmð 3ð 3�
Ø×$Ò$ Z°!¡^Ñ4Ô4�Ø—’  A ¨¨U©°A¸±IÐ(>Ð?Ø$(¤Mð ñ 3ô 3ð 3ð 3à26´.ð 	;ð 	;Ñ.ˆC�˜˜g wØð må˜4 Ñ,Ô,ð 8Ø $§¢°5¸t Ñ DÔ D�I�Ià $§¢¨UÑ 3Ô 3°A°B°BÔ 7�IØ—’  A¤¨¨A¬°°A´¸À1¼Ñ0EÀsÈ1ÄvÐPYÐZ[ÔP\ÑG\Ð]Ðdk�ÑlÔlÐlØ�IŠI�c˜5 t°'ˆIÑ:Ô:Ð:Ð:Ø
�Š�˜Ô*×0Ò0Ñ2Ô2Ñ3Ô3Ð3Ð3Ð3r%   N)r   )r    r!   r"   r#   rU   ÚaliasesÚ	filenamesÚunicodeoutputr¿   rG   rÍ   rÏ   rÓ   rÕ   rØ   rÚ   rÜ   rá   rå   rè   rì   rõ   rñ   r  r  r  rw   r$   r%   r&   r   r     sp  € € € € € ðlð lð^ €DØ#Ð#Ð#€GØ�	€Ià€Mà Ðð6ð 6ð 6ðpRð Rð Rð Rð*ð *ð *ðAð Að Aðð ð ðDð Dð DðFð Fð Fð:ð :ð :ðð ð ðð ð ðCð Cð CðBð Bð Bð
ð 
ð 
ðCð Cð Cð& ð & ð & ðP	,ð 	,ð 	,ðð ð ð"#4ð #4ð #4ð #4ð #4r%   r   c                   ó&   — e Zd ZdZdZdgZdgZdZdS )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#   rU   r$  r%  r¿   r$   r%   r&   r   r   ‡  s5   € € € € € ðð ð €DØˆg€GØ�	€IØ ÐÐÐr%   r   c                   ó(   — e Zd ZdZdZddgZdgZdZdS )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   •  s7   € € € € € ðð ð €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dS )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   £  s8   € € € € € ðð ð €DØ�hÐ€GØ�	€IØ ÐÐÐr%   r   ) r#   r6   r;   Úpygments.formatterr   Úpygments.utilr   r   r   r   rM   ÚPILr   r	   r
   r¼   ÚImportErrorrx   ÚwinregÚ__all__r:   rB   r>   r@   r   Ú	Exceptionr(   r*   r   r   r   r   r$   r%   r&   ú<module>r7     sÄ  ððð ð 
€	€	€	Ø 
€
€
€
à (Ð (Ð (Ð (Ð (Ð (ðð ð ð ð ð ð ð ð ð ð ð ð Ð Ð Ð ðØ/Ð/Ð/Ð/Ð/Ð/Ð/Ð/Ð/Ð/Ø€M€MøØð ð ð Ø€M€M€MðøøøðØ€N€N€N€NøØð ð ð ðØ Ð Ð Ð Ð øØð ð ð Øˆˆˆðøøøøøðøøøð ð  ð  €ð GÐFÐFØ˜hÐ'Ø�(Ø! =Ð1ð	
ð 
€ð +Ð Ø%Ð ØÐ ð7ð 7ð 7ð 7ð 7�kñ 7ô 7ð 7ð3ð 3ð 3ð 3ð 3�9ñ 3ô 3ð 3ðOð Oð Oð Oð Oñ Oô Oð Oðds4ð s4ð s4ð s4ð s4�Yñ s4ô s4ð s4ðr!ð !ð !ð !ð !˜ñ !ô !ð !ð"ð "ð "ð "ð "˜ñ "ô "ð "ð!ð !ð !ð !ð !˜ñ !ô !ð !ð !ð !sA   ¢/ ¯9¸9½A ÁAÁAÁAÁAÁAÁAÁAÁA