
    kf;                        d Z dZddlmZ ddlT ddlmZ ddlmZ ddl	m
Z
 ddlmZmZmZmZ e
j        fd	Z G d
 de          ZddlmZ  G d de          Zde
j        di fdZde
j        di fdZddZedk    rC ed           ddlZ eej                  dk    rej        d         ZndZ eed           dS dS )z3.3.0zRender Drawing objects within others PDFs or standalone

Usage::
    
    import renderpdf
    renderpdf.draw(drawing, canvas, x, y)

Execute the script to see some test drawings.
changed
    )BytesIO)*)Canvas)stringWidth)	rl_config)RenderergetStateDeltarenderScaledDrawingSTATE_DEFAULTSc                 p    t                      }|                    t          |           ||||           dS )z
As it saysshowBoundaryN)_PDFRendererdrawr
   )drawingcanvasxyr   Rs         \/var/www/html/nettyfy-visnx/env/lib/python3.11/site-packages/reportlab/graphics/renderPDF.pyr   r      s6    AFFw''ALFQQQQQ    c                   l    e Zd ZdZd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd ZdS )r   zThis draws onto a PDF document.  It needs to be a class
    rather than a function, as some PDF-specific state tracking is
    needed outside of the state info in the SVG model.c                 "    d| _         d| _        d S Nr   )_stroke_fillselfs    r   __init__z_PDFRenderer.__init__%   s    


r   c                    t          |t                    r|j        s| j                                         t          |          }| j                            |           |                     |i            | 	                    |           | j        
                                 t          |t                    r|j        s| j                                         dS dS )zEThis is the recursive method called for each node
        in the treeN)
isinstancePath
isClipPath_canvas	saveStater	   _trackerpushapplyStateChangesdrawNodeDispatcherpoprestoreState)r   nodedeltass      r   drawNodez_PDFRenderer.drawNode)   s    
 4&& 	%4? 	%L""$$$ t$$6"""vr*** 	%%%4&& 	(4? 	(L%%'''''	( 	(r   c           	      B   |j         |j        cxk    rdk    rCn n@| j                            |j        |j        |j        |j        | j        | j	                   d S | j        
                    |j        |j        |j        |j        |j         | j	        | j                   d S )Nr   strokefillr2   r1   )rxryr$   rectr   r   widthheightr   r   	roundRect)r   r6   s     r   drawRectz_PDFRenderer.drawRect=   s    7dg"""""""""LFDFJ<	       L""FDFJTW<	 #     r   c                     |j         }|rht          |d          s$t          j                             |j                   r6| j                            ||j        |j        |j        |j	                   d S d S d S )Nmode)
pathhasattrosexistsr$   drawInlineImager   r   r7   r8   )r   imager=   s      r   	drawImagez_PDFRenderer.drawImageP   s    z 	WT&)) 	RW^^EJ-G-G 	L((GUWK    	 	 	 	r   c                 z    | j         r3| j                            |j        |j        |j        |j                   d S d S N)r   r$   linex1y1x2y2)r   rF   s     r   drawLinez_PDFRenderer.drawLineZ   sC    < 	BLdgtwAAAAA	B 	Br   c                 v    | j                             |j        |j        |j        | j        | j                   d S Nr3   )r$   circlecxcyrr   r   )r   rN   s     r   
drawCirclez_PDFRenderer.drawCircle^   sB    LIvy&(<       r   c                    | j         rt          |j                  dk    s
J d            |j        dd         |j        dd          }}| j                                        }|                    |d         |d                    t          dt          |          d          D ]'}|                    ||         ||dz                       (| j                            |           d S d S )N   #Polyline must have 2 or more pointsr      )	r   lenpointsr$   	beginPathmoveTorangelineTodrawPath)r   polylineheadtailr=   is         r   drawPolyLinez_PDFRenderer.drawPolyLinee   s    < 	(x''1,,,.S,,,!1-xqrr/B$D<))++DKKQa)))1c$ii++ 0 0DGT!A#Y////L!!$'''''	( 	(r   c                    |j         r)|                     |                                           d S |j        |j        |j        |j        |j        f\  }}}}}|                                \  }}}	||}||z
  }
| j	        
                                }|dk    s|E|	dk    s|	=|                    ||           |                    ||z
  ||z
  ||z   ||z   ||
           nM|                    ||z
  ||z
  ||z   ||z   ||
           |                    ||z
  ||	z
  ||z   ||	z   ||
            |                                 | j	                            || j        | j                   d S )Nr   r3   )annularr]   	asPolygoncenterxcenteryradiusstartangledegreesendangledegrees
_xtraRadiir$   rY   rZ   arcToarccloser   r   )r   wedgerf   rg   rh   ri   rj   yradiusradius1yradius1angler=   s               r   	drawWedgez_PDFRenderer.drawWedgeo   s   = 	MM%//++,,,,, ]EM5<9PRWRgg IGWf&7).)9)9););&GWh&#$55E<))++D

goHaKK8CSGW---

76>77?GFNGT[O(%1 1 1 1 '&.'RY/(%1 1 1

77?GH,<ggowW_O_&0 0 0JJLLLL!!$!Z#| "     r   c                     |j         |j        z
  }|j         |j        z   }|j        |j        z
  }|j        |j        z   }| j                            ||||| j        | j                   d S rM   )rO   r4   rP   r5   r$   ellipser   r   )r   rv   rG   rI   rH   rJ   s         r   drawEllipsez_PDFRenderer.drawEllipse   sg    Z'*$Z'*$Z'*$Z'*$R2bdjMMMMMr   c                    t          |j                  dk    s
J d            |j        dd         |j        dd          }}| j                                        }|                    |d         |d                    t          dt          |          d          D ]'}|                    ||         ||dz                       (|                                 | j                            || j	        | j
                   d S )NrT   rU   r   rV   r0   )rW   rX   r$   rY   rZ   r[   r\   rn   r]   r   r   )r   polygonr_   r`   r=   ra   s         r   drawPolygonz_PDFRenderer.drawPolygon   s    7>""a''')N'''^AaC('.*<d|%%''DGT!W%%%q#d))Q'' 	, 	,AKKQac++++

 #'<!% 	 	 	 	 	 	r   c           	          t          |dd          }|dv }|dv }| j        r|s	| j        r|r| j                                        }|d         |j        |j        |j        |j        f\  }}}}	}
|dvrz|d         |d         }}t          |	|||
          }|d	k    r||z  }nL|d
k    r	||dz  z  }n=|dk    r|t          ||	||||
          z  }nt          dt          |          z             | j                            |||	|pd            d S d S d S )NtextRenderModer   )r   rT         )rV   rT      r~   
textAnchor)start	inheritedfontNamefontSizeendmiddleg      ?numericzbad value for textAnchor )r<   )getattrr   r   r&   getStater   r   textencodingr   numericXShift
ValueErrorstrr$   
drawString)r   	stringObjr|   needFill
needStrokeStext_anchorr   r   r   encfont	font_sizetextLens                 r   r   z_PDFRenderer.drawString   ss    +;A>>!Y.#y0
J 	M8 	M 	M* 	M&&((A+,\?IK	T]Tbdmdv+v(KAtS"777"#J-:i%dD)SAA%%LAA (**$AA )++{4YsSSSAA$%@[AQAQ%QRRRL##Aq$^5Kt#LLLLL	M 	M 	M 	Mr   c                    ddl m} | j                                        }|j        |j        |j        |j        f}t          |dd          }| j	        }| j
        } ||||o|dk              }| j        j        }	|j        r| j        j        n|	}
t          |dd           }|dk    r6|r#|r!|s |
||d	            |	||d|
           d S  |
||||           d S |dk    r |
||||           d S |sd} |
||||           d S )Nr   )_renderPath	autoclose pdf)
forceClosefillModesvgr3   )r1   r2   r   )r2   r1   r   )reportlab.graphics.shapesr   r$   rY   rZ   r\   curveTorn   r   r   r   r]   r#   clipPath)r   r=   r   pdfPath	drawFuncsr   r2   r1   isCloseddPcPr   s               r   r]   z_PDFRenderer.drawPath   s~   999999,((**^W^W_gmT	DR00	z;tY4;TIuDTUUU\"&*o=T\""24
400e I Ix I7a000076HEEEEEE7fxHHHHHHBwT&8DDDDDD  BwT&8DDDDDDr   c                 :    | j                             |           d S rE   )r$   setStrokeColorr   cs     r   r   z_PDFRenderer.setStrokeColor   s    ##A&&&&&r   c                 :    | j                             |           d S rE   )r$   setFillColorr   s     r   r   z_PDFRenderer.setFillColor   s    !!!$$$$$r   c           
      4   t           j        r!t          |                                          n|                                D ]\  }}|dk    rD| j                            |d         |d         |d         |d         |d         |d                    P|dk    r'|d| _        `d| _        |                     |           }|d
k    r| j                            |           |dk    r| j        	                    |           |dk    r| j        
                    |           |dk    r|rt          |t          t          f          rFt          |          dk    r3t          |d         t          t          f          r|d         }|d         }nd}| j                            ||           i| j                                         |dk    r)|	d| _        d| _        |                     |           |dv r]|                    d| j        j                  }|                    d| j        j                  }| j                            ||           |dk    r|| j                            |           8|dk    r|| j                            |           \|dk    r| j                            |           ~|dk    r| j                            |           |dk    r| j                            |           |dk    r|| j        _        d	S )z`This takes a set of states, and outputs the PDF operators
        needed to set those properties	transformr   rV   rT      r}   r   strokeColorNstrokeWidthstrokeLineCapstrokeLineJoinstrokeDashArray	fillColor)r   r   r   r   fillOpacitystrokeOpacityfillOverprintstrokeOverprintoverprintMaskr   )r   	invariantsorteditemsr$   r   r   r   setLineWidth
setLineCapsetLineJoinr!   listtuplerW   setDashr   r   get	_fontname	_fontsizesetFontsetFillAlphasetStrokeAlphasetFillOverprintsetStrokeOverprintsetOverprintMask	_fillMode)r   deltanewStatekeyvaluephasefontnamefontsizes           r   r(   z_PDFRenderer.applyStateChanges   s@    5>4GZ6%++--000U[[]] <	/ <	/JCk!!&&uQxq58!&q58U1X? ? ? ?%% =#$DLL#$DL''....%%))%0000''''....(((((//// ))) +!%e55 "#e**a--JW\]^W_afgk`lLmLm- %a %a !L((u5555L((****## =!"DJJ!"DJ%%e,,,,000 !99Z1GHH 99Z1GHH$$Xx8888m##$L--e444o%%$L//666o%%--e4444'''//6666o%%--e4444j).&y<	/ <	/r   N)__name__
__module____qualname____doc__r   r.   r:   rC   rK   rR   rb   rt   rw   rz   r   r]   r   r   r(    r   r   r   r       s       : :  ( ( ((  &  B B B  ( ( (  2N N N  M M M*E E E2' ' '% % %?/ ?/ ?/ ?/ ?/r   r   )Flowablec                       e Zd ZdZd Zd ZdS )GraphicsFlowablez'Flowable wrapper around a Pingo drawingc                 X    || _         | j         j        | _        | j         j        | _        d S rE   )r   r7   r8   )r   r   s     r   r   zGraphicsFlowable.__init__  s%    \'
l)r   c                 >    t          | j        | j        dd           d S r   )r   r   canvr   s    r   r   zGraphicsFlowable.draw  s     T\49a+++++r   N)r   r   r   r   r   r   r   r   r   r   r     s8        11* * *
, , , , ,r   r   r   rV   c                    t          |           } dD ]=}d|z   }t          | ||                    |t          d|z                                ||<   >|                    dd          }	t	          |fi |}
|r7|
                    t          j        d           |
                    dd|           |
	                    |           |r6|

                    | j        | j        f           t          | |
d	d	|
           nB|
                    t          j        d           d}d}|| j        z
  }t          | |
d||
           |	r!d	dlm}  ||	          |
j        j        _        |
                                 |
                                 t*          j        dk    rat/          |d          sS	 d	dl}d	dl}|                    |                              dd           |                    |           dS #  Y dS xY wdS dS )zMakes a one-page PDF with just the drawing.

    If autoSize=1, the PDF will be the same size as
    the drawing; if 0, it will place the drawing on
    an A4 page with a title above it - possibly overflowing
    if too big.)NameSizeinitialFontr   metadataPathN$   P     r   r        rV   )XMP)r=   macwriteCAROzPDF )r
   r   r*   r   r   r   r   defaultGraphicsFontNamer   setTitlesetPageSizer7   r8   r   reportlab.pdfbase.pdfdocr   _docCatalogMetadatashowPagesavesysplatformr>   macfs
macostoolsFSSpecSetCreatorTypetouched)dfnmsgr   autoSize
canvasKwdskwdsr   ar   r   r   ra   r   r   r   s                   r   
drawToFiler    s+    	AA P P!O!JNN1^F1H5M$N$NOO
188N400LrJA
 #			)3R888	Rc"""JJsOOO 	5	qw)***Q1al33333 	
		)3R888LQ2q|4444 9000000"%#<"8"8"8JJLLLFFHHH
|U72w#7#7	$$$$$$$$LL++FF;;;r"""""	DD s   'AG/ /G4c                 l    t                      }t          | |f||||d| |                                S )z>Returns a PDF as a string in memory, without touching the disk)r  r   r  r  )r   r  getvalue)r   r  r   r  r  r  ss          r   drawToStringr  H  s>    		Aq!i<V`iidhiii::<<r   pdfoutFc                    ddl m}m} ddlm} dd l}|j                            |           s|                    |            |j        	                    | d          }t          |          }|                    |d           |                    ddd           dd	lm} g }	t          |          D ]R}
|
dd
         dk    rBt!          ||
          } |            }t!          |dd          }|	                    ||f           S|                    |d           d}d}|	D ]\  }}|J d|z              |dk     r|                                 d}|dz
  }|                    |d           |                    d|d|z             |                    |d           |dz
  }|                    d|          }|                    |           |                    |           |                                }||j        z
  }t1          ||d|           |dz   }|dk    r|                                 |                                 |s|dk    r!t5          dt7          |          z             d S d S )Nr   )_baseGFontName_baseGFontNameBI)verbosezrenderPDF.pdfr   r   r   zGraphics Test)
testshapes
   
getDrawingr   r   r   r   rV   zDrawing %d has no docstring!i,     z
Drawing %d   rT   zsaved %s)r   r  r  reportlab.rl_configr  r?   r=   isdirmkdirjoinr   r   r   reportlab.graphicsr  dirr   appendr   	beginText	textLinesdrawTextgetYr8   r   r   printascii)outDirshoutr  r  r  r?   r  r   r  drawingsfuncnamefuncr   	docstringr   ra   textObjs                    r   testr*  T  s   JJJJJJJJ++++++III7==   
	f_	-	-Br

AIInb!!!LLS/*** .-----H
OO 2 2AbD>\)):h//DdffGYr22IOOWi0111 IInb!!!A	A (  )%%(F(J%%%s77JJLLLAF			"2&&&	RL1,---			.$$$F++b!$$)$$$	

7LLNNWaQE#vvqzz|||FFHHH &		j599$%%%%% 	r   __main__T)r$  N)r  F)__version__r   ior   r   reportlab.pdfgen.canvasr   reportlab.pdfbase.pdfmetricsr   	reportlabr   reportlab.graphics.renderbaser   r	   r
   r   _unset_r   r   reportlab.platypusr   r   r  r  r*  r   r   rW   argvoutdirr   r   r   <module>r6     s   		       ' ' ' ' * * * * * * 4 4 4 4 4 4       f f f f f f f f f f f f .7-> R R R R
q/ q/ q/ q/ q/8 q/ q/ q/f ( ' ' ' ' ', , , , ,x , , , 9+<qUW ( ( ( (T ):AQS    2& 2& 2& 2&h ZDtJJJ
s38}}Q!Dd r   