o
    e                     @   sB  d Z ddlmZmZmZ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mZ ddlmZ ddlmZmZ ddlZedddddZg g g g d	Zeddi d
dddddddddddddddddddddd d!d"d#d$dd%d&d'd(d)d*d+d,d-d.Zeddd/d0d1d2d3d4d5d6	Zded7< ed8d9d:d;d<d=Zd>d? Zd@dA Z efdBdCZ!G dDdE dEeZ"G dFdG dGeZ#dHdI Z$G dJdK dKeZ%G dLdM dMZ&ee&g dNg dOdPe&g dQg dRdSe&g dTg dUdVe&g dWg dXdYe&g dZg d[d\d]Z'ed^d_d`dadbd]Z(e)dckrddl*Z*e*+  dS dS )e)AcroForm    )		PDFObjectPDFArrayPDFDictionary	PDFString	pdfdocEncPDFName	PDFStreamPDFStreamFilterZCompress	escapePDF)stringWidth)Color	CMYKColorWhiterBlackeropaqueColorfp_str)isStrasNativeN)visiblehiddenZvisibleNonPrintingZhiddenPrintable)r   Z      i  ZreadOnly   required   ZnoExport   ZnoToggleToOffi @  radioi   Z
pushButtoni   ZradiosInUnisoni   	multilinei   passwordi    Z
fileSelecti   ZdoNotSpellChecki  @ ZdoNotScrolli   combi   ZrichTextcomboi   Zediti   sorti   multiSelecti    ZcommitOnSelChangei             @         i   )	Z	invisibler   ZnozoomZnorotateZnoviewreadonlylockedZtogglenoviewZlockedcontentsprintSDBIU)soliddashedbevelledinset
underlinedc                 C   sP   t | tt| d}|dkr$|sdg}n
t|ttfs|g}t||d< t|S )N)Wr.   r4      r/   )dictr   	_bsStyles
isinstancelisttupler   r   )borderWidthborderStyledashLend rC   JD:\Projects\ConvertPro\env\Lib\site-packages\reportlab/pdfbase/acroform.pybsPDFG   s   rE   c                 C   s   t | ddS )N%z\045)r   replace)srC   rC   rD   escPDFQ   s   rI   c                 C   s0   t | ts| }d} | D ]}| || O } q| S )Nr   )r<   intsplit)rH   rB   vxrC   rC   rD   	makeFlagsT   s   
rN   c                   @   s   e Zd Zdd Zdd ZdS )PDFFromStringc                 C   s   t |s
td| || _d S )Nz$need a unicode/bytes argument not %r)r   
ValueError_s)selfrH   rC   rC   rD   __init__]   s   
zPDFFromString.__init__c                 C   s
   t | jS N)r   rQ   )rR   ZdocumentrC   rC   rD   formatb   s   
zPDFFromString.formatN__name__
__module____qualname__rS   rU   rC   rC   rC   rD   rO   \   s    rO   c                   @   s   e Zd ZdddZdd ZdS )	
RadioGroup noToggleToOff required radioc                 C   s4   |st d|| _t|t| _g | _|| _d | _d S )NzRadioGroup created with no name)rP   TUrN   fieldFlagValuesFfkidsTV)rR   nametooltip
fieldFlagsrC   rC   rD   rS   f   s   
zRadioGroup.__init__c                 C   s   | j }t|}|dk rtd| j|f t| jtdd | j D tdt| jd}| j	r4t| j	|d< | j
r>t| j
|d< t||}|S )	Nr   z#RadioGroup:%s has %d < 2 RadioBoxesc                 S   s   g | ]}|qS rC   rC   ).0krC   rC   rD   
<listcomp>v   s    z%RadioGroup.format.<locals>.<listcomp>Btn)r_   ZKidsFTra   rb   r]   )r`   lenrP   ra   r:   r_   r   r   r   rb   r]   r   rU   )rR   docr`   rB   rrC   rC   rD   rU   o   s   zRadioGroup.formatN)r[   r\   rV   rC   rC   rC   rD   rZ   e   s    
	rZ   c                 C   s<   t | trdddd | jD  S t | tr| jS t| S )Nz[%s]r[   c                 s   s    | ]}t |V  qd S rT   _pdfObjToStr)rf   erC   rC   rD   	<genexpr>   s    z_pdfObjToStr.<locals>.<genexpr>)r<   r   joinsequencerO   rQ   str)objrC   rC   rD   ro      s
   

ro   c                   @   s`  e Zd Zddddddddd	d
dddZdd Zedd Zdd Zdd Zdd Z	dd Z
dd Z							 	!	"d`d#d$Zedad'd(Zd)d* Zd+d, Zd-d. Zed/d0 Zed1d2 Zd3d4 Z	&	5						 	!	6	6			7	8	&	&	"dbd9d:Z		&							 	!	6	6			7	;	&	&	"dcd<d=Zd>d? Zdddddd d@dAd"dBg g dCdDfdEdFZdGdH Z	I					 	@	A	6	6			7	I	&	&	J					"dddKdLZ	I					 	@	A	6	6			7	I	&	&	J			"dedMdNZdIddddd d@dAd6d6ddd7dId&d&ddd"dg fdOdPZdIddddd d@dAd6d6ddd7dQd&d&ddd"dg fdRdSZdTdU ZdVdW ZdXdY Z dZd[ Z!d\d] Z"ed^d_ Z#dS )fr   ZHelvZHeBoZCourZCoBoZCoObZCoBOZHeObZHeBOZTimeZTiBoZTiItZTiBI)	HelveticazHelvetica-BoldZCourierzCourier-BoldzCourier-ObliquezCourier-BoldObliquezHelvetica-ObliquezHelvetica-BoldObliquezTimes-Romanz
Times-BoldzTimes-ItaliczTimes-BoldItalicc                 K   s@   i | _ t|| _i | _g | _i | _i | _i | _d | _	i | _
d S rT   )ZreferenceMapweakrefref_canvfontsfields_radios_refMap
_pdfdocencsigFlagsextras)rR   canvkwdsrC   rC   rD   rS      s   
zAcroForm.__init__c                 C   s$   |   }|d u rtd| jj |S )Nz%s.canv is no longer available)ry   rP   	__class__rW   )rR   ry   rC   rC   rD   r      s   zAcroForm.canvc                 C   s   d|| j | f S )Nz/Font << /%s %s >>)rz   )rR   frC   rC   rD   fontRef   s   zAcroForm.fontRefc                    s   t t fdd jD d} jr j|d<  jrDtt j } fdd|D }td|d  |d< t	d	 j
d
|f |d< | j t||}|S )Nc                       g | ]}  |qS rC   )getRefrf   r   rR   rC   rD   rh          z#AcroForm.format.<locals>.<listcomp>)ZFieldsZSigFlagsc                    r   rC   )r   r   r   rC   rD   rh      r   z/%s 0 Tf 0 gr   DAz)<< /Encoding
<<
/RLAFencoding
%s
>>
%s
>>
ZDR)r:   r   r{   r   rz   r=   sortedkeysr   rO   	encRefStrrr   updater   r   rU   )rR   rl   rB   ZFKFrm   rC   r   rD   rU      s   zAcroForm.formatc                 C   s0   |d u s	|j dkrdS t|tr| S | S )Nr   rC   )alphar<   r   Zcmykrgb)rR   crC   rC   rD   
colorTuple   s   zAcroForm.colorTuplec                 C   (   |  |}t| t|dkrd S d S )Nr   z kz rgr   r   rk   rR   r   trC   rC   rD   streamFillColor      
zAcroForm.streamFillColorc                 C   r   )Nr   z Kz RGr   r   rC   rC   rD   streamStrokeColor   r   zAcroForm.streamStrokeColorcirclesquareNr   r3      r9   c                    s2  g j }}|dkrx|d  |}|d |d krs |}|d }| }|}|	dkr2|d n|	dv rG|	dkrAd	t| }nd
}|d |	dv rsd| }| }|}t|d}|}|dkre||}} |} |}|d |d n|dkr: fdd}d } |}|d ||| |d |d |d kr:|d  |}|d }| }|	dkr|d n|	dv r|	dkrd}nd
}|d ||||  |d |d |	dv r:d| }| }t|d}t|d}d}d}|	dkr||}}|dkr||}} |} |}|d |||| d|d  |d! |||| d|d  |d" |d#kr} |} |}|d$ t| }|dkro|dkro||t||  d%d  |d n
|||  |d d&	|j
t  d'd(d)d&} j|td*d+S ),Nr   qz11 g 1 G %(streamFill)s 0 0 %(size)s %(size)s re f      ?r7   zC%(streamStroke)s %(borderWidth)s w 0 %(hbw)s m %(size)s %(hbw)s l sr4   r6   r5   r3   r4   z
 [%s ] 0 dr[   zQ%(streamStroke)s%(dash)s %(borderWidth)s w %(hbw)s %(hbw)s %(smbw)s %(smbw)s re sr5   r6   r   r/   a5  %(bbs0)s %(borderWidth)s %(borderWidth)s m %(borderWidth)s %(smbw)s l %(smbw)s %(smbw)s l %(sm2bw)s %(sm2bw)s l %(_2bw)s %(sm2bw)s l %(_2bw)s %(_2bw)s l f %(bbs1)s %(smbw)s %(smbw)s m %(smbw)s %(borderWidth)s l %(borderWidth)s %(borderWidth)s l %(_2bw)s %(_2bw)s l %(sm2bw)s %(_2bw)s l %(sm2bw)s %(sm2bw)s l fQr   c                    s    j | fi |S rT   )circleArcStream)_rZ_casKwdsrR   sizerC   rD   <lambda>       z%AcroForm.checkboxAP.<locals>.<lambda>zq 1 g 1 G %(streamFill)sr   zGq %(streamStroke)s %(borderWidth)s w 0 %(hbw)s m %(size)s %(hbw)s l s Qz	 [3 ] 0 dz*%(streamStroke)s%(dash)s %(borderWidth)s wrH   r9   )r   r   )r   r9   r6   zq %(bbs0)s %(borderWidth)s wT)rotatedarcszS Q %(bbs1)s qzS QYesz'q %(textFillColor)s %(textStrokeColor)sr   r      

z<< /ProcSet [/PDF] >>Z	Resources)appendr   r   r   r   r   cbmarksmaxscaledRenderrr   __self__varsrG   
makeStreamrO   )rR   keyvaluebuttonStyleshape	fillColorborderColor	textColorr?   r@   r   rA   streamds
streamFillstreamStrokehbwZsmbwdash_2bwZsm2bwbbs0bbs1Zcasrm   Z_3bwhZa0Za1ZtextFillColorZtextStrokeColorZcbmrC   r   rD   
checkboxAP   s   

























"zAcroForm.checkboxAPr   r   r   r9   Fc           
      C   s   g j }|jj}| d }| d }| |9 } ||9 }||9 }td| }t|}t|}|r-dnd}	|d d|v rD| dkr@|d	 |d
 d|v rU| dkrQ|d |d d|v rf| dkrb|d |d d|v rw| dkrs|d |d d|jt  S )Nr   g      4@gh?z0.7071 0.7071 -0.7071 0.7071z1 0 0 1z%(mx)s %(hsize)s %(hsize)s cmr   r   z	%(r)s 0 mz#%(r)s %(cp)s %(cp)s %(r)s 0 %(r)s cz	0 %(r)s mz&-%(cp)s %(r)s -%(r)s %(cp)s -%(r)s 0 cr   z
-%(r)s 0 mz(-%(r)s -%(cp)s -%(cp)s -%(r)s 0 -%(r)s cr9   z
0 -%(r)s mz%%(cp)s -%(r)s %(r)s -%(cp)s %(r)s 0 cr   )r   r   __len__r   rr   r   )
r   rm   r   r   RZrlenZhsizer   cpZmxrC   rC   rD   r   4  s2   zAcroForm.circleArcStreamc                 C   s^   t | }||  }}|d }tt|d|}||kr ||| 9 }|d||   }	d}
dt  S )N333333?ZZapfDingbatsr   r   zCBT %(iFontName)s %(fs)s Tf %(dx)s %(dy)s Td %(fs)s TL (%(c)s) Tj ET)ZDSymsfloatr   r   )rR   r   r   r   	iFontNamer8   HfswdxdyrC   rC   rD   zdMarkP  s   
zAcroForm.zdMarkc                 C   s   | j j|S rT   )r   _docZ	ReferencerR   ru   rC   rC   rD   r   \  s   zAcroForm.getRefc                 C   s   t | || jjS rT   )r   r   rU   r   r   r   rC   rC   rD   	getRefStr_  s   zAcroForm.getRefStrc                 C   s   t |tst | tst |tr)| ptdddd|ptdddd|p'tddddfS | p0tddd|p7tddd|p>tdddfS )	Nr   ?gQ?gjt?g?g?g`"?r   )r<   r   r   )r   br   rC   rC   rD   	stdColorsb  s   4.zAcroForm.stdColorsc                    s@   | dkr| dkr
t nt  fdd|||fD \}}}|||fS )NNr   c                    s   g | ]} |d qS )r   rC   )rf   r   funcrC   rD   rh   m  r   z'AcroForm.varyColors.<locals>.<listcomp>)r   r   )r   r   r   r   rC   r   rD   
varyColorsi  s   
zAcroForm.varyColorsc                 C   s   |rj| j }|  |  |d kr"d| }|| ||	 d}nd }}|d| 8 }|d| 8 }||7 }||7 }||
 |dkrO|j|||||dd nt||d }|j|| || ||dd |	  d S d S )Nr   r   r   r   r   )strokefill)
r   Z	saveStateZresetTransformsZsetLineWidthZsetStrokeColorZsetFillColorrectminr   ZrestoreState)rR   rM   ywidthheightforceBorderr   r@   r?   r   r   r   r   rH   rm   rC   rC   rD   checkForceBorderp  s*   


zAcroForm.checkForceBordercheckr   r-   r   c           !      C   s  |rdnd}|  |||\}}}| j}|r| j|
|\}
}|j}i }dD ]G}i }| ||||\}}}dD ].}| j||||||||||	|d}|j| jv rU| j|j }n| |}|| j|j< |||< q6t	|||< ~q%t
td| t|t|t|
||
|	 ||	 ft	|tdtdt|tt|ttd	d
}|rt||d< |sdt| j }|rt||||d< t||d< t
dt|  t| |t| |d} t	| |d< t	|}| j| | j| | | |
||	|	||||||
 d S )Nr   OffNDR)r   r   	r   r   r   r   r   r?   r@   r   rA   ri   WidgetAnnotr   )rj   Prb   ASRectAPSubtypeTyper   r_   r   r]   AFF%03dBSra   (%s)CABCBGMK)r   r   absolutePositionr   r   r   
_af_refstrr}   r   r   r:   r   thisPageRefr   rN   annotationFlagValuesr^   r   rk   r{   rE   r   r   _addAnnotationr   r   )!rR   checkedr   r   r   r   r   r?   r@   r   rM   r   rd   rc   annotationFlagsre   r   relativerA   initialValuer   rl   r   r   APVtCbCfCr   aprx   ZCBr   rC   rC   rD   checkbox  sx   


 zAcroForm.checkboxr\   c           #      C   s  || j vrt|||d}| ||_|| j |< | j|j n| j | }t|t}||jkr6t	d||f |s@t	d||f |rD|nd}| 
|||\}}}||krl|jd uri|j|krht	d|||jf n||_| j}|rz| j||\}}|j}i }dD ]O}i }| ||||\}}}|dfD ]4}| j|||krdnd|||||||	|
|d}|j| jv r| j|j } n| |} | | j|j< | ||< qt|||< ~qttd	| t|t||||
 ||
 ft|td
tdt|t|jtdd
}!tdt|  t| |t| |d}"|rt||	||!d< t|"|!d< t|!}!| j|! |j| |! | |||
|
|||	|||
 d S )N)rd   re   z(radio.%s.%s created with different flagszbad value %r for radio.%sr   z2radio.%s.%s sets initial value conflicting with %sr   r   r   ri   r   r   r   )
rj   r   r   r   r   r   r   r   ZParentr   r   r   r   r   )r|   rZ   r   Z_refr{   r   rN   r^   r_   rP   r   rb   r   r   r   r   r   r   r}   r   r:   r   r  r   r  r   r   rE   r  r`   r   )#rR   r   selectedr   r   r   r   r   r?   r@   r   rM   r   rd   rc   r  re   r   r  rA   groupr  r   rl   r   r   r  r	  r
  r  rL   r  rx   ZRBr   rC   rC   rD   r     s   









 zAcroForm.radioc                 K   s   t g d|d< t dd||g|d< td|d< td|d< d	|d
< tt||| jjjr0t gnd d}|ddd t	|
 D  |_|S )N)      ?        r  r  r  r  ZMatrixr   ZBBoxZFormr   ZXObjectr   r   ZFormType)filtersr   c                 s   s$    | ]\}}d |t |f V  qdS )z%s=%rNrn   )rf   rg   rL   rC   rC   rD   rq   P  s   " z&AcroForm.makeStream.<locals>.<genexpr>)r   r   r	   r   r   r   compressionr
   rr   r   itemsr   )rR   r   r   r   r/   rH   rC   rC   rD   r   >  s   "zAcroForm.makeStreamx   $   	textfieldz0.600006 0.756866 0.854904 rgz0 gc           ,      C   s  g j }t|r| |}|d |
d krQ|
dkrQt|rQ|
d }||
 }||
 }d|
 }|dv rP|| }|| }|dkrHd}|sB|rEd}nd	}nd
}d	}|d n
d } }}
|}|}d}t|r|
r| |}|dkrq|d n|dv r|dkrdt| } d}nd|
 } |d d|
 }!||! }"||! }#| |	}$|d d| }%|dkrt|#|% }&|#t|& }%|&t|krd}'t|}&n1t|dkr|r|d nd}'|'r|'|&k rd}'nt||& }(|'|(kr|(}'n|d |&k rd}'n|d }'t|})|'|& }(|(|)kr|(|) }'t|)|'|& }*|r8|'}(|| |% })|| |(|*k r8|(|v r+|dt|)  |)|%8 })|(d7 }(|(|*k s|'}(|| | })|d |(|*k r|d |(|'krV|d ||(|v r^|nd |dt|)t	||( f  |)|%8 })|(d7 }(|d  |(|*k sIn)|d || | })|d! |
d"D ]}+|d|)t	|+f  |)|%8 })q|d  t|%}%|d# d"|jt  d$d%d&d"}| j|||td't  d(S ))Nz,%(streamFill)s
0 0 %(width)s %(height)s re
fr   r   r   r   r5   z1 gz-0.250977 0.749023 -0.250977 rgz.75293 gz	.501953 ga)  %(bbs0)s
%(borderWidth)s %(borderWidth)s m
%(borderWidth)s %(bwh)s l
%(bww)s %(bwh)s l
%(bw2w)s %(bw2h)s l
%(_2bw)s %(bw2h)s l
%(_2bw)s %(_2bw)s l
f
%(bbs1)s
%(bww)s %(bwh)s m
%(bww)s %(borderWidth)s l
%(borderWidth)s %(borderWidth)s l
%(_2bw)s %(_2bw)s l
%(bw2w)s %(_2bw)s l
%(bw2w)s %(bw2h)s l
fr[   r7   zD%(streamStroke)s %(borderWidth)s w 0 %(hbw)s m %(width)s %(hbw)s l sr   r4   z
[%s ] 0 d
z[] 0 dz
%s wz>%(streamStroke)s
%(dash)s
%(hbw)s %(hbw)s %(bww)s %(bwh)s re
sr   z5/Tx BMC 
q
%(_2bw)s %(_2bw)s %(w4bw)s %(h4bw)s re
W
nr   listboxr   z(%%(_2bw)s %s %%(w4bw)s %%(leading)s re
fz0 g
0 G
%(undash)sZBTz/%(iFontName)s %(fontSize)s Tfz%(textFill)sz%%(_4bw)s %s Td
(%s) TjETz.BT
/%(iFontName)s %(fontSize)s Tf
%(textFill)sr   zQ
EMC
r   r   r   z/<< /ProcSet [/PDF /Text] /Font %(rFontName)s >>r   )r   r   r   r   r   rJ   r   rk   r   rI   rK   rr   r   r   rG   r   rO   ),rR   r   r   r   	rFontNamefontSizer   r   r   r   r?   r@   r   r   rA   wkindlabelsr1   Zsel_bgZsel_fgr   r   r   ZbwwZbwhr   Zbw2wZbw2hr   r   Zundashr   r   Z_4bwZw4bwZh4bwZtextFillleadingZnoptsZi0ir   ZilimlinerC   rC   rD   txAPS  s   












"zAcroForm.txAPc                 C   sb   |d u rd}|| j vrtd| | j | }| td||| jf }|| jvr-|| j|< ||fS )Nrv   z7form font name, %r, is not one of the standard 14 fontszF<< /BaseFont /%s /Subtype /Type1 /Name /%s /Type /Font /Encoding %s >>)formFontNamesrP   r   rO   r   rz   )rR   fontNamefnrx   rC   rC   rD   makeFont  s   




zAcroForm.makeFontr[   d   c           ,      C   s^  |  |\}}|d u rd}| |||\}}}| j}|r%| j|	|
\}	}
|j}d||f }t|t}|dkr+d}|dkrD|td O }g }g }g }g } g }!t|tt	fs]t
d||f |D ]H}"t|"ro|t|" |"}#n.t|"tt	frt|"dkr|"d	  }"}#n|"\}#}"|tt|"t|#g nt
d
||"f ||" |!|# q_t|}|r&t|tt	fs|g}|D ]*}"|"|vr|"|!vrtd||"||!f ||!|" }"| ||" |t|" q|   |td @ rt|dkr|dkr|!| d	  }n|d d }|d d }t|dkr|d	 nt|}t|!| |d}$nt|}ng  } }i }$d}t|s>t
d| t|}i }dD ]A}%| |%|||\}&}'}(| j|%||||f|(|'|&|||||d|$})|)j| jv rw| j|)j }*n| |)}*|*| j|)j< |*||%< qFtt|| ||t|	|
|	| |
| ft|tdtdt|t|td||| |f d}!|r||!d< | rt| |!d< |r||!d< |rt||!d< |sdt| j }t||!d< tt| |d}+|rt ||||!d< t| ||+d< t|+|!d< t|!}!| j!|! | j| |! | "|	|
|||d ||||
 d S )!N   z
<</%s %s>>r  ZChchoicer"   z%s options=%r is wrong typer   r   z%s option %r is wrong typez3%s value %r is not in option
values %r
or labels %rr$   )r  r1   r  ZTxz textfield value=%r is wrong typer   )r   r   r   r?   r@   r   r   rA   r   r   z/%s %d Tf %s)rj   r   rb   ZDVr   r   r   r   r   r_   r   Optr1   ZMaxLenr]   r   ra   )r   r   r   r   r   )#r%  r   r   r   r   rN   r^   r<   r=   r>   	TypeErrorr   r   r   rk   r   rP   indexr#   r:   r   r!  r   r}   r   r   r  r   r  r   r{   r   rE   r  r   ),rR   r   r   r   r   r?   r@   r   r   rM   r   rd   rc   r  re   r   r  maxlenr#  r  r  optionsrA   r  r   r   rl   r_   rj   rb   r)  r   r1   ZTFrL   lZlbextrasr   r	  r
  r  r  rx   r   rC   rC   rD   
_textfield  s   






 zAcroForm._textfieldc                 C   s   | j di d|d|d|d|d|d|d|d|d	|	d
|
d|d|d|d|d|d|d|d|d|d|ddS )Nr   r   r   r   r?   r@   r   r   rM   r   rd   rc   r  re   r   r  r,  r#  r  rA   r  r  rC   r/  )rR   r   r   r   r   r?   r@   r   r   rM   r   rd   rc   r  re   r   r  r,  r#  r  rA   rC   rC   rD   r  z  sV   
	
zAcroForm.textfieldc                 C      | j di d|d|d|d|d|d|d|d|d	|	d
|
d|d|d|d|d|d|d|d|d|d|ddd|S )Nr   r   r   r   r?   r@   r   r   rM   r   rd   rc   r  re   r   r  r,  r#  r  rA   r  r  r-  rC   r0  rR   r   r   r   r   r?   r@   r   r   rM   r   rd   rc   r  re   r   r  r#  r  rA   r,  r-  rC   rC   rD   r    Z   
	
zAcroForm.listboxr"   c                 C   r1  )Nr   r   r   r   r?   r@   r   r   rM   r   rd   rc   r  re   r   r  r,  r#  r  rA   r  r(  r-  rC   r0  r2  rC   rC   rD   r(    r3  zAcroForm.choicec                 K      d|d< | j di | dS )zSsame as checkbox except the x and y are relative to the canvas coordinate transformTr  NrC   )r  rR   r   rC   rC   rD   checkboxRelative     zAcroForm.checkboxRelativec                 K   r4  )zPsame as radio except the x and y are relative to the canvas coordinate transformTr  NrC   )r   r5  rC   rC   rD   radioRelative  r7  zAcroForm.radioRelativec                 K   r4  zTsame as textfield except the x and y are relative to the canvas coordinate transformTr  NrC   r  r5  rC   rC   rD   textfieldRelative  r7  zAcroForm.textfieldRelativec                 K   r4  r9  r:  r5  rC   rC   rD   listboxRelative  r7  zAcroForm.listboxRelativec                 K   r4  r9  r:  r5  rC   rC   rD   choiceRelative  r7  zAcroForm.choiceRelativec                 C   s   | j std| _ | | j S )Na  <</Type /Encoding /Differences [24 /breve /caron /circumflex /dotaccent /hungarumlaut /ogonek /ring /tilde 39 /quotesingle 96 /grave 128 /bullet /dagger /daggerdbl /ellipsis /emdash /endash /florin /fraction /guilsinglleft /guilsinglright /minus /perthousand /quotedblbase /quotedblleft /quotedblright /quoteleft /quoteright /quotesinglbase /trademark /fi /fl /Lslash /OE /Scaron /Ydieresis /Zcaron /dotlessi /lslash /oe /scaron /zcaron 160 /Euro 164 /currency 166 /brokenbar 168 /dieresis /copyright /ordfeminine 172 /logicalnot /.notdef /registered /macron /degree /plusminus /twosuperior /threesuperior /acute /mu 183 /periodcentered /cedilla /onesuperior /ordmasculine 188 /onequarter /onehalf /threequarters 192 /Agrave /Aacute /Acircumflex /Atilde /Adieresis /Aring /AE /Ccedilla /Egrave /Eacute /Ecircumflex /Edieresis /Igrave /Iacute /Icircumflex /Idieresis /Eth /Ntilde /Ograve /Oacute /Ocircumflex /Otilde /Odieresis /multiply /Oslash /Ugrave /Uacute /Ucircumflex /Udieresis /Yacute /Thorn /germandbls /agrave /aacute /acircumflex /atilde /adieresis /aring /ae /ccedilla /egrave /eacute /ecircumflex /edieresis /igrave /iacute /icircumflex /idieresis /eth /ntilde /ograve /oacute /ocircumflex /otilde /odieresis /divide /oslash /ugrave /uacute /ucircumflex /udieresis /yacute /thorn /ydieresis]>>)r~   rO   r   r   rC   rC   rD   r     s   
zAcroForm.encRefStr)	r   r   NNNr   r3   r   r9   )r   F)Fr   r   NNNr   r3   r   r   r   NNr-   r   FFr9   )NFr   r   NNNr   r3   r   r   r   NNr-   r\   FFr9   )r[   NNNr   r3   r  r  r   r   NNr-   r[   FFr&  NNNNr9   )r[   NNNr   r3   r  r  r   r   NNr-   r[   FFr&  NNr9   )$rW   rX   rY   r"  rS   propertyr   r   rU   r   r   r   r   staticmethodr   r   r   r   r   r   r   r  r   r   r!  r%  r/  r  r  r(  r6  r8  r;  r<  r=  r   rC   rC   rC   rD   r      s   


h


T
c

 
/
0
0r   c                   @   s,   e Zd Zd ZdZd
ddZdddZd	S )CBMarkzm l c h)r   r   r9   r   皙?c                 C   s*   || _ |\| _| _| _| _|| _|| _d S rT   )opsxminyminxmaxymaxpointsslack)rR   rB  rG  ZboundsrH  rC   rC   rD   rS   )  s   
zCBMark.__init__r   c                    sP  |d|   }}| j | j| j }| j }| jt|| }|d|  t| |d|  t| t |9 }|9 }||| d   ||| d   fdd}fdd}	| j}
| j}g j	}d}| j
}| jD ])}|| }t|D ]}||||  ||	||d   |d7 }q~||
|  qt|d d	|jS )
a  
        >>> print(cbmarks['check'].scaledRender(20))
        12.97075 14.68802 m 15.00139 17.16992 l 15.9039 18.1727 17.93454 18.67409 19.2883 18.67409 c 19.46379 18.27298 l 17.13231 15.51532 l 11.91783 8.62117 l 8.307799 3.030641 l 7.430362 1.526462 l 7.305014 1.275766 7.154596 .97493 6.9039 .824513 c 6.577994 .674095 5.825905 .674095 5.47493 .674095 c 4.672702 .674095 4.497214 .674095 4.321727 .799443 c 4.071031 .97493 3.945682 1.325905 3.770195 1.67688 c 3.218663 2.830084 2.240947 5.337047 2.240947 6.590529 c 2.240947 7.016713 2.491643 7.21727 2.817549 7.442897 c 3.344011 7.818942 4.0961 8.245125 4.747911 8.245125 c 5.249304 8.245125 5.299443 7.818942 5.449861 7.417827 c 5.951253 6.239554 l 6.026462 6.038997 6.252089 5.337047 6.527855 5.337047 c 6.778552 5.337047 7.079387 5.913649 7.179666 6.089136 c 12.97075 14.68802 l h f
        >>> print(cbmarks['cross'].scaledRender(20))
        19.9104 17.43931 m 12.41908 10 l 19.9104 2.534682 l 18.37572 1 l 10.9104 8.491329 l 3.445087 1 l 1.910405 2.534682 l 9.427746 10 l 1.910405 17.46532 l 3.445087 19 l 10.9104 11.50867 l 18.37572 19 l 19.9104 17.43931 l h f
        >>> print(cbmarks['circle'].scaledRender(20))
        1.872576 9.663435 m 1.872576 14.64958 5.936288 18.61357 10.89751 18.61357 c 15.8338 18.61357 19.87258 14.59972 19.87258 9.663435 c 19.87258 4.727147 15.8338 .688366 10.89751 .688366 c 5.936288 .688366 1.872576 4.677285 1.872576 9.663435 c h f
        >>> print(cbmarks['star'].scaledRender(20))
        10.85542 18.3253 m 12.90361 11.84337 l 19.84337 11.84337 l 14.25301 7.650602 l 16.42169 1 l 10.85542 5.096386 l 5.289157 1 l 7.481928 7.650602 l 1.843373 11.84337 l 8.759036 11.84337 l 10.85542 18.3253 l h f
        >>> print(cbmarks['diamond'].scaledRender(20))
        17.43533 9.662031 m 15.63282 7.484006 l 10.85118 .649513 l 8.422809 4.329624 l 5.919332 7.659249 l 4.267038 9.662031 l 6.16968 12.0153 l 10.85118 18.64951 l 12.75382 15.4701 15.00695 12.49096 17.43533 9.662031 c h f
        r   r   c                       t |     S rT   r   rL   )r   sxrC  rC   rD   r   J  r   z%CBMark.scaledRender.<locals>.<lambda>c                    rI  rT   r   rJ  )r   syrD  rC   rD   r   K  r   r   r   r   r   )rC  rD  rE  rF  rH  r   r   opNamesopCountr   rG  rB  rangerr   r   )rR   r   r   r8   r   r   hrH  ZxscZyscrM  rN  Cr  rG  opr   _rC   )r   r   rK  rL  rC  rD  rD   r   /  s:   



zCBMark.scaledRenderN)rA  )r   )rW   rX   rY   rK   rM  rN  rS   r   rC   rC   rC   rD   r@  %  s
    
r@  )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r9   )T  "  i  i  C  i  i    i  rW    i  it  rV  i  i0  i  Q                     i      rb     rb     rb  |   rb  u   ik   r_  f      _      I   rm  "      rn     rn     ,      9   i  N     l   !     rx     rx     rv     r*                  ro     ro     ro              rT  rU  )rn  irX  i  )r   r   r   r   r   r   r   r   r   r   r   r   r   r9   )  x  i  Z  r  ;     r   }  i   ^   r   #   r  iD  r  r  iy  r    r  i  r  r  r  r  )r  r   r  r  )r   r   r   r   r   r9   )r  r  r  rU     rW    rW  S  rW    i   r  r  r     r  r  r  r  r  r     r  r  )r  r  r  rW  )r   r   r   r   r   r   r   r   r   r   r   r9   )  rW  i      r  i&    i  r  r  r{     r  i  r  r  r  iB  r  r  rW  )r  r  r  rW  )
r   r   r   r   r   r   r   r   r   r9   )0  r  i  i  )  r        r&  i
  rn  r  n   i  r  rW  iu  iB  i  i  r  r  )rn  r  r  rW  )r   crossr   starZdiamond45r.  r   u__main__rC   ),__all__Zreportlab.pdfbase.pdfdocr   r   r   r   r   r   r	   r
   r   Zreportlab.pdfbase.pdfmetricsr   Zreportlab.lib.colorsr   r   r   r   r   Zreportlab.lib.rl_accelr   Zreportlab.lib.utilsr   r   rw   r:   ZvisibilitiesZorientationsr^   r  r;   rE   rI   rN   rO   rZ   ro   r   r@  r   r   rW   doctesttestmodrC   rC   rC   rD   <module>   s    ,	

	       $7
