Xׯd$ddlZddlZddlmZmZmZddlmZmZmZmZGddeZ Gdde Z Gdd e Z Gd d e Z Gd d e Z GddZdZdZdZdZedkr>ddlZejdZeeededzdSdS)N)Context ImageSurfacePattern)VBoxNode TextRectangleintersect_linesdraw_arrow_headc2eZdZdZdZdZdZdZdZdS)TreeNodecBtj|d|_d|_||_||_||_g|_d|_|Pt||_ |j dddd|j |j d|_dS)N)rrrrFg?g?g?r)r__init__paddingexpand_to_fillnameparentdatachildren is_step_listrcontentset_fill_coloritemsappendextra_bottom_spaceselfrrtitlers &..\modules\optimizer_trace_renderer.pyrzTreeNode.__init__s$# #    !  (//DL L ' '(;=PRegh i i i J  dl + + +"#c d|jjzS)Nz )rtext)rs r__repr__zTreeNode.__repr__.s4<,,,rcj|jD]}||dSN)rprocesscalc)rchs rr%zTreeNode.process1s3-  B JJLLLL rcZtj||||dSr$)rrender render_shadow)rcs rr)zTreeNode.render6s.a    1rcdSNrrr+r's r'minimal_space_required_space_for_ref_toz0TreeNode.minimal_space_required_space_for_ref_to:sqrcB||||f|_dSr$)r&pos)rr+xys rlayoutzTreeNode.layout=s  ! q6rN) __name__ __module__ __qualname__rr"r%r)r0r5r.rrr r sn $ $ $--- rr ceZdZdZdS) TreeStepNodect||||||dddd|dddddS)N?gffffff?r )r rr set_colorrs rrzTreeStepNode.__init__BsV$eT::: Cc1--- q!Q"""""rNr6r7r8rr.rrr:r:As######rr:c&eZdZdZdZdZdZdS) StepListNodecBt||dd|dSNstepsr r)rrrCs rrzStepListNode.__init__Hs$$u=====rc|||jD],}||||||jddzz }-dS)Nr ()r&rr5size)rr+r3r4r's rr5zStepListNode.layoutKsX ! - ! !B IIaA    b AA ! !rcD|jD]}||dSr$)rr)r/s rr)zStepListNode.renderQs.-  B IIaLLLL  rc|jD]i}t|d\}}td||t ||||}|j|jdS)Nrz####################)rlistrprintr:rr)rsteprvaluenodes rr%zStepListNode.processUsyI ' 'Dtzz||,,Q/KD% &u % % %dD%88D M  & & & &  ' 'rN)r6r7r8rr5r)r%r.rrr@r@GsP>>>!!! '''''rr@ceZdZdZdS) TreeRootNodecJt|d|ddSrB)r@r)rrCs rrzTreeRootNode.__init__^s$dD%.99999rNr>r.rrrPrP]s#:::::rrPceZdZdZdS)TableDependencych|dd|d}t||d||dS)Ndatabase.tablerSrD)rrrrs rrzTableDependency.__init__ds@ +++T']];$(95$GGGGGrNr>r.rrrSrScs(HHHHHrrSc@eZdZdZd dZdZdZdZdZdZ d Z d S) TreeLayouterc0||_d|_d|_dS)N2)rootyspacingxspacing)rr]s rrzTreeLayouter.__init__ks   rrcf|j\}}}}|j\} } d} d} |jr|jD]} ||f| _|jdkrt d| j||jz| jr||| ||\}}n1| || || jdz|jz|\}}||f| _ |t| jd||j zz }| ||j zz } t|| } t| | } n| ||||\} } | | z } | | fS)Nrjoin_optimizationzput r ) rrGrrr2rrKr_r5 layout_treegsizemaxr^)rctxrNr3r4tlbrwhtwidththeightrLswshs rr5zTreeLayouter.layoutps[\ 1ay1   @ ) )a49 333&$)Q->???$^![[dAq99FB!--c4TYq\9IDM9Y[\]]FB "X S1r**T]::2 --RF^^FF"..sD!Q??OFG1 wrc |j\}}d}|}|} |jD]J} ||| | ||z|jz\} } | | |jzz } || z }t | |}K||f|_t ||||jzfSr-)rGrrbr^r_rdr2) rrerNr3r4rjrkrlrmxxr'rnros rrbzTreeLayouter.layout_treesy1 - ' 'B%%c2r1q54=3HIIFB "t}$ $B bLF"g&&GGa461~~w666rc|jD]H}|j\}}t||zt|f|_|||IdSr$)rr2intadjust_child_layout)rrNoffsetr'cxcys rrtz TreeLayouter.adjust_child_layouts_- 1 1BVFBf%%s2ww.BF  $ $R 0 0 0 0 1 1rcjfd||j|||jddS)Nc^|||jD]}||dSr$r&rr+rNr'calc_alls rr|z-TreeLayouter.get_total_size..calc_all> IIaLLLm  B  rr)r]r5)rrer|s @rget_total_sizezTreeLayouter.get_total_sizesL      di   {{3 1a000rcfd||j|||j|||||j|||jdS)Nc^|||jD]}||dSr$rzr{s rr|z%TreeLayouter.render..calc_allr}r)r]r5 do_renderdo_render_lines)rr+r3r4r|s @rr)zTreeLayouter.renders      DI Aty!Q''' q$)$$$ Q *****rc>|jrU|jrM|jd}||||jddD]}||||}n |jD]}||||jD]}|||dS)Nrr )rrstroke_line_from_noder)rr+rNprevr's rrzTreeLayouter.do_render_liness   3} }Q'**1d333-+B..q"555DDm 3 3))!T2222- ( (B  B ' ' ' ' ( (rcp|||jD]}|||dSr$)r)rr)rr+rNr's rrzTreeLayouter.do_rendersC A- " "B NN1b ! ! ! ! " "rN)rr) r6r7r8rr5rbrtr~r)rrr.rrrYrYjs 6 7 7 7111 111+++ ( ( ("""""rrYc(t|dddS)NFT)falsetrue)eval)r!s r decode_jsonrs uT22 3 33rcft|tus|dvrdS|}t||||}|S)N)depends_on_map_bits)typedictr )rrroperrNs r process_noders@ Dzz)@!@!@t D FD$ - -D Krct|||}|sdSt|D]\}}t|tur.t |||}|r|j|Jt|turA|dkrwd}d|_|D]k}t |d|}|jr'|jd}|j|| dddd||_ |r||_ |}l|dkr]t||||} |j| |D],}t| |}| j|-At|||i} |j| |D]2}t | |d z|}|r| j|3|S) NrCTrLrg?r<r table_dependenciesz item)rrJrrrtree_from_jsonrrrrpreviousnextr rS) rrjsonrNkeyrMr'riteminterms rrrs d + +D t4::<<((33 U ;;$  c511B ) $$R((( %[[D g~~$(!! " "D'fd;;B{1[^ ,,R000%%c3Q777"*BK+(* !HH***!$S%88 $$V,,,!//D(66BO**2..../"$S"55 $$V,,,!33D'G TBBB3..r222 Krcd}t|}t|}|t|}t t jdd}t|}d\} } t t j| |dzz| |dzz}t|}|d|rt j |} nd} | r| t j kr| t| } | t j|| ||n+|ddd|||dd||||| |dzz| |dzzfS) Nr\ d)r r r)rrPr%rYrcairoCAIRO_FORMAT_ARGB32r set_font_sizefrom_pngstatusCAIRO_STATUS_SUCCESSsaver set_extendCAIRO_EXTEND_REPEAT set_sourcepaintrestoreset_source_rgbr5r) write_to_png) json_textbackground_imagepng_filerrtreer5imgrerjrkbgimagepats rrender_json_datarsG y ! !D   DLLNNN $  F u0"c : :C #,,C DAq u0!GAI+q{ K KC #,,Cb'(899 7>>##u'AAA  g u0111 s   1Qq!!! KKQKKX WQY;'!) ##r__main__r z.png)r cairo_utilsrrrrrrr r r:r@rPrSrYrrrrr6sysargvfopenreadr.rrrs, 6666666666QQQQQQQQQQQQ!!!!!x!!!F#####8### '''''8''',:::::<::: HHHHHhHHH["["["["["["["["~444 $$$N $ $ $D zJJJ  ATT!WW\\^^T1V844444r