
    Bh%,                     v    S r SSKrSSKJr  SSKJr  SSKJr  SSKJ	r	  SS	K
Jr   " S
 S\R                  5      rg)zPDF stream.    N   )LOGGER)Matrix)ffi)get_pango_font_key   )Fontc                   $  ^  \ rS rSrSrU 4S jrS r\S 5       rU 4S jr	U 4S jr
SU 4S jjrU 4S	 jrU 4S
 jrSS jrU 4S jrU 4S jrSU 4S jjrSS jrS rS rS rS rS rS rSU 4S jjrU 4S jr\S 5       r\S 5       rS rSrU =r $ ) Stream   z&PDF stream object with extra features.c                   > [         TU ]  " U0 UD6  X l        / U l        Xl        X0l        X@l        XPl        S =U l        U l	        S =U l
        U l        S =U l        U l        S =U l        U l        [!        5       /U l        [$        R&                  " S5      U l        [$        R&                  " S5      U l        [$        R&                  " S5      U l        g )Nzunsigned int *zPangoRectangle *)super__init__page_rectanglemarked_fonts
_resources_images_mark_current_color_current_color_stroke_current_alpha_current_alpha_stroke_current_font_current_font_size	_old_font_old_font_sizer   
_ctm_stackr   newlengthink_rectlogical_rect)	selffontsr   	resourcesimagesmarkargskwargs	__class__s	           G/var/www/html/env/lib/python3.13/site-packages/weasyprint/pdf/stream.pyr   Stream.__init__   s    $)&),#
;??d8;??d87;;T4/33,!8* gg./ 23GG$67    c                    SU;  a  U R                   US'   SU;  a  U R                  US'   SU;  a  U R                  US'   SU;  a  U R                  US'   SU;  a  U R                  US'   SU;  a  U R
                  US'   [        S0 UD6$ )Nr$   r   r%   r&   r'   compress )r   r   r   r   r   r/   r   )r#   r)   s     r+   cloneStream.clone!   s    & "kkF7O6)'+':':F#$f$"&//F;6!#||F8!ZZF6NV#!%F:r-   c                      U R                   S   $ N)r   )r#   s    r+   ctm
Stream.ctm0   s    r""r-   c                 l   > [         TU ]  5         U R                  R                  U R                  5        g N)r   
push_stater   appendr6   r#   r*   s    r+   r:   Stream.push_state4   s$    txx(r-   c                 @  > U R                   (       a.  U R                   S   S:X  a  U R                   R                  5         O[        TU ]  5         S =U l        U l        S =U l        U l        S U l        U R                  R                  5         U R                  (       d   eg )Nr5      q)
streampopr   	pop_stater   r   r   r   r   r   r<   s    r+   rB   Stream.pop_state8   sv    ;;4;;r?d2KKOOG;??d8;??d8!r-   c                 v   > [         TU ]  XX4XV5        [        XX4XV5      U R                  -  U R                  S'   g r4   )r   
set_matrixr   r6   r   )r#   abcdefr*   s          r+   	transformStream.transformC   s4    1q,$Q16Ar-   c                    > U R                   (       a?  U R                   S   S:X  a,  U R                  U l        U R                   R                  5         g [        TU ]  5         g )Nr5   s   ET)r@   r   r   rA   r   
begin_textr<   s    r+   rO   Stream.begin_textG   s>    ;;4;;r?e3!%DKKOOG r-   c                 T   > U R                   S sU l        U l         [        TU ]  5         g r9   )r   r   r   end_textr<   s    r+   rR   Stream.end_textN   s%    -1-?-?**r-   c                 D   UGt p4U R                  XB5        U(       a5  UR                  /UQ7U R                  :X  a  g UR                  /UQ7U l        O4UR                  /UQ7U R                  :X  a  g UR                  /UQ7U l        UR                  S;   a.  U R                  " / UR                  S5      R                  QUP76   g UR                  S;   aD  U R                  SU5        UR                  S5      R                  u  pVnU R                  S X%Xg5        g UR                  S;   aD  U R                  SU5        UR                  S5      R                  u  pVnU R                  S X%Xg5        g [        R                  " SUR                  5        U R                  " / UQUP76   g )	N)srgbhslhwbrU   )zxyz-d65oklaboklchzlab-d65lab)zxyz-d50rZ   lchzlab-d50z,Unsupported color space %s, use sRGB instead)	set_alphaspacer   r   set_color_rgbtocoordinatesset_color_spaceset_color_specialr   warn)r#   colorstrokechannelsalpha	lightnessrF   rG   s           r+   	set_colorStream.set_colorR   sb    u%'h'4+E+EE.3kk-EH-E*'h'4+>+>>',{{&>X&>#;;00E 0 < <EfE[[99  F3#hhuo99OI!""4AA[[55  F3#hhuo99OI!""4AAKKFT11&1r-   c                 X   > X4U R                   :X  a  g X4U l         [        TU ]	  X5        g r9   )r   r   set_font_size)r#   fontsizer*   s      r+   rl   Stream.set_font_sizeo   s-    <4---"\d)r-   c                 |   > S[        U R                  S   5       3nXR                  S   U'   [        TU ]  U5        g )Ns	ExtGState)lenr   r   	set_state)r#   statekeyr*   s      r+   rt   Stream.set_stateu   s<    #dook2345,1$S)#r-   c                   > Uc  U(       + nU(       ac  SU 3nX@R                   :w  aO  X@l         X@R                  S   ;  a(  [        R                  " SU05      U R                  S   U'   [        TU ]  U5        U(       ae  SU 3nX@R                  :w  aP  X@l        X@R                  S   ;  a(  [        R                  " SU05      U R                  S   U'   [        TU ]  U5        g g g )NArr   CArF   ca)r   r   pydyf
Dictionaryr   rt   r   )r#   rg   re   fillrv   r*   s        r+   r\   Stream.set_alphaz   s    <:DeW+C000-0*ook::8=8H8H$PU8WDOOK05!#&eW+C)))&)#ook::8=8H8H$PU8WDOOK05!#&	 * r-   c           	          U R                  XX45      n[        R                  " S[        R                  " SSUR                  5        3US.5      SSS.5      nU R	                  U5        U$ )N
/ExtGStatez/Mask/)TypeSGr   false)r   SMaskr{   AIS)	add_groupr|   r}   
capitalizert   )r#   xywidthheightmodealpha_streamalpha_states           r+   set_alpha_stateStream.set_alpha_state   sq    ~~aE:&& %%*+,!' 
 	(
 	 	{#r-   c                 Z    U R                  [        R                  " SSU 3S.5      5        g )Nr   r   )r   BM)rt   r|   r}   )r#   r   s     r+   set_blend_modeStream.set_blend_mode   s,    u'' dV*)
  	r-   c                     [        U5      u  p#nX R                  ;  a  [        XU5      U R                  U'   U R                  U   U4$ r9   )r   r   r	   )r#   
pango_fontrv   description	font_sizes        r+   add_fontStream.add_font   sD    &8&D#)kk!#JYGDKK{{3**r-   c                 &   [         R                  " [         R                  " 5       [         R                  " 5       [         R                  " 5       [         R                  " 5       U R                  S   S S.5      n[         R                  " SS[         R                  " XX-   X$-   45      U[         R                  " SSSSS	.5      S
.5      nU R	                  XVS9nS[        U R                  S   5       3Ul        XpR                  S   UR                  '   U$ )N
ColorSpacerr   XObjectPatternShadingr   r	   z/XObjectz/Formz/Groupz/Transparencytruez
/DeviceRGB)r   r   ICS)r   SubtypeBBox	ResourcesGroupr%   extrar   r   )r|   r}   r   Arrayr1   rs   id)r#   r   r   r   r   r%   r   groups           r+   r   Stream.add_group   s    $$))+'')'')'')//,7&
 	   KKqy!* =>"%% $"	' "
  

Y
<s4??95678/4	"588,r-   c                     SUR                    [        U5       3nS U R                  S   U'   X@R                  ;   a#  U R                  U   S   R	                  U5        U$ UUU1S S.U R                  U'   U$ )Nir   
dpi_ratios)imageinterpolater   x_object)r   intr   r   add)r#   r   r   ratio
image_names        r+   	add_imageStream.add_image   s    
3{#3"45
15	":.%LL$\266u= & '	$
Z  r-   c                 8   [         R                  " [         R                  " 5       [         R                  " 5       [         R                  " 5       [         R                  " 5       U R                  S   S S.5      n[         R                  " SS[         R                  " XX-   X$-   /5      UUSS[         R                  " UR                  5      US.	5      n	U R                  XS9n
S[        U R                  S   5       3U
l        XR                  S   U
R                  '   U
$ )	Nr   r   z/Patternr   )	r   PatternTyper   XStepYStep
TilingType	PaintTyper   r   r   pr   )r|   r}   r   r   valuesr1   rs   r   )r#   r   r   r   r   repeat_widthrepeat_heightmatrixr%   r   patterns              r+   add_patternStream.add_pattern   s    $$))+'')'')'')//,7&
 	   KKqy!* =>!"kk&--0"
"
 
 **y*>T__Y789:
18	"7::.r-   c                 J   [         R                  " USU 3[         R                  " U5      [         R                  " U5      US.5      nU(       a  [         R                  " S5      US'   S[        U R                  S   5       3Ul        XpR                  S   UR
                  '   U$ )Nz/Device)ShadingTyper   DomainCoordsFunction)   truer   Extendrq   r   )r|   r}   r   rs   r   r   )r#   shading_typecolor_spacedomaincoordsextendfunctionshadings           r+   add_shadingStream.add_shading   s    ""'#K=1kk&)kk&) $
   %,> ?GHT__Y789:
18	"7::.r-   c                 $  > U R                   (       d  g S nUc  U R                  UR                  5      nU(       aG  [        R                  " S[        U R                  5      05      nU R                  R                  X145        [        TU ]%  X45        g )NMCID)
r   get_marked_content_tagelement_tagr|   r}   rs   r   r;   r   begin_marked_content)r#   boxmcidtagproperty_listr*   s        r+   r   Stream.begin_marked_content   sm    zz;--coo>C!,,fc$++6F-GHMKKz*$S8r-   c                 F   > U R                   (       d  g [        TU ]	  5         g r9   )r   r   end_marked_contentr<   s    r+   r   Stream.end_marked_content  s    zz"$r-   c                     [         R                  " S[         R                  " U 5      [         R                  " U5      [         R                  " U5      US.5      $ )Nr   )FunctionTyper   C0C1Nr|   r}   r   )r   c0c1ns       r+   create_interpolation_function$Stream.create_interpolation_function  sB    kk&)++b/++b/!
  	r-   c           	          [         R                  " S[         R                  " U 5      [         R                  " U5      [         R                  " U5      [         R                  " U5      S.5      $ )N   )r   r   EncodeBounds	Functionsr   )r   encodeboundssub_functionss       r+   create_stitching_function Stream.create_stitching_function  sM    kk&)kk&)kk&)]3!
  	r-   c                    US:X  a  gUS:X  a  gUS:X  a  gUS:X  a  gUS	:X  a  g
US:X  a  gUS;   a  UR                  5       $ US;   a  gUS;   a  gUS:X  a  gUS;   a  UR                  5       $ US;   a  US S R                  5       USS  -   $ g)NdivDivspanSpanarticleArtsectionSect
blockquote
BlockQuoter   P)h1h2h3h4h5h6)dlulolL)lidtddLItableTable)trthtd)theadtbodytfootr   	NonStruct)upper)r#   r   s     r+   r   Stream.get_marked_content_tag  s    %F"I%I%L(C@@$$&&....G#..$$&&77r?((*[_<<r-   )r   r   r   r   r   r   r   r   r   r   r   r   r   r!   r    r"   r   r   )r   r   r   r   r   r   )F)FN)
luminosity)!__name__
__module____qualname____firstlineno____doc__r   r1   propertyr6   r:   rB   rL   rO   rR   ri   rl   rt   r\   r   r   r   r   r   r   r   r   r   staticmethodr   r   r   __static_attributes____classcell__)r*   s   @r+   r   r      s    08&  # #)	B!2:*
'(+4 2	9%
     r-   r   )r'  r|   loggerr   r   r   text.ffir   
text.fontsr   r$   r	   r   r0   r-   r+   <module>r/     s,         + mU\\ mr-   