@Qc@s-ddlZddlmZmZmZmZmZdefdYZdefdYZ defdYZ d efd YZ d Z d Z dd ZdZdddZdZdZdddYZdefdYZdefdYZdefdYZdS(iN(tceiltfloortfabstatantpitSurfacecBs#eZdZdZdZRS(cCstj|jdS(N(tcairotcairo_surface_destroyts(tself((s..\modules\cairo_utils.pyt__del__scCstj|jS(N(Rtcairo_surface_statusR(R ((s..\modules\cairo_utils.pytstatusscCstj|j|dS(N(Rtcairo_surface_write_to_pngR(R tfile((s..\modules\cairo_utils.pyt write_to_pngs(t__name__t __module__R R R(((s..\modules\cairo_utils.pyRs  t ImageSurfacecBsAeZejddddZdZdZedZ RS(cCs;tj||r||_ntj||||_dS(N(Rt__init__RRtcairo_image_surface_create(R tformattwidththeighttsurfobj((s..\modules\cairo_utils.pyR"s  cCstj|jS(N(Rtcairo_image_surface_get_widthR(R ((s..\modules\cairo_utils.pyt get_width)scCstj|jS(N(Rtcairo_image_surface_get_heightR(R ((s..\modules\cairo_utils.pyt get_height,scCstdtj|S(NR(RRt#cairo_image_surface_create_from_png(R tpng((s..\modules\cairo_utils.pytfrom_png0sN( RRRtCAIRO_FORMAT_ARGB32tNoneRRRt classmethodR(((s..\modules\cairo_utils.pyR!s  tContextcBseZdZdZdZdZdZdZdZdZ dZ d Z d Z d Z d Zd ZdZdZdZdZdZdZdZdZdZdZdZdZddZdZdZdZ RS(cCsFt|tr0tj|j|_t|_n||_t|_dS(N( t isinstanceRRt cairo_createRtcrtTruet_ownedtFalse(R targ((s..\modules\cairo_utils.pyR6s   cCs |jrtj|jndS(N(R(Rt cairo_destroyR&(R ((s..\modules\cairo_utils.pyR >s cCstj|jdS(N(Rtcairo_new_pathR&(R ((s..\modules\cairo_utils.pytnew_pathBscCstj|jdS(N(Rtcairo_close_pathR&(R ((s..\modules\cairo_utils.pyt close_pathEscCstj|j||dS(N(Rt cairo_move_toR&(R txty((s..\modules\cairo_utils.pytmove_toHscCstj|j||dS(N(Rtcairo_rel_move_toR&(R R1R2((s..\modules\cairo_utils.pyt rel_move_toKscCstj|j||dS(N(Rt cairo_line_toR&(R R1R2((s..\modules\cairo_utils.pytline_toNscCs&tj|j||||||dS(N(Rtcairo_curve_toR&(R tx1ty1tx2ty2tx3ty3((s..\modules\cairo_utils.pytcurve_toQscCs#tj|j|||||dS(N(Rt cairo_arcR&(R txctyctrta1ta2((s..\modules\cairo_utils.pytarcTscCs#tj|j|||||dS(N(Rtcairo_arc_negativeR&(R RARBRCRDRE((s..\modules\cairo_utils.pyt arc_negativeWscCstj|j||dS(N(Rtcairo_translateR&(R R1R2((s..\modules\cairo_utils.pyt translateZscCstj|j|dS(N(Rt cairo_rotateR&(R td((s..\modules\cairo_utils.pytrotate]scCstj|jdS(N(Rt cairo_fillR&(R ((s..\modules\cairo_utils.pytfill`scCstj|jdS(N(Rt cairo_paintR&(R ((s..\modules\cairo_utils.pytpaintcscCs tj|j||||dS(N(Rtcairo_rectangleR&(R R1R2twth((s..\modules\cairo_utils.pyt rectanglefscCstj|jdS(N(Rt cairo_saveR&(R ((s..\modules\cairo_utils.pytsaveiscCstj|jdS(N(Rt cairo_restoreR&(R ((s..\modules\cairo_utils.pytrestorelscCstj|j||dS(N(Rtcairo_set_dashR&(R tdashestoffset((s..\modules\cairo_utils.pytset_dashoscCstj|j|dS(N(Rtcairo_set_font_sizeR&(R tsize((s..\modules\cairo_utils.pyt set_font_sizerscCstj|j|dS(N(Rtcairo_set_line_widthR&(R RS((s..\modules\cairo_utils.pytset_line_widthuscCstj|j|jdS(N(Rtcairo_set_sourceR&tp(R tpat((s..\modules\cairo_utils.pyt set_sourcexscCs tj|j|j||dS(N(Rtcairo_set_source_surfaceR&R(R tsurR1R2((s..\modules\cairo_utils.pytset_source_surface{scCstj|j|||dS(N(Rtcairo_set_source_rgbR&(R RCtgtb((s..\modules\cairo_utils.pytset_source_rgb~scCs tj|j||||dS(N(Rtcairo_set_source_rgbaR&(R RCRkRlta((s..\modules\cairo_utils.pytset_source_rgbascCstj|j|dS(N(Rtcairo_show_textR&(R ttext((s..\modules\cairo_utils.pyt show_textscCs(|j||||j|||||j|||||||||||j||||||j||||||||||||||j|||||j|||||||||||j||||j|||||||dS(N(R3R7R?(R R1R2RSRTRC((s..\modules\cairo_utils.pyt rounded_rects,8,cCs|dkrkd}xV|jdD]B}|j|}t|t|j|j|j|j}q"Wnxi|jdD]X}|j|}|j||t||j|j|j ||||7}q{WdS(Nis ( R!tsplitt text_extentstmaxtintRt y_advancet y_bearingR3Rs(R R1R2Rrtspacingt line_heighttlinetextents((s..\modules\cairo_utils.pytshow_text_lines_ats 4( cCstj|jdS(N(Rt cairo_strokeR&(R ((s..\modules\cairo_utils.pytstrokescCstj|jdS(N(Rtcairo_stroke_preserveR&(R ((s..\modules\cairo_utils.pytstroke_preservescCstj|j|S(N(Rtcairo_text_extentsR&(R Rr((s..\modules\cairo_utils.pyRvsN(!RRRR R-R/R3R5R7R?RFRHRJRMRORQRURWRYR]R`RbRfRiRmRpRsRtR!RRRRv(((s..\modules\cairo_utils.pyR#5s<                           tPatterncBs#eZdZdZdZRS(cCstj|j|_dS(N(Rt cairo_pattern_create_for_surfaceRRd(R tsurface((s..\modules\cairo_utils.pyRscCstj|jdS(N(Rtcairo_pattern_destroyRd(R ((s..\modules\cairo_utils.pyR scCstj|j|dS(N(Rtcairo_pattern_set_extendRd(R tmode((s..\modules\cairo_utils.pyt set_extends(RRRR R(((s..\modules\cairo_utils.pyRs  cCs|j|}|j|j||j|d|jd|d|j|jd|j|j|jd|j|j |j ||jd||j|j|j|j |dS(Nii( RvRWRmRURt x_bearingRRzRORYR3Rs(tcR1R2Rrtbgtext((s..\modules\cairo_utils.pyt"show_centered_text_with_backgrounds  L  0cCs|j|jdddd|j|d||j||j|d||j||j||d|j||j||d|j||j|j|||j|dS(Ni(RWRpR3RsRY(RR1R2Rr((s..\modules\cairo_utils.pytshow_text_with_borders      cCs|dkrkd}xV|jdD]B}|j|}t|t|j|j|j|j}q"Wnxa|jdD]P}|j|}t||d|||j|jd||||7}q{WdS(Nis g?( R!RuRvRwRxRRyRzR(RR1R2RrR{R|R}R~((s..\modules\cairo_utils.pytshow_text_lines_with_borders 4-cCs||krd}n|d|dkrH|d|dkrAdSdSn|d|dkrdt|d|d|d|ddt}nLdt|d|d|d|ddt}|t|dd}|S(NiiigV@gf@gp@ih(RRR(tp1tp2tangle((s..\modules\cairo_utils.pyt angle_of_lines  74i icCs|jt||}|jt|ddt|dd|j| td|jdd|j|||j|jdd|j|| |j|j dS(Nig?ii( RWRRJRxRMRR3R7RRY(RRdtpstlRSRo((s..\modules\cairo_utils.pytdraw_arrow_heads ,  cCs6t|d|ddt|d|ddfS(Niii(Rx(RR((s..\modules\cairo_utils.pyt line_centersc Cs|\}}|\}}|\}} |\} } ||} ||} | | }| |}| ||| }t|dkrdS||||}|| | | }t| ||||d}t||| ||d}tt|||kr|tt||krtt|||kr|tt||krtt| ||kr|tt| |krtt| | |kr|tt| | kr||fSdS(Ng-q=g?(RR!RtminRRw(tp1stp1etp2stp2ete1xte1yts1xts1yte2xte2yts2xts2yRDtb1REtb2RLtc1tc2R1R2((s..\modules\cairo_utils.pytintersect_liness*          6666 tNodecBseZdZdZdZdZdZdZddZddZ d Z d Z d Z d Z d ZdZdZRS(cCs:d|_d|_d|_d|_d|_d|_dS( Niii(ii(ii(iiii(iiii(iiii(tposR_tcolort fill_colort line_widthtpadding(R ((s..\modules\cairo_utils.pyRs      cCsL|j\}}|j\}}t||ddt||ddfS(Nig?(RR_Rx(R R1R2RSRT((s..\modules\cairo_utils.pytcenter%scCs8|j\}}|j\}}||f|||ffS(N(RR_(R R1R2RSRT((s..\modules\cairo_utils.pyt top_vertex*scCs@|j\}}|j\}}|||f||||ffS(N(RR_(R R1R2RSRT((s..\modules\cairo_utils.pyt bottom_vertex/scCs@|j\}}|j\}}|||f||||ffS(N(RR_(R R1R2RSRT((s..\modules\cairo_utils.pyt right_vertex4scCs8|j\}}|j\}}||f|||ffS(N(RR_(R R1R2RSRT((s..\modules\cairo_utils.pyt left_vertex9sg?cCs||||f|_dS(N(R(R RCRkRlRo((s..\modules\cairo_utils.pyt set_color?scCs||||f|_dS(N(R(R RCRkRlRo((s..\modules\cairo_utils.pytset_fill_colorBscCs$|j|j|j|jdS(N(RpRRbR(R R((s..\modules\cairo_utils.pytapply_attributesEscCs+|j||j||j|dS(N(tcalcRt do_render(R tctx((s..\modules\cairo_utils.pytrenderIs  cCs|j\}}|jdddd|j|dd|dd|j|dd|dd|j|jdddd|j|dd|dd|j|dd|dd|j|j\}}|jdddd|j|dd|dd|j|dd|dd|j|j\}}|jdddd|j|dd|dd|j|dd|dd|jdS(Nig?g?ig?g?g@(RRpR3R7RRR(R RRR((s..\modules\cairo_utils.pyt render_shadowNs&           cCs*|r|j||S|j||SdS(N(tstroke_line_to_parent_vtstroke_line_to_parent_h(R Rtparenttvertical((s..\modules\cairo_utils.pytstroke_line_to_parentfscCs|r|jd|jdddd|j}|j}t|}t|}|r|r|j|dd|dd|j|dd|dd|jt|||n||fSdS(Nig333333?ig?( RbRpRRRR3R7RR(R RRtv1tv2RR((s..\modules\cairo_utils.pyRms         cCs|r|jd|jdddd|j}|j}t|}t|}|r|r|j|dd|dd|j|dd|dd|jt|||n||fSdS(Nig333333?ig?( RbRpRRRR3R7RR(R RRRRRR((s..\modules\cairo_utils.pyR}s         c Cs}|ry|jd|jdddd|j\}}|j\}}t||t||kr||kr|j}|j}q|j}|j}n?||kr|j}|j}n|j}|j}t|} t|} | ro| ro|j | dd| dd|j | dd| dd|j t || | n| | fSdS(Nig333333?iig?( RbRpRtabsRRRRRR3R7RR( R RtnodetsxtsytnxtnyRRRR((s..\modules\cairo_utils.pytstroke_line_from_nodes0               (RRRRRRRRRRRRRRRRR(((s..\modules\cairo_utils.pyRs              tTextNodecBs#eZdZdZdZRS(cCs5tj|||_d|_d|_d|_dS(Niii (RRRrt line_spacingR|t font_size(R Rr((s..\modules\cairo_utils.pyRs     c Cs|j|j|jd|jkr|jjd}d\}}d}xi|D]a}|j|}t|t|j|j }t|t|j |j |j |j }qTW||_ |t||jt|d}|j\}} } } || | ||| f|_n|j|j}||_|j\}} } } t|j |j |j |j |_ t|j|j | | |j || f|_|jdS(Ns ii(ii(RWR`RRrRuRvRwRxRt x_advanceRRyRzR|tlenRRR_t_extentsRY( R RtlinesRSRTtlhR}RttRCRlR((s..\modules\cairo_utils.pyRs(   1 %" '2c Cs|j|j|j\}}}}|j\}}|j\}} |jt||dt||d|j|j|j |j dS(Ng?( R`RRRR_RRxRrRR|R( R RRRCRlRR1R2RSRT((s..\modules\cairo_utils.pyRs >(RRRRR(((s..\modules\cairo_utils.pyRs  t TextRectanglecBs,eZdZdZdZdZRS(cCs\tj||d|_d|_dddddddf|_ttttf|_dS(Nig@_@i(RRR!ticont icon_alphat border_colorR't draw_vertices(R Rr((s..\modules\cairo_utils.pyRs   !cCs=tj|}|jtjkr0||_n d|_dS(N(RRR RtCAIRO_STATUS_SUCCESSRR!(R tpathtimage((s..\modules\cairo_utils.pytset_icons cCs^tj|||j\}}|jrB||jjd7}ntd||f|_dS(Nii2(RRR_RRRw(R RRSRT((s..\modules\cairo_utils.pyRs  c Cs|j\}}|j\}}|jrv|j|j|d|d|||j|j|j|jn|jr"|j|j \}}}} |j || |t ||jj d|j |jddt |jdkr|jn|j|j|jn|j|jrU|j |jjddntj|||j|jr|jr|j|j|jttttfkr|j|d|d|||jq|j\}} }}|r3|j|d|d|j|d||d|jn|r|j|d|d||j|d||d||jn| r|j|d|d|j|d|d||jn|r|j|d||d|j|d||d||jqndS(Ng?iiii(RR_RRWRURpRORYRRRJRxRRiRRQtpaint_with_alphaRRRRRR'RR3R7( R RR1R2RSRTRRCRlR((s..\modules\cairo_utils.pyRsX      /            (RRRRRR(((s..\modules\cairo_utils.pyRs   tVBoxNodecBsVeZdZddZddZdZdZdZdZdZ RS( cCstj|g|_dS(N(RRtitems(R ((s..\modules\cairo_utils.pyR!s g?cCs.x'|jD]}|j||||q WdS(N(RR(R RCRkRlRotitem((s..\modules\cairo_utils.pyR&scCs.x'|jD]}|j||||q WdS(N(RR(R RCRkRlRoR((s..\modules\cairo_utils.pyR*scCsc|j\}}d}xG|jD]<}d|f|_||jdf|_||jd7}qWdS(Nii(R_RR(R RSRTR2R((s..\modules\cairo_utils.pytlayout_internal.s cCsd}d}xF|jD];}|j||j\}}t||}||7}qW||f|_d}xG|jD]<}d|f|_||jdf|_||jd7}qtWdS(Nii(RRR_RwR(R RRTRSRtwwthhR2((s..\modules\cairo_utils.pyR6s cCsdS(N((R R((s..\modules\cairo_utils.pyREscCs|jd|jddd|jd}|j}|d|jd|d|jdf|_|j|||\}}||_||fS(Nii(RbRmRRR(R RRRtchRRR((s..\modules\cairo_utils.pyRHs   - cCsq|j||j|j|jd|jdx+|jD] }|j||j|q?W|jdS(Nii(RRWRJRRRRY(R RR((s..\modules\cairo_utils.pyRSs   ( RRRRRRRRRR(((s..\modules\cairo_utils.pyR s       ((RtmathRRRRRtobjectRRR#RRRR!RRRRRRRRR(((s..\modules\cairo_utils.pyts ( u     *J