
    Q?hG                     .   S r SrSSKrSSKJr  SSKJr  SSKJr  SSK	J
r
Jr  SSKJr  SS	KJr  SS
KJr  SSKJr  SSKJrJrJr  SSKJr  SSKJr  SSKJrJr  \" S\S\S9r " S S\5      rS r " S S\5      r " S S\5      r  " S S\5      r! " S S\!5      r" " S S\!5      r# SS K$J%r%J&r&J'r'J(r(  S!r)\)(       a7   " S" S#5      r+ " S$ S%\!\+5      r, " S& S'\,5      r- " S( S)\!5      r. " S* S+\.5      r/S, r0S- r1\2S.:X  a  \1" 5         gg! \* a    Sr) N]f = f)/z@This includes some demos of platypus for use in the API proposalz3.3.0    N)colors)Canvas)ParagraphStyle)recursiveImportstrTypes)Frame)Flowable)	Paragraph)inch)TA_LEFTTA_RIGHT	TA_CENTER)isColor)toColor)_baseFontName_baseFontNameICaption
   )fontNamefontSize	alignmentc                   t    \ rS rSrS\SS\" S5      SSSSSSSS4S	 jrS
 rS rS r	S r
S rS rS rS rSrg)Figure       NblackcentrebottomCENTERc                 :   [         R                  " U 5        Xl        X l        X0l        X@l        XPl        Xpl        Xl        U=(       d    SU-  U l	        Xl
        Xl        S U l        SU l        X`l        Xl        Xl        Xl        Xl        U R'                  5         g )N      ?r   )r	   __init__widthfigureHeightcaptioncaptionFontcaptionSizecaptionTextColorcaptionBackColor
captionGapcaptionAligncaptionPosition_captionDatacaptionHeight
backgroundborderspaceBefore
spaceAfterhAlign_getCaptionPara)selfr$   heightr&   r'   r(   r0   r)   r*   r1   r2   r3   r+   r,   r-   r4   s                   L/var/www/html/env/lib/python3.13/site-packages/reportlab/platypus/figures.pyr#   Figure.__init__   s     	$
"&& 0 0$7K(. $&$    c                 B   U R                   nU R                  nU R                  nU R                  nU R                  nU R
                  nU R                  nU R                  XX4XVU4:w  a  XX4XVU4U l        [        U[        5      (       a  Xl
        g [        U[        5      (       ad  [        SUUSU-  UUU R                  US:X  a  [        OUS:X  a  [        O[         S9U l        [        U R                   U R"                  5      U l
        g [%        S['        U5      -  5      eg )Nr   g333333?leftright)r   r   leading	textColor	backColorr2   r   z6Figure caption of type %r is not a string or Paragraph)r&   r'   r(   r)   r*   r,   r-   r.   
isinstancer
   captionParar   r   r+   r   r   r   captionStyle
ValueErrortype)r6   r&   r'   r(   r)   r*   r,   r-   s           r8   r5   Figure._getCaptionPara:   s   ,,&&&&0000((..w;P`n}~~!([Rbp  !AD'),,#* GH--$2((O 0 0 $)5v)=g|]dOd8js
%! $-T\\4;L;L#M  !Y\`ah\i!ijj' r:   c                 J   U R                   (       a  U R                  5         U R                  R                  U R                  X R
                  -
  5      u  p4X@R                  -   U l        U R                  U R
                  -   U l        X0R                  :  a  X0l        OU R
                  U l        U R                  SS[        4;   a  SXR                  -
  -  U l        O1U R                  S[        4;   a  XR                  -
  U l        OSU l        U R                  U R                  4$ )Nr    CENTREr"   RIGHTr   )r&   r5   rB   wrapr$   r%   r+   r/   r7   r4   r   dxr   )r6   
availWidthavailHeightwhs        r8   rJ   Figure.wrapW   s    <<  "##(([CTCT5TUDA!"__!4D,,t/@/@@DK|!Z++DK;;8HY77Z**45DG[[WX.. ::-DGDG

DKK((r:   c                 $   U R                   R                  U R                  S5        U R                  (       a6  U R                  S:X  a&  U R                   R                  SU R
                  5        U R                  (       a  U R                  5         U R                  (       a  U R                  5         U R                   R                  5         U R                  5         U R                   R                  5         U R                  (       a  U R                  S:X  a(  U R                   R                  SU R
                  * 5        O3U R                   R                  SU R                  U R                  -   5        U R                  5         U R!                  5         g g )Nr   r   )canv	translaterK   r&   r-   r/   r0   drawBackgroundr1   
drawBorder	saveState
drawFigurerestoreStater%   r+   r5   drawCaptionr6   s    r8   drawFigure.drawi   s   		DGGQ'<<D00(:II4#5#56??!;;OO				 <<##X-		##A(:(:':;		##At'8'8'HI  " r:   c                 ~    U R                   R                  U R                  SSU R                  U R                  5        g Nr   )rR   drawBoundaryr1   r$   r%   rZ   s    r8   rU   Figure.drawBorder|   s*    		t{{1Qtzz4;L;LMr:   c                    U R                   R                  5         U R                   R                  U R                  5        U R                   R	                  SSU R
                  U R                  SS9  U R                   R                  5         g )Nr      )fill)rR   rV   setFillColorr0   rectr$   r%   rX   )r6   colors     r8   _doBackgroundFigure._doBackground   s\    				t/		q!TZZ):):C		 r:   c                     [        U R                  5      (       a  U R                  U R                  5        g [        U R                  5      nU R                  U5        g!    g= f)zFor use when using a figure on a differently coloured background.
Allows you to specify a colour to be used as a background for the figure.N)r   r0   rg   r   )r6   cs     r8   rT   Figure.drawBackground   sP     4??##t/DOO,""1%s   &A A#c                 R    U R                   R                  U R                  SS5        g r^   )rB   drawOnrR   rZ   s    r8   rY   Figure.drawCaption   s    		1a0r:   c                     g N rZ   s    r8   rW   Figure.drawFigure       r:   )r.   r0   r1   r&   r,   r*   r'   r+   r/   rB   r-   r(   rC   r)   rK   r%   r4   r7   r3   r2   r$   )__name__
__module____qualname____firstlineno__r   r   r#   r5   rJ   r[   rU   rg   rT   rY   rW   __static_attributes__rq   r:   r8   r   r      s]    .0+ ")'"2"& &!) Bk:)$&N!
1r:   r   c           	      :   U R                  5       nSU-  nU R                  SSS5        U R                  X-   X&-
  X4SSS9  U R                  SSS5        U R                  S5        U R                  XX4SSS9  U R                  SSS5        U R	                  SSS5        g )Ng?r"   r   rb   )strokerc   g?)	beginPathsetFillColorRGBre   setLineWidthsetStrokeColorRGB)canvasxyr$   r7   pthcorners          r8   drawPager      s    



C%ZF 3s3'
KK
AJaaKH 1Qs#

KKeAAK6 1Qq!
Qq#r:   c                   .    \ rS rSrSrSS jrS rS rSrg)	
PageFigure   z_Shows a blank page in a frame, and draws on that.  Used in
illustrations of how PLATYPUS works.Nc                 ~    [         R                  U S[        -  S[        -  5        SU l        [        U l        Xl        g )N   zFigure 1 - a blank page)r   r#   r   r&   rC   r0   )r6   r0   s     r8   r#   PageFigure.__init__   s.    afaf-0($r:   c                     g rp   rq   rZ   s    r8   drawVirtualPagePageFigure.drawVirtualPage   rs   r:   c                    [        U R                  S[        -  S[        -  S[        -  S[        -  5        U R                  R                  S[        -  S[        -  5        U R                  R	                  SS5        U R                  5         g )Ng      ?g      ?g      ?g      @gm?g	Q_?)r   rR   r   rS   scaler   rZ   s    r8   rW   PageFigure.drawFigure   s`    E$JT	49c$hG		E$JT	2			9-r:   )r0   r&   rC   rp   )	rt   ru   rv   rw   __doc__r#   r   rW   rx   rq   r:   r8   r   r      s    ,%r:   r   c                   $    \ rS rSrSrS rS rSrg)PlatPropFigure1   z$This shows a page with a frame on itc                 <    [         R                  U 5        SU l        g )Nz%Figure 1 - a page with a simple frame)r   r#   r&   rZ   s    r8   r#   PlatPropFigure1.__init__   s    D!>r:   c                 .    [        U R                  5        g rp   )demo1rR   rZ   s    r8   r   PlatPropFigure1.drawVirtualPage   s    diir:   )r&   N)rt   ru   rv   rw   r   r#   r   rx   rq   r:   r8   r   r      s    .?r:   r   c                   d    \ rS rSrSrSSS\R                  SSSSSS	S
SSS4S jrS rS r	S r
Srg)
FlexFigure   zHBase for a figure class with a caption. Can grow or shrink in proportionNzHelvetica-Oblique   rb   r   	   r   topr    c                     [         R                  XX#UUS UU
UUUUUUS9  Xl        Xl        Xl        S U l        X@l        g )N)r'   r(   r0   r)   r2   r3   r+   r,   r-   r4   r1   )r   r#   shrinkToFit	growToFitscaleFactor_scaleFactorr0   )r6   r$   r7   r&   r0   r'   r(   r)   r   r   r2   r3   r+   r,   r-   r   r4   r1   s                     r8   r#   FlexFigure.__init__   sZ     	V$/$/#')9&1%/#-%1(7%% 	 	 '"& $r:   c                    U R                   b!  U R                  U:  d  U R                  U:  Ga5  [        R	                  XU5      u  p4X@R
                  -
  nU R                  c-  [        XR                  -  X%-
  U R
                  -  5      U l         OU R                  U l         U R                   S:  aQ  U R                  (       a@  U R                  U R                   -  S-
  U l        U R
                  U R                   -  U l        gU R                   S:  aR  U R                  (       a@  U R                  U R                   -  S-
  U l        U R
                  U R                   -  U l        gggg)z4Rescale to fit according to the rules, but only onceNrb   g-C6?)
r   r$   r7   r   rJ   r%   r   minr   r   )r6   rL   rM   rN   rO   r/   s         r8   _scaleFlexFigure._scale   s$   $

:(=[AX;;t=DA 1 11M'$'
::(={?XZ^ZkZk>k$l!$($4$4!  "t'7'7!ZZ$*;*;;fD
$($5$58I8I$I!""1$!ZZ(9(99FB
$($5$58I8I$I! *8$ BYr:   c                 P    U R                  X5        [        R                  XU5      $ rp   )r   r   rJ   r6   rL   rM   s      r8   rJ   FlexFigure.wrap   s    J+{{4[99r:   c                 P    U R                  X5        [        R                  XU5      $ rp   )r   r   splitr   s      r8   r   FlexFigure.split   s    J+||Dk::r:   )r   r0   r%   r   r   r   r$   )rt   ru   rv   rw   r   r   r   r#   r   rJ   r   rx   rq   r:   r8   r   r      sH    R:>$7A)/$%"#$&#%#$%-(-$(' %BJ":;r:   r   c                   (    \ rS rSrSrSS jrS rSrg)ImageFigure   zImage with a caption below itNc                     [         R                  R                  U5      (       d
   SU-  5       eSSKJn  U" U5      R                  5       u  pXl        [        R                  XXX4XVS9  g )Nzimage file %s not foundr   )ImageReader)r   r4   r1   )	ospathisfilereportlab.lib.utilsr   getSizefilenamer   r#   )
r6   r   r&   r0   r   r4   r1   r   rN   rO   s
             r8   r#   ImageFigure.__init__  s[    ww~~h''M)BX)MM'38$,,. DQ[apr:   c                 ~    U R                   R                  U R                  SSU R                  U R                  5        g r^   )rR   	drawImager   r$   r%   rZ   s    r8   rW   ImageFigure.drawFigure  s.    		DMM"#Qtzz43D3D	Fr:   )r   )NNr    Nrt   ru   rv   rw   r   r#   rW   rx   rq   r:   r8   r   r      s    'qFr:   r   c                   (    \ rS rSrSrSS jrS rSrg)DrawingFigurei  z8Drawing with a caption below it.  Clunky, scaling fails.Nc                     [        X5      n[        Xb5      nU" 5       U l        [        R	                  U U R                  R
                  U R                  R                  UU5        SU l        g )Nrb   )r   getattrdrawingr   r#   r$   r7   r   )r6   
modulename	classnamer&   baseDirr0   moduleklasss           r8   r#   DrawingFigure.__init__  sX     5*wD LL.. LL//#&		(
 r:   c                     U R                   R                  U R                  U R                  5        U R                  R	                  U R                   SS5        g r^   )rR   r   r   r   rm   rZ   s    r8   rW   DrawingFigure.drawFigure  s:    		))4+<+<=DIIq!,r:   )r   r   NNr   rq   r:   r8   r   r     s    B	-r:   r   )restoreForms
storeFormsstoreFormsInMemoryrestoreFormsInMemoryrb   c                   *    \ rS rSrSrS rS rS rSrg)PageCatcherCachingMixIni)  z+Helper functions to cache pages for figuresc                     [         R                  R                  U5      u  p4[         R                  R                  U5      u  pVSXR4-  $ )Nz	%s_page%d)r   r   r   splitext)r6   pdfFileNamepageNodirnamer   rootexts          r8   getFormName#PageCatcherCachingMixIn.getFormName,  s:     "k :G((2ID$//r:   c                     U R                  X5      n[        R                  R                  US-   5      (       a9  [        R                  " US-   5      S   n[        R                  " U5      S   nXT:  $ g)z&returns 1 if no forms or form is older.frmr   rb   )r   r   r   existsstat)r6   r   r   formNameformModTime
pdfModTimes         r8   needsProcessing'PageCatcherCachingMixIn.needsProcessing2  sa    ''<Hww~~h/00 ggh&78;WW[1!4
"01r:   c                 R    U R                  X5      n[        XS-   US-   U/S9  US-   $ )Nr   _)prefixpagenumbers)r   r   )r6   r   r   r   s       r8   
processPDF"PageCatcherCachingMixIn.processPDF<  s:    ''<H{v$5,4sN17: f$$r:   rq   N)	rt   ru   rv   rw   r   r   r   r   rx   rq   r:   r8   r   r   )  s    5	0		%r:   r   c                   (    \ rS rSrSrSS jrS rSrg)cachePageCatcherFigureNonA4iD  ?PageCatcher page with a caption below it.  Size to be supplied.Nc                 T   [         R                  R                  U5      u  U l        U l        U R                  S:X  a  [         R
                  U l        X l        U R                  U R                  U R                  5      S-   [        U5      -   U l	        [        R                  XXSU5        g )Nr   r   )r   r   r   r   r   curdirr   r   strr   r   r#   r6   r   r   r&   r$   r7   r0   s          r8   r#   $cachePageCatcherFigureNonA4.__init__H  sx    *,''--*A'DL$-||r!!yy K ,,T]]DKKH3NQTU[Q\\DMVjIr:   c                    U R                   R                  5         U R                   R                  U R                  5      (       d  U R                  [
        R                  -   U R                  -   nU R                  XR                  5      S-   nU R                  XR                  5      (       a  U R                  XR                  5        [        X R                   5      nU R                   R                  U R                  U R                  5        U R                   R                  U R                  5        U R                   R!                  5         g )Nr   )rR   rV   hasFormr   r   r   sepr   r   r   r   r   r   r   r   doFormrX   )r6   restorePathformFileNamenamess       r8   rW   &cachePageCatcherFigureNonA4.drawFigureP  s    II!99$$T]]33"llRVV3dmmC#//[[IFR''[[AAOOK=$\99=IIOOD--t/@/@AIIT]]+II""$r:   )r   r   r   r   rp   r   rq   r:   r8   r   r   D  s    M	J	%r:   r   c                   "    \ rS rSrSrSS jrSrg)cachePageCatcherFigurei^  PageCatcher page with a caption below it.  Presumes A4, Portrait.
This needs our commercial PageCatcher product, or you'll get a blank.Nc           
      0    [         R                  XX#XEUS9  g )N)r0   )r   r#   r   s          r8   r#   cachePageCatcherFigure.__init__a  s    '00RWlv0wr:   rq   )S  J  Nrt   ru   rv   rw   r   r#   rx   rq   r:   r8   r   r   ^  s    	Q	xr:   r   c                   ,    \ rS rSrSr0 rSS jrS rSrg)PageCatcherFigureNonA4id  r   Nc                    U=ol         X l        UR                  [        R                  S5      R                  SS5      R                  SS5      R                  SS5      R                  SS5      nUR                  SS5      S-   [        U5      -   S-   U l        U R                  [        U5      -   U l        Xpl        [        R                  XXSU5        g )Nr   /\-:.)r   r   replacer   r   r   r   r   cachingr   r#   )	r6   r   r   r&   r$   r7   r0   r  fns	            r8   r#   PageCatcherFigureNonA4.__init__i  s    !))B KBFF3'//C8@@cJRRSVWZ[ccdghklB**S-c1#f+=cADK KK#f+5DM"LVjIr:   c                    U R                   R                  U R                  5      (       d  U R                  U R                  ;   a  U R                  U R                     u  pO[        U R                  S5      nUR                  5       nUR                  5         [        X0R                  /U R                  S9u  pU R                  S:X  a  X4U R                  U R                  '   [        X R                   5      nU R                   R                  5         U R                   R                  U R                  U R                  5        U R                   R!                  U R                  5        U R                   R#                  5         g )Nrb)r   r   memory)rR   r   r   r   _cacheopenreadcloser   r   r   r  r   rV   r   r   r   rX   )r6   fdatapdfs       r8   rW   !PageCatcherFigureNonA4.drawFigurer  s   99$$T]]33==DKK/![[7FAdT]]40A&&(CGGI0;;-X\XcXcdGA||X-56WDMM2(yy9II!IIOOD--t/@/@AIIT]]+II""$r:   )r  r   r   r   r   r   )	rt   ru   rv   rw   r   r  r#   rW   rx   rq   r:   r8   r  r  d  s    M 	J	%r:   r  c                   "    \ rS rSrSrSS jrSrg)PageCatcherFigurei  r   Nc                 0    [         R                  XX#XEXgS9  g )N)r0   r  )r  r#   )r6   r   r   r&   r$   r7   r0   r  s           r8   r#   PageCatcherFigure.__init__  s    "++DFUgq+  Dr:   rq   )r  r  NNr  rq   r:   r8   r  r    s    	Q	Dr:   r  c                     [        S[        -  S[        -  S[        -  S[        -  SS9n[        S[        SSS	S
9n[	        SU5      n[	        SU5      nX4/nUR                  XP5        g )N         rb   showBoundaryBodyr         )r   r   r>   r2   ziSpam spam spam spam. Spam spam spam spam. Spam spam spam spam. Spam spam spam spam. Spam spam spam spam. zPEggs eggs eggs. Eggs eggs eggs. Eggs eggs eggs. Eggs eggs eggs. Eggs eggs eggs. )r   r   r   r   r
   addFromList)r   frame	bodyStylepara1para2mydatas         r8   r   r     sr    dFdFdFdF#$E vTVdefI19=E,i8E^F 
f$r:   c                      [        S5      n [        [        [        S[        -  S[        -  SS9n[        5       n[	        S5      Ul        [	        S5      Ul        UR                  U/U 5        U R                  5         g )Nzfigures.pdfr'  r   rb   r#  bluelightyellow)	r   r   r   r   r   r)   r*   r(  save)rj   r  vs      r8   test1r3    s`    		AdD!D&!D&q9AA A /AMM1#aFFHr:   __main__)3r   __version__r   reportlab.libr   reportlab.pdfgen.canvasr   reportlab.lib.stylesr   r   r   r   reportlab.platypusr   r	   r
   reportlab.lib.unitsr   reportlab.lib.enumsr   r   r   reportlab.lib.validatorsr   reportlab.lib.colorsr   r   r   rC   r   r   r   r   r   r   r   rlextra.pageCatcher.pageCatcherr   r   r   r   _hasPageCatcherImportErrorr   r   r   r  r  r   r3  rt   rq   r:   r8   <module>rA     s+   G 	   * / 9 $ ' ( $ < < , ( >i.2Ybc}X }~$$ $j :; :;xF* F-J -"rrO % %6%j2I %4x!< x% %>D2 D%" z	G G  Os   (D	 	DD