
    ,g%,                     v    d Z ddlZddlmZ ddlmZ ddlmZ ddlm	Z	 dd	l
mZ  G d
 dej                        Zy)zPDF stream.    N   )LOGGER)Matrix)ffi)get_pango_font_key   )Fontc                        e Zd ZdZ fdZd Zed        Z fdZ fdZ	d fd	Z
 fdZ fd	Zdd
Z fdZ fdZd fd	ZddZd Zd Zd Zd Zd Zd Zd fd	Z fdZed        Zed        Zd Z xZS )Streamz&PDF stream object with extra features.c                    t        |   |i | || _        g | _        || _        || _        || _        || _        d x| _        | _	        d x| _
        | _        d x| _        | _        d x| _        | _        t!               g| _        t%        j&                  d      | _        t%        j&                  d      | _        t%        j&                  d      | _        y )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	           m/home/viktor/gitlab-persoonlijk/factuur-applicatie/venv/lib/python3.12/site-packages/weasyprint/pdf/stream.pyr   zStream.__init__   s    $)&),#
;??d8;??d87;;T4/33,!8* gg./ 23GG$67    c                     d|vr| j                   |d<   d|vr| j                  |d<   d|vr| j                  |d<   d|vr| j                  |d<   d|vr| j                  |d<   d|vr| j
                  |d<   t        di |S )Nr#   r   r$   r%   r&   compress )r   r   r   r   r   r-   r   )r"   r(   s     r*   clonezStream.clone!   s    & "kkF7O6)'+':':F#$f$"&//F;6!#||F8!ZZF6NV#!%F:r+   c                      | j                   d   S N)r   )r"   s    r*   ctmz
Stream.ctm0   s    r""r+   c                 l    t         |           | j                  j                  | j                         y N)r   
push_stater   appendr3   r"   r)   s    r*   r6   zStream.push_state4   s$    txx(r+   c                 *   | j                   r-| j                   d   dk(  r| j                   j                          nt        |           d x| _        | _        d x| _        | _        d | _        | j                  j                          | j                  sJ y )Nr2      q)
streampopr   	pop_stater   r   r   r   r   r   r8   s    r*   r=   zStream.pop_state8   sv    ;;4;;r?d2KKOOG;??d8;??d8!r+   c                     t         |   ||||||       t        ||||||      | j                  z  | j                  d<   y r1   )r   
set_matrixr   r3   r   )r"   abcdefr)   s          r*   	transformzStream.transformC   s@    1aAq!,$Q1aA6Ar+   c                     | j                   r>| j                   d   dk(  r,| j                  | _        | j                   j                          y t        |           y )Nr2   s   ET)r;   r   r   r<   r   
begin_textr8   s    r*   rH   zStream.begin_textG   s>    ;;4;;r?e3!%DKKOOG r+   c                 T    | j                   d c| _        | _         t        |           y r5   )r   r   r   end_textr8   s    r*   rJ   zStream.end_textN   s%    -1-?-?**r+   c                 8   |^ }}| j                  ||       |r4|j                  g|| j                  k(  ry |j                  g|| _        n3|j                  g|| j                  k(  ry |j                  g|| _        |j                  dv r. | j                  g |j                  d      j                  |  y |j                  dv rG| j                  d|       |j                  d      j                  \  }}}| j                  d ||||       y |j                  dv rG| j                  d|       |j                  d      j                  \  }}}| j                  d ||||       y t        j                  d|j                          | j                  g ||  y )	N)srgbhslhwbrL   )zxyz-d65oklaboklchzlab-d65lab)zxyz-d50rQ   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	lightnessr@   rA   s           r*   	set_colorzStream.set_colorR   sv    5uf%'h'4+E+EE.3kk-EH-E*'h'4+>+>>',{{&>X&>#;;00DE 0 < <EfE[[99  F3#hhuo99OIq!""4AqA[[55  F3#hhuo99OIq!""4AqAKKFTD11&1r+   c                 \    ||f| j                   k(  ry ||f| _         t        | 	  ||       y r5   )r   r   set_font_size)r"   fontsizer)   s      r*   rb   zStream.set_font_sizeo   s3    $<4---"D\dD)r+   c                 ~    dt        | j                  d          }|| j                  d   |<   t        |   |       y )Ns	ExtGState)lenr   r   	set_state)r"   statekeyr)   s      r*   ri   zStream.set_stateu   s>    #dook2345,1$S)#r+   c                    || }|rbd| }|| j                   k7  rN|| _         || j                  d   vr't        j                  d|i      | j                  d   |<   t        |   |       |rdd| }|| j                  k7  rO|| _        || j                  d   vr't        j                  d|i      | j                  d   |<   t        |   |       y y y )NArg   CAr@   ca)r   r   pydyf
Dictionaryr   ri   r   )r"   r^   r\   fillrk   r)   s        r*   rS   zStream.set_alphaz   s    <:DeW+Cd000-0*dook::8=8H8H$PU8WDOOK05!#&eW+Cd)))&)#dook::8=8H8H$PU8WDOOK05!#&	 * r+   c           	          | j                  ||||      }t        j                  dt        j                  dd|j                          |d      ddd      }| j	                  |       |S )N
/ExtGStatez/Mask/)TypeSGr   false)rv   SMaskro   AIS)	add_grouprp   rq   
capitalizeri   )r"   xywidthheightmodealpha_streamalpha_states           r*   set_alpha_statezStream.set_alpha_state   su    ~~aE6:&& %%*+,!' 
 	(
 	 	{#r+   c                 X    | j                  t        j                  dd| d             y )Nrt   ru   )rv   BM)ri   rp   rq   )r"   r   s     r*   set_blend_modezStream.set_blend_mode   s,    u'' dV*)
  	r+   c                     t        |      \  }}}|| j                  vrt        |||      | j                  |<   | j                  |   |fS r5   )r   r   r	   )r"   
pango_fontrk   description	font_sizes        r*   add_fontzStream.add_font   sJ    &8&D#[)dkk!#JYGDKK{{3**r+   c                 &   t        j                  t        j                         t        j                         t        j                         t        j                         | j                  d   d d      }t        j                  ddt        j                  ||||z   ||z   f      |t        j                  ddddd	      d
      }| j	                  ||      }dt        | j                  d          |_        || j                  d   |j                  <   |S )N
ColorSpacerg   XObjectPatternShadingr   r	   z/XObjectz/Formz/Groupz/Transparencytruez
/DeviceRGB)rv   rw   ICS)rv   SubtypeBBox	ResourcesGroupr$   extrar~   r   )rp   rq   r   Arrayr/   rh   id)r"   r~   r   r   r   r$   r   groups           r*   r|   zStream.add_group   s    $$))+'')'')'')//,7&
 	   KKAq5y!f* =>"%% $"	' "
  

Ye
<s4??95678/4	"588,r+   c                     d|j                    t        |       }d | j                  d   |<   || j                  v r#| j                  |   d   j	                  |       |S |||hd d| j                  |<   |S )Nir   
dpi_ratios)imageinterpolater   x_object)r   intr   r   add)r"   r   r   ratio
image_names        r*   	add_imagezStream.add_image   s    
3{#3"45
15	":.%LL$\266u= & '	$
Z  r+   c                 8   t        j                  t        j                         t        j                         t        j                         t        j                         | j                  d   d d      }t        j                  ddt        j                  ||||z   ||z   g      ||ddt        j                  |j                        |d	      }	| j                  ||	      }
dt        | j                  d          |
_        |
| j                  d   |
j                  <   |
S )	Nr   r   z/Patternr   )	rv   PatternTyper   XStepYStep
TilingType	PaintTyper   r   r   pr   )rp   rq   r   r   valuesr/   rh   r   )r"   r~   r   r   r   repeat_widthrepeat_heightmatrixr$   r   patterns              r*   add_patternzStream.add_pattern   s    $$))+'')'')'')//,7&
 	   KKAq5y!f* =>!"kk&--0"
"
 
 **y*>T__Y789:
18	"7::.r+   c                 :   t        j                  |d| t        j                  |      t        j                  |      |d      }|rt        j                  d      |d<   dt        | j                  d          |_        || j                  d   |j
                  <   |S )Nz/Device)ShadingTyper   DomainCoordsFunction)   truer   Extendrf   r   )rp   rq   r   rh   r   r   )r"   shading_typecolor_spacedomaincoordsextendfunctionshadings           r*   add_shadingzStream.add_shading   s    ""'#K=1kk&)kk&) $
   %,> ?GHT__Y789:
18	"7::.r+   c                    | j                   sy d }|| j                  |j                        }|rGt        j                  dt        | j                        i      }| j                  j                  ||f       t        | %  ||       y )NMCID)
r   get_marked_content_tagelement_tagrp   rq   rh   r   r7   r   begin_marked_content)r"   boxmcidtagproperty_listr)   s        r*   r   zStream.begin_marked_content   sq    zz;--coo>C!,,fc$++6F-GHMKKSz*$S-8r+   c                 <    | j                   sy t        | 	          y r5   )r   r   end_marked_contentr8   s    r*   r   zStream.end_marked_content  s    zz"$r+   c                     t        j                  dt        j                  |       t        j                  |      t        j                  |      |d      S )Nr   )FunctionTyper   C0C1Nrp   rq   r   )r   c0c1ns       r*   create_interpolation_functionz$Stream.create_interpolation_function  sB    kk&)++b/++b/!
  	r+   c           	          t        j                  dt        j                  |       t        j                  |      t        j                  |      t        j                  |      d      S )N   )r   r   EncodeBounds	Functionsr   )r   encodeboundssub_functionss       r*   create_stitching_functionz Stream.create_stitching_function  sM    kk&)kk&)kk&)]3!
  	r+   c                     |dk(  ry|dk(  ry|dk(  ry|dk(  ry|d	k(  ry
|dk(  ry|dv r|j                         S |dv ry|dv ry|dk(  ry|dv r|j                         S |dv r|d d j                         |dd  z   S y)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   zStream.get_marked_content_tag  s    %F"I%I%L(C@@$$&&....G#..$$&&77r?((*[_<<r+   )r   r   r   r   r   r   )F)FN)
luminosity)__name__
__module____qualname____doc__r   r/   propertyr3   r6   r=   rF   rH   rJ   r`   rb   ri   rS   r   r   r   r|   r   r   r   r   r   staticmethodr   r   r   __classcell__)r)   s   @r*   r   r      s    08&  # #)	B!2:*
'(+4 2	9%
    r+   r   )r  rp   loggerr   r   r   text.ffir   
text.fontsr   r#   r	   r   r.   r+   r*   <module>r     s,         + mU\\ mr+   