Ë
    £èh9J  ã            
      óf  — d dl mZ d dlmZmZ d dlmZ d dlZd dlZd dl	Z	d dl
mZmZmZ erd dlmZ  G d„ dej"                  «      Zi d	d
dej&                  f“dddej&                  f“dddej&                  f“dddej&                  f“dddej&                  f“dddej(                  f“dddej(                  f“dddej(                  f“dddej(                  f“dddej(                  f“dd d!ej(                  f“d"d#d ej(                  f“d$d%d#ej(                  f“d&d'd(ej(                  f“d)ddej(                  f“d*d+dej(                  f“Zej&                  d,ej,                  d-ej(                  d.ej.                  d/ej0                  d0iZ G d1„ d2ej"                  «      Z G d3„ d4e«      Ze	j8                   G d5„ d6«      «       Ze	j8                   G d7„ d8«      «       Z G d9„ d:«      ZdFd;„Z	 	 	 	 	 	 	 	 	 	 dGd<„Z dHd=„Z!ejD                  d>f	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dId?„Z#dJd@„Z$dJdA„Z%dJdB„Z&dJdC„Z'dJdD„Z(dJdE„Z)y)Ké    )Úannotations)Ú
NamedTupleÚTYPE_CHECKING)ÚSelfN)ÚVec2ÚBoundingBox2dÚMatrix44)ÚLayoutc                  ó$   — e Zd ZdZdZdZdZdZdZy)ÚUnitsz„Page units as enum.

    Attributes:
        inch: 25.4 mm
        px: 1/96 inch
        pt: 1/72 inch
        mm:
        cm:

    é   é   é   é   é   N)	Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚinchÚpxÚptÚmmÚcm© ó    ú;lib/python3.12/site-packages/ezdxf/addons/drawing/layout.pyr   r      s"   „ ñ	ð €DØ	
€BØ	
€BØ	
€BØ	
�Br   r   zISO A0i¥  iI  zISO A1iR  zISO A2i¤  zISO A3i)  zISO A4éÒ   zANSI Aé   g      !@zANSI Bé   zANSI Cé   zANSI Dé"   zANSI Eé,   zARCH Cé   é   zARCH Dé$   zARCH Eé0   zARCH E1é*   é   ÚLetterÚLegalé   ç      ð?g      $@gffffff9@gïîîîîîÐ?g>é“>é“Ö?c                  ó4   — e Zd ZdZdZdZdZdZdZdZ	dZ
d	Zd
Zy)ÚPageAlignmentzöPage alignment of content as enum.

    Attributes:
        TOP_LEFT:
        TOP_CENTER:
        TOP_RIGHT:
        MIDDLE_LEFT:
        MIDDLE_CENTER:
        MIDDLE_RIGHT:
        BOTTOM_LEFT:
        BOTTOM_CENTER:
        BOTTOM_RIGHT:

    r   r   r   r   r   é   é   é   é	   N)r   r   r   r   ÚTOP_LEFTÚ
TOP_CENTERÚ	TOP_RIGHTÚMIDDLE_LEFTÚMIDDLE_CENTERÚMIDDLE_RIGHTÚBOTTOM_LEFTÚBOTTOM_CENTERÚBOTTOM_RIGHTr   r   r   r/   r/   B   s6   „ ñð €HØ€JØ€IØ€KØ€MØ€LØ€KØ€MØ�Lr   r/   c                  óf   — e Zd ZU dZded<   ded<   ded<   ded<   edd„«       Zedd„«       Zdd	„Zy
)ÚMarginsznPage margins definition class

    Attributes:
        top:
        left:
        bottom:
        right:

    ÚfloatÚtopÚrightÚbottomÚleftc                ó   —  | ||||«      S )z@Returns a page margins definition class with four equal margins.r   )ÚclsÚmargins     r   ÚallzMargins.allm   s   € ñ �6˜6 6¨6Ó2Ð2r   c                ó   —  | ||||«      S )zfReturns a page margins definition class with equal top-bottom and
        left-right margins.
        r   )rE   Ú
top_bottomÚ
left_rights      r   Úall2zMargins.all2r   s   € ñ
 �:˜z¨:°zÓBÐBr   c                ó’   — | j                  | j                  |z  | j                  |z  | j                  |z  | j                  |z  «      S ©N)Ú	__class__r@   rA   rB   rC   )ÚselfÚfactors     r   ÚscalezMargins.scalez   sC   € Ø�~‰~Ø�H‰H�vÑØ�J‰J˜ÑØ�K‰K˜&Ñ Ø�I‰I˜Ñó	
ð 	
r   N)rF   r?   Úreturnr   )rI   r?   rJ   r?   rR   r   )rP   r?   rR   r   )	r   r   r   r   Ú__annotations__ÚclassmethodrG   rK   rQ   r   r   r   r>   r>   ]   sJ   … ñð 
ƒJØƒLØƒMØ
ƒKàò3ó ð3ð òCó ðCô
r   r>   c                  óR  — e Zd ZU dZded<   ded<   ej                  Zded<   ej                  d«      Z
ded	<   d
Zded<   d
Zded<   d„ Zedd„«       Zedd„«       Zedd„«       Zedd„«       Zedd„«       Zedd„«       Zedd„«       Zedd„«       Zdd„Zdd„Zdd d„Zed!d„«       Zy)"ÚPagean  Page definition class

    Attributes:

        width: page width, 0 for auto-detect
        height: page height, 0 for auto-detect
        units: page units as enum :class:`Units`
        margins: page margins in page units
        max_width: limit width for auto-detection, 0 for unlimited
        max_height: limit height for auto-detection, 0 for unlimited

    r?   ÚwidthÚheightr   Úunitsr   r>   Úmarginsç        Ú	max_widthÚ
max_heightc                óˆ   — t        | j                  t        «      sJ d«       ‚t        | j                  t        «      sJ d«       ‚y )Nzunits require type <Units>zmargins require type <Margins>)Ú
isinstancerY   r   rZ   r>   ©rO   s    r   Ú__post_init__zPage.__post_init__™   s6   € Ü˜$Ÿ*™*¤eÔ,ÐJÐ.JÓJÐ,Ü˜$Ÿ,™,¬Ô0ÐRÐ2RÓRÑ0r   c                ó(   — t         | j                     S rM   )ÚUNITS_TO_MMrY   r`   s    r   Úto_mm_factorzPage.to_mm_factor�   s   € ä˜4Ÿ:™:Ñ&Ð&r   c                óH   — t        | j                  | j                  z  d«      S )zReturns the page width in mm.r   )ÚroundrW   rd   r`   s    r   Úwidth_in_mmzPage.width_in_mm¡   s    € ô �T—Z‘Z $×"3Ñ"3Ñ3°QÓ7Ð7r   c                óH   — t        | j                  | j                  z  d«      S )zReturns max page width in mm.r   )rf   r\   rd   r`   s    r   Úmax_width_in_mmzPage.max_width_in_mm¦   s    € ô �T—^‘^ d×&7Ñ&7Ñ7¸Ó;Ð;r   c                óH   — t        | j                  | j                  z  d«      S )zReturns the page height in mm.r   )rf   rX   rd   r`   s    r   Úheight_in_mmzPage.height_in_mm«   s    € ô �T—[‘[ 4×#4Ñ#4Ñ4°aÓ8Ð8r   c                óH   — t        | j                  | j                  z  d«      S )zReturns max page height in mm.r   )rf   r]   rd   r`   s    r   Úmax_height_in_mmzPage.max_height_in_mm°   s    € ô �T—_‘_ t×'8Ñ'8Ñ8¸!Ó<Ð<r   c                óL   — | j                   j                  | j                  «      S )zReturns the page margins in mm.)rZ   rQ   rd   r`   s    r   Úmargins_in_mmzPage.margins_in_mmµ   s   € ð �|‰|×!Ñ! $×"3Ñ"3Ó4Ð4r   c                ó4   — | j                   | j                  kD  S )z7Returns ``True`` if the page has landscape orientation.©rW   rX   r`   s    r   Úis_landscapezPage.is_landscapeº   s   € ð �z‰z˜DŸK™KÑ'Ð'r   c                ó4   — | j                   | j                  k  S )zKReturns ``True`` if the page has portrait orientation. (square is portrait)rq   r`   s    r   Úis_portraitzPage.is_portrait¿   s   € ð �z‰z˜TŸ[™[Ñ(Ð(r   c                ód   — | j                   r$| j                  | j                  c| _        | _        yy)z+Converts the page to landscape orientation.N)rt   rX   rW   r`   s    r   Úto_landscapezPage.to_landscapeÄ   s(   € à×ÒØ&*§k¡k°4·:±:Ð#ˆDŒJ˜�ð r   c                ód   — | j                   r$| j                  | j                  c| _        | _        yy)z*Converts the page to portrait orientation.N)rr   rX   rW   r`   s    r   Úto_portraitzPage.to_portraitÉ   s(   € à×ÒØ&*§k¡k°4·:±:Ð#ˆDŒJ˜�ð r   c                ó\  — | j                   }| j                  |j                  z
  }| j                  }|r=t	        |j
                  |j                  «      }t	        |||j                  z
  «      }||fS t	        |j
                  |j                  «      }t	        |||j                  z
  «      }||fS )zÝReturns the bottom-left and the top-right corner of the page margins in mm.
        The origin (0, 0) is the top-left corner of the page if `top_origin` is
        ``True`` or in the bottom-left corner otherwise.
        )ro   rg   rA   rk   r   rC   r@   rB   )rO   Ú
top_originrZ   Úright_marginÚpage_heightÚbottom_leftÚ	top_rights          r   Úget_margin_rectzPage.get_margin_rectÎ   s�   € ð
 ×$Ñ$ˆØ×'Ñ'¨'¯-©-Ñ7ˆØ×'Ñ'ˆÙÜ˜wŸ|™|¨W¯[©[Ó9ˆKÜ˜\¨;¸¿¹Ñ+GÓHˆIð ˜IÐ%Ð%ô ˜wŸ|™|¨W¯^©^Ó<ˆKÜ˜\¨;¸¿¹Ñ+DÓEˆIØ˜IÐ%Ð%r   c                ó  — t        |j                  j                  d«      }t        |j                  j                  d«      }t        |j                  j                  d«      }t        |j                  j
                  d«      }t        |j                  j                  d«      }t        |j                  j                  d«      }|j                  j                  }|dk(  r' | ||t        j                  t        ||||¬«      ¬«      S |dk(  r' | ||t        j                  t        ||||¬«      ¬«      S |dk(  r' | ||t        j                  t        ||||¬«      ¬«      S  | ||t        j                  t        ||||¬«      ¬«      S )zúReturns the :class:`Page` based on the DXF attributes stored in the LAYOUT 
        entity. The modelspace layout often **doesn't** have usable page settings!

        Args:
            layout: any paperspace layout or the modelspace layout

        r   )r@   rA   rB   rC   )rZ   r   r   )rf   ÚdxfÚpaper_widthÚpaper_heightÚ
top_marginr{   Úbottom_marginÚleft_marginÚplot_rotationr   r   r>   )	rE   ÚlayoutrW   rX   r@   rA   rB   rC   Úrotations	            r   Úfrom_dxf_layoutzPage.from_dxf_layoutÞ   sR  € ô �f—j‘j×,Ñ,¨aÓ0ˆÜ�v—z‘z×.Ñ.°Ó2ˆÜ�F—J‘J×)Ñ)¨1Ó-ˆÜ�f—j‘j×-Ñ-¨qÓ1ˆÜ�v—z‘z×/Ñ/°Ó3ˆÜ�V—Z‘Z×+Ñ+¨QÓ/ˆà—:‘:×+Ñ+ˆØ�qŠ=ÙØØÜ—‘Ü E°ÀÈ3ÔOô	ð ð ˜Š]ÙØØÜ—‘Ü F°$¸sÈÔOô	ð ð ˜Š]ÙØØÜ—‘Ü D°¸EÈÔOô	ð ñ ØØÜ�H‰HÜ ¨5¸ÀdÔKô	
ð 	
r   N)rR   r?   )rR   r>   )rR   Úbool©rR   ÚNone)T)rR   ztuple[Vec2, Vec2])rˆ   Ú	DXFLayoutrR   r   )r   r   r   r   rS   r   r   rY   r>   rG   rZ   r\   r]   ra   Úpropertyrd   rg   ri   rk   rm   ro   rr   rt   rv   rx   r   rT   rŠ   r   r   r   rV   rV   ƒ   s  … ñð ƒLØƒMØ—8‘8€Eˆ5ÓØ—{‘{ 1“~€GˆWÓ%Ø€IˆuÓØ€J�ÓòSð ò'ó ð'ð ò8ó ð8ð ò<ó ð<ð ò9ó ð9ð ò=ó ð=ð ò5ó ð5ð ò(ó ð(ð ò)ó ð)ó>ó
>ô
&ð  ò+
ó ñ+
r   rV   c                  óÂ   — e Zd ZU dZdZded<   dZded<   dZd	ed
<   ej                  Z
ded<   dZded<   dZd	ed<   dZd	ed<   dZd	ed<   dZd	ed<   dZded<   dd„Zdd„Zy)ÚSettingsaÈ  The Layout settings.

    Attributes:
        content_rotation: Rotate content about 0, 90,  180 or 270 degrees
        fit_page: Scale content to fit the page.
        page_alignment: Supported by backends that use the :class:`Page` class to define
            the size of the output media, default alignment is :attr:`PageAlignment.MIDDLE_CENTER`
        crop_at_margins: crops the content at the page margins if ``True``, when
            supported by the backend, default is ``False``
        scale: Factor to scale the DXF units of model- or paperspace, to represent 1mm
            in the rendered output drawing. Only uniform scaling is supported.

            e.g. scale 1:100 and DXF units are meters, 1m = 1000mm corresponds 10mm in
            the output drawing = 10 / 1000 = 0.01;

            e.g. scale 1:1; DXF units are mm = 1 / 1 = 1.0 the default value

            The value is ignored if the page size is defined and the content fits the page and
            the value is also used to determine missing page sizes (width or height).
        max_stroke_width: Used for :class:`LineweightPolicy.RELATIVE` policy,
            :attr:`max_stroke_width` is defined as percentage of the content extents,
            e.g. 0.001 is 0.1% of max(page-width, page-height)
        min_stroke_width: Used for :class:`LineweightPolicy.RELATIVE` policy,
            :attr:`min_stroke_width` is defined as percentage of :attr:`max_stroke_width`,
            e.g. 0.05 is 5% of :attr:`max_stroke_width`
        fixed_stroke_width: Used for :class:`LineweightPolicy.RELATIVE_FIXED` policy,
            :attr:`fixed_stroke_width` is defined as percentage of :attr:`max_stroke_width`,
            e.g. 0.15 is 15% of :attr:`max_stroke_width`
        output_coordinate_space: expert feature to map the DXF coordinates to the
            output coordinate system [0, output_coordinate_space]
        output_layers: For supported backends, separate the entities into 'layers' in the output

    r   ÚintÚcontent_rotationTr‹   Úfit_pager-   r?   rQ   r/   Úpage_alignmentFÚcrop_at_marginsgü©ñÒMbP?Úmax_stroke_widthgš™™™™™©?Úmin_stroke_widthg333333Ã?Úfixed_stroke_widthi@B Úoutput_coordinate_spaceÚoutput_layersc                óR   — | j                   dvrt        d| j                   › d�«      ‚y )N©r   éZ   é´   é  zinvalid content rotation z, expected: 0, 90, 180, 270)r“   Ú
ValueErrorr`   s    r   ra   zSettings.__post_init__G  s<   € Ø× Ñ Ð(9Ñ9ÜØ+¨D×,AÑ,AÐ+Bð C,ð -óð ð :r   c                ó|   — 	 | j                   t        |j                  |j                  «      z  S # t        $ r Y yw xY w)zfReturns the scaling factor to map page coordinates in mm to output space
        coordinates.
        r-   )rš   Úmaxrg   rk   ÚZeroDivisionError)rO   Úpages     r   Úpage_output_scale_factorz!Settings.page_output_scale_factorN  sF   € ð	Ø×/Ñ/´#Ø× Ñ  $×"3Ñ"3ó3ñ ð øô !ò 	Ùð	ús   ‚,/ ¯	;º;NrŒ   )r¥   rV   rR   r?   )r   r   r   r   r“   rS   r”   rQ   r/   r8   r•   r–   r—   r˜   r™   rš   r›   ra   r¦   r   r   r   r‘   r‘     s‰   … ñ ðD Ð�cÓØ€HˆdÓØ€Eˆ5ÓØ$1×$?Ñ$?€N�MÓ?Ø!€O�TÓ!ð $Ð�eÓ#à"Ð�eÓ"ð !%Ð˜Ó$ð &/Ð˜UÓ.Ø€M�4Óóô	r   r‘   c                  óX   ‡ — e Zd Zddˆ fd„Zd	d„Zd
d„Zdd„Z e«       df	 	 	 dd„Zˆ xZ	S )r
   c                óF   •— t         ‰| �  «        |rdnd| _        || _        y )Nç      ð¿r-   )ÚsuperÚ__init__Úflip_yÚ
render_box)rO   r­   r¬   rN   s      €r   r«   zLayout.__init__[  s    ø€ Ü‰ÑÔÙ%+™T°ˆŒØ$ˆ�r   c                óŽ   — |j                   dvrt        d«      ‚|j                   }| j                  dk(  r|dk(  rd}|S |dk(  rd}|S )Nr�   z2content rotation must be 0, 90, 180 or 270 degreesr©   rž   r    )r“   r¡   r¬   )rO   Úsettingsr‰   s      r   Úget_rotationzLayout.get_rotation`  sZ   € Ø×$Ñ$Ð,=Ñ=ÜÐQÓRÐRØ×,Ñ,ˆØ�;‰;˜$ÒØ˜2Š~Ø�ð ˆð ˜S’Ø�Øˆr   c                óz   — | j                   j                  }|dv r t        |j                  |j                  «      }|S )N)rž   r    )r­   Úsizer   ÚyÚx)rO   r‰   Úcontent_sizes      r   Úget_content_sizezLayout.get_content_sizek  s3   € Ø—‘×+Ñ+ˆØ�yÑ ä §¡°·±Ó?ˆLØÐr   c                ó`   — | j                  |«      }| j                  |«      }t        |||«      S rM   )r°   r¶   Úfinal_page_size)rO   r¥   r¯   r‰   rµ   s        r   Úget_final_pagezLayout.get_final_pager  s1   € Ø×$Ñ$ XÓ.ˆØ×,Ñ,¨XÓ6ˆÜ˜|¨T°8Ó<Ð<r   Tc           
     óœ  — | j                  |«      }| j                  |«      }||j                  z  }|j                  r|t	        ||«      z  }	 |j
                  |j
                  z  }|j                  |«      }||z  }	t        | j                  |	|	| j                  z  |||j                  |j                  |¬«      }
|
S # t        $ r d}Y Œcw xY w)Nr-   )ÚsxÚsyr‰   r¥   rš   r•   rz   )r°   r¶   rQ   r”   Úfit_to_pager´   r¤   r¦   Úplacement_matrixr­   r¬   rš   r•   )rO   r¥   r¯   rz   r‰   rµ   Úcontent_size_mmÚscale_dxf_to_mmÚscale_mm_to_output_spacerQ   Úms              r   Úget_placement_matrixzLayout.get_placement_matrixw  sÛ   € ð ×$Ñ$ XÓ.ˆà×,Ñ,¨XÓ6ˆØ&¨¯©Ñ7ˆØ×ÒØœ{¨?¸DÓAÑAˆOð	"Ø-×/Ñ/°,·.±.Ñ@ˆOð $,×#DÑ#DÀTÓ#JÐ ØÐ":Ñ:ˆÜØ�O‰OØØ�t—{‘{Ñ"ØØØ$,×$DÑ$DØ#×2Ñ2Ø!ô	
ˆð ˆøô !ò 	"Ø!ŠOð	"ús   ÁB= Â=CÃ
C)F)r­   r   rR   r�   )r¯   r‘   rR   r’   )r‰   r’   rR   r   )r¥   rV   r¯   r‘   rR   rV   )r¥   rV   rR   r	   )
r   r   r   r«   r°   r¶   r¹   r‘   rÃ   Ú__classcell__)rN   s   @r   r
   r
   Z  s5   ø„ ö%ó
	óó=ñ $,£:¸$ðØðà	÷r   r
   c                óÄ  — |j                   }|j                  }|j                  }|j                  }|dk(  r)|| j                  z  |j
                  z   |j                  z   }|dk(  r)|| j                  z  |j                  z   |j                  z   }t        |||j                  |j                  «      \  }}t        t        |d«      t        |d«      t        j                   |«      S )Nr[   r   )rQ   rg   rk   ro   r´   rC   rA   r³   r@   rB   Úlimit_page_sizeri   rm   rV   rf   r   r   )rµ   r¥   r¯   rQ   rW   rX   rZ   s          r   r¸   r¸   •  sÁ   € Ø�N‰N€EØ×Ñ€EØ×Ñ€FØ× Ñ €GØ�‚|Ø˜Ÿ™Ñ&¨¯©Ñ5¸¿¹ÑEˆØ�‚}Ø˜Ÿ™Ñ'¨'¯+©+Ñ5¸¿¹ÑFˆä#Øˆv�t×+Ñ+¨T×-BÑ-Bó�M€Eˆ6ô ”�e˜Q“¤ v¨qÓ!1´5·8±8¸WÓEÐEr   c                ó’   — 	 | |z  }|rt        ||«      }||z  } |r| |kD  rt        || «      } | |z  }| |fS # t         $ r | |fcY S w xY wrM   )r¤   Úmin)rW   rX   r\   r]   Úars        r   rÆ   rÆ   ¥  sn   € ðØ�V‰^ˆñ Ü�Z Ó(ˆØ˜‘ˆÙ�U˜YÒ&Ü�I˜uÓ%ˆØ˜‘ˆØ�&ˆ=Ðøô ò Ø�fˆ}Òðús   ‚6 ¶AÁAc                ó  — |j                   }	 |j                  |j                  z
  |j                  z
  | j                  z  }|j
                  |j                  z
  |j                  z
  | j                  z  }t        ||«      S # t        $ r Y yw xY w)Nr-   )ro   rg   rC   rA   r´   rk   r@   rB   r³   r¤   rÈ   )r¿   r¥   rZ   r»   r¼   s        r   r½   r½   µ  s„   € Ø× Ñ €GðØ×Ñ §¡Ñ-°·±Ñ=À×ARÑARÑRˆØ×Ñ '§+¡+Ñ-°·±Ñ>À/×BSÑBSÑSˆô ˆr�2‹;Ðøô ò Ùðús   ŽA&B  Â 	BÂBTc                ó  — 	 |t        |j                  |j                  «      z  }|j                  }	t        |«      dk  rd}t        |«      dk  rd}t        j                  ||d«      }
|r+|
t        j                  t        j                  |«      «      z  }
|
j                  | j                  «       «      }t        |«      }|j                  \  }}|j                  |	j                  z
  |	j                   z
  |z  }|j                  |	j"                  z
  |	j$                  z
  |z  }||j&                  j(                  z
  }||j&                  j*                  z
  }|	j                  |z  }|r|	j"                  |z  }n|	j$                  |z  }t-        |«      r	||dz  z  }nt/        |«      r||z  }t1        |«      r	||dz  z  }nt3        |«      r|r||z  }n|s||z  }|
t        j4                  | |z   | |z   d«      z  S # t        $ r d}Y �Œßw xY w)zdReturns a matrix to place the bbox in the first quadrant of the coordinate
    system (+x, +y).
    r-   g•Ö&è.>r   r   )r£   rg   rk   r¤   ro   Úabsr	   rQ   Úz_rotateÚmathÚradiansÚtransform_verticesÚrect_verticesr   ÚextminrC   rA   r@   rB   r²   r´   r³   Úis_center_alignedÚis_right_alignedÚis_middle_alignedÚis_bottom_alignedÚ	translate)Úbboxr»   r¼   r‰   r¥   rš   r•   rz   Úscale_mm_to_vbrZ   rÂ   ÚcornersÚcanvasÚtxÚtyÚview_box_content_xÚview_box_content_yÚdxÚdyÚoffset_xÚoffset_ys                        r   r¾   r¾   ¿  sü  € ðØ0´3Ø×Ñ˜d×/Ñ/ó4
ñ 
ˆð
 × Ñ €Gô ˆ2ƒw�‚~ØˆÜ
ˆ2ƒw�‚~ØˆÜ�‰�r˜2˜sÓ#€AÙØ	ŒX×ÑœtŸ|™|¨HÓ5Ó6Ñ6ˆð ×"Ñ" 4×#5Ñ#5Ó#7Ó8€GÜ˜7Ó#€Fð �]‰]�F€Bˆð 	×Ñ˜7Ÿ<™<Ñ'¨'¯-©-Ñ7ØñÐð 	×Ñ˜GŸK™KÑ'¨'¯.©.Ñ8ØñÐð 
˜fŸk™kŸm™mÑ	+€BØ	˜fŸk™kŸm™mÑ	+€BØ�|‰|˜nÑ,€HÙØ—;‘; Ñ/‰à—>‘> NÑ2ˆä˜Ô(Ø�B˜‘FÑ‰Ü	˜.Ô	)Ø�B‰ˆÜ˜Ô(Ø�B˜‘FÑ‰Ü	˜>Ô	*ÙØ˜‰N‰HáØ˜‰NˆHØŒx×!Ñ! 2 #¨¡.°2°#¸±.À!ÓDÑDÐDøô_ ò Ø‹ðús   ‚#G6 Ç6HÈHc                ód   — | t         j                  t         j                  t         j                  fv S rM   )r/   r4   r7   r:   ©Úaligns    r   Úis_left_alignedrç     s/   € ØÜ×ÑÜ×!Ñ!Ü×!Ñ!ðð ð r   c                ód   — | t         j                  t         j                  t         j                  fv S rM   )r/   r5   r8   r;   rå   s    r   rÓ   rÓ     s/   € ØÜ× Ñ Ü×#Ñ#Ü×#Ñ#ðð ð r   c                ód   — | t         j                  t         j                  t         j                  fv S rM   )r/   r6   r9   r<   rå   s    r   rÔ   rÔ     s/   € ØÜ×ÑÜ×"Ñ"Ü×"Ñ"ðð ð r   c                ód   — | t         j                  t         j                  t         j                  fv S rM   )r/   r4   r5   r6   rå   s    r   Úis_top_alignedrë     s/   € ØÜ×ÑÜ× Ñ Ü×Ñðð ð r   c                ód   — | t         j                  t         j                  t         j                  fv S rM   )r/   r7   r8   r9   rå   s    r   rÕ   rÕ   $  ó/   € ØÜ×!Ñ!Ü×#Ñ#Ü×"Ñ"ðð ð r   c                ód   — | t         j                  t         j                  t         j                  fv S rM   )r/   r:   r;   r<   rå   s    r   rÖ   rÖ   ,  rí   r   )rµ   r   r¥   rV   r¯   r‘   rR   rV   )
rW   r?   rX   r?   r\   r?   r]   r?   rR   ztuple[float, float])r¿   r   r¥   rV   rR   r?   )rØ   r   r»   r?   r¼   r?   r‰   r?   r¥   rV   rš   r?   r•   r/   rR   r	   )ræ   r/   rR   r‹   )*Ú
__future__r   Útypingr   r   Útyping_extensionsr   rÎ   ÚenumÚdataclassesÚ
ezdxf.mathr   r   r	   Úezdxf.layouts.layoutr
   rŽ   ÚIntEnumr   r   r   Ú
PAGE_SIZESr   r   r   rc   r/   r>   Ú	dataclassrV   r‘   r¸   rÆ   r½   r8   r¾   rç   rÓ   rÔ   rë   rÕ   rÖ   r   r   r   Ú<module>rù      s  ðõ #ß ,Ý "ã Û Û ß 4Ñ 4áÝ8ôˆD�L‰Lô ð*Øˆt�S˜%Ÿ(™(Ð#ðàˆs�C˜Ÿ™Ð"ðð ˆs�C˜Ÿ™Ð"ðð ˆs�C˜Ÿ™Ð"ð	ð
 ˆs�C˜Ÿ™Ð"ðð ˆr�3˜Ÿ
™
Ð#ðð ˆr�2�u—z‘zÐ"ðð ˆr�2�u—z‘zÐ"ðð ˆr�2�u—z‘zÐ"ðð ˆr�2�u—z‘zÐ"ðð ˆr�2�u—z‘zÐ"ðð ˆr�2�u—z‘zÐ"ðð ˆr�2�u—z‘zÐ"ðð ��B˜Ÿ
™
Ð#ðð ˆr�3˜Ÿ
™
Ð#ðð  ˆb�#�u—z‘zÐ"ð!€
ð* 
‡H�HˆcØ	‡H�HˆdØ	‡J�J�Ø	‡H�HˆkØ	‡H�Hˆkð€ô�D—L‘Lô ô6#
ˆjô #
ðL ×Ñ÷F
ð F
ó ðF
ðR ×Ñ÷Ið Ió ðI÷X8ñ 8óvFð ØðØðØ,1ðØ?Dðàóó ð" %2×$?Ñ$?ð ðBEØ
ðBEàðBEð 	ðBEð ð	BEð
 ðBEð #ðBEð "ðBEð óBEóJóóóóôr   