o
    à’Oj§{  ã                   @   s†  d Z dZddlmZ ddlT ddlT ddlmZmZ ddl	m
Z
 ddl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eƒZG dd„ deƒZG dd„ deƒZG dd„ deƒZG dd„ deƒZG dd„ deƒZG dd„ deƒZG dd„ deƒZG dd „ d eƒZG d!d"„ d"eƒZG d#d$„ d$eƒZG d%d&„ d&eƒZG d'd(„ d(eƒZG d)d*„ d*eƒZd+d,„ Ze d-krÁeƒ  d.S d.S )/z3.3.0aô  This file is a collection of widgets to produce some common signs and symbols.

Widgets include:

- ETriangle (an equilateral triangle),
- RTriangle (a right angled triangle),
- Octagon,
- Crossbox,
- Tickbox,
- SmileyFace,
- StopSign,
- NoEntry,
- NotAllowed (the red roundel from 'no smoking' signs),
- NoSmoking,
- DangerSign (a black exclamation point in a yellow triangle),
- YesNo (returns a tickbox or a crossbox depending on a testvalue),
- FloppyDisk,
- ArrowOne, and
- ArrowTwo
- CrossHair
é    )Úcolors)Ú*)ÚisStrÚ	asUnicode)Úshapes)ÚWidget)Ú	renderPDFc                
   @   sl   e Zd ZdZdZeeedd�eedd�eedd�eedd�eeƒeeƒeeƒeeƒd�Z	dd	„ Z
d
d„ ZdS )Ú_SymbolzcAbstract base widget
    possible attributes:
    'x', 'y', 'size', 'fillColor', 'strokeColor'
    é   zsymbol x coordinate©Údesczsymbol y coordinatezsymbol x coordinate adjustment)ÚxÚyÚdxÚdyÚsizeÚ	fillColorÚstrokeColorÚstrokeWidthc                 C   sJ   | j jdks
J dƒ‚d | _ | _ | _| _d| _tj| _	d | _
d| _d S )Nr	   z#Abstract class _Symbol instantiatedr   éd   çš™™™™™¹?)Ú	__class__Ú__name__r   r   r   r   r   r   Úredr   r   r   ©Úself© r   úp/var/www/html/pharmsmart-cdr-gen/venv/lib/python3.10/site-packages/reportlab/graphics/widgets/signsandsymbols.pyÚ__init__8   s   
z_Symbol.__init__c              
   C   sr   t  dd¡}t| jƒ}|  ¡ }d|_d|_| ¡  | |¡ | t j	|j|d  |jd |jj
tjddd	�¡ |S )
NéÈ   r   é2   r   é   é   Úmiddleé
   ©r   Ú
textAnchorÚfontSize)r   ÚDrawingÚfloatr   r   r   r   ÚdrawÚaddÚStringr   r   Úblack)r   ÚDÚsÚobr   r   r   Údemo@   s   

þz_Symbol.demoN)r   Ú
__module__Ú__qualname__Ú__doc__Ú_nodocÚAttrMapÚAttrMapValueÚisNumberÚisColorOrNoneÚ_attrMapr   r1   r   r   r   r   r	   (   s    



ø
r	   c                   @   ó    e Zd ZdZdd„ Zdd„ ZdS )Ú	ETriangleú#This draws an equilateral triangle.c                 C   ó   t  | ¡ d S ©N)r	   r   r   r   r   r   r   P   ó   zETriangle.__init__c                 C   sj   t | jƒ}t ¡ }|d }tj| j| j| j| | j| j|d  | j| g| j| j|d d�}| 	|¡ |S )Nç      À?r!   ç      I@©Úpointsr   r   r   ©
r)   r   r   ÚGroupÚPolygonr   r   r   r   r+   ©r   r/   ÚgÚaeÚtriangler   r   r   r*   S   s   
ýú
zETriangle.drawN©r   r2   r3   r4   r   r*   r   r   r   r   r<   M   s    r<   c                   @   r;   )Ú	RTrianglez€This draws a right-angled triangle.

        possible attributes:
        'x', 'y', 'size', 'fillColor', 'strokeColor'

        c                 C   ó$   d| _ d| _d| _tj| _d | _d S ©Nr   r   )r   r   r   r   Úgreenr   r   r   r   r   r   r   l   ó
   
zRTriangle.__init__c                 C   sb   t | jƒ}t ¡ }|d }tj| j| j| j| | j| j| j| g| j| j|d d�}| 	|¡ |S )NrA   rB   rC   rE   rH   r   r   r   r*   s   s   
ýú
zRTriangle.drawNrL   r   r   r   r   rM   d   ó    rM   c                   @   r;   )ÚOctagonzvThis widget draws an Octagon.

        possible attributes:
        'x', 'y', 'size', 'fillColor', 'strokeColor'

    c                 C   rN   rO   )r   r   r   r   Úyellowr   r   r   r   r   r   r   Œ   rQ   zOctagon.__init__c                 C   s¾   t | jƒ}t ¡ }|d }tj| j| | j| j| j| | j| j|d  | j| | j| | j|d  | j| | j| | j|d  | j| | j| | j|d  | jg| j| jdd�}| 	|¡ |S )Né   r!   r$   ©rD   r   r   r   )
r)   r   r   rF   rG   r   r   r   r   r+   )r   r/   rI   ÚathirdÚoctagonr   r   r   r*   “   s$   
ùö
zOctagon.drawNrL   r   r   r   r   rS   „   rR   rS   c                   @   ó6   e Zd ZdZeeeeƒeeƒd�Z	dd„ Z
dd„ ZdS )ÚCrossboxz¥This draws a black box with a red cross in it - a 'checkbox'.

        possible attributes:
        'x', 'y', 'size', 'crossColor', 'strokeColor', 'crosswidth'

    )ÚBASEÚ
crossColorÚ
crosswidthc                 C   ó4   d| _ d| _d| _tj| _tj| _tj| _	d| _
d S ©Nr   r   r$   )r   r   r   r   Úwhiter   r   r\   r-   r   r]   r   r   r   r   r   ¶   ó   
zCrossbox.__init__c              	   C   sð   t | jƒ}t ¡ }tj| jd | jd |d |d | j| jdd�}| 	|¡ tj
| j|d  | j|d  | j|d  | j|d  | j| j| jd�}| 	|¡ tj
| j|d  | j|d  | j|d  | j|d  | j| j| jd�}| 	|¡ |S )Nr
   r!   ©r   r   r   ç333333Ã?ç333333ë?)r)   r   r   rF   ÚRectr   r   r   r   r+   ÚLiner\   r]   )r   r/   rI   ÚboxÚ
crossLine1Ú
crossLine2r   r   r   r*   ¿   s*   
 ý
4ý
4ý
zCrossbox.drawN©r   r2   r3   r4   r6   r	   r7   r9   r8   r:   r   r*   r   r   r   r   rZ   ©   ó    þ	rZ   c                   @   rY   )ÚTickboxz¤This draws a black box with a red tick in it - another 'checkbox'.

        possible attributes:
        'x', 'y', 'size', 'tickColor', 'strokeColor', 'tickwidth'

)r[   Ú	tickColorÚ	tickwidthc                 C   r^   r_   )r   r   r   r   r   rm   r-   r   r`   r   rn   r   r   r   r   r   ç   ra   zTickbox.__init__c                 C   sÒ   t | jƒ}t ¡ }tj| jd | jd |d |d | j| jdd�}| 	|¡ tj
| j|d  | j|d  | j|d  | j|d  | j|d  | j|d  | j|d  | j|d  g| j| j| jd�}| 	|¡ |S )Nr
   r!   rb   rc   çffffffÖ?rd   rC   )r)   r   r   rF   re   r   r   r   r   r+   ÚPolyLinerm   rn   )r   r/   rI   rg   ÚtickLiner   r   r   r*   ð   s"   
 ý
40ÿü
zTickbox.drawNrj   r   r   r   r   rl   Ú   rk   rl   c                   @   r;   )Ú
SmileyFacezkThis draws a classic smiley face.

        possible attributes:
        'x', 'y', 'size', 'fillColor'

    c                 C   s0   t  | ¡ d| _d| _d| _tj| _tj| _	d S rO   )
r	   r   r   r   r   r   rT   r   r-   r   r   r   r   r   r     s   
zSmileyFace.__init__c                 C   sÀ  t | jƒ}t ¡ }| tj| j|d  | j|d  |d | j| j	t
|d | jƒd�¡ dD ]+}| tj| j|d |  | j|d d  |d |d | j	| j	t
|d | jƒd�¡ q-| j|d  }| j|d  }|d }|}|}d	}	d
}
d}g }|j}ddlm}m}m} |d }|| }|	| }|
| }||k r¢|d|  }||k s˜|}||k rÈ|||ƒ|  }|||ƒ|  }||ƒ ||ƒ || }||k s¨tj|| j	| j	t
|d | jƒd�}| |¡ |S )Nr!   g      C@©ÚcxÚcyÚrr   r   r   )r
   r!   rU   é   r$   rb   r   iT  r
   r   ©ÚsinÚcosÚpiç     €f@)r)   r   r   rF   r+   ÚCircler   r   r   r   Úmaxr   ÚEllipseÚappendÚmathry   rz   r{   rp   )r   r/   rI   ÚiÚcenterxÚcenteryÚradiusÚyradiusÚxradiusÚstartangledegreesÚendangledegreesÚdegreedeltaÚ
pointslistÚary   rz   r{   ÚdegreestoradiansÚradiansdeltaÚ
startangleÚendangleÚangler   r   Úsmiler   r   r   r*     sV   
&þ4
þÿüý
zSmileyFace.drawNrL   r   r   r   r   rr     ó    rr   c                   @   ó4   e Zd ZdZeeeedd�d�Zdd„ Z	dd„ Z
d	S )
ÚStopSignzbThis draws a (British) stop sign.

        possible attributes:
        'x', 'y', 'size'

        zcolor of the word stopr   )r[   Ú	stopColorc                 C   ó.   d| _ d| _d| _tj| _tj| _tj| _	d S rO   )
r   r   r   r   r-   r   Ú	orangeredr   Ú
ghostwhiter–   r   r   r   r   r   R  ó   zStopSign.__init__c                 C   s  t | jƒ}t ¡ }|d }tj| j| | j| j| j| | j| j|d  | j| | j| | j|d  | j| | j| | j|d  | j| | j| | j|d  | jg| jd dd�}| |¡ tj| j| |d  | j|d  | j|d  | j| |d  | j|d  | j|d  |d  | j| |d  | j| |d  | j|d  |d  | j| |d  | j| |d  | j|d  |d  | j| |d  | j| |d  | j|d  |d  | j|d  gd | j	dd�}| |¡ | j
�r| tj| j|d  | j|d  d	| j
d
|d dd�¡ |S )NrU   r!   r
   rV   éK   r   ç      à?çš™™™™™Ù?ÚSTOPr#   zHelvetica-Bold)r   r&   r'   ÚfontName)r)   r   r   rF   rG   r   r   r   r+   r   r–   r,   )r   r/   rI   rW   ÚouterOctagonÚinnerOctagonr   r   r   r*   Z  sJ   
ùö
   $$  ùö
 þzStopSign.drawN©r   r2   r3   r4   r6   r	   r7   r9   r:   r   r*   r   r   r   r   r•   G  s    
ÿr•   c                   @   r”   )
ÚNoEntryz�This draws a (British) No Entry sign - a red circle with a white line on it.

        possible attributes:
        'x', 'y', 'size'

        zcolor of the inner barr   )r[   ÚinnerBarColorc                 C   r—   rO   )
r   r   r   r   r-   r   r˜   r   r™   r¤   r   r   r   r   r   �  rš   zNoEntry.__init__c                 C   sÜ   t | jƒ}t ¡ }| jr'| tj| j|d  | j|d  |d d | jdd�¡ | j	rI| tj| j|d  | j|d  |d |d  | j	d dd�¡ | j
}|rl| tj| j|d  | j|d  |d |d	 ||ddd
�¡ |S )Nr!   r
   rs   r    r   r   r�   çš™™™™™é?çš™™™™™É?)ÚwidthÚheightr   r   ÚstrokeLineCapr   )r)   r   r   rF   r   r+   r}   r   r   r   r¤   re   )r   r/   rI   r¤   r   r   r   r*   ˜  s   
6><zNoEntry.drawNr¢   r   r   r   r   r£   „  s    
ÿr£   c                   @   s*   e Zd ZdZeed�Zdd„ Zdd„ ZdS )Ú
NotAllowedzƒThis draws a 'forbidden' roundel (as used in the no-smoking sign).

        possible attributes:
        'x', 'y', 'size'

        )r[   c                 C   s&   d| _ d| _d| _tj| _tj| _d S rO   )r   r   r   r   r   r   r`   r   r   r   r   r   r   ´  s
   zNotAllowed.__init__c                 C   sp  t | jƒ}t ¡ }| j}tj| j|d  | j|d  |d |d  | j||d d�}| 	|¡ | j| }| j|d  |d  }||d  }|d }|d }	d}
d}d}g }|j
}d	d
lm}m}m} |d }|| }|
| }|| }||k r€|d|  }||k sv|}||k r¦|||ƒ|  }|||ƒ|  }||ƒ ||ƒ || }||k s†tj||||d d�}| 	|¡ |S )Nr!   r$   g      $@rs   é   r   i°ÿÿÿéZ   r   rx   r|   rb   )r)   r   r   rF   r   r}   r   r   r   r+   r€   r�   ry   rz   r{   rp   )r   r/   rI   r   ÚouterCirclerƒ   r„   r…   r†   r‡   rˆ   r‰   rŠ   r‹   rŒ   ry   rz   r{   r�   rŽ   r�   r�   r‘   r   r   Úcrossbarr   r   r   r*   »  sB   
<

ÿü
zNotAllowed.drawN)	r   r2   r3   r4   r6   r	   r:   r   r*   r   r   r   r   rª   ©  s
    
rª   c                   @   r;   )Ú	NoSmokingz^This draws a no-smoking sign.

        possible attributes:
        'x', 'y', 'size'

        c                 C   r>   r?   )rª   r   r   r   r   r   r   é  r@   zNoSmoking.__init__c           	   	   C   s6  t | jƒ}t | ¡}| j|d  |d  }| j|d  |d  }tj|||d |d tj	tj
dd�}||d  |d  }| d|¡ tj|||d	 |d tjd dd�}||d
  }| d|¡ tj|||d	 |d tjd dd�}||d
  }| d|¡ tj|||d	 |d tjd dd�}||d
  }| d|¡ |S )Nr!   g      @é    é   r   ©r   r   r§   r¨   r   r   r   é@   éÿÿÿÿéP   é#   )r)   r   rª   r*   r   r   r   re   r   r™   ÚgrayÚinsertr˜   )	r   r/   rI   ÚnewxÚnewyÚcigarrette1Úcigarrette2Úcigarrette3Úcigarrette4r   r   r   r*   ì  s2   


ÿÿÿÿzNoSmoking.drawNrL   r   r   r   r   r¯   á  s    r¯   c                   @   r;   )Ú
DangerSignz´This draws a 'danger' sign: a yellow box with a black exclamation point.

        possible attributes:
        'x', 'y', 'size', 'strokeColor', 'fillColor', 'strokeWidth'

        c                 C   s2   d| _ d| _d| _tj| _tj| _| jd | _d S )Nr   r   rA   )	r   r   r   r   r-   r   Úgoldr   r   r   r   r   r   r     s   zDangerSign.__init__c           	      C   s&  t | jƒ}t ¡ }| j}|d }| j}|d }tj| j| j| j| | j| j|d  | j| gd | jdd�}| 	|¡ tj| j|d  | j|d  | j| |d  | j|d  | j|d  | j| |d  g| j
d dd�}| 	|¡ tj| j|d  |d  | j|d  | j|d  |d  | j|d  | j|d  |d  |d  | j|d	  | j|d  |d  |d  | j|d	  g| jd d
�}| 	|¡ tj| j|d  |d  | j| | j|d  |d  | j| | j|d  |d  | j|d  | j|d  |d  | j|d  g| jd d
�}| 	|¡ |S )NrA   r!   r   rC   r    r›   g      @r«   g      @)rD   r   r   )r)   r   r   rF   r   rG   r   r   r   r+   r   )	r   r/   rI   ÚewrJ   ÚouterTriangleÚinnerTriangleÚexmarkÚexdotr   r   r   r*     s^   
ýú
ýú
  ((üú
  üú
zDangerSign.drawNrL   r   r   r   r   r¿     r“   r¿   c                   @   sD   e Zd ZdZeeeeƒeeƒeeƒd�Z	dd„ Z
dd„ Zdd„ Zd	S )
ÚYesNoaI  This widget draw a tickbox or crossbox depending on 'testValue'.

        If this widget is supplied with a 'True' or 1 as a value for
        testValue, it will use the tickbox widget. Otherwise, it will
        produce a crossbox.

        possible attributes:
        'x', 'y', 'size', 'tickcolor', 'crosscolor', 'testValue'

)r[   Ú	tickcolorÚ
crosscolorÚ	testValuec                 C   s,   d| _ d| _d| _tj| _tj| _d| _d S )Nr   r   r
   )	r   r   r   r   rP   rÇ   r   rÈ   rÉ   r   r   r   r   r   a  s   
zYesNo.__init__c                 C   sH   | j rtƒ }| j|_ntƒ }| j|_| j|_| j|_| j	|_	| 
¡  |S r?   )rÉ   rl   rÇ   rm   rZ   rÈ   r\   r   r   r   r*   )r   Úynr   r   r   r*   i  s   
z
YesNo.drawc              
   C   s  t  dd¡}tƒ }d|_d|_d|_d|_| ¡  | |¡ tƒ }d|_d|_d|_d|_| ¡  | |¡ d	}| t j	|j|jd
  |jd|  dt
jd|d�¡ | t j	|j|jd
  |jd|  dt
jd|d�¡ d}| t j	|jd |jd | jjt
jd|d�¡ |S )Nr   r   é   é   éF   r   éx   r
   é   r!   ç333333ó?ztestValue=0r#   r%   ztestValue=1r$   éU   é   )r   r(   rÆ   r   r   r   rÉ   r*   r+   r,   r   r-   r   r   )r   r.   rÊ   Úyn2ÚlabelFontSizer   r   r   r1   w  s<   

"þ"þþz
YesNo.demoN)r   r2   r3   r4   r6   r	   r7   ÚisColorÚ	isBooleanr:   r   r*   r1   r   r   r   r   rÆ   O  s    ýrÆ   c                   @   s0   e Zd ZdZeeeeƒd�Zdd„ Z	dd„ Z
dS )Ú
FloppyDiskzyThis widget draws an icon of a floppy disk.

        possible attributes:
        'x', 'y', 'size', 'diskcolor'

        )r[   Ú	diskColorc                 C   s   d| _ d| _d| _tj| _d S rO   )r   r   r   r   r-   rØ   r   r   r   r   r      s   zFloppyDisk.__init__c              	   C   s8  t | jƒ}t ¡ }tj| j| j|d  |||d  | jd dd�}| |¡ tj| j|d  | j| |d  |d |d t	j
d dd�}| |¡ tj| j|d  | j| |d  |d |d t	jd dd�}| |¡ tj| j|d	  | jd
|  | j|d  | jd
|  t	jt	jdd�}| |¡ tj| j|d	  | jd|  | j|d  | jd|  t	jt	jdd�}| |¡ tj| j|d	  | jd|  | j|d  | jd|  t	jt	jdd�}| |¡ tj| j|d  | j|d |d t	jd dd�}	| |	¡ tj| j|d  | j|d  |d |d | jd dd�}
| |
¡ |S )Nr   r   r²   r   rœ   r¥   g¸…ëQ¸Þ?g{®Gáz´?rc   g333333ã?rd   )Úx1Úy1Úx2Úy2r   r   r   gffffffæ?r¦   ro   gìQ¸…ëÑ?gìQ¸…ë¡?g¸…ëQ¸¾?)r)   r   r   rF   re   r   r   rØ   r+   r   Ú
whitesmokeÚ	royalbluerf   r-   Úsilver)r   r/   rI   ÚdiskBodyÚlabelÚlabelsplashÚline1Úline2Úline3Ú
metalcoverÚ	coverslotr   r   r   r*   ¦  sf   
 ý
,ý
,ý
4ý
4ý
4ý
 ý
(ý
zFloppyDisk.drawN)r   r2   r3   r4   r6   r	   r7   rÕ   r:   r   r*   r   r   r   r   r×   ”  s    ÿr×   c                   @   r;   )ÚArrowOnezuThis widget draws an arrow (style one).

        possible attributes:
        'x', 'y', 'size', 'fillColor'

        c                 C   ó*   d| _ d| _d| _tj| _d| _d | _d S rO   )r   r   r   r   r   r   r   r   r   r   r   r   r   ç  ó   
zArrowOne.__init__c                 C   s°   t | jƒ}t ¡ }| j}| j}|d }|d }|d }| tj||| ||d|  || |d|  || |d|  || || || || || || g| j| j	| j
d�¡ |S )Nr!   rU   é   é   rC   ©r)   r   r   rF   r   r   r+   rG   r   r   r   )r   r/   rI   r   r   Ús2Ús3Ús5r   r   r   r*   ï  s*   
ù	õzArrowOne.drawNrL   r   r   r   r   rè   à  s    rè   c                   @   r;   )ÚArrowTwozuThis widget draws an arrow (style two).

        possible attributes:
        'x', 'y', 'size', 'fillColor'

        c                 C   ré   rO   )r   r   r   r   Úbluer   r   r   r   r   r   r   r     rê   zArrowTwo.__init__c           	      C   sÐ   t | jƒ}t ¡ }| j}| j}|d }|d }|d }|d }| tj||d|  ||d|  |d|  |d|  |d|  |d|  || || |d|  || |d|  |d|  g| j| j	| j
d�¡ |S )	Nr!   rU   rë   é   é   é   g     À2@rC   rí   )	r   r/   rI   r   r   rî   rï   rð   Ús24r   r   r   r*     s,   
ù	ôzArrowTwo.drawNrL   r   r   r   r   rñ   	  r“   rñ   c                   @   s<   e Zd ZdZeeeeee	fƒdd�d�Z
dd„ Zdd„ Zd	S )
Ú	CrossHairr=   z( gap at centre as "x%" or points or Noner   )r[   ÚinnerGapc                 C   s<   d | _  | _ | _| _d| _d | _tj| _d| _	d| _
d S )Nr   r$   rœ   z20%)r   r   r   r   r   r   r   r-   r   r   rø   r   r   r   r   r   =  s   
zCrossHair.__init__c                 C   sH  t | jƒ}t ¡ }| j}| j| j }| j| j }d| j }|s4|| ||| |f||| ||| fg}nKt	|ƒrUt
|ƒ}| d¡rN|t |d d… ƒ d }nt |ƒd }n|d }|| ||| |f|| ||| |f||| ||| f||| ||| fg}tj| j| jd�}	|D ]\}
}}}|	 |
|¡ |	 ||¡ qŠ| |	¡ |S )Nrœ   ú%r´   g      Y@)r   r   )r)   r   r   rF   rø   r   r   r   r   r   r   ÚendswithÚPathr   r   ÚmoveToÚlineTor+   )r   r/   rI   Úigr   r   ÚhsizeÚLÚgsÚPÚx0Úy0rÙ   rÚ   r   r   r   r*   E  s*   

*
L
zCrossHair.drawN)r   r2   r3   r4   r6   r	   r7   ÚEitherOrÚisStringÚisNumberOrNoner:   r   r*   r   r   r   r   r÷   7  s    ÿr÷   c               
   C   sD  d} t  dd¡}tƒ }d|_d|_| |¡ | t j|j|jd  |jd|   |jj	t
jd| d	�¡ tƒ }d
|_d|_| |¡ | t j|j|jd  |jd|   |jj	t
jd| d	�¡ tƒ }d|_d|_| |¡ |jj	d }| t j|j|jd  |jd|   |t
jd| d	�¡ | t jdddt
jd| d d	�¡ tƒ }d|_d|_| |¡ | t j|j|jd  |jd|   |jj	t
jd| d	�¡ tƒ }d
|_d|_| |¡ | t j|j|jd  |jd|   |jj	t
jd| d	�¡ tƒ }d|_d|_| |¡ | t j|j|jd  |jd|   |jj	t
jd| d	�¡ tƒ }	d|	_d|	_| |	¡ | t j|	j|	jd  |	jd|   |	jj	t
jd| d	�¡ tƒ }
d
|
_d|
_| |
¡ | t j|
j|
jd  |
jd|   |
jj	t
jd| d	�¡ tƒ }d|_d|_| |¡ | t j|j|jd  |jd|   |jj	t
jd| d	�¡ tƒ }d|_d|_| |¡ | t j|j|jd  |jd|   |jj	t
jd| d	�¡ tƒ }d
|_d|_| |¡ | t j|j|jd  |jd|   |jj	t
jd| d	�¡ tƒ }d|_d|_| |¡ | t j|j|jd  |jd|   |jj	t
jd| d	�¡ t |dd¡ tdƒ dS )z\This function produces a pdf with examples of all the signs and symbols from this file.
    r$   iÂ  iŠ  rÒ   i  r!   rÐ   r#   r%   éª   i@  r   é‚   r«   zT(The 'YesNo' widget returns a tickbox if testvalue=1, and a crossbox if testvalue=0)g      è?i�  i  éŒ   zsignsandsymbols.pdfzsignsandsymbols.pyzwrote file: signsandsymbols.pdfN)r   r(   rZ   r   r   r+   r,   r   r   r   r   r-   rl   rÆ   r•   r£   rr   r¿   rª   r¯   rè   rñ   r×   r   Ú
drawToFileÚprint)rÔ   r.   ÚcbÚtbrÊ   Ú
tempstringÚssÚneÚsfÚdsÚnaÚnsÚa1Úa2Úfdr   r   r   Útestb  sÒ   
"þ
"þ
"þþ
"þ
"þ
"þ
"þ
"þ
"þ
"þ
"þ
"þr  Ú__main__N)!Ú__version__r4   Úreportlab.libr   Úreportlab.lib.validatorsÚreportlab.lib.attrmapÚreportlab.lib.utilsr   r   Úreportlab.graphicsr   Úreportlab.graphics.widgetbaser   r   r	   r<   rM   rS   rZ   rl   rr   r•   r£   rª   r¯   r¿   rÆ   r×   rè   rñ   r÷   r  r   r   r   r   r   Ú<module>   s<   % %1+B=%8*DEL).+n
ÿ