Warning: session_start(): Session cannot be started after headers have already been sent in /home/tvrreohg/public_html/manga.php on line 13
3 Neb$-ã@s8dZdZddlmZmZmZddlmZmZm Z m Z m Z m Z ddl Z ddlmZmZmZmZmZmZddlmZddlmZd d „Zd d „Zd d„Zdd„Zd7ZeeƒdZd8dd„Z d:dd„Z!dd(d)„Z&Gd*d+„d+ƒZ'd,d-„Z(d.d/„Z)d?d1d2„Z*Gd3d4„d4ƒZ+Gd5d6„d6e,ƒZ-dS)@z3.3.0zUtilities used here and there.é)ÚmktimeÚgmtimeÚstrftime)Úlog10ÚpiÚfloorÚsinÚcosÚhypotN)ÚtransformPointsÚinverseÚEllipseÚGroupÚStringÚ numericXShift)Úflatten)Ú stringWidthcCs>dgd}ttt|jdƒƒƒ\}}}|||g|dd…<t|ƒS)zNConvert a 'dd/mm/yyyy' formatted string to a tuple for use in the time module.ré ú/Né)ÚlistÚmapÚintÚsplitÚtuple)Ú timeStringÚLÚddÚmmZyyyy©rú@/tmp/tmp4i9tl1d3/lib64/python/reportlab/graphics/charts/utils.pyÚ mkTimeTuples r!cCs tt|ƒƒS)z?Convert a number of seconds since the epoch into a date string.)rr!)rrrr Ú str2secondssr"cCstdt|ƒƒS)zAConvert a date string into the number of seconds since the epoch.z%Y-%m-%d)rr)Úsecondsrrr Ú seconds2strsr$cCs¬|d kr |S|dkr"d t| ƒStt|ƒƒ}|dkrJ|dkrDd}qhd}n|dkr`d|d}nd|}||krx|dS|d|krŒ|dS|d|kr |d S|dSd S) a[Return the first 'nice round number' greater than or equal to x Used in selecting apropriate tick mark intervals; we say we want an interval which places ticks at least 10 points apart, work out what that is in chart space, and ask for the nextRoundNumber(). Tries the series 1,2,5,10,20,50,100.., going up or down as needed. régð?gš™™™™™¹?g$@ég@ég@N)rr%gð¿)ÚnextRoundNumberrr)ÚxZlgÚbaserrr r(#s&    r(çš™™™™™¹?çš™™™™™É?çÐ?çà?r%r'c CsŽ||kr<||kr4|dkr"d }d}qdetermine tick parameters for range [lo, hi] using I intervalsrgš™™™™™¹?gÍÌÌÌÌÌì?gš™™™™™ñ?zlo>hir%é ggš™™™™™¹¿éÿÿÿÿ)Ú ValueErrorÚfloatrrÚ _intervalsrÚ_j_max) ÚloÚhiÚIr)ÚbÚaÚjÚssÚnÚlrrr Ú find_intervalKsT ,          r>éééérc CsÌ|r>t||ƒd|}t||ƒ\}}|dkr4|d}||}n„y |dWn2tk r|ttd|dƒt|ddƒƒ}YnXd}x>|D]6}t|||ƒ}|d|krˆ|dd…\}}}|d}qˆW|||fS)Nrg:Œ0âŽyE>r%r&rg Èë…óÌá)ÚdivmodÚ TypeErrorÚrangeÚmaxr>) ÚlowerÚupperr<ÚgridÚtr6ÚzÚwÚirrr Úfind_good_gridzs"  $    rNcCsrt||||ƒ\}}}tt|ƒƒ} | dkr,d} |d| } t| ƒ| k} | dksT| dkrjdt| dƒd} nR| dkr�t| ƒ| } dt| ƒd } n,| t| ƒ} dt| d ƒd t| ƒd } |rÈ| d } g} tt||ƒ|dƒd}|�r4g}x8t|ƒD],}|||}| j|ƒ|j| ||ƒqüW| |fSx4t|ƒD](}|||}| j|| ||fƒ�q>W| SdS)z¾ return tick positions and labels for range lower<=x<=upper n=number of intervals to try (can be a list or sequence) split=1 return ticks then labels else (tick,label) pairs rr%g$@rz%+rAz.0eú%z.0fr&Ú.Úfz%%gš™™™™™¹?Néýÿÿÿ)rNrrrÚreprr2rEÚappend)rGrHr<rÚpercentrIZ labelVOffsetrJr6ÚpowerrLÚformatÚdigitsÚTÚlabelsrMÚvrrr ÚticksŽs8         r\csÜtˆƒ}dˆkrÒd}x ||kr4ˆ|dkr4|d7}qW||krBˆS|d}xˆ|dkrb|d8}qLW|d7}|st|r€ˆ||…‰‡fdd„ttˆƒƒDƒ}x,|D]$}dˆ|dˆ|dˆ|<q W||ˆfSd|ˆfS)Nrr%csg|]}ˆ|dkr|‘qS)Nr)Ú.0rM)Údatarr ú ÀszfindNones..gà?)ÚlenrE)r^Úmr8r=r7rMr)r^r Ú findNones´s$    $ rbcCshdd„|Dƒ}t|ƒ\}}}t|ƒ}|s8||ks8||krd|sD||krP|||…}dd„t||ƒDƒ}|S)NcSsg|] }|d‘qS)r%r)r]r)rrr r_Çsz pairFixNones..cSsg|]\}}|d|f‘qS)rr)r]r)Úyrrr r_Ìs)rbr`Úzip)ÚpairsÚYr8r=ZnYrarrr Ú pairFixNonesÆs rgcs<ˆdˆdgˆ‰‡‡fdd„tˆtˆƒdƒDƒ‰ˆS)Nr%rcs(g|] }ttˆ|ˆ|…ƒƒˆ‘qSr)r2Úsum)r]rM)r^r<rr r_Ñszmaverage..)rEr`)r^r<r)r^r<r ÚmaverageÏs"ricCs$dd„t|tdd„|Dƒ|ƒƒDƒS)NcSsg|]\}}|d|f‘qS)rr)r]r)Úsrrr r_Õsz pairMaverage..cSsg|] }|d‘qS)r%r)r]r)rrr r_Õs)rdri)r^r<rrr Ú pairMaverageÔsrkc@sjeZdZdZdgfdd„Zdd„Zdd„Zd d „Zed d „ƒZ ed d„ƒZ e dd„ƒZ dd„Z dd„ZdS)ÚDrawTimeCollectorzi generic mechanism for collecting information about nodes at the time they are about to be drawn ZgifcCs(tjƒ|_|jƒd|_||_d|_dS)NF)ÚweakrefÚWeakKeyDictionaryÚ_nodesÚclearÚ_pmcanvÚformatsÚdisabled)Úselfrrrrr Ú__init__Ûs  zDrawTimeCollector.__init__cCsg|_|jj|_dS)N)Ú_inforTÚ _info_append)rtrrr rpâszDrawTimeCollector.clearcOs|||f|j|<||jd<dS)NZ_drawTimeCallback)roÚ__dict__)rtÚfuncÚnodeÚargsÚkwdsrrr ÚrecordæszDrawTimeCollector.recordcCsF|jj|dƒ}|rB|\}}}||||f|ž|Ž}|dk rB|j|ƒdS)N)roÚgetrw)rtrzÚcanvasÚrendererryr{r|rMrrr Ú__call__ês  zDrawTimeCollector.__call__c Ks\t|ddƒ}|sdS|j}|j}||j}||j}|jƒ} tj|||f||ffƒ| d<| S)NÚctmZrect)Úgetattrr)rcÚwidthÚheightÚcopyrlÚtransformAndFlatten) rzrr€r|ÚAÚx1Úy1Zx2Úy2ÚDrrr ÚrectDrawTimeCallbackñs   z&DrawTimeCollector.rectDrawTimeCallbackcCs*t|ƒdkrt|ƒ}t||ƒ}tt|ƒƒS)z transform an flatten a list of points A transformation matrix p points [(x0,y0),....(xk,yk).....] r%r)r%rrr%rr)rr r r)rˆÚpZiArrr r‡þs  z%DrawTimeCollector.transformAndFlattencCs"|jsddl}|jddƒ|_|jS)Nrr%)rqÚrenderPMZPMCanvas)rtr�rrr Úpmcanv szDrawTimeCollector.pmcanvc s–t|ddƒ}|sdSt|tƒrR|j}|j|j|j|j|jƒ|j ‰dd„ˆDƒ‰n(|j ƒj ‰‡fdd„t dt ˆƒdƒDƒ‰|jƒ}|j|ˆƒ|d<|S)Nr‚cSsg|]}|d|df‘qS)r%r&r)r]r)rrr r_sz;DrawTimeCollector.wedgeDrawTimeCallback..cs g|]}ˆ|ˆ|df‘qS)r%r)r]rM)rŽrr r_srr&Úpoly)rƒÚ isinstancer r�ZellipseZcxÚcyÚrxZryZvpathZ asPolygonZpointsrEr`r†r‡)rtrzrr€r|rˆÚcrŒr)rŽr ÚwedgeDrawTimeCallbacks   z'DrawTimeCollector.wedgeDrawTimeCallbackc Cs8ddl}t|ddƒ}z|j|j|ƒWd|jƒXdS)zÏ save the current information known to this collector fnroot is the root name of a resource to name the saved info override this to get the right semantics for your collector rNz.default-collector.outrL)ÚpprintÚopenrvÚclose)rtZfnrootr—rQrrr Úsave s zDrawTimeCollector.saveN)Ú__name__Ú __module__Ú __qualname__Ú__doc__rurpr}r�Ú staticmethodr�r‡Úpropertyr�r–ršrrrr rl×s rlcCs"|\}}|\}}t||||ƒS)z"return distance between two points)r )Úxxx_todo_changemeÚxxx_todo_changeme1Zx0Zy0r‰rŠrrr ÚxyDist-sr£cCsh|\}}|\}}|\}} |\} } ||f} ||||f} || f}| || | f}t| d|d| d|dƒ}|d| d|d| df}|d| d|d| d}|d|d|d|d}t|ƒdkrôt|ƒdkrðdSdS||}||}d|k�odkn�rdd|k�o4dkn�rd| d|| d| d|| dfSdS)Nrr%g:Œ0âŽyE>Z collinear)r2Úabs)Zxxx_todo_changeme2Zxxx_todo_changeme3Zxxx_todo_changeme4Zxxx_todo_changeme5Zx00Zy00Zx01Zy01Zx10Zy10Zx11Zy11rŽÚrÚqrjÚrsZqpZqprZqpsrJÚurrr ÚlineSegmentIntersect3s($     8r©Ústartc  CsV|s tƒ}|d;}td} || } t|||ƒ} |r6d p8d} | d}| d}| dkr¸| dkrp| | d| |7} nH| dkrŽ| | t| ƒ|7} n*| d kr¸| | tt| || ||d ƒƒ|7} x˜|D]�}t|||ƒ} t| ƒ|}tƒ}|jtd d |||dd �ƒ|j|t| ƒ||t | ƒ|ƒ|j | ||| |ƒ|j|ƒ| | |8} q¾W|S)z%make a group with circular text in itihé´r%gà?éZrªZmiddleÚendÚnumericNr)ÚfontNameÚfontSizeÚ textAnchorr0) rrrr2rÚaddrÚ translater rÚrotate)r)rcZradiusZangleÚtextr¯r°ZinsideÚGr±Zpi180Úphir„ÚsigZhsigZsig90ÚletterÚbetaÚhrrr ÚmakeCircularStringPs4  "   $ r¼c@s(eZdZdZdd„Zdd„Zdd„ZdS) ÚCustomDrawChangerz9 a class to simplify making changes at draw time cCs d|_dS)N)Ústore)rtrrr rutszCustomDrawChanger.__init__cCsf|r.|j|ƒ|_t|jtƒsbtd|jjƒ‚n4|jdk rbx"|jjƒD]\}}t|||ƒqDWd|_dS)Nz5%s.changer should return a dict of changed attributes) Ú_changerr¾r’ÚdictÚAssertionErrorÚ __class__r›ÚitemsÚsetattr)rtZchangeÚobjr9r[rrr r�ws  zCustomDrawChanger.__call__cCs tdƒ‚dS)z© When implemented this method should return a dictionary of original attribute values so that a future self(False,obj) can restore them. zAbstract method _changer calledN)Ú RuntimeError)rtrÅrrr r¿€szCustomDrawChanger._changerN)r›rœr�ržrur�r¿rrrr r½ps r½c@seZdZddd„ZdS)ÚFillPairedDatarcCstj||ƒ||_dS)N)rruÚother)rtr[rÈrrr ru‰s zFillPairedData.__init__N)r)r›rœr�rurrrr rLjsrÇ)r+r,r-r.)r'©r?r'r@rArBr)rÉN©r?r'r@rArBr)rÊr%rNr)r@)r@)rNrª).Ú __version__ržÚtimerrrÚmathrrrrr r rmZreportlab.graphics.shapesr r r rrrZreportlab.lib.utilsrZreportlab.pdfbase.pdfmetricsrr!r"r$r(r3r`r4r>rNr\rbrgrirkrlr£r©r¼r½rrÇrrrr Ús4     &  /  &  V