a
    7Xh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 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g dfddZedkre  dS )z3.3.0zGenerate 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)stringWidthc                   @   sR  e Zd ZdZeeedeedeedeedeedee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	eedd	ee	e
ee
dddfdd	ee
dd	ee
dd	eee	eeedddfdd	eee	eeedddfdd	eeedd	dZdd Zdd Zdddd eddfd!d"Zed#d$ Zd%d& ZdS )'RL_CorpLogoz;Dinu's fat letter logo as hacked into decent paths by RobinzLogo x-coordzLogo y-coordzLogo rotationzLogo lettering stroke colorzLogo lettering fill colorzLogo lettering stroke widthzLogo background color)desczLogo border colorzLogo border width (1)z,None or fraction of background for shadowingz)width in points of the logo (default 129)z)height in points of the logo (default 86)zx-skew of the logo (default 10)zy-skew of the logo (default 0)   )lohiz7If true or (true(top),true(bottom)) show the page lineszIf true do x reversalzIf true do y reversalz1None or fill/stroke colors for the o in ReportLabz/None or fill/stroke colors for the page outlinez-None or precision negative means strip excess)xyanglestrokeColor	fillColorstrokeWidth
backgroundborderborderWidthshadowwidthheightskewXskewYshowPagexFlipyFlipoColors
pageColorsprecc                 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 r5   W/var/www/viveiro_mudafortebrasil/venv/lib/python3.9/site-packages/reportlab/lib/corp.py__init__.   s     zRL_CorpLogo.__init__c                 C   s   t | j| j}||  |S Nr   r!   r"   addr4   Dr5   r5   r6   demo@   s    
zRL_CorpLogo.demor   Nr+   c	              
   C   s  g d}	g d}
| j }g }|rZt|s.||f}|d rD|g d |d rZ|g d |r| |	| j}	|t|	|d ||d ||d n|
|	7 }
| j r|r| || j}|t||d ||d ||d n|
|7 }
| |
| j}
|t|
|||||d d S )N))moveTo"O@
cA@)curveTor?   gT@gCQON@gG8-xW@gı.nN@g:]?)rA   ga wM@gn?gM2rL@BѿgyK@rB   )rA   g7~J@rB   g7l[٨I@
ϛ?gǺ	I@cbqm?)rA   gO@akH@g+	@)^H@<7@rE   {丳@)rA   rE   g3.!@gK7mH@g㈵ %@gףp=
I@Ƒ'@)rA   gCVI@3'*@gPfJ@m9r+@gh|?K@rJ   )rA   gDL@rJ   gdCM@g}y)*@gDN@g '@)rA   gʉvN@gfL2r%@r?   gEɀ!@r?   r@   	closePath)r>   ]L@rG   )rA   rL   gT:X@gw/YL@gZK}@gVeOL@gmn @)rA   gXeSFL@g%: @gx]8L@g_YiR!@gqm'L@g͒ 5"@)rA   gJhL@gŧ "@g+ L@g* #@gmK@7T7q#@)rA   g̯K@g#@g<K@b('#@gΪVK@rN   )rA   g	8XK@rN   rm'K@goeQ#@jjZK@gVy"@)rA   f,J@gy!@[ɎJ@g9@0@rR   'o|@)rA   rR   gj+@rQ   gZ!@rP   gNw(
t@)rA   rO   gR"@g)^XK@	@g'1K@rT   )rA   grPLK@rT   g:]K@g@g4R%L@g,H3Mg@)rA   gףp=
KL@g/n@rL   gW	3@rL   rG   rK   ))r>   g\mr/@r   )lineTogME*"@r   )rU   gDL$z@gE$]3Y@)rA   gZ{,}@gǺ@gc#K@g"Tm@gۊe@g.Q50@)rA   g =@g_@g7g@g`@gWCK@6T@)rU   a)@rS   )rU   rW   r   )rU   U7?r   )rU   rX   13@)rU   gSr@rY   )rA   gEB"@rY   g<	%@g&kԻ2@gʉv(@g|a2U1@)rA   geI+@g{Fw0@"u|-@g4)-@rZ   g_M)@)rA   rZ   gŬC9$@gU+~I+@g#J{/!@g4Op&@rV   rK   )r>   KhF@`$@)rU   göE@r\   )rA   gsx@r\   g,`@gpB!%@gg @gm%@)rA   g!@gSW>&@"uq"@g/
(@r]   gӂ}u)@)rA   r]   gBS,@g 6qb @WV-@gWf,@r^   )rU   r[   r^   rK   )r>   .9@?2@)rU   gnLOXy>@gwN#@)rA   g; >@gQy@g70V=@ge6H?gT7<@gԕ<?)rA   g~W[;@g|wJ?gx#9@rB   "uq7@rB   )rA   g'kC45@rB   g0r.4@gpZ?gt2@gNё\C?)rA   g41@gk,	@aۢ0@g0AC@rb   gcz@)rA   rb   gJ+6!@g{1@gUMu$@gE_2@gܝ^'@)rA   g|=4@gvR~*@gՐ5@\tYLl+@gFv7@rc   )rA   gSW>:@rc   g
p;@gs,&6*@gW2<@g0''@)rA   g)t^>@gBs$@; >@gm!@rd   g8m4@)rU   g+p>@aۢ@)rU   gTƿϸ6@re   )rA   gS:6@g+@gg7@@ra   rf   )rA   gZwgu8@rf   gM8@gB	\@r_   r`   rK   )r>   rCQ/9@L$z @)rA   rg   g}8g4!@gb'9@g~7!@gW>9@gnض("@)rA   gX0_9@g=$@}"@gs.Ue8@Fv"@gd,8@gx@$#@)rA   gKu8@rM   ge18@g#@gui8@g|~!<#@)rA   g}˜.A8@g$@g8@>"D$@g7@rj   )rA   gk) ƃ7@rj   g$37@gZd#@guV6@g	(#@)rA   gS
c6@g1"@bg6@ght!@rk   rh   rK   )r>   tgy.C@bg
)rU   _i@@rm   )rU   rn    dF*@)rU   rl   ro   )rU   {IcC@gQy'@)rA   g3<C@gYni5$'@g U+ZC@g^/(@g"DxC@gE$]3)@)rA   gx]C@g,eX)@N^C@g{Nz*@g]ʾC@2ZGUt*@)rA   gV	C@ge-*@g%D@g"2+@g`MD@g.16+@)rA   gtYLlvD@gXV^+@g+ٱD@rJ   gE*-D@rJ   )rA   g>E@rJ   g"F@rI   g U+F@rH   )rA   g~nG@gg?R%@AG@g:!@rs   +j0@)rA   rs   rF   g\m
G@gIh˹@ga2U0*F@rD   )rA   g1F@rC   gsE@rB   g4cD@rB   )rA   g4R5D@rB   g&SC@g8P?rp   g[K<?)rA   gꕲq$C@y?gy@e'C@gϸp ?giW!')C@g	h"lx?)rA   gd,C@g)"*?rl   g//>:?rl   gR!uٿrK   )r>   k+cD@KRe@)rA   rv   gU+~@gekUD@gRDU @g)8D@g'UH!@)rA   gĬD@gQfL2"@g,`C@'IL>#@g:C@rx   )rA   g=
PC@rx   p1=C@g[닄\!@ry   gPp3@)rA   ry   gʾ+@gCVzNNC@Oz1S@rq   rz   )rA   geC@rz   g0ACD@gDذ@gڧ5D@gW}W@)rA   g[ɎTD@ge-@rv   g_v@rv   rw   rK   )r>   JRrQ@r   )rU   p=
P@r   )rU   r|   ro   )rU   r{   ro   )rU   gH_Q@gP%@)rA   g$#gaQ@gn)@gBQ@焁Å+@OIiR@r}   )rU   r~   gʡU @)rA   gt^BR@g	c @g!R@Bxq:!@gT gR@r   )rA   gaQ@r   gbgQ@gXL @g}iƘQ@g[B>ٌ@)rA   gZ Q@g*g@r{   ga@r{   gQy@rK   )r>   (ycT@r   )rU   R, S@r   )rU   r   ri   )rU   MbXR@ri   )rU   r   ro   )rU   r   ro   )rU   r   |~!d1@)rU   r   r   )rU   r   ro   )rU   	T@ro   )rU   r   ri   )rU   r   ri   rK   )r>   ZW@r   )rU   2}EU@r   )rU   r   rY   )rU   <IfV@rY   )rU   r   4ir@)rU   r   r   rK   )r>   ',[@r   )rU   }"Z@r   )rA   gU0* Z@g~?gao"Z@g|,}?gn4$Z@g?ܵ|?)rA   g%Z@g?g'Z@gec] @gd)Z@g䠄@)rA   gg67Y@g[tYL?gRY@rB   g"2Y@rB   )rA   gŊLX@rB   g dFX@g?g	]X@gz6>W?)rA   gWL)X@gTގ@Nw(
X@g1%e@r   gr?@)rA   r   g-#!@g7*X@godC%@glV}`X@gj+'@)rA   gR,X@gdp4*@gH.X@rJ   g<;Y@rJ   )rA   g鲘Y@rJ   g!A	3Y@gIh˹)@gME*!Z@grm&@)rA   g
.V` Z@g0G&@g9}Z@g?'@gw;SZ@gh~'@)rA   gMZ@gXeS'@g<Z@gޓZ'@r   ge(@)rU   k}ЖZ@g\mŮ)@)rU   g?Z@ro   )rU   r   ro   rK   )r>   r   	h"@)rA   r   gN@g<DZ@gCK:@gJ8Z@g0ACO @)rA   gEaZ@gQ|!@gqtZ@g7̒!@g[%XZ@gP0A"@)rA   g鷯Z@gs"@g3P>Y@g1PN"@g$bJ$Y@gh"@)rA   gt{IcY@gؙB%#@g"-Y@rx   gpWY@rx   )rA   gA&9Y@rx   0r.uY@g(\ @r   g,C@)rA   r   g6ُ@g2Y@_)Ǻ@guY@r   )rA   gPkY@r   r   g7l@r   r   rK   )r>   gypw]@r   )rU   Ǻ$\@r   )rU   r   W}W4@)rU   #]@r   )rU   r   gJF+@)rA   r   gd**@gɎ@]@g{Nz(@g,g~5]@gs^&@)rA   g*5{]@gs,&6(@g|S]@g_)@g:KT]@rr   )rA   gQ^@g|+@g1|DL0^@rJ   gOed^@rJ   )rA   g^@rJ   gHK_@g[rP2*@g{1D_@gĔH'@)rA   gK8y_@gi:;5%@lV}_@g2r!@r   gvZ@)rA   r   gOGɫ@gmy_@gbb@gIB_@g=\rܩ?)rA   gGɫs_@K7?gpn^@rB   gm/`^@rB   )rA   g}"O2^@rB   gX
^@g=~oӿg<If]@gBsF?)rA   g0|]@r   g	h"]@g4)^?g|гY]@ga?)rA   gq>?]@g$+?g ]@ru   r   g,&6?)rA   g{]@gR?gV-]@g{Ic*?g|G]@gK7A`?)rA   gu݈]@gf?gZBs]@g ?g!7]@gP?rK   )r>   }iƢ%^@rt   )rA   r   g;f?!@g_^@痐z6+#@g֨ht]@r   )rA   g-l]@r   5{]@g\Z!@r   gm9r@)rA   r   g%#gaO@gHIO]@rCQ@g\r)]@r   )rA   g#Jv^@r   r   g@r   rt   rK   r   ))r>   WVZ@@%e-@)rU   r   GG@)rU   gr3܀	T@r   )rU   /
ҌV@g$]3B@)rU   r   X94@)rU   玒WJU@r   )rU   r   bg>@)rU   .jR@r   )rU   r   ;)E@)rU   W	3'C@r   )rU   r   r   rK   )r>   rhS@%ǝ)B@)rU   r   r   )rU   r   r   rK   r,   )	)r>   r   VC")rU   r   LqUw9)rU   r   r   )rU   r   箞7>)rU   r   r   )rU   r   Բ&?)rU   r   r   )rU   r   r   rK   )r   r   r   dxdy)r%   isSeqextend	applyPrecr*   r:   r   )r4   gr   r   r   r   r   _ocolors_pagecolorsOPPr%   ZPPr5   r5   r6   
_paintLogoE   s*    $
$zRL_CorpLogo._paintLogoc                 C   sp   |d u r| S g j }t|d}| D ]H}t|r`g j }|D ]"}t|trPt||}|| q6|j}|| q |jS )N)Zplaces)appendr   r   
isinstancefloat__self__)r   r*   Rfpner5   r5   r6   r   j   s    



zRL_CorpLogo.applyPrecc                 C   s8  | j }| j}t }| j}| j}| j}| j}| j| j }}	|r|d urzd|  krXdk rzn nt	|j
| |j| |j| }| j|dd|d | j|||| jpd | jpd d |j| j| jd || j| j t }
|
| d\}}| j| j }}|s|r$|r$|
dtdd|||||d	 ||ks8||krT|
|t| |t|  | j}| jr|d
 |d
  }}|
| |  |
| |
|| t| ddrdpd}t| ddrdpd}|s|r(|pd}|pd}|
|| ||  ||	 ||   t|
|dd|ddfd}
n|
||	 |
S )Nr   r,         r   )r   r   r   )r   r   r   r   Zkxky)r/   r.   )r   r   r   g       @r&   r'   )Z	transform) r   r   r   r   r   r   r    r   r   r   redgreenbluer   r(   r)   skewr#   r$   shiftr1   r2   r:   r!   r"   insertr	   scaler   r   rotategetattr)r4   r   r   r   bgZbdZbdwr    r   r   G_w_hwhr   r&   r'   sxZsyr5   r5   r6   drawz   sN     

0


$zRL_CorpLogo.draw)__name__
__module____qualname____doc__AttrMapAttrMapValueisNumberisColorOrNoneisNumberOrNoneZEitherOr	isBooleanZ
SequenceOfZNoneOrZisColorZisInt_attrMapr7   r=   r   r   staticmethodr   r   r5   r5   r5   r6   r      s:   









  %
r   c                   @   s   e Zd Zdd ZdS )RL_CorpLogoReversedc                 C   s   t |  t| _t| _d S r8   )r   r7   r   r   r   r   r3   r5   r5   r6   r7      s    
zRL_CorpLogoReversed.__init__N)r   r   r   r7   r5   r5   r5   r6   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_CorpLogoThinzThe 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!   r3   r5   r5   r6   r7      s    zRL_CorpLogoThin.__init__c                 C   s   t | j| j}||  |S r8   r9   r;   r5   r5   r6   r=      s    
zRL_CorpLogoThin.demor   Nc                 C   s   t ||| j| j| j|dS )N)fontNamefontSizer   )r   _text	_fontName	_fontSize)r4   r   r   colorr5   r5   r6   _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   )r4   r   ltextr5   r5   r6   _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 qd S )Ng?@gGz>T@r0   "   g     @I@   r,         r   )r   r   ZstrokeLineJoin)r:   r
   )r4   r   r   r   r   r   x1Zx2ZfLy1y2Lr   r5   r5   r6   _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   r0   r   &   )r   r   r   r   r   r   r   r:   r	   r   r   r   r   r   r   r   r   r!   r"   r   r   )r4   r   r   r   r    r   g2r5   r5   r6   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   r7   r=   r   r   r   r   r5   r5   r5   r6   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 r8   )origin
dimensions
powered_by)r4   atxatyr!   r"   r   r5   r5   r6   r7      s    

zReportLabLogo.__init__c                 C   s^   ddl m} |  | j\}}| j\}}t }|| |_|_||	 |||d |
  d S )Nr   )	renderPDF)Zreportlab.graphicsr   Z	saveStater   r   r   r!   r"   r   r=   ZrestoreState)r4   Zcanvasr   r   r   r!   r"   Zlogor5   r5   r6   r      s    

zReportLabLogo.drawN)r   r   r   r   r   r7   r   r5   r5   r5   r6   r      s   r   c                   @   s   e Zd ZdZeeeeeeeeeeeeeeeeeeeee	ee	ee
ee
ee
ee
ee
ee
ee
eeeed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_topZ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 RoadZ	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  r3   r5   r5   r6   r7   2  s&    
zRL_BusinessCard.__init__c                 C   s   t | j| j}||  |S r8   r9   r;   r5   r5   r6   r=   N  s    
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 ]}|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 qN| 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r|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   Z
textAnchorr   )zTel:zMobile:zFax:zEmail:zWeb:r   r,   g      @   Z	Helveticar   endr0   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   )r4   r   r   r   r   rlZleftTextZleftDetailsr   tyZ	rightTextZty1r5   r5   r6   r   S  s    






	


zRL_BusinessCard.drawN)r   r   r   r   r   r   r   r   r   r   ZisStringZisListOfStringsOrNoner   r   r   r   r   r  r7   r=   r   r5   r5   r5   r6   r  
  s<   
r  )ZpdfZepsZjpgZgifsvgc                 C   s(  t  }d|_d|_t|j|j}|| d|jd< |jd| d t }d|_d|_t|j|j}|| d|jd< |jd| d t }tddd|_	d|_d|_t|j|j}|| d|jd< |jd	| d t
 }d
|_d
|_d|_t|jd |jd }|| d|jd< |jd| d dS )z,This function produces a pdf with examples.    r.   r,   verboseZcorplogo_whiteonblue)ZfnRootformatsZcorplogo_blueonwhiter  Zcorplogo_grayonwhite   2   r  N)r   r!   r"   r   r:   __dict__saver   r   r   r  r   r   r   )r  r  r<   r5   r5   r6   test  s<    







r"  __main__N) __version__r   Zreportlab.lib.unitsr   r   Zreportlab.lib.validatorsZreportlab.lib.attrmapZreportlab.lib.formattersr   Zreportlab.graphics.shapesr   r   r   r	   r
   r   Zreportlab.graphics.widgetbaser   Zreportlab.lib.colorsr   r   r   r   Zreportlab.pdfbase.pdfmetricsr   r   r   r   r   r  r"  r   r5   r5   r5   r6   <module>   s&     N -*