
    r)hi.                     b    S r SSKJr  SSKJr  SSKJrJrJr  SSKJ	r	   " S S5      r
S	S	S	S	S
.rg)a  
Mixin class for managing a stack of graphics state variables.

The contents of this module are internal to fpdf2, and not part of the public API.
They may change at any time without prior warning or any deprecation period,
in non-backward-compatible ways.
    )copy   )
DeviceGray)CharVPosTextEmphasisTextMode)FontFacec                     ^  \ rS rSrSr\" S5      r\" S5      r\" S5      rU 4S jr	S?S jr
S rS rS r\S	 5       r\R                   S
 5       r\S 5       r\R                   S 5       r\S 5       r\R                   S 5       r\S 5       r\R                   S 5       r\S 5       r\R                   S 5       r\S 5       r\R                   S 5       r\S 5       r\R                   S 5       r\S 5       r\R                   S 5       r\S 5       r\R                   S 5       r\S 5       r\R                   S 5       r\S 5       r\R                   S 5       r\S 5       r\R                   S  5       r\S! 5       r\R                   S" 5       r\S# 5       r\R                   S$ 5       r\S% 5       r\R                   S& 5       r\S' 5       r\R                   S( 5       r\S) 5       r \ R                   S* 5       r \S+ 5       r!\!R                   S, 5       r!\S- 5       r"\"R                   S. 5       r"\S/ 5       r#\#R                   S0 5       r#\S1 5       r$\$R                   S2 5       r$\S3 5       r%\%R                   S4 5       r%\S5 5       r&\&R                   S6 5       r&\S7 5       r'\'R                   S8 5       r'\S9 5       r(\(R                   S: 5       r(\S; 5       r)\)R                   S< 5       r)S= r*S>r+U =r,$ )@GraphicsStateMixin   a}  Mixin class for managing a stack of graphics state variables.

To the subclassing library and its users, the variables look like
normal instance attributes. But by the magic of properties, we can
push and pop levels as needed, and users will always see and modify
just the current version.

This class is mixed in by fpdf.FPDF(), and is not meant to be used
directly by user code.
r   c                 `  > [        S%0 SU R                  _SU R                  _SU R                  _SS_SS_SS_S	S
_SS_SS_SS_S0 _SS_S[        SSSS9_SS_S[        R
                  _S[        R                  _SS_SS_SS_SS_SS_SS_S S!_S"S#_S$S _6/U l        [        TU ](  " U0 UD6  g )&N
draw_color
fill_color
text_color	underlineFstrikethrough
font_style font_stretchingd   char_spacingr   font_familyfont_size_ptcurrent_fontcurrent_font_is_set_on_pagedash_pattern)dashgapphase
line_width	text_mode	char_vpos	sub_scalegffffff?	sup_scale	nom_scaleg      ?denom_scalesub_liftg333333ÿsup_liftg?nom_liftg?
denom_liftg        text_shaping )dictDEFAULT_DRAW_COLORDEFAULT_FILL_COLORDEFAULT_TEXT_COLORr   FILLr   LINE_GraphicsStateMixin__statestacksuper__init__)selfargskwargs	__class__s      NC:\Users\13-19\Desktop\Lekcja\testEnv\Lib\site-packages\fpdf/graphics_state.pyr5   GraphicsStateMixin.__init__    sB    2222  22  	
 $  !$      -2 "qaq9  #--  #--!" #$ %& '( !)* +, -. /0 12 "3
: 	$)&)    c                 j    U(       d  U R                  5       nU R                  R                  U5        U$ )z"Push a graphics state on the stack)_get_current_graphics_stater3   append)r6   news     r:   _push_local_stack$GraphicsStateMixin._push_local_stack@   s,    224C  %
r<   c                 6    U R                   R                  5       $ )z(Pop the last graphics state on the stack)r3   popr6   s    r:   _pop_local_stack#GraphicsStateMixin._pop_local_stackG   s      $$&&r<   c                 X    [        U R                  S   5      n[        US   5      US'   U$ )z#Retrieve the current graphics stater+   )r   r3   )r6   gss     r:   r>   .GraphicsStateMixin._get_current_graphics_stateK   s2    
 $##B'(!"^"45>	r<   c                 2    [        U R                  5      S:  $ )z7Indicate if the stack contains items (else it is empty)r   )lenr3   rE   s    r:   !_is_current_graphics_state_nested4GraphicsStateMixin._is_current_graphics_state_nestedT   s    4$$%))r<   c                 &    U R                   S   S   $ NrI   r   r3   rE   s    r:   r   GraphicsStateMixin.draw_colorX         $\22r<   c                 &    XR                   S   S'   g rQ   rR   r6   vs     r:   r   rS   \       ./"l+r<   c                 &    U R                   S   S   $ NrI   r   rR   rE   s    r:   r   GraphicsStateMixin.fill_color`   rT   r<   c                 &    XR                   S   S'   g rZ   rR   rV   s     r:   r   r[   d   rX   r<   c                 &    U R                   S   S   $ NrI   r   rR   rE   s    r:   r   GraphicsStateMixin.text_colorh   rT   r<   c                 &    XR                   S   S'   g r^   rR   rV   s     r:   r   r_   l   rX   r<   c                 &    U R                   S   S   $ NrI   r   rR   rE   s    r:   r   GraphicsStateMixin.underlinep         $[11r<   c                 &    XR                   S   S'   g rb   rR   rV   s     r:   r   rc   t   s    -."k*r<   c                 &    U R                   S   S   $ NrI   r   rR   rE   s    r:   r    GraphicsStateMixin.strikethroughx   s      $_55r<   c                 &    XR                   S   S'   g rg   rR   rV   s     r:   r   rh   |   s    12"o.r<   c                 &    U R                   S   S   $ NrI   r   rR   rE   s    r:   r   GraphicsStateMixin.font_style   rT   r<   c                 &    XR                   S   S'   g rk   rR   rV   s     r:   r   rl      rX   r<   c                 &    U R                   S   S   $ NrI   r   rR   rE   s    r:   r   "GraphicsStateMixin.font_stretching   s      $%677r<   c                 &    XR                   S   S'   g ro   rR   rV   s     r:   r   rp      s    34"/0r<   c                 &    U R                   S   S   $ NrI   r   rR   rE   s    r:   r   GraphicsStateMixin.char_spacing         $^44r<   c                 &    XR                   S   S'   g rs   rR   rV   s     r:   r   rt          01"n-r<   c                 &    U R                   S   S   $ NrI   r   rR   rE   s    r:   r   GraphicsStateMixin.font_family   s      $]33r<   c                 &    XR                   S   S'   g ry   rR   rV   s     r:   r   rz      s    /0"m,r<   c                 &    U R                   S   S   $ NrI   r   rR   rE   s    r:   r   GraphicsStateMixin.font_size_pt   ru   r<   c                 &    XR                   S   S'   g r}   rR   rV   s     r:   r   r~      rw   r<   c                 @    U R                   S   S   U R                  -  $ r}   )r3   krE   s    r:   	font_sizeGraphicsStateMixin.font_size   s!      $^4tvv==r<   c                 @    XR                   -  U R                  S   S'   g r}   )r   r3   rV   s     r:   r   r      s    01FF
"n-r<   c                 &    U R                   S   S   $ NrI   r   rR   rE   s    r:   r   GraphicsStateMixin.current_font   ru   r<   c                 &    XR                   S   S'   g r   rR   rV   s     r:   r   r      rw   r<   c                 &    U R                   S   S   $ NrI   r   rR   rE   s    r:   r   .GraphicsStateMixin.current_font_is_set_on_page   s      $%BCCr<   c                 &    XR                   S   S'   g r   rR   rV   s     r:   r   r      s    ?@";<r<   c                 &    U R                   S   S   $ NrI   r   rR   rE   s    r:   r   GraphicsStateMixin.dash_pattern   ru   r<   c                 &    XR                   S   S'   g r   rR   rV   s     r:   r   r      rw   r<   c                 &    U R                   S   S   $ NrI   r    rR   rE   s    r:   r    GraphicsStateMixin.line_width   rT   r<   c                 &    XR                   S   S'   g r   rR   rV   s     r:   r    r      rX   r<   c                 &    U R                   S   S   $ NrI   r!   rR   rE   s    r:   r!   GraphicsStateMixin.text_mode   rd   r<   c                 P    [         R                  " U5      U R                  S   S'   g r   )r   coercer3   rV   s     r:   r!   r      s     -5__Q-?"k*r<   c                 &    U R                   S   S   $ )z
Return vertical character position relative to line.
([docs](../TextStyling.html#subscript-superscript-and-fractional-numbers))
rI   r"   rR   rE   s    r:   r"   GraphicsStateMixin.char_vpos          $[11r<   c                 P    [         R                  " U5      U R                  S   S'   g)z~
Set vertical character position relative to line.
([docs](../TextStyling.html#subscript-superscript-and-fractional-numbers))
rI   r"   N)r   r   r3   rV   s     r:   r"   r      s"     .6__Q-?"k*r<   c                 &    U R                   S   S   $ )zt
Return scale factor for subscript text.
([docs](../TextStyling.html#subscript-superscript-and-fractional-numbers))
rI   r#   rR   rE   s    r:   r#   GraphicsStateMixin.sub_scale   r   r<   c                 :    [        U5      U R                  S   S'   g)zq
Set scale factor for subscript text.
([docs](../TextStyling.html#subscript-superscript-and-fractional-numbers))
rI   r#   Nfloatr3   rV   s     r:   r#   r           .31X"k*r<   c                 &    U R                   S   S   $ )zv
Return scale factor for superscript text.
([docs](../TextStyling.html#subscript-superscript-and-fractional-numbers))
rI   r$   rR   rE   s    r:   r$   GraphicsStateMixin.sup_scale   r   r<   c                 :    [        U5      U R                  S   S'   g)zs
Set scale factor for superscript text.
([docs](../TextStyling.html#subscript-superscript-and-fractional-numbers))
rI   r$   Nr   rV   s     r:   r$   r      r   r<   c                 &    U R                   S   S   $ )zt
Return scale factor for nominator text.
([docs](../TextStyling.html#subscript-superscript-and-fractional-numbers))
rI   r%   rR   rE   s    r:   r%   GraphicsStateMixin.nom_scale  r   r<   c                 :    [        U5      U R                  S   S'   g)zq
Set scale factor for nominator text.
([docs](../TextStyling.html#subscript-superscript-and-fractional-numbers))
rI   r%   Nr   rV   s     r:   r%   r     r   r<   c                 &    U R                   S   S   $ )zv
Return scale factor for denominator text.
([docs](../TextStyling.html#subscript-superscript-and-fractional-numbers))
rI   r&   rR   rE   s    r:   r&   GraphicsStateMixin.denom_scale  s       $]33r<   c                 :    [        U5      U R                  S   S'   g)zs
Set scale factor for denominator text.
([docs](../TextStyling.html#subscript-superscript-and-fractional-numbers))
rI   r&   Nr   rV   s     r:   r&   r      s     05Qx"m,r<   c                 &    U R                   S   S   $ )zs
Return lift factor for subscript text.
([docs](../TextStyling.html#subscript-superscript-and-fractional-numbers))
rI   r'   rR   rE   s    r:   r'   GraphicsStateMixin.sub_lift(         $Z00r<   c                 :    [        U5      U R                  S   S'   g)zp
Set lift factor for subscript text.
([docs](../TextStyling.html#subscript-superscript-and-fractional-numbers))
rI   r'   Nr   rV   s     r:   r'   r   0       -2!H"j)r<   c                 &    U R                   S   S   $ )zu
Return lift factor for superscript text.
([docs](../TextStyling.html#subscript-superscript-and-fractional-numbers))
rI   r(   rR   rE   s    r:   r(   GraphicsStateMixin.sup_lift8  r   r<   c                 :    [        U5      U R                  S   S'   g)zr
Set lift factor for superscript text.
([docs](../TextStyling.html#subscript-superscript-and-fractional-numbers))
rI   r(   Nr   rV   s     r:   r(   r   @  r   r<   c                 &    U R                   S   S   $ )zs
Return lift factor for nominator text.
([docs](../TextStyling.html#subscript-superscript-and-fractional-numbers))
rI   r)   rR   rE   s    r:   r)   GraphicsStateMixin.nom_liftH  r   r<   c                 :    [        U5      U R                  S   S'   g)zp
Set lift factor for nominator text.
([docs](../TextStyling.html#subscript-superscript-and-fractional-numbers))
rI   r)   Nr   rV   s     r:   r)   r   P  r   r<   c                 &    U R                   S   S   $ )zu
Return lift factor for denominator text.
([docs](../TextStyling.html#subscript-superscript-and-fractional-numbers))
rI   r*   rR   rE   s    r:   r*   GraphicsStateMixin.denom_liftX  s       $\22r<   c                 :    [        U5      U R                  S   S'   g)zr
Set lift factor for denominator text.
([docs](../TextStyling.html#subscript-superscript-and-fractional-numbers))
rI   r*   Nr   rV   s     r:   r*   r   `  s     /4Ah"l+r<   c                 &    U R                   S   S   $ NrI   r+   rR   rE   s    r:   r+   GraphicsStateMixin.text_shapingh  ru   r<   c                 &    XR                   S   S'   g r   rR   rV   s     r:   r+   r   l  rw   r<   c                    [        U R                  [        R                  " U R                  5      U R
                  U R                  U R                  :w  a  U R                  OSU R                  U R                  :w  a  U R                  S9$ SS9$ )zd
Return a `fpdf.fonts.FontFace` instance
representing a subset of properties of this GraphicsState.
N)familyemphasissize_ptcolorr   )
r	   r   r   r   r   r   r   r0   r   r/   rE   s    r:   	font_faceGraphicsStateMixin.font_facep  s{    
 ##!((9%%#'??d6M6M#MSW $(??d6M6M#M

 
	
 TX

 
	
r<   )__statestack)N)-__name__
__module____qualname____firstlineno____doc__r   r.   r/   r0   r5   rA   rF   r>   rN   propertyr   setterr   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   __static_attributes____classcell__)r9   s   @r:   r   r      s   	 $A#A#A*@'* 3 3 0 0 3 3 0 0 3 3 0 0 2 2 / / 6 6 3 3 3 3 0 0 8 8 5 5 5 5 2 2 4 4 1 1 5 5 2 2 > > ; ; 5 5 2 2 D D !''A (A 5 5 2 2 3 3 0 0 2 2 @ @ 2 2 @ @ 2 2 6 6 2 2 6 6 2 2 6 6 4 4 8 8 1 1 __5 5 1 1 __5 5 1 1 __5 5 3 3 7 7 5 5 2 2
 
r<   r   T)z$GraphicsStateMixin._push_local_stackz#GraphicsStateMixin._pop_local_stackz.GraphicsStateMixin._get_current_graphics_statez4GraphicsStateMixin._is_current_graphics_state_nestedN)r   r   drawingr   enumsr   r   r   fontsr	   r   __pdoc__r,   r<   r:   <module>r      s=      3 3 o
 o
f -1+/6:<@	r<   