
    kf{                     d   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
e          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d d e          Z G d! d"e          Z G d# d$e          Z G d% d&e          Z G d' d(e          Z G d) d*e          Z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                       e Zd ZdZdZ e eed           eed           eed           eed           ee           ee           ee           ee                    Z	d Z
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                     | j         j        dk    s
J d            dx| _        x| _        x| _        | _        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   selfs    j/var/www/html/nettyfy-visnx/env/lib/python3.11/site-packages/reportlab/graphics/widgets/signsandsymbols.py__init__z_Symbol.__init__8   sc    ~&	1113X111.////$'DG	    c           
         t          j        dd          }t          | j                  }|                                 }d|_        d|_        |                                 |                    |           |                    t          j	        |j        |dz  z   |j        dz
  |j        j
        t          j        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obs       r   demoz_Symbol.demo@   s    N3$$$)^^
				b				fmBD!A#JRL1V\V^%') ) ) 	* 	* 	* r!   N)r   
__module____qualname____doc___nodocAttrMapAttrMapValueisNumberisColorOrNone_attrMapr    r5    r!   r   r   r   (   s          FwL'<===L'<===\((HIII\((HIII|H%% L//"l=11"l8,,	
 	
 	
H      r!   r   c                       e Zd ZdZd Zd ZdS )	ETriangle#This draws an equilateral triangle.c                 :    t                               |            d S N)r   r    r   s    r   r    zETriangle.__init__P   s    r!   c           	      2   t          | j                  }t          j                    }|dz  }t          j        | j        | j        | j        |z   | j        | j        |dz  z   | j        |z   g| j        | j        |dz            }|	                    |           |S )N      ?r%         I@pointsr   r   r   
r-   r   r   GroupPolygonr   r   r   r   r/   r   r3   gaetriangles        r   r.   zETriangle.drawS   s    $)LNN uW>FDFF1HdfFAaCL,#  >!-S5" " " 	
hr!   Nr   r6   r7   r8   r    r.   r?   r!   r   rA   rA   M   s8        --      r!   rA   c                       e Zd ZdZd Zd ZdS )	RTrianglezThis draws a right-angled triangle.

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

        c                 `    d| _         d| _        d| _        t          j        | _        d | _        d S Nr   r   )r   r   r   r   greenr   r   r   s    r   r    zRTriangle.__init__l   s.    	r!   c           	      &   t          | j                  }t          j                    }|dz  }t          j        | j        | j        | j        |z   | j        | j        | j        |z   g| j        | j        |dz            }|	                    |           |S )NrF   rG   rH   rJ   rM   s        r   r.   zRTriangle.draws   s    $)LNN uW>FDFF1HdfF46!8,  >!-S5" " " 	
hr!   NrQ   r?   r!   r   rS   rS   d   s<                  r!   rS   c                       e Zd ZdZd Zd ZdS )OctagonzvThis widget draws an Octagon.

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

    c                 `    d| _         d| _        d| _        t          j        | _        d | _        d S rU   )r   r   r   r   yellowr   r   r   s    r   r    zOctagon.__init__   s.    	r!   c                    t          | j                  }t          j                    }|dz  }t          j        | j        |z   | j        | j        | j        |z   | j        | j        |dz  z   | j        |z   | j        |z   | j        |dz  z   | j        |z   | j        |z   | j        |dz  z   | j        |z   | j        |z   | j        |dz  z   | j        g| j        | j        d          }|	                    |           |S )N   r%   r(   rI   r   r   r   )
r-   r   r   rK   rL   r   r   r   r   r/   )r   r3   rN   athirdoctagons        r   r.   zOctagon.draw   s    $)LNN s..2fdfVm.2fdffQh6G.2fVmTVAX.2ffQh.?.2fQhq8I.2fQhv.2ffQh.?)I 594D26.24
6 
6 
6 	
gr!   NrQ   r?   r!   r   rY   rY      s<                  r!   rY   c                   ^    e Zd ZdZ ee ee           ee                    Z	d Z
d ZdS )CrossboxzThis draws a black box with a red cross in it - a 'checkbox'.

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

    )BASE
crossColor
crosswidthc                     d| _         d| _        d| _        t          j        | _        t          j        | _        t          j        | _	        d| _
        d S Nr   r   r(   )r   r   r   r   whiter   r   rd   r1   r   re   r   s    r   r    zCrossbox.__init__   s>    	 *!<r!   c           	         t          | j                  }t          j                    }t          j        | j        dz   | j        dz   |dz
  |dz
  | j        | j        d          }|	                    |           t          j
        | j        |dz  z   | j        |dz  z   | j        |dz  z   | j        |dz  z   | j        | j        | j                  }|	                    |           t          j
        | j        |dz  z   | j        |dz  z   | j        |dz  z   | j        |dz  z   | j        | j        | j                  }|	                    |           |S )Nr   r%   r   r   r   333333?333333?)r-   r   r   rK   Rectr   r   r   r   r/   Linerd   re   )r   r3   rN   box
crossLine1
crossLine2s         r   r.   zCrossbox.draw   sR   $)LNN k$&(DF1Hac1Q3>!-   	
c


[4$&!D&/461T6?TXTZ\]^b\bTc?!_!_. . .
 	
j[4$&!D&/461T6?TXTZ\]^b\bTc?!_!_. . .
 	
jr!   Nr   r6   r7   r8   r:   r   r;   r=   r<   r>   r    r.   r?   r!   r   rb   rb      sp          wG!\-00!\(++
 
 
H
      r!   rb   c                   ^    e Zd ZdZ ee ee           ee                    Z	d Z
d ZdS )TickboxzThis draws a black box with a red tick in it - another 'checkbox'.

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

)rc   	tickColor	tickwidthc                     d| _         d| _        d| _        t          j        | _        t          j        | _        t          j        | _	        d| _
        d S rg   )r   r   r   r   r   ru   r1   r   rh   r   rv   r   s    r   r    zTickbox.__init__   s>    	!<r!   c                 ,   t          | j                  }t          j                    }t          j        | j        dz   | j        dz   |dz
  |dz
  | j        | j        d          }|	                    |           t          j
        | j        |dz  z   | j        |dz  z   | j        |dz  z   | j        |dz  z   | j        |dz  z   | j        |dz  z   | j        |dz  z   | j        |dz  z   g| j        | j        | j                  }|	                    |           |S )Nr   r%   rj   rk   ffffff?rl   rH   )r-   r   r   rK   rm   r   r   r   r   r/   PolyLineru   rv   )r   r3   rN   ro   tickLines        r   r.   zTickbox.draw   s#   $)LNN k$&(DF1Hac1Q3>!-   	
c


?TVQtV_dfafotvWXY]W]`d`fhijnhn`o-1VQtV_dfafotvWXY]W]`d`fhijnhn`o-q>!^!^	- - -
 	
hr!   Nrr   r?   r!   r   rt   rt      sp          wG L// L**
 
 
H
      r!   rt   c                       e Zd ZdZd Zd ZdS )
SmileyFacezkThis draws a classic smiley face.

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

    c                     t                               |            d| _        d| _        d| _        t
          j        | _        t
          j        | _	        d S rU   )
r   r    r   r   r   r   r[   r   r1   r   r   s    r   r    zSmileyFace.__init__  sD    	!<r!   c                    t          | j                  }t          j                    }|                    t          j        | j        |dz  z   | j        |dz  z   |dz  | j        | j	        t          |dz  | j                                       dD ]r}|                    t          j        | j        |dz  |z  z   | j        |dz  dz  z   |dz  |dz  | j	        | j	        t          |dz  | j                                       s| j        |dz  z   }| j        |dz  z   }|dz  }|}|}d	}	d
}
d}g }|j        }ddlm}m}m} |dz  }||z  }|	|z  }|
|z  }||k     r|d|z  z   }||k     |}||k     rC| ||          |z  z   }| ||          |z  z   } ||            ||           ||z   }||k     Ct          j        || j	        | j	        t          |dz  | j                            }|                    |           |S )Nr%   g      C@cxcyrr   r   r   )r   r%   r]      r(   rj   r#   iT  r   r   sincospi     f@)r-   r   r   rK   r/   Circler   r   r   r   maxr   Ellipseappendmathr   r   r   rz   )r   r3   rN   icenterxcenteryradiusyradiusxradiusstartangledegreesendangledegreesdegreedelta
pointslistar   r   r   degreestoradiansradiansdelta
startangleendangleangler   r   smiles                            r   r.   zSmileyFace.draw  s   $)LNN 	
fmtvqs|!!.d6F#d&6779 9 9 	: 	: 	:  	> 	>AEE&.1a!Qw"ad".d>N #AcE$*: ; ;= = = > > > > !!s
%%%%%%%%%%e8"#33&'77
"#33z!!!!B$h z!!Hnn##e**V++A##e**W,,AAaDDD!!A$$$,&E	 Hnn 
+!- 3t'788: : : 	
er!   NrQ   r?   r!   r   r}   r}     s<         ( ( (0 0 0 0 0r!   r}   c                   N    e Zd ZdZ ee eed                    Zd Z	d Z
dS )StopSignzbThis draws a (British) stop sign.

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

        zcolor of the word stopr   )rc   	stopColorc                     d| _         d| _        d| _        t          j        | _        t          j        | _        t          j        | _	        d S rU   )
r   r   r   r   r1   r   	orangeredr   
ghostwhiter   r   s    r   r    zStopSign.__init__R  s9    	!<)*r!   c                    t          | j                  }t          j                    }|dz  }t          j        | j        |z   | j        | j        | j        |z   | j        | j        |dz  z   | j        |z   | j        |z   | j        |dz  z   | j        |z   | j        |z   | j        |dz  z   | j        |z   | j        |z   | j        |dz  z   | j        g| j        d d          }|                    |           t          j        | j        |z   |dz  z   | j        |dz  z   | j        |dz  z   | j        |z   |dz  z   | j        |dz  z   | j        |dz  z   |dz  z
  | j        |z   |dz  z   | j        |z   |dz  z
  | j        |dz  z   |dz  z
  | j        |z   |dz  z
  | j        |z   |dz  z
  | j        |dz  z   |dz  z
  | j        |z   |dz  z
  | j        |z   |dz  z   | j        |dz  z   |dz  z
  | j        |dz  z   gd | j	        d          }|                    |           | j
        rL|                    t          j        | j        |dz  z   | j        |dz  z   d	| j
        d
|dz  d                     |S )Nr]   r%   r   r^   K   r         ?皙?STOPr'   zHelvetica-Bold)r   r*   r+   fontName)r-   r   r   rK   rL   r   r   r   r/   r   r   r0   )r   r3   rN   r_   outerOctagoninnerOctagons         r   r.   zStopSign.drawZ  s   $)LNN s~dfVmTV.2fdfVm.2fdffQh6G.2fVmTVAX.2ffQh.?.2fQhq8I.2fQhv.2ffQh.?.I 594D2623
5 
5 
5 	
l~dfVmQrT.BDFAbDM.2fadmTVF]AbD=Q.2fadmTVVAX=NPQRTPT=U.2fVmQrT.BDF1HaPRdO.2ffQh.?2.FPQTUVXTXHY/3vax!B$.?PQARTUVXTXAY/3vax!B$.?PQRTPTAU.2ffQh.?2.FPQRTPT.W 5926.23
5 
5 
5 	
l> 	FEE&-#tvqu~"dn%&qS3CE E E F F F r!   Nr   r6   r7   r8   r:   r   r;   r=   r>   r    r.   r?   r!   r   r   r   G  si          wG L4LMMM
 
 
H+ + +' ' ' ' 'r!   r   c                   N    e Zd ZdZ ee eed                    Zd Z	d Z
dS )NoEntryzThis 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   )rc   innerBarColorc                     d| _         d| _        d| _        t          j        | _        t          j        | _        t          j        | _	        d S rU   )
r   r   r   r   r1   r   r   r   r   r   r   s    r   r    zNoEntry.__init__  s<    	!<)#.r!   c                 P   t          | j                  }t          j                    }| j        rK|                    t          j        | j        |dz  z   | j        |dz  z   |dz  d | j        d                     | j	        rQ|                    t          j        | j        |dz  z   | j        |dz  z   |dz  |dz  z
  | j	        d d                     | j
        }|rK|                    t          j        | j        |dz  z   | j        |dz  z   |dz  |d	z  ||dd
                     |S )Nr%   r   r   r$   r   r   r   皙?皙?)widthheightr   r   strokeLineCapr   )r-   r   r   rK   r   r/   r   r   r   r   r   rm   )r   r3   rN   r   s       r   r.   zNoEntry.draw  s   $)LNN  	UEE&-dfacl461Q3<aPQc_csw  tD  RS  T  T  T  U  U  U> 	]EE&-dfacl$&!A#,qQRsUVWYUYlimiw  HL  Z[  \  \  \  ]  ]  ]* 	vEE&+dfaendfaenAcERSTWRWer  CP  bc  st  u  u  u  v  v  vr!   Nr   r?   r!   r   r   r     si          wG$]8PQQQ
 
 
H/ / /    r!   r   c                   6    e Zd ZdZ ee          Zd Zd ZdS )
NotAllowedzThis draws a 'forbidden' roundel (as used in the no-smoking sign).

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

        )rc   c                 t    d| _         d| _        d| _        t          j        | _        t          j        | _        d S rU   )r   r   r   r   r   r   rh   r   r   s    r   r    zNotAllowed.__init__  s.    	!:r!   c           	         t          | j                  }t          j                    }| j        }t          j        | j        |dz  z   | j        |dz  z   |dz  |dz  z
  | j        ||dz            }|	                    |           | j        |z   }| j        |dz  z   |dz  z
  }||dz  z
  }|dz  }|dz  }	d}
d}d}g }|j
        }d	d
lm}m}m} |dz  }||z  }|
|z  }||z  }||k     r|d|z  z   }||k     |}||k     rC| ||          |z  z   }| ||          |z  z   } ||            ||           ||z   }||k     Ct          j        ||||dz            }|	                    |           |S )Nr%   r(   g      $@r      r   iZ   r   r   r   rj   )r-   r   r   rK   r   r   r   r   r   r/   r   r   r   r   r   rz   )r   r3   rN   r   outerCircler   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   crossbars                             r   r.   zNotAllowed.draw  s   $)LNN& m$&!A#,tvqs|STUVSVYZ[]Y]R^lplz  KV  de  fi  di  j  j  j	kq!ac"!A#w((
%%%%%%%%%%e8"#33&'77
"#33z!!"}H z!!Hnn##e**V++A##e**W,,AAaDDD!!A$$$,&E	 Hnn
 ?:;Vaqrsvqvwww	hr!   N)	r   r6   r7   r8   r:   r   r>   r    r.   r?   r!   r   r   r     sV          wG 
 
 
H& & &# # # # #r!   r   c                       e Zd ZdZd Zd ZdS )	NoSmokingz^This draws a no-smoking sign.

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

        c                 :    t                               |            d S rD   )r   r    r   s    r   r    zNoSmoking.__init__  s    D!!!!!r!   c           	         t          | j                  }t                              |           }| j        |dz  z   |dz  z
  }| j        |dz  z   |dz  z
  }t          j        |||dz  |dz  t          j	        t          j
        d          }||dz  z   |dz  z   }|                    d|           t          j        |||d	z  |dz  t          j        d d          }||d
z  z   }|                    d|           t          j        |||d	z  |dz  t          j        d d          }||d
z  z   }|                    d|           t          j        |||d	z  |dz  t          j        d d          }||d
z  z   }|                    d|           |S )Nr%   g      @       r   r   r   r   r   r   r   r   @   P   #   )r-   r   r   r.   r   r   r   rm   r   r   grayinsertr   )	r   r3   rN   newxnewycigarrette1cigarrette2cigarrette3cigarrette4s	            r   r.   zNoSmoking.draw  s   $)OOD!! vqs|QsU#vqs|QrT"kdqsaPRd"-V[VWY Y Y1Q3Z2	K   kdqtqQSt",DaQ Q QAbDk	K   kdqtqQSt",DaQ Q QAbDk	K   kdqtqQSt",DaQ Q QAbDk	K   r!   NrQ   r?   r!   r   r   r     s<         " " "    r!   r   c                       e Zd ZdZd Zd ZdS )
DangerSignzThis draws a 'danger' sign: a yellow box with a black exclamation point.

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

        c                     d| _         d| _        d| _        t          j        | _        t          j        | _        | j        dz  | _        d S )Nr   r   rF   )	r   r   r   r   r1   r   goldr   r   r   s    r   r    zDangerSign.__init__  s>    	!<9U?r!   c                    t          | j                  }t          j                    }| j        }|dz  }| j        }|dz  }t          j        | j        | j        | j        |z   | j        | j        |dz  z   | j        |z   gd | j        d          }|	                    |           t          j        | j        |dz  z   | j        |dz  z   | j        |z   |dz  z
  | j        |dz  z   | j        |dz  z   | j        |z   |dz  z
  g| j
        d d          }|	                    |           t          j        | j        |dz  z   |dz  z
  | j        |dz  z   | j        |dz  z   |dz  z   | j        |dz  z   | j        |dz  z   |dz  z   |dz  z   | j        |d	z  z   | j        |dz  z   |dz  z
  |dz  z
  | j        |d	z  z   g| j        d 
          }|	                    |           t          j        | j        |dz  z   |dz  z
  | j        |z   | j        |dz  z   |dz  z   | j        |z   | j        |dz  z   |dz  z   | j        |dz  z   | j        |dz  z   |dz  z
  | j        |dz  z   g| j        d 
          }|	                    |           |S )NrF   r%   r   rH   r$   r   g      @r   g      @)rI   r   r   )r-   r   r   rK   r   rL   r   r   r   r/   r   )	r   r3   rN   ewrO   outerTriangleinnerTriangleexmarkexdots	            r   r.   zDangerSign.draw  s   $)LNNuW
 uWFDFF1HdfFAaCL1#  !-   	
mFAbDM461R4=VAX"tvqt}FAaCL$&(QrT*1,  >!   	
mfQqSj"Q$3fQqSj"Q$3fQqSjBqD"BqD)DF2c6MfQqSjBqD"BqD)DF2c6M	(;
  +!# # # 	
ffQqSj"Q$fQqSj"Q$fQqSj"Q$1fQqSj"Q$1	'.
  +!# # # 	
er!   NrQ   r?   r!   r   r   r     s<         + + +1 1 1 1 1r!   r   c                   x    e Zd ZdZ ee ee           ee           ee                    Z	d Z
d Z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'

)rc   	tickcolor
crosscolor	testValuec                     d| _         d| _        d| _        t          j        | _        t          j        | _        d| _        d S )Nr   r   r   )	r   r   r   r   rV   r   r   r   r   r   s    r   r    zYesNo.__init__a  s4    	 *r!   c                     | j         rt                      }| j        |_        nt	                      }| j        |_        | j        |_        | j        |_        | j	        |_	        |
                                 |S rD   )r   rt   r   ru   rb   r   rd   r   r   r   r.   )r   yns     r   r.   z
YesNo.drawi  s_    > 	*yyBBLLzzB/BMVV	
				r!   c           
      n   t          j        dd          }t                      }d|_        d|_        d|_        d|_        |                                 |                    |           t                      }d|_        d|_        d|_        d|_        |                                 |                    |           d	}|                    t          j	        |j        |j        d
z  z   |j        d|z  z
  dt          j        d|                     |                    t          j	        |j        |j        d
z  z   |j        d|z  z
  dt          j        d|                     d}|                    t          j	        |j        dz   |j        dz
  | j        j        t          j        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/   r0   r   r1   r   r   )r   r2   r   yn2labelFontSizes        r   r5   z
YesNo.demow  s   N3$$WW
				b			gg


	c


	fmBD"'!),bdC4E.F)V\h%24 4 4 	5 	5 	5 	
fmCE38A:.s=7H0I)V\h%24 4 4 	5 	5 	5 	fmBDGRT"W N3v|X`%24 4 4 	5 	5 	5 r!   N)r   r6   r7   r8   r:   r   r;   isColor	isBooleanr>   r    r.   r5   r?   r!   r   r   r   O  s        	 	 wG L))!\'** L++
 
 
H        r!   r   c                   J    e Zd ZdZ ee ee                    Zd Z	d Z
dS )
FloppyDiskzyThis widget draws an icon of a floppy disk.

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

        )rc   	diskColorc                 R    d| _         d| _        d| _        t          j        | _        d S rU   )r   r   r   r   r1   r   r   s    r   r    zFloppyDisk.__init__  s$    	r!   c           	      0   t          | j                  }t          j                    }t          j        | j        | j        |dz  z   |||dz  z
  | j        d d          }|                    |           t          j        | j        |dz  z   | j        |z   |dz  z
  |dz  |dz  t          j
        d d          }|                    |           t          j        | j        |dz  z   | j        |z   |dz  z
  |dz  |dz  t          j        d d          }|                    |           t          j        | j        |d	z  z   | j        d
|z  z   | j        |dz  z   | j        d
|z  z   t          j        t          j        d          }|                    |           t          j        | j        |d	z  z   | j        d|z  z   | j        |dz  z   | j        d|z  z   t          j        t          j        d          }|                    |           t          j        | j        |d	z  z   | j        d|z  z   | j        |dz  z   | j        d|z  z   t          j        t          j        d          }|                    |           t          j        | j        |dz  z   | j        |dz  |dz  t          j        d d          }	|                    |	           t          j        | j        |dz  z   | j        |dz  z   |dz  |dz  | j        d d          }
|                    |
           |S )Nr   r   r   r   r   r   gQ?g{Gz?rk   g333333?rl   )x1y1x2y2r   r   r   gffffff?r   ry   gQ?gQ?gQ?)r-   r   r   rK   rm   r   r   r   r/   r   
whitesmoke	royalbluern   r1   silver)r   r3   rN   diskBodylabellabelsplashline1line2line3
metalcover	coverslots              r   r.   zFloppyDisk.draw  s+   $)LNN ;461S5>1aPSe9>!   	
hdfaenAcE0B!C%XYZ^X^!,!   	
ekDFAcENtvax!C%6HPQRUPU^_`d^d!+!   	
k tvqv463q5>dfaPTfoZ^Z`befgbgZh!<#\   	
etvqv463q5>dfaPTfoZ^Z`befgbgZh!<#\   	
etvqv463q5>dfaPTfoZ^Z`befgbgZh!<#\   	
e[461S5>dfQsUSTUYSY!=!  
 	
jK$&!D&/dfqw5GqQUv^_`d^d>!  	 	
ir!   N)r   r6   r7   r8   r:   r   r;   r   r>   r    r.   r?   r!   r   r   r     sc          wG L))
 
 
H& & &8 8 8 8 8r!   r   c                       e Zd ZdZd Zd ZdS )ArrowOnezuThis widget draws an arrow (style one).

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

        c                 n    d| _         d| _        d| _        t          j        | _        d| _        d | _        d S rU   )r   r   r   r   r   r   r   r   r   s    r   r    zArrowOne.__init__  s6    	r!   c                 x   t          | j                  }t          j                    }| j        }| j        }|dz  }|dz  }|dz  }|                    t          j        |||z   ||d|z  z   ||z   |d|z  z   ||z   |d|z  z   ||z   ||z   ||z   ||z   ||z   ||z   g| j        | j	        | j
                             |S )Nr%   r]         rH   r-   r   r   rK   r   r   r/   rL   r   r   r   )r   r3   rN   r   r   s2s3s5s           r   r.   zArrowOne.draw  s    $)LNNFFqSqSqS	fn()!B$()!AbD&()"QqtV()"QqtV()!AbD()"QrT()"QrT') !N".".   	 	 	 r!   NrQ   r?   r!   r   r  r    s<                  r!   r  c                       e Zd ZdZd Zd ZdS )ArrowTwozuThis widget draws an arrow (style two).

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

        c                 n    d| _         d| _        d| _        t          j        | _        d| _        d | _        d S rU   )r   r   r   r   bluer   r   r   r   s    r   r    zArrowTwo.__init__  s6    	r!   c                    t          | j                  }t          j                    }| j        }| j        }|dz  }|dz  }|dz  }|dz  }|                    t          j        ||d|z  z   ||d|z  z   |d|z  z   |d|z  z   |d|z  z   |d|z  z   ||z   ||z   |d|z  z   ||z   |d|z  z   |d|z  z   g| j        | j	        | j
                             |S )	Nr%   r]   r           g     2@rH   r  )	r   r3   rN   r   r   r  r  r  s24s	            r   r.   zArrowTwo.draw  s   $)LNN FFqSqSqSd	fna3ha3heCiK2c6adFAadFaC2adFAbDeCiK2c6 **, , , 	 	 	 r!   NrQ   r?   r!   r   r  r  	  s<                  r!   r  c            	       d    e Zd ZdZ ee e eee	f          d                    Z
d Zd ZdS )	CrossHairrB   z( gap at centre as "x%" or points or Noner   )rc   innerGapc                     dx| _         x| _        x| _        | _        d| _        d | _        t          j        | _        d| _	        d| _
        d S )Nr   r(   r   z20%)r   r   r   r   r   r   r   r1   r   r   r  r   s    r   r    zCrossHair.__init__=  sI    .////$'DG	!<r!   c                    t          | j                  }t          j                    }| j        }| j        | j        z   }| j        | j        z   }d| j        z  }|s||z
  |||z   |f|||z
  |||z   fg}nt          |          rUt          |          }|                    d          r|t          |d d                   z  dz  }nt          |          dz  }n|dz  }||z
  |||z
  |f||z   |||z   |f|||z
  |||z
  f|||z   |||z   fg}t          j        | j        | j                  }	|D ]3\  }
}}}|	                    |
|           |	                    ||           4|                    |	           |S )Nr   %r   g      Y@)r   r   )r-   r   r   rK   r  r   r   r   r   r   r   endswithPathr   r   moveTolineTor/   )r   r3   rN   igr   r   hsizeLgsPx0y0r   r   s                 r   r.   zCrossHair.drawE  s   $)LNN]F47NF47NDI 	aE'!AeGA&1U71QuW(=>AARyy r]];;t$$ 'uRW~~-e3BBr3BBVE'!AbD#ad1QuWQ%7!AeGAad9KaPQRTPTUVWXY^W^M_`AKD$4AQRRR 	 	KBr"RHHROOOHHROOOO	ar!   N)r   r6   r7   r8   r:   r   r;   EitherOrisStringisNumberOrNoner>   r    r.   r?   r!   r   r  r  7  sr        --wG#|HHh~-F$G$GMwxxx
 
 
H      r!   r  c                  4   d} t          j        dd          }t                      }d|_        d|_        |                    |           |                    t          j        |j        |j        dz  z   |j        d| z  z
  |j        j	        t          j        d| 	                     t                      }d
|_        d|_        |                    |           |                    t          j        |j        |j        dz  z   |j        d| z  z
  |j        j	        t          j        d| 	                     t                      }d|_        d|_        |                    |           |j        j	        dz   }|                    t          j        |j        |j        dz  z   |j        d| z  z
  |t          j        d| 	                     |                    t          j        dddt          j        d| dz  	                     t                      }d|_        d|_        |                    |           |                    t          j        |j        |j        dz  z   |j        d| z  z
  |j        j	        t          j        d| 	                     t                      }d
|_        d|_        |                    |           |                    t          j        |j        |j        dz  z   |j        d| z  z
  |j        j	        t          j        d| 	                     t!                      }d|_        d|_        |                    |           |                    t          j        |j        |j        dz  z   |j        d| z  z
  |j        j	        t          j        d| 	                     t#                      }	d|	_        d|	_        |                    |	           |                    t          j        |	j        |	j        dz  z   |	j        d| z  z
  |	j        j	        t          j        d| 	                     t%                      }
d
|
_        d|
_        |                    |
           |                    t          j        |
j        |
j        dz  z   |
j        d| z  z
  |
j        j	        t          j        d| 	                     t'                      }d|_        d|_        |                    |           |                    t          j        |j        |j        dz  z   |j        d| z  z
  |j        j	        t          j        d| 	                     t)                      }d|_        d|_        |                    |           |                    t          j        |j        |j        dz  z   |j        d| z  z
  |j        j	        t          j        d| 	                     t+                      }d
|_        d|_        |                    |           |                    t          j        |j        |j        dz  z   |j        d| z  z
  |j        j	        t          j        d| 	                     t-                      }d|_        d|_        |                    |           |                    t          j        |j        |j        dz  z   |j        d| z  z
  |j        j	        t          j        d| 	                     t/          j        |dd           t3          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,   rb   r   r   r/   r0   r   r   r   r   r1   rt   r   r   r   r}   r   r   r   r  r  r   r	   
drawToFileprint)r   r2   cbtbr   
tempstringssnesfdsnansa1a2fds                  r   testr@  b  s    Ms3A	BBDBDEE"IIIEE&-bgai("$M0A*B<0FLU]$13 3 3 4 4 4 
BBDBDEE"IIIEE&-bgai("$M0A*BL1V\V^%24 4 4 5 5 5
 
BBDBDEE"III&,JEE&-bgai("$M0A*B&&,8%24 4 4 5 5 5 EE&-Ar  E  K  X`%24%79 9 9 : : :
 
BBDBDEE"IIIEE&-bgai("$M0A*BL1V\V^%24 4 4 5 5 5 
BBDBDEE"IIIEE&-bgai("$M0A*BL1V\V^%24 4 4 5 5 5 
BBDBDEE"IIIEE&-bgai("$M0A*BL1V\V^%24 4 4 5 5 5 
BBDBDEE"IIIEE&-bgai("$M0A*BL1V\V^%24 4 4 5 5 5 
BBDBDEE"IIIEE&-bgai("$M0A*BL1V\V^%24 4 4 5 5 5 
BBDBDEE"IIIEE&-bgai("$M0A*BL1V\V^%24 4 4 5 5 5 
BBDBDEE"IIIEE&-bgai("$M0A*BL1V\V^%24 4 4 5 5 5 
BBDBDEE"IIIEE&-bgai("$M0A*BL1V\V^%24 4 4 5 5 5 
BBDBDEE"IIIEE&-bgai("$M0A*BL1V\V^%24 4 4 5 5 5 13GHHH	
+,,,,,r!   __main__N)!__version__r8   reportlab.libr   reportlab.lib.validatorsreportlab.lib.attrmapreportlab.lib.utilsr   r   reportlab.graphicsr   reportlab.graphics.widgetbaser   r	   r   rA   rS   rY   rb   rt   r}   r   r   r   r   r   r   r   r  r  r  r@  r   r?   r!   r   <module>rI     s   	, !           & & & & # # # # 0 0 0 0 0 0 0 0 % % % % % % 0 0 0 0 0 0 ( ( ( ( ( (# # # # #f # # #J       .       @# # # # #g # # #J. . . . .w . . .b) ) ) ) )g ) ) )V@ @ @ @ @ @ @ @D: : : : :w : : :z# # # # #g # # #J5 5 5 5 5 5 5 5p' ' ' ' '
 ' ' 'TA A A A A A A AHC C C C CG C C CJJ J J J J J J JX' ' ' ' 'w ' ' 'R, , , , ,x , , ,\( ( ( ( ( ( ( (Vl- l- l-\ ZDFFFFF r!   