
    hr7                     ^   S SK JrJrJrJr  S SKJr  S SKrS SKJ	r	  S SK
Jr  SSK7  SSKJr  SS	KJr  S!S
\S\4S jjr " S S5      r " S S\5      r " S S\5      rSrSrSrSrS\S\\\4   4S jrS\S\\\\4      4S jrS\S\\\\4      S\\\4   4S jrS\S\\\4   4S jrS rg)"    )DictAnyListTuple)abstractmethodN)acad_release_to_dxf_version)	BitStream   )*)crc8)
FileHeaderspecsdatac                 Z    U R                   [        ::  a  [        XU5      $ [        XU5      $ N)version	ACAD_2000DwgHeaderSectionR2000DwgHeaderSectionR2004)r   r   	crc_checks      Q/var/www/html/env/lib/python3.13/site-packages/ezdxf/addons/dwg/header_section.pyload_header_sectionr      s(    }}	!$U)<<$U)<<    c                   F    \ rS rSrS	S\S\4S jjr\S\S\4S j5       rSr	g)
DwgSectionLoader   r   r   c                 H    Xl         X0l        U R                  U5      U l        g r   )r   r   load_data_sectionr   )selfr   r   r   s       r   __init__DwgSectionLoader.__init__   s    
"**40	r   returnc                     g r    r   r   s     r   r   "DwgSectionLoader.load_data_section   s    r   )r   r   r   NF)
__name__
__module____qualname____firstlineno__r   Bytesr    r   r   __static_attributes__r$   r   r   r   r      s7    1j 1 1
 e   r   r   c                   4    \ rS rSrS\S\4S jrS\4S jrSrg)r   !   r   r"   c                     U R                   R                  [        :  a  [        U R                   R                  5      eU R                   R                  [
           u  p#XX#-    $ r   )r   r   r   DwgVersionErrorsections	HEADER_ID)r   r   seekersection_sizes       r   r   'DwgHeaderSectionR2000.load_data_section"   sN    ::	)!$**"4"455#zz229=V233r   c                    U R                   nUS S nUS:w  a  [        S5      eSn[        R                  " SX5      S   nUS-  n[	        XX4-    U R
                  R                  U R
                  R                  S9n[        U5      nX4-  nU R                  (       a7  [        R                  " SX5      S   n[        USS	 S
S9nXx:w  a  [        S5      eUSS  nUS:w  a  [        S5      eU$ )N   s   {#8_|hNm3_z/Sentinel for start of HEADER section not found.z<Lr      )
dxfversionencodingz<Hii  )seedzCRC error in header section.is   0!VG̠z-Sentinel for end of HEADER section not found.)r   DwgCorruptedHeaderSectionstructunpack_fromr	   r   r   r;   parse_headerr   r   CRCError)	r   r   sentinelindexsizebshdr_varscheckcrcs	            r   load_header_vars&DwgHeaderSectionR2000.load_header_vars(   s   yy9RS ,A  !!$4Q7
&zz))ZZ((

  #>>&&tT9!<EtBs|&1C|=>>:RS ,?  r   r$   N)	r(   r)   r*   r+   r,   r   r   rI   r-   r$   r   r   r   r   !   s!    4e 4 4"$ "r   r   c                   &    \ rS rSrS\S\4S jrSrg)r   M   r   r"   c                     [        5       er   )NotImplementedErrorr%   s     r   	load_dataDwgHeaderSectionR2004.load_dataN   s    !##r   r$   N)r(   r)   r*   r+   r,   rO   r-   r$   r   r   r   r   M   s    $e $ $r   r   ver	skip_bitsskip_next_ifvarr   r"   c                 D   [         n[        nU S:w  a  U R                  S5      n[        U5      S:  a7  [        US   R                  5          n[        US   R                  5          nX4$ US   R                  5       nUS   S:X  a  [        US S    nX4$ [        U   =pX4$ )Nall-r
   r   +)ACAD_13ACAD_LATESTsplitlenr   strip)r   min_vermax_vervv_strs        r   _min_max_versionsrc   X   s    GG%MM#q6A:1!A$**,?G1!A$**,?G  1ERyC5eCRjA  %@$FFr   descc                 D   / nU R                  S5      nU H  nUR                  5       nU(       a	  US   S:X  a  M%   UR                  S5      u  pEUR                  5       nUR                  S5      S   R                  5       nU[        :X  a"  UR	                  [        [        U5      45        M  U[        [        1;   a  UR	                  XE45        M  US   S:X  a  UR	                  [        XE445        M  [        SU 35      e   U$ ! [         a    [        SU 35      ef = f)N
r   #:zUnpack Error in line: $Unknown command: )	r\   r^   
ValueErrorCMD_SET_VERSIONappendrc   CMD_SKIP_BITSCMD_SKIP_NEXT_IFCMD_SET_VAR)rd   commandslineslinecommandparams         r   load_commandsrv   i   s   HJJtEzz|tAw#~	>!ZZ_NG --/C #))+o%OO_.?.FGH(899OOW,-QZ3OO[7*:;<0	:;;# $ O  	>5dV<==	>s   DDrE   rq   c                    U R                   n[        n[        n[        5       nSnU H  u  pxU(       a  SnM  U[        :X  a  Uu  p4M   U[
        :X  a  U R                  [        U5      5        MF  U[        :X  a  [        US SU05      nMa  U[        :X  a+  X2s=::  a  U::  a  O  M{  Uu  pU R                  U
5      XY'   M  M  [        SU 35      e   U$ )NFheaderrj   )r:   rZ   r[   dictrl   rn   skipintro   evalrp   	read_coderk   )rE   rq   r   r_   r`   rF   skip_next_cmdcmdparamsnamecodes              r   parse_bitstreamr      s     mmGGG#vHM!M/!%GWM!GGCK $$ (/CDMK,W,#
!#d!3 - 0677!  " Or   c                 6    [        [        5      n[        X5      $ r   )rv   HEADER_DESCRIPTIONr   )rE   rq   s     r   r@   r@      s    /0H2((r   a?#  
ver: R2007
$SIZE_IN_BITS: RL # Size in bits 

ver: R2013+ 
$REQUIREDVERSIONS: BLL # default value 0, read only 

ver: all
$UNKNOWN: BD # Unknown, default value 412148564080.0 
$UNKNOWN: BD # Unknown, default value 1.0 
$UNKNOWN: BD # Unknown, default value 1.0 
$UNKNOWN: BD # Unknown, default value 1.0 
$UNKNOWN: TV # Unknown text string, default "" 
$UNKNOWN: TV # Unknown text string, default "" 
$UNKNOWN: TV # Unknown text string, default "" 
$UNKNOWN: TV # Unknown text string, default "" 
$UNKNOWN: BL # Unknown long, default value 24L 
$UNKNOWN: BL # Unknown long, default value 0L; 

ver: R13-R14 
$UNKNOWN: BS # Unknown short, default value 0 

ver: R13-R2000 
$CURRENT_VIEWPORT_ENTITY_HEADER: H # Handle of the current viewport entity header (hard pointer) 

ver: all
$DIMASO: B 
$DIMSHO: B 

ver: R13-R14 
$DIMSAV: B # Undocumented 

ver: all
$PLINEGEN: B 
$ORTHOMODE: B 
$REGENMODE: B 
$FILLMODE: B 
$QTEXTMODE: B 
$PSLTSCALE: B 
$LIMCHECK: B 

ver: R13-R14 
$BLIPMODE: B 

ver: R2004+ 
$UNKNOWN: B #  Undocumented 

ver: all 
$USRTIMER: B #  (User timer on/off) 
$SKPOLY: B 
$ANGDIR: B 
$SPLFRAME: B 

ver: R13-R14 
$ATTREQ: B
$ATTDIA: B

ver: all 
$MIRRTEXT: B 
$WORLDVIEW: B

ver: R13-R14 
$WIREFRAME: B # Undocumented. 

ver: all
$TILEMODE: B 
$PLIMCHECK: B 
$VISRETAIN: B 

ver: R13-R14 
$DELOBJ: B

ver: all
$DISPSILH: B 
$PELLIPSE: B # (not present in DXF) 
$PROXYGRAPHICS: BS 

ver: R13-R14 
$DRAGMODE: BS 

ver: all 
$TREEDEPTH: BS 
$LUNITS: BS 
$LUPREC: BS 
$AUNITS: BS 
$AUPREC: BS 

ver: R13-R14 
$OSMODE: BS 

ver: all 
$ATTMODE: BS 

ver: R13-R14 
$COORDS: BS 

ver: all 
$PDMODE: BS 

ver: R13-R14 
$PICKSTYLE: BS 

ver: R2004+
$UNKNOWN: BL 
$UNKNOWN: BL 
$UNKNOWN: BL 

ver: all 
$USERI1: BS 
$USERI2: BS 
$USERI3: BS 
$USERI4: BS 
$USERI5: BS 
$SPLINESEGS: BS 
$SURFU: BS 
$SURFV: BS 
$SURFTYPE: BS 
$SURFTAB1: BS 
$SURFTAB2: BS 
$SPLINETYPE: BS 
$SHADEDGE: BS 
$SHADEDIF: BS 
$UNITMODE: BS 
$MAXACTVP: BS 
$ISOLINES: BS 
$CMLJUST: BS 
$TEXTQLTY: BS 
$LTSCALE: BD 
$TEXTSIZE: BD 
$TRACEWID: BD 
$SKETCHINC: BD 
$FILLETRAD: BD 
$THICKNESS: BD 
$ANGBASE: BD 
$PDSIZE: BD 
$PLINEWID: BD 
$USERR1: BD 
$USERR2: BD 
$USERR3: BD 
$USERR4: BD 
$USERR5: BD 
$CHAMFERA: BD 
$CHAMFERB: BD 
$CHAMFERC: BD 
$CHAMFERD: BD 
$FACETRES: BD 
$CMLSCALE: BD 
$CELTSCALE: BD 

ver: R13-R2004 
$MENUNAME: TV

ver: all 
$TDCREATE: BL # (Julian day) 
$TDCREATE: BL # (Milliseconds into the day) 
$TDUPDATE: BL # (Julian day) 
$TDUPDATE: BL # (Milliseconds into the day) 

ver: R2004+
$UNKNOWN: BL 
$UNKNOWN: BL 
$UNKNOWN: BL 

ver: all 
$TDINDWG: BL # (Days) 
$TDINDWG: BL # (Milliseconds into the day) 
$TDUSRTIMER: BL # (Days) 
$TDUSRTIMER: BL # (Milliseconds into the day) 
$CECOLOR: CMC

# with an 8-bit length specifier preceding the handle bytes (standard hex handle form) (code 0). 
# The HANDSEED is not part of the handle stream, but of the normal data stream (relevant for R21 and later). 

$HANDSEED: H # The next handle 
$CLAYER: H # (hard pointer) 
$TEXTSTYLE: H # (hard pointer) 
$CELTYPE: H # (hard pointer) 

ver: R2007+
$CMATERIAL: H # (hard pointer) 

ver: all 
$DIMSTYLE: H # (hard pointer) 
$CMLSTYLE: H # (hard pointer) 

ver: R2000+ 
$PSVPSCALE: BD 

ver: all 
$PINSBASE: 3BD # (PSPACE) 
$PEXTMIN: 3BD # (PSPACE) 
$PEXTMAX: 3BD # (PSPACE) 
$PLIMMIN: 2RD # (PSPACE) 
$PLIMMAX: 2RD # (PSPACE) 
$PELEVATION: BD # (PSPACE) 
$PUCSORG: 3BD # (PSPACE) 
$PUCSXDIR: 3BD # (PSPACE) 
$PUCSYDIR: 3BD # (PSPACE) 
$PUCSNAME: H # (PSPACE) (hard pointer) 

ver: R2000+
$PUCSORTHOREF: H # (hard pointer) 
$PUCSORTHOVIEW: BS 
$PUCSBASE: H # (hard pointer) 
$PUCSORGTOP: 3BD 
$PUCSORGBOTTOM: 3BD 
$PUCSORGLEFT: 3BD 
$PUCSORGRIGHT: 3BD 
$PUCSORGFRONT: 3BD 
$PUCSORGBACK: 3BD 

ver: all 
$INSBASE: 3BD # (MSPACE) 
$EXTMIN: 3BD # (MSPACE) 
$EXTMAX: 3BD # (MSPACE)
$LIMMIN: 2RD # (MSPACE) 
$LIMMAX: 2RD # (MSPACE) 
$ELEVATION: BD # (MSPACE) 
$UCSORG: 3BD # (MSPACE) 
$UCSXDIR: 3BD # (MSPACE) 
$UCSYDIR: 3BD # (MSPACE) 
$UCSNAME: H # (MSPACE) (hard pointer) 

ver: R2000+ 
$UCSORTHOREF: H # (hard pointer) 
$UCSORTHOVIEW: BS 
$UCSBASE: H # (hard pointer) 
$UCSORGTOP: 3BD 
$UCSORGBOTTOM: 3BD 
$UCSORGLEFT: 3BD 
$UCSORGRIGHT: 3BD 
$UCSORGFRONT: 3BD 
$UCSORGBACK: 3BD 
$DIMPOST: TV 
$DIMAPOST: TV 

ver: R13-R14
$DIMTOL: B 
$DIMLIM: B 
$DIMTIH: B 
$DIMTOH: B 
$DIMSE1: B 
$DIMSE2: B 
$DIMALT: B 
$DIMTOFL: B 
$DIMSAH: B 
$DIMTIX: B 
$DIMSOXD: B 
$DIMALTD: RC 
$DIMZIN: RC 
$DIMSD1: B 
$DIMSD2: B 
$DIMTOLJ: RC 
$DIMJUST: RC 
$DIMFIT: RC 
$DIMUPT: B 
$DIMTZIN: RC  
$DIMALTZ: RC 
$DIMALTTZ: RC 
$DIMTAD: RC 
$DIMUNIT: BS 
$DIMAUNIT: BS 
$DIMDEC: BS 
$DIMTDEC: BS 
$DIMALTU: BS 
$DIMALTTD: BS 
$DIMTXSTY: H # (hard pointer) 

ver: all 
$DIMSCALE: BD 
$DIMASZ: BD 
$DIMEXO: BD 
$DIMDLI: BD 
$DIMEXE: BD 
$DIMRND: BD 
$DIMDLE: BD 
$DIMTP: BD 
$DIMTM: BD 

ver: R2007+ 
$DIMFXL: BD 
$DIMJOGANG: BD 
$DIMTFILL: BS 
$DIMTFILLCLR: CMC 

ver: R2000+
$DIMTOL: B 
$DIMLIM: B 
$DIMTIH: B 
$DIMTOH: B 
$DIMSE1: B 
$DIMSE2: B 
$DIMTAD: BS 
$DIMZIN: BS 
$DIMAZIN: BS 

ver: R2007+ 
$DIMARCSYM: BS 

ver: all 
$DIMTXT: BD 
$DIMCEN: BD 
$DIMTSZ: BD 
$DIMALTF: BD 
$DIMLFAC: BD 
$DIMTVP: BD 
$DIMTFAC: BD 
$DIMGAP: BD 

ver: R13-R14 
$DIMPOST: T 
$DIMAPOST: T 
$DIMBLK: T 
$DIMBLK1: T 
$DIMBLK2: T 

ver: R2000+ 
$DIMALTRND: BD 
$DIMALT: B 
$DIMALTD: BS 
$DIMTOFL: B 
$DIMSAH: B 
$DIMTIX: B 
$DIMSOXD: B 

ver: all 
$DIMCLRD: CMC 
$DIMCLRE: CMC 
$DIMCLRT: CMC 

ver: R2000+
$DIMADEC: BS 
$DIMDEC: BS 
$DIMTDEC: BS 
$DIMALTU: BS 
$DIMALTTD: BS 
$DIMAUNIT: BS 
$DIMFRAC: BS 
$DIMLUNIT: BS 
$DIMDSEP: BS 
$DIMTMOVE: BS 
$DIMJUST: BS 
$DIMSD1: B 
$DIMSD2: B 
$DIMTOLJ: BS 
$DIMTZIN: BS 
$DIMALTZ: BS 
$DIMALTTZ: BS 
$DIMUPT: B 
$DIMATFIT: BS 

ver: R2007+
$DIMFXLON: B 

ver: R2010+ 
$DIMTXTDIRECTION: B 
$DIMALTMZF: BD 
$DIMALTMZS: T 
$DIMMZF: BD 
$DIMMZS: T 

ver: R2000+ 
$DIMTXSTY: H # (hard pointer) 
$DIMLDRBLK: H # (hard pointer) 
$DIMBLK: H # (hard pointer) 
$DIMBLK1: H # (hard pointer) 
$DIMBLK2: H # (hard pointer) 

ver: R2007+ 
$DIMLTYPE: H # (hard pointer) 
$DIMLTEX1: H # (hard pointer) 
$DIMLTEX2: H # (hard pointer) 

ver: R2000+ 
$DIMLWD: BS 
$DIMLWE: BS 

ver: all 
$BLOCK_CONTROL_OBJECT: H # (hard owner) Block Record Table
$LAYER_CONTROL_OBJECT: H # (hard owner) Layer Table
$STYLE_CONTROL_OBJECT: H # (hard owner) Style Table
$LINETYPE_CONTROL_OBJECT: H # (hard owner) Linetype Table
$VIEW_CONTROL_OBJECT: H # (hard owner) View table
$UCS_CONTROL_OBJECT: H # (hard owner)  UCS Table
$VPORT_CONTROL_OBJECT: H # (hard owner)  Viewport table
$APPID_CONTROL_OBJECT: H # (hard owner)  AppID Table
$DIMSTYLE_CONTROL_OBJECT: H # (hard owner)  Dimstyle Table

ver: R13-R2000 
$VIEWPORT_ENTITY_HEADER_CONTROL_OBJECT: H # (hard owner) 

ver: all 
$ACAD_GROUP_DICTIONARY: H # (hard pointer) 
$ACAD_MLINESTYLE_DICTIONARY: H # (hard pointer) 
$ROOT_DICTIONARY: H # (NAMED OBJECTS) (hard owner) 

ver: R2000+ 
$TSTACKALIGN: BS # default = 1 (not present in DXF) 
$TSTACKSIZE: BS #  default = 70 (not present in DXF) 
$HYPERLINKBASE: TV 
$STYLESHEET: TV 
$LAYOUTS_DICTIONARY: H # (hard pointer) 
$PLOTSETTINGS_DICTIONARY: H # (hard pointer) 
$PLOTSTYLES_DICTIONARY: H # (hard pointer) 

ver: R2004+ 
$MATERIALS_DICTIONARY: H # (hard pointer) 
$COLORS_DICTIONARY: H # (hard pointer) 

ver: R2007+ 
$VISUALSTYLE_DICTIONARY: H # (hard pointer) 

ver: R2013+
$UNKNOWN: H # (hard pointer) 

ver: R2000+
$R2000_PLUS_FLAGS: BL
#    CELWEIGHT Flags & 0x001F 
#    ENDCAPS Flags & 0x0060 
#    JOINSTYLE Flags & 0x0180 
#    LWDISPLAY !(Flags & 0x0200) 
#    XEDIT !(Flags & 0x0400) 
#    EXTNAMES Flags & 0x0800 
#    PSTYLEMODE Flags & 0x2000 
#    OLESTARTUP Flags & 0x4000 
$INSUNITS: BS 
$CEPSNTYPE: BS

skip_next_if: header['$CEPSNTYPE'] != 3
$CPSNID: H # (present only if CEPSNTYPE == 3) (hard pointer)

$FINGERPRINTGUID: TV 
$VERSIONGUID: TV 

ver: R2004+ 
$SORTENTS: RC 
$INDEXCTL: RC 
$HIDETEXT: RC 
$XCLIPFRAME: RC # before R2010 the value can be 0 or 1 only. 
$DIMASSOC: RC 
$HALOGAP: RC 
$OBSCUREDCOLOR: BS 
$INTERSECTIONCOLOR: BS 
$OBSCUREDLTYPE: RC 
$INTERSECTIONDISPLAY: RC 
$PROJECTNAME: TV 

ver: all 
$PAPER_SPACE_BLOCK_RECORD: H # (hard pointer) 
$MODEL_SPACE_BLOCK_RECORD: H #  (hard pointer) 
$BYLAYER_LTYPE: H # (hard pointer) 
$BYBLOCK_LTYPE: H # (hard pointer) 
$CONTINUOUS_LTYPE: H # (hard pointer) 

ver: R2007+ 
$CAMERADISPLAY: B 
$UNKNOWN: BL 
$UNKNOWN: BL 
$UNKNOWN: BD 
$STEPSPERSEC: BD 
$STEPSIZE: BD 
$3DDWFPREC: BD 
$LENSLENGTH: BD 
$CAMERAHEIGHT: BD 
$SOLIDHIST: RC 
$SHOWHIST: RC 
$PSOLWIDTH: BD 
$PSOLHEIGHT: BD 
$LOFTANG1: BD 
$LOFTANG2: BD 
$LOFTMAG1: BD 
$LOFTMAG2: BD 
$LOFTPARAM: BS 
$LOFTNORMALS: RC 
$LATITUDE: BD 
$LONGITUDE: BD 
$NORTHDIRECTION: BD 
$TIMEZONE: BL 
$LIGHTGLYPHDISPLAY: RC 
$TILEMODELIGHTSYNCH: RC 
$DWFFRAME: RC 
$DGNFRAME: RC 
$UNKNOWN: B 
$INTERFERECOLOR: CMC 
$INTERFEREOBJVS: H # (hard pointer) 
$INTERFEREVPVS: H # (hard pointer) 
$CSHADOW: RC 
$UNKNOWN: BD 

ver: R14+ 
$UNKNOWN: BS # short (type 5/6 only) these do not seem to be required, 
$UNKNOWN: BS # short (type 5/6 only) even for type 5. 
$UNKNOWN: BS # short (type 5/6 only) 
$UNKNOWN: BS # short (type 5/6 only) 

r'   ) typingr   r   r   r   abcr   r>   ezdxf.lldxf.constr   ezdxf.tools.binarydatar	   constrH   r   
fileheaderr   r,   r   r   r   r   rl   rn   ro   rp   strrc   rv   r   r@   r   r$   r   r   <module>r      s   * )   9 ,   "=z = = ), )X$1 $
 ! s uS#X " U38_ 5 0!%S/2	#s(^8)Y )4S> )
o r   