U
    -yag§{  ã                   @   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 )/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tdƒ‚d | _ | _ | _| _d| _tj	| _
d | _d| _d S )Nr	   z#Abstract class _Symbol instantiatedr   éd   çš™™™™™¹?)Ú	__class__Ú__name__ÚAssertionErrorr   r   r   r   r   r   Úredr   r   r   ©Úself© r   ú^/var/www/html/myvenv/lib/python3.8/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__Z_nodocÚAttrMapÚAttrMapValueÚisNumberÚisColorOrNoneÚ_attrMapr   r2   r   r   r   r   r	   (   s   



ø
r	   c                   @   s    e Zd ZdZdd„ Zdd„ ZdS )Ú	ETriangleú#This draws an equilateral triangle.c                 C   s   t  | ¡ d S ©N)r	   r   r   r   r   r   r   P   s    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   r0   ÚgÚaeÚtriangler   r   r   r+   S   s"    
   ýú
zETriangle.drawN©r   r3   r4   r5   r   r+   r   r   r   r   r;   M   s   r;   c                   @   s    e Zd ZdZdd„ Zdd„ ZdS )Ú	RTrianglez€This draws a right-angled triangle.

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

        c                 C   s$   d| _ d| _d| _tj| _d | _d S ©Nr   r   )r   r   r   r   Úgreenr   r   r   r   r   r   r   l   s
    zRTriangle.__init__c                 C   sb   t | jƒ}t ¡ }|d }tj| j| j| j| | j| j| j| g| j| j|d d�}| 	|¡ |S )Nr>   r?   r@   rB   rE   r   r   r   r+   s   s"    
   ýú
zRTriangle.drawNrI   r   r   r   r   rJ   d   s   rJ   c                   @   s    e Zd ZdZdd„ Zdd„ ZdS )ÚOctagonzvThis widget draws an Octagon.

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

    c                 C   s$   d| _ d| _d| _tj| _d | _d S rK   )r   r   r   r   Úyellowr   r   r   r   r   r   r   Œ   s
    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%   ©rA   r   r   r   )
r*   r   r   rC   rD   r   r   r   r   r,   )r   r0   rF   ÚathirdZoctagonr   r   r   r+   “   s2    
       ùö
zOctagon.drawNrI   r   r   r   r   rM   „   s   rM   c                   @   s6   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   s4   d| _ d| _d| _tj| _tj| _tj| _	d| _
d S ©Nr   r   r%   )r   r   r   r   Úwhiter   r   rT   r.   r   rU   r   r   r   r   r   ¶   s    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   rC   ÚRectr   r   r   r   r,   ÚLinerT   rU   )r   r0   rF   ÚboxZ
crossLine1Z
crossLine2r   r   r   r+   ¿   s*    
 ý
4ý
4ý
zCrossbox.drawN©r   r3   r4   r5   r6   r	   r7   r9   r8   r:   r   r+   r   r   r   r   rR   ©   s   þ	rR   c                   @   s6   e Zd ZdZeeeeƒeeƒd�Z	dd„ Z
dd„ ZdS )ÚTickboxz¤This draws a black box with a red tick in it - another 'checkbox'.

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

)rS   Ú	tickColorÚ	tickwidthc                 C   s4   d| _ d| _d| _tj| _tj| _tj| _	d| _
d S rV   )r   r   r   r   r   r`   r.   r   rW   r   ra   r   r   r   r   r   ç   s    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"   rX   rY   çffffffÖ?rZ   r@   )r*   r   r   rC   r[   r   r   r   r   r,   ÚPolyLiner`   ra   )r   r0   rF   r]   ZtickLiner   r   r   r+   ð   s(    
 ý
4   ÿü
zTickbox.drawNr^   r   r   r   r   r_   Ú   s   þ	r_   c                   @   s    e Zd ZdZdd„ Zdd„ ZdS )Ú
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 rK   )
r	   r   r   r   r   r   rN   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 ]V}| tj| j|d |  | j|d d  |d |d | j	| j	t
|d | jƒd�¡ qZ| j|d  }| j|d  }|d }|}|}d	}	d
}
d}g }|j}ddlm}m}m} |d }|| }|	| }|
| }||k �rB|d|  }�q(|}||k �rŒ|||ƒ|  }|||ƒ|  }||ƒ ||ƒ || }�qFtj|| j	| j	t
|d | jƒd�}| |¡ |S )Nr"   g      C@©ZcxÚcyÚrr   r   r   )r
   r"   rO   é   r%   rX   r    iT  r
   r   ©ÚsinÚcosÚpiç     €f@)r*   r   r   rC   r,   ÚCircler   r   r   r   Úmaxr   ZEllipseÚappendÚmathrj   rk   rl   rc   )r   r0   rF   ÚiÚcenterxÚcenteryÚradiusÚyradiusÚxradiusÚstartangledegreesÚendangledegreesÚdegreedeltaÚ
pointslistÚarj   rk   rl   ÚdegreestoradiansÚradiansdeltaÚ
startangleÚendangleÚangler   r   Úsmiler   r   r   r+     sX    
& þ4 þ


 ý
zSmileyFace.drawNrI   r   r   r   r   rd     s   rd   c                   @   s4   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   )rS   Ú	stopColorc                 C   s.   d| _ d| _d| _tj| _tj| _tj| _	d S rK   )
r   r   r   r   r.   r   Ú	orangeredr   Ú
ghostwhiter„   r   r   r   r   r   R  s    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 )NrO   r"   r
   rP   éK   r   ç      à?çš™™™™™Ù?ÚSTOPr$   zHelvetica-Bold)r   r'   r(   ZfontName)r*   r   r   rC   rD   r   r   r   r,   r   r„   r-   )r   r0   rF   rQ   ZouterOctagonZinnerOctagonr   r   r   r+   Z  sl    
       ùö
        ùö
    þzStopSign.drawN©r   r3   r4   r5   r6   r	   r7   r9   r:   r   r+   r   r   r   r   rƒ   G  s   
ÿrƒ   c                   @   s4   e Zd ZdZeeeedd�d�Zdd„ Z	dd„ Z
d	S )
Ú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   )rS   ÚinnerBarColorc                 C   s.   d| _ d| _d| _tj| _tj| _tj| _	d S rK   )
r   r   r   r   r.   r   r…   r   r†   r�   r   r   r   r   r   �  s    zNoEntry.__init__c                 C   sÜ   t | jƒ}t ¡ }| jrN| tj| j|d  | j|d  |d d | jdd�¡ | j	r’| tj| j|d  | j|d  |d |d  | j	d dd�¡ | j
}|rØ| tj| j|d  | j|d  |d |d	 ||ddd
�¡ |S )Nr"   r
   re   r!   r   r   r‰   çš™™™™™é?çš™™™™™É?)ÚwidthÚheightr   r   ZstrokeLineCapr   )r*   r   r   rC   r   r,   rn   r   r   r   r�   r[   )r   r0   rF   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'

        )rS   c                 C   s&   d| _ d| _d| _tj| _tj| _d S rK   )r   r   r   r   r   r   rW   r   r   r   r   r   r   ´  s
    zNotAllowed.__init__c                 C   sf  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|  }qä|}||k �rB|||ƒ|  }|||ƒ|  }||ƒ ||ƒ || }qþtj||||d d�}| 	|¡ |S )Nr"   r%   g      $@re   é   r   i°ÿÿÿéZ   r   ri   rm   rX   )r*   r   r   rC   r   rn   r   r   r   r,   rp   rq   rj   rk   rl   rc   )r   r0   rF   r   ZouterCirclers   rt   ru   rv   rw   rx   ry   rz   r{   r|   rj   rk   rl   r}   r~   r   r€   r�   r   r   Zcrossbarr   r   r   r+   »  s@    
<


 

zNotAllowed.drawN)	r   r3   r4   r5   r6   r	   r:   r   r+   r   r   r   r   r’   ©  s   
r’   c                   @   s    e Zd ZdZdd„ Zdd„ ZdS )Ú	NoSmokingz^This draws a no-smoking sign.

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

        c                 C   s   t  | ¡ d S r=   )r’   r   r   r   r   r   r   é  s    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   r[   r   r†   ÚgrayÚinsertr…   )	r   r0   rF   ZnewxZnewyZcigarrette1Zcigarrette2Zcigarrette3Zcigarrette4r   r   r   r+   ì  sB    

  ÿ  ÿ  ÿ  ÿzNoSmoking.drawNrI   r   r   r   r   r•   á  s   r•   c                   @   s    e Zd ZdZdd„ Zdd„ ZdS )Ú
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   r>   )	r   r   r   r   r.   r   Z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 )Nr>   r"   r   r@   r!   r‡   g      @r“   g      @)rA   r   r   )r*   r   r   rC   r   rD   r   r   r   r,   r   )	r   r0   rF   ÚewrG   ZouterTriangleZinnerTriangleZexmarkZexdotr   r   r   r+     sz    
   ýú
   ýú
    üú
    üú
zDangerSign.drawNrI   r   r   r   r   rŸ     s   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'

)rS   Ú	tickcolorÚ
crosscolorÚ	testValuec                 C   s,   d| _ d| _d| _tj| _tj| _d| _d S )Nr   r   r
   )	r   r   r   r   rL   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¤   r_   r¢   r`   rR   r£   rT   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¥   Zyn2ÚlabelFontSizer   r   r   r2   w  sH    

"  þ"  þ  þz
YesNo.demoN)r   r3   r4   r5   r6   r	   r7   ÚisColorZ	isBooleanr:   r   r+   r2   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'

        )rS   Ú	diskColorc                 C   s   d| _ d| _d| _tj| _d S rK   )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´?rY   g333333ã?rZ   )Úx1Úy1Zx2Úy2r   r   r   gffffffæ?r�   rb   gìQ¸…ëÑ?gìQ¸…ë¡?g¸…ëQ¸¾?)r*   r   r   rC   r[   r   r   r±   r,   r   Z
whitesmokeZ	royalbluer\   r.   Úsilver)r   r0   rF   ZdiskBodyÚlabelZlabelsplashÚline1Úline2Úline3Z
metalcoverZ	coverslotr   r   r   r+   ¦  sf    
 ý
,ý
,ý
4ý
4ý
4ý
 ý
(ý
zFloppyDisk.drawN)r   r3   r4   r5   r6   r	   r7   r¯   r:   r   r+   r   r   r   r   r°   ”  s   ÿr°   c                   @   s    e Zd ZdZdd„ Zdd„ ZdS )ÚArrowOnezuThis widget draws an arrow (style one).

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

        c                 C   s*   d| _ d| _d| _tj| _d| _d | _d S rK   )r   r   r   r   r   r   r   r   r   r   r   r   r   ç  s    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"   rO   é   é   r@   ©r*   r   r   rC   r   r   r,   rD   r   r   r   )r   r0   rF   r   r   Ús2Ús3Ús5r   r   r   r+   ï  s8    
  
 
 
   ù	õzArrowOne.drawNrI   r   r   r   r   rº   à  s   rº   c                   @   s    e Zd ZdZdd„ Zdd„ ZdS )ÚArrowTwozuThis widget draws an arrow (style two).

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

        c                 C   s*   d| _ d| _d| _tj| _d| _d | _d S rK   )r   r   r   r   Úbluer   r   r   r   r   r   r   r     s    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"   rO   r»   é   é   é   g     À2@r@   r½   )	r   r0   rF   r   r   r¾   r¿   rÀ   Zs24r   r   r   r+     s:    
 
 

 

 
 
 
 
ù	ôzArrowTwo.drawNrI   r   r   r   r   rÁ   	  s   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   )rS   Ú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   sJ  t | jƒ}t ¡ }| j}| j| j }| j| j }d| j }|sh|| ||| |f||| ||| fg}n–t	|ƒrªt
|ƒ}| d¡rœ|t |d d… ƒ d }q²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   rC   rÇ   r   r   r   r   r   r   ÚendswithÚPathr   r   ZmoveToZlineTor,   )r   r0   rF   Zigr   r   ZhsizeÚLÚgsÚPZx0Zy0r²   r³   r   r   r   r+   E  s*    

*
L
zCrossHair.drawN)r   r3   r4   r5   r6   r	   r7   ZEitherOrZisStringZ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)   rR   r   r   r,   r-   r   r   r   r   r.   r_   r¡   rƒ   rŒ   rd   rŸ   r’   r•   rº   rÁ   r°   r   Z
drawToFileÚprint)r®   r/   ÚcbÚtbr¥   Z
tempstringÚssÚneZsfZdsÚnaÚnsZa1Za2Úfdr   r   r   Útestb  s   
"  þ
"  þ
"  þ  þ
"  þ
"  þ
"  þ
"  þ
"  þ
"  þ
"  þ
"  þ
"  þrÙ   Ú__main__N)!Ú__version__r5   Zreportlab.libr   Zreportlab.lib.validatorsZreportlab.lib.attrmapZreportlab.lib.utilsr   r   Zreportlab.graphicsr   Zreportlab.graphics.widgetbaser   r   r	   r;   rJ   rM   rR   r_   rd   rƒ   rŒ   r’   r•   rŸ   r¡   r°   rº   rÁ   rÆ   rÙ   r   r   r   r   r   Ú<module>   s8   % %1+B=%8*DEL).+n
