# Copyright (c) 2020-2021, Manfred Moitzi # License: MIT License from typing import Dict, Tuple import struct from .const import * from .crc import crc8 codepage_to_encoding = { 37: "cp874", # Thai, 38: "cp932", # Japanese 39: "gbk", # UnifiedChinese 40: "cp949", # Korean 41: "cp950", # TradChinese 28: "cp1250", # CentralEurope 29: "cp1251", # Cyrillic 30: "cp1252", # WesternEurope 32: "cp1253", # Greek 33: "cp1254", # Turkish 34: "cp1255", # Hebrew 35: "cp1256", # Arabic 36: "cp1257", # Baltic } FILE_HEADER_MAGIC = { 3: 0xA598, 4: 0x8101, 5: 0x3CC4, 6: 0x8461, } class FileHeader: def __init__(self, data: Bytes, crc_check=False): self.crc_check = crc_check if len(data) < 6: raise DwgVersionError("Not a DWG file.") ver = data[:6].decode(errors="ignore") # type: ignore if ver not in SUPPORTED_VERSIONS: raise DwgVersionError( f"Not a DWG file or unsupported DWG version, signature: {ver}." ) self.version: str = ver codepage: int = struct.unpack_from("