o
    ¢�Z-j  ã                   @   s   d Z dZddlmZmZ ddlT ddlT ddlmZ ddl	m
Z
mZmZmZmZmZ ddlmZ ddlmZmZmZmZ dd	lmZ dd
lmZmZ G dd„ deƒZG dd„ deƒZG dd„ deƒZG dd„ dƒZG dd„ deƒZ dd„ Z!e"dkr~e!ƒ  dS dS )z3.3.0zñGenerate ReportLab logo in a variety of sizes and formats.


This module includes some reusable routines for ReportLab's
 'Corporate Image' - the logo, standard page backdrops and
 so on - you are advised to do the same for your own company!é    )ÚinchÚcm)Ú*)ÚDecimalFormatter)Ú
definePathÚGroupÚDrawingÚRectÚPolyLineÚString)ÚWidget)ÚColorÚblackÚwhiteÚReportLabBlue)ÚstringWidth)ÚsinÚpic                   @   s¤  e Zd ZdZed:i deedƒ“deedƒ“deedƒ“deed	ƒ“d
eedƒ“deedƒ“deedd�“deedd�“deedd�“deedd�“deedd�“deedd�“deedd�“deedd�“dee	e
ee
d d d!�fƒd"d�“d#ee
d$d�“d%ee
d&d�“d'eee	eeed d d!�fƒƒd(d�“d)eee	eeed d d!�fƒƒd*d�“d+eeeƒd,d�“ŽZd-d.„ Zd/d0„ Zd1d1d2d3ed2d2fd4d5„Zed6d7„ ƒZd8d9„ Zd2S );ÚRL_CorpLogoz;Dinu's fat letter logo as hacked into decent paths by RobinÚxzLogo x-coordÚyzLogo y-coordÚanglezLogo rotationÚstrokeColorzLogo lettering stroke colorÚ	fillColorzLogo lettering fill colorÚstrokeWidthzLogo lettering stroke widthÚ
backgroundzLogo background color)ÚdescÚborderzLogo border colorÚborderWidthzLogo border width (1)Úshadowz,None or fraction of background for shadowingÚwidthz)width in points of the logo (default 129)Úheightz)height in points of the logo (default 86)ÚskewXzx-skew of the logo (default 10)ÚskewYzy-skew of the logo (default 0)ÚshowPageé   )ÚloÚhiz7If true or (true(top),true(bottom)) show the page linesÚxFlipzIf true do x reversalÚyFlipzIf true do y reversalÚoColorsz1None or fill/stroke colors for the o in ReportLabÚ
pageColorsz/None or fill/stroke colors for the page outlineÚprecz-None or precision negative means strip excessc                 C   s|   t | _d | _d| _t| _d | _d| _d| _d| _	d| _
d | _ | _ | _ | _| _d| _d| _d| _d | _d | _d | _d S )	Nçš™™™™™¹?é   ç      à?éV   é‚   r   é
   g     ÀA@)r   r   r   r   r   r   r   r   r   r!   r    r   r   r   r#   Ú_dxr"   Ú_dyr$   r*   r+   r,   ©Úself© r7   úD/var/www/html/env/lib/python3.10/site-packages/reportlab/lib/corp.pyÚ__init__/   s    
zRL_CorpLogo.__init__c                 C   ó   t | j| jƒ}| | ¡ |S ©N©r   r    r!   Úadd©r6   ÚDr7   r7   r8   ÚdemoA   ó   
zRL_CorpLogo.demor   Nr-   c	              
   C   s  g d¢}	g d¢}
| j }g }|r-t|ƒs||f}|d r"| g d¢¡ |d r-| g d¢¡ |rH|  |	| j¡}	| t|	|d ||d ||d�¡ n|
|	7 }
| j rj|rj|  || j¡}| t||d ||d ||d�¡ n|
|7 }
|  |
| j¡}
| t|
|||||d�¡ d S )N))ÚmoveToçËÖú"¡O@ç‘
cA@)ÚcurveTorC   g†ÉTÁ¨Ä@g¿CQ O¼N@gG8-xÑW@gÄ±.n£N@g:]›ù?)rE   gÐa¾¼ wM@g­nõœô¾Õ?gM2röœL@ç�B²€Ñ¿gµ¦y‹K@rF   )rE   gŸ“Þ7¾~J@rF   g7l[”Ù¨I@ç
¿ÔÏ›ŠÖ?gËÇº¸	I@çcbóqm¨ù?)rE   gO@aÃkH@g+•Ô	è@ç)Ý^ÒH@çóÈ<7@rI   çÝ{¸ä¸³@)rE   rI   gòï3.˜!@g¨ÆK7‰mH@gãˆµø %@g×£p=
I@çÄáÑÆ‘'@)rE   g´CV¯I@çœ3¢´'*@g‡P¥f„J@çm9—âªr+@gh‘í|?�K@rN   )rE   gúDž¤L@rN   gdéCÔM@g}yöÑ)*@gÐDØðôN@gœùÕ ˜'@)rE   gÊ‰v¾N@gfƒL2r%@rC   g�EÓÙÉ€!@rC   rD   Ú	closePath)rB   çöóå]L@rK   )rE   rP   gT:Xÿç°@gw¾Ÿ/YL@g¯Z™ðK}@gVeßÁOL@gÍä›mn @)rE   gXâeSFL@gî%�Ñ:Ú @g�x]¿8L@gî_YiRŠ!@góqm¨'L@gÍ’ 5µ"@)rE   g¡JÍhL@g¬Å§ ¯"@gœ¼è+ L@g*Æù› #@gîÎÚmçK@ç7TŒó7q#@)rE   g‚ÅáÌ¯ÎK@gý‡ôÛ×Á#@gÉ<÷²K@ç™õb('ê#@gÎªÏÕV”K@rR   )rE   gÀ	…8XK@rR   çrm¨ç'K@g¨o™ÓeQ#@çjjÙZK@gV¼‘yä"@)rE   ç�f,šÎÞJ@gèy’!@çÿ[ÉŽ�ÌJ@gó«9@0@rV   ç'½o|íÙ@)rE   rV   gèj+ö—½@rU   gZ�!«›@rT   gNîw(
t@)rE   rS   gRÑè"@g)Ý^ÒXK@ç�÷ª•	¿@g'1¬–K@rX   )rE   grPÂLÛÏK@rX   g:]›ÿK@gš™™™™@gšë4ÒR%L@g,H3Mg@)rE   g×£p=
KL@g/n£¼@rP   gW	‡3@rP   rK   rO   )•)rB   gû\mÅþr/@r   )ÚlineTogèME*Œý"@r   )rY   gDL‰$z™@gEž$]3Y@)rE   gZ‰{,}@gÇº¸�Ð@g²c#¯K@g"T©Ùm@gÛŠýe÷@gÇ.Q½50@)rE   gç Á=¾@gö´Ã_ó@gô7¡g@gé`ýŸÃÜ@gWCâKÿ@ç±ù¸6Tì@)rY   çaŽ¿·)@rW   )rY   r[   r   )rY   çU‡Ü7àá?r   )rY   r\   çÓÞà“13@)rY   gÝÍSrÓ@r]   )rE   g—­õEB"@r]   g<ƒ†þ	þ%@g‡¿&kÔ»2@gÊ‰v’(@g|a2UÐ1@)rE   g·e¥IÙ+@g{ˆFw£0@ç"ýöuà|-@g°¬4)í-@r^   g…_êçM•)@)rE   r^   gÅ¬C9ñ$@gïU+~I+@g#J{ƒ/¼!@g4ôOp±â&@rZ   rO   )rB   çKÍhF@ç±Ÿ`œ$@)rY   gÃ¶E™Ò@r`   )rE   g›sôx@r`   g‘,`·®@gpB!%@g¶g–¨¹ @g˜£Çïmú%@)rE   g²ˆ×õ›!@g¤SW>Ëã&@ç"Žuq"@g/ú
Ò(@ra   g„Ó‚}u)@)rE   ra   g¤ÂØB�S,@gü ¤6qb @çûWVš”Â-@gÑW�f,@rb   )rY   r_   rb   rO   )rB   ç�.‹‰Í9@çÂú?‡ù2@)rY   gnLOXây>@gw¡¹N#Í@)rE   g;ªš ê>@gQèy@g 7©0V=@gÛe6Hû?g�ÇTÆ7<@géÔ•Ïò<í?)rE   g~Wÿ[;@g|—wJ¿?g‰«x#£9@rF   ç"ŽuqÕ7@rF   )rE   g'kÔC4²5@rF   g0Úr.4@g�pZð¢¯Ô?g¼t“Î2@gNÑ‘\þCø?)rE   gÓö¯¬4™1@gãkÏ,	Ð@ç»aÛ¢Ìþ0@g0žACÿ„@rf   gczÂè@)rE   rf   gJ+‡6!@géñ{›þ¤1@gUMu¯$@gá´àE_ñ2@gÜ�µÛ^'@)rE   g¯|–çÁ=4@gŠvR~*@g¦Õ�¸Çê5@ç\ætYLl+@gFÎÂžvø7@rg   )rE   g¤SW>Ë:@rg   g
p¥;@gsº,&6*@g‡§WÊ2Ü<@g0»'…'@)rE   gˆ�)t^>@g»íBs�æ$@ç;ªš ê®>@gè¤÷�¯m!@rh   g†8ÖÅm4@)rY   g+Áâpæ§>@ç»aÛ¢¬@)rY   gTÆ¿Ï¸ˆ6@ri   )rE   gS£’:™6@gëÿæ+@gòµg–7@ç‚Êø÷×@re   rj   )rE   gZžwgu8@rj   gØÓMÞ8@gB²€	\@rc   rd   rO   )rB   çr¿CQ /9@çL‰$zµ @)rE   rk   g¿}8g4!@gÑèb'9@g~©Ÿ7©!@gW>Ëóà9@gÁnØ¶("@)rE   gXÿç0_9@g°=³$@}"@gs.ÅUeï8@çFÎÂžvØ"@g™dä,ìÑ8@g–x@Ù$#@)rE   gÜK£u´8@rQ   g™Óe1±‘8@gè¤÷�¯­#@gýöuàœi8@g|~!<Ú#@)rE   g}Ëœ.‹A8@gŸ°ÄÊ$@gÙëÝï8@ç>"¦D$@gŸ°ÄÊæ7@rn   )rE   gkñ) Æƒ7@rn   g$î±ô¡37@g¬ZdË#@gu“Vö6@gœ¿	…(#@)rE   gS‘
c¹6@g1Óö¯¬„"@çÑèbgš6@gˆht±³!@ro   rl   rO   )rB   çtêÊgy.C@çbg
�÷À)rY   çš_Í‚i@@rq   )rY   rr   ç ®dÇFà*@)rY   rp   rs   )rY   ç{Ic´ŽC@gQèy'@)rE   g‡3¿š<C@gYni5$Þ'@g ïU+ZC@g^×/Ø‹(@g"¦D½xC@gEž$]3)@)rE   g�x]—C@g,eâX§)@çÜN^¸C@g{Nzßø*@g]Š«Ê¾ÛC@ç2ZGUt*@)rE   g×ÀV	ÿC@géeË-Í*@gÚá¯É%D@g’"2¬â+@g`«‹ÃMD@g.� ø16+@)rE   gætYLlvD@gXVš”‚^+@g+Ù±ˆ£D@rN   gE*Œ-ÕD@rN   )rE   g>®ãŒE@rN   gŠ°áé•"F@rM   g ïU+–F@rL   )rE   gñº~ÁnG@gÜôg?R%@ç¯þ·’AG@g�Ñ:ªš !@rw   ç+j0Í@)rE   rw   rJ   g­ú\mÅ
G@gIhË¹×@ga2U0*�F@rH   )rE   göóå1F@rG   gsôø�E@rF   gŒ¾‚4cáD@rF   )rE   gšë4ÒR5D@rF   gÂ&SŸC@g8¡‡PÛ?rt   g[™ðKý<ý?)rE   gê•²q$C@ç˜À­»yö?gyÌ@eü'C@gÀÏ¸p ¤ð?giW!å')C@gÕ	h"lxç?)rE   gd’‘³,C@g)"Ã*ÞÈÚ?rp   g˜//À>:¥?rp   g½R–!ŽuÙ¿rO   )rB   çk+ö—ÝcD@çK“RÐíe@)rE   rz   gïU+~é@g¨©ekUD@gRD†U¼Ñ @g†�ˆ)‘8D@g'ÚUHùÉ!@)rE   g¹ˆïÄ¬D@gQfƒL2Â"@g‘,`·òC@ç‘'I×L>#@gÄÎ:¯½C@r|   )rE   g•š=Ð
PC@r|   çp¶¹1=C@g[ë‹„¶\!@r}   gPp±¢3@)rE   r}   gŠ«Ê¾+‚@gCV·zNNC@çOÌz1”S@ru   r~   )rE   g…™¶eíC@r~   g0žACD@g©ÐDØ°@gý¤Ú§ã5D@gW•}W¿@)rE   gÿ[ÉŽ�TD@géeË-Í@rz   g¬­Ø_v¯@rz   r{   rO   )rB   çÿÊJ“RrQ@r   )rY   ç¤p=
×P@r   )rY   r€   rs   )rY   r   rs   )rY   g’ËH¿_Q@gÅæãÚP¡%@)rE   gÈ$#ga•Q@g­nõœôŽ)@gÙB�ƒîQ@ç„�çÞÃ…+@ç OäIÒiR@r�   )rY   r‚   gƒÀÊ¡U @)rE   gtÈ^ïBR@g	Šcî @gµûËî!R@çBx´qÄ:!@gT ŒgÐR@rƒ   )rE   g�‘a×Q@rƒ   gÑèbg²Q@gX­Lø¥¾ @g}iÆ˜Q@g[B>èÙŒ@)rE   gZð¢¯ Q@g*ãßgœ@r   gðùa„ðÈ@r   gQèy@rO   )rB   çÚÉà(ycT@r   )rY   çR,·´ S@r   )rY   r…   rm   )rY   çÓMbX›R@rm   )rY   r†   rs   )rY   r…   rs   )rY   r…   ç|~!d1@)rY   r„   r‡   )rY   r„   rs   )rY   ç�÷ª•	ÙT@rs   )rY   rˆ   rm   )rY   r„   rm   rO   )rB   ç›Z¶ÖËW@r   )rY   ç 2þ}ÆEU@r   )rY   rŠ   r]   )rY   çŠ<Iºf¶V@r]   )rY   r‹   ç4×i¤¥r@)rY   r‰   rŒ   rO   )rB   ç¦',ñ€€[@r   )rY   çŠ}"Z@r   )rE   gU0*© Z@g¿·éÏ~¤Ü?g‘ao"Z@g|,}è‚úë?gnšë4$Z@g?ÆÜµ„|ô?)rE   g²ˆ×õ%Z@gæèñûú?g˜À­»'Z@g•eˆc] @gdùƒ�)Z@g¶ä „@)rE   ggòÍ67ìY@gê[ætYLâ?gRòêšY@rF   gí»"øß2Y@rF   )rE   gÁÅŠLÙX@rF   g ®dÇF’X@g¢ÑÄÎÖ?g«•	¿Ô]X@gz6«>WÛù?)rE   g¼W­Lø)X@g�´TÞŽð@çNîw(
X@g1%’èe@r�   grö´Ã?@)rE   r�   g-•·#œæ!@géšÉ7Û*X@godùC%@gôlV}`X@gÕçj+ö·'@)rE   gR,·´–X@g£éìdp4*@g§èH.ßX@rN   g–Ïò<¸;Y@rN   )rE   g¸Ìé²˜šY@rN   g!ÈA	3çY@gIhË¹×)@gèME*Œ!Z@grm¨çŸ&@)rE   g
.VÔ` Z@g0ÃGÄô&@gÝê9é}Z@gåí§?'@gw;SèZ@gh†¬~'@)rE   gü©ñÒMZ@gXâeS¾'@g–Ïò<¸Z@gÞ“‡…Zó'@rŽ   g’èeË(@)rY   çk}‘Ð–Z@g­ú\mÅ®)@)rY   gû?‡ùòZ@rs   )rY   r�   rs   rO   )rB   r�   ç•Ô	h"Œ@)rE   r�   gïá’ãN‰@g<úDZ@gCâK:@g¶J°8œZ@g0žACO @)rE   gE¦aøZ@gQÚ|!@gÉq§t°Z@gß7¾öÌ’!@g[%XÎZ@gP0žA"@)rE   gé·¯çZ@g¤‹¦³s"@g3Pÿ>ûY@g1ëÅPNÄ"@g$bJ$ÑñY@g÷’Æhõ"@)rE   gt{IcèY@g„Ø™Bç%#@gû"¡-çÜY@r|   gÁâpæWÏY@r|   )rE   g³A&9“Y@r|   ç0Úr.uY@g�Âõ(\ÿ @r’   g¥,Cë@)rE   r’   gø6ýÙ�”@gµ2á—ú�Y@ç_)ËÇº@gýöuàœÅY@r“   )rE   gò°PkšýY@r“   r�   g”Þ7¾öl@r�   r‘   rO   )rB   gŸåypwŽ]@r   )rY   çÇº¸�$\@r   )rY   r”   çW•}Wÿ4@)rY   ç#Æ‚†]@r•   )rY   r–   gJëÿF+@)rE   r–   gd*ãß*@gÉŽ�@¼„]@g{Nzßøš(@g,g~5�]@g¬sÈ^ÿ&@)rE   g„*5{ ¡]@gsº,&6Ÿ(@g|¸ä¸SÂ]@g¼®_°Æ)@g:¯±KTã]@rv   )rE   gìQ¸…^@g¯™|³Í+@g1|DL‰0^@rN   gO¯”ed^@rN   )rE   g‰ÒÞàÅ^@rN   g®ÓHKå_@g[rP2*@g{1”íD_@gÄ”H¢—±'@)rE   gK°8œùy_@gi:;5%@çôlV}”_@g2rö´³!@r—   g´Èv¾ŸZ@)rE   r—   gOGÉ«³@gm±y_@g§Ëbbóñ@gøˆ˜IB_@gî=\rÜ©ø?)rE   gGÉ«s_@çžï§ÆK7Õ?gpënžêÀ^@rF   gm­/Ú`^@rF   )rE   gŠ}"O2^@rF   gâX·Ñ
^@gÁ=~oÓ¿¿gŠ<Iºfê]@g»íBs�FÆ?)rE   g£Ó0|Ú]@r˜   g•Ô	h"Ê]@g­4)Ý^á?g…|Ð³Y¹]@gìú»aÛé?)rE   gq>?Œ¨]@g$œ¼è+ñ?gúÕ ˜—]@ry   r–   gº,&6×ü?)rE   gž{—‡]@gŠŽäòRú?gV-²‡]@g{Ic´Ž*ø?g|›þìGˆ]@gÇK7‰A`ö?)rE   gâuý‚Ýˆ]@g„fÚþ•ô?gZ»íBs‰]@gœùÕ ó?gÕ!7ÃŠ]@g‡P¥æñ?rO   )rB   ç}iÆ¢%^@rx   )rE   r™   g;äf¸?!@gö´Ã_“^@ç—�z6+#@gÖ¨‡htË]@rš   )rE   g¶-Êl–]@rš   ç5æè{]@gÑ\§‘–Z!@r›   gm9—âªr@)rE   r›   g%#gaOÛ@gHùIµO—]@çr¿CQ @g\rÜ)Î]@rœ   )rE   g#øßJv^@rœ   r™   g£¢Ñ¤@r™   rx   rO   r   ))rB   çûWVš”Z@@ç%’èe-@)rY   r�   çÿìGŠÈèG@)rY   gr3Ü€	T@rŸ   )rY   ç/ú
ÒŒ�V@gž$]3ùšB@)rY   r    çX9´È4@)rY   çŽ’WçJU@r¡   )rY   r¢   çÑèbgº>@)rY   çñ.ñ�jR@r£   )rY   r¤   ç£;ˆ�)E@)rY   çW	‡3'C@r¥   )rY   r¦   rž   rO   )rB   ç°rh‘íÐS@çÄ%Ç�Ò)B@)rY   r¢   r¨   )rY   r§   r¥   rO   r.   )	)rB   r¦   çŠå–VC"À)rY   r¦   çLqUÙw�9À)rY   r¢   rª   )rY   r¢   ç®ž“Þ7>ö¿)rY   r    r«   )rY   r    çÔÔ²µ&?À)rY   r�   r¬   )rY   r�   r©   rO   )r   r   r   ÚdxÚdy)r$   ÚisSeqÚextendÚ	applyPrecr,   r=   r   )r6   Úgr­   r®   r   r   r   Ú_ocolorsÚ_pagecolorsÚOPÚPr$   ÚPPr7   r7   r8   Ú
_paintLogoF   s*   $
$zRL_CorpLogo._paintLogoc                 C   sp   |d u r| S g j }t|d�}| D ]$}t|ƒr0g j }|D ]}t|tƒr(t||ƒƒ}||ƒ q|j}||ƒ q|jS )N)Úplaces)Úappendr   r¯   Ú
isinstanceÚfloatÚ__self__)r¶   r,   ÚRÚfÚpÚnÚer7   r7   r8   r±   k   s   



zRL_CorpLogo.applyPrecc                 C   s   | j }| j}tƒ }| j}| j}| j}| j}| j| j}}	|rF|d ur=d|  kr,dk r=n nt	|j
| |j| |j| ƒ}| j|dd|d� | j|||| jpOd | jpSd d� |j| j| jd� | | j| j¡ tƒ }
|
 |¡ d\}}| j| j}}|s€|r�|r�|
 dtdd|||||d	�¡ ||ks—||kr¥|
 |t|ƒ |t|ƒ ¡ | j}| jrÇ|d
 |d
 }}|
 | | ¡ |
 |¡ |
 ||¡ t| ddƒrÏdpÐd}t| ddƒrÙdpÚd}|sà|�r|pãd}|pçd}|
 || ||  ||	 ||  ¡ t|
|dd|ddfd�}
|
S |
 ||	¡ |
S )Nr   r.   ç      Àr%   )r®   r­   r   )r   r   r³   r´   ©ÚkxÚky)r1   r0   )r   r   r   g       @r(   éÿÿÿÿr)   )Ú	transform) r   r   r   r   r   r   r   r   r   r   ÚredÚgreenÚbluer¸   r*   r+   Úskewr"   r#   Úshiftr3   r4   r=   r    r!   Úinsertr	   Úscaler¼   r   ÚrotateÚgetattr)r6   r   r   r²   ÚbgÚbdÚbdwr   r   r   ÚGÚ_wÚ_hÚwÚhr   r(   r)   ÚsxÚsyr7   r7   r8   Údraw{   sP    
ÿ
,

$ÿzRL_CorpLogo.drawr7   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚAttrMapÚAttrMapValueÚisNumberÚisColorOrNoneÚisNumberOrNoneÚEitherOrÚ	isBooleanÚ
SequenceOfÚNoneOrÚisColorÚisIntÚ_attrMapr9   r@   r   r¸   Ústaticmethodr±   rÜ   r7   r7   r7   r8   r      sb    
ÿ
þ
ý
ü
û
úùø	÷
öõôóòñðï"î"íì%
r   c                   @   s   e Zd Zdd„ ZdS )ÚRL_CorpLogoReversedc                 C   s   t  | ¡ t| _t| _d S r;   )r   r9   r   r   r   r   r5   r7   r7   r8   r9   ¦   s   

zRL_CorpLogoReversed.__init__N)rÝ   rÞ   rß   r9   r7   r7   r7   r8   rî   ¥   s    rî   c                   @   s†   e Zd ZdZeeeƒeeƒeeƒeeƒeeƒeeƒd�Z	dZ
dZdZdZdZdd	„ Zd
d„ Zddd„Zddd„Zddd„Zdd„ ZdS )ÚRL_CorpLogoThinz—The ReportLab Logo.

    New version created by John Precedo on 7-8 August 2001.
    Based on bitmapped imaged from E-Id.
    Improved by Robin Becker.)r   r   r!   r    r   r   g      V@g     a@zR e p o r t L a búHelvetica-Boldé   c                 C   s,   t | _t| _d| _d| _| j| _| j| _	d S ©Nr   )
r   r   r   r   r   r   r×   r!   rÖ   r    r5   r7   r7   r8   r9   Á   s   zRL_CorpLogoThin.__init__c                 C   r:   r;   r<   r>   r7   r7   r8   r@   É   rA   zRL_CorpLogoThin.demor   Nc                 C   s   t ||| j| j| j|d�S )N)ÚfontNameÚfontSizer   )r   Ú_textÚ	_fontNameÚ	_fontSize)r6   r   r   Úcolorr7   r7   r8   Ú_getTextÎ   s   zRL_CorpLogoThin._getTextc                 C   s:   | j }|d u r	d}|d u rt|ƒ}t|||… | j| jƒS rò   )rõ   Úlenr   rö   r÷   )r6   r¿   ÚlÚtextr7   r7   r8   Ú_swÑ   s   zRL_CorpLogoThin._swé   c                 C   s®   d| d| }}d}|d |d }	}
||d ||	||	||d g||d ||
|| |
||
| ||d	 g
|d |
|d |
| ||
| gg}|D ]}|  t|||d
d�¡ qGd S )Ngš™™™™Ù?@g®Gáz>T@r2   é"   g     @I@é   r.   é   é   r   )r   r   ÚstrokeLineJoin)r=   r
   )r6   r²   r   rø   r­   r®   Úx1Úx2ÚfLÚy1Úy2ÚLrû   r7   r7   r8   Ú_addPage×   s   &þÿzRL_CorpLogoThin._addPagec              
   C   s6  d}| j }| j}t|j| |j| |j| ƒ}tƒ }tƒ }| t||dd| j	| j
d�¡ | j	d |  ¡  }| |d¡ | j|ddd|d� | j|d|d	� | d| d¡ | | jdd|d
�¡ | | jdd|d
�¡ | |d¡ |jddd� | dd¡ | |¡ | | j| j	 | j| j
 ¡ | | j| j¡ |S )Nr/   r   )r   r   r   r   r    r!   r%   r.   rþ   rÃ   )r   r­   r®   rø   )r   rø   )r   r   rø   r2   rÄ   é&   )r   r   r   rÉ   rÊ   rË   r   r=   r	   rÖ   r×   rý   rÏ   r
  rù   rÌ   rÍ   r    r!   r   r   )r6   rÚ   r   r   r   r²   Úg2r7   r7   r8   rÜ   â   s*   
zRL_CorpLogoThin.draw)r   r   N)NN)rþ   Nr   r   )rÝ   rÞ   rß   rà   rá   râ   rã   rå   rä   rì   r×   rÖ   rõ   rö   r÷   r9   r@   rù   rý   r
  rÜ   r7   r7   r7   r8   rï   «   s*    ú	


rï   c                   @   s4   e Zd ZdZddde de dfdd„Zdd„ Zd	S )
ÚReportLabLogoz:vector reportlab logo centered in a 250x by 150y rectangler   g      @g      ø?c                 C   s   ||f| _ ||f| _|| _d S r;   )ÚoriginÚ
dimensionsÚ
powered_by)r6   ÚatxÚatyr    r!   r  r7   r7   r8   r9   ü   s   


zReportLabLogo.__init__c                 C   s^   ddl m} | ¡  | j\}}| j\}}tƒ }|||_|_| | 	¡ |||d¡ | 
¡  d S )Nr   )Ú	renderPDF)Úreportlab.graphicsr  Ú	saveStater  r  r   r    r!   rÜ   r@   ÚrestoreState)r6   Úcanvasr  r  r  r    r!   Úlogor7   r7   r8   rÜ     s   

zReportLabLogo.drawN)rÝ   rÞ   rß   rà   r   r9   rÜ   r7   r7   r7   r8   r  ù   s    r  c                   @   s  e Zd ZdZed!i deeƒ“deeƒ“deeƒ“deeƒ“deeƒ“deeƒ“deeƒ“d	eeƒ“d
eeƒ“dee	ƒ“dee	ƒ“dee
ƒ“dee
ƒ“dee
ƒ“dee
ƒ“dee
ƒ“dee
ƒ“dee
ƒ“deeƒ“deeƒ“ŽZde Zde ZdZdZdd„ Zdd„ Zdd„ Zd S )"ÚRL_BusinessCarda»  Widget that creates a single business card.
    Uses RL_CorpLogo for the logo.

    For a black border around your card, set self.border to 1.
    To change the details on the card, over-ride the following properties:
    self.name, self.position, self.telephone, self.mobile, self.fax, self.email, self.web
    The office locations are set in self.rh_blurb_top ("London office" etc), and
    self.rh_blurb_bottom ("New York office" etc).
    r   r   ÚaltStrokeColorr   r   r!   r    r   ÚbleedÚ	cropMarksr   ÚnameÚpositionÚ	telephoneÚmobileÚfaxÚemailÚwebÚrh_blurb_topÚrh_blurb_bottomgffffff@g      !@rð   z,strategic reporting solutions for e-businessc                 C   sˆ   t | _t| _t| _d| _d| _| j| _	| j
| _| jd | _dt | _d| _d| _d| _d| _d| _d| _d	| _d
| _d| _g d¢| _d S )Nr   gš™™™™™@çš™™™™™É?r.   zJoe CoolzFreelance Demonstratorz020 8545 7271ú-z020 8544 1311zinfo@reportlab.comzwww.reportlab.com)zLondon office:zReportLab Europe LtdzMedia Housez3 Palmerston RoadÚ	WimbledonzLondon SW19 1PGzUnited Kingdom)r   r   r   r   r   r  r   r   r×   r!   rÖ   r    r   r   r  r  r   r  r  r  r   r!  r"  r#  r$  r5   r7   r7   r8   r9   3  s&   
zRL_BusinessCard.__init__c                 C   r:   r;   r<   r>   r7   r7   r8   r@   O  rA   zRL_BusinessCard.democ                 C   sø  | j }| j}tƒ }| tdd| j | j | j| jd�¡ | td| j| j | j | j | j| jd�¡ tƒ }tƒ }dt	 |_dt	 |_| 
¡  | |¡ | |¡ |j| j|j| jd   | j|j| jd   d� | t| jd | j|j| jd   d|j  d	| jd
d| jd�¡ g d¢}| j| j| j| j| jg}| ¡  | ¡  tt|ƒddƒD ]I}| t| j| jd  | jd |d d  d| jdd||d  d�¡ | t| j| jd  | j | jd |d d  d| jdd||d  d�¡ q§| j| j | jd  d }	| j}
tdt|
ƒd ƒD ] }| t| j| jd  |	|d  d| jdd|
|d  d�¡ �q
| t| j| jd  |	d d| jdd| jd�¡ |	d }| t| j| jd  |d d| jdd| jd�¡ | j�rr| tddd t| j| jd�¡ | | j| j¡ |S )Nr   )r   r   r   r   r    r!   g      ô?gffffffþ?é*   )r   r   g      @g“8xßÚ?é   zHelvetica-BoldObliqueÚstart)r   r   rô   r   ró   Ú
textAnchorrü   )zTel:zMobile:zFax:zEmail:zWeb:rÇ   r.   g      @é   Ú	Helveticar%   Úendr2   g      (@é   )r   r   r   r=   r	   r   r!   r    r   r   rÜ   rÍ   r   r  Ú
_strapliner  r   r!  r"  r#  ÚreverseÚrangerú   r$  r  r  r   r   r   r   )r6   r   r   r²   r  ÚrlÚleftTextÚleftDetailsr¿   ÚtyÚ	rightTextÚty1r7   r7   r8   rÜ   T  s¶   
üü



ÿú
ú

ú	

úúú
üzRL_BusinessCard.drawNr7   )rÝ   rÞ   rß   rà   rá   râ   rä   rã   rå   rç   ÚisStringÚisListOfStringsOrNonerì   r   r×   rÖ   rö   r1  r9   r@   rÜ   r7   r7   r7   r8   r    sd    
ÿþýüûúùø	÷
öõôóòñðïîíìr  c                  C   s6  t ƒ } d| _d| _t| j| jƒ}| | ¡ d|jd< |jdg d¢d� tƒ } d| _d| _t| j| jƒ}| | ¡ d|jd< |jdg d¢d� tƒ } td	d	d	ƒ| _	d| _d| _t| j| jƒ}| | ¡ d|jd< |jd
g d¢d� t
ƒ } d| _d| _d| _t| jd | jd ƒ}| | ¡ d|jd< |jddgd� dS )z,This function produces a pdf with examples. é�   r0   r.   ÚverboseÚcorplogo_whiteonblue)ÚpdfÚepsÚjpgÚgif)ÚfnRootÚformatsÚcorplogo_blueonwhiter&  Úcorplogo_grayonwhiteé   é2   r  r?  N)r   r    r!   r   r=   Ú__dict__Úsaverî   r   r   r  r   r   r   )r4  r?   r7   r7   r8   Útest·  s<   







rK  Ú__main__N)#Ú__version__rà   Úreportlab.lib.unitsr   r   Úreportlab.lib.validatorsÚreportlab.lib.attrmapÚreportlab.lib.formattersr   Úreportlab.graphics.shapesr   r   r   r	   r
   r   Úreportlab.graphics.widgetbaser   Úreportlab.lib.colorsr   r   r   r   Úreportlab.pdfbase.pdfmetricsr   Úmathr   r   r   rî   rï   r  r  rK  rÝ   r7   r7   r7   r8   Ú<module>   s,     N -*
ÿ