
    kfG                     |   d Z dZddlZddlmZ ddlmZ ddlmZ ddl	m
Z
mZ ddlmZ dd	lmZ dd
lmZ ddlmZ ddlmZmZmZ ddlmZ ddlmZ ddlmZmZ  edede          Z G d de          Zd 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d l$m%Z%m&Z&m'Z'm(Z( d!Z)n# e*$ r dZ)Y nw xY we)rF G d" d#          Z+ G d$ d%e!e+          Z, G d& d'e,          Z- G d( d)e!          Z. G d* d+e.          Z/d, Z0d- Z1e2d.k    r e1             dS dS )/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                   r    e Zd Zdedd ed          ddddddddfdZd	 Zd
 Zd Zd Z	d Z
d Zd Zd ZdS )Figure    NblackcentrebottomCENTERc                 N   t          j        |            || _        || _        || _        || _        || _        || _        || _        |pd|z  | _	        || _
        || _        d | _        d| _        || _        |	| _        |
| _        || _        || _        |                                  d S )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'   r/   r(   r)   r0   r1   r2   r*   r+   r,   r3   s                   Z/var/www/html/nettyfy-visnx/env/lib/python3.11/site-packages/reportlab/platypus/figures.pyr"   zFigure.__init__   s     	$
"&& 0 0$7K(. $&$    c                    | j         }| j        }| j        }| j        }| j        }| j        }| j        }| j        |||||||fk    r|||||||f| _        t          |t                    r	|| _
        d S t          |t                    rdt          d||d|z  ||| j        |dk    rt          n|dk    rt          nt                     | _        t          | j         | j                  | _
        d S t%          dt'          |          z            d S )Nr   g333333?leftright)r   r   leading	textColor	backColorr1   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)r5   r%   r&   r'   r(   r)   r+   r,   s           r7   r4   zFigure._getCaptionPara:   sG   ,&&00(.w{;?OP`amn}~~~!([AQRbcop  !AD'),, k#*   GH-- k$2((O 0 0 $)5v)=)=gg|]dOdOd88js
% 
% 
%! $-T\4;L#M#M    !Y\`ah\i\i!ijjj' ~r8   c                    | j         ru|                                  | j                            | j        || j        z
            \  }}|| j        z   | _        | j        | j        z   | _        || j        k    r|| _        n| j        | _        | j	        ddt          fv rd|| j        z
  z  | _        n'| j	        dt          fv r|| j        z
  | _        nd| _        | j        | j        fS )Nr   CENTREr!   RIGHTr   )r%   r4   r@   wrapr#   r$   r*   r.   r6   r3   r   dxr   )r5   
availWidthavailHeightwhs        r7   rG   zFigure.wrapW   s    < 	,  """#(([4CT5TUUDAq!"T_!4D,t/@@DK||!TZ+DK;8HY777Z$*45DGG[WX... 4:-DGGDG
DK((r8   c                    | j                             | j        d           | j        r+| j        dk    r | j                             d| j                   | j        r|                                  | j        r| 	                                 | j         
                                 |                                  | j                                          | j        r| j        dk    r"| j                             d| j                    n(| j                             d| j        | j        z              |                                  |                                  d S d S )Nr   r   )canv	translaterH   r%   r,   r.   r/   drawBackgroundr0   
drawBorder	saveState
drawFigurerestoreStater$   r*   r4   drawCaptionr5   s    r7   drawzFigure.drawi   sK   	DGQ'''< 	7D0(::I4#5666? 	"!!!; 	OO		   < 	#X--	##A(:':;;;;	##At'8'HIII  """	 	r8   c                 `    | j                             | j        dd| j        | j                   d S Nr   )rN   drawBoundaryr0   r#   r$   rV   s    r7   rQ   zFigure.drawBorder|   s-    	t{1Qtz4;LMMMMMr8   c                     | j                                          | j                             | j                   | j                             dd| j        | j        d           | j                                          d S )Nr      )fill)rN   rR   setFillColorr/   rectr#   r$   rT   )r5   colors     r7   _doBackgroundzFigure._doBackground   sk    		t///	q!TZ):CCC	     r8   c                     t          | j                  r|                     | j                   dS 	 t          | j                  }|                     |           dS #  Y dS xY w)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   r/   ra   r   )r5   cs     r7   rP   zFigure.drawBackground   sp     4?## 	t/////DO,,""1%%%%%s   )A A"c                 H    | j                             | j        dd           d S rY   )r@   drawOnrN   rV   s    r7   rU   zFigure.drawCaption   s%    	1a00000r8   c                     d S N rV   s    r7   rS   zFigure.drawFigure       r8   )__name__
__module____qualname__r   r   r"   r4   rG   rW   rQ   ra   rP   rU   rS   rh   r8   r7   r   r      s        .0+ ")''"2"2"& &!)    Bk k k:) ) )$  &N N N! ! !
 
 
1 1 1    r8   r   c                    |                                  }d|z  }|                     ddd           |                     ||z   ||z
  ||dd           |                     ddd           |                     d           |                     ||||dd           |                     ddd           |                     ddd           d S )Ng?r!   r   r\   )stroker]   g?)	beginPathsetFillColorRGBr_   setLineWidthsetStrokeColorRGB)canvasxyr#   r6   pthcorners          r7   drawPagerx      s    




C%ZF 3s3'''
KKF
AJvaaKHHH 1Qs###

KK1eVAAK666 1Qq!!!
Qq#####r8   c                   &    e Zd ZdZddZd Zd ZdS )
PageFigurezcShows a blank page in a frame, and draws on that.  Used in
    illustrations of how PLATYPUS works.Nc                     t                               | dt          z  dt          z             d| _        t          | _        || _        d S )N   zFigure 1 - a blank page)r   r"   r   r%   rA   r/   )r5   r/   s     r7   r"   zPageFigure.__init__   s:    afaf---0($r8   c                     d S rg   rh   rV   s    r7   drawVirtualPagezPageFigure.drawVirtualPage   ri   r8   c                 *   t          | j        dt          z  dt          z  dt          z  dt          z             | j                            dt          z  dt          z             | j                            dd           |                                  d S )Ng      ?g      ?g      ?g      @gm?g	Q_?)rx   rN   r   rO   scaler~   rV   s    r7   rS   zPageFigure.drawFigure   sx    E$JT	49c$hGGG	E$JT	222		9---r8   rg   )rj   rk   rl   __doc__r"   r~   rS   rh   r8   r7   rz   rz      sP        , ,% % % %      r8   rz   c                       e Zd ZdZd Zd ZdS )PlatPropFigure1z$This shows a page with a frame on itc                 H    t                               |            d| _        d S )Nz%Figure 1 - a page with a simple frame)rz   r"   r%   rV   s    r7   r"   zPlatPropFigure1.__init__   s!    D!!!>r8   c                 .    t          | j                   d S rg   )demo1rN   rV   s    r7   r~   zPlatPropFigure1.drawVirtualPage   s    dir8   N)rj   rk   rl   r   r"   r~   rh   r8   r7   r   r      s8        ..? ? ?    r8   r   c                   R    e Zd ZdZdddej        ddddddd	dd
dfdZd Zd Zd Z	dS )
FlexFigurezHBase for a figure class with a caption. Can grow or shrink in proportionNzHelvetica-Oblique   r\   r   	   r   topr   c                     t                               | |||||d ||
||||||           || _        |	| _        || _        d | _        || _        d S )N)r&   r'   r/   r(   r1   r2   r*   r+   r,   r3   r0   )r   r"   shrinkToFit	growToFitscaleFactor_scaleFactorr/   )r5   r#   r6   r%   r/   r&   r'   r(   r   r   r1   r2   r*   r+   r,   r   r3   r0   s                     r7   r"   zFlexFigure.__init__   st     	eVW$/$/#')9&1%/#-%1(7%% 	 	 	 	 '"& $r8   c                    | j         | j        |k    s| j        |k    rt                              | ||          \  }}|| j        z
  }| j        )t          || j        z  ||z
  | j        z            | _         n| j        | _         | j         dk     r4| j        r-| j        | j         z  dz
  | _        | j        | j         z  | _        dS | j         dk    r6| j	        r1| j        | j         z  dz
  | _        | j        | j         z  | _        dS dS dS dS )z4Rescale to fit according to the rules, but only onceNr\   g-C6?)
r   r#   r6   r   rG   r$   r   minr   r   )r5   rI   rJ   rK   rL   r.   s         r7   _scalezFlexFigure._scale   s(   $
:(=(=[AXAX;;tZ==DAq 11M'$'
4:(={=?XZ^Zk>k$l$l!!$($4! ""t'7"!Z$*;;fD
$($58I$I!!!"1$$$!Z(99FB
$($58I$I!!! BYAX %$$$r8   c                 f    |                      ||           t                              | ||          S rg   )r   r   rG   r5   rI   rJ   s      r7   rG   zFlexFigure.wrap   s,    J{+++{{4[999r8   c                 f    |                      ||           t                              | ||          S rg   )r   r   splitr   s      r7   r   zFlexFigure.split   s,    J{+++||D*k:::r8   )
rj   rk   rl   r   r   r   r"   r   rG   r   rh   r8   r7   r   r      s        RR:>$7A)/$%"#$&#%#$%-(-$(' % % % %BJ J J": : :; ; ; ; ;r8   r   c                        e Zd ZdZddZd ZdS )ImageFigurezImage with a caption below itNr   c           
          t           j                            |          sJ d|z              ddlm}  ||                                          \  }}	|| _        t                              | ||	|||||           d S )Nzimage file %s not foundr   )ImageReader)r   r3   r0   )	ospathisfilereportlab.lib.utilsr   getSizefilenamer   r"   )
r5   r   r%   r/   r   r3   r0   r   rK   rL   s
             r7   r"   zImageFigure.__init__  s    w~~h''MM)BX)MMMM333333{8$$,,..1 D!Q[aiopppppr8   c                 `    | j                             | j        dd| j        | j                   d S rY   )rN   	drawImager   r#   r$   rV   s    r7   rS   zImageFigure.drawFigure  s=    	DM"#Qtz43D	F 	F 	F 	F 	Fr8   )NNr   Nrj   rk   rl   r   r"   rS   rh   r8   r7   r   r      sF        ''q q q qF F F F Fr8   r   c                        e Zd ZdZddZd ZdS )DrawingFigurez8Drawing with a caption below it.  Clunky, scaling fails.Nc                     t          ||          }t          ||          } |            | _        t                              | | j        j        | j        j        ||           d| _        d S )Nr\   )r   getattrdrawingr   r"   r#   r6   r   )r5   
modulename	classnamer%   baseDirr/   moduleklasss           r7   r"   zDrawingFigure.__init__  sj     W55	**uwwD L. L/#&		( 	( 	(
 r8   c                     | j                             | j        | j                   | j                            | j         dd           d S rY   )rN   r   r   r   re   rV   s    r7   rS   zDrawingFigure.drawFigure  s@    	)4+<===DIq!,,,,,r8   NNr   rh   r8   r7   r   r     s=        BB	 	 	 	- - - - -r8   r   )restoreForms
storeFormsstoreFormsInMemoryrestoreFormsInMemoryr\   c                   $    e Zd ZdZd Zd Zd ZdS )PageCatcherCachingMixInz+Helper functions to cache pages for figuresc                     t           j                            |          \  }}t           j                            |          \  }}d||fz  S )Nz	%s_page%d)r   r   r   splitext)r5   pdfFileNamepageNodirnamer   rootexts          r7   getFormNamez#PageCatcherCachingMixIn.getFormName,  sB     "k : :GX((22ID#$//r8   c                     |                      ||          }t          j                            |dz             r=t          j        |dz             d         }t          j        |          d         }||k    S dS )z&returns 1 if no forms or form is older.frmr   r\   )r   r   r   existsstat)r5   r   r   formNameformModTime
pdfModTimes         r7   needsProcessingz'PageCatcherCachingMixIn.needsProcessing2  so    ''V<<Hw~~h/00  gh&788;W[11!4
"[01qr8   c                 l    |                      ||          }t          ||dz   |dz   |g           |dz   S )Nr   _)prefixpagenumbers)r   r   )r5   r   r   r   s       r7   
processPDFz"PageCatcherCachingMixIn.processPDF<  sP    ''V<<H{Hv$5,4sN17: : : : f$$r8   N)rj   rk   rl   r   r   r   r   rh   r8   r7   r   r   )  sG        55	0 	0 	0	 	 		% 	% 	% 	% 	%r8   r   c                        e Zd ZdZddZd ZdS )cachePageCatcherFigureNonA4?PageCatcher page with a caption below it.  Size to be supplied.Nc                 P   t           j                            |          \  | _        | _        | j        dk    rt           j        | _        || _        |                     | j        | j                  dz   t          |          z   | _	        t                              | ||||           d S )Nr   r   )r   r   r   r   r   curdirr   r   strr   r   r"   r5   r   r   r%   r#   r6   r/   s          r7   r"   z$cachePageCatcherFigureNonA4.__init__H  s    *,'--*A*A'DL$-|r!!!y DK ,,T]DKHH3NQTU[Q\Q\\DMeVWjIIIIIr8   c                 :   | j                                          | j                             | j                  s| j        t
          j        z   | j        z   }|                     || j	                  dz   }| 
                    || j	                  r|                     || j	                   t          || j                   }| j                             | j        | j                   | j                             | j                   | j                                          d S )Nr   )rN   rR   hasFormr   r   r   sepr   r   r   r   r   r   r   r   doFormrT   )r5   restorePathformFileNamenamess       r7   rS   z&cachePageCatcherFigureNonA4.drawFigureP  s    I!!!9$$T]33 >"lRV3dmC#//T[IIFR''T[AA >OOK===$\49==IOOD-t/@AAAIT]+++I""$$$$$r8   rg   r   rh   r8   r7   r   r   D  sA        MM	J 	J 	J 	J	% 	% 	% 	% 	%r8   r   c                       e Zd ZdZddZdS )cachePageCatcherFigurePageCatcher page with a caption below it.  Presumes A4, Portrait.
        This needs our commercial PageCatcher product, or you'll get a blank.S  J  Nc           	      H    t                               | ||||||           d S )N)r/   )r   r"   r   s          r7   r"   zcachePageCatcherFigure.__init__a  s.    '00xRWY_lv0wwwwwr8   )r   r   Nrj   rk   rl   r   r"   rh   r8   r7   r   r   ^  s:        	Q 	Q	x 	x 	x 	x 	x 	xr8   r   c                   $    e Zd ZdZi ZddZd ZdS )PageCatcherFigureNonA4r   Nc                    |x}| _         || _        |                    t          j        d                              dd                              dd                              dd                              dd          }|                    dd          dz   t          |          z   dz   | _        | j        t          |          z   | _        || _        t          
                    | ||||           d S )Nr   /\-:.)r   r   replacer   r   r   r   r   cachingr   r"   )	r5   r   r   r%   r#   r6   r/   r   fns	            r7   r"   zPageCatcherFigureNonA4.__init__i  s    !))B DKBF3''//C88@@cJJRRSVWZ[[ccdghkllB**S--c1#f++=cADK K#f++5DM"DLeVWjIIIIIr8   c                    | j                             | j                  s| j        | j        v r| j        | j                 \  }}nyt          | j        d          }|                                }|                                 t          || j	        g| j
                  \  }}| j        dk    r||f| j        | j        <   t          || j                   }| j                                          | j                             | j        | j                   | j                             | j                   | j                                          d S )Nrb)r   r   memory)rN   r   r   r   _cacheopenreadcloser   r   r   r   r   rR   r   r   r   rT   )r5   fdatapdfs       r7   rS   z!PageCatcherFigureNonA4.drawFigurer  s   9$$T]33 
:=DK//![7FAddT]400A&&((CGGIII04;-X\XcdddGAt|X--56WDM2(ty99I!!!IOOD-t/@AAAIT]+++I""$$$$$r8   r   )rj   rk   rl   r   r   r"   rS   rh   r8   r7   r   r   d  sH        MM 	J 	J 	J 	J	% 	% 	% 	% 	%r8   r   c                       e Zd ZdZddZdS )PageCatcherFigurer   r   r   Nc           
      J    t                               | |||||||           d S )N)r/   r   )r   r"   )r5   r   r   r%   r#   r6   r/   r   s           r7   r"   zPageCatcherFigure.__init__  sC    "++D(FGUTZgq  |C+  D  D  D  D  Dr8   )r   r   NNr   rh   r8   r7   r   r     s:        	Q 	Q	D 	D 	D 	D 	D 	Dr8   r   c                    t          dt          z  dt          z  dt          z  dt          z  d          }t          dt          ddd	
          }t	          d|          }t	          d|          }||g}|                    ||            d S )N         r\   showBoundaryBody         )r   r   r<   r1   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)rs   frame	bodyStylepara1para2mydatas         r7   r   r     s    dFdFdFdF#$  E vTVdefffI19==E,i88EU^F 
fV$$$$$r8   c                  B   t          d          } t          t          t          dt          z  dt          z  d          }t                      }t	          d          |_        t	          d          |_        |                    |g|            |                                  d S )Nzfigures.pdfr  r   r\   r   bluelightyellow)	r   r   r   r   r   r(   r)   r  save)rc   r   vs      r7   test1r    s    			AdD!D&!D&q999AA A //AMM1#aFFHHHHHr8   __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   rA   r   rx   rz   r   r   r   r   rlextra.pageCatcher.pageCatcherr   r   r   r   _hasPageCatcherImportErrorr   r   r   r   r   r   r  rj   rh   r8   r7   <module>r     s   G F 				             * * * * * * / / / / / / 9 9 9 9 9 9 9 9 $ $ $ $ $ $ ' ' ' ' ' ' ( ( ( ( ( ( $ $ $ $ $ $ < < < < < < < < < < , , , , , , ( ( ( ( ( ( > > > > > > > >~i.2Ybccc} } } } }X } } }~$ $ $$       $    j   :; :; :; :; :; :; :; :;xF F F F F* F F F- - - - -J - - -"rrrrrrrrrrrrOO   OOO eD% % % % % % % %6% % % % %j2I % % %4x x x x x!< x x x% % % % % % % %>D D D D D2 D D D% % %"   z	EGGGGG s    C CC