o
    {i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rze  dS 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                   @   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 r5   R/var/www/html/flask_server/venv/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r4   Dr5   r5   r6   demo@      
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@)curveTorA   gT@gCQON@gG8-xW@gı.nN@g:]?)rC   ga wM@gn?gM2rL@BѿgyK@rD   )rC   g7~J@rD   g7l[٨I@
ϛ?gǺ	I@cbqm?)rC   gO@akH@g+	@)^H@<7@rG   {丳@)rC   rG   g3.!@gK7mH@g㈵ %@gףp=
I@Ƒ'@)rC   gCVI@3'*@gPfJ@m9r+@gh|?K@rL   )rC   gDL@rL   gdCM@g}y)*@gDN@g '@)rC   gʉvN@gfL2r%@rA   gEɀ!@rA   rB   	closePath)r@   ]L@rI   )rC   rN   gT:X@gw/YL@gZK}@gVeOL@gmn @)rC   gXeSFL@g%: @gx]8L@g_YiR!@gqm'L@g͒ 5"@)rC   gJhL@gŧ "@g+ L@g* #@gmK@7T7q#@)rC   g̯K@g#@g<K@b('#@gΪVK@rP   )rC   g	8XK@rP   rm'K@goeQ#@jjZK@gVy"@)rC   f,J@gy!@[ɎJ@g9@0@rT   'o|@)rC   rT   gj+@rS   gZ!@rR   gNw(
t@)rC   rQ   gR"@g)^XK@	@g'1K@rV   )rC   grPLK@rV   g:]K@g@g4R%L@g,H3Mg@)rC   gףp=
KL@g/n@rN   gW	3@rN   rI   rM   ))r@   g\mr/@r   )lineTogME*"@r   )rW   gDL$z@gE$]3Y@)rC   gZ{,}@gǺ@gc#K@g"Tm@gۊe@g.Q50@)rC   g =@g_@g7g@g`@gWCK@6T@)rW   a)@rU   )rW   rY   r   )rW   U7?r   )rW   rZ   13@)rW   gSr@r[   )rC   gEB"@r[   g<	%@g&kԻ2@gʉv(@g|a2U1@)rC   geI+@g{Fw0@"u|-@g4)-@r\   g_M)@)rC   r\   gŬC9$@gU+~I+@g#J{/!@g4Op&@rX   rM   )r@   KhF@`$@)rW   göE@r^   )rC   gsx@r^   g,`@gpB!%@gg @gm%@)rC   g!@gSW>&@"uq"@g/
(@r_   gӂ}u)@)rC   r_   gBS,@g 6qb @WV-@gWf,@r`   )rW   r]   r`   rM   )r@   .9@?2@)rW   gnLOXy>@gwN#@)rC   g; >@gQy@g70V=@ge6H?gT7<@gԕ<?)rC   g~W[;@g|wJ?gx#9@rD   "uq7@rD   )rC   g'kC45@rD   g0r.4@gpZ?gt2@gNё\C?)rC   g41@gk,	@aۢ0@g0AC@rd   gcz@)rC   rd   gJ+6!@g{1@gUMu$@gE_2@gܝ^'@)rC   g|=4@gvR~*@gՐ5@\tYLl+@gFv7@re   )rC   gSW>:@re   g
p;@gs,&6*@gW2<@g0''@)rC   g)t^>@gBs$@; >@gm!@rf   g8m4@)rW   g+p>@aۢ@)rW   gTƿϸ6@rg   )rC   gS:6@g+@gg7@@rc   rh   )rC   gZwgu8@rh   gM8@gB	\@ra   rb   rM   )r@   rCQ/9@L$z @)rC   ri   g}8g4!@gb'9@g~7!@gW>9@gnض("@)rC   gX0_9@g=$@}"@gs.Ue8@Fv"@gd,8@gx@$#@)rC   gKu8@rO   ge18@g#@gui8@g|~!<#@)rC   g}˜.A8@g$@g8@>"D$@g7@rl   )rC   gk) ƃ7@rl   g$37@gZd#@guV6@g	(#@)rC   gS
c6@g1"@bg6@ght!@rm   rj   rM   )r@   tgy.C@bg
)rW   _i@@ro   )rW   rp    dF*@)rW   rn   rq   )rW   {IcC@gQy'@)rC   g3<C@gYni5$'@g U+ZC@g^/(@g"DxC@gE$]3)@)rC   gx]C@g,eX)@N^C@g{Nz*@g]ʾC@2ZGUt*@)rC   gV	C@ge-*@g%D@g"2+@g`MD@g.16+@)rC   gtYLlvD@gXV^+@g+ٱD@rL   gE*-D@rL   )rC   g>E@rL   g"F@rK   g U+F@rJ   )rC   g~nG@gg?R%@AG@g:!@ru   +j0@)rC   ru   rH   g\m
G@gIh˹@ga2U0*F@rF   )rC   g1F@rE   gsE@rD   g4cD@rD   )rC   g4R5D@rD   g&SC@g8P?rr   g[K<?)rC   gꕲq$C@y?gy@e'C@gϸp ?giW!')C@g	h"lx?)rC   gd,C@g)"*?rn   g//>:?rn   gR!uٿrM   )r@   k+cD@KRe@)rC   rx   gU+~@gekUD@gRDU @g)8D@g'UH!@)rC   gĬD@gQfL2"@g,`C@'IL>#@g:C@rz   )rC   g=
PC@rz   p1=C@g[닄\!@r{   gPp3@)rC   r{   gʾ+@gCVzNNC@Oz1S@rs   r|   )rC   geC@r|   g0ACD@gDذ@gڧ5D@gW}W@)rC   g[ɎTD@ge-@rx   g_v@rx   ry   rM   )r@   JRrQ@r   )rW   p=
P@r   )rW   r~   rq   )rW   r}   rq   )rW   gH_Q@gP%@)rC   g$#gaQ@gn)@gBQ@焁Å+@OIiR@r   )rW   r   gʡU @)rC   gt^BR@g	c @g!R@Bxq:!@gT gR@r   )rC   gaQ@r   gbgQ@gXL @g}iƘQ@g[B>ٌ@)rC   gZ Q@g*g@r}   ga@r}   gQy@rM   )r@   (ycT@r   )rW   R, S@r   )rW   r   rk   )rW   MbXR@rk   )rW   r   rq   )rW   r   rq   )rW   r   |~!d1@)rW   r   r   )rW   r   rq   )rW   	T@rq   )rW   r   rk   )rW   r   rk   rM   )r@   ZW@r   )rW   2}EU@r   )rW   r   r[   )rW   <IfV@r[   )rW   r   4ir@)rW   r   r   rM   )r@   ',[@r   )rW   }"Z@r   )rC   gU0* Z@g~?gao"Z@g|,}?gn4$Z@g?ܵ|?)rC   g%Z@g?g'Z@gec] @gd)Z@g䠄@)rC   gg67Y@g[tYL?gRY@rD   g"2Y@rD   )rC   gŊLX@rD   g dFX@g?g	]X@gz6>W?)rC   gWL)X@gTގ@Nw(
X@g1%e@r   gr?@)rC   r   g-#!@g7*X@godC%@glV}`X@gj+'@)rC   gR,X@gdp4*@gH.X@rL   g<;Y@rL   )rC   g鲘Y@rL   g!A	3Y@gIh˹)@gME*!Z@grm&@)rC   g
.V` Z@g0G&@g9}Z@g?'@gw;SZ@gh~'@)rC   gMZ@gXeS'@g<Z@gޓZ'@r   ge(@)rW   k}ЖZ@g\mŮ)@)rW   g?Z@rq   )rW   r   rq   rM   )r@   r   	h"@)rC   r   gN@g<DZ@gCK:@gJ8Z@g0ACO @)rC   gEaZ@gQ|!@gqtZ@g7̒!@g[%XZ@gP0A"@)rC   g鷯Z@gs"@g3P>Y@g1PN"@g$bJ$Y@gh"@)rC   gt{IcY@gؙB%#@g"-Y@rz   gpWY@rz   )rC   gA&9Y@rz   0r.uY@g(\ @r   g,C@)rC   r   g6ُ@g2Y@_)Ǻ@guY@r   )rC   gPkY@r   r   g7l@r   r   rM   )r@   gypw]@r   )rW   Ǻ$\@r   )rW   r   W}W4@)rW   #]@r   )rW   r   gJF+@)rC   r   gd**@gɎ@]@g{Nz(@g,g~5]@gs^&@)rC   g*5{]@gs,&6(@g|S]@g_)@g:KT]@rt   )rC   gQ^@g|+@g1|DL0^@rL   gOed^@rL   )rC   g^@rL   gHK_@g[rP2*@g{1D_@gĔH'@)rC   gK8y_@gi:;5%@lV}_@g2r!@r   gvZ@)rC   r   gOGɫ@gmy_@gbb@gIB_@g=\rܩ?)rC   gGɫs_@K7?gpn^@rD   gm/`^@rD   )rC   g}"O2^@rD   gX
^@g=~oӿg<If]@gBsF?)rC   g0|]@r   g	h"]@g4)^?g|гY]@ga?)rC   gq>?]@g$+?g ]@rw   r   g,&6?)rC   g{]@gR?gV-]@g{Ic*?g|G]@gK7A`?)rC   gu݈]@gf?gZBs]@g ?g!7]@gP?rM   )r@   }iƢ%^@rv   )rC   r   g;f?!@g_^@痐z6+#@g֨ht]@r   )rC   g-l]@r   5{]@g\Z!@r   gm9r@)rC   r   g%#gaO@gHIO]@rCQ@g\r)]@r   )rC   g#Jv^@r   r   g@r   rv   rM   r   ))r@   WVZ@@%e-@)rW   r   GG@)rW   gr3܀	T@r   )rW   /
ҌV@g$]3B@)rW   r   X94@)rW   玒WJU@r   )rW   r   bg>@)rW   .jR@r   )rW   r   ;)E@)rW   W	3'C@r   )rW   r   r   rM   )r@   rhS@%ǝ)B@)rW   r   r   )rW   r   r   rM   r,   )	)r@   r   VC")rW   r   LqUw9)rW   r   r   )rW   r   箞7>)rW   r   r   )rW   r   Բ&?)rW   r   r   )rW   r   r   rM   )r   r   r   dxdy)r"   isSeqextend	applyPrecr*   r;   r   )r4   gr   r   r   r   r   _ocolors_pagecolorsOPPr"   PPr5   r5   r6   
_paintLogoE   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er5   r5   r6   r   j   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rdpd}t| ddrdpd}|s|r|pd}|pd}|
|| ||  ||	 ||   t|
|dd|ddfd}
|
S |
||	 |
S )Nr   r,         r#   )r   r   r   )r   r   r   r   kxky)r/   r.   )r   r   r   g       @r&   r'   )	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   bgbdbdwr   r   r   G_w_hwhr   r&   r'   sxsyr5   r5   r6   drawz   sP    

,

$zRL_CorpLogo.drawr5   )__name__
__module____qualname____doc__AttrMapAttrMapValueisNumberisColorOrNoneisNumberOrNoneEitherOr	isBoolean
SequenceOfNoneOrisColorisInt_attrMapr7   r>   r   r   staticmethodr   r   r5   r5   r5   r6   r      sb    





	
""%
r   c                   @   s   e Zd Zdd ZdS )RL_CorpLogoReversedc                 C   s   t |  t| _t| _d S r9   )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   r8   r9   r:   r<   r5   r5   r6   r>      r?   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 qGd S )Ng?@gGz>T@r0   "   g     @I@   r,         r   )r   r   strokeLineJoin)r;   r
   )r4   r   r   r   r   r   x1x2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 r9   )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)reportlab.graphicsr  	saveStater  r  r   r   r   r   r>   restoreState)r4   canvasr  r  r  r   r   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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"  r3   r5   r5   r6   r7   2  s&   
zRL_BusinessCard.__init__c                 C   r8   r9   r:   r<   r5   r5   r6   r>   N  r?   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#   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
  rlleftTextleftDetailsr   ty	rightTextty1r5   r5   r6   r   S  s   







	


zRL_BusinessCard.drawNr5   )r   r   r   r   r   r   r   r   r   r   isStringisListOfStringsOrNoner   r   r   r   r   r/  r7   r>   r   r5   r5   r5   r6   r  
  sd    
	
r  )pdfepsjpg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,   verbosecorplogo_whiteonblue)fnRootformatscorplogo_blueonwhiter$  corplogo_grayonwhite   2   r  N)r   r   r   r   r;   __dict__saver   r   r   r  r   r   r   )rC  r2  r=   r5   r5   r6   test  s<   







rJ  __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   r   r   r   r  r  rJ  r   r5   r5   r5   r6   <module>   s*     N -*
