Warning: session_start(): Session cannot be started after headers have already been sent in /home/tvrreohg/public_html/manga.php on line 13
3 NebZCã@s’dZdZddlZddlZddlmZddlmZddlm Z ddl m Z m Z ddl mZdd lmZdd lTddlZd d d gZdd„Zdd„ZddlmZeeƒeƒdd„Zdd„Zdd„Zdd„Zdd„Zdd„Zdd „Zd!d"„Zd#d$„Z d%d&„Z!d'd(„Z"dd)l#m$Z$d*d+„Z%d,d-„Z&d.d/„Z'd0d1„Z(d2d3„Z)dBd5d6„Z*dCd7d8„Z+dDd9d:„Z,d;d<„Z-Gd=d>„d>ej.ƒZ/d?d@„Z0e1dAk�rŽej2ƒj3e0ƒƒdS)Ez $Id $ zøExecute this script to see some test drawings. This contains a number of routines to generate test drawings for reportlab/graphics. For now many of them are contrived, but we will expand them to try and trip up any parser. Feel free to add more. éN)ÚBytesIO)Úcolors)Úcm)ÚasNativeÚbase64_decodebytes)ÚCanvas)Ú stringWidth)Ú*z Times-RomanÚVerazTimes-BoldItaliccCsèddlm}m}|j|jddƒƒ|j|jddƒƒ|j|jddƒƒ|j|jd d ƒƒd d d dddd g}tjdk�räxldNr)Ú pdfmetricsÚttfontsr zVera.ttfZVeraBdz VeraBd.ttfZVeraItz VeraIt.ttfZVeraBIz VeraBI.ttfz Times-RomanZCourierÚ HelveticaÚwin32úAdventurer Light SFú Advlit.ttfÚArialMSú ARIAL.TTFúArial Unicode MSú ARIALUNI.TTFú Book Antiquaú BKANT.TTFúCentury Gothicú GOTHIC.TTFú Comic Sans MSú COMIC.TTFúElementary Heavy SF Boldú Vwagh.ttfú Firenze SFúflot.ttfÚGaramondúGARA.TTFÚJaggerúRols.ttfúMonotype Corsivaú MTCORSVA.TTFú Seabird SFúseag.ttfÚTahomaú TAHOMA.TTFÚ VerdanaMSú VERDANA.TTFúc:\WINNTú c:\WindowsZFonts©rr©rr©rr©rr©rr©rr©rr©rr©rr ©r!r"©r#r$©r%r&©r'r(©r)r*)r-r.r/r0r1r2r3r4r5r6r7r8r9r:)r+r,) Zreportlab.pdfbaser r Z registerFontZTTFontÚsysÚplatformÚosÚpathÚjoinÚisfileÚappend)r r ÚFÚnameZttfÚDÚfnÚf©rGú>/tmp/tmp4i9tl1d3/lib64/python/reportlab/graphics/testshapes.pyÚ_setups>      rIcCs&x tƒD]}|tkrtj|ƒqWdS)N)rIÚ_FONTSrA)rFrGrGrHÚ resetFontsAs rK)Úregister_resetcCsZtddƒ}ddddddg}|jt|dttjtjd�ƒtdd d |d d �}|j|ƒ|S) a+Generate a drawing in case something goes really wrong. This will create a drawing to be displayed whenever some other drawing could not be executed, because the generating function does something terribly wrong! The box contains an attention triangle, plus some error message. i�éÈéªéŒéPigà?)Ú strokeWidthÚ strokeColorÚ fillColoré(z"Error in generating function '%s'!Úmiddle)Ú textAnchor)ÚDrawingÚaddÚPolygonrrÚredÚyellowÚString)ÚfuncNamerDZpointsÚsrGrGrHÚgetFailedDrawingNs   r_cCsXtddƒ}|jtddddtjd�ƒ|jtdddtjd�ƒ|jtdd d tjd�ƒ|S) z{Hello World, on a rectangular background. The rectangle's fillColor is yellow. The string's fillColor is red. i�rMé2i,éd)rSé´z Hello WorldéVsSpecial characters ¢©®£αβ)rWrXÚRectrr[r\rZ)rDrGrGrHÚ getDrawing01is  rec CsVtddƒ}|jtddddtjdtd�ƒ|jtddddtjdtdd d gd �ƒ|S) z‡Various Line shapes. The lines are blue and their strokeWidth is 5 mm. One line has a strokeDashArray set to [5, 10, 15]. i�rMr`i,ragà?)rRrQéé é)rRrQZstrokeDashArray)rWrXÚLinerÚbluer)rDrGrGrHÚ getDrawing02xs rkc Csltddƒ}x@tdddƒD]0}|jtd|dd|ddtd |d �ƒqW|jtd d dtd dd �ƒ|S) zýText strings in various sizes and different fonts. Font size increases from 12 to 36 and from bottom left to upper right corner. The first ones should be in Times-Roman. Finally, a solitary Courier string at the top right corner. i�rMé é$érgéz Hello Worldr)ÚfontNameÚfontSizeé–é)rWÚrangerXr\rJ)rDÚsizerGrGrHÚ getDrawing03�s    rvcCsZtddƒ}d}xFtjtjtjfD]2}|jtd|dd|dd|d�ƒ|d}q W|S) zpText strings in various colours. Colours are blue, yellow and red from bottom left to upper right. i�rMrr`éz Hello World)rSrs)rWrrjr[rZrXr\)rDÚiÚcolorrGrGrHÚ getDrawing04§s   rzcCsrtddƒ}d}|jt|d|dtjd�ƒd}x@dD]8}|jt||d |d �ƒ|jtd ||dƒƒ|d}q2W|S)ztText strings with various anchors (alignments). Text alignment conforms to the anchors in the left column. i�rMéúrgé¾)rRé‚ÚstartrUÚendz Hello World)rVr`ú:rw)r~rUr)rWrXrirZgrayr\)rDZlineXÚyÚanchorrGrGrHÚ getDrawing05¸s   rƒcCsLtj}tddƒ}|jtddddƒƒ|jtddd|d�ƒ|jtddd |d�ƒ|jtd dd |d�ƒ|jtd dd dd |d�ƒ|jtd dddddddddddddddddg|d�ƒ|jtd dddddd dd d g |d�ƒ|jt ddd d|d�ƒ|jt d ddd dtj |d�ƒ|jt dddd dd|d�ƒ|jt dddtj dd�ƒ|S)z‹This demonstrates all the basic shapes at once. There are no groups or references. Each solid shape should have a green fill. i�rMrgi†r|raé)rSrTi,rwiJéxr}rOrré rNrbi^rPéKr`é<)rQrRrSéÜz Basic Shapesr )rSrpiöÿÿÿ)rÚgreenrWrXriZCircleZWedgeZPolyLinerYZEllipserdr[r\Úblack)rŠrDrGrGrHÚ getDrawing06Ìs$ & rŒcCsDtddƒ}ttddddƒtddddƒtddddƒtddddƒtddddƒtdd dd ƒtddddƒtddddƒtddddƒtd dd dƒtddddƒtd dd dƒtd dd dƒtd dd dƒtd dd dƒtdddtjd�ƒ}t|ƒ}|jddƒ|j|ƒt|ƒ}|jddƒ|jdƒ|j|ƒt|t tddƒtdƒƒd�}|j|ƒ|S)zîThis tests the ability to translate and rotate groups. The first set of axes should be near the bottom left of the drawing. The second should be rotated counterclockwise by 15 degrees. The third should be rotated by 30 degrees.i�rMrrar`rgr„rwrTrˆéFrPéZé#ÚAxes)Úfillrrrhi,)Ú transform) rWÚGrouprir\rr‹Ú translaterXÚrotateZmmult)rDÚAxisÚfirstAxisGroupÚsecondAxisGroupÚthirdAxisGrouprGrGrHÚ getDrawing07ðs8                      ršcCsttddƒ}ttddddƒtddddƒtddddƒtddddƒtddddƒtdd dd ƒtddddƒtddddƒtddddƒtd dd dƒtddddƒtd dd dƒtd dd dƒtd dd dƒtd dd dƒtdddtjd�ƒ}t|ƒ}|jddƒ|j|ƒt|ƒ}|jddƒ|jddƒ|j|ƒt|ƒ}|jddƒ|jddƒ|j|ƒt|ƒ}|jddƒ|j ddƒ|j|ƒ|S)aaThis tests the ability to scale coordinates. The bottom left set of axes should be near the bottom left of the drawing. The bottom right should be stretched vertically by a factor of 2. The top left one should be stretched horizontally by a factor of 2. The top right should have the vertical axiss leaning over to the right by 30 degrees.i�rMrrar`rgr„rwrTrˆr�rPrŽr�r�)r‘rrrsroé}r{) rWr“rir\rr‹r”rXZscaleZskew)rDr–r—r˜r™ZfourthAxisGrouprGrGrHÚ getDrawing08sD                           rœc CsÀtddƒ}td}d}d}t|||ƒ}ttdd|||d�tdd|d |d d d �ƒ}|j|ƒd }t|||ƒ}ttdd|||d�tdd|d |d d d �ƒ}|jdd ƒ|jdƒ|j|ƒ|S)z¸This tests rotated strings Some renderers will have a separate mechanism for font drawing. This test just makes sure strings get transformed the same way as regular graphics.i�rMrrlz4I should be totally horizontal and enclosed in a boxr„)rprqérnN)rSzGI should slope up by 15 degrees, so my right end is higher than my leftr`rh) rWrJrr“r\rdrXr”r•)rDrprqÚtextÚ textWidthÚg1Úg2rGrGrHÚ getDrawing09Js$       r¢c Cs tddƒ}td}d}ttddddtjd�tddd ||d �ƒ}|j|ƒt|td d ƒd �}|j|ƒt|td d ƒd �}|j|ƒt|td d ƒd �}|j|ƒ|S) z This tests nested groups with multiple levels of coordinate transformation. Each box should be staggered up and to the right, moving by 25 points each time.i�rMrrlrar„)rSrfzText in the box)rprqé)r’) rWrJr“rdrr[r\rXr”)rDrprqr r¡Zg3Zg4rGrGrHÚ getDrawing10is     r¤)Ú SmileyFacecCsÜdd„}tddƒ}tdd�}|j|ddd tjƒƒ|jtd dd dtjd �ƒ|jtdd dd tjd �ƒ|j|ƒtdd�}|j|ddd tjƒƒ|jtd dd dtjd �ƒ|jtdd dd tjd �ƒ|j|ƒtdd�}|S)ztest of anchoringcSs2|}tƒ}||_|||_|||_|d|_|S)z'Make a smiley data item representation.ro)r¥rSÚxr�ru)r¦r�ruryÚdr^rGrGrHÚ makeSmiley†s   z getDrawing11..makeSmileyi�rMrsr)r’rargrŽén)rRro)rsrrrsrréœÿÿÿ)rorrrorarª)rorrrorr)rWr“rXrrZrirŠrj)r¨rDÚgrGrGrHÚ getDrawing11„s      r¬c CsPd}tddƒ}xddd„}|tƒ\}}}|dks(|dkr:|t||ƒ\}}}|S) zTest Various TTF Fontsé�rMrlrorfc SsÀt||ƒ}d||d}|d|}|} d} x~|D]v} | |8} | tdƒ} t| | |ƒ} t| | dƒ} |jttd| || d|tjd tj d �t d | | | |d �ƒƒ| d 8} q4W| || ||fS)Nrog333333ó?gš™™™™™É?rsl: I should be totally horizontal and enclosed in a box and end in alphabetagamma ¢©®£ʥЖփ×�قকαβγr„érngà?)rRrQrSrg)rprqrf) rWrrÚmaxrXr“rdrrZZ lightgreyr\)rBÚwÚhrqZslackZgaprDÚthZghr�ÚmaxxrpržrŸrGrGrHÚdrawit²s     " zgetDrawing13..drawit)r®rMrlrorf)rJ)rµr´ZmaxyrDÚ_rGrGrHÚ getDrawing13¯s  r·cCs$ddlm}tdƒ}|ƒjt|ƒƒS)zcreate a small PIL imager)Ú _getImagesªR0lGODdhCgAHAIMAAP/////29v/d3f+ysv9/f/9VVf9MTP8iIv8ICP8AAAAAAAAAAAAAAAAAAAAA AAAAACwAAAAACgAHAAAIMwABCBxIsKABAQASFli4MAECAgEAJJhIceKBAQkyasx4YECBjx8TICAQ AIDJkwYEAFgZEAA7)Zreportlab.graphics.renderPMr¸rÚopenr)r¸ÚbrGrGrHÚ smallArrowÆs r»cCsVddlm}tddƒ}tƒ}|j|dddd|d�ƒtƒ}|j|d d dd|d�ƒ|S) ztest shapes.Imager)ÚImagei�rMN)r¦r�ÚwidthÚheightr>r„éi|éº)Úreportlab.graphics.shapesr¼rWr»rX)r¼rDZim0Zim1rGrGrHÚ getDrawing14Îs  rÂrscCsRg}ttƒjƒƒ}|jƒx2|D]*}|dd…dkr |s@|dkr |j|ƒq W|S)z4Get a list of drawing function names from somewhere.rrgÚ getDrawingr·)ÚlistÚglobalsÚkeysÚsortrA)ÚdoTTFÚ funcNamesÚsymbolsr]rGrGrHÚgetAllFunctionDrawingNamesØs  rËc Cst|dkrtƒ}|dkrtƒ}|j||j|dƒƒ}y |ƒ}Wnt|ƒ}YnX|j|t|ddƒ|dd…fƒdS)Nz.__doc__Úé)rÅÚlocalsÚgetr_rAÚgetattr)rCrDÚlr«Úfuncr§rGrGrHÚ_evalFuncDrawingçs rÓcCs&g}xt|d�D]}t||ƒqW|S)N)rÈ)rËrÓ)rÈrDrFrGrGrHÚgetAllTestDrawingsñsrÔc Cs&tjjtjdƒdd}t|ƒ}|jtddƒ|jdddƒ|jtddƒd}d }x´|D]¬\}}}|d kr||j ƒd}|d }|jtd dƒ|jd|d ||fƒ|jtddƒ|d}|j d|ƒ}|j |ƒ|j |ƒ|j ƒ}||j}|j|d|ƒ|d }q^W|jƒtd|ƒdS)z4Create and save a PDF file containing some drawings.rz.pdfé rPiîzReportLab Graphics-Shapes Testrliärsi,rwroz%s (#%d)r¿z wrote %s N)r=r>Úsplitextr;ÚargvrZsetFontrJZ drawStringZshowPageZ beginTextZ textLinesZdrawTextZgetYr¾ZdrawOnÚsaveÚprint) ÚdrawingsZpdfPathÚcr�rxZdrawingZ docstringÚfuncnameZtextObjrGrGrHÚwritePDF÷s2     rÝc@s(eZdZdZdd„Zdd„Zdd„ZdS) ÚShapesTestCasez$Test generating all kinds of shapes.cCstƒ|_g|_dS)z+Prepare some things before the tests start.N)rËrÉrÚ)ÚselfrGrGrHÚsetUpszShapesTestCase.setUpcCst|jƒdS)z0Do what has to be done after the tests are over.N)rÝrÚ)rßrGrGrHÚtearDown#szShapesTestCase.tearDowncCs0x*|jD] }|dd…dkrt||jƒqWdS)zMake a list of drawings.rrgrÃN)rÉrÓrÚ)rßrFrGrGrHÚtestAllDrawings-s zShapesTestCase.testAllDrawingsN)Ú__name__Ú __module__Ú __qualname__Ú__doc__ràrárârGrGrGrHrÞs rÞcCstjƒ}|jtdƒƒ|S)z#Make a test suite for unit testing.râ)ÚunittestZ TestSuiteZaddTestrÞ)ÚsuiterGrGrHÚ makeSuite7sréÚ__main__)rs)NN)rs)4Ú __version__rær=r;ÚiorZ reportlab.librZreportlab.lib.unitsrZreportlab.lib.utilsrrZreportlab.pdfgen.canvasrZreportlab.pdfbase.pdfmetricsrrÁrçrJrIrKZreportlab.rl_configrLr_rerkrvrzrƒrŒršrœr¢r¤Z*reportlab.graphics.widgets.signsandsymbolsr¥r¬r­r·r»rÂrËrÓrÔrÝZTestCaserÞrérãZTextTestRunnerÚrunrGrGrGrHÚ sR      " $*0   "