
    Ogr7                     R   d dl mZmZmZmZ d dlmZ d dlZd dlm	Z	 d dl
mZ ddl ddlmZ dd	lmZ d!d
edefdZ G d d      Z G d de      Z G d de      ZdZdZdZdZdedeeef   fdZdedeeeef      fdZdedeeeef      deeef   fdZdedeeef   fdZd Zy)"    )DictAnyListTuple)abstractmethodN)acad_release_to_dxf_version)	BitStream   )*)crc8)
FileHeaderspecsdatac                 \    | j                   t        k  rt        | ||      S t        | ||      S N)version	ACAD_2000DwgHeaderSectionR2000DwgHeaderSectionR2004)r   r   	crc_checks      d/var/www/html/public_html/myphp/venv/lib/python3.12/site-packages/ezdxf/addons/dwg/header_section.pyload_header_sectionr      s,    }}	!$UD)<<$UD)<<    c                   8    e Zd ZddedefdZededefd       Zy)DwgSectionLoaderr   r   c                 L    || _         || _        | j                  |      | _        y r   )r   r   load_data_sectionr   )selfr   r   r   s       r   __init__zDwgSectionLoader.__init__   s"    
"**40	r   returnc                      y r    r   r   s     r   r   z"DwgSectionLoader.load_data_section   s    r   NF)__name__
__module____qualname__r   Bytesr   r   r   r"   r   r   r   r      s7    1j 1 1
 e   r   r   c                   (    e Zd ZdedefdZdefdZy)r   r   r    c                     | j                   j                  t        kD  rt        | j                   j                        | j                   j                  t
           \  }}||||z    S r   )r   r   r   DwgVersionErrorsections	HEADER_ID)r   r   seekersection_sizes       r   r   z'DwgHeaderSectionR2000.load_data_section"   sT    ::	)!$**"4"455#zz229=FVl233r   c                    | j                   }|d d }|dk7  rt        d      d}t        j                  d||      d   }|dz  }t	        ||||z    | j
                  j                  | j
                  j                        }t        |      }||z  }| j                  r:t        j                  d||      d   }t        |dd	 d
      }||k7  rt        d      |dd  }|dk7  rt        d      |S )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   r4   parse_headerr   r   CRCError)	r   r   sentinelindexsizebshdr_varscheckcrcs	            r   load_header_varsz&DwgHeaderSectionR2000.load_header_vars(   s   yy9RS ,A  !!$e4Q7
&zz))ZZ((

  #>>&&tT59!<EtBs|&1C|=>>:RS ,?  r   N)r%   r&   r'   r(   r   r   rB   r"   r   r   r   r   !   s!    4e 4 4"$ "r   r   c                       e Zd ZdedefdZy)r   r   r    c                     t               r   )NotImplementedErrorr#   s     r   	load_datazDwgHeaderSectionR2004.load_dataN   s    !##r   N)r%   r&   r'   r(   rF   r"   r   r   r   r   M   s    $e $ $r   r   ver	skip_bitsskip_next_ifvarr   r    c                 F   t         }t        }| dk7  r| j                  d      }t        |      dkD  r8t        |d   j                            }t        |d   j                            }||fS |d   j                         }|d   dk(  rt        |d d    }||fS t        |   x}}||fS )Nall-r
   r   +)ACAD_13ACAD_LATESTsplitlenr   strip)r   min_vermax_vervv_strs        r   _min_max_versionsrY   X   s    GG%MM#q6A:1!A$**,?G1!A$**,?G G 1ERyC5eCRjA G %@$FF'Gr   descc                 *   g }| j                  d      }|D ]  }|j                         }|r|d   dk(  r	 |j                  d      \  }}|j                         }|j                  d      d   j                         }|t        k(  r!|j	                  t        t        |      f       |t        t        hv r|j	                  ||f       |d   dk(  r|j	                  t        ||ff       t        d|        |S # t        $ r t        d|       w xY w)N
r   #:zUnpack Error in line: $Unknown command: )	rR   rT   
ValueErrorCMD_SET_VERSIONappendrY   CMD_SKIP_BITSCMD_SKIP_NEXT_IFCMD_SET_VAR)rZ   commandslineslinecommandparams         r   load_commandsrl   i   s   HJJtE <zz|tAw#~	>!ZZ_NGU --/C #))+o%OO_.?.FGH(899OOWe,-QZ3OO[7E*:;<0	:;;#<$ O  	>5dV<==	>s   C::Dr>   rg   c                    | j                   }t        }t        }t               }d}|D ]  \  }}|rd}|t        k(  r|\  }}|t
        k(  r| j                  t        |             >|t        k(  rt        |d d|i      }W|t        k(  r)||cxk  r|k  sln o|\  }	}
| j                  |
      ||	<   t        d|        |S )NFheaderr`   )r3   rP   rQ   dictrb   rd   skipintre   evalrf   	read_codera   )r>   rg   r   rU   rV   r?   skip_next_cmdcmdparamsnamecodes              r   parse_bitstreamry      s     mmGGG#vHM 8V!M/!%GWM!GGCK $$ (/CDMK',W,#
d!#d!30677!8" Or   c                 8    t        t              }t        | |      S r   )rl   HEADER_DESCRIPTIONry   )r>   rg   s     r   r9   r9      s    /0H2x((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   r7   ezdxf.lldxf.constr   ezdxf.tools.binarydatar	   constrA   r   
fileheaderr   r(   r   r   r   r   rb   rd   re   rf   strrY   rl   ry   r9   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   