Warning: session_start(): Session cannot be started after headers have already been sent in /home/tvrreohg/public_html/manga.php on line 13
3 Neb3;ã@sdZdZddlmZddlTddlmZddlmZddl m Z ddl m Z m Z mZmZe jfd d „ZGd d „d e ƒZdd lmZGdd„deƒZde jdifdd„Zde jdifdd„Zddd„Zedk�r edd�ddlZeejƒdkrúejdZndZeedd�dS)z3.3.0z¼Render 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_DEFAULTScCs"tƒ}|jt|ƒ||||d�dS)z As it says)Ú showBoundaryN)Ú _PDFRendererÚdrawr )ÚdrawingZcanvasÚxÚyr ÚR©rú=/tmp/tmp4i9tl1d3/lib64/python/reportlab/graphics/renderPDF.pyr sr c@sˆeZdZdZdd„Zdd„Zdd„Zdd „Zd d „Zd d „Z dd„Z dd„Z dd„Z dd„Z dd„Zdd„Zdd„Zdd„Zdd„Zd S)!r z±This 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.cCsd|_d|_dS)Nr)Ú_strokeÚ_fill)ÚselfrrrÚ__init__%sz_PDFRenderer.__init__cCslt|tƒo|js|jjƒt|ƒ}|jj|ƒ|j|iƒ|j |ƒ|jj ƒt|tƒo\|jsh|jj ƒdS)zEThis is the recursive method called for each node in the treeN) Ú isinstanceZPathÚ isClipPathÚ_canvasZ saveStaterÚ_trackerÚpushÚapplyStateChangesZdrawNodeDispatcherÚpopZ restoreState)rÚnodeZdeltasrrrÚdrawNode)s     z_PDFRenderer.drawNodec Csn|j|jkodknrB|jj|j|j|j|j|j|j d�n(|jj |j|j|j|j|j|j |jd�dS)Nr)ÚstrokeÚfill)r"r!) ÚrxÚryrÚrectrrÚwidthÚheightrrZ roundRect)rr%rrrÚdrawRect=s  z_PDFRenderer.drawRectcCsB|j}|r>t|dƒs"tjj|jƒr>|jj||j|j|j|j ƒdS)NÚmode) ÚpathÚhasattrÚosÚexistsrZdrawInlineImagerrr&r')rÚimager*rrrÚ drawImagePs z_PDFRenderer.drawImagecCs$|jr |jj|j|j|j|jƒdS)N)rrÚlineÚx1Úy1Úx2Úy2)rr0rrrÚdrawLineZsz_PDFRenderer.drawLinecCs$|jj|j|j|j|j|jd�dS)N)r"r!)rÚcircleÚcxÚcyÚrrr)rr6rrrÚ drawCircle^s z_PDFRenderer.drawCirclecCsš|jr–t|jƒdkstdƒ‚|jdd…|jdd…}}|jjƒ}|j|d|dƒx0tdt|ƒdƒD]}|j||||dƒqjW|jj |ƒdS)Néz#Polyline must have 2 or more pointsré) rÚlenÚpointsÚAssertionErrorrÚ beginPathÚmoveToÚrangeÚlineToÚdrawPath)rZpolylineÚheadÚtailr*ÚirrrÚ drawPolyLinees z_PDFRenderer.drawPolyLinec Cs$|jr|j|jƒƒ�n|j|j|j|j|jf\}}}}}|jƒ\}}} |dkrT|}||} |j j ƒ} |dksv|dkr¸| dks†| dkr¸| j ||ƒ| j |||||||||| ƒnJ| j |||||||||| ƒ| j |||| |||| || ƒ| jƒ|j j| |j|jd�dS)Nr)r"r!)ZannularrDZ asPolygonÚcenterxÚcenteryÚradiusÚstartangledegreesÚendangledegreesZ _xtraRadiirr@rAZarcToZarcÚcloserr) rZwedgerIrJrKrLrMZyradiusZradius1Zyradius1Zangler*rrrÚ drawWedgeos("     z_PDFRenderer.drawWedgecCsP|j|j}|j|j}|j|j}|j|j}|jj|||||j|jd�dS)N)r"r!)r7r#r8r$rÚellipserr)rrPr1r3r2r4rrrÚ drawEllipseˆs     z_PDFRenderer.drawEllipsecCs¦t|jƒdkstdƒ‚|jdd…|jdd…}}|jjƒ}|j|d|dƒx0tdt|ƒdƒD]}|j||||dƒqdW|jƒ|jj ||j |j d�dS)Nr;z#Polyline must have 2 or more pointsrr<)r!r") r=r>r?rr@rArBrCrNrDrr)rZpolygonrErFr*rGrrrÚ drawPolygon�s z_PDFRenderer.drawPolygoncCsþt|ddƒ}|dk}|dk}|jr&|s2|jo.|�rú|jjƒ}|d|j|j|j|jf\}}}} } |dkrà|d |d } } t | | | | ƒ} |d krš|| 8}nF|dkr°|| d8}n0|dkrÐ|t || | | | | ƒ8}nt dt |ƒƒ‚|j j||| |�pôdd�dS)NÚtextRenderModerr;éér<éZ textAnchorÚstartÚ inheritedÚfontNameÚfontSizeÚendZmiddlegà?Únumericzbad value for textAnchor )r))rr;rTrU)r<r;rVrU)rWrX)ÚgetattrrrrZgetStaterrÚtextÚencodingrZ numericXShiftÚ ValueErrorÚstrrÚ drawString)rZ stringObjrSZneedFillZ needStrokeÚSZ text_anchorrrr^ÚencÚfontZ font_sizeZtextLenrrrrbžs"  $ z_PDFRenderer.drawStringc Csüddlm}|jjƒ}|j|j|j|jf}t|ddƒ}|j }|j }||||oR|dkd�}|jj } |j rn|jj n| } t|ddƒ} |dkrÆ|r´|r´| r´| ||dd �| ||d| d �qø| |||| d �n2|dkrà| |||| d �n|sèd}| |||| d �dS) Nr)Ú _renderPathÚ autocloseÚZpdf)Z forceCloseÚfillModeZsvg)r"r!)r!r"ri)r"r!ri)Úreportlab.graphics.shapesrfrr@rArCZcurveTorNr]rrrDrZclipPath) rr*rfZpdfPathZ drawFuncsrgr"r!ZisClosedZdPZcPrirrrrD³s(    z_PDFRenderer.drawPathcCs|jj|ƒdS)N)rÚsetStrokeColor)rÚcrrrrkÌsz_PDFRenderer.setStrokeColorcCs|jj|ƒdS)N)rÚ setFillColor)rrlrrrrmÏsz_PDFRenderer.setFillColorc CsL�xDtjrt|jƒƒn|jƒD�]$\}}|dkr`|jj|d|d|d|d|d|dƒq|dkrŠ|d krxd|_nd|_|j|ƒq|d kr |jj|ƒq|d kr¶|jj |ƒq|d krÌ|jj |ƒq|d k�r@|�r4t |t t fƒ�r t|ƒdk�r t |dt t fƒ�r |d}|d}nd}|jj||ƒn |jjƒq|dk�rn|d k�r\d|_nd|_|j|ƒq|dk�r¨|jd|jjƒ}|jd|jjƒ}|jj||ƒq|dk�rÊ|d k �rD|jj|ƒq|dk�rì|d k �rD|jj|ƒq|dk�r|jj|ƒq|dk�r|jj|ƒq|dk�r4|jj|ƒq|dkr||j_qWd S)z`This takes a set of states, and outputs the PDF operators needed to set those propertiesÚ transformrr<r;érTrVZ strokeColorNZ strokeWidthZ strokeLineCapZstrokeLineJoinZstrokeDashArrayZ fillColorrZrYZ fillOpacityZ strokeOpacityZ fillOverprintZstrokeOverprintZ overprintMaskri)rZrY)rZ invariantÚsortedÚitemsrrnrrkZ setLineWidthZ setLineCapZ setLineJoinrÚlistÚtupler=ZsetDashrrmÚgetZ _fontnameZ _fontsizeÚsetFontZ setFillAlphaZsetStrokeAlphaZsetFillOverprintZsetStrokeOverprintZsetOverprintMaskZ _fillMode)rÚdeltaZnewStateÚkeyÚvalueZphaseZfontnameZfontsizerrrrÒs\(  2             z_PDFRenderer.applyStateChangesN)Ú__name__Ú __module__Ú __qualname__Ú__doc__rr r(r/r5r:rHrOrQrRrbrDrkrmrrrrrr s   r )ÚFlowablec@s eZdZdZdd„Zdd„ZdS)ÚGraphicsFlowablez'Flowable wrapper around a Pingo drawingcCs||_|jj|_|jj|_dS)N)rr&r')rrrrrrs zGraphicsFlowable.__init__cCst|j|jddƒdS)Nr)r rZcanv)rrrrr szGraphicsFlowable.drawN)ryrzr{r|rr rrrrr~sr~rhr<c Cs:t|ƒ}x4dD],}d|}t|||j|td|ƒƒ||<qWt|f|Ž}|rj|jtjdƒ|jdd|ƒ|j |ƒ|rž|j |j |j fƒt ||dd|d �n2|jtjd ƒd } d } | |j } t ||d| |d �|jƒ|jƒtjd koôt|dƒ �r6y0ddl} ddl} | j|ƒjddƒ| j|ƒWn YnXdS)zàMakes 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ÚSizeZ initialFontreé$éPiîr)r é iär<ZmacÚwriteNZCAROzPDF )rr€)r r]rr rrurZdefaultGraphicsFontNamerbZsetTitleZ setPageSizer&r'r ÚshowPageÚsaveÚsysÚplatformr+ÚmacfsÚ macostoolsZFSSpecZSetCreatorTypeZtouched) ÚdÚfnÚmsgr ÚautoSizeÚ canvasKwdsrÚarlrrGr‰rŠrrrÚ drawToFiles4 $   r‘cCs"tƒ}t||||||d�|jƒS)z>Returns a PDF as a string in memory, without touching the disk)r�r rŽr�)rr‘Úgetvalue)r‹r�r rŽr�ÚsrrrÚ drawToStringDsr”ÚpdfoutFcCsÖddlm}m}ddlm}ddl}|jj|ƒs:|j|ƒ|jj |dƒ}t |ƒ}|j |dƒ|j dddƒdd l m}g} xJt|ƒD]>} | dd …d kr„t|| ƒ} | ƒ} t| d d ƒ} | j| | fƒq„W|j |dƒd}d}x¼| D]´\} } | dk sütd|ƒ‚|dk�r|jƒd}|d}|j |dƒ|j d|d|ƒ|j |dƒ|d}|jd|ƒ}|j| ƒ|j|ƒ|jƒ}|| j}t| |d|ƒ|d}qàW|dk�rª|jƒ|jƒ|�sÂ|dk�rÒtdt|ƒƒdS)Nr)Ú_baseGFontNameÚ_baseGFontNameBI)Úverbosez renderPDF.pdfr�r‚iîz Graphics Test)Ú testshapesé Z getDrawingr|rhrƒiär<zDrawing %d has no docstring!i,éz Drawing %dér;zsaved %s)rjr–r—Zreportlab.rl_configr˜r,r*ÚisdirÚmkdirÚjoinrrurbZreportlab.graphicsr™Údirr]Úappendr?r…Z beginTextZ textLinesZdrawTextZgetYr'r r†ÚprintÚascii)ZoutDirÚshoutr–r—r˜r,rŒrlr™ZdrawingsÚfuncnameÚfuncrZ docstringrrGZtextObjrrrÚtestPsT                 r§Ú__main__T)r¤N)r•F)Ú __version__r|ÚiorrjZreportlab.pdfgen.canvasrZreportlab.pdfbase.pdfmetricsrÚ reportlabrZreportlab.graphics.renderbaserrr r Z_unset_r r Zreportlab.platypusr}r~r‘r”r§ryr‡r=ÚargvÚoutdirrrrrÚs,     t  & 4