Warning: session_start(): Session cannot be started after headers have already been sent in /home/tvrreohg/public_html/manga.php on line 13
3 0øªj^½ã@sZdZddlmZddlmZmZddlZddlZddlZddl m Z ddl m Z m Z ddlmZmZmZd d l mZmZmZd d lmZmZmZd d lmZmZd d lmZd dlmZd5Z eddddddgƒZ!Gdd„dƒZ"dd„Z#d d!„Z$d6d#d$„Z%d%d&„Z&Gd'd(„d(e'ƒZ(Gd)d*„d*e(ƒZ)Gd+d,„d,e(ƒZ*d7d-d.„Z+d/d0„Z,d8d1d2„Z-d9d3d4„Z.dS):uÞ weasyprint.css -------------- This module takes care of steps 3 and 4 of “CSS 2.1 processing modelâ€�: Retrieve stylesheets associated with a document and annotate every element with a value for every CSS property. http://www.w3.org/TR/CSS21/intro.html#processing-model This module does this in more than two steps. The :func:`get_all_computed_styles` function does everything, but it is itsef based on other functions in this module. é)Ú namedtuple)ÚDEBUGÚWARNINGNé)ÚCSS)ÚLOGGERÚPROGRESS_LOGGER)ÚURLFetchingErrorÚget_url_attributeÚurl_joiné)Úcomputed_valuesÚcountersÚ media_queries)Ú INHERITEDÚINITIAL_NOT_COMPUTEDÚINITIAL_VALUES)Úget_urlÚremove_whitespace)Úpreprocess_declarations)Úpreprocess_descriptorsÚbeforeÚafterÚmarkerú first-lineú first-letterú footnote-callúfootnote-markerÚPageTypeÚsideÚblankÚfirstÚindexÚnamec@sPeZdZdZdd„Zddd„Zddd„Zd d „Zd d „Zd d„Z e dd„ƒZ dS)ÚStyleForz?Convenience function to get the computed styles for an element.c Csêi|_}i|_||_tjdƒxŽt|j||jƒD]z\}}|\}} } |j|dfiƒ} xVt | | ƒD]H\} } }t d|ƒ}||f}| j | dƒd}|dksœ||kr`| |f| | <q`Wq2Wxè|j j ƒD]Ú}x¦|D]ž\}}}x’|jj|ƒD]‚}|\}}}} |pô|}|j|j|fiƒ} xV| D]N\} } }t ||ƒ}||f}| j | dƒd}|dk�sN||k�r| |f| | <�qWqÞWqÆW|j�rx|jjnd}|j|j|j||j|d�q¼Wx@|D]8\}}|�r t|tƒ �r |j|||j||j|d��q W|jjƒdS)NzStep 3 - Applying CSSÚauthorr )ÚrootÚparentÚbase_urlÚtarget_collector)Ú pseudo_typer&r'r(r))NN)NN)Ú_cascaded_stylesÚ_computed_stylesÚ_sheetsrÚinfoÚfind_style_attributesÚ etree_elementr(Ú setdefaultrÚdeclaration_precedenceÚgetÚwrapper_elementZ iter_subtreeÚmatcherÚmatchr'Úset_computed_stylesÚ isinstancerÚclear)ÚselfÚhtmlÚsheetsÚpresentational_hintsr)Úcascaded_stylesÚ specificityÚ attributesÚelementÚ declarationsr(Ústyler#ÚvaluesÚ importanceÚ precedenceÚweightÚ old_weightÚsheetÚoriginÚsheet_specificityÚselectorÚorderr*r'©rNú=/tmp/pip-build-_d5lkt3n/weasyprint/weasyprint/css/__init__.pyÚ__init__,sN        zStyleFor.__init__NcCsž|jj||fƒ}|ršd|dkrJ|ddkrJxdD]}tj|d |›�<q2Wt|dƒd krš|dd jd ƒrš|dd d kršxdD]}tj|d|›�<q‚W|S)NÚtableÚdisplayZborder_collapseZcollapseÚtopÚbottomÚleftÚrightZpadding_r rztable-z table-captionZmargin_)rSrTrUrV)rSrTrUrV)r,r3r Z ZERO_PIXELSÚlenÚ startswith)r:rAr*rCrrNrNrOÚ__call__zs    zStyleFor.__call__cCsè|jƒ}|jƒ}||kr>|dkr>|dks,t‚d} dtdi} n$|dk sJt‚||df} ||df} |j||fiƒ} t|| | || ||ƒ|||f<|dkräxLd D].} |j|| fiƒ} d| krœd| ddkrœPqœW|df|krä||df=dS) a!Set the computed values of styles to ``element``. Take the properties left by ``apply_style_rule`` on an element or pseudo-element and assign computed values with respect to the cascade, declaration priority (ie. ``!important``) and selector specificity. NZ font_sizerrrRz list-itemrr)Nrr)Úget_cascaded_stylesÚget_computed_stylesÚAssertionErrorrr3Úcomputed_from_cascaded)r:rAr'r&r*r(r)r>Zcomputed_stylesÚ parent_styleÚ root_styleÚcascadedZpseudoZ pseudo_stylerNrNrOr7Œs*        zStyleFor.set_computed_stylescCsÀxº|jD]°\}}}x¤|jD]š\}}}xŽ|D]†}|\} } } |j| |ƒr*|pJ| } |jj|| fiƒ} xP|D]H\} }}t||ƒ}|| f}| j| dƒd}|dks ||krd||f| | <qdWq*WqWqWdS)Nr )NN)r-Ú page_rulesÚ_page_type_matchr+r1r2r3)r:Ú page_typerIrJrKZ_ruleÚ selector_listrBrLr?r*Úselector_page_typerCr#rDrErFrGrHrNrNrOÚadd_page_declarationsµs    zStyleFor.add_page_declarationscCs|jS)N)r+)r:rNrNrOrZÆszStyleFor.get_cascaded_stylescCs|jS)N)r,)r:rNrNrOr[ÉszStyleFor.get_computed_stylescCs˜|jd|jfkrdS|jd|jfkr(dS|jd|jfkrûsz$find_stylesheets..ú,)Ústringr(Ú url_fetcherrÚ font_configÚ counter_styleraÚhrefZ stylesheetZ alternateNT)ÚurlrƒZ_check_mime_typerr„r…raz#Failed to load stylesheet at %s: %s)r;rwZ query_allr0r3Úsplitr}rÚevaluate_media_queryÚtagrvrr r rÚerror)r4Údevice_media_typerƒr(r„r…rarwÚwrapperrAZ mime_typeZ media_attrr{rtÚcssr†ÚexcrNrNrOÚfind_stylesheetsësB      r�Fc#sº ‡fdd„}� x¦|jƒD� ]˜}df}|jdƒ}|r@||||ƒfV|sFqdg}|jdk�rJxjdlD]b\}}d }x@d|›�|›d�fD](} |j| ƒr~d|›d|j| ƒ›d�}Pq~W|r\||||ƒfVq\W|jdƒ�rðd|jdƒ›d�}||||ƒfV|jdƒ�rd|jdƒ›�}||||ƒfV|jdƒ� r²d|jdƒ›�}||||ƒfVq|jdk�rh|||dƒfVq|jdk�rÂ|jddƒjƒ} | dk�r |||dƒfVn | dmk� r²|||d | ›�ƒfVq|jd!k�rö|jd"ƒ�rö|||d|jd"ƒ›�ƒfV|jd#ƒ�r|||d$|jd#ƒ›�ƒfV|jd%ƒ� r²|jd%ƒjƒ} | jd&ƒ} | jd'ƒ} | �sX| �rh| dd …jƒ} y t| ƒ} Wn"tk �r–tj d(| ƒYn^Xd)d*d+d,d-d.d/d0œ}| �r¼| d17} n| �rÊ| d18} t dt d2| ƒƒ} |||d3|| ›�ƒfVq|jd4k�rd|jd5ƒ�r,|||d6|jd5ƒ›d�ƒfV|jd7ƒ�rž|jd7ƒ}|j ƒ�rT|d7}xH|jƒD]<}|jdnk�r^|||d:|›d;|›d<|›d=|›d>� ƒfV�q^W|jd?ƒ�râ|jd?ƒ}|j ƒ�rÆ|d7}|||d@|›dA|›�ƒfV|jdBƒ�r&|jdBƒ}|j ƒ�r |d7}|||dC|›dD|›�ƒfV|jd ƒ�rjdE|jd ƒ›�}|jd ƒj ƒ�rZ|d7}||||ƒfV|jdƒ�r®dF|jdƒ›�}|jdƒj ƒ�rž|d7}||||ƒfV|jdƒ�rÜd|jdƒ›d�}||||ƒfV|jdƒ�rd|jdƒ›�}||||ƒfV|jdGƒ�r4dH|jdGƒ›�}||||ƒfV|jdIƒ� r²dJ|jdIƒ›d�}||||ƒfVq|jdok�r¸|jddƒjƒ} | dk�rœ|||dƒfVn | dpk�r¼|||d | ›�ƒfV|jdƒ�rêd|jdƒ›d�}||||ƒfV|jdƒ�rd|jdƒ›�}||||ƒfV|jdqk� r²|jdƒ�rfdF|jdƒ›�}|jdƒj ƒ�rV|d7}||||ƒfV|jdrk� r²|jd ƒ� r²dE|jd ƒ›�}|jd ƒj ƒ�r¦|d7}||||ƒfVq|jdOk�r|jddƒjƒ} | dk�rð|||dƒfVn | dsk� r²|||d | ›�ƒfVq|jdPk�rd|jd ƒ� r²dE|jd ƒ›�}|jd ƒj ƒ�rR|d7}||||ƒfVq|jdQk�r¨d} |jd%ƒ�r¶yt|jd%ƒƒ} Wn"tk �r´tj d(| ƒYnX|jd"ƒ|jdRƒfdtk�rø| dk�r:|||dJ| dS›d�ƒfVnB| dk�r|||dTƒfVn&| dk�r:|||dF| dS›d�ƒfV|jd ƒ�r~dE|jd ƒ›�}|jd ƒj ƒ�rn|d7}||||ƒfV|jd"ƒ� r²|||d|jd"ƒ›�ƒfVq|jduk� rH|jdYk�sÖ|jd[dƒjƒd\k� r²|jddƒjƒ} | dvk� r|||d]ƒfV|jd?ƒ� rD|jd?ƒ}|j ƒ� r(|d7}|||d@|›dA|›�ƒfV|jdBƒ� rˆ|jdBƒ}|j ƒ� rl|d7}|||dC|›dD|›�ƒfV|jd ƒ� rÌdE|jd ƒ›�}|jd ƒj ƒ� r¼|d7}||||ƒfV|jdƒ� rdF|jdƒ›�}|jdƒj ƒ� r|d7}||||ƒfV|jdwk� r²|jdIƒ� r²|||dJ|jdIƒ›d^�ƒfVq|jd_k� r€|jd`ƒ� r²|||da|jd`ƒ›db�ƒfVq|jdckr|jddƒr|||da|jddƒ›de�ƒfVqWd S)xaYield ``specificity, (element, declaration, base_url)`` rules. Rules from "style" attribute are returned with specificity ``(1, 0, 0)``. If ``presentational_hints`` is ``True``, rules from presentational hints are returned with specificity ``(0, 0, 0)``. cstj|ƒ}||ˆfS)N)Útinycss2Úparse_declaration_list)rAÚstyle_attributerB)r(rNrOÚcheck_style_attribute%s z4find_style_attributes..check_style_attributer rrCÚbodyÚheightrSrTÚwidthrUrVNÚmarginzmargin-ú:ZpxZ backgroundzbackground-image:url(ú)Zbgcolorzbackground-color:rpzcolor:Úcenterztext-align:centerÚdivÚalignroÚmiddleÚjustifyz text-align:ÚfontÚcolorÚfacez font-family:Úsizeú+ú-zInvalid value for size: %szx-smallÚsmallZmediumZlargezx-largezxx-largeZ48px)r rééééér§r«z font-size:rQZ cellspacingzborder-spacing:Ú cellpaddingÚtdÚthz padding-left:z;padding-right:z ;padding-top:z;padding-bottom:rzÚhspacez margin-left:z;margin-right:Úvspacez margin-top:z;margin-bottom:zwidth:zheight:Z bordercolorz border-color:Zborderz border-width:ÚtrÚtheadÚtbodyÚtfootÚcaptionÚcolÚhrÚnoshaderzborder-bottom-width:0ÚiframeÚappletÚembedÚimgÚinputÚobjectryÚimagezvertical-align:middlezpx;border-style:solidÚolÚstartzcounter-reset:list-item z;counter-increment:list-item -1ÚliÚvaluez;counter-increment:none)r rr)rrr©r–rS©r–rT©r—rU©r—rV)rÄrÅrÆrÇ)r›rUrVrŸ)r­r®)r±r­r®r²r³r´)r›rUrVrŸ)r±r­r®)r­r®)r›rUrVrŸ)NN)r¹rºr»r¼r½r¾)ržr›)r¼r¾r½) Úiterr3rŠÚlowerr}rXÚintÚ ValueErrorrÚwarningÚmaxÚminÚisdigit)Útreer=r(r”rAr?r“ÚpartÚpositionÚpropr�r£Z relative_plusZrelative_minusZ font_sizesr¬Ú subelementr¯r°rN)r(rOr/sì                             *                                                             r/cCsP|dkr dS|dkr| rdS|dkr0| r0dS|dkrQsz#Style.variables..)Úitems)r:rNrNrOÚ variablesOszStyle.variablesN)rjrkrlÚpropertyrÛrNrNrNrOrÖNsrÖc@s(eZdZdZdd„Zdd„Zdd„ZdS) ÚAnonymousStylez(Computed style used for anonymous boxes.cCs6|jddddddœƒ||_||_|r2|j|jƒdS)Nr)Zborder_top_widthZborder_bottom_widthZborder_left_widthZborder_right_widthZ outline_width)Úupdater^Ú specifiedrÛ)r:r^rNrNrOrPXs zAnonymousStyle.__init__cCst|jƒ}|j|ƒ|S)N)rÝr^rÞ)r:ÚcopyrNrNrOràhs  zAnonymousStyle.copycCsN|tks|jdƒr"|j|||<n$|dkr:|j|||<n t|||<||S)Nr×Úpage)rrXr^r)r:rØrNrNrOÚ __missing__ms  zAnonymousStyle.__missing__N)rjrkrlrmrPràrârNrNrNrOrÝVsrÝc@s(eZdZdZdd„Zdd„Zdd„ZdS) Ú ComputedStylez,Computed style used for non-anonymous boxes.cCs`i|_||_||_|dk|_||_||_||_||_|rD|j|j ƒ|jdd„|j ƒDƒƒdS)NcSs$i|]\}}|jdƒr|d|“qS)r×r)rX)r~rØrÃrNrNrOrÙ†sz*ComputedStyle.__init__..) rßr^r`Zis_root_elementrAr*r_r(rÞrÛrÚ)r:r^r`rAr*r_r(rNrNrOrPzs   zComputedStyle.__init__cCs8t|j|j|j|j|j|jƒ}|j|ƒ|jj ƒ|_|S)N) rãr^r`rAr*r_r(rÞrßrà)r:ràrNrNrOràŠs    zComputedStyle.copyc Cs”|dkr|dn|dkr"|d||jkr@|j|d}}n|tkrLdnd}|dkrf|jdkrfd}|dkrˆt|}|tkr¢|||<n|dkr¢|j|||<}|dkrÒ|dkrÒ|jdkrÀd n|jd|d<}|d krä||j|<||krô||Stjj}||ƒ}d }|�rjd }t |t ƒ�s(d }|g}x4t |ƒD](\}} tj | |||j |jƒ\||<}�q2W|�rj|\}|dk �rˆ| �rˆ||||ƒ}|||<|S) NÚfloatrÒrRrZinheritÚinitialráÚautoroFT)rÒrärR)r`rr^rrrßr ZCOMPUTER_FUNCTIONSr3r8ÚlistÚ enumerateZcompute_variabler() r:rØrÃÚkeywordÚgetterÚfunctionZalready_computed_valueZconverted_to_listÚiÚvrNrNrOrâ’sL        zComputedStyle.__missing__N)rjrkrlrmrPràrârNrNrNrOrãxsrãcCs>| r|dk rt|ƒSt||||||ƒ}|r:|j|dƒ|S)zCGet a dict of computed style mixed from parent and cascaded styles.NÚanchor)rÝrãZcollect_anchor)rAr`r^r*r_r(r)rCrNrNrOr]Ösr]c CsÂtt|jƒƒ}g}|s8|jddddddddgdœƒ|S�x‚|�r¼ddddddddgdœ}|djdkrˆ|jdƒ}|j|d<d|dd<t|ƒdkr˜dS|sª|j|ƒ|S�x|�r®|jdƒ}|jdkrÌdS|jd k�r†|sàdS|djdk�rr|jdƒ}|j}|dk�rF|d �r&|d |k�r&dS||d <|dd d7<q®n(|dk�r‚d||<|ddd7<q®�n|djdk�r‚|jdƒ}|j dk�rœdSx\t |j ƒD]D\} } | jdk�r¨| jdk�r¨|j d| d…} |j | d…} P�q¨W|j } d} t j j| ƒ} | dk�rdS| dk �r^dd„| Dƒ} t| ƒdk�r>dS| \} | jdk�rTdS| j} dS| | f˜|d<|ddd7<q®dS|jdkr®|�r¨t|dƒ�r¨Pq®dSq®W|j|ƒq.r"r�)rUrV)r r!)rçrÚpreluderrryÚpoprÃrWZ lower_valuer#rèÚ argumentsr‘rñZ parse_nthÚany)ÚruleÚtokensZ page_dataÚtypesrôrðrïZ pseudo_classrërìZargumentrñriZ nth_valuesrNrNrOÚparse_page_selectorsäs�                    rüc #CsX�xP|D�]F} t| ddƒdkr4| jdks| jdkr4q| jdk�rtt|tj| jƒƒƒ} | �rt} ynt j | j ƒ} xX| D]P}|j || ƒ|j tkrt|j jdƒr²t} t jd|j ›�ƒ‚qtt jd|j ›�ƒ‚qtWd } Wn@t jk �r}z tj| d tj| j ƒ|ƒwWYdd}~XnXnd } q| jdk�r|| jdk�r|| �rTtjd tj| j ƒ| j| jƒqt| j ƒ}d}|�rÌ|d jd k�ršt||d jdd| j| jfd�}n2t|d |ƒ}|�rÌ|dd dk�rÌ|dd}|dk�rØqtj|dd…ƒ}|dk�rtjdtj| j ƒ| j| jƒqtj||ƒ�s"q|dk �rPyt|||||||d�Wn2t k �rx}ztj!d||ƒWYdd}~XnXq| jdk�r| jdk�rtj| j ƒ}|dk�rÈtjdtj| j ƒ| j| jƒqd } tj||ƒ�sÜqtj"| jƒ}t#|||||||||d d� q| jdk�r | jdk�r t$| ƒ}|dk�rNtjdtj| j ƒ| j| jƒqd } xÊ|D]Â}|j%dƒ}t&f|Ž}tj| jƒ}tt||ƒƒ} | �r¬|d|fg}|j'| || fƒxj|D]b}|jdk�s²|jdk�rÒ�q²tt|tj|jƒƒƒ} | �r²|d|j›�|fg}|j'||| fƒ�q²W�qXWq| jdk�r¸| jdk�r¸d } tj| jƒ}t(t)d||ƒƒ}x\d2D].}||k�r^tjd |j*d!dƒ| j| jƒP�q^W|dk �rP|j+||ƒ}|�rP|j'|ƒq| jdkr| jd"krt,j-| j |ƒ}|dk�rtjd#tj| j ƒ| j| jƒqd } tj| jƒ}dddddddddd$œ }t(t)d"||ƒƒ}x|j.ƒD]\} }!|!|| <�qDW|d%dk�rnd3}"n|d%}"|"d dk�rH|"dd4k�rÈt/|d)�p gƒdk�rHtjd*|| j| j|"dƒqn€|"dd5k�r t/|d)�pägƒd-k�rHtjd.|| j| j|"dƒqn<|"dd/k�rHt/|d0�p(gƒd-k�rHtjd1|| j| jƒq|||<qWdS)6zZDo the work that can be done early on stylesheet, before they are in a document. rtNzat-ruleÚimportzqualified-ruler¥z!ignored prefixed pseudo-element: zunknown pseudo-element: Tz(Invalid or unsupported selector '%s', %szP@import rule %r not at the beginning of the the whole rule was ignored at %d:%d.rr‚Fz@import at %s:%s)Zallow_relativeÚcontextZ context_argsr ZexternalzBInvalid media type %r the whole @import rule was ignored at %d:%d.)r‡rƒrr„r…r5raz$Failed to load stylesheet at %s : %sr{zAInvalid media type %r the whole @media rule was ignored at %d:%d.)Úignore_importsrázIUnsupported @page selector %r, the whole @page rule was ignored at %d:%d.r?ú@z font-faceÚsrcÚ font_familyz3Missing %s descriptor in '@font-face' rule at %d:%dÚ_z counter-stylezRInvalid counter style name %r, the whole @counter-style rule was ignored at %d:%d.) ÚsystemÚnegativeÚprefixÚsuffixÚrangeÚpadÚfallbackÚsymbolsÚadditive_symbolsrÚsymbolicÚcyclicÚfixedr zHIn counter style %r at %d:%d, counter style %r needs at least one symbolÚ alphabeticÚnumericrzIIn counter style %r at %d:%d, counter style %r needs at least two symbolsZadditiver zZIn counter style %r at %d:%d, counter style "additive" needs at least two additive symbols)rr)Nr N)rrr )rr)0ÚgetattrryZlower_at_keywordrçrr‘r’rtrÚ cssselect2Zcompile_selector_listrõZ add_selectorZpseudo_elementÚPSEUDO_ELEMENTSrXrÚ SelectorErrorrÚlogÚ serializerÌZ source_lineZ source_columnrr rÃrrZparse_media_queryr‰rr r‹Zparse_rule_listÚpreprocess_stylesheetrürörrrÚdictrÚreplaceZ add_font_facerZparse_counter_style_namerÚrW)#rŒr(Zstylesheet_rulesrƒr5raZfontsr„r…rÿrùrBZ logger_levelÚ selectorsrLr�rúr‡Z url_tupler{Z content_rulesÚdatarcr?rtrdZ margin_ruleZrule_descriptorsrØZ font_filenamer#ÚcounterZdescriptor_nameZdescriptor_valuerrNrNrOr[sj                                                      rc Csúg}|dkrtjƒ}x.|jƒD]"}x|jƒD]\} } | || <q,WqWx$|jƒpPgD]} |j| ddfƒqRW|r”x$|jƒpzgD]} |j| ddfƒq|Wx4t|j|j |j |j |||ƒD]} |j| ddfƒq²Wx |pÒgD]} |j| ddfƒqÔWt ||||ƒS)a Compute all the computed styles of all elements in ``html`` document. Do everything from finding author stylesheets to parsing and applying them. Return a ``style_for`` function that takes an element and an optional pseudo-element type, and return a style dict object. Nz user agentr%rrÕ)rrr) rZ CounterStyleZ_ua_counter_stylerÚZ_ua_stylesheetsrrZ_ph_stylesheetsr�r4rrƒr(r$) r;Zuser_stylesheetsr=r„r…rar)r<rCrØrÃrIrNrNrOÚget_all_computed_styles<s$  r)Nrrrrrrr)FN)NNNN)F)NFNNNN)/rmÚ collectionsrÚloggingrrrr‘Z tinycss2.nthrorÚloggerrrÚurlsr r r r rrZ propertiesrrrÚutilsrrZ validationrZvalidation.descriptorsrrrr$rvr�r/r2rrÖrÝrãr]rürrrNrNrNrOÚsJ    9 0 "^ y `