polyfile-weave 0.5.5__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of polyfile-weave might be problematic. Click here for more details.

Files changed (585) hide show
  1. polyfile/__init__.py +15 -0
  2. polyfile/__main__.py +394 -0
  3. polyfile/arithmetic.py +27 -0
  4. polyfile/ast.py +114 -0
  5. polyfile/debugger.py +1039 -0
  6. polyfile/expressions.py +346 -0
  7. polyfile/fileutils.py +343 -0
  8. polyfile/html.py +135 -0
  9. polyfile/http/__init__.py +1 -0
  10. polyfile/http/defacto.py +37 -0
  11. polyfile/http/deprecated.py +51 -0
  12. polyfile/http/experimental.py +67 -0
  13. polyfile/http/http_11.py +548 -0
  14. polyfile/http/matcher.py +37 -0
  15. polyfile/http/structured_headers.py +48 -0
  16. polyfile/iterators.py +72 -0
  17. polyfile/jpeg.py +24 -0
  18. polyfile/kaitai/__init__.py +0 -0
  19. polyfile/kaitai/compiler.py +156 -0
  20. polyfile/kaitai/parser.py +312 -0
  21. polyfile/kaitai/parsers/__init__.py +0 -0
  22. polyfile/kaitai/parsers/aix_utmp.py +116 -0
  23. polyfile/kaitai/parsers/allegro_dat.py +367 -0
  24. polyfile/kaitai/parsers/andes_firmware.py +64 -0
  25. polyfile/kaitai/parsers/android_bootldr_asus.py +105 -0
  26. polyfile/kaitai/parsers/android_bootldr_huawei.py +181 -0
  27. polyfile/kaitai/parsers/android_bootldr_qcom.py +217 -0
  28. polyfile/kaitai/parsers/android_dto.py +138 -0
  29. polyfile/kaitai/parsers/android_img.py +319 -0
  30. polyfile/kaitai/parsers/android_nanoapp_header.py +83 -0
  31. polyfile/kaitai/parsers/android_opengl_shaders_cache.py +151 -0
  32. polyfile/kaitai/parsers/android_sparse.py +237 -0
  33. polyfile/kaitai/parsers/android_super.py +401 -0
  34. polyfile/kaitai/parsers/apm_partition_table.py +196 -0
  35. polyfile/kaitai/parsers/apple_single_double.py +180 -0
  36. polyfile/kaitai/parsers/asn1_der.py +235 -0
  37. polyfile/kaitai/parsers/au.py +138 -0
  38. polyfile/kaitai/parsers/avantes_roh60.py +112 -0
  39. polyfile/kaitai/parsers/avi.py +296 -0
  40. polyfile/kaitai/parsers/bcd.py +111 -0
  41. polyfile/kaitai/parsers/bitcoin_transaction.py +210 -0
  42. polyfile/kaitai/parsers/blender_blend.py +334 -0
  43. polyfile/kaitai/parsers/bmp.py +780 -0
  44. polyfile/kaitai/parsers/bson.py +411 -0
  45. polyfile/kaitai/parsers/btrfs_stream.py +318 -0
  46. polyfile/kaitai/parsers/bytes_with_io.py +27 -0
  47. polyfile/kaitai/parsers/chrome_pak.py +194 -0
  48. polyfile/kaitai/parsers/code_6502.py +456 -0
  49. polyfile/kaitai/parsers/compressed_resource.py +217 -0
  50. polyfile/kaitai/parsers/cpio_old_le.py +154 -0
  51. polyfile/kaitai/parsers/cramfs.py +344 -0
  52. polyfile/kaitai/parsers/creative_voice_file.py +342 -0
  53. polyfile/kaitai/parsers/dbf.py +274 -0
  54. polyfile/kaitai/parsers/dcmp_0.py +664 -0
  55. polyfile/kaitai/parsers/dcmp_1.py +422 -0
  56. polyfile/kaitai/parsers/dcmp_2.py +312 -0
  57. polyfile/kaitai/parsers/dcmp_variable_length_integer.py +66 -0
  58. polyfile/kaitai/parsers/dex.py +1086 -0
  59. polyfile/kaitai/parsers/dicom.py +4370 -0
  60. polyfile/kaitai/parsers/dime_message.py +201 -0
  61. polyfile/kaitai/parsers/dns_packet.py +569 -0
  62. polyfile/kaitai/parsers/doom_wad.py +654 -0
  63. polyfile/kaitai/parsers/dos_datetime.py +191 -0
  64. polyfile/kaitai/parsers/dos_mz.py +172 -0
  65. polyfile/kaitai/parsers/ds_store.py +513 -0
  66. polyfile/kaitai/parsers/dtb.py +310 -0
  67. polyfile/kaitai/parsers/dune_2_pak.py +126 -0
  68. polyfile/kaitai/parsers/edid.py +472 -0
  69. polyfile/kaitai/parsers/efivar_signature_list.py +331 -0
  70. polyfile/kaitai/parsers/elf.py +2482 -0
  71. polyfile/kaitai/parsers/ethernet_frame.py +114 -0
  72. polyfile/kaitai/parsers/exif.py +723 -0
  73. polyfile/kaitai/parsers/ext2.py +537 -0
  74. polyfile/kaitai/parsers/fallout2_dat.py +187 -0
  75. polyfile/kaitai/parsers/fallout_dat.py +156 -0
  76. polyfile/kaitai/parsers/fasttracker_xm_module.py +558 -0
  77. polyfile/kaitai/parsers/ftl_dat.py +90 -0
  78. polyfile/kaitai/parsers/genmidi_op2.py +161 -0
  79. polyfile/kaitai/parsers/gettext_mo.py +541 -0
  80. polyfile/kaitai/parsers/gif.py +492 -0
  81. polyfile/kaitai/parsers/gimp_brush.py +244 -0
  82. polyfile/kaitai/parsers/glibc_utmp.py +114 -0
  83. polyfile/kaitai/parsers/gltf_binary.py +132 -0
  84. polyfile/kaitai/parsers/google_protobuf.py +151 -0
  85. polyfile/kaitai/parsers/gpt_partition_table.py +175 -0
  86. polyfile/kaitai/parsers/gran_turismo_vol.py +140 -0
  87. polyfile/kaitai/parsers/grub2_font.py +337 -0
  88. polyfile/kaitai/parsers/gzip.py +232 -0
  89. polyfile/kaitai/parsers/hashcat_restore.py +60 -0
  90. polyfile/kaitai/parsers/hccap.py +111 -0
  91. polyfile/kaitai/parsers/hccapx.py +103 -0
  92. polyfile/kaitai/parsers/heaps_pak.py +177 -0
  93. polyfile/kaitai/parsers/heroes_of_might_and_magic_agg.py +116 -0
  94. polyfile/kaitai/parsers/heroes_of_might_and_magic_bmp.py +34 -0
  95. polyfile/kaitai/parsers/icmp_packet.py +136 -0
  96. polyfile/kaitai/parsers/ico.py +129 -0
  97. polyfile/kaitai/parsers/id3v1_1.py +220 -0
  98. polyfile/kaitai/parsers/id3v2_3.py +324 -0
  99. polyfile/kaitai/parsers/id3v2_4.py +423 -0
  100. polyfile/kaitai/parsers/ines.py +282 -0
  101. polyfile/kaitai/parsers/ipv4_packet.py +158 -0
  102. polyfile/kaitai/parsers/ipv6_packet.py +55 -0
  103. polyfile/kaitai/parsers/iso9660.py +544 -0
  104. polyfile/kaitai/parsers/java_class.py +1113 -0
  105. polyfile/kaitai/parsers/jpeg.py +361 -0
  106. polyfile/kaitai/parsers/luks.py +149 -0
  107. polyfile/kaitai/parsers/lzh.py +165 -0
  108. polyfile/kaitai/parsers/mac_os_resource_snd.py +493 -0
  109. polyfile/kaitai/parsers/mach_o.py +3033 -0
  110. polyfile/kaitai/parsers/mach_o_fat.py +92 -0
  111. polyfile/kaitai/parsers/magicavoxel_vox.py +391 -0
  112. polyfile/kaitai/parsers/manifest.json +1 -0
  113. polyfile/kaitai/parsers/mbr_partition_table.py +119 -0
  114. polyfile/kaitai/parsers/mcap.py +1015 -0
  115. polyfile/kaitai/parsers/microsoft_cfb.py +293 -0
  116. polyfile/kaitai/parsers/microsoft_network_monitor_v2.py +309 -0
  117. polyfile/kaitai/parsers/microsoft_pe.py +765 -0
  118. polyfile/kaitai/parsers/mifare_classic.py +706 -0
  119. polyfile/kaitai/parsers/minecraft_nbt.py +449 -0
  120. polyfile/kaitai/parsers/monomakh_sapr_chg.py +69 -0
  121. polyfile/kaitai/parsers/mozilla_mar.py +239 -0
  122. polyfile/kaitai/parsers/mp4.py +333 -0
  123. polyfile/kaitai/parsers/msgpack.py +467 -0
  124. polyfile/kaitai/parsers/nitf.py +1189 -0
  125. polyfile/kaitai/parsers/nt_mdt_pal.py +155 -0
  126. polyfile/kaitai/parsers/ogg.py +118 -0
  127. polyfile/kaitai/parsers/openpgp_message.py +993 -0
  128. polyfile/kaitai/parsers/packet_ppi.py +515 -0
  129. polyfile/kaitai/parsers/pcap.py +344 -0
  130. polyfile/kaitai/parsers/pcf_font.py +506 -0
  131. polyfile/kaitai/parsers/pcx.py +195 -0
  132. polyfile/kaitai/parsers/pcx_dcx.py +79 -0
  133. polyfile/kaitai/parsers/phar_without_stub.py +399 -0
  134. polyfile/kaitai/parsers/php_serialized_value.py +505 -0
  135. polyfile/kaitai/parsers/png.py +721 -0
  136. polyfile/kaitai/parsers/protocol_body.py +260 -0
  137. polyfile/kaitai/parsers/psx_tim.py +104 -0
  138. polyfile/kaitai/parsers/python_pickle.py +718 -0
  139. polyfile/kaitai/parsers/python_pyc_27.py +510 -0
  140. polyfile/kaitai/parsers/quake_mdl.py +441 -0
  141. polyfile/kaitai/parsers/quake_pak.py +112 -0
  142. polyfile/kaitai/parsers/quicktime_mov.py +634 -0
  143. polyfile/kaitai/parsers/rar.py +265 -0
  144. polyfile/kaitai/parsers/regf.py +569 -0
  145. polyfile/kaitai/parsers/renderware_binary_stream.py +877 -0
  146. polyfile/kaitai/parsers/resource_fork.py +611 -0
  147. polyfile/kaitai/parsers/respack.py +57 -0
  148. polyfile/kaitai/parsers/riff.py +409 -0
  149. polyfile/kaitai/parsers/rpm.py +964 -0
  150. polyfile/kaitai/parsers/rtcp_payload.py +579 -0
  151. polyfile/kaitai/parsers/rtp_packet.py +150 -0
  152. polyfile/kaitai/parsers/rtpdump.py +115 -0
  153. polyfile/kaitai/parsers/ruby_marshal.py +423 -0
  154. polyfile/kaitai/parsers/s3m.py +493 -0
  155. polyfile/kaitai/parsers/saints_row_2_vpp_pc.py +254 -0
  156. polyfile/kaitai/parsers/shapefile_index.py +174 -0
  157. polyfile/kaitai/parsers/shapefile_main.py +893 -0
  158. polyfile/kaitai/parsers/some_ip.py +209 -0
  159. polyfile/kaitai/parsers/some_ip_container.py +37 -0
  160. polyfile/kaitai/parsers/some_ip_sd.py +86 -0
  161. polyfile/kaitai/parsers/some_ip_sd_entries.py +160 -0
  162. polyfile/kaitai/parsers/some_ip_sd_options.py +374 -0
  163. polyfile/kaitai/parsers/specpr.py +404 -0
  164. polyfile/kaitai/parsers/sqlite3.py +472 -0
  165. polyfile/kaitai/parsers/ssh_public_key.py +252 -0
  166. polyfile/kaitai/parsers/standard_midi_file.py +390 -0
  167. polyfile/kaitai/parsers/stl.py +111 -0
  168. polyfile/kaitai/parsers/sudoers_ts.py +201 -0
  169. polyfile/kaitai/parsers/swf.py +406 -0
  170. polyfile/kaitai/parsers/systemd_journal.py +361 -0
  171. polyfile/kaitai/parsers/tcp_segment.py +57 -0
  172. polyfile/kaitai/parsers/tga.py +213 -0
  173. polyfile/kaitai/parsers/tls_client_hello.py +293 -0
  174. polyfile/kaitai/parsers/tr_dos_image.py +322 -0
  175. polyfile/kaitai/parsers/tsm.py +198 -0
  176. polyfile/kaitai/parsers/ttf.py +1847 -0
  177. polyfile/kaitai/parsers/udp_datagram.py +42 -0
  178. polyfile/kaitai/parsers/uefi_te.py +236 -0
  179. polyfile/kaitai/parsers/uimage.py +198 -0
  180. polyfile/kaitai/parsers/utf8_string.py +137 -0
  181. polyfile/kaitai/parsers/vfat.py +410 -0
  182. polyfile/kaitai/parsers/vlq_base128_be.py +104 -0
  183. polyfile/kaitai/parsers/vlq_base128_le.py +129 -0
  184. polyfile/kaitai/parsers/vmware_vmdk.py +167 -0
  185. polyfile/kaitai/parsers/vp8_ivf.py +112 -0
  186. polyfile/kaitai/parsers/warcraft_2_pud.py +423 -0
  187. polyfile/kaitai/parsers/wav.py +1014 -0
  188. polyfile/kaitai/parsers/websocket.py +167 -0
  189. polyfile/kaitai/parsers/windows_evt_log.py +304 -0
  190. polyfile/kaitai/parsers/windows_lnk_file.py +467 -0
  191. polyfile/kaitai/parsers/windows_minidump.py +575 -0
  192. polyfile/kaitai/parsers/windows_resource_file.py +243 -0
  193. polyfile/kaitai/parsers/windows_shell_items.py +190 -0
  194. polyfile/kaitai/parsers/windows_systemtime.py +52 -0
  195. polyfile/kaitai/parsers/wmf.py +502 -0
  196. polyfile/kaitai/parsers/xar.py +181 -0
  197. polyfile/kaitai/parsers/xwd.py +189 -0
  198. polyfile/kaitai/parsers/zip.py +685 -0
  199. polyfile/kaitai/parsers/zisofs.py +158 -0
  200. polyfile/kaitai/parsers/zx_spectrum_tap.py +184 -0
  201. polyfile/kaitaimatcher.py +113 -0
  202. polyfile/languagematcher.py +217 -0
  203. polyfile/logger.py +135 -0
  204. polyfile/magic.py +2983 -0
  205. polyfile/magic_defs/COPYING +29 -0
  206. polyfile/magic_defs/__init__.py +0 -0
  207. polyfile/magic_defs/acorn +102 -0
  208. polyfile/magic_defs/adi +13 -0
  209. polyfile/magic_defs/adventure +122 -0
  210. polyfile/magic_defs/aes +29 -0
  211. polyfile/magic_defs/algol68 +35 -0
  212. polyfile/magic_defs/allegro +9 -0
  213. polyfile/magic_defs/alliant +18 -0
  214. polyfile/magic_defs/alpha +32 -0
  215. polyfile/magic_defs/amanda +12 -0
  216. polyfile/magic_defs/amigaos +218 -0
  217. polyfile/magic_defs/android +259 -0
  218. polyfile/magic_defs/animation +1197 -0
  219. polyfile/magic_defs/aout +46 -0
  220. polyfile/magic_defs/apache +28 -0
  221. polyfile/magic_defs/apl +7 -0
  222. polyfile/magic_defs/apple +773 -0
  223. polyfile/magic_defs/application +7 -0
  224. polyfile/magic_defs/applix +13 -0
  225. polyfile/magic_defs/apt +52 -0
  226. polyfile/magic_defs/archive +2586 -0
  227. polyfile/magic_defs/aria +38 -0
  228. polyfile/magic_defs/arm +50 -0
  229. polyfile/magic_defs/asf +132 -0
  230. polyfile/magic_defs/assembler +18 -0
  231. polyfile/magic_defs/asterix +18 -0
  232. polyfile/magic_defs/att3b +41 -0
  233. polyfile/magic_defs/audio +1291 -0
  234. polyfile/magic_defs/avm +33 -0
  235. polyfile/magic_defs/basis +18 -0
  236. polyfile/magic_defs/beetle +7 -0
  237. polyfile/magic_defs/ber +65 -0
  238. polyfile/magic_defs/bflt +14 -0
  239. polyfile/magic_defs/bhl +10 -0
  240. polyfile/magic_defs/bioinformatics +178 -0
  241. polyfile/magic_defs/biosig +154 -0
  242. polyfile/magic_defs/blackberry +8 -0
  243. polyfile/magic_defs/blcr +25 -0
  244. polyfile/magic_defs/blender +50 -0
  245. polyfile/magic_defs/blit +24 -0
  246. polyfile/magic_defs/bm +10 -0
  247. polyfile/magic_defs/bout +11 -0
  248. polyfile/magic_defs/bsdi +33 -0
  249. polyfile/magic_defs/bsi +10 -0
  250. polyfile/magic_defs/btsnoop +13 -0
  251. polyfile/magic_defs/burp +7 -0
  252. polyfile/magic_defs/bytecode +41 -0
  253. polyfile/magic_defs/c-lang +110 -0
  254. polyfile/magic_defs/c64 +531 -0
  255. polyfile/magic_defs/cad +437 -0
  256. polyfile/magic_defs/cafebabe +107 -0
  257. polyfile/magic_defs/cbor +21 -0
  258. polyfile/magic_defs/ccf +14 -0
  259. polyfile/magic_defs/cddb +12 -0
  260. polyfile/magic_defs/chord +15 -0
  261. polyfile/magic_defs/cisco +12 -0
  262. polyfile/magic_defs/citrus +12 -0
  263. polyfile/magic_defs/clarion +27 -0
  264. polyfile/magic_defs/claris +48 -0
  265. polyfile/magic_defs/clipper +65 -0
  266. polyfile/magic_defs/clojure +30 -0
  267. polyfile/magic_defs/coff +98 -0
  268. polyfile/magic_defs/commands +201 -0
  269. polyfile/magic_defs/communications +22 -0
  270. polyfile/magic_defs/compress +461 -0
  271. polyfile/magic_defs/console +1213 -0
  272. polyfile/magic_defs/convex +69 -0
  273. polyfile/magic_defs/coverage +91 -0
  274. polyfile/magic_defs/cracklib +14 -0
  275. polyfile/magic_defs/crypto +31 -0
  276. polyfile/magic_defs/csv +8 -0
  277. polyfile/magic_defs/ctags +6 -0
  278. polyfile/magic_defs/ctf +23 -0
  279. polyfile/magic_defs/cubemap +8 -0
  280. polyfile/magic_defs/cups +56 -0
  281. polyfile/magic_defs/dact +11 -0
  282. polyfile/magic_defs/database +886 -0
  283. polyfile/magic_defs/dataone +47 -0
  284. polyfile/magic_defs/dbpf +15 -0
  285. polyfile/magic_defs/der +146 -0
  286. polyfile/magic_defs/diamond +12 -0
  287. polyfile/magic_defs/dif +33 -0
  288. polyfile/magic_defs/diff +41 -0
  289. polyfile/magic_defs/digital +59 -0
  290. polyfile/magic_defs/dolby +69 -0
  291. polyfile/magic_defs/dsf +25 -0
  292. polyfile/magic_defs/dump +96 -0
  293. polyfile/magic_defs/dwarfs +45 -0
  294. polyfile/magic_defs/dyadic +61 -0
  295. polyfile/magic_defs/ebml +8 -0
  296. polyfile/magic_defs/edid +11 -0
  297. polyfile/magic_defs/editors +43 -0
  298. polyfile/magic_defs/efi +15 -0
  299. polyfile/magic_defs/elf +379 -0
  300. polyfile/magic_defs/encore +22 -0
  301. polyfile/magic_defs/epoc +62 -0
  302. polyfile/magic_defs/erlang +21 -0
  303. polyfile/magic_defs/espressif +57 -0
  304. polyfile/magic_defs/esri +28 -0
  305. polyfile/magic_defs/etf +33 -0
  306. polyfile/magic_defs/fcs +9 -0
  307. polyfile/magic_defs/filesystems +2694 -0
  308. polyfile/magic_defs/finger +16 -0
  309. polyfile/magic_defs/firmware +133 -0
  310. polyfile/magic_defs/flash +62 -0
  311. polyfile/magic_defs/flif +36 -0
  312. polyfile/magic_defs/fonts +449 -0
  313. polyfile/magic_defs/forth +82 -0
  314. polyfile/magic_defs/fortran +9 -0
  315. polyfile/magic_defs/frame +62 -0
  316. polyfile/magic_defs/freebsd +164 -0
  317. polyfile/magic_defs/fsav +128 -0
  318. polyfile/magic_defs/fusecompress +12 -0
  319. polyfile/magic_defs/games +696 -0
  320. polyfile/magic_defs/gcc +17 -0
  321. polyfile/magic_defs/gconv +10 -0
  322. polyfile/magic_defs/gentoo +85 -0
  323. polyfile/magic_defs/geo +166 -0
  324. polyfile/magic_defs/geos +20 -0
  325. polyfile/magic_defs/gimp +77 -0
  326. polyfile/magic_defs/git +13 -0
  327. polyfile/magic_defs/glibc +21 -0
  328. polyfile/magic_defs/gnome +59 -0
  329. polyfile/magic_defs/gnu +173 -0
  330. polyfile/magic_defs/gnumeric +8 -0
  331. polyfile/magic_defs/gpt +240 -0
  332. polyfile/magic_defs/gpu +28 -0
  333. polyfile/magic_defs/grace +21 -0
  334. polyfile/magic_defs/graphviz +12 -0
  335. polyfile/magic_defs/gringotts +48 -0
  336. polyfile/magic_defs/guile +13 -0
  337. polyfile/magic_defs/hardware +12 -0
  338. polyfile/magic_defs/hitachi-sh +30 -0
  339. polyfile/magic_defs/hp +433 -0
  340. polyfile/magic_defs/human68k +26 -0
  341. polyfile/magic_defs/ibm370 +52 -0
  342. polyfile/magic_defs/ibm6000 +35 -0
  343. polyfile/magic_defs/icc +214 -0
  344. polyfile/magic_defs/iff +80 -0
  345. polyfile/magic_defs/images +4210 -0
  346. polyfile/magic_defs/inform +9 -0
  347. polyfile/magic_defs/intel +310 -0
  348. polyfile/magic_defs/interleaf +9 -0
  349. polyfile/magic_defs/island +10 -0
  350. polyfile/magic_defs/ispell +63 -0
  351. polyfile/magic_defs/isz +15 -0
  352. polyfile/magic_defs/java +52 -0
  353. polyfile/magic_defs/javascript +171 -0
  354. polyfile/magic_defs/jpeg +252 -0
  355. polyfile/magic_defs/json +8 -0
  356. polyfile/magic_defs/karma +9 -0
  357. polyfile/magic_defs/kde +11 -0
  358. polyfile/magic_defs/keepass +20 -0
  359. polyfile/magic_defs/kerberos +45 -0
  360. polyfile/magic_defs/kicad +85 -0
  361. polyfile/magic_defs/kml +34 -0
  362. polyfile/magic_defs/lammps +64 -0
  363. polyfile/magic_defs/lecter +6 -0
  364. polyfile/magic_defs/lex +12 -0
  365. polyfile/magic_defs/lif +50 -0
  366. polyfile/magic_defs/linux +557 -0
  367. polyfile/magic_defs/lisp +78 -0
  368. polyfile/magic_defs/llvm +22 -0
  369. polyfile/magic_defs/locoscript +12 -0
  370. polyfile/magic_defs/lua +31 -0
  371. polyfile/magic_defs/luks +126 -0
  372. polyfile/magic_defs/m4 +11 -0
  373. polyfile/magic_defs/mach +303 -0
  374. polyfile/magic_defs/macintosh +505 -0
  375. polyfile/magic_defs/macos +7 -0
  376. polyfile/magic_defs/magic +10 -0
  377. polyfile/magic_defs/magic.mgc +0 -0
  378. polyfile/magic_defs/mail.news +132 -0
  379. polyfile/magic_defs/make +21 -0
  380. polyfile/magic_defs/map +413 -0
  381. polyfile/magic_defs/maple +109 -0
  382. polyfile/magic_defs/marc21 +30 -0
  383. polyfile/magic_defs/mathcad +8 -0
  384. polyfile/magic_defs/mathematica +188 -0
  385. polyfile/magic_defs/matroska +17 -0
  386. polyfile/magic_defs/mcrypt +52 -0
  387. polyfile/magic_defs/measure +44 -0
  388. polyfile/magic_defs/mercurial +13 -0
  389. polyfile/magic_defs/metastore +8 -0
  390. polyfile/magic_defs/meteorological +53 -0
  391. polyfile/magic_defs/microfocus +21 -0
  392. polyfile/magic_defs/mime +9 -0
  393. polyfile/magic_defs/mips +120 -0
  394. polyfile/magic_defs/mirage +8 -0
  395. polyfile/magic_defs/misctools +140 -0
  396. polyfile/magic_defs/mkid +11 -0
  397. polyfile/magic_defs/mlssa +8 -0
  398. polyfile/magic_defs/mmdf +6 -0
  399. polyfile/magic_defs/modem +92 -0
  400. polyfile/magic_defs/modulefile +9 -0
  401. polyfile/magic_defs/motorola +71 -0
  402. polyfile/magic_defs/mozilla +37 -0
  403. polyfile/magic_defs/msdos +2304 -0
  404. polyfile/magic_defs/msooxml +68 -0
  405. polyfile/magic_defs/msvc +222 -0
  406. polyfile/magic_defs/msx +309 -0
  407. polyfile/magic_defs/mup +24 -0
  408. polyfile/magic_defs/music +17 -0
  409. polyfile/magic_defs/nasa +7 -0
  410. polyfile/magic_defs/natinst +24 -0
  411. polyfile/magic_defs/ncr +49 -0
  412. polyfile/magic_defs/neko +12 -0
  413. polyfile/magic_defs/netbsd +251 -0
  414. polyfile/magic_defs/netscape +26 -0
  415. polyfile/magic_defs/netware +11 -0
  416. polyfile/magic_defs/news +13 -0
  417. polyfile/magic_defs/nifty +202 -0
  418. polyfile/magic_defs/nim-lang +29 -0
  419. polyfile/magic_defs/nitpicker +14 -0
  420. polyfile/magic_defs/numpy +9 -0
  421. polyfile/magic_defs/oasis +12 -0
  422. polyfile/magic_defs/ocaml +14 -0
  423. polyfile/magic_defs/octave +6 -0
  424. polyfile/magic_defs/ole2compounddocs +760 -0
  425. polyfile/magic_defs/olf +98 -0
  426. polyfile/magic_defs/openfst +17 -0
  427. polyfile/magic_defs/opentimestamps +16 -0
  428. polyfile/magic_defs/oric +16 -0
  429. polyfile/magic_defs/os2 +186 -0
  430. polyfile/magic_defs/os400 +39 -0
  431. polyfile/magic_defs/os9 +80 -0
  432. polyfile/magic_defs/osf1 +10 -0
  433. polyfile/magic_defs/palm +156 -0
  434. polyfile/magic_defs/parix +13 -0
  435. polyfile/magic_defs/parrot +22 -0
  436. polyfile/magic_defs/pascal +39 -0
  437. polyfile/magic_defs/pbf +11 -0
  438. polyfile/magic_defs/pbm +8 -0
  439. polyfile/magic_defs/pc88 +24 -0
  440. polyfile/magic_defs/pc98 +77 -0
  441. polyfile/magic_defs/pci_ids +116 -0
  442. polyfile/magic_defs/pcjr +8 -0
  443. polyfile/magic_defs/pdf +51 -0
  444. polyfile/magic_defs/pdp +42 -0
  445. polyfile/magic_defs/perl +100 -0
  446. polyfile/magic_defs/pgf +52 -0
  447. polyfile/magic_defs/pgp +581 -0
  448. polyfile/magic_defs/pgp-binary-keys +388 -0
  449. polyfile/magic_defs/pkgadd +7 -0
  450. polyfile/magic_defs/plan9 +25 -0
  451. polyfile/magic_defs/playdate +57 -0
  452. polyfile/magic_defs/plus5 +18 -0
  453. polyfile/magic_defs/pmem +46 -0
  454. polyfile/magic_defs/polyfile_zip +5 -0
  455. polyfile/magic_defs/polyml +23 -0
  456. polyfile/magic_defs/printer +269 -0
  457. polyfile/magic_defs/project +10 -0
  458. polyfile/magic_defs/psdbms +14 -0
  459. polyfile/magic_defs/psl +14 -0
  460. polyfile/magic_defs/pulsar +13 -0
  461. polyfile/magic_defs/puzzle +17 -0
  462. polyfile/magic_defs/pwsafe +14 -0
  463. polyfile/magic_defs/pyramid +12 -0
  464. polyfile/magic_defs/python +305 -0
  465. polyfile/magic_defs/qt +30 -0
  466. polyfile/magic_defs/revision +66 -0
  467. polyfile/magic_defs/riff +840 -0
  468. polyfile/magic_defs/rinex +44 -0
  469. polyfile/magic_defs/ringdove +45 -0
  470. polyfile/magic_defs/rpi +52 -0
  471. polyfile/magic_defs/rpm +45 -0
  472. polyfile/magic_defs/rpmsg +7 -0
  473. polyfile/magic_defs/rst +11 -0
  474. polyfile/magic_defs/rtf +94 -0
  475. polyfile/magic_defs/ruby +55 -0
  476. polyfile/magic_defs/rust +21 -0
  477. polyfile/magic_defs/sc +7 -0
  478. polyfile/magic_defs/sccs +24 -0
  479. polyfile/magic_defs/scientific +144 -0
  480. polyfile/magic_defs/securitycerts +6 -0
  481. polyfile/magic_defs/selinux +24 -0
  482. polyfile/magic_defs/sendmail +37 -0
  483. polyfile/magic_defs/sequent +42 -0
  484. polyfile/magic_defs/sereal +35 -0
  485. polyfile/magic_defs/sgi +144 -0
  486. polyfile/magic_defs/sgml +161 -0
  487. polyfile/magic_defs/sharc +23 -0
  488. polyfile/magic_defs/sinclair +40 -0
  489. polyfile/magic_defs/sisu +18 -0
  490. polyfile/magic_defs/sketch +6 -0
  491. polyfile/magic_defs/smalltalk +25 -0
  492. polyfile/magic_defs/smile +34 -0
  493. polyfile/magic_defs/sniffer +482 -0
  494. polyfile/magic_defs/softquad +40 -0
  495. polyfile/magic_defs/sosi +40 -0
  496. polyfile/magic_defs/spec +21 -0
  497. polyfile/magic_defs/spectrum +184 -0
  498. polyfile/magic_defs/sql +288 -0
  499. polyfile/magic_defs/ssh +39 -0
  500. polyfile/magic_defs/ssl +20 -0
  501. polyfile/magic_defs/statistics +45 -0
  502. polyfile/magic_defs/subtitle +38 -0
  503. polyfile/magic_defs/sun +141 -0
  504. polyfile/magic_defs/svf +5 -0
  505. polyfile/magic_defs/sylk +36 -0
  506. polyfile/magic_defs/symbos +42 -0
  507. polyfile/magic_defs/sysex +429 -0
  508. polyfile/magic_defs/tcl +29 -0
  509. polyfile/magic_defs/teapot +6 -0
  510. polyfile/magic_defs/terminfo +63 -0
  511. polyfile/magic_defs/tex +141 -0
  512. polyfile/magic_defs/tgif +7 -0
  513. polyfile/magic_defs/ti-8x +239 -0
  514. polyfile/magic_defs/timezone +42 -0
  515. polyfile/magic_defs/tplink +95 -0
  516. polyfile/magic_defs/troff +38 -0
  517. polyfile/magic_defs/tuxedo +8 -0
  518. polyfile/magic_defs/typeset +8 -0
  519. polyfile/magic_defs/uf2 +72 -0
  520. polyfile/magic_defs/unicode +15 -0
  521. polyfile/magic_defs/unisig +12 -0
  522. polyfile/magic_defs/unknown +34 -0
  523. polyfile/magic_defs/usd +21 -0
  524. polyfile/magic_defs/uterus +16 -0
  525. polyfile/magic_defs/uuencode +28 -0
  526. polyfile/magic_defs/vacuum-cleaner +54 -0
  527. polyfile/magic_defs/varied.out +46 -0
  528. polyfile/magic_defs/varied.script +21 -0
  529. polyfile/magic_defs/vax +32 -0
  530. polyfile/magic_defs/vicar +17 -0
  531. polyfile/magic_defs/virtual +307 -0
  532. polyfile/magic_defs/virtutech +12 -0
  533. polyfile/magic_defs/visx +32 -0
  534. polyfile/magic_defs/vms +30 -0
  535. polyfile/magic_defs/vmware +6 -0
  536. polyfile/magic_defs/vorbis +155 -0
  537. polyfile/magic_defs/vxl +14 -0
  538. polyfile/magic_defs/warc +16 -0
  539. polyfile/magic_defs/weak +16 -0
  540. polyfile/magic_defs/web +18 -0
  541. polyfile/magic_defs/webassembly +17 -0
  542. polyfile/magic_defs/windows +1811 -0
  543. polyfile/magic_defs/wireless +7 -0
  544. polyfile/magic_defs/wordprocessors +630 -0
  545. polyfile/magic_defs/wsdl +23 -0
  546. polyfile/magic_defs/x68000 +25 -0
  547. polyfile/magic_defs/xdelta +13 -0
  548. polyfile/magic_defs/xenix +106 -0
  549. polyfile/magic_defs/xilinx +58 -0
  550. polyfile/magic_defs/xo65 +37 -0
  551. polyfile/magic_defs/xwindows +43 -0
  552. polyfile/magic_defs/yara +17 -0
  553. polyfile/magic_defs/zfs +96 -0
  554. polyfile/magic_defs/zilog +12 -0
  555. polyfile/magic_defs/zip +126 -0
  556. polyfile/magic_defs/zyxel +17 -0
  557. polyfile/nes.py +144 -0
  558. polyfile/nitf.py +15 -0
  559. polyfile/pdf.py +1264 -0
  560. polyfile/pickles.py +45 -0
  561. polyfile/polyfile.py +409 -0
  562. polyfile/profiling.py +115 -0
  563. polyfile/repl.py +624 -0
  564. polyfile/search.py +310 -0
  565. polyfile/serialization.py +323 -0
  566. polyfile/structmatcher.py +46 -0
  567. polyfile/structs.py +281 -0
  568. polyfile/templates/download.js +162 -0
  569. polyfile/templates/hexdump.css +268 -0
  570. polyfile/templates/hexdump.js +756 -0
  571. polyfile/templates/jquery-3.4.1.min.js +2 -0
  572. polyfile/templates/template.html +119 -0
  573. polyfile/wildcards.py +62 -0
  574. polyfile/zipmatcher.py +183 -0
  575. polyfile_weave-0.5.5.dist-info/METADATA +173 -0
  576. polyfile_weave-0.5.5.dist-info/RECORD +585 -0
  577. polyfile_weave-0.5.5.dist-info/WHEEL +5 -0
  578. polyfile_weave-0.5.5.dist-info/entry_points.txt +2 -0
  579. polyfile_weave-0.5.5.dist-info/licenses/LICENSE +202 -0
  580. polyfile_weave-0.5.5.dist-info/top_level.txt +2 -0
  581. polymerge/__init__.py +1 -0
  582. polymerge/__main__.py +296 -0
  583. polymerge/cfg.py +127 -0
  584. polymerge/polymerge.py +227 -0
  585. polymerge/polytracker.py +190 -0
@@ -0,0 +1,4210 @@
1
+
2
+ #------------------------------------------------------------------------------
3
+ # $File: images,v 1.242 2023/05/23 13:37:32 christos Exp $
4
+ # images: file(1) magic for image formats (see also "iff", and "c-lang" for
5
+ # XPM bitmaps)
6
+ #
7
+ # originally from jef@helios.ee.lbl.gov (Jef Poskanzer),
8
+ # additions by janl@ifi.uio.no as well as others. Jan also suggested
9
+ # merging several one- and two-line files into here.
10
+ #
11
+ # little magic: PCX (first byte is 0x0a)
12
+
13
+ # Targa - matches `povray', `ppmtotga' and `xv' outputs
14
+ # by Philippe De Muyter <phdm@macqel.be>
15
+ # URL: http://justsolve.archiveteam.org/wiki/TGA
16
+ # Reference: http://www.dca.fee.unicamp.br/~martino/disciplinas/ea978/tgaffs.pdf
17
+ # Update: Joerg Jenderek
18
+ # at 2, byte ImgType must be 1, 2, 3, 9, 10 or 11
19
+ # ,32 or 33 (both not observed)
20
+ # at 1, byte CoMapType must be 1 if ImgType is 1 or 9, 0 otherwise
21
+ # or theoretically 2-128 reserved for use by Truevision or 128-255 may be used for developer applications
22
+ # at 3, leshort Index is 0 for povray, ppmtotga and xv outputs
23
+ # `xv' recognizes only a subset of the following (RGB with pixelsize = 24)
24
+ # `tgatoppm' recognizes a superset (Index may be anything)
25
+ #
26
+ # test of Color Map Type 0~no 1~color map
27
+ # and Image Type 1 2 3 9 10 11 32 33
28
+ # and Color Map Entry Size 0 15 16 24 32
29
+ 0 ubequad&0x00FeC400000000C0 0
30
+ # Conflict with MPEG sequences.
31
+ !:strength -40
32
+ # Prevent conflicts with CRI ADX.
33
+ #>(2.S-2) belong !0x28632943
34
+ # above line does not work for rgb32_top_left_rle.tga
35
+ # skip some MPEG sequence *.vob and some CRI ADX audio with improbable interleave bits
36
+ >17 ubyte&0xC0 !0xC0
37
+ # skip more garbage like *.iso by looking for positive image type
38
+ >>2 ubyte >0
39
+ # skip some compiled terminfo like xterm+tmux by looking for image type less equal 33
40
+ >>>2 ubyte <34
41
+ # skip some MPEG sequence *.vob HV001T01.EVO winnicki.mpg with unacceptable alpha channel depth 11
42
+ >>>>17 ubyte&0x0F !11
43
+ # skip arches.3200 , Finder.Root , Slp.1 by looking for low pixel depth 1 8 15 16 24 32
44
+ >>>>>16 ubyte 1
45
+ >>>>>>0 use tga-image
46
+ >>>>>16 ubyte 8
47
+ >>>>>>0 use tga-image
48
+ >>>>>16 ubyte 15
49
+ >>>>>>0 use tga-image
50
+ >>>>>16 ubyte 16
51
+ >>>>>>0 use tga-image
52
+ >>>>>16 ubyte 24
53
+ >>>>>>0 use tga-image
54
+ >>>>>16 ubyte 32
55
+ >>>>>>0 use tga-image
56
+ # display tga bitmap image information
57
+ 0 name tga-image
58
+ >2 ubyte <34 Targa image data
59
+ !:mime image/x-tga
60
+ !:apple ????TPIC
61
+ # normal extension .tga but some Truevision products used others:
62
+ # tpic (Apple),icb (Image Capture Board),vda (Video Display Adapter),vst (NuVista),win (UNSURE about that)
63
+ !:ext tga/tpic/icb/vda/vst
64
+ # image type 1 2 3 9 10 11 32 33
65
+ >2 ubyte&0xF7 1 - Map
66
+ >2 ubyte&0xF7 2 - RGB
67
+ # alpha channel
68
+ >>17 ubyte&0x0F >0 \bA
69
+ >2 ubyte&0xF7 3 - Mono
70
+ # type not found, but by http://www.fileformat.info/format/tga/corion.htm
71
+ # Compressed color-mapped data, using Huffman, Delta, and runlength encoding
72
+ >2 ubyte 32 - Color
73
+ # Compressed color-mapped data, using Huffman, Delta, and RLE. 4-pass quadtree- type process
74
+ >2 ubyte 33 - Color
75
+ # Color Map Type 0~no 1~color map
76
+ >1 ubyte 1 (
77
+ # first color map entry, 0 normal
78
+ >>3 uleshort >0 \b%d-
79
+ # color map length 0 2 1dh 3bh d9h 100h
80
+ >>5 uleshort x \b%d)
81
+ # 8~run length encoding bit
82
+ >2 ubyte&0x08 8 - RLE
83
+ # gimp can create big pictures!
84
+ >12 uleshort >0 %d x
85
+ >12 uleshort =0 65536 x
86
+ # image height. 0 interpreted as 65536
87
+ >14 uleshort >0 %d
88
+ >14 uleshort =0 65536
89
+ # Image Pixel depth 1 8 15 16 24 32
90
+ >16 ubyte x x %d
91
+ # X origin of image. 0 normal
92
+ >8 uleshort >0 +%d
93
+ # Y origin of image. 0 normal; positive for top
94
+ >10 uleshort >0 +%d
95
+ # Image descriptor: bits 3-0 give the alpha channel depth, bits 5-4 give direction
96
+ # alpha depth like: 1 8
97
+ >17 ubyte&0x0F >0 - %d-bit alpha
98
+ # bits 5-4 give direction. normal bottom left
99
+ >17 ubyte &0x20 - top
100
+ #>17 ubyte ^0x20 - bottom
101
+ >17 ubyte &0x10 - right
102
+ #>17 ubyte ^0x10 - left
103
+ # some info say other bits 6-7 should be zero
104
+ # but data storage interleave by http://www.fileformat.info/format/tga/corion.htm
105
+ # 00 - no interleave;01 - even/odd interleave; 10 - four way interleave; 11 - reserved
106
+ #>17 ubyte&0xC0 0x00 - no interleave
107
+ >17 ubyte&0xC0 0x40 - interleave
108
+ >17 ubyte&0xC0 0x80 - four way interleave
109
+ >17 ubyte&0xC0 0xC0 - reserved
110
+ # positive length implies identification field
111
+ >0 ubyte >0
112
+ >>18 string x "%s"
113
+ # last 18 bytes of newer tga file footer signature
114
+ >18 search/4261301/s TRUEVISION-XFILE.\0
115
+ # extension area offset if not 0
116
+ >>&-8 ulelong >0
117
+ # length of the extension area. normal 495 for version 2.0
118
+ >>>(&-4.l) uleshort 0x01EF
119
+ # AuthorName[41]
120
+ >>>>&0 string >\0 - author "%-.40s"
121
+ # Comment[324]=4 * 80 null terminated
122
+ >>>>&41 string >\0 - comment "%-.80s"
123
+ # date
124
+ >>>>&365 ubequad&0xffffFFFFffff0000 !0
125
+ # Day
126
+ >>>>>&-6 uleshort x %d
127
+ # Month
128
+ >>>>>&-8 uleshort x \b-%d
129
+ # Year
130
+ >>>>>&-4 uleshort x \b-%d
131
+ # time
132
+ >>>>&371 ubequad&0xffffFFFFffff0000 !0
133
+ # hour
134
+ >>>>>&-8 uleshort x %d
135
+ # minutes
136
+ >>>>>&-6 uleshort x \b:%.2d
137
+ # second
138
+ >>>>>&-4 uleshort x \b:%.2d
139
+ # JobName[41]
140
+ >>>>&377 string >\0 - job "%-.40s"
141
+ # JobHour Jobminute Jobsecond
142
+ >>>>&418 ubequad&0xffffFFFFffff0000 !0
143
+ >>>>>&-8 uleshort x %d
144
+ >>>>>&-6 uleshort x \b:%.2d
145
+ >>>>>&-4 uleshort x \b:%.2d
146
+ # SoftwareId[41]
147
+ >>>>&424 string >\0 - %-.40s
148
+ # SoftwareVersionNumber
149
+ >>>>&424 ubyte >0
150
+ >>>>>&40 uleshort/100 x %d
151
+ >>>>>&40 uleshort%100 x \b.%d
152
+ # VersionLetter
153
+ >>>>>&42 ubyte >0x20 \b%c
154
+ # KeyColor
155
+ >>>>&468 ulelong >0 - keycolor %#8.8x
156
+ # Denominator of Pixel ratio. 0~no pixel aspect
157
+ >>>>&474 uleshort >0
158
+ # Numerator
159
+ >>>>>&-4 uleshort >0 - aspect %d
160
+ >>>>>&-2 uleshort x \b/%d
161
+ # Denominator of Gamma ratio. 0~no Gamma value
162
+ >>>>&478 uleshort >0
163
+ # Numerator
164
+ >>>>>&-4 uleshort >0 - gamma %d
165
+ >>>>>&-2 uleshort x \b/%d
166
+ # ColorOffset
167
+ #>>>>&480 ulelong x - col offset %#8.8x
168
+ # StampOffset
169
+ #>>>>&484 ulelong x - stamp offset %#8.8x
170
+ # ScanOffset
171
+ #>>>>&488 ulelong x - scan offset %#8.8x
172
+ # AttributesType
173
+ #>>>>&492 ubyte x - Attributes %#x
174
+ ## EndOfTGA
175
+
176
+ # PBMPLUS images
177
+ # URL: https://en.wikipedia.org/wiki/Netpbm
178
+ # The next byte following the magic is always whitespace.
179
+ # adding 65 to strength so that Netpbm images comes before "x86 boot sector" or
180
+ # "DOS/MBR boot sector" identified by ./filesystems
181
+ 0 name netpbm
182
+ >3 regex/s =\^[0-9]{1,50}[\040\t\f\r\n]+[0-9]{1,50} Netpbm image data
183
+ >>&0 regex =[0-9]{1,50} \b, size = %s x
184
+ >>>&0 regex =[0-9]{1,50} \b %s
185
+
186
+ 0 search/1 P1
187
+ # test for whitespace after 2 byte magic
188
+ >2 regex/2 [\040\t\f\r\n]
189
+ # skip DROID x-fmt-164-signature-id-583.pbm with ten 0 digits
190
+ >>3 string !000000000
191
+ >>>0 use netpbm
192
+ >>>0 string x \b, bitmap
193
+ !:strength + 65
194
+ !:mime image/x-portable-bitmap
195
+ !:ext pbm
196
+ # check for character # starting a comment line
197
+ >>>3 ubyte =0x23
198
+ >>>>4 string x %s
199
+
200
+ 0 search/1 P2
201
+ >0 regex/4 P2[\040\t\f\r\n]
202
+ >>0 use netpbm
203
+ >>0 string x \b, greymap
204
+ !:strength + 65
205
+ # american spelling gray
206
+ !:mime image/x-portable-graymap
207
+ !:ext pgm
208
+
209
+ 0 search/1 P3
210
+ >0 regex/4 P3[\040\t\f\r\n]
211
+ >>0 use netpbm
212
+ >>0 string x \b, pixmap
213
+ !:strength + 65
214
+ !:mime image/x-portable-pixmap
215
+ !:ext ppm
216
+
217
+ 0 string P4
218
+ >0 regex/4 P4[\040\t\f\r\n]
219
+ >>0 use netpbm
220
+ >>0 string x \b, rawbits, bitmap
221
+ !:strength + 65
222
+ !:mime image/x-portable-bitmap
223
+ !:ext pbm
224
+
225
+ 0 string P5
226
+ >0 regex/4 P5[\040\t\f\r\n]
227
+ >>0 use netpbm
228
+ >>0 string x \b, rawbits, greymap
229
+ !:strength + 65
230
+ !:mime image/x-portable-greymap
231
+ !:ext pgm
232
+
233
+ 0 string P6
234
+ >0 regex/4 P6[\040\t\f\r\n]
235
+ >>0 use netpbm
236
+ >>0 string x \b, rawbits, pixmap
237
+ !:strength + 65
238
+ !:mime image/x-portable-pixmap
239
+ !:ext ppm/pnm
240
+
241
+ # URL: https://en.wikipedia.org/wiki/Netpbm#PAM_graphics_format
242
+ # Reference: http://fileformats.archiveteam.org/wiki/Portable_Arbitrary_Map
243
+ # Update: Joerg Jenderek
244
+ 0 string P7
245
+ # skip DROID fmt-405-signature-id-589.pam by looking for character like New Line
246
+ >2 ubyte !0xAB
247
+ #>2 ubyte =0x0A
248
+ >>3 search/256/b WIDTH Netpbm PAM image file, size =
249
+ !:mime image/x-portable-arbitrarymap
250
+ !:ext pam
251
+ !:strength + 65
252
+ >>>&1 string x %s
253
+ >>>3 search/256/b HEIGHT x
254
+ >>>>&1 string x %s
255
+ # at offset 2 a New Line character (0xA) should appear
256
+ >>>2 ubyte !0x0A \b, %#x at offset 2 instead new line
257
+
258
+ # From: bryanh@giraffe-data.com (Bryan Henderson)
259
+ 0 string \117\072 Solitaire Image Recorder format
260
+ >4 string \013 MGI Type 11
261
+ >4 string \021 MGI Type 17
262
+ 0 string .MDA MicroDesign data
263
+ >21 ubyte 48 version 2
264
+ >21 ubyte 51 version 3
265
+ 0 string .MDP MicroDesign page data
266
+ >21 ubyte 48 version 2
267
+ >21 ubyte 51 version 3
268
+
269
+ # NIFF (Navy Interchange File Format, a modification of TIFF) images
270
+ # [GRR: this *must* go before TIFF]
271
+ 0 string IIN1 NIFF image data
272
+ !:mime image/x-niff
273
+
274
+ # Canon RAW version 1 (CRW) files are a type of Canon Image File Format
275
+ # (CIFF) file. These are apparently all little-endian.
276
+ # From: Adam Buchbinder <adam.buchbinder@gmail.com>
277
+ # URL: https://www.sno.phy.queensu.ca/~phil/exiftool/canon_raw.html
278
+ 0 string II\x1a\0\0\0HEAPCCDR Canon CIFF raw image data
279
+ !:mime image/x-canon-crw
280
+ >16 uleshort x \b, version %d.
281
+ >14 uleshort x \b%d
282
+
283
+ # Canon RAW version 2 (CR2) files are a kind of TIFF with an extra magic
284
+ # number. Put this above the TIFF test to make sure we detect them.
285
+ # These are apparently all little-endian.
286
+ # From: Adam Buchbinder <adam.buchbinder@gmail.com>
287
+ # URL: https://libopenraw.freedesktop.org/wiki/Canon_CR2
288
+ 0 string II\x2a\0\x10\0\0\0CR Canon CR2 raw image data
289
+ !:mime image/x-canon-cr2
290
+ !:strength +80
291
+ >10 ubyte x \b, version %d.
292
+ >11 ubyte x \b%d
293
+
294
+ # Fujifilm RAF RAW image files with embedded JPEG data and compressed
295
+ # or uncompressed CFA RAW data. Byte order: Big Endian.
296
+ # URL: https://libopenraw.freedesktop.org/formats/raf/
297
+ # Useful info from http://fileformats.archiveteam.org/wiki/Fujifilm_RAF.
298
+ # File extension: RAF
299
+ # Works for both the FinePix S2 Pro and the X-T3. Anybody have some more Fuji
300
+ # raw samples available?
301
+ # -- David Dyer-Bennet <dd-b@dd-b.net> 9-Sep-2021
302
+ 0 string FUJIFILMCCD-RAW Fujifilm RAF raw image data
303
+ !:mime image/x-fuji-raf
304
+ !:ext raf
305
+ >0x10 string x \b, format version %4.4s
306
+ >0x1C string x \b, camera %s
307
+
308
+ # Tag Image File Format, from Daniel Quinlan (quinlan@yggdrasil.com)
309
+ # The second word of TIFF files is the TIFF version number, 42, which has
310
+ # never changed. The TIFF specification recommends testing for it.
311
+ 0 string MM\x00\x2a TIFF image data, big-endian
312
+ !:strength +70
313
+ !:mime image/tiff
314
+ !:ext tif/tiff
315
+ >(4.L) use \^tiff_ifd
316
+ 0 string II\x2a\x00 TIFF image data, little-endian
317
+ !:mime image/tiff
318
+ !:strength +70
319
+ !:ext tif/tiff
320
+ >(4.l) use tiff_ifd
321
+
322
+ 0 name tiff_ifd
323
+ >0 uleshort x \b, direntries=%d
324
+ >2 use tiff_entry
325
+
326
+ 0 name tiff_entry
327
+ # NewSubFileType
328
+ >0 uleshort 0xfe
329
+ >>12 use tiff_entry
330
+ >0 uleshort 0x100
331
+ >>4 ulelong 1
332
+ >>>12 use tiff_entry
333
+ >>>8 uleshort x \b, width=%d
334
+ >0 uleshort 0x101
335
+ >>4 ulelong 1
336
+ >>>8 uleshort x \b, height=%d
337
+ >>>12 use tiff_entry
338
+ >0 uleshort 0x102
339
+ >>8 uleshort x \b, bps=%d
340
+ >>12 use tiff_entry
341
+ >0 uleshort 0x103
342
+ >>4 ulelong 1 \b, compression=
343
+ >>>8 uleshort 1 \bnone
344
+ >>>8 uleshort 2 \bhuffman
345
+ >>>8 uleshort 3 \bbi-level group 3
346
+ >>>8 uleshort 4 \bbi-level group 4
347
+ >>>8 uleshort 5 \bLZW
348
+ >>>8 uleshort 6 \bJPEG (old)
349
+ >>>8 uleshort 7 \bJPEG
350
+ >>>8 uleshort 8 \bdeflate
351
+ >>>8 uleshort 9 \bJBIG, ITU-T T.85
352
+ >>>8 uleshort 0xa \bJBIG, ITU-T T.43
353
+ >>>8 uleshort 0x7ffe \bNeXT RLE 2-bit
354
+ >>>8 uleshort 0x8005 \bPackBits (Macintosh RLE)
355
+ >>>8 uleshort 0x8029 \bThunderscan RLE
356
+ >>>8 uleshort 0x807f \bRasterPadding (CT or MP)
357
+ >>>8 uleshort 0x8080 \bRLE (Line Work)
358
+ >>>8 uleshort 0x8081 \bRLE (High-Res Cont-Tone)
359
+ >>>8 uleshort 0x8082 \bRLE (Binary Line Work)
360
+ >>>8 uleshort 0x80b2 \bDeflate (PKZIP)
361
+ >>>8 uleshort 0x80b3 \bKodak DCS
362
+ >>>8 uleshort 0x8765 \bJBIG
363
+ >>>8 uleshort 0x8798 \bJPEG2000
364
+ >>>8 uleshort 0x8799 \bNikon NEF Compressed
365
+ >>>8 default x
366
+ >>>>8 uleshort x \b(unknown %#x)
367
+ >>>12 use tiff_entry
368
+ >0 uleshort 0x106 \b, PhotometricInterpretation=
369
+ >>8 clear x
370
+ >>8 uleshort 0 \bWhiteIsZero
371
+ >>8 uleshort 1 \bBlackIsZero
372
+ >>8 uleshort 2 \bRGB
373
+ >>8 uleshort 3 \bRGB Palette
374
+ >>8 uleshort 4 \bTransparency Mask
375
+ >>8 uleshort 5 \bCMYK
376
+ >>8 uleshort 6 \bYCbCr
377
+ >>8 uleshort 8 \bCIELab
378
+ >>8 default x
379
+ >>>8 uleshort x \b(unknown=%#x)
380
+ >>12 use tiff_entry
381
+ # FillOrder
382
+ >0 uleshort 0x10a
383
+ >>4 ulelong 1
384
+ >>>12 use tiff_entry
385
+ # DocumentName
386
+ >0 uleshort 0x10d
387
+ >>(8.l) string x \b, name=%s
388
+ >>>12 use tiff_entry
389
+ # ImageDescription
390
+ >0 uleshort 0x10e
391
+ >>(8.l) string x \b, description=%s
392
+ >>>12 use tiff_entry
393
+ # Make
394
+ >0 uleshort 0x10f
395
+ >>(8.l) string x \b, manufacturer=%s
396
+ >>>12 use tiff_entry
397
+ # Model
398
+ >0 uleshort 0x110
399
+ >>(8.l) string x \b, model=%s
400
+ >>>12 use tiff_entry
401
+ # StripOffsets
402
+ >0 uleshort 0x111
403
+ >>12 use tiff_entry
404
+ # Orientation
405
+ >0 uleshort 0x112 \b, orientation=
406
+ >>8 uleshort 1 \bupper-left
407
+ >>8 uleshort 3 \blower-right
408
+ >>8 uleshort 6 \bupper-right
409
+ >>8 uleshort 8 \blower-left
410
+ >>8 uleshort 9 \bundefined
411
+ >>8 default x
412
+ >>>8 uleshort x \b[*%d*]
413
+ >>12 use tiff_entry
414
+ # XResolution
415
+ >0 uleshort 0x11a
416
+ >>8 ulelong x \b, xresolution=%d
417
+ >>12 use tiff_entry
418
+ # YResolution
419
+ >0 uleshort 0x11b
420
+ >>8 ulelong x \b, yresolution=%d
421
+ >>12 use tiff_entry
422
+ # ResolutionUnit
423
+ >0 uleshort 0x128
424
+ >>8 uleshort x \b, resolutionunit=%d
425
+ >>12 use tiff_entry
426
+ # Software
427
+ >0 uleshort 0x131
428
+ >>(8.l) string x \b, software=%s
429
+ >>12 use tiff_entry
430
+ # Datetime
431
+ >0 uleshort 0x132
432
+ >>(8.l) string x \b, datetime=%s
433
+ >>12 use tiff_entry
434
+ # HostComputer
435
+ >0 uleshort 0x13c
436
+ >>(8.l) string x \b, hostcomputer=%s
437
+ >>12 use tiff_entry
438
+ # WhitePoint
439
+ >0 uleshort 0x13e
440
+ >>12 use tiff_entry
441
+ # PrimaryChromaticities
442
+ >0 uleshort 0x13f
443
+ >>12 use tiff_entry
444
+ # YCbCrCoefficients
445
+ >0 uleshort 0x211
446
+ >>12 use tiff_entry
447
+ # YCbCrPositioning
448
+ >0 uleshort 0x213
449
+ >>12 use tiff_entry
450
+ # ReferenceBlackWhite
451
+ >0 uleshort 0x214
452
+ >>12 use tiff_entry
453
+ # Copyright
454
+ >0 uleshort 0x8298
455
+ >>(8.l) string x \b, copyright=%s
456
+ >>12 use tiff_entry
457
+ # ExifOffset
458
+ >0 uleshort 0x8769
459
+ >>12 use tiff_entry
460
+ # GPS IFD
461
+ >0 uleshort 0x8825 \b, GPS-Data
462
+ >>12 use tiff_entry
463
+
464
+ #>0 uleshort x \b, unknown=%#x
465
+ #>>12 use tiff_entry
466
+
467
+ 0 string MM\x00\x2b Big TIFF image data, big-endian
468
+ !:mime image/tiff
469
+ 0 string II\x2b\x00 Big TIFF image data, little-endian
470
+ !:mime image/tiff
471
+
472
+ # PNG [Portable Network Graphics, or "PNG's Not GIF"] images
473
+ # (Greg Roelofs, newt@uchicago.edu)
474
+ # (Albert Cahalan, acahalan@cs.uml.edu)
475
+ #
476
+ # 137 P N G \r \n ^Z \n [4-byte length] I H D R [HEAD data] [HEAD crc] ...
477
+ #
478
+
479
+ # IHDR parser
480
+ 0 name png-ihdr
481
+ >0 ubelong x \b, %d x
482
+ >4 ubelong x %d,
483
+ >8 ubyte x %d-bit
484
+ >9 ubyte 0 grayscale,
485
+ >9 ubyte 2 \b/color RGB,
486
+ >9 ubyte 3 colormap,
487
+ >9 ubyte 4 gray+alpha,
488
+ >9 ubyte 6 \b/color RGBA,
489
+ #>10 ubyte 0 deflate/32K,
490
+ >12 ubyte 0 non-interlaced
491
+ >12 ubyte 1 interlaced
492
+
493
+ # Standard PNG image.
494
+ 0 string \x89PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0DIHDR PNG image data
495
+ !:mime image/png
496
+ !:ext png
497
+ !:strength +10
498
+ >16 use png-ihdr
499
+
500
+ # Apple CgBI PNG image.
501
+ 0 string \x89PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x04CgBI
502
+ >24 string \x00\x00\x00\x0DIHDR PNG image data (CgBI)
503
+ !:mime image/png
504
+ !:ext png
505
+ !:strength +10
506
+ >>32 use png-ihdr
507
+
508
+ # possible GIF replacements; none yet released!
509
+ # (Greg Roelofs, newt@uchicago.edu)
510
+ #
511
+ # GRR 950115: this was mine ("Zip GIF"):
512
+ 0 string GIF94z ZIF image (GIF+deflate alpha)
513
+ !:mime image/x-unknown
514
+ #
515
+ # GRR 950115: this is Jeremy Wohl's Free Graphics Format (better):
516
+ #
517
+ 0 string FGF95a FGF image (GIF+deflate beta)
518
+ !:mime image/x-unknown
519
+ #
520
+ # GRR 950115: this is Thomas Boutell's Portable Bitmap Format proposal
521
+ # (best; not yet implemented):
522
+ #
523
+ 0 string PBF PBF image (deflate compression)
524
+ !:mime image/x-unknown
525
+
526
+ # GIF
527
+ # Strength set up to beat 0x55AA DOS/MBR signature word lookups (+65)
528
+ 0 string GIF8 GIF image data
529
+ !:strength +80
530
+ !:mime image/gif
531
+ !:apple 8BIMGIFf
532
+ !:ext gif
533
+ >4 string 7a \b, version 8%s,
534
+ >4 string 9a \b, version 8%s,
535
+ >6 uleshort >0 %d x
536
+ >8 uleshort >0 %d
537
+ #>10 ubyte &0x80 color mapped,
538
+ #>10 ubyte&0x07 =0x00 2 colors
539
+ #>10 ubyte&0x07 =0x01 4 colors
540
+ #>10 ubyte&0x07 =0x02 8 colors
541
+ #>10 ubyte&0x07 =0x03 16 colors
542
+ #>10 ubyte&0x07 =0x04 32 colors
543
+ #>10 ubyte&0x07 =0x05 64 colors
544
+ #>10 ubyte&0x07 =0x06 128 colors
545
+ #>10 ubyte&0x07 =0x07 256 colors
546
+
547
+ # ITC (CMU WM) raster files. It is essentially a byte-reversed Sun raster,
548
+ # 1 plane, no encoding.
549
+ 0 string \361\0\100\273 CMU window manager raster image data
550
+ >4 ulelong >0 %d x
551
+ >8 ulelong >0 %d,
552
+ >12 ulelong >0 %d-bit
553
+
554
+ # Magick Image File Format
555
+ # URL: https://imagemagick.org/script/miff.php
556
+ # Reference: http://fileformats.archiveteam.org/wiki/MIFF
557
+ # Update: Joerg Jenderek
558
+ # http://www.nationalarchives.gov.uk/pronom/fmt/930
559
+ 0 search/256/bc id=imagemagick
560
+ # skip bad ASCII text by following new line~0x0A or space~0x20 character
561
+ #>&0 ubyte x \b, next character %#x
562
+ # called by TriD ImageMagick Machine independent File Format bitmap
563
+ >&0 ubyte&0xD5 0 MIFF image data
564
+ # https://reposcope.com/mimetype/image/miff
565
+ #!:mime image/miff
566
+ !:mime image/x-miff
567
+ !:ext miff/mif
568
+ # examples with standard file(1) magic
569
+ #>>0 string =id=ImageMagick with standard magic
570
+ # examples with unusual file(1) magic like
571
+ >>0 string !id=ImageMagick starting with
572
+ # start with comment (brace) like http://samples.fileformat.info/.../AQUARIUM.MIF
573
+ >>>0 ubyte =0x7b comment
574
+ # skip second character which is often a newline and show comment
575
+ >>>>2 string x "%s"
576
+ # does not start with comment, probably letters with other case like Id=ImageMagick
577
+ # ImageMagick-7.0.9-2/Magick++/demo/smile_anim.miff
578
+ >>>0 ubyte !0x7b
579
+ >>>>0 string >\0 '%-.14s'
580
+ # URL: https://imagemagick.org/
581
+ # Reference: https://imagemagick.org/script/magick-vector-graphics.php
582
+ # From: Joerg Jenderek
583
+ # Note: all white-spaces between commands are ignored
584
+ 0 string push
585
+ # skip some white spaces
586
+ >5 search/3 graphic-context ImageMagick Vector Graphic
587
+ # TODO: look for dangerous commands like CVE-2016-3715
588
+ #!:mime text/plain
589
+ !:mime image/x-mvg
590
+ !:ext mvg
591
+
592
+ # Artisan
593
+ 0 long 1123028772 Artisan image data
594
+ >4 long 1 \b, rectangular 24-bit
595
+ >4 long 2 \b, rectangular 8-bit with colormap
596
+ >4 long 3 \b, rectangular 32-bit (24-bit with matte)
597
+
598
+ # FIG (Facility for Interactive Generation of figures), an object-based format
599
+ # URL: http://fileformats.archiveteam.org/wiki/Fig
600
+ # https://en.wikipedia.org/wiki/Xfig
601
+ # Reference: http://mark0.net/download/triddefs_xml.7z/defs/f/fig.trid.xml
602
+ # https://web.archive.org/web/20070920204655/http://epb.lbl.gov/xfig/fig-format.html
603
+ # Update: Joerg Jenderek
604
+ # Note: called "FIG vector drawing" by TrID,
605
+ # 4 byte magic is assumed to be always at offset 0 and
606
+ # verified by `fig2mpdf -v bootloader.fig && file bootloader.pdf`
607
+ #0 search/1/tb #FIG FIG image text
608
+ # GRR: with --keep-going option the line above gives duplicate messages
609
+ 0 search/1/ts #FIG
610
+ >&0 use image-xfig
611
+ # binary data variant with non ASCII text characters like Control-A or �C in thermostat.fig
612
+ 0 search/1/bs #FIG
613
+ >&0 use image-xfig
614
+ # display XFIG image describing text, mime type, file name extension and version
615
+ 0 name image-xfig
616
+ >8 ubyte x FIG image text
617
+ #!:mime text/plain
618
+ # https://reposcope.com/mimetype/image/x-xfig
619
+ !:mime image/x-xfig
620
+ !:ext fig
621
+ # version string like: 1.4 2.1 3.1 3.2
622
+ >5 string x \b, version %.3s
623
+ # some times after version text like: "Produced by xfig version 3.2.5-alpha5"
624
+ >8 ubyte >0x0D
625
+ >>8 string x "%s"
626
+ # should be point character (2Eh) of version string according to TrID
627
+ #>6 ubyte !0x2E \b, at 6 %#x
628
+ # caret character (23h) at the beginning in most or probably all examples
629
+ #>0 ubyte !0x23 \b, starting with character %#x
630
+ # URL: http://fileformats.archiveteam.org/wiki/DeskMate_Draw
631
+ # http://en.wikipedia.org/wiki/Deskmate
632
+ # Reference: http://mark0.net/download/triddefs_xml.7z/defs/d/dm-fig.trid.xml
633
+ # From: Joerg Jenderek
634
+ # Note: called "DeskMate Draw drawing" by TrID
635
+ 0 string \x14FIG DeskMate Drawing
636
+ #!:mime application/octet-stream
637
+ !:mime image/x-deskmate-fig
638
+ !:ext fig
639
+ # TODO:
640
+ # "Cabri 3D Figure" by TrID fig-cabri.trid.xml
641
+ # "Playmation Figure" by TrID fig-playmation.trid.xml
642
+
643
+ # PHIGS
644
+ 0 string ARF_BEGARF PHIGS clear text archive
645
+ 0 string @(#)SunPHIGS SunPHIGS
646
+ # version number follows, in the form m.n
647
+ >40 string SunBin binary
648
+ >32 string archive archive
649
+
650
+ # GKS (Graphics Kernel System)
651
+ 0 string GKSM GKS Metafile
652
+ >24 string SunGKS \b, SunGKS
653
+
654
+ # CGM image files
655
+ # Update: Joerg Jenderek
656
+ # URL: http://fileformats.archiveteam.org/wiki/CGM
657
+ # https://en.wikipedia.org/wiki/Computer_Graphics_Metafile
658
+ # Reference: http://mark0.net/download/triddefs_xml.7z/defs/c/cgm-ct.trid.xml
659
+ # http://standards.iso.org/ittf/PubliclyAvailableStandards/c032381_ISO_IEC_8632-4_1999(E).zip
660
+ # Note: called "Computer Graphics Metafile (Clear Text)" by TrID and
661
+ # "Computer Graphics Metafile ASCII" by DROID or CGM by XnView
662
+ # verified by LibreOffice and partly by XnView `nconvert -info *.CGM`
663
+ # According to TrID only letter B and M are always upcased and by DROID often only B is upcased for command BEGIN METAFILE
664
+ 0 string/c begmf
665
+ # skip SOME DROID fmt-301-signature-id-359.cgm fmt-301-signature-id-361.cgm fmt-302-signature-id-364.cgm
666
+ # fmt-302-signature-id-365.cgm x-fmt-142-signature-id-350.cgm x-fmt-142-signature-id-351.cgm
667
+ >5 short !0
668
+ # skip other versions of DROID fmt-301-signature-id-359.cgm fmt-301-signature-id-361.cgm fmt-302-signature-id-364.cgm
669
+ # fmt-302-signature-id-365.cgm x-fmt-142-signature-id-350.cgm x-fmt-142-signature-id-351.cgm
670
+ >>5 short !0xABab clear text Computer Graphics Metafile
671
+ # https://reposcope.com/mimetype/image/cgm
672
+ !:mime image/cgm
673
+ !:ext cgm
674
+ # SF:NAME like: 'metafile example';
675
+ >>>5 string x %s
676
+ # look for command METAFILE VERSION (MFVERSION <SOFTSEP> <I:VERSION>)
677
+ >>>2 search/128/c mfversion
678
+ #>>>>&0 ubyte x SOFTSEP=%#x
679
+ # version like: 1 3 4
680
+ >>>>&1 ubyte >0x31 \b, version %c
681
+ # Summary: Computer Graphics Metafile (binary)
682
+ # Reference: http://mark0.net/download/triddefs_xml.7z/defs/c/cgm-bin.trid.xml
683
+ # https://standards.iso.org/ittf/PubliclyAvailableStandards/c032380_ISO_IEC_8632-3_1999(E).zip
684
+ # Note: called "Computer Graphics Metafile (binary)" by TrID and DROID or CGM by XnView
685
+ # verified by LibreOffice and partly by XnView `nconvert -info *.CGM`
686
+ # look for BEGIN METAFILE (element Class 0 and ID 1 and "random" Parameter) that is binary C C C C 0 0 0 0 0 0 1 P P P P P
687
+ 0 ubeshort&0xFFe0 0x0020
688
+ # skip SOME DROID fmt-303-signature-id-368.cgm fmt-304-signature-id-369.cgm fmt-305-signature-id-370.cgm fmt-306-signature-id-371.cgm
689
+ # with containing only 28 bytes
690
+ >28 ubyte x
691
+ # look for METAFILE VERSION (element class 1 and id 1 and parameter P1 with length 2) that is binary 0 0 0 1 i i i i i i 1 P P P 1 P
692
+ # with "low" version; 2nd worst case argentin.cgm with parameter length 56
693
+ # worst MS.CGM
694
+ #>>2 search/73/b \x10\x22\0 binary Computer Graphics Metafile
695
+ >>2 search/128/b \x10\x22\0 binary Computer Graphics Metafile
696
+ !:mime image/cgm
697
+ !:ext cgm
698
+ # metafile 2 byte version number like: 1 (most) 2 3 4
699
+ >>>&-1 ubeshort >1 \b, version %u
700
+ # length number of 1st parameter octets in range 0 to 30 implies short command
701
+ >>>0 ubeshort&0x001F <31 \b, parameter length %u
702
+ # length of string like: 8 9 10 11 12 29
703
+ #>>>>2 ubyte x \b, %u BYTES (SHORT)
704
+ # string like: 'HiJaak 2' 'Example 1' 'sahara.cgm' 'MASTERCLIPS--Art Of Business '
705
+ >>>>2 pstring >\0 '%s'
706
+ # after 1st short command with even parameter length comes 2nd command like: 1022h 0010h (EAF00010.CGM 'HiJaak 2' FLOPPY2.CGM TIGER.CGM 'B:\TIGER.CGM')
707
+ >>>>0 ubeshort&0x0001 =0
708
+ >>>>>(2.b+3) ubeshort !0x1022 \b, 2nd command %#4.4x (short even)
709
+ # after 1st short command with odd parameter length comes nil padding byte followed 2nd command like: 1022h
710
+ >>>>0 ubeshort&0x0001 =1
711
+ #>>>>>(2.b+3) ubyte !0 \b, PADDING %#x
712
+ >>>>>(2.b+4) ubeshort !0x1022 \b, 2nd command %#4.4x (short odd)
713
+ # 11111 binary (decimal 31) in the parameter field indicates that the command is in long-form
714
+ >>>0 ubeshort&0x001F =0x1F
715
+ # bit 15 is partition flag with 1 for 'not-last' partition and 0 for 'last' partition
716
+ >>>>2 ubeshort&0x8000 !0 \b, partition flag %#4.4x
717
+ # bits 0 to 14 is parameter list length; the number of following parameter octets; range 0 to 32767
718
+ # length of 1st long command parameter like: 53
719
+ >>>>2 ubeshort&0x7Fff x \b, parameter length %u (long)
720
+ # The two header words are then followed by lenghth of 1st string like: 52
721
+ #>>>>4 ubyte x \b, %u BYTES
722
+ # string like: 'K:\PROJECTS\GRAPHICS\DWKS3.5\CLIPART\FLAGS\Italy.cgm'
723
+ >>>>4 pstring/B x '%s'
724
+ # odd long parameter length implies single null padding octet to start command on word boundary
725
+ >>>>2 ubeshort&0x0001 =1
726
+ # after 1st long command with odd parameter length comes nil padding byte followed by 2nd command like: 1022h
727
+ #>>>>>(4.b+5) ubyte !0 \b, PADDING %#x
728
+ >>>>>(4.b+6) ubeshort !0x1022 \b, 2nd command %#4.4x (long odd)
729
+ # even long parameter length implies next command directly is following
730
+ >>>>2 ubeshort&0x0001 =0
731
+ # after 1st long command with even parameter length comes 2nd command like: 1022h 0x1054 (MS.CGM)
732
+ >>>>>(4.b+5) ubeshort !0x1022 \b, 2nd command %#4.4x (long even)
733
+ # look for END METAFILE (element class 0 and id 2 and 0 parameter) that is binary 0 0 0 0 i i i i i 1 i P P P P P
734
+ >>>-2 ubeshort !0x0040 \b, NOT_FOUND_END_METAFILE
735
+
736
+ # MGR bitmaps (Michael Haardt, u31b3hs@pool.informatik.rwth-aachen.de)
737
+ 0 string yz MGR bitmap, modern format, 8-bit aligned
738
+ 0 string zz MGR bitmap, old format, 1-bit deep, 16-bit aligned
739
+ 0 string xz MGR bitmap, old format, 1-bit deep, 32-bit aligned
740
+ 0 string yx MGR bitmap, modern format, squeezed
741
+
742
+ # Fuzzy Bitmap (FBM) images
743
+ 0 string %bitmap\0 FBM image data
744
+ >30 long 0x31 \b, mono
745
+ >30 long 0x33 \b, color
746
+
747
+ # facsimile data
748
+ 1 string PC\ Research,\ Inc group 3 fax data
749
+ >29 ubyte 0 \b, normal resolution (204x98 DPI)
750
+ >29 ubyte 1 \b, fine resolution (204x196 DPI)
751
+ # From: Herbert Rosmanith <herp@wildsau.idv.uni.linz.at>
752
+ 0 string Sfff structured fax file
753
+
754
+ # From: Joerg Jenderek <joerg.jen.der.ek@gmx.net>
755
+ # URL: http://fileformats.archiveteam.org/wiki/Award_BIOS_logo
756
+ # Note: verified by XnView command `nconvert -fullinfo *.EPA`
757
+ 0 string \x11\x06 Award BIOS Logo, 136 x 84
758
+ !:mime image/x-award-bioslogo
759
+ !:ext epa
760
+ 0 string \x11\x09 Award BIOS Logo, 136 x 126
761
+ !:mime image/x-award-bioslogo
762
+ !:ext epa
763
+ # https://telparia.com/fileFormatSamples/image/epa/IO.EPA
764
+ # Note: by bitmap-awbm-v1x1009.trid.xml called "Award BIOS logo bitmap (128x126) (v1)"
765
+ # verified by RECOIL `recoil2png -o tmp.png IO.EPA; file tmp.png`
766
+ 0 string \x10\x09 Award BIOS Logo, 128 x 126
767
+ !:mime image/x-award-bioslogo
768
+ !:ext epa
769
+ #0 string \x07\x1f BIOS Logo corrupted?
770
+ # http://www.blackfiveservices.co.uk/awbmtools.shtml
771
+ # http://biosgfx.narod.ru/v3/
772
+ # http://biosgfx.narod.ru/abr-2/
773
+ 0 string AWBM
774
+ # Note: by bitmap-awbm.trid.xml called "Award BIOS logo bitmap (v2)"
775
+ >4 uleshort <1981 Award BIOS Logo, version 2
776
+ #>4 uleshort <1981 Award BIOS bitmap
777
+ !:mime image/x-award-bioslogo2
778
+ #!:mime image/x-award-bmp
779
+ !:ext epa/bmp
780
+ # image width is a multiple of 4
781
+ >>4 uleshort&0x0003 0
782
+ >>>4 uleshort x \b, %d
783
+ >>>6 uleshort x x %d
784
+ >>4 uleshort&0x0003 >0 \b,
785
+ >>>4 uleshort&0x0003 =1
786
+ >>>>4 uleshort x %d+3
787
+ >>>4 uleshort&0x0003 =2
788
+ >>>>4 uleshort x %d+2
789
+ >>>4 uleshort&0x0003 =3
790
+ >>>>4 uleshort x %d+1
791
+ >>>6 uleshort x x %d
792
+ # at offset 8 starts imagedata followed by "RGB " marker
793
+
794
+ # PC bitmaps (OS/2, Windows BMP files) (Greg Roelofs, newt@uchicago.edu)
795
+ # https://en.wikipedia.org/wiki/BMP_file_format#DIB_header_.\
796
+ # 28bitmap_information_header.29
797
+ # Note: variant starting direct with DIB header see
798
+ # http://fileformats.archiveteam.org/wiki/BMP
799
+ # verified by ImageMagick version 6.8.9-8 command `identify *.dib`
800
+ 0 uleshort 40
801
+ # skip bad samples like GAME by looking for valid number of color planes
802
+ >12 uleshort 1 Device independent bitmap graphic
803
+ !:mime image/x-ms-bmp
804
+ !:apple ????BMPp
805
+ !:ext dib
806
+ >>4 ulelong x \b, %d x
807
+ >>8 ulelong x %d x
808
+ >>14 uleshort x %d
809
+ # number of color planes (must be 1)
810
+ #>>12 uleshort >1 \b, %u color planes
811
+ # compression method: 0~no 1~RLE 8-bit/pixel 3~Huffman 1D
812
+ #>>16 ulelong 3 \b, Huffman 1D compression
813
+ >>16 ulelong >0 \b, %u compression
814
+ # image size is the size of raw bitmap; a dummy 0 can be given for BI_RGB bitmaps
815
+ >>20 ulelong x \b, image size %u
816
+ # horizontal and vertical resolution of the image (pixel per metre, signed integer)
817
+ >>24 ulelong >0 \b, resolution %d x
818
+ >>>28 ulelong x %d px/m
819
+ # number of colors in palette, or 0 to default to 2**n
820
+ #>>32 ulelong >0 \b, %u colors
821
+ # number of important colors used, or 0 when every color is important
822
+ >>36 ulelong >0 \b, %u important colors
823
+ # From: Joerg Jenderek
824
+ # URL: http://fileformats.archiveteam.org/wiki/VBM_(VDC_BitMap)
825
+ # Reference: http://csbruce.com/cbm/postings/csc19950906-1.txt
826
+ # http://mark0.net/download/triddefs_xml.7z
827
+ # defs/b/bitmap-vbm.trid.xml
828
+ # defs/b/bitmap-vbm-v3.trid.xml
829
+ # Note: called "VDC BitMap" by TrID
830
+ # verified by RECOIL `recoil2png -o tmp.png coke_can.vbm; file tmp.png`
831
+ # begin with a signature of 'B' 'M' 0xCB, followed by a version byte 2 or 3
832
+ # Similar to the unrelated Windows BMP format
833
+ # check for VDC bitmap and then display image dimension and version
834
+ 0 name bitmap-vbm
835
+ >2 ubyte 0xCB VDC bitmap
836
+ !:mime image/x-commodore-vbm
837
+ # http://recoil.sourceforge.net/formats.html
838
+ !:ext bm/vbm
839
+ # the VBM format version number: 2 or 3
840
+ >>3 ubyte x \b, version %u
841
+ # width of the image in Hi/Lo format
842
+ >>4 ubeshort x \b, %u
843
+ # height of the image
844
+ >>6 ubeshort x x %u
845
+ # version 3 images have the following additional header information
846
+ >>3 ubyte =3
847
+ # data-encoding type: 0~uncompressed 1~RLE-compressed
848
+ >>>8 ubyte 0 \b, uncompressed
849
+ >>>8 ubyte 1 \b, RLE-compressed
850
+ # byte code for general RLE repetitions
851
+ #>>>9 ubyte x \b, RLE repetition code 0x%x
852
+ # reserved := 0
853
+ #>>>14 short >0 \b, reserved 0x%x
854
+ # length of comment text; 0~no comment text
855
+ #>>>16 ubeshort >0 \b, comment length %u
856
+ >>>16 pstring/H >0 \b, comment "%s"
857
+ #
858
+ 0 string BM
859
+ # check for magic and version 2 of VDC bitmap or BMP with cbSize=715=CB02
860
+ >2 ubeshort 0xCB02
861
+ >>6 short =0
862
+ >>>0 use bitmap-bmp
863
+ # VDC bitmap height or maybe a few OS/2 BMP with nonzero "hotspot coordinates"
864
+ >>6 short !0
865
+ >>>0 use bitmap-vbm
866
+ # check for magic and version 3 of VDC bitmap or BMP with cbSize=971=CB03
867
+ >2 ubeshort 0xCB03
868
+ # check for reserved value (=0) of VDC bitmap
869
+ >>14 short =0
870
+ >>>0 use bitmap-vbm
871
+ # BMP with cbSize=????03CBh and dib header size != 0
872
+ >>14 short !0
873
+ >>>0 use bitmap-bmp
874
+ # cbSize is size of header or file size of Windows BMP bitmap
875
+ >2 default x
876
+ >>0 use bitmap-bmp
877
+ 0 name bitmap-bmp
878
+ >14 ulelong 12 PC bitmap, OS/2 1.x format
879
+ !:mime image/bmp
880
+ !:ext bmp
881
+ >>18 uleshort x \b, %d x
882
+ >>20 uleshort x %d
883
+ # number of color planes (must be 1)
884
+ #>>22 uleshort !1 \b, %u color planes
885
+ # number of bits per pixel (color depth); found 4 8
886
+ >>24 uleshort x x %d
887
+ # x, y coordinates of the hotspot
888
+ >>6 uleshort >0 \b, hotspot %ux
889
+ >>>8 uleshort x \b%u
890
+ # cbSize; size of file or header like 1Ah 228C8h
891
+ >>2 ulelong x \b, cbSize %u
892
+ #>>2 ulelong x \b, cbSize 0x%8.8x
893
+ # offBits; offset to bitmap data like:
894
+ >>10 ulelong x \b, bits offset %u
895
+ # http://fileformats.archiveteam.org/wiki/BMP#OS.2F2_BMP_2.0 no examples found
896
+ >14 ulelong 48 PC bitmap, OS/2 2.x format (DIB header size=48)
897
+ >14 ulelong 24 PC bitmap, OS/2 2.x format (DIB header size=24)
898
+ # http://entropymine.com/jason/bmpsuite/bmpsuite/q/pal8os2v2-16.bmp
899
+ # Note: by bitmap-bmp-v2o.trid.xml called "Windows Bitmap (v2o)"
900
+ >14 ulelong 16 PC bitmap, OS/2 2.x format (DIB header size=16)
901
+ !:mime image/bmp
902
+ !:apple ????BMPp
903
+ !:ext bmp
904
+ # image width and height fields are unsigned integers for OS/2
905
+ >>18 ulelong x \b, %u x
906
+ >>22 ulelong x %u
907
+ # number of bits per pixel (color depth); found 8
908
+ >>28 uleshort >1 x %u
909
+ # x, y coordinates of the hotspot
910
+ >>6 uleshort >0 \b, hotspot %ux
911
+ >>>8 uleshort x \b%u
912
+ # number of color planes (must be 1)
913
+ #>>26 uleshort >1 \b, %u color planes
914
+ # cbSize; size of file like: 241E
915
+ >>2 ulelong x \b, cbSize %u
916
+ #>>2 ulelong x \b, cbSize 0x%x
917
+ # offBits; offset to bitmap data like: 41E
918
+ >>10 ulelong x \b, bits offset %u
919
+ #>>10 ulelong x \b, bits offset 0x%x
920
+ >14 ulelong 64 PC bitmap, OS/2 2.x format
921
+ !:mime image/bmp
922
+ !:apple ????BMPp
923
+ !:ext bmp
924
+ # image width and height fields are unsigned integers for OS/2
925
+ >>18 ulelong x \b, %u x
926
+ >>22 ulelong x %u
927
+ # number of bits per pixel (color depth); found 1 4 8
928
+ >>28 uleshort >1 x %u
929
+ # x, y coordinates of the hotspot
930
+ >>6 uleshort >0 \b, hotspot %ux
931
+ >>>8 uleshort x \b%u
932
+ >>26 uleshort >1 \b, %u color planes
933
+ # cbSize; size of file or headers
934
+ >>2 ulelong x \b, cbSize %u
935
+ # BMP with cbSize 000002CBh=715 or 000003CBh=971 maybe misinterpreted as VDC bitmap
936
+ #>>2 ulelong x \b, cbSize %#x
937
+ # offBits; offset to bitmap data like 56h 5Eh 8Eh 43Eh
938
+ >>10 ulelong x \b, bits offset %u
939
+ #>>10 ulelong x \b, bits offset %#x
940
+ #>>(10.l) ubequad !0 \b, bits %#16.16llx
941
+ # BITMAPV2INFOHEADER adds RGB bit masks
942
+ >14 ulelong 52 PC bitmap, Adobe Photoshop
943
+ !:mime image/bmp
944
+ !:apple ????BMPp
945
+ !:ext bmp
946
+ >>18 ulelong x \b, %d x
947
+ >>22 ulelong x %d x
948
+ # number of bits per pixel (color depth); found 16 32
949
+ >>28 uleshort x %d
950
+ # x, y coordinates of the hotspot; should be zero for Windows variant
951
+ >>6 uleshort >0 \b, hotspot %ux
952
+ >>>8 uleshort x \b%u
953
+ # cbSize; size of file like: 14A 7F42
954
+ >>2 ulelong x \b, cbSize %u
955
+ #>>2 ulelong x \b, cbSize 0x%x
956
+ # offBits; offset to bitmap data like: 42h
957
+ >>10 ulelong x \b, bits offset %u
958
+ #>>10 ulelong x \b, bits offset 0x%x
959
+ # BITMAPV3INFOHEADER adds alpha channel bit mask
960
+ >14 ulelong 56 PC bitmap, Adobe Photoshop with alpha channel mask
961
+ !:mime image/bmp
962
+ !:apple ????BMPp
963
+ !:ext bmp
964
+ >>18 ulelong x \b, %d x
965
+ >>22 ulelong x %d x
966
+ # number of bits per pixel (color depth); found 16 32
967
+ >>28 uleshort x %d
968
+ # x, y coordinates of the hotspot; should be zero for Windows variant
969
+ >>6 uleshort >0 \b, hotspot %ux
970
+ >>>8 uleshort x \b%u
971
+ # cbSize; size of file like: 4E 7F46 131DE 14046h
972
+ >>2 ulelong x \b, cbSize %u
973
+ #>>2 ulelong x \b, cbSize 0x%x
974
+ # offBits; offset to bitmap data like: 46h
975
+ >>10 ulelong x \b, bits offset %u
976
+ #>>10 ulelong x \b, bits offset 0x%x
977
+ >14 ulelong 40
978
+ # jump 4 bytes before end of file/header to skip fmt-116-signature-id-118.dib
979
+ # broken for large bitmaps
980
+ #>>(2.l-4) ulong x PC bitmap, Windows 3.x format
981
+ >>14 ulelong 40 PC bitmap, Windows 3.x format
982
+ !:mime image/bmp
983
+ !:apple ????BMPp
984
+ >>>18 ulelong x \b, %d x
985
+ >>>22 ulelong x %d
986
+ # 320 x 400 https://en.wikipedia.org/wiki/LOGO.SYS
987
+ >>>18 ulequad =0x0000019000000140 x
988
+ !:ext bmp/sys
989
+ >>>18 ulequad !0x0000019000000140
990
+ # compression method 2~RLE 4-bit/pixel implies also extension rle
991
+ >>>>30 ulelong 2 x
992
+ !:ext bmp/rle
993
+ # not RLE compressed and not 320x400 dimension
994
+ >>>>30 default x
995
+ # "small" dimensions like: 14x15 15x16 16x14 16x16 32x32
996
+ # https://en.wikipedia.org/wiki/Favicon
997
+ >>>>>18 ulequad&0xffFFffC0ffFFffC0 =0 x
998
+ # https://www.politi-kdigital.de/favicon.ico
999
+ # http://forum.rpc1.org/favicon.ico
1000
+ !:ext bmp/ico
1001
+ # "big" dimensions > 63
1002
+ >>>>>18 default x x
1003
+ !:ext bmp
1004
+ # number of bits per pixel (color depth); found 1 2 4 8 16 24 32
1005
+ >>>28 uleshort x %d
1006
+ # x, y coordinates of the hotspot; there is no hotspot in bitmaps, so values 0
1007
+ #>>>6 uleshort >0 \b, hotspot %ux
1008
+ #>>>>8 uleshort x \b%u
1009
+ # number of color planes (must be 1), except badplanes.bmp for testing
1010
+ #>>>26 uleshort >1 \b, %u color planes
1011
+ # compression method: 0~no 1~RLE 8-bit/pixel 2~RLE 4-bit/pixel 3~Huffman 1D 6~RGBA bit field masks
1012
+ #>>>30 ulelong 3 \b, Huffman 1D compression
1013
+ >>>30 ulelong >0 \b, %u compression
1014
+ # image size is the size of raw bitmap; a dummy 0 can be given for BI_RGB bitmaps
1015
+ >>>34 ulelong >0 \b, image size %u
1016
+ # horizontal and vertical resolution of the image (pixel per metre, signed integer)
1017
+ >>>38 ulelong >0 \b, resolution %d x
1018
+ >>>>42 ulelong x %d px/m
1019
+ # number of colors in palette 16 256, or 0 to default to 2**n
1020
+ #>>>46 ulelong >0 \b, %u colors
1021
+ # number of important colors used, or 0 when every color is important
1022
+ >>>50 ulelong >0 \b, %u important colors
1023
+ # cbSize; often size of file
1024
+ >>>2 ulelong x \b, cbSize %u
1025
+ #>>>2 ulelong x \b, cbSize %#x
1026
+ # offBits; offset to bitmap data like 36h 76h BEh 236h 406h 436h 4E6h
1027
+ >>>10 ulelong x \b, bits offset %u
1028
+ #>>>10 ulelong x \b, bits offset %#x
1029
+ #>>>(10.l) ubequad !0 \b, bits %#16.16llxd
1030
+ >14 ulelong 124 PC bitmap, Windows 98/2000 and newer format
1031
+ !:mime image/bmp
1032
+ !:ext bmp
1033
+ >>18 ulelong x \b, %d x
1034
+ >>22 ulelong x %d x
1035
+ # color planes; must be 1
1036
+ #>>>26 uleshort >1 \b, %u color planes
1037
+ # number of bits per pixel (color depth); found 4 8 16 24 32 1 (fmt-119-signature-id-121.bmp) 0 (rgb24jpeg.bmp rgb24png.bmp)
1038
+ >>28 uleshort x %d
1039
+ # x, y coordinates of the hotspot; should be zero for Windows variant
1040
+ >>6 uleshort >0 \b, hotspot %ux
1041
+ >>>8 uleshort x \b%u
1042
+ # cbSize; size of file like: 8E AA 48A 999 247A 4F02 7F8A 3F88E B216E 1D4C8A 100008A
1043
+ >>2 ulelong x \b, cbSize %u
1044
+ #>>2 ulelong x \b, cbSize 0x%x
1045
+ # offBits; offset to bitmap data like: 8A 47A ABABABAB (fmt-119-signature-id-121.bmp)
1046
+ >>10 ulelong x \b, bits offset %u
1047
+ #>>10 ulelong x \b, bits offset 0x%x
1048
+ >14 ulelong 108 PC bitmap, Windows 95/NT4 and newer format
1049
+ !:mime image/bmp
1050
+ !:ext bmp
1051
+ >>18 ulelong x \b, %d x
1052
+ >>22 ulelong x %d x
1053
+ # number of bits per pixel (color depth); found 8 24 32
1054
+ >>28 uleshort x %d
1055
+ # x, y coordinates of the hotspot; should be zero for Windows variant
1056
+ >>6 uleshort >0 \b, hotspot %ux
1057
+ >>>8 uleshort x \b%u
1058
+ # cbSize; size of file like: 82 8A 9A 9F86 1E07A 3007A 88B7A C007A
1059
+ >>2 ulelong x \b, cbSize %u
1060
+ #>>2 ulelong x \b, cbSize 0x%x
1061
+ # offBits; offset to bitmap data like: 7A 7E 46A
1062
+ >>10 ulelong x \b, bits offset %u
1063
+ #>>10 ulelong x \b, bits offset 0x%x
1064
+ # Update: Joerg Jenderek
1065
+ # URL: http://fileformats.archiveteam.org/wiki/OS/2_Icon
1066
+ # Reference: http://www.fileformat.info
1067
+ # /format/os2bmp/spec/902d5c253f2a43ada39c2b81034f27fd/view.htm
1068
+ # Note: verified by command like `deark -l -d3 OS2MEMU.ICO`
1069
+ 0 string IC
1070
+ # skip Lotus smart icon *.smi by looking for valid hotspot coordinates
1071
+ >6 ulelong&0xFF00FF00 =0 OS/2 icon
1072
+ # jump 4 bytes before end of header/file and test for accessibility
1073
+ #>>(2.l-4) ubelong x End of header is OK!
1074
+ !:mime image/x-os2-ico
1075
+ !:ext ico
1076
+ # cbSize; size of header or file in bytes like 1ah 120h 420h
1077
+ >>2 ulelong x \b, cbSize %u
1078
+ # xHotspot, yHotspot; coordinates of the hotspot for icons like 16 32
1079
+ >>6 uleshort x \b, hotspot %ux
1080
+ >>8 uleshort x \b%u
1081
+ # offBits; offset in bytes to the beginning of the bit-map pel data like 20h
1082
+ >>10 ulelong x \b, bits offset %u
1083
+ #>>(10.l) ubequad x \b, bits %#16.16llx
1084
+ #0 string PI PC pointer image data
1085
+ #0 string CI PC color icon data
1086
+ 0 string CI
1087
+ # test also for valid dib header sizes 12 or 64
1088
+ >14 ulelong <65 OS/2
1089
+ # test also for valid hotspot coordinates
1090
+ #>>6 ulelong&0xFE00FE00 =0 OS/2
1091
+ !:mime image/x-os2-ico
1092
+ !:ext ico
1093
+ >>14 ulelong 12 1.x color icon
1094
+ # image width and height fields are unsigned integers for OS/2
1095
+ >>>18 uleshort x %u x
1096
+ # stored height = 2 * real height
1097
+ >>>20 uleshort/2 x %u
1098
+ # number of bits per pixel (color depth). Typical 32 24 16 8 4 but only 1 found
1099
+ >>>24 uleshort >1 x %u
1100
+ # color planes; must be 1
1101
+ #>>>22 uleshort >1 \b, %u color planes
1102
+ >>14 ulelong 64 2.x color icon
1103
+ # image width and height
1104
+ >>>18 ulelong x %u x
1105
+ # stored height = 2 * real height
1106
+ >>>22 ulelong/2 x %u
1107
+ # number of bits per pixel (color depth). only 1 found
1108
+ >>>28 uleshort >1 x %u
1109
+ #>>>26 uleshort >1 \b, %u color planes
1110
+ # compression method: 0~no 3~Huffman 1D
1111
+ >>>30 ulelong 3 \b, Huffman 1D compression
1112
+ #>>>30 ulelong >0 \b, %u compression
1113
+ # xHotspot, yHotspot; coordinates of the hotspot like 0 1 16 20 32 33 63 64
1114
+ >>6 uleshort x \b, hotspot %ux
1115
+ >>8 uleshort x \b%u
1116
+ # cbSize; size of header or maybe file in bytes like 1Ah 4Eh 84Eh
1117
+ >>2 ulelong x \b, cbSize %u
1118
+ #>>2 ulelong x \b, cbSize %x
1119
+ # offBits; offset to bitmap data (pixel array) like E4h 3Ah 66h 6Ah 33Ah 4A4h
1120
+ >>10 ulelong x \b, bits offset %u
1121
+ #>>10 ulelong x \b, bits offset %#x
1122
+ #>>(10.l) ubequad !0 \b, bits %#16.16llx
1123
+ # dib header size: 12~Ch~OS/2 1.x 64~40h~OS/2 2.x
1124
+ #>>14 ulelong x \b, dib header size %u
1125
+ #0 string CP PC color pointer image data
1126
+ # URL: http://fileformats.archiveteam.org/wiki/OS/2_Pointer
1127
+ # Reference: http://www.fileformat.info/format/os2bmp/egff.htm
1128
+ 0 string CP
1129
+ # skip many Corel Photo-Paint image "CPT9FILE" by checking for positive bits offset
1130
+ >10 ulelong >0
1131
+ # skip CPU-Z Report by checking for valid dib header sizes 12 or 64
1132
+ >>14 ulelong =12
1133
+ >>>0 use os2-ptr
1134
+ >>14 ulelong =64
1135
+ >>>0 use os2-ptr
1136
+ # display information of OS/2 pointer bitmaps
1137
+ 0 name os2-ptr
1138
+ >14 ulelong x OS/2
1139
+ # http://extension.nirsoft.net/PTR
1140
+ !:mime image/x-ibm-pointer
1141
+ !:ext ptr
1142
+ >>14 ulelong 12 1.x color pointer
1143
+ # image width and height fields are unsigned integers for OS/2
1144
+ >>>18 uleshort x %u x
1145
+ # stored height = 2 * real height
1146
+ >>>20 uleshort/2 x %u
1147
+ # number of bits per pixel (color depth). Typical 32 24 16 8 4 but only 1 found
1148
+ >>>24 uleshort >1 x %u
1149
+ # color planes; must be 1
1150
+ #>>>22 uleshort >1 \b, %u color planes
1151
+ >>14 ulelong 64 2.x color pointer
1152
+ # image width and height
1153
+ >>>18 ulelong x %u x
1154
+ # stored height = 2 * real height
1155
+ >>>22 ulelong/2 x %u
1156
+ # number of bits per pixel (color depth). only 1 found
1157
+ >>>28 uleshort >1 x %u
1158
+ #>>>26 uleshort >1 \b, %u color planes
1159
+ # compression method: 0~no 3~Huffman 1D
1160
+ >>>30 ulelong 3 \b, Huffman 1D compression
1161
+ #>>>30 ulelong >0 \b, %u compression
1162
+ # xHotspot, yHotspot; coordinates of the hotspot like 0 3 4 8 15 16 23 27 31
1163
+ >>6 uleshort x \b, hotspot %ux
1164
+ >>8 uleshort x \b%u
1165
+ # cbSize; size of header or maybe file in bytes like 1Ah 4Eh
1166
+ >>2 ulelong x \b, cbSize %u
1167
+ #>>2 ulelong x \b, cbSize %x
1168
+ # offBits; offset to bitmap data (pixel array) like 6Ah A4h E4h 4A4h
1169
+ >>10 ulelong x \b, bits offset %u
1170
+ #>>10 ulelong x \b, bits offset %#x
1171
+ #>>(10.l) ubequad !0 \b, bits %#16.16llx
1172
+ # dib header size: 12~Ch~OS/2 1.x 64~40h~OS/2 2.x
1173
+ #>>14 ulelong x \b, dib header size %u
1174
+ # Conflicts with other entries [BABYL]
1175
+ # URL: http://fileformats.archiveteam.org/wiki/BMP#OS.2F2_Bitmap_Array
1176
+ # Note: container for OS/2 icon "IC", color icon "CI", color pointer "CP" or bitmap "BM"
1177
+ #0 string BA PC bitmap array data
1178
+ 0 string BA
1179
+ # skip old Emacs RMAIL BABYL ./mail.news by checking for low header size
1180
+ >2 ulelong <0x004c5942 OS/2 graphic array
1181
+ !:mime image/x-os2-graphics
1182
+ #!:apple ????BMPf
1183
+ # cbSize; size of header like 28h 5Ch
1184
+ >>2 ulelong x \b, cbSize %u
1185
+ #>>2 ulelong x \b, cbSize %#x
1186
+ # offNext; offset to data like 0 48h F2h 4Eh 64h C6h D2h D6h DAh E6h EAh 348h
1187
+ >>6 ulelong >0 \b, data offset %u
1188
+ #>>6 ulelong >0 \b, data offset %#x
1189
+ #>>(6.l) ubequad !0 \b, data %#16.16llx
1190
+ # dimensions of the intended device like 640 x 480 for VGA or 1024 x 768
1191
+ >>10 uleshort >0 \b, display %u
1192
+ >>>12 uleshort >0 x %u
1193
+ # usType of first array element
1194
+ #>>14 string x \b, usType %2.2s
1195
+ # 1 space char after "1st"
1196
+ # no *.bga examples found https://www.openwith.org/file-extensions/bga/1342
1197
+ >>14 string BM \b; 1st
1198
+ !:ext bmp/bga
1199
+ >>14 string CI \b; 1st
1200
+ !:ext ico
1201
+ >>14 string CP \b; 1st
1202
+ !:ext ico
1203
+ >>14 string IC \b; 1st
1204
+ !:ext ico
1205
+ # no white-black pointer found
1206
+ #>>14 string PT \b; 1st
1207
+ #!:ext
1208
+ >>14 indirect x
1209
+
1210
+ # XPM icons (Greg Roelofs, newt@uchicago.edu)
1211
+ # Update: Joerg Jenderek
1212
+ # URL: http://fileformats.archiveteam.org/wiki/XPM
1213
+ # Reference: http://www.x.org/docs/XPM/xpm.pdf
1214
+ # http://mark0.net/download/triddefs_xml.7z/defs/b/bitmap-xpm.trid.xml
1215
+ # Note: called "X PixMap bitmap" by TrID and "X-Windows Pixmap Image" by DROID via PUID x-fmt/208
1216
+ # starting with c comment like: logo.xpm
1217
+ 0 string /*\040
1218
+ # 9 byte c-comment "/* XPM */" not at the beginning like: mozicon16.xpm mozicon50.xpm (thunderbird)
1219
+ >0 search/0xCE /*\ XPM\ */
1220
+ # skip DROID x-fmt-208-signature-id-620.xpm by looking for char array without explict length
1221
+ # and match mh-logo.xpm (emacs)
1222
+ >>&0 search/1249 []
1223
+ >>>0 use xpm-image
1224
+ # non standard because no 9 byte c-comment "/* XPM */" like: logo.xpm in qemu package
1225
+ >0 default x
1226
+ # words are separated by a white space which can be composed of space and tabulation characters
1227
+ >>0 search/0x52 static\040char\040
1228
+ # skip debug.c testmlc.c by looking for char array without explict length
1229
+ # https://www.clamav.net/downloads/production/clamav-0.104.2.tar.gz
1230
+ # clamav-0.104.2\libclammspack\mspack\debug.c
1231
+ >>>&0 search/64 []
1232
+ >>>>0 use xpm-image
1233
+ # display X pixmap image information
1234
+ 0 name xpm-image
1235
+ >0 string x X pixmap image text
1236
+ #!:mime text/plain
1237
+ # https://reposcope.com/mimetype/image/x-xpixmap
1238
+ # alias
1239
+ #!:mime image/x-xpm
1240
+ !:mime image/x-xpixmap
1241
+ !:ext xpm
1242
+ # NO pm example found!
1243
+ #!:ext xpm/pm
1244
+ # look for start of character array at beginning of a line like: psetupl.xpm (OpenOffice 4.1.7)
1245
+ >0 search/0x406 \n"
1246
+ # DEBUG VALUES string
1247
+ #>>&0 string x '%s'
1248
+ # width with optional white space before like: 16 24 32 48 1280
1249
+ >>&0 regex/8 [0-9]{1,5} \b, %s
1250
+ # height with white space like: 15 16 17 24 32 48 1024
1251
+ >>>&0 regex/8 [0-9]{1,5} x %s
1252
+ # number of colors with white space like: 1 2 3 4 5 8 11 14 162 255 but unrelistic 4294967295 by hardcopy tool
1253
+ >>>>&0 regex/12 [0-9]{1,9} x %s
1254
+ # chars_per_pixel with white space like: 1 2
1255
+ >>>>>&0 regex/14 [0-9]{1,2} \b, %s chars/pixel
1256
+ # non standard because not starting with 9 byte c-comment "/* XPM */"
1257
+ >0 string !/*\ XPM\ */
1258
+ >>0 string x \b, 1st line "%s"
1259
+
1260
+ # Utah Raster Toolkit RLE images (janl@ifi.uio.no)
1261
+ 0 uleshort 0xcc52 RLE image data,
1262
+ >6 uleshort x %d x
1263
+ >8 uleshort x %d
1264
+ >2 uleshort >0 \b, lower left corner: %d
1265
+ >4 uleshort >0 \b, lower right corner: %d
1266
+ >10 ubyte&0x1 =0x1 \b, clear first
1267
+ >10 ubyte&0x2 =0x2 \b, no background
1268
+ >10 ubyte&0x4 =0x4 \b, alpha channel
1269
+ >10 ubyte&0x8 =0x8 \b, comment
1270
+ >11 ubyte >0 \b, %d color channels
1271
+ >12 ubyte >0 \b, %d bits per pixel
1272
+ >13 ubyte >0 \b, %d color map channels
1273
+
1274
+ # image file format (Robert Potter, potter@cs.rochester.edu)
1275
+ 0 string Imagefile\ version- iff image data
1276
+ # this adds the whole header (inc. version number), informative but longish
1277
+ >10 string >\0 %s
1278
+
1279
+ # Sun raster images, from Daniel Quinlan (quinlan@yggdrasil.com)
1280
+ 0 ubelong 0x59a66a95 Sun raster image data
1281
+ >4 ubelong >0 \b, %d x
1282
+ >8 ubelong >0 %d,
1283
+ >12 ubelong >0 %d-bit,
1284
+ #>16 ubelong >0 %d bytes long,
1285
+ >20 ubelong 0 old format,
1286
+ #>20 ubelong 1 standard,
1287
+ >20 ubelong 2 compressed,
1288
+ >20 ubelong 3 RGB,
1289
+ >20 ubelong 4 TIFF,
1290
+ >20 ubelong 5 IFF,
1291
+ >20 ubelong 0xffff reserved for testing,
1292
+ >24 ubelong 0 no colormap
1293
+ >24 ubelong 1 RGB colormap
1294
+ >24 ubelong 2 raw colormap
1295
+ #>28 ubelong >0 colormap is %d bytes long
1296
+
1297
+ # SGI image file format, from Daniel Quinlan (quinlan@yggdrasil.com)
1298
+ #
1299
+ # See
1300
+ # http://reality.sgi.com/grafica/sgiimage.html
1301
+ #
1302
+ 0 ubeshort 474 SGI image data
1303
+ #>2 ubyte 0 \b, verbatim
1304
+ >2 ubyte 1 \b, RLE
1305
+ #>3 ubyte 1 \b, normal precision
1306
+ >3 ubyte 2 \b, high precision
1307
+ >4 ubeshort x \b, %d-D
1308
+ >6 ubeshort x \b, %d x
1309
+ >8 ubeshort x %d
1310
+ >10 ubeshort x \b, %d channel
1311
+ >10 ubeshort !1 \bs
1312
+ >80 string >0 \b, "%s"
1313
+
1314
+ 0 string IT01 FIT image data
1315
+ >4 ubelong x \b, %d x
1316
+ >8 ubelong x %d x
1317
+ >12 ubelong x %d
1318
+ #
1319
+ 0 string IT02 FIT image data
1320
+ >4 ubelong x \b, %d x
1321
+ >8 ubelong x %d x
1322
+ >12 ubelong x %d
1323
+ #
1324
+ 2048 string PCD_IPI Kodak Photo CD image pack file
1325
+ >0xe02 ubyte&0x03 0x00 , landscape mode
1326
+ >0xe02 ubyte&0x03 0x01 , portrait mode
1327
+ >0xe02 ubyte&0x03 0x02 , landscape mode
1328
+ >0xe02 ubyte&0x03 0x03 , portrait mode
1329
+ 0 string PCD_OPA Kodak Photo CD overview pack file
1330
+
1331
+ # FITS format. Jeff Uphoff <juphoff@tarsier.cv.nrao.edu>
1332
+ # FITS is the Flexible Image Transport System, the de facto standard for
1333
+ # data and image transfer, storage, etc., for the astronomical community.
1334
+ # (FITS floating point formats are big-endian.)
1335
+ 0 string SIMPLE\ \ = FITS image data
1336
+ !:mime image/fits
1337
+ !:ext fits/fts
1338
+ >109 string 8 \b, 8-bit, character or unsigned binary integer
1339
+ >108 string 16 \b, 16-bit, two's complement binary integer
1340
+ >107 string \ 32 \b, 32-bit, two's complement binary integer
1341
+ >107 string -32 \b, 32-bit, floating point, single precision
1342
+ >107 string -64 \b, 64-bit, floating point, double precision
1343
+
1344
+ # other images
1345
+ 0 string This\ is\ a\ BitMap\ file Lisp Machine bit-array-file
1346
+
1347
+ # From SunOS 5.5.1 "/etc/magic" - appeared right before Sun raster image
1348
+ # stuff.
1349
+ #
1350
+ 0 ubeshort 0x1010 PEX Binary Archive
1351
+
1352
+ # DICOM medical imaging data
1353
+ # URL: https://en.wikipedia.org/wiki/DICOM#Data_format
1354
+ # Note: "dcm" is the official file name extension
1355
+ # XnView mention also "dc3" and "acr" as file name extension
1356
+ 128 string DICM DICOM medical imaging data
1357
+ !:mime application/dicom
1358
+ !:ext dcm/dicom/dic
1359
+
1360
+ # XWD - X Window Dump file.
1361
+ # URL: http://fileformats.archiveteam.org/wiki/XWD
1362
+ # Reference: https://wiki.multimedia.cx/index.php?title=XWD
1363
+ # http://mark0.net/download/triddefs_xml.7z/defs/x/xdm-x11.trid.xml
1364
+ # Note: called "X-Windows Screen Dump (X11)" by TrID and
1365
+ # "X-Windows Screen Dump" version X11 by DROID via PUID fmt/483
1366
+ # verfied by XnView `nconvert -in xwd -info *`
1367
+ # and ImageMagick 6.9.11 `identify -verbose *` as XWD X Windows system window dump
1368
+ # and `xwud -in fig41.wxd -dumpheader`
1369
+ # As described in /usr/X11R6/include/X11/XWDFile.h
1370
+ # used by the xwd program.
1371
+ # Bradford Castalia, idaeim, 1/01
1372
+ # updated by Adam Buchbinder, 2/09 and Joerg Jenderek, May 2022
1373
+ # The following assumes version 7 of the format; the first long is the length
1374
+ # of the header, which is at least 25 4-byte longs, and the one at offset 8
1375
+ # is a constant which is always either 1 or 2. Offset 12 is the pixmap depth,
1376
+ # which is a maximum of 32.
1377
+ # Size of the entire file header (bytes) like: 100 104 105 106 107 109 110 113 114 115 118 172
1378
+ 0 ubelong >99
1379
+ # pixmap_format; Pixmap format; 0~1-bit (XYBitmap) format 1~single-plane (XYPixmap) 2~bitmap with two or more planes (ZPixmap)
1380
+ >8 ubelong <3
1381
+ # pixmap_depth; Pixmap depth; value 1 - 32
1382
+ >>12 ubelong <33
1383
+ # file_version; XWD_FILE_VERSION=7
1384
+ >>>4 ubelong 7
1385
+ # skip DROID fmt-401-signature-id-618.xwd by test for existing border field
1386
+ >>>>96 ubelong x X-Window screen dump image data, version X11
1387
+ # ./images (version 1.205) labeled the above entry as "XWD X Window Dump image data"
1388
+ # https://reposcope.com/mimetype/image/x-xwindowdump
1389
+ !:mime image/x-xwindowdump
1390
+ #!:ext xwd
1391
+ !:ext xwd/dmp
1392
+ # https://www.xnview.com/en/image_formats/ NO example with x11 suffix FOUND!
1393
+ #!:ext xwd/dmp/x11
1394
+ # https://www.nationalarchives.gov.uk/PRONOM/fmt/401 NO example with xdm suffix FOUND!
1395
+ #!:ext xwd/dmp/x11/xmd
1396
+ # file comment if header > 100; so not in MARBLES.XWD and hardcopy-x-window-v11.xwd
1397
+ >>>>>0 ubelong >100
1398
+ # comment or windows name
1399
+ >>>>>>100 string >\0 \b, "%s"
1400
+ # pixmap_width; pixmap width like: 576 800 1014 1280 1419 NOT -1414812757=abABabABh
1401
+ >>>>>16 ubelong x \b, %dx
1402
+ # pixmap_height; pixmap height like: 449 454 600 704 720 1001 1024 NOT -1414812757=abABabABh
1403
+ >>>>>20 ubelong x \b%dx
1404
+ # pixmap_depth; pixmap depth
1405
+ >>>>>12 ubelong x \b%d
1406
+ # XOffset; Bitmap X offset; pixel numbers to ignore at the beginning of each scan-line
1407
+ #>>>>>24 ubelong x \b, %u ignore
1408
+ # ByteOrder; byte order of image data: 0~least significant byte first 1~most significant byte first
1409
+ >>>>>28 ubelong >0 \b, order %u
1410
+ # BitmapUnit; bitmap base data size unit in each scan line like: 8 16 32
1411
+ #>>>>>32 ubelong x \b, unit %u
1412
+ # BitmapBitOrder; bit-order of image data; apparently same as ByteOrder
1413
+ #>>>>>36 ubelong x \b, bit order %u
1414
+ # BitmapPad; number of padding bits added to each scan line like: 8 16 32
1415
+ #>>>>>40 ubelong x \b, pad %u
1416
+ # BitsPerPixel; Bits per pixel: 1~StaticGray and GrayScale 2-15~StaticColor and PseudoColor 16,24,32~TrueColor and DirectColor
1417
+ #>>>>>44 ubelong x \b, %u bits/pixel
1418
+ # BytesPerLine; size of each scan line in bytes
1419
+ #>>>>>48 ubelong x \b, %u bytes/line
1420
+ # VisualClass; class of the image: 0~StaticGray 1~GrayScale 2~StaticColor 3~PseudoColor 4~TrueColor 5~DirectColor
1421
+ #>>>>>52 ubelong x \b, %u Class
1422
+ # RedMask; red RGB mask values used by ZPixmaps like: 0 0xff0000
1423
+ #>>>>>56 ubelong !0 \b, %#x red
1424
+ # GreenMask; green mask like: 0
1425
+ #>>>>>60 ubelong !0 \b, %#x green
1426
+ # BlueMask; blue mask like: 0 0xff
1427
+ #>>>>>64 ubelong !0 \b, %#x blue
1428
+ # BitsPerRgb; Size of each color mask in bits like: 0 1 8 24
1429
+ #>>>>>68 ubelong x \b, %u bits/RGB
1430
+ # NumberOfColors; number of colors in image like: 256 4 2 0 (WHAT DOES THIS MEAN?)
1431
+ >>>>>72 ubelong x \b, %u colors
1432
+ # ColorMapEntries; number of entries in color map like: 256 16 2 0~no color map
1433
+ >>>>>76 ubelong x %u entries
1434
+ # WindowWidth; window width
1435
+ #>>>>>80 ubelong x \b, %u width
1436
+ # WindowHeight; window height
1437
+ #>>>>>84 ubelong x \b, %u height
1438
+ # WindowX; Window upper left X coordinate like: 0 24 32 80 237 290 422 466 568 (lenna.dmp)
1439
+ >>>>>88 ubelong !0 \b, x=%d
1440
+ # WindowY; Window upper left Y coordinate like: 0 8 18 26 60 73 107 (fig41.xwd) 128
1441
+ >>>>>92 ubelong !0 \b, y=%d
1442
+ # WindowBorderWidth; Window border width; apparently pixmap_width=WindowWidth+2*WindowBorderWidth
1443
+ # like: 1 (fig41.xwd) 2 (maze.dmp) 3 (lenna.dmp mandrill.dmp)
1444
+ >>>>>96 ubelong >0 \b, %u border
1445
+ # From: Joerg Jenderek
1446
+ # Reference: http://mark0.net/download/triddefs_xml.7z/defs/x/xdm-x10.trid.xml
1447
+ # Note: called "X-Windows Screen Dump (X10)" by TrID and
1448
+ # "X-Windows Screen Dump" version X10 by DROID via PUID x-fmt/300
1449
+ # verfied by XnView `nconvert -in xwd -info *`
1450
+ # HeaderSize is the size of the header in bytes; always 40 for X10 variant
1451
+ 0 ubelong =0x000000028
1452
+ # FileVersion; always 6 for X10 variant
1453
+ >4 ubelong =6
1454
+ # skip DROID x-fmt-300-signature-id-619.xdm by test existing border field
1455
+ >>36 ubeshort x X-Window screen dump image data, version X10
1456
+ !:mime image/x-xwindowdump
1457
+ !:ext xwd
1458
+ # http://www.nationalarchives.gov.uk/pronom/fmt/401 NO example with xdm suffix FOUND!
1459
+ #!:ext xwd/xdm
1460
+ # PixmapWidth; pixmap width like: 127 1280
1461
+ >>>20 ubelong x \b, %d
1462
+ # PixmapHeight; pixmap height like: 64 1024
1463
+ >>>24 ubelong x \bx%d
1464
+ # DisplayPlanes; number of display planes like: 1 4 8
1465
+ >>>12 ubelong x \bx%u
1466
+ # DisplayType; display type like: 1 3
1467
+ #>>>8 ubelong x \b, type %u
1468
+ # PixmapFormat; pixmap format like: 1~bitmap with two or more planes (ZPixmap) 0~single-plane bitmap (XYBitmap)
1469
+ #>>>16 ubelong x \b, %u format
1470
+ # WindowWidth; window width; probably PixmapWidth=WindowWidth+2*WindowBorderWidth
1471
+ #>>>28 ubeshort x \b, width %u
1472
+ # WindowHeight; window height; probably PixmapWidth=PixmapHeight+2*WindowBorderWidth
1473
+ #>>>30 ubeshort x \b, height %u
1474
+ # WindowX; window upper left X coordinate like: 0
1475
+ >>>32 ubeshort !0 \b, x=%d
1476
+ # WindowY; window upper left Y coordinate like: 0
1477
+ >>>34 ubeshort !0 \b, y=%d
1478
+ # WindowBorderWidth; window border width like: 0
1479
+ >>>36 ubeshort !0 \b, %u border
1480
+ # WindowNumColors; Number of color entries in window like: 2 16 256
1481
+ #>>>38 ubeshort x \b, %u colors
1482
+ # if the image is a PseudoColor image, a color map immediately follows the header. X10COLORMAP[WindowNumColors];
1483
+ # EntryNumber; number of the color-map entry like: 0
1484
+ #>>>40 ubeshort x \b, colors #%u
1485
+ # Red; red-channel value
1486
+ #>>>42 ubeshort !0 \b, red %#x
1487
+ # Green; green-channel value
1488
+ #>>>44 ubeshort !0 \b, green %#x
1489
+ # Blue; blue-channel value
1490
+ #>>>46 ubeshort !0 \b, blue %#x
1491
+ # 2ND Entry like: 2
1492
+ #>>>48 ubeshort x \b, colors #%u
1493
+
1494
+ # PDS - Planetary Data System
1495
+ # These files use Parameter Value Language in the header section.
1496
+ # Unfortunately, there is no certain magic, but the following
1497
+ # strings have been found to be most likely.
1498
+ 0 string NJPL1I00 PDS (JPL) image data
1499
+ 2 string NJPL1I PDS (JPL) image data
1500
+ 0 string CCSD3ZF PDS (CCSD) image data
1501
+ 2 string CCSD3Z PDS (CCSD) image data
1502
+ 0 string PDS_ PDS image data
1503
+ 0 string LBLSIZE= PDS (VICAR) image data
1504
+
1505
+ # pM8x: ATARI STAD compressed bitmap format
1506
+ #
1507
+ # from Oskar Schirmer <schirmer@scara.com> Feb 2, 2001
1508
+ # p M 8 5/6 xx yy zz data...
1509
+ # Atari ST STAD bitmap is always 640x400, bytewise runlength compressed.
1510
+ # bytes either run horizontally (pM85) or vertically (pM86). yy is the
1511
+ # most frequent byte, xx and zz are runlength escape codes, where xx is
1512
+ # used for runs of yy.
1513
+ #
1514
+ 0 string pM85 Atari ST STAD bitmap image data (hor)
1515
+ >5 ubyte 0x00 (white background)
1516
+ >5 ubyte 0xFF (black background)
1517
+ 0 string pM86 Atari ST STAD bitmap image data (vert)
1518
+ >5 ubyte 0x00 (white background)
1519
+ >5 ubyte 0xFF (black background)
1520
+
1521
+ # From: Alex Myczko <alex@aiei.ch>
1522
+ # https://www.atarimax.com/jindroush.atari.org/afmtatr.html
1523
+ 0 uleshort 0x0296 Atari ATR image
1524
+
1525
+ # URL: http://fileformats.archiveteam.org/wiki/DEGAS_image
1526
+ # Reference: https://wiki.multimedia.cx/index.php?title=Degas
1527
+ # From: Joerg Jenderek
1528
+ # http://mark0.net/download/triddefs_xml.7z/defs/b
1529
+ # bitmap-pi2-degas.trid.xml bitmap-pi3-degas.trid.xml
1530
+ # bitmap-pc1-degas.trid.xml bitmap-pc2-degas.trid.xml bitmap-pc3-degas.trid.xml
1531
+ # Note: verified by NetPBM `pi3topbm sigirl1.pi3 | file`
1532
+ # `deark -m degas -l -d2 ataribak.pi1`
1533
+ # XnView `nconvert -fullinfo *.p??`
1534
+ # DEGAS low-res uncompressed bitmap *.pi1
1535
+ 0 beshort 0x0000
1536
+ # skip some ISO 9660 CD-ROM filesystems like plpbt.iso by test for 4 non black colors in palette entries
1537
+ >2 quad !0
1538
+ # skip g3test.g3 by test for unused bits of 2nd color entry
1539
+ >>4 ubeshort&0xF000 0
1540
+ #>>>0 beshort x 1ST_VALUE=%x
1541
+ #>>>-0 offset x FILE_SIZE=%lld
1542
+ # standard DEGAS low-res uncompressed bitmap *.pi1 with file size 32034
1543
+ >>>-0 offset =32034
1544
+ #>>>>0 beshort x 1st_VALUE=%x
1545
+ # like: 8ball.pi1 teddy.pi1 sonic01.pi1
1546
+ >>>>0 use degas-bitmap
1547
+ # about 61 DEGAS Elite low-res uncompressed bitmap *.pi1 with file size 32066
1548
+ >>>-0 offset =32066
1549
+ # like: spider.pi1 pinkgirl.pi1 frog3.pi1
1550
+ >>>>0 use degas-bitmap
1551
+ # about 55 DEGAS Elite low-res uncompressed bitmap *.pi1 with file size 32128
1552
+ >>>-0 offset =32128
1553
+ # like: mountain.pi1 bigspid.pi1 alf33.pi1
1554
+ >>>>0 use degas-bitmap
1555
+ # 1 DEGAS Elite low-res uncompressed bitmap *.pi1 with file size 44834
1556
+ >>>-0 offset =44834
1557
+ # like: kenshin.pi1
1558
+ >>>>0 use degas-bitmap
1559
+ # DEGAS mid-res uncompressed bitmap *.pi2 (strength=50) after GEM Images like:
1560
+ # BEETHVEN.IMG CHURCH.IMG GAMEOVR4.IMG TURKEY.IMG clinton.img
1561
+ 0 beshort 0x0001
1562
+ #!:strength +0
1563
+ # skip many control files like gnucash-4.8.setup.exe.aria2 by test for non black in 4 palette entries
1564
+ >2 quad !0
1565
+ # skip control file load-v0001.aria2 and many GEM Image data like
1566
+ # GAMEOVR4.IMG BEETHVEN.IMG CHURCH.IMG TURKEY.IMG clinton.img
1567
+ # by test for valid file sizes
1568
+ # standard DEGAS mid-res uncompressed bitmap *.pi2 with file size 32034
1569
+ >>-0 offset =32034
1570
+ # (39/41) like: GEMINI03.PI2 ST_TOOLS.PI2 TBX_DEMO.PI2
1571
+ >>>0 use degas-bitmap
1572
+ # few DEGAS Elite mid-res uncompressed bitmap *.pi2 with file size 32066
1573
+ >>-0 offset =32066
1574
+ # (2/41) like: medres.pi2
1575
+ >>>0 use degas-bitmap
1576
+ # DEGAS high-res uncompressed bitmap *.pi3
1577
+ 0 beshort 0x0002
1578
+ # skip Intel ia64 COFF msvcrt.lib by test for unused bits of 1st atari color palette entry
1579
+ >2 ubeshort&0xF000 0
1580
+ # skip few Adobe PhotoShop Brushes like Faux-Spitzen.abr by check
1581
+ # for invalid Adobe PhotoShop Brush UTF16-LE string length
1582
+ >>19 ubyte =0
1583
+ # many like: 4th_ofj2.pi3 GEMINI03.PI3 PEOPLE18.PI3 POWERFIX.PI3 abydos.pi3 highres.pi3 sigirl1.pi3 vanna5.pi3
1584
+ >>>0 use degas-bitmap
1585
+ # Adobe PhotoShop Brush UTF16-LE string length 15 "Gitter - klein " 8 "Kreis 1 "
1586
+ >>19 ubyte !0
1587
+ #>>19 ubyte !0 \b, NOTE LENGTH %u
1588
+ #>>>21 lestring16 x \b, BRUSH NOTE "%s"
1589
+ >>>(19.b*2) ubequad x
1590
+ # maybe last character of Adobe PhotoShop Brush UTF16-LE string and terminating nul char like
1591
+ # 006e0000 for n in "Faux-Spitzen.abr" 00310000 for 1 in "Verschiedene Spitzen.abr"
1592
+ # 00000000 "LEREDACT.PI3" 03730773 "TBX_DEMO.PI3"
1593
+ #>>>>&8 ubelong x \b, LAST CHAR+NIL %8.8x
1594
+ >>>>&8 ubelong&0xff00ffFF !0
1595
+ # skip many Adobe Photoshop Color swatch (ANPA-Farben.aco TOYO-Farbsystem.aco) with invalid 3rd color entry (1319 2201 2206 21f5 2480 24db 25fd)
1596
+ >>>>>6 ubeshort&0xF000 0
1597
+ # skip few Adobe Photoshop Color swatch (FOCOLTONE-Farben.aco "PANTONE process coated.aco") with invalid 4th color entry (ffff)
1598
+ >>>>>>8 ubeshort&0xF000 0
1599
+ # many DEGAS bitmap like: ARABDEMO.PI3 ELMRSESN.PI3 GEMVIEW.PI3 LEREDACT.PI3 PICCOLO.PI3 REPRO_JR.PI3 ST_TOOLS.PI3 TBX_DEMO.PI3 evgem7.pi3
1600
+ >>>>>>>0 use degas-bitmap
1601
+ # test for last character of Adobe PhotoShop Brush UTF16-LE string and terminating nul char
1602
+ >>>>&8 ubelong&0xff00ffFF =0
1603
+ # select last DEGAS bitmaps by invalid last char of brush note like BASICNES.PI3 DB_HELP.PI3 DB_WRITR.PI3 LEREDACT.PI3
1604
+ >>>>>&-4 ubelong&0x00FF0000 <0x00200000
1605
+ >>>>>>0 use degas-bitmap
1606
+ # last character of Adobe PhotoShop Brush UTF16-LE note
1607
+ #>>>>>&-4 ubelong&0x00FF0000 >0x001F0000 \b, THAT IS ABR
1608
+ # DEGAS low-res compressed bitmap *.pc1 like: BATTLSHP.PC1 GNUCHESS.PC1 MEDUSABL.PC1 MOONLORD.PC1 WILDROSE.PC1
1609
+ 0 beshort 0x8000
1610
+ # skip lif files handled via ./lif by test for unused bits of 1st palette entry
1611
+ >2 ubeshort&0xF000 0
1612
+ # skip CRI ADX ADPCM audio (R04HT.adx R03T-15552.adx) with 44100 Hz misinterpreted as 5th color entry value AC44h
1613
+ >>10 ubeshort&0xF000 0
1614
+ # skip few (fmt-840-signature-id-1195.adx fmt-840-signature-id-1199.adx) by test for 4 first non black colors in palette entries
1615
+ >>>2 quad !0
1616
+ >>>>0 use degas-bitmap
1617
+ # DEGAS mid-res compressed bitmap *.pc2 like: abydos.pc2 ARTIS3.PC2 SMTHDRAW.PC2 STAR_2K.PC2 TX2_DEMO.PC2
1618
+ 0 beshort 0x8001
1619
+ # skip many (1274/1369) PostScript Type 1 font (DarkGardenMK.pfb coupbi.pfb MONOBOLD.PFB) with invalid 1st atari color palette entry 5506 5b06 6906 7906 7e06 fb15
1620
+ >2 ubeshort&0xF000 0
1621
+ # skip some (95/1369) PostScript Type 1 font (fmt-525-signature-id-816.pfb LUXEMBRG.PFB) with invalid 3rd atari color palette entry 2521
1622
+ >>6 ubeshort&0xF000 0
1623
+ >>>0 use degas-bitmap
1624
+ # DEGAS high-res compressed bitmap *.pc3 like: abydos.pc3 COYOTE.PC3 ELEPHANT.PC3 TX2_DEMO.PC3 SMTHDRAW.PC3
1625
+ 0 beshort 0x8002
1626
+ # skip some (36/212) Python Pickle (factor_cache.pickle environment.pickle) with invalid 1st atari color entry (2863 6363 7d71)
1627
+ >2 ubeshort&0xF000 0
1628
+ >>0 use degas-bitmap
1629
+ # display information of Atari DEGAS and DEGAS Elite bitmap images
1630
+ 0 name degas-bitmap
1631
+ >0 ubyte x Atari DEGAS
1632
+ #!:mime application/octet-stream
1633
+ !:mime image/x-atari-degas
1634
+ # compressed
1635
+ >0 ubyte =0x80 Elite compressed
1636
+ # uncompressed
1637
+ #>0 ubyte =0x00 uncompressed
1638
+ #>0 ubyte =0x00 un.
1639
+ >0 ubyte =0x00
1640
+ # check for existence of footer for DEGAS Elite images
1641
+ >>32042 ubequad x Elite
1642
+ >0 beshort 0x0000 bitmap
1643
+ !:ext pi1
1644
+ >0 beshort 0x0001 bitmap
1645
+ !:ext pi2
1646
+ >0 beshort 0x0002 bitmap
1647
+ # no example with SUH extension found
1648
+ #!:ext pi3/suh
1649
+ !:ext pi3
1650
+ >0 beshort 0x8000 bitmap
1651
+ !:ext pc1
1652
+ >0 beshort 0x8001 bitmap
1653
+ !:ext pc2
1654
+ >0 beshort 0x8002 bitmap
1655
+ !:ext pc3
1656
+ # low resolution; 320x200, 16 colors
1657
+ >1 ubyte =0 320 x 200 x 16
1658
+ # medium resolution; 640x200, 4 colors
1659
+ >1 ubyte =1 640 x 200 x 4
1660
+ # high resolution; 640x400, 2 colors
1661
+ >1 ubyte =2 640 x 400 x 2
1662
+ # http://fileformats.archiveteam.org/wiki/Atari_ST_color_palette
1663
+ # hardware_palette[16]; 9 bit ?????RRR?GGG?BBB; 12 bit ????RRRRGGGGBBBB for Atari STE
1664
+ # for Atari DEGAS apparently no Spectrum 512 Enhanced 15 bit palette RGB?RRRRGGGGBBBB
1665
+ # Red Green Blue unused bit ? often 0 but not bilboule.pi1; color_value (examples or numbers)
1666
+ # 1st color palette entry like: 0777 (61) 0fff (LEREDACT.PI3) 0fcf (devgem7.pi3) 0001 (9)
1667
+ >2 ubeshort x \b, color palette %4.4x
1668
+ # 2nd palette entry like: 0000 (32) 0700 (38) 0f00 (LEREDACT.PI3 devgem7.pi3)
1669
+ >4 ubeshort x %4.4x
1670
+ # 3rd palette entry
1671
+ >6 ubeshort x %4.4x
1672
+ # 4th palette entry like: 0000 (72)
1673
+ >8 ubeshort x %4.4x
1674
+ # 5th palette entry
1675
+ >10 ubeshort x %4.4x
1676
+ >2 ubeshort x ...
1677
+ # 6th palette entry
1678
+ #>12 ubeshort x %4.4x
1679
+ # 7th palette entry like: 0000 (16) 0001 (ELMRSESN.PI3 elmrsesn.pi3) 0070 (51) 00f0 (BASICNES.PI3 LEREDACT.PI3) 00f8 (devgem7.pi3)
1680
+ #>14 ubeshort x %4.4x
1681
+ # 8th palette entry
1682
+ #>16 ubeshort x %4.4x
1683
+ # 9 palette entry
1684
+ #>18 ubeshort x %4.4x
1685
+ # 10 palette entry
1686
+ #>20 ubeshort x %4.4x
1687
+ # 11 palette entry
1688
+ #>22 ubeshort x %4.4x
1689
+ # 12 palette entry
1690
+ #>24 ubeshort x %4.4x
1691
+ # 13 palette entry
1692
+ #>26 ubeshort x %4.4x
1693
+ # 14th palette entry
1694
+ #>28 ubeshort x %4.4x
1695
+ # 15th palette entry
1696
+ #>30 ubeshort x %4.4x
1697
+ # 16th palette entry
1698
+ #>32 ubeshort x %4.4x
1699
+ # data[16000] for uncompressed images; pixel data
1700
+ #>34 ubequad x \b, DATA %#16.16llx...
1701
+ # footer for Elite variant images
1702
+ # https://www.fileformat.info/format/atari/egff.htm
1703
+ # https://pulkomandy.tk/projects/GrafX2/wiki/Develop/FileFormats/Atari
1704
+ # left_color_animation[4]; like: 0000000000000000 0000000100020003 fffafff000000030 (bigspid.pi1)
1705
+ #>32034 ubequad !0 \b, color animations %16.16llx (left)
1706
+ # right_color_animation[4]; like: 0000000000000000 0000000100020003
1707
+ #>>32042 ubequad !0 %16.16llx (right)
1708
+ # channel_direction[4]; 0~left 1~none 2~right like: 0001000100010001 0002000000010001 (cycle2.pi1)
1709
+ # sometimes unexpected like: feaafc0000000000 (bigspid.pi1)
1710
+ #>32050 ubequad !0 \b, channel directions %16.16llx
1711
+ # channel_delay[4]; 128 - channel delay, timebase 1/60 s
1712
+ #>32058 ubequad !0 \b, channel delays %16.16llx
1713
+
1714
+ # From: Joerg Jenderek
1715
+ # URL: http://fileformats.archiveteam.org/wiki/GED
1716
+ # https://recoil.sourceforge.net/formats.html#Atari-8-bit
1717
+ # Reference: https://sourceforge.net/projects/recoil/files/recoil/6.3.4/recoil-6.3.4.tar.gz
1718
+ # recoil-6.3.4/recoil.c
1719
+ # http://mark0.net/download/triddefs_xml.7z/defs/b/bitmap-ged.trid.xml
1720
+ # Note: called "Atari GED bitmap" by TrID; file size 11302
1721
+ # and verified by RECOIL graphic tool
1722
+ 0 string \xFF\xFF0SO\x7F Atari GED bitmap, 160x200
1723
+ #!:mime application/octet-stream
1724
+ !:mime image/x-atari-ged
1725
+ !:ext ged
1726
+
1727
+ # From: Joerg Jenderek
1728
+ # URL: http://fileformats.archiveteam.org/wiki/ImageLab/PrintTechnic
1729
+ # Reference: http://mark0.net/download/triddefs_xml.7z/defs/b/bitmap-b_w.trid.xml
1730
+ # Note: called "ImageLab bitmap" by TrID
1731
+ # verfied by XnView `nconvert -fullinfo "MAEDCHEN.B&W"`
1732
+ 0 string B&W256 ImageLab bitmap
1733
+ !:mime image/x-ilab
1734
+ # https://www.xnview.com/de/image_formats/
1735
+ # GRR: add char & inside parse_ext in ../../src/apprentice.c to avoid in file version 5.40 error like:
1736
+ # Magdir\images, 1090: Warning: EXTENSION type ` b_w/b&w' has bad char '&'
1737
+ !:ext b_w/b&w
1738
+ # Width
1739
+ >6 ubeshort x \b, %u
1740
+ # Height
1741
+ >8 ubeshort x x %u
1742
+
1743
+ # XXX:
1744
+ # This is bad magic 0x5249 == 'RI' conflicts with RIFF and other
1745
+ # magic.
1746
+ # SGI RICE image file <mpruett@sgi.com>
1747
+ #0 ubeshort 0x5249 RICE image
1748
+ #>2 ubeshort x v%d
1749
+ #>4 ubeshort x (%d x
1750
+ #>6 ubeshort x %d)
1751
+ #>8 ubeshort 0 8 bit
1752
+ #>8 ubeshort 1 10 bit
1753
+ #>8 ubeshort 2 12 bit
1754
+ #>8 ubeshort 3 13 bit
1755
+ #>10 ubeshort 0 4:2:2
1756
+ #>10 ubeshort 1 4:2:2:4
1757
+ #>10 ubeshort 2 4:4:4
1758
+ #>10 ubeshort 3 4:4:4:4
1759
+ #>12 ubeshort 1 RGB
1760
+ #>12 ubeshort 2 CCIR601
1761
+ #>12 ubeshort 3 RP175
1762
+ #>12 ubeshort 4 YUV
1763
+
1764
+ # PCX image files
1765
+ # From: Dan Fandrich <dan@coneharvesters.com>
1766
+ # updated by Joerg Jenderek at Feb 2013 by https://de.wikipedia.org/wiki/PCX
1767
+ # https://web.archive.org/web/20100206055706/http://www.qzx.com/pc-gpe/pcx.txt
1768
+ # GRR: original test was still too general as it catches xbase examples T5.DBT,T6.DBT with 0xa000000
1769
+ # test for bytes 0x0a,version byte (0,2,3,4,5),compression byte flag(0,1), bit depth (>0) of PCX or T5.DBT,T6.DBT
1770
+ 0 ubelong&0xffF8fe00 0x0a000000
1771
+ # for PCX bit depth > 0
1772
+ >3 ubyte >0
1773
+ # test for valid versions
1774
+ >>1 ubyte <6
1775
+ >>>1 ubyte !1 PCX
1776
+ !:mime image/x-pcx
1777
+ #!:mime image/pcx
1778
+ >>>>1 ubyte 0 ver. 2.5 image data
1779
+ >>>>1 ubyte 2 ver. 2.8 image data, with palette
1780
+ >>>>1 ubyte 3 ver. 2.8 image data, without palette
1781
+ >>>>1 ubyte 4 for Windows image data
1782
+ >>>>1 ubyte 5 ver. 3.0 image data
1783
+ >>>>4 uleshort x bounding box [%d,
1784
+ >>>>6 uleshort x %d] -
1785
+ >>>>8 uleshort x [%d,
1786
+ >>>>10 uleshort x %d],
1787
+ >>>>65 ubyte >1 %d planes each of
1788
+ >>>>3 ubyte x %d-bit
1789
+ >>>>68 ubyte 1 colour,
1790
+ >>>>68 ubyte 2 grayscale,
1791
+ # this should not happen
1792
+ >>>>68 default x image,
1793
+ >>>>12 uleshort >0 %d x
1794
+ >>>>>14 uleshort x %d dpi,
1795
+ >>>>2 ubyte 0 uncompressed
1796
+ >>>>2 ubyte 1 RLE compressed
1797
+
1798
+ # Adobe Photoshop
1799
+ # From: Asbjoern Sloth Toennesen <asbjorn@lila.io>
1800
+ # URL: http://fileformats.archiveteam.org/wiki/PSD
1801
+ # Reference: https://www.adobe.com/devnet-apps/photoshop/fileformatashtml/
1802
+ # Note: verfied by XnView `nconvert -fullinfo *.psd *.psb *.pdd`
1803
+ # and ImageMagick `identify -verbose *.pdd`
1804
+ 0 string 8BPS
1805
+ # skip DROID x-fmt-92-signature-id-277.psd by checking valid width
1806
+ >18 ubelong >0 Adobe Photoshop
1807
+ !:mime image/vnd.adobe.photoshop
1808
+ !:apple ????8BPS
1809
+ # version: always equal to 1, but 2 for PSB
1810
+ >>4 beshort 1
1811
+ # URL: http://fileformats.archiveteam.org/wiki/PhotoDeluxe
1812
+ # EXTRAS/PHOTOS/DEMOPIX/ORIGINAL.PDD
1813
+ >>>34 search/0xC0d7 PHUT Image (PhotoDeluxe)
1814
+ !:ext pdd
1815
+ >>>34 default x Image
1816
+ !:ext psd
1817
+ # URL: http://fileformats.archiveteam.org/wiki/PSB
1818
+ >>4 beshort 2 Image (PSB)
1819
+ !:ext psb
1820
+ # width in pixels: 1-30000 1-300000 for PSB
1821
+ >>18 belong x \b, %d x
1822
+ >>14 belong x %d,
1823
+ # The color mode; 0~Bitmap 1~Grayscale 2~Indexed 3~RGB 4~CMYK 7~Multichannel 9~Duotone 9~Lab
1824
+ >>24 beshort 0 bitmap
1825
+ >>24 beshort 1 grayscale
1826
+ # the number of channels; range is 1 to 56
1827
+ >>>12 beshort 2 with alpha
1828
+ >>24 beshort 2 indexed
1829
+ >>24 beshort 3 RGB
1830
+ >>>12 beshort 4 \bA
1831
+ >>24 beshort 4 CMYK
1832
+ >>>12 beshort 5 \bA
1833
+ >>24 beshort 7 multichannel
1834
+ >>24 beshort 8 duotone
1835
+ >>24 beshort 9 lab
1836
+ >>12 beshort > 1
1837
+ >>>12 beshort x \b, %dx
1838
+ >>12 beshort 1 \b,
1839
+ >>22 beshort x %d-bit channel
1840
+ >>12 beshort > 1 \bs
1841
+ # 6 reserved bytes; must be zero, but spaces inside ImageMagick input.psd
1842
+ # https://download.imagemagick.org/ImageMagick/download/ImageMagick-7.0.11-11.zip
1843
+ # ImageMagick-7.0.11-11\PerlMagick\t\input.psd
1844
+ >>6 bequad&0xFFffFFffFFff0000 !0 \b, at offset 6
1845
+ >>>6 belong x 0x%8.8x
1846
+ >>>6 beshort x \b%4.4x
1847
+
1848
+ # From: Joerg Jenderek
1849
+ # URL: https://www.adobe.com/devnet-apps/photoshop/fileformatashtml/
1850
+ # http://fileformats.archiveteam.org/wiki/Photoshop
1851
+ # Reference: http://www.nomodes.com/aco.html
1852
+ # Note: registers as Photoshop.SwatchesFile for Photoshop.exe on Windows
1853
+ # check for valid versions like: 2 (newest) 1 (old) 0 (oldest no examples)
1854
+ 0 ubeshort <3
1855
+ # skip few Atari DEGAS med-res bitmap (DIAGRAM1.PI2) and many ISO 9660 CD-ROM by check for invalid low color numbers (0)
1856
+ >2 ubeshort >0
1857
+ # skip few Targa (bmpsuite-15col.tga rgb24_top_left_colormap.tga) by check for invalid high color space ID (F0 1D)
1858
+ >>4 ubeshort <16
1859
+ # skip many (69/327) Targa image *.TGA by check of accessing near the ending of first color space section (size=nc*5*2)
1860
+ >>>(2.S*10) ubelong x
1861
+ # RGB branch for Adobe Photoshop Color swatch
1862
+ >>>>4 ubeshort =0
1863
+ # skip many (220/327) Targa by check of for invalid high RGB color z value (hexadecimal 2 3 2e03 4600 5e04 7502 8002 8b05 c700)
1864
+ >>>>>12 ubeshort =0
1865
+ # RGB branch for Adobe Photoshop Color swatch for older versions
1866
+ >>>>>>0 ubeshort <2
1867
+ >>>>>>>0 use adobe-aco
1868
+ # RGB branch for Adobe Photoshop Color swatch for newer version 2
1869
+ >>>>>>0 ubeshort =2
1870
+ # skip many (74/176) Atari DEGAS hi-res bitmap (*.PI3) by check for invalid low color name length (0)
1871
+ >>>>>>>16 ubeshort >0
1872
+ >>>>>>>>0 use adobe-aco
1873
+ # non RGB branch for Adobe Photoshop Color swatch
1874
+ >>>>4 ubeshort !0
1875
+ # non RGB branch for Adobe Photoshop Color swatch for older versions
1876
+ >>>>>0 ubeshort <2
1877
+ # skip many GEM Image (CHURCH.IMG TIGER.IMG) by check for invalid second high color space ID (55 114 143 157 256 288 450)
1878
+ >>>>>>14 ubeshort <16
1879
+ >>>>>>>0 use adobe-aco
1880
+ # non RGB branch for Adobe Photoshop Color swatch for newer version 2
1881
+ >>>>>0 ubeshort =2
1882
+ # skip few Atari DEGAS hi-res bitmap (pal1wb-blue.pi3) and few ABR by check for invalid "high" nil bytes (7) before color name length
1883
+ >>>>>>14 ubeshort =0
1884
+ >>>>>>>0 use adobe-aco
1885
+ # display Adobe Photoshop Color swatch file information (version, number of colors, color spaces, coordinates, names)
1886
+ 0 name adobe-aco
1887
+ >0 ubeshort x Adobe Photoshop Color swatch, version %u
1888
+ #!:mime application/octet-stream
1889
+ !:mime application/x-adobe-aco
1890
+ !:apple ????8BCO
1891
+ !:ext aco
1892
+ >0 ubeshort <2
1893
+ >>(2.S*10) ubelong x
1894
+ # version 2 section after version 1 section
1895
+ >>>&0 ubeshort 2 and 2
1896
+ # nc; number of colors like: 20 50 86 88 126 204 300 1050 1137 1280 2092 3010 4096
1897
+ >2 ubeshort x \b, %u colors
1898
+ # maybe last 4 bytes of first section (probably y z color value) like: 0 0x66660000 0xfe700000 0xffff0000
1899
+ #>(2.S*10) ubelong x 1ST_SECTION_END=%#8.8x
1900
+ >0 ubeshort <2 \b; 1st
1901
+ # first older Adobe Photoshop Color entry
1902
+ >>4 use aco-color
1903
+ >>>2 ubeshort >1 \b; 2nd
1904
+ # second older Adobe Photoshop Color entry
1905
+ >>>>14 use aco-color
1906
+ >0 ubeshort =2 \b; 1st
1907
+ # first new Adobe Photoshop Color entry
1908
+ >>4 use aco-color-v2
1909
+ >>>2 ubeshort >1 \b; 2nd
1910
+ # jump first color name length words
1911
+ >>>>(16.S*2) ubequad x
1912
+ # second new Adobe Photoshop Color entry
1913
+ >>>>>&10 use aco-color-v2
1914
+ # display Adobe Photoshop Color entry (color space, color coordinates)
1915
+ 0 name aco-color
1916
+ # each color spec entry occupies five words
1917
+ # color space: 0~RGB 1~HSB 2~CMYK 3~Pantone 4~Focoltone 5~Trumatch 6~Toyo 7~Lab 8~Grayscale 9?~wideCMYK 10~HKS ...
1918
+ #>0 ubeshort x COLOR_ENTRY
1919
+ >0 ubeshort 0 RGB
1920
+ >0 ubeshort 1 HSB
1921
+ >0 ubeshort 2 CMYK
1922
+ >0 ubeshort 3 Pantone
1923
+ >0 ubeshort 4 Focoltone
1924
+ >0 ubeshort 5 Trumatch
1925
+ >0 ubeshort 6 Toyo
1926
+ >0 ubeshort 7 Lab
1927
+ >0 ubeshort 8 Grayscale
1928
+ >0 ubeshort 9 wide CMYK
1929
+ >0 ubeshort 10 HKS
1930
+ # unofficial
1931
+ # >0 ubeshort 12 foo
1932
+ # >0 ubeshort 13 bar
1933
+ # >0 ubeshort 14 FOO
1934
+ # >0 ubeshort 15 BAR
1935
+ >0 ubeshort x space (%u)
1936
+ # color coordinate w
1937
+ >2 ubeshort x \b, w %#x
1938
+ # color coordinate x
1939
+ >4 ubeshort x \b, x %#x
1940
+ # color coordinate y
1941
+ >6 ubeshort x \b, y %#x
1942
+ # color coordinate z; zero for RGB space
1943
+ >8 ubeshort x \b, z %#x
1944
+ # display Adobe Photoshop Color entry version 2 (color space, color coordinates names)
1945
+ 0 name aco-color-v2
1946
+ >0 use aco-color
1947
+ #>10 ubeshort x \b, NUL_BYTES %#x
1948
+ # color name length plus one (len+1) like: 7 8 9 13 14 15 16 17 22 26
1949
+ #>>12 ubeshort x \b, LENGTH %u
1950
+ >>12 ubeshort-1 x \b, %u chars
1951
+ # len words; UTF-16 representation of the color name like: "DIC 1s" "PANTONE Process Yellow PC"
1952
+ >>14 bestring16 x "%s"
1953
+ # followed by nil word
1954
+
1955
+ # XV thumbnail indicator (ThMO)
1956
+ # URL: https://en.wikipedia.org/wiki/Xv_(software)
1957
+ # Reference: http://fileformats.archiveteam.org/wiki/XV_thumbnail
1958
+ # Update: Joerg Jenderek
1959
+ 0 string P7\ 332 XV thumbnail image data
1960
+ #0 string P7\ 332 XV "thumbnail file" (icon) data
1961
+ !:mime image/x-xv-thumbnail
1962
+ # thumbnail .xvpic/foo.bar for graphic foo.bar
1963
+ !:ext p7/gif/tif/xpm/jpg
1964
+
1965
+ # NITF is defined by United States MIL-STD-2500A
1966
+ 0 string NITF National Imagery Transmission Format
1967
+ >25 string >\0 dated %.14s
1968
+
1969
+ # GEM Image: Version 1, Headerlen 8 (Wolfram Kleff)
1970
+ # Format variations from: Bernd Nuernberger <bernd.nuernberger@web.de>
1971
+ # Update: Joerg Jenderek
1972
+ # See http://fileformats.archiveteam.org/wiki/GEM_Raster
1973
+ # For variations, also see:
1974
+ # https://www.seasip.info/Gem/ff_img.html (Ventura)
1975
+ # http://www.atari-wiki.com/?title=IMG_file (XIMG, STTT)
1976
+ # http://www.fileformat.info/format/gemraster/spec/index.htm (XIMG, STTT)
1977
+ # http://sylvana.net/1stguide/1STGUIDE.ENG (TIMG)
1978
+ 0 beshort 0x0001
1979
+ # header_size
1980
+ >2 beshort 0x0008
1981
+ >>0 use gem_info
1982
+ >2 beshort 0x0009
1983
+ >>0 use gem_info
1984
+ # no example for NOSIG
1985
+ >2 beshort 24
1986
+ >>0 use gem_info
1987
+ # no example for HYPERPAINT
1988
+ >2 beshort 25
1989
+ >>0 use gem_info
1990
+ 16 string XIMG\0
1991
+ >0 use gem_info
1992
+ # no example
1993
+ 16 string STTT\0\x10
1994
+ >0 use gem_info
1995
+ # no example or description
1996
+ 16 string TIMG\0
1997
+ >0 use gem_info
1998
+
1999
+ 0 name gem_info
2000
+ # version is 2 for some XIMG and 1 for all others
2001
+ >0 ubeshort <0x0003 GEM
2002
+ # https://www.snowstone.org.uk/riscos/mimeman/mimemap.txt
2003
+ !:mime image/x-gem
2004
+ # header_size 24 25 27 59 779 words for colored bitmaps
2005
+ >>2 ubeshort >9
2006
+ >>>16 string STTT\0\x10 STTT
2007
+ >>>16 string TIMG\0 TIMG
2008
+ # HYPERPAINT or NOSIG variant
2009
+ >>>16 string \0\x80
2010
+ >>>>2 ubeshort =24 NOSIG
2011
+ >>>>2 ubeshort !24 HYPERPAINT
2012
+ # NOSIG or XIMG variant
2013
+ >>>16 default x
2014
+ >>>>16 string !XIMG\0 NOSIG
2015
+ >>16 string =XIMG\0 XIMG Image data
2016
+ !:ext img/ximg
2017
+ # to avoid Warning: Current entry does not yet have a description for adding a EXTENSION type
2018
+ >>16 string !XIMG\0 Image data
2019
+ !:ext img
2020
+ # header_size is 9 for Ventura files and 8 for other GEM Paint files
2021
+ >>2 ubeshort 9 (Ventura)
2022
+ #>>2 ubeshort 8 (Paint)
2023
+ >>12 ubeshort x %d x
2024
+ >>14 ubeshort x %d,
2025
+ # 1 4 8
2026
+ >>4 ubeshort x %d planes,
2027
+ # in tenths of a millimetre
2028
+ >>8 ubeshort x %d x
2029
+ >>10 ubeshort x %d pixelsize
2030
+ # pattern_size 1-8. 2 for GEM Paint
2031
+ >>6 ubeshort !2 \b, pattern size %d
2032
+
2033
+ # GEM Metafile (Wolfram Kleff)
2034
+ 0 ulelong 0x0018FFFF GEM Metafile data
2035
+ >4 uleshort x version %d
2036
+
2037
+ #
2038
+ # SMJPEG. A custom Motion JPEG format used by Loki Entertainment
2039
+ # Software Torbjorn Andersson <d91tan@Update.UU.SE>.
2040
+ #
2041
+ 0 string \0\nSMJPEG SMJPEG
2042
+ >8 ubelong x %d.x data
2043
+ # According to the specification you could find any number of _TXT
2044
+ # headers here, but I can't think of any way of handling that. None of
2045
+ # the SMJPEG files I tried it on used this feature. Even if such a
2046
+ # file is encountered the output should still be reasonable.
2047
+ >16 string _SND \b,
2048
+ >>24 ubeshort >0 %d Hz
2049
+ >>26 ubyte 8 8-bit
2050
+ >>26 ubyte 16 16-bit
2051
+ >>28 string NONE uncompressed
2052
+ # >>28 string APCM ADPCM compressed
2053
+ >>27 ubyte 1 mono
2054
+ >>28 ubyte 2 stereo
2055
+ # Help! Isn't there any way to avoid writing this part twice?
2056
+ # Yes, use a name/use
2057
+ >>32 string _VID \b,
2058
+ # >>>48 string JFIF JPEG
2059
+ >>>40 ubelong >0 %d frames
2060
+ >>>44 ubeshort >0 (%d x
2061
+ >>>46 ubeshort >0 %d)
2062
+ >16 string _VID \b,
2063
+ # >>32 string JFIF JPEG
2064
+ >>24 ubelong >0 %d frames
2065
+ >>28 ubeshort >0 (%d x
2066
+ >>30 ubeshort >0 %d)
2067
+
2068
+ 0 string Paint\ Shop\ Pro\ Image\ File Paint Shop Pro Image File
2069
+
2070
+ # taken from fkiss: (<yav@mte.biglobe.ne.jp> ?)
2071
+ 0 string KiSS KISS/GS
2072
+ >4 ubyte 16 color
2073
+ >>5 ubyte x %d bit
2074
+ >>8 uleshort x %d colors
2075
+ >>10 uleshort x %d groups
2076
+ >4 ubyte 32 cell
2077
+ >>5 ubyte x %d bit
2078
+ >>8 uleshort x %d x
2079
+ >>10 uleshort x %d
2080
+ >>12 uleshort x +%d
2081
+ >>14 uleshort x +%d
2082
+
2083
+ # Webshots (www.webshots.com), by John Harrison
2084
+ 0 string C\253\221g\230\0\0\0 Webshots Desktop .wbz file
2085
+
2086
+ # Hercules DASD image files
2087
+ # From Jan Jaeger <jj@septa.nl> and Jay Maynard <jaymaynard@gmail.com>
2088
+ 0 string CKD_P370 Hercules CKD DASD image file
2089
+ >8 lelong x \b, %d heads per cylinder
2090
+ >12 lelong x \b, track size %d bytes
2091
+ >16 byte x \b, device type 33%2.2X
2092
+
2093
+ 0 string CKD_C370 Hercules compressed CKD DASD image file
2094
+ >8 lelong x \b, %d heads per cylinder
2095
+ >12 lelong x \b, track size %d bytes
2096
+ >16 byte x \b, device type 33%2.2X
2097
+ >552 lelong x \b, %d total cylinders
2098
+ >>557 byte 0 \b, no compression
2099
+ >>557 byte 1 \b, ZLIB compression
2100
+ >>557 byte 2 \b, BZ2 compression
2101
+
2102
+ 0 string CKD_S370 Hercules CKD DASD shadow file
2103
+ >8 lelong x \b, %d heads per cylinder
2104
+ >12 lelong x \b, track size %d bytes
2105
+ >16 byte x \b, device type 33%2.2X
2106
+
2107
+ 0 string CKD_P064 Hercules CKD64 DASD image file
2108
+ >8 lelong x \b, %d heads per cylinder
2109
+ >12 lelong x \b, track size %d bytes
2110
+ >16 byte x \b, device type 33%2.2X
2111
+
2112
+ 0 string CKD_C064 Hercules compressed CKD64 DASD image file
2113
+ >8 lelong x \b, %d heads per cylinder
2114
+ >12 lelong x \b, track size %d bytes
2115
+ >16 byte x \b, device type 33%2.2X
2116
+ >524 lelong x \b, %d total cylinders
2117
+ >>585 byte 0 \b, no compression
2118
+ >>585 byte 1 \b, ZLIB compression
2119
+ >>585 byte 2 \b, BZ2 compression
2120
+
2121
+ 0 string CKD_S064 Hercules CKD64 DASD shadow file
2122
+ >8 lelong x \b, %d heads per cylinder
2123
+ >12 lelong x \b, track size %d bytes
2124
+ >16 byte x \b, device type 33%2.2X
2125
+
2126
+ # Squeak images and programs - etoffi@softhome.net
2127
+ 0 string \146\031\0\0 Squeak image data
2128
+ 0 search/1 'From\040Squeak Squeak program text
2129
+
2130
+ # partimage: file(1) magic for PartImage files (experimental, incomplete)
2131
+ # Author: Hans-Joachim Baader <hjb@pro-linux.de>
2132
+ 0 string PaRtImAgE-VoLuMe PartImage
2133
+ >0x0020 string 0.6.1 file version %s
2134
+ >>0x0060 ulelong >-1 volume %d
2135
+ #>>0x0064 8 byte identifier
2136
+ #>>0x007c reserved
2137
+ >>0x0200 string >\0 type %s
2138
+ >>0x1400 string >\0 device %s,
2139
+ >>0x1600 string >\0 original filename %s,
2140
+ # Some fields omitted
2141
+ >>0x2744 ulelong 0 not compressed
2142
+ >>0x2744 ulelong 1 gzip compressed
2143
+ >>0x2744 ulelong 2 bzip2 compressed
2144
+ >>0x2744 ulelong >2 compressed with unknown algorithm
2145
+ >0x0020 string >0.6.1 file version %s
2146
+ >0x0020 string <0.6.1 file version %s
2147
+
2148
+ # DCX is multi-page PCX, using a simple header of up to 1024
2149
+ # offsets for the respective PCX components.
2150
+ # From: Joerg Wunsch <joerg_wunsch@uriah.heep.sax.de>
2151
+ # Update: Joerg Jenderek
2152
+ # URL: http://fileformats.archiveteam.org/wiki/DCX
2153
+ 0 ulelong 987654321 DCX multi-page
2154
+ # http://www.nationalarchives.gov.uk/pronom/x-fmt/348
2155
+ !:mime image/x-dcx
2156
+ !:ext dcx
2157
+ # The first file offset usually starts at file offset 0x1004
2158
+ # print 1 space after 0x100? offset and then handles PCX images by ./images
2159
+ >4 ulelong x \b, at %#x
2160
+ >(4.l) indirect x
2161
+ # possible 2nd PCX image
2162
+ #>8 ulelong !0 \b, at %#x
2163
+ #>>(8.l) indirect x
2164
+ # possible 3rd PCX image
2165
+ #>12 ulelong !0 \b, at %#x
2166
+ #>>(12.l) indirect x
2167
+
2168
+ # Simon Walton <simonw@matteworld.com>
2169
+ # Kodak Cineon format for scanned negatives
2170
+ # http://www.kodak.com/US/en/motion/support/dlad/
2171
+ 0 ulelong 0xd75f2a80 Cineon image data
2172
+ >200 ubelong >0 \b, %d x
2173
+ >204 ubelong >0 %d
2174
+
2175
+
2176
+ # Bio-Rad .PIC is an image format used by microscope control systems
2177
+ # and related image processing software used by biologists.
2178
+ # From: Vebjorn Ljosa <vebjorn@ljosa.com>
2179
+ # BOOL values are two-byte integers; use them to rule out false positives.
2180
+ # https://web.archive.org/web/20050317223257/www.cs.ubc.ca/spider/ladic/text/biorad.txt
2181
+ # Samples: https://www.loci.wisc.edu/software/sample-data
2182
+ 14 uleshort <2
2183
+ >62 uleshort <2
2184
+ >>54 uleshort 12345 Bio-Rad .PIC Image File
2185
+ >>>0 uleshort >0 %d x
2186
+ >>>2 uleshort >0 %d,
2187
+ >>>4 uleshort =1 1 image in file
2188
+ >>>4 uleshort >1 %d images in file
2189
+
2190
+ # From Jan "Yenya" Kasprzak <kas@fi.muni.cz>
2191
+ # The description of *.mrw format can be found at
2192
+ # http://www.dalibor.cz/minolta/raw_file_format.htm
2193
+ 0 string \000MRM Minolta Dimage camera raw image data
2194
+
2195
+ # Summary: DjVu image / document
2196
+ # Extension: .djvu
2197
+ # Reference: http://djvu.org/docs/DjVu3Spec.djvu
2198
+ # Submitted by: Stephane Loeuillet <stephane.loeuillet@tiscali.fr>
2199
+ # Modified by (1): Abel Cheung <abelcheung@gmail.com>
2200
+ 0 string AT&TFORM
2201
+ >12 string DJVM DjVu multiple page document
2202
+ !:mime image/vnd.djvu
2203
+ >12 string DJVU DjVu image or single page document
2204
+ !:mime image/vnd.djvu
2205
+ >12 string DJVI DjVu shared document
2206
+ !:mime image/vnd.djvu
2207
+ >12 string THUM DjVu page thumbnails
2208
+ !:mime image/vnd.djvu
2209
+
2210
+ # Originally by Marc Espie
2211
+ # Modified by Robert Minsk <robertminsk at yahoo.com>
2212
+ # https://www.openexr.com/openexrfilelayout.pdf
2213
+ 0 ulelong 20000630 OpenEXR image data,
2214
+ !:mime image/x-exr
2215
+ >4 ulelong&0x000000ff x version %d,
2216
+ >4 ulelong ^0x00000200 storage: scanline
2217
+ >4 ulelong &0x00000200 storage: tiled
2218
+ >8 search/0x1000 compression\0 \b, compression:
2219
+ >>&16 ubyte 0 none
2220
+ >>&16 ubyte 1 rle
2221
+ >>&16 ubyte 2 zips
2222
+ >>&16 ubyte 3 zip
2223
+ >>&16 ubyte 4 piz
2224
+ >>&16 ubyte 5 pxr24
2225
+ >>&16 ubyte 6 b44
2226
+ >>&16 ubyte 7 b44a
2227
+ >>&16 ubyte 8 dwaa
2228
+ >>&16 ubyte 9 dwab
2229
+ >>&16 ubyte >9 unknown
2230
+ >8 search/0x1000 dataWindow\0 \b, dataWindow:
2231
+ >>&10 ulelong x (%d
2232
+ >>&14 ulelong x %d)-
2233
+ >>&18 ulelong x \b(%d
2234
+ >>&22 ulelong x %d)
2235
+ >8 search/0x1000 displayWindow\0 \b, displayWindow:
2236
+ >>&10 ulelong x (%d
2237
+ >>&14 ulelong x %d)-
2238
+ >>&18 ulelong x \b(%d
2239
+ >>&22 ulelong x %d)
2240
+ >8 search/0x1000 lineOrder\0 \b, lineOrder:
2241
+ >>&14 ubyte 0 increasing y
2242
+ >>&14 ubyte 1 decreasing y
2243
+ >>&14 ubyte 2 random y
2244
+ >>&14 ubyte >2 unknown
2245
+
2246
+ # SMPTE Digital Picture Exchange Format, SMPTE DPX
2247
+ #
2248
+ # ANSI/SMPTE 268M-1994, SMPTE Standard for File Format for Digital
2249
+ # Moving-Picture Exchange (DPX), v1.0, 18 February 1994
2250
+ # Robert Minsk <robertminsk at yahoo.com>
2251
+ # Modified by Harry Mallon <hjmallon at gmail.com>
2252
+ 0 string SDPX DPX image data, big-endian,
2253
+ !:mime image/x-dpx
2254
+ >0 use dpx_info
2255
+ 0 string XPDS DPX image data, little-endian,
2256
+ !:mime image/x-dpx
2257
+ >0 use \^dpx_info
2258
+
2259
+ 0 name dpx_info
2260
+ >768 ubeshort <4
2261
+ >>772 ubelong x %dx
2262
+ >>776 ubelong x \b%d,
2263
+ >768 ubeshort >3
2264
+ >>776 ubelong x %dx
2265
+ >>772 ubelong x \b%d,
2266
+ >768 ubeshort 0 left to right/top to bottom
2267
+ >768 ubeshort 1 right to left/top to bottom
2268
+ >768 ubeshort 2 left to right/bottom to top
2269
+ >768 ubeshort 3 right to left/bottom to top
2270
+ >768 ubeshort 4 top to bottom/left to right
2271
+ >768 ubeshort 5 top to bottom/right to left
2272
+ >768 ubeshort 6 bottom to top/left to right
2273
+ >768 ubeshort 7 bottom to top/right to left
2274
+
2275
+ # From: Tom Hilinski <tom.hilinski@comcast.net>
2276
+ # Update: Joerg Jenderek
2277
+ # URL: https://en.wikipedia.org/wiki/NetCDF
2278
+ # http://fileformats.archiveteam.org/wiki/NetCDF
2279
+ # Reference: http://mark0.net/download/triddefs_xml.7z/defs/n/netcdf.trid.xml
2280
+ # https://www.loc.gov/preservation/digital/formats/fdd/fdd000330.shtml
2281
+ # Note: called "NetCDF Network Common Data Form" by TrID and
2282
+ # "netCDF-3 Classic" by DROID via PUID fmt/282
2283
+ # https://www.unidata.ucar.edu/packages/netcdf/
2284
+ 0 string CDF\001
2285
+ # skip DROID fmt-282-signature-id-298.nc by test for more content bytes
2286
+ >3 uleshort >0 NetCDF Data Format data
2287
+ #!:mime application/netcdf
2288
+ # https://reposcope.com/mimetype/application/x-netcdf
2289
+ !:mime application/x-netcdf
2290
+ !:ext nc
2291
+ # https://fileinfo.com/extension/cdf
2292
+ # https://www.file-extensions.org/cdf-file-extension-unidata-network-common-data-form
2293
+ # in 1994 changed from CDF to NC file extension avoid a clash with other file formats
2294
+ #!:ext nc/cdf
2295
+ # 64-bit offset netcdf Classic https://www.unidata.ucar.edu/software/netcdf/docs/file_format_specifications
2296
+ # Note: called "netCDF-3 64-bit" by DROID via PUID fmt/283
2297
+ 0 string CDF\002
2298
+ # skip DROID fmt-283-signature-id-299.nc by test for more content bytes
2299
+ >3 uleshort >0 NetCDF Data Format data (64-bit offset)
2300
+ #!:mime application/netcdf
2301
+ !:mime application/x-netcdf
2302
+ !:ext nc
2303
+
2304
+ # From: Michael Liu
2305
+ # https://en.wikipedia.org/wiki/Common_Data_Format
2306
+ 0 ubelong 0xCDF30001 Common Data Format (Version 3 or later) data
2307
+ !:mime application/x-cdf
2308
+
2309
+ 0 ubelong 0xCDF26002 Common Data Format (Version 2.6 or 2.7) data
2310
+ !:mime application/x-cdf
2311
+
2312
+ 0 ubelong 0x0000FFFF Common Data Format (Version 2.5 or earlier) data
2313
+ !:mime application/x-cdf
2314
+
2315
+ # Hierarchical Data Format, used to facilitate scientific data exchange
2316
+ # specifications at http://hdf.ncsa.uiuc.edu/
2317
+ # URL: http://fileformats.archiveteam.org/wiki/HDF
2318
+ # https://en.wikipedia.org/wiki/Hierarchical_Data_Format
2319
+ # Reference: https://portal.hdfgroup.org/download/attachments/52627880/HDF5_File_Format_Specification_Version-3.0.pdf
2320
+ 0 ubelong 0x0e031301 Hierarchical Data Format (version 4) data
2321
+ !:mime application/x-hdf
2322
+ !:ext hdf/hdf4/h4
2323
+ 0 string \211HDF\r\n\032\n Hierarchical Data Format (version 5) data
2324
+ #!:mime application/x-hdf
2325
+ !:mime application/x-hdf5
2326
+ !:ext h5/hdf5/hdf/he5
2327
+ 512 string \211HDF\r\n\032\n
2328
+ # skip Matlab v5 mat-file testhdf5_7.4_GLNX86.mat handled by ./mathematica
2329
+ >0 string !MATLAB Hierarchical Data Format (version 5) with 512 bytes user block
2330
+ #!:mime application/x-hdf
2331
+ !:mime application/x-hdf5
2332
+ !:ext h5/hdf5/hdf/he5
2333
+ 1024 string \211HDF\r\n\032\n Hierarchical Data Format (version 5) with 1k user block
2334
+ #!:mime application/x-hdf
2335
+ !:mime application/x-hdf5
2336
+ !:ext h5/hdf5/hdf/he5
2337
+ 2048 string \211HDF\r\n\032\n Hierarchical Data Format (version 5) with 2k user block
2338
+ #!:mime application/x-hdf
2339
+ !:mime application/x-hdf5
2340
+ !:ext h5/hdf5/hdf/he5
2341
+ 4096 string \211HDF\r\n\032\n Hierarchical Data Format (version 5) with 4k user block
2342
+ #!:mime application/x-hdf
2343
+ !:mime application/x-hdf5
2344
+ !:ext h5/hdf5/hdf/he5
2345
+
2346
+ # From: Tobias Burnus <burnus@net-b.de>
2347
+ # Xara (for a while: Corel Xara) is a graphic package, see
2348
+ # http://www.xara.com/ for Windows and as GPL application for Linux
2349
+ 0 string XARA\243\243 Xara graphics file
2350
+
2351
+ # From: Joerg Jenderek
2352
+ # URL: http://fileformats.archiveteam.org/wiki/Corel_Gallery
2353
+ # Reference: http://mark0.net/download/triddefs_xml.7z/defs/b/bmf-corel.trid.xml
2354
+ # Note: called "Corel Binary Material Format" by TrID and
2355
+ # "Corel Flow" by XnView
2356
+ 0 string @CorelBMF\n\rCorel\040Corporation Corel GALLERY Clipart
2357
+ !:mime image/x-corel-bmf
2358
+ !:ext bmf
2359
+
2360
+ # https://www.cartesianinc.com/Tech/
2361
+ # Reference: http://fileformats.archiveteam.org/wiki/Cartesian_Perceptual_Compression
2362
+ 0 string CPC\262 Cartesian Perceptual Compression image
2363
+ !:mime image/x-cpi
2364
+ !:ext cpi/cpc
2365
+
2366
+ # From Albert Cahalan <acahalan@gmail.com>
2367
+ # puredigital used it for the CVS disposable camcorder
2368
+ #8 lelong 4 ZBM bitmap image data
2369
+ #>4 uleshort x %u x
2370
+ #>6 uleshort x %u
2371
+
2372
+ # From Albert Cahalan <acahalan@gmail.com>
2373
+ # uncompressed 5:6:5 HighColor image for OLPC XO firmware icons
2374
+ 0 string C565 OLPC firmware icon image data
2375
+ >4 uleshort x %u x
2376
+ >6 uleshort x %u
2377
+
2378
+ # Applied Images - Image files from Cytovision
2379
+ # Gustavo Junior Alves <gjalves@gjalves.com.br>
2380
+ 0 string \xce\xda\xde\xfa Cytovision Metaphases file
2381
+ 0 string \xed\xad\xef\xac Cytovision Karyotype file
2382
+ 0 string \x0b\x00\x03\x00 Cytovision FISH Probe file
2383
+ 0 string \xed\xfe\xda\xbe Cytovision FLEX file
2384
+ 0 string \xed\xab\xed\xfe Cytovision FLEX file
2385
+ 0 string \xad\xfd\xea\xad Cytovision RATS file
2386
+
2387
+ # Wavelet Scalar Quantization format used in gray-scale fingerprint images
2388
+ # From Tano M Fotang <mfotang@quanteq.com>
2389
+ 0 string \xff\xa0\xff\xa8\x00 Wavelet Scalar Quantization image data
2390
+
2391
+ # Type: PCO B16 image files
2392
+ # URL: http://www.pco.de/fileadmin/user_upload/db/download/MA_CWDCOPIE_0412b.pdf
2393
+ # From: Florian Philipp <florian.philipp@binarywings.net>
2394
+ # Extension: .b16
2395
+ # Description: Pixel image format produced by PCO Camware, typically used
2396
+ # together with PCO cameras.
2397
+ # Note: Different versions exist for e.g. 8 bit and 16 bit images.
2398
+ # Documentation is incomplete.
2399
+ 0 string/b PCO- PCO B16 image data
2400
+ >12 ulelong x \b, %dx
2401
+ >16 ulelong x \b%d
2402
+ >20 ulelong 0 \b, short header
2403
+ >20 ulelong -1 \b, extended header
2404
+ >>24 ulelong 0 \b, grayscale
2405
+ >>>36 ulelong 0 linear LUT
2406
+ >>>36 ulelong 1 logarithmic LUT
2407
+ >>>28 ulelong x [%d
2408
+ >>>32 ulelong x \b,%d]
2409
+ >>24 ulelong 1 \b, color
2410
+ >>>64 ulelong 0 linear LUT
2411
+ >>>64 ulelong 1 logarithmic LUT
2412
+ >>>40 ulelong x r[%d
2413
+ >>>44 ulelong x \b,%d]
2414
+ >>>48 ulelong x g[%d
2415
+ >>>52 ulelong x \b,%d]
2416
+ >>>56 ulelong x b[%d
2417
+ >>>60 ulelong x \b,%d]
2418
+
2419
+ # Polar Monitor Bitmap (.pmb) used as logo for Polar Electro watches
2420
+ # From: Markus Heidelberg <markus.heidelberg at web.de>
2421
+ 0 string/t [BitmapInfo2] Polar Monitor Bitmap text
2422
+ !:mime image/x-polar-monitor-bitmap
2423
+
2424
+ # From: Rick Richardson <rickrich@gmail.com>
2425
+ # updated by: Joerg Jenderek
2426
+ # URL: http://techmods.net/nuvi/
2427
+ 0 string GARMIN\ BITMAP\ 01 Garmin Bitmap file
2428
+ # extension is also used for
2429
+ # Sony SRF raw image (image/x-sony-srf)
2430
+ # SRF map
2431
+ # Terragen Surface Map (https://www.planetside.co.uk/terragen)
2432
+ # FileLocator Pro search criteria file (https://www.mythicsoft.com/filelocatorpro)
2433
+ !:ext srf
2434
+ #!:mime image/x-garmin-srf
2435
+ # version 1.00,2.00,2.10,2.40,2.50
2436
+ >0x2f string >0 \b, version %4.4s
2437
+ # width (2880,2881,3240)
2438
+ >0x55 uleshort >0 \b, %dx
2439
+ # height (80,90)
2440
+ >>0x53 uleshort x \b%d
2441
+
2442
+ # From: Joerg Jenderek
2443
+ # URL: http://fileformats.archiveteam.org/wiki/Imageiio/imaginfo_(Ulead)
2444
+ # Reference: http://mark0.net/download/triddefs_xml.7z/defs/p/pe3.trid.xml
2445
+ # Note: called "Ulead Imageiio/Imaginfo thumbnail" by TrID
2446
+ 0 string IIO1$ Ulead Photo Explorer 3
2447
+ #!:mime application/octet-stream
2448
+ !:mime image/x-ulead-pe3
2449
+ # IMAGEIIO.PE3
2450
+ !:ext pe3
2451
+ # look for DOS/Windows drive letter
2452
+ >5 search/192/s :\\
2453
+ # directory or full name of corresponding imaginfo.pe3 like: "T:\SAMPLES\TEXTURES\SKY_SNOW\IIOE371.TMP "S:\PI3\PIMPACT3\PROGRAMS\PATTERNS\imaginfo.pe3"
2454
+ >>&-1 string x "%s"
2455
+ # look for DOS/Windows network path if no drive letter part
2456
+ >5 default x
2457
+ >>5 search/192/s \x5c\x5c
2458
+ # full name of corresponding imaginfo.pe3 like: "\\Lionking\upi\SAMPLES\IMAGES\ANIMALS\imaginfo.pe3"
2459
+ >>>&0 string x "%s"
2460
+ # Type: Ulead Photo Explorer5 (.pe5)
2461
+ # URL: http://fileformats.archiveteam.org/wiki/Imageiio/imaginfo_(Ulead)
2462
+ # Reference: http://mark0.net/download/triddefs_xml.7z/defs/p/pe4.trid.xml
2463
+ # From: Simon Horman <horms@debian.org>
2464
+ # Update: Joerg Jenderek
2465
+ # Note: some called "Ulead Imageiio/Imaginfo thumbnail" by TrID
2466
+ # and used in various Ulead applications
2467
+ 0 string IIO2H Ulead Photo Explorer 4 or 5
2468
+ #!:mime application/octet-stream
2469
+ !:mime image/x-ulead-pe4
2470
+ # IMAGEIIO.PE4
2471
+ !:ext pe4/pe5
2472
+ # look in most samples for JPEG signature like: SAMPLES/IMAGES/SCENES/IMAGINFO.PE4
2473
+ >0x4c2 search/0xE02/s JFIF with JPEG image data
2474
+ >>&-6 use jpeg
2475
+ # near the end list of image names like: Img0001.pcd 1116012L.JPG NCARD4.TPL
2476
+ #
2477
+ # Reference: http://mark0.net/download/triddefs_xml.7z/defs/p/pe3-imaginfo.trid.xml
2478
+ 11 string \001\0\0\0\0
2479
+ # check for version 3 part
2480
+ >19 string \0\001\0\003\0
2481
+ >>0 use ulead-imaginfo
2482
+ # From: Joerg Jenderek
2483
+ # Reference: http://mark0.net/download/triddefs_xml.7z/defs/p/pe4-imaginfo.trid.xml
2484
+ 11 string \001\0\0\0\0
2485
+ # check for version 4 part
2486
+ >19 string \0\0\0\004\0
2487
+ >>0 use ulead-imaginfo
2488
+ # display information about Ulead Imaginfo thumbnail (version, directory, image extension)
2489
+ 0 name ulead-imaginfo
2490
+ >22 ubyte x Ulead Imaginfo thumbnail
2491
+ #!:mime application/octet-stream
2492
+ !:mime image/x-ulead-imaginfo
2493
+ >22 ubyte =3 \b, version 3
2494
+ # IMAGINFO.PE3
2495
+ !:ext pe3
2496
+ >22 ubyte =4 \b, version 4
2497
+ # IMAGINFO.PE4
2498
+ !:ext pe4
2499
+ # MAYBE ALSO VERSION 5 ?
2500
+ #>22 ubyte =5 \b, version 5
2501
+ #!:ext pe5
2502
+ >22 ubyte x
2503
+ # look for DOS/Windows driver letter
2504
+ >>4 search/192/s :\x5c
2505
+ # skip f:\Programme\iPhoto Plus 4\Template\Business Cards\IMAGINFO.PE4
2506
+ # by looking for driver letter in range A-Z
2507
+ >>>&-1 ubyte >0x40
2508
+ # directory path like: "E:\iPE\CDSample\Images\Scenes" "D:\XmasCard\Samples" "C:\TEMP\PLANTS"
2509
+ >>>>&-5 pstring/l >0 \b, "%s"
2510
+ # look for DOS/Windows network path if no valid drive letter part
2511
+ >>>&-1 default x
2512
+ >>>>4 search/192/s \x5c\x5c
2513
+ # directory path like: "\\FSX\SYS\OPPS\IPE.ENG\TEMPLATE\BUSINESS" "\\Lionking\upi\SAMPLES\IMAGES\ANIMALS"
2514
+ >>>>>&-4 pstring/l >0 \b, "%s"
2515
+ # look for DOS/Windows network path if no drive letter part
2516
+ >>4 default x
2517
+ >>>4 search/192/s \x5c\x5c
2518
+ # directory path like: "\\FSX\SYS\opps\ipe.eng\samples" "\\DANIEL\IPE_CD\IPE.ITA"
2519
+ >>>>&-4 pstring/l >0 \b, "%s"
2520
+ # look for point character inside image names
2521
+ >56 search/38/s .
2522
+ # image name extension like: bmp jpg pcd tpl
2523
+ >>&1 string x with %-.3s images
2524
+ # Summary: Ulead Pattern image (Corel Corporation)
2525
+ # URL: https://en.wikipedia.org/wiki/Ulead_Systems
2526
+ # https://www.file-extensions.org/pst-file-extension-ulead-pattern-image-format
2527
+ # Reference: http://mark0.net/download/triddefs_xml.7z/defs/p/pst-ulead.trid.xml
2528
+ # From: Joerg Jenderek
2529
+ # Note: used also by CorelDraw Essentials 3 version 13.0.0.800
2530
+ # there seems to exist other versions
2531
+ 0 ubelong 0xFFFF0100
2532
+ >8 search/21 PresetInfo Ulead pattern image
2533
+ #!:mime application/octet-stream
2534
+ !:mime image/x-ulead-pst
2535
+ !:ext pst
2536
+ # string length like: 16 18 19 21 24
2537
+ #>>4 uleshort x n=%u
2538
+ # like: BlendPresetInfo DropShadowPresetInfo FileNewPresetInfo VectorExtrudePresetInfo EnvelopePresetInfo ContourPresetInfo DistortionPresetInfo
2539
+ >>4 pstring/h x "%s"
2540
+
2541
+ # Type: X11 cursor
2542
+ # URL: http://webcvs.freedesktop.org/mime/shared-mime-info/freedesktop.org.xml.in?view=markup
2543
+ # From: Mathias Brodala <info@noctus.net>
2544
+ 0 string Xcur X11 cursor
2545
+
2546
+ # Type: Olympus ORF raw images.
2547
+ # URL: https://libopenraw.freedesktop.org/wiki/Olympus_ORF
2548
+ # From: Adam Buchbinder <adam.buchbinder@gmail.com>
2549
+ 0 string MMOR Olympus ORF raw image data, big-endian
2550
+ !:mime image/x-olympus-orf
2551
+ 0 string IIRO Olympus ORF raw image data, little-endian
2552
+ !:mime image/x-olympus-orf
2553
+ 0 string IIRS Olympus ORF raw image data, little-endian
2554
+ !:mime image/x-olympus-orf
2555
+
2556
+ # Type: files used in modern AVCHD camcoders to store clip information
2557
+ # Extension: .cpi
2558
+ # From: Alexander Danilov <alexander.a.danilov@gmail.com>
2559
+ 0 string HDMV0100 AVCHD Clip Information
2560
+
2561
+ # From: Adam Buchbinder <adam.buchbinder@gmail.com>
2562
+ # URL: http://local.wasp.uwa.edu.au/~pbourke/dataformats/pic/
2563
+ # Radiance HDR; usually has .pic or .hdr extension.
2564
+ 0 string #?RADIANCE\n Radiance HDR image data
2565
+ !:mime image/vnd.radiance
2566
+
2567
+ # From: Adam Buchbinder <adam.buchbinder@gmail.com>
2568
+ # URL: https://www.mpi-inf.mpg.de/resources/pfstools/pfs_format_spec.pdf
2569
+ # Used by the pfstools packages. The regex matches for the image size could
2570
+ # probably use some work. The MIME type is made up; if there's one in
2571
+ # actual common use, it should replace the one below.
2572
+ 0 string PFS1\x0a PFS HDR image data
2573
+ #!mime image/x-pfs
2574
+ >1 regex [0-9]*\ \b, %s
2575
+ >>1 regex \ [0-9]{4} \bx%s
2576
+
2577
+ # Type: Foveon X3F
2578
+ # URL: https://www.photofo.com/downloads/x3f-raw-format.pdf
2579
+ # From: Adam Buchbinder <adam.buchbinder@gmail.com>
2580
+ # Note that the MIME type isn't defined anywhere that I can find; if
2581
+ # there's a canonical type for this format, it should replace this one.
2582
+ 0 string FOVb Foveon X3F raw image data
2583
+ !:mime image/x-x3f
2584
+ >6 uleshort x \b, version %d.
2585
+ >4 uleshort x \b%d
2586
+ >28 ulelong x \b, %dx
2587
+ >32 ulelong x \b%d
2588
+
2589
+ # Paint.NET file
2590
+ # From Adam Buchbinder <adam.buchbinder@gmail.com>
2591
+ 0 string PDN3 Paint.NET image data
2592
+ !:mime image/x-paintnet
2593
+
2594
+ # Not really an image.
2595
+ # From: "Tano M. Fotang" <mfotang@quanteq.com>
2596
+ 0 string \x46\x4d\x52\x00 ISO/IEC 19794-2 Format Minutiae Record (FMR)
2597
+
2598
+ # doc: https://www.shikino.co.jp/eng/products/images/FLOWER.jpg.zip
2599
+ # example: https://www.shikino.co.jp/eng/products/images/FLOWER.wdp.zip
2600
+ 90 ubequad 0x574D50484F544F00 JPEG-XR Image
2601
+ >98 ubyte&0x08 =0x08 \b, hard tiling
2602
+ >99 ubyte&0x80 =0x80 \b, tiling present
2603
+ >99 ubyte&0x40 =0x40 \b, codestream present
2604
+ >99 ubyte&0x38 x \b, spatial xform=
2605
+ >99 ubyte&0x38 0x00 \bTL
2606
+ >99 ubyte&0x38 0x08 \bBL
2607
+ >99 ubyte&0x38 0x10 \bTR
2608
+ >99 ubyte&0x38 0x18 \bBR
2609
+ >99 ubyte&0x38 0x20 \bBT
2610
+ >99 ubyte&0x38 0x28 \bRB
2611
+ >99 ubyte&0x38 0x30 \bLT
2612
+ >99 ubyte&0x38 0x38 \bLB
2613
+ >100 ubyte&0x80 =0x80 \b, short header
2614
+ >>102 ubeshort+1 x \b, %d
2615
+ >>104 ubeshort+1 x \bx%d
2616
+ >100 ubyte&0x80 =0x00 \b, long header
2617
+ >>102 ubelong+1 x \b, %x
2618
+ >>106 ubelong+1 x \bx%x
2619
+ >101 ubeshort&0xf x \b, bitdepth=
2620
+ >>101 ubeshort&0xf 0x0 \b1-WHITE=1
2621
+ >>101 ubeshort&0xf 0x1 \b8
2622
+ >>101 ubeshort&0xf 0x2 \b16
2623
+ >>101 ubeshort&0xf 0x3 \b16-SIGNED
2624
+ >>101 ubeshort&0xf 0x4 \b16-FLOAT
2625
+ >>101 ubeshort&0xf 0x5 \b(reserved 5)
2626
+ >>101 ubeshort&0xf 0x6 \b32-SIGNED
2627
+ >>101 ubeshort&0xf 0x7 \b32-FLOAT
2628
+ >>101 ubeshort&0xf 0x8 \b5
2629
+ >>101 ubeshort&0xf 0x9 \b10
2630
+ >>101 ubeshort&0xf 0xa \b5-6-5
2631
+ >>101 ubeshort&0xf 0xb \b(reserved %d)
2632
+ >>101 ubeshort&0xf 0xc \b(reserved %d)
2633
+ >>101 ubeshort&0xf 0xd \b(reserved %d)
2634
+ >>101 ubeshort&0xf 0xe \b(reserved %d)
2635
+ >>101 ubeshort&0xf 0xf \b1-BLACK=1
2636
+ >101 ubeshort&0xf0 x \b, colorfmt=
2637
+ >>101 ubeshort&0xf0 0x00 \bYONLY
2638
+ >>101 ubeshort&0xf0 0x10 \bYUV240
2639
+ >>101 ubeshort&0xf0 0x20 \bYWV422
2640
+ >>101 ubeshort&0xf0 0x30 \bYWV444
2641
+ >>101 ubeshort&0xf0 0x40 \bCMYK
2642
+ >>101 ubeshort&0xf0 0x50 \bCMYKDIRECT
2643
+ >>101 ubeshort&0xf0 0x60 \bNCOMPONENT
2644
+ >>101 ubeshort&0xf0 0x70 \bRGB
2645
+ >>101 ubeshort&0xf0 0x80 \bRGBE
2646
+ >>101 ubeshort&0xf0 >0x80 \b(reserved %#x)
2647
+
2648
+ # From: Johan van der Knijff <johan.vanderknijff@kb.nl>
2649
+ #
2650
+ # BPG (Better Portable Graphics) format
2651
+ # https://bellard.org/bpg/
2652
+ # http://fileformats.archiveteam.org/wiki/BPG
2653
+ #
2654
+ 0 string \x42\x50\x47\xFB BPG (Better Portable Graphics)
2655
+ !:mime image/bpg
2656
+
2657
+ # From: Joerg Jenderek
2658
+ # URL: https://en.wikipedia.org/wiki/Apple_Icon_Image_format
2659
+ 0 string icns Mac OS X icon
2660
+ !:mime image/x-icns
2661
+ !:apple ????icns
2662
+ !:ext icns
2663
+ >4 ubelong >0
2664
+ # file size
2665
+ >>4 ubelong x \b, %d bytes
2666
+ # icon type
2667
+ >>8 string x \b, "%4.4s" type
2668
+
2669
+ # TIM images
2670
+ # URL: http://fileformats.archiveteam.org/wiki/TIM_(PlayStation_graphics)
2671
+ # Reference: https://mrclick.zophar.net/TilEd/download/timgfx.txt
2672
+ # Update: Joerg Jenderek
2673
+ # Note: called as "PSX TIM *bpp bitmap" by bitmap-tim-*.trid.xml
2674
+ # verified as "TIM PSX" by XnView `nconvert -fullinfo *.tim` and
2675
+ # by RECOIL `recoil2png -o TMP.PNG input.tim; file TMP.PNG` and often
2676
+ # as "PSX TIM" by ImageMagick version 7.1.0-10 command `identify *.tim`
2677
+ # here signed integers are used but according to Kaitai unsigned
2678
+ 0 ulelong 0x00000010
2679
+ # 32 Flag bits *cttt; c~CLUT flag t~type 000~4BPP 001~8BPP 010~16BPP 011~24BPP 100~Mixed
2680
+ #>4 ulelong x FLAGS=%#x
2681
+ # 12+Size of CLUT (2Ch for 4BPP; 20Ch 40Ch 60Ch 80Ch C0Ch for 8BPP) or
2682
+ # +image data size (800Ch 2000Ch 2580C for 16BPP) (02000003h for dBase memo test.dbt)
2683
+ #>8 ulelong x \b, 12+CLUT or data size=%#8.8x
2684
+ # CLUT or data size remainder is 12 (Ch), but 03 for dBase memo test.dbt
2685
+ #>8 ubyte&0x0F =0x0C \b, SIZE REMAINDER IS 12
2686
+ # skip dBase III memo test.dbt with invalid flags 22D10189h
2687
+ >4 ulelong&0xffFFffF0 =0 Sony PlayStation PSX image,
2688
+ # file (version 5.40) labeled the above entry as "TIM image"
2689
+ !:mime image/x-sony-tim
2690
+ !:ext tim
2691
+ #>>4 ulelong&0x00000007 x \b, BPP~%u
2692
+ # 4BPP and 8BPP examples exist with CLUT or without CLUT
2693
+ >>4 ulelong&0x07 0x0 4-Bit,
2694
+ >>4 ulelong&0x07 0x1 8-Bit,
2695
+ # 16BPP and 24BPP examples have no CLUT
2696
+ >>4 ulelong 0x2 15-Bit,
2697
+ >>4 ulelong 0x3 24-Bit,
2698
+ # no example
2699
+ >>4 ulelong&0x07 0x4 Mixed-Bit,
2700
+ # CLUT flag set
2701
+ >>4 ulelong &8
2702
+ # 12 + size of CLUT like: 1000Ch 800Ch 400Ch 40Ch and 2FEh (KAGE.TIM)
2703
+ #>>>(8.l+8) ulelong x \b, 12+CLUT SIZE=%#8.8x
2704
+ >>>(8.l+12) uleshort x Pixel at (%d,
2705
+ >>>(8.l+14) uleshort x \b%d) Size=
2706
+ # image width (to get actual width multiply by 4 for 4BPP and by 2 for 8BPP)
2707
+ >>>>4 ulelong 0x8
2708
+ >>>>>(8.l+16) uleshort*4 x \b%d
2709
+ >>>>4 ulelong 0x9
2710
+ >>>>>(8.l+16) uleshort*2 x \b%d
2711
+ # image height like: 32 64 128 144 160 208 256
2712
+ >>>(8.l+18) uleshort x \bx%d,
2713
+ >>>4 ulelong 0x8 16 CLUT Entries at
2714
+ >>>4 ulelong 0x9 256 CLUT Entries at
2715
+ >>>12 uleshort x (%d,
2716
+ >>>14 uleshort x \b%d)
2717
+ # no Color LookUp Table (CLUT)
2718
+ >>4 ulelong ^8
2719
+ # image origin X Y
2720
+ >>>12 uleshort x Pixel at (%d,
2721
+ >>>14 uleshort x \b%d) Size=
2722
+ # real image width = multiply by 4 (4BPP) 2 (8BPP) 1 (16BPP) 2/3 (24BPP)
2723
+ >>>>4 ulelong 0x0
2724
+ >>>>>16 uleshort*4 x \b%d
2725
+ >>>>4 ulelong 0x1
2726
+ >>>>>16 uleshort*2 x \b%d
2727
+ >>>>4 ulelong 0x2
2728
+ >>>>>16 uleshort x \b%d
2729
+ >>>>4 ulelong 0x3
2730
+ # GRR: NOT working
2731
+ #>>>>>16 uleshort*2/3 x \b%d
2732
+ >>>>>16 uleshort x \b2/3*%d
2733
+ # mixed format width not explained!
2734
+ >>>>4 ulelong 0x4
2735
+ >>>>>16 uleshort x \b%d
2736
+ # image height like: 64 240 256
2737
+ >>>18 uleshort x \bx%d
2738
+ # TIM image data
2739
+
2740
+ # MDEC streams
2741
+ 0 ulelong 0x80010160 MDEC video stream,
2742
+ >16 uleshort x %dx
2743
+ >18 uleshort x \b%d
2744
+ #>8 ulelong x %d frames
2745
+ #>4 uleshort x secCount=%d;
2746
+ #>6 uleshort x nSectors=%d;
2747
+ #>12 ulelong x frameSize=%d;
2748
+
2749
+ # BS encoded bitstreams
2750
+ 2 uleshort 0x3800 BS image,
2751
+ # GRR: the above line is also true for binary Computer Graphics Metafile SAB00012.CGM with long parameter length 56 (=38h)
2752
+ >6 uleshort x Version %d,
2753
+ >4 uleshort x Quantization %d,
2754
+ >0 uleshort x (Decompresses to %d words)
2755
+
2756
+ # Type: farbfeld image.
2757
+ # Url: http://tools.suckless.org/farbfeld/
2758
+ # From: Ian D. Scott <ian@iandouglasscott.com>
2759
+ #
2760
+ 0 string farbfeld farbfeld image data,
2761
+ >8 ubelong x %dx
2762
+ >12 ubelong x \b%d
2763
+
2764
+ # Type: Microsoft DirectDraw Surface (DXGI formats)
2765
+ # URL: https://msdn.microsoft.com/library/default.asp?url=/library/en-us/directx9_c/directx/graphics/reference/DDSFileReference/ddsfileformat.asp
2766
+ # From: Morten Hustveit <morten@debian.org>
2767
+ # Updated by: David Korth <gerbilsoft@gerbilsoft.com>
2768
+ 0 name ms-directdraw-dx10
2769
+ >0 ulelong x \b, DXGI format:
2770
+ >0 ulelong 1 R32G32B32A32_TYPELESS
2771
+ >0 ulelong 2 R32G32B32A32_FLOAT
2772
+ >0 ulelong 3 R32G32B32A32_UINT
2773
+ >0 ulelong 4 R32G32B32A32_SINT
2774
+ >0 ulelong 5 R32G32B32_TYPELESS
2775
+ >0 ulelong 6 R32G32B32_FLOAT
2776
+ >0 ulelong 7 R32G32B32_UINT
2777
+ >0 ulelong 8 R32G32B32_SINT
2778
+ >0 ulelong 9 R16G16B16A16_TYPELESS
2779
+ >0 ulelong 10 R16G16B16A16_FLOAT
2780
+ >0 ulelong 11 R16G16B16A16_UNORM
2781
+ >0 ulelong 12 R16G16B16A16_UINT
2782
+ >0 ulelong 13 R16G16B16A16_SNORM
2783
+ >0 ulelong 14 R16G16B16A16_SINT
2784
+ >0 ulelong 15 R32G32_TYPELESS
2785
+ >0 ulelong 16 R32G32_FLOAT
2786
+ >0 ulelong 17 R32G32_UINT
2787
+ >0 ulelong 18 R32G32_SINT
2788
+ >0 ulelong 19 R32G8X24_TYPELESS
2789
+ >0 ulelong 20 D32_FLOAT_S8X24_UINT
2790
+ >0 ulelong 21 R32_FLOAT_X8X24_TYPELESS
2791
+ >0 ulelong 22 X32_TYPELESS_G8X24_UINT
2792
+ >0 ulelong 23 R10G10B10A2_TYPELESS
2793
+ >0 ulelong 24 R10G10B10A2_UNORM
2794
+ >0 ulelong 25 R10G10B10A2_UINT
2795
+ >0 ulelong 26 R11G11B10_FLOAT
2796
+ >0 ulelong 27 R8G8B8A8_TYPELESS
2797
+ >0 ulelong 28 R8G8B8A8_UNORM
2798
+ >0 ulelong 29 R8G8B8A8_UNORM_SRGB
2799
+ >0 ulelong 30 R8G8B8A8_UINT
2800
+ >0 ulelong 31 R8G8B8A8_SNORM
2801
+ >0 ulelong 32 R8G8B8A8_SINT
2802
+ >0 ulelong 33 R16G16_TYPELESS
2803
+ >0 ulelong 34 R16G16_FLOAT
2804
+ >0 ulelong 35 R16G16_UNORM
2805
+ >0 ulelong 36 R16G16_UINT
2806
+ >0 ulelong 37 R16G16_SNORM
2807
+ >0 ulelong 38 R16G16_SINT
2808
+ >0 ulelong 39 R32_TYPELESS
2809
+ >0 ulelong 40 D32_FLOAT
2810
+ >0 ulelong 41 R32_FLOAT
2811
+ >0 ulelong 42 R32_UINT
2812
+ >0 ulelong 43 R32_SINT
2813
+ >0 ulelong 44 R24G8_TYPELESS
2814
+ >0 ulelong 45 D24_UNORM_S8_UINT
2815
+ >0 ulelong 46 R24_UNORM_X8_TYPELESS
2816
+ >0 ulelong 47 X24_TYPELESS_G8_UINT
2817
+ >0 ulelong 48 R8G8_TYPELESS
2818
+ >0 ulelong 49 R8G8_UNORM
2819
+ >0 ulelong 50 R8G8_UINT
2820
+ >0 ulelong 51 R8G8_SNORM
2821
+ >0 ulelong 52 R8G8_SINT
2822
+ >0 ulelong 53 R16_TYPELESS
2823
+ >0 ulelong 54 R16_FLOAT
2824
+ >0 ulelong 55 D16_UNORM
2825
+ >0 ulelong 56 R16_UNORM
2826
+ >0 ulelong 57 R16_UINT
2827
+ >0 ulelong 58 R16_SNORM
2828
+ >0 ulelong 59 R16_SINT
2829
+ >0 ulelong 60 R8_TYPELESS
2830
+ >0 ulelong 61 R8_UNORM
2831
+ >0 ulelong 62 R8_UINT
2832
+ >0 ulelong 63 R8_SNORM
2833
+ >0 ulelong 64 R8_SINT
2834
+ >0 ulelong 65 A8_UNORM
2835
+ >0 ulelong 66 R1_UNORM
2836
+ >0 ulelong 67 R9G9B9E5_SHAREDEXP
2837
+ >0 ulelong 68 R8G8_B8G8_UNORM
2838
+ >0 ulelong 69 G8R8_G8B8_UNORM
2839
+ >0 ulelong 70 BC1_TYPELESS
2840
+ >0 ulelong 71 BC1_UNORM
2841
+ >0 ulelong 72 BC1_UNORM_SRGB
2842
+ >0 ulelong 73 BC2_TYPELESS
2843
+ >0 ulelong 74 BC2_UNORM
2844
+ >0 ulelong 75 BC2_UNORM_SRGB
2845
+ >0 ulelong 76 BC3_TYPELESS
2846
+ >0 ulelong 77 BC3_UNORM
2847
+ >0 ulelong 78 BC3_UNORM_SRGB
2848
+ >0 ulelong 79 BC4_TYPELESS
2849
+ >0 ulelong 80 BC4_UNORM
2850
+ >0 ulelong 81 BC4_SNORM
2851
+ >0 ulelong 82 BC5_TYPELESS
2852
+ >0 ulelong 83 BC5_UNORM
2853
+ >0 ulelong 84 BC5_SNORM
2854
+ >0 ulelong 85 B5G6R5_UNORM
2855
+ >0 ulelong 86 B5G5R5A1_UNORM
2856
+ >0 ulelong 87 B8G8R8A8_UNORM
2857
+ >0 ulelong 88 B8G8R8X8_UNORM
2858
+ >0 ulelong 89 R10G10B10_XR_BIAS_A2_UNORM
2859
+ >0 ulelong 90 B8G8R8A8_TYPELESS
2860
+ >0 ulelong 91 B8G8R8A8_UNORM_SRGB
2861
+ >0 ulelong 92 B8G8R8X8_TYPELESS
2862
+ >0 ulelong 93 B8G8R8X8_UNORM_SRGB
2863
+ >0 ulelong 94 BC6H_TYPELESS
2864
+ >0 ulelong 95 BC6H_UF16
2865
+ >0 ulelong 96 BC6H_SF16
2866
+ >0 ulelong 97 BC7_TYPELESS
2867
+ >0 ulelong 98 BC7_UNORM
2868
+ >0 ulelong 99 BC7_UNORM_SRGB
2869
+ >0 ulelong 100 AYUV
2870
+ >0 ulelong 101 Y410
2871
+ >0 ulelong 102 Y416
2872
+ >0 ulelong 103 NV12
2873
+ >0 ulelong 104 P010
2874
+ >0 ulelong 105 P016
2875
+ >0 ulelong 106 420_OPAQUE
2876
+ >0 ulelong 107 YUY2
2877
+ >0 ulelong 108 Y210
2878
+ >0 ulelong 109 Y216
2879
+ >0 ulelong 110 NV11
2880
+ >0 ulelong 111 AI44
2881
+ >0 ulelong 112 IA44
2882
+ >0 ulelong 113 P8
2883
+ >0 ulelong 114 A8P8
2884
+ >0 ulelong 115 B4G4R4A4_UNORM
2885
+
2886
+ >0 ulelong 116 XBOX_R10G10B10_7E3_A2_FLOAT
2887
+ >0 ulelong 117 XBOX_R10G10B10_6E4_A2_FLOAT
2888
+ >0 ulelong 118 XBOX_D16_UNORM_S8_UINT
2889
+ >0 ulelong 119 XBOX_R16_UNORM_X8_TYPELESS
2890
+ >0 ulelong 120 XBOX_X16_TYPELESS_G8_UINT
2891
+
2892
+ >0 ulelong 130 DXGI_FORMAT_P208
2893
+ >0 ulelong 131 DXGI_FORMAT_V208
2894
+ >0 ulelong 132 DXGI_FORMAT_V408
2895
+
2896
+ >0 ulelong 133 ASTC_4X4_TYPELESS
2897
+ >0 ulelong 134 ASTC_4X4_UNORM
2898
+ >0 ulelong 135 ASTC_4X4_UNORM_SRGB
2899
+ >0 ulelong 137 ASTC_5X4_TYPELESS
2900
+ >0 ulelong 138 ASTC_5X4_UNORM
2901
+ >0 ulelong 139 ASTC_5X4_UNORM_SRGB
2902
+ >0 ulelong 141 ASTC_5X5_TYPELESS
2903
+ >0 ulelong 142 ASTC_5X5_UNORM
2904
+ >0 ulelong 143 ASTC_5X5_UNORM_SRGB
2905
+ >0 ulelong 145 ASTC_6X5_TYPELESS
2906
+ >0 ulelong 146 ASTC_6X5_UNORM
2907
+ >0 ulelong 147 ASTC_6X5_UNORM_SRGB
2908
+ >0 ulelong 149 ASTC_6X6_TYPELESS
2909
+ >0 ulelong 150 ASTC_6X6_UNORM
2910
+ >0 ulelong 151 ASTC_6X6_UNORM_SRGB
2911
+ >0 ulelong 153 ASTC_8X5_TYPELESS
2912
+ >0 ulelong 154 ASTC_8X5_UNORM
2913
+ >0 ulelong 155 ASTC_8X5_UNORM_SRGB
2914
+ >0 ulelong 157 ASTC_8X6_TYPELESS
2915
+ >0 ulelong 158 ASTC_8X6_UNORM
2916
+ >0 ulelong 159 ASTC_8X6_UNORM_SRGB
2917
+ >0 ulelong 161 ASTC_8X8_TYPELESS
2918
+ >0 ulelong 162 ASTC_8X8_UNORM
2919
+ >0 ulelong 163 ASTC_8X8_UNORM_SRGB
2920
+ >0 ulelong 165 ASTC_10X5_TYPELESS
2921
+ >0 ulelong 166 ASTC_10X5_UNORM
2922
+ >0 ulelong 167 ASTC_10X5_UNORM_SRGB
2923
+ >0 ulelong 169 ASTC_10X6_TYPELESS
2924
+ >0 ulelong 170 ASTC_10X6_UNORM
2925
+ >0 ulelong 171 ASTC_10X6_UNORM_SRGB
2926
+ >0 ulelong 173 ASTC_10X8_TYPELESS
2927
+ >0 ulelong 174 ASTC_10X8_UNORM
2928
+ >0 ulelong 175 ASTC_10X8_UNORM_SRGB
2929
+ >0 ulelong 177 ASTC_10X10_TYPELESS
2930
+ >0 ulelong 178 ASTC_10X10_UNORM
2931
+ >0 ulelong 179 ASTC_10X10_UNORM_SRGB
2932
+ >0 ulelong 181 ASTC_12X10_TYPELESS
2933
+ >0 ulelong 182 ASTC_12X10_UNORM
2934
+ >0 ulelong 183 ASTC_12X10_UNORM_SRGB
2935
+ >0 ulelong 185 ASTC_12X12_TYPELESS
2936
+ >0 ulelong 186 ASTC_12X12_UNORM
2937
+ >0 ulelong 187 ASTC_12X12_UNORM_SRGB
2938
+
2939
+ >0 ulelong 190 XBOX_R10G10B10_SNORM_A2_UNORM
2940
+ >0 ulelong 189 XBOX_R4G4_UNORM
2941
+ >0 ulelong 0xFFFFFFFF DXGI_FORMAT_FORCE_UINT
2942
+
2943
+ # Type: Microsoft DirectDraw Surface (common data)
2944
+ # URL: https://msdn.microsoft.com/library/default.asp?url=/library/en-us/directx9_c/directx/graphics/reference/DDSFileReference/ddsfileformat.asp
2945
+ # From: Morten Hustveit <morten@debian.org>
2946
+ # Updated by: David Korth <gerbilsoft@gerbilsoft.com>
2947
+ 0 name ms-directdraw-surface
2948
+ >0x10 ulelong x %u x
2949
+ >0x0C ulelong x %u
2950
+ # Color depth.
2951
+ >0x58 ulelong >0 \b, %u-bit color
2952
+ # Determine the pixel format.
2953
+ >0x50 ulelong&0x4 4
2954
+ # FIXME: Handle DX10 and XBOX formats.
2955
+ >>0x54 string DX10
2956
+ >>>0x80 use ms-directdraw-dx10
2957
+ >>0x54 string !DX10 \b, compressed using %.4s
2958
+ >0x50 ulelong&0x2 0x2 \b, alpha only
2959
+ >0x50 ulelong&0x200 0x200 \b, YUV
2960
+ >0x50 ulelong&0x20000 0x20000 \b, luminance
2961
+ # RGB pixel format
2962
+ >0x50 ulelong&0x40 0x40
2963
+
2964
+ # Determine the RGB format using the color masks.
2965
+ # ulequad order: 0xGGGGGGGGRRRRRRRR, 0xAAAAAAAABBBBBBBB
2966
+
2967
+ >>0x58 ulelong 16
2968
+
2969
+ # NOTE: 15-bit color formats usually have 16-bit listed as the color depth.
2970
+ >>>0x5C ulequad 0x000003E000007C00
2971
+ >>>>0x64 ulequad 0x000000000000001F \b, RGB555
2972
+ >>>0x5C ulequad 0x000003E000001F00
2973
+ >>>>0x64 ulequad 0x000000000000007C \b, BGR555
2974
+
2975
+ >>>0x5C ulequad 0x000007E00000F800
2976
+ >>>>0x64 ulequad 0x000000000000001F \b, RGB565
2977
+ >>>0x5C ulequad 0x000007E000001F00
2978
+ >>>>0x64 ulequad 0x00000000000000F8 \b, BGR565
2979
+
2980
+ >>>0x5C ulequad 0x000000F000000F00
2981
+ >>>>0x64 ulequad 0x0000F0000000000F \b, ARGB4444
2982
+ >>>0x5C ulequad 0x000000F00000000F
2983
+ >>>>0x64 ulequad 0x0000F00000000F00 \b, ABGR4444
2984
+
2985
+ >>>0x5C ulequad 0x00000F000000F000
2986
+ >>>>0x64 ulequad 0x0000000F000000F0 \b, RGBA4444
2987
+ >>>0x5C ulequad 0x00000F00000000F0
2988
+ >>>>0x64 ulequad 0x0000000F0000F000 \b, BGRA4444
2989
+
2990
+ >>>0x5C ulequad 0x000000F000000F00
2991
+ >>>>0x64 ulequad 0x000000000000000F \b, xRGB4444
2992
+ >>>0x5C ulequad 0x000000F00000000F
2993
+ >>>>0x64 ulequad 0x0000000000000F00 \b, xBGR4444
2994
+
2995
+ >>>0x5C ulequad 0x00000F000000F000
2996
+ >>>>0x64 ulequad 0x00000000000000F0 \b, RGBx4444
2997
+ >>>0x5C ulequad 0x00000F00000000F0
2998
+ >>>>0x64 ulequad 0x000000000000F000 \b, BGRx4444
2999
+
3000
+ >>>0x5C ulequad 0x000003E000007C00
3001
+ >>>>0x64 ulequad 0x000080000000001F \b, ARGB1555
3002
+ >>>0x5C ulequad 0x000003E000001F00
3003
+ >>>>0x64 ulequad 0x000080000000007C \b, ABGR1555
3004
+ >>>0x5C ulequad 0x000007C00000F800
3005
+ >>>>0x64 ulequad 0x000000010000003E \b, RGBA5551
3006
+ >>>0x5C ulequad 0x000007C00000003E
3007
+ >>>>0x64 ulequad 0x000000010000F800 \b, BGRA5551
3008
+
3009
+ >>88 ulelong 24
3010
+ >>>0x5C ulequad 0x0000FF0000FF0000
3011
+ >>>>0x64 ulequad 0x00000000000000FF \b, RGB888
3012
+ >>>0x5C ulequad 0x0000FF00000000FF
3013
+ >>>>0x64 ulequad 0x0000000000FF0000 \b, BGR888
3014
+
3015
+ >>88 ulelong 32
3016
+ >>>0x5C ulequad 0x0000FF0000FF0000
3017
+ >>>>0x64 ulequad 0xFF000000000000FF \b, ARGB8888
3018
+ >>>0x5C ulequad 0x0000FF00000000FF
3019
+ >>>>0x64 ulequad 0xFF00000000FF0000 \b, ABGR8888
3020
+
3021
+ >>>0x5C ulequad 0x00FF0000FF000000
3022
+ >>>>0x64 ulequad 0x000000FF0000FF00 \b, RGBA8888
3023
+ >>>0x5C ulequad 0x00FF00000000FF00
3024
+ >>>>0x64 ulequad 0x000000FFFF000000 \b, BGBA8888
3025
+
3026
+ >>>0x5C ulequad 0x0000FF0000FF0000
3027
+ >>>>0x64 ulequad 0x00000000000000FF \b, xRGB8888
3028
+ >>>0x5C ulequad 0x0000FF00000000FF
3029
+ >>>>0x64 ulequad 0x0000000000FF0000 \b, xBGR8888
3030
+
3031
+ >>>0x5C ulequad 0x00FF0000FF000000
3032
+ >>>>0x64 ulequad 0x000000000000FF00 \b, RGBx8888
3033
+ >>>0x5C ulequad 0x00FF00000000FF00
3034
+ >>>>0x64 ulequad 0x00000000FF000000 \b, BGBx8888
3035
+
3036
+ # Less common 32-bit color formats.
3037
+ >>>0x5C ulequad 0xFFFF00000000FFFF
3038
+ >>>>0x64 ulequad 0x0000000000000000 \b, G16R16
3039
+ >>>0x5C ulequad 0x0000FFFFFFFF0000
3040
+ >>>>0x64 ulequad 0x0000000000000000 \b, R16G16
3041
+
3042
+ >>>0x5C ulequad 0x000FFC003FF00000
3043
+ >>>>0x64 ulequad 0xC0000000000003FF \b, A2R10G10B10
3044
+ >>>0x5C ulequad 0x000FFC00000003FF
3045
+ >>>>0x64 ulequad 0xC00000003FF00000 \b, A2B10G10R10
3046
+
3047
+ # Type: Microsoft DirectDraw Surface
3048
+ # URL: https://msdn.microsoft.com/library/default.asp?url=/library/en-us/directx9_c/directx/graphics/reference/DDSFileReference/ddsfileformat.asp
3049
+ # From: Morten Hustveit <morten@debian.org>
3050
+ # Updated by: David Korth <gerbilsoft@gerbilsoft.com>
3051
+ 0 string/b DDS\040\174\000\000\000 Microsoft DirectDraw Surface (DDS):
3052
+ >0 use ms-directdraw-surface
3053
+
3054
+ # Type: Sega PVR image.
3055
+ # From: David Korth <gerbilsoft@gerbilsoft.com>
3056
+ # References:
3057
+ # - https://fabiensanglard.net/Mykaruga/tools/segaPVRFormat.txt
3058
+ # - https://github.com/yazgoo/pvrx2png
3059
+ # - https://github.com/nickworonekin/puyotools
3060
+
3061
+ # Sega PVR header.
3062
+ 0 name sega-pvr-image-header
3063
+ >0x0C uleshort x %u x
3064
+ >0x0E uleshort x %u
3065
+ # Image format.
3066
+ >0x08 ubyte 0 \b, ARGB1555
3067
+ >0x08 ubyte 1 \b, RGB565
3068
+ >0x08 ubyte 2 \b, ARGB4444
3069
+ >0x08 ubyte 3 \b, YUV442
3070
+ >0x08 ubyte 4 \b, Bump
3071
+ >0x08 ubyte 5 \b, 4bpp
3072
+ >0x08 ubyte 6 \b, 8bpp
3073
+ # Image data type.
3074
+ >0x09 ubyte 0x01 \b, square twiddled
3075
+ >0x09 ubyte 0x02 \b, square twiddled & mipmap
3076
+ >0x09 ubyte 0x03 \b, VQ
3077
+ >0x09 ubyte 0x04 \b, VQ & mipmap
3078
+ >0x09 ubyte 0x05 \b, 8-bit CLUT twiddled
3079
+ >0x09 ubyte 0x06 \b, 4-bit CLUT twiddled
3080
+ >0x09 ubyte 0x07 \b, 8-bit direct twiddled
3081
+ >0x09 ubyte 0x08 \b, 4-bit direct twiddled
3082
+ >0x09 ubyte 0x09 \b, rectangle
3083
+ >0x09 ubyte 0x0B \b, rectangular stride
3084
+ >0x09 ubyte 0x0D \b, rectangular twiddled
3085
+ >0x09 ubyte 0x10 \b, small VQ
3086
+ >0x09 ubyte 0x11 \b, small VQ & mipmap
3087
+ >0x09 ubyte 0x12 \b, square twiddled & mipmap
3088
+
3089
+ # Sega PVR image.
3090
+ 0 string PVRT
3091
+ >0x10 string DDS\040\174\000\000\000 Sega PVR (Xbox) image:
3092
+ >>0x20 use ms-directdraw-surface
3093
+ >0x10 ubelong !0x44445320 Sega PVR image:
3094
+ >>0 use sega-pvr-image-header
3095
+
3096
+ # Sega PVR image with GBIX.
3097
+ 0 string GBIX
3098
+ >0x10 string PVRT
3099
+ >>0x10 string DDS\040\174\000\000\000 Sega PVR (Xbox) image:
3100
+ >>>0x20 use ms-directdraw-surface
3101
+ >>0x10 ubelong !0x44445320 Sega PVR image:
3102
+ >>>0x10 use sega-pvr-image-header
3103
+ >>0x08 ulelong x \b, global index = %u
3104
+
3105
+ # Sega GVR header.
3106
+ 0 name sega-gvr-image-header
3107
+ >0x0C ubeshort x %u x
3108
+ >0x0E ubeshort x %u
3109
+ # Image data format.
3110
+ >0x0B ubyte 0 \b, I4
3111
+ >0x0B ubyte 1 \b, I8
3112
+ >0x0B ubyte 2 \b, IA4
3113
+ >0x0B ubyte 3 \b, IA8
3114
+ >0x0B ubyte 4 \b, RGB565
3115
+ >0x0B ubyte 5 \b, RGB5A3
3116
+ >0x0B ubyte 6 \b, ARGB8888
3117
+ >0x0B ubyte 8 \b, CI4
3118
+ >0x0B ubyte 9 \b, CI8
3119
+ >0x0B ubyte 14 \b, DXT1
3120
+
3121
+ # Sega GVR image.
3122
+ 0 string GVRT Sega GVR image:
3123
+ >0x10 use sega-gvr-image-header
3124
+
3125
+ # Sega GVR image with GBIX.
3126
+ 0 string GBIX
3127
+ >0x10 string GVRT Sega GVR image:
3128
+ >>0x10 use sega-gvr-image-header
3129
+ >>0x08 ubelong x \b, global index = %u
3130
+
3131
+ # Sega GVR image with GCIX. (Wii)
3132
+ 0 string GCIX
3133
+ >0x10 string GVRT Sega GVR image:
3134
+ >>0x10 use sega-gvr-image-header
3135
+ >>0x08 ubelong x \b, global index = %u
3136
+
3137
+ # Light Field Picture
3138
+ # Documentation: http://optics.miloush.net/lytro/TheFileFormat.aspx
3139
+ # Typical file extensions: .lfp .lfr .lfx
3140
+
3141
+ 0 ubelong 0x894C4650
3142
+ >4 ubelong 0x0D0A1A0A
3143
+ >12 ubelong 0x00000000 Lytro Light Field Picture
3144
+ >8 ubelong x \b, version %d
3145
+
3146
+ # Type: Vision Research Phantom CINE Format
3147
+ # URL: https://www.phantomhighspeed.com/
3148
+ # URL2: http://phantomhighspeed.force.com/vriknowledge/servlet/fileField?id=0BEU0000000Cfyk
3149
+ # From: Harry Mallon <hjmallon at gmail.com>
3150
+ #
3151
+ # This has a short "CI" code but the 44 is the size of the struct which is
3152
+ # stable
3153
+ 0 string CI
3154
+ >2 uleshort 44 Vision Research CINE Video,
3155
+ >>4 uleshort 0 Grayscale,
3156
+ >>4 uleshort 1 JPEG Compressed,
3157
+ >>4 uleshort 2 RAW,
3158
+ >>6 uleshort x version %d,
3159
+ >>20 ulelong x %d frames,
3160
+ >>48 ulelong x %dx
3161
+ >>52 ulelong x \b%d
3162
+
3163
+ # Type: ARRI Raw Image
3164
+ # Info: SMPTE RDD30:2014
3165
+ # From: Harry Mallon <hjmallon at gmail.com>
3166
+ 0 string ARRI ARRI ARI image data,
3167
+ >4 ulelong 0x78563412 little-endian,
3168
+ >4 ulelong 0x12345678 big-endian,
3169
+ >12 ulelong x version %d,
3170
+ >20 ulelong x %dx
3171
+ >24 ulelong x \b%d
3172
+
3173
+ # Type: Khronos KTX texture.
3174
+ # From: David Korth <gerbilsoft@gerbilsoft.com>
3175
+ # Reference: https://www.khronos.org/opengles/sdk/tools/KTX/file_format_spec/
3176
+
3177
+ # glEnum decoding.
3178
+ # NOTE: Only the most common formats are listed here.
3179
+ 0 name khronos-ktx-glEnum
3180
+ >0 ulelong 0x1907 \b, RGB
3181
+ >0 ulelong 0x1908 \b, RGBA
3182
+ >0 ulelong 0x1909 \b, LUMINANCE
3183
+ >0 ulelong 0x190A \b, LUMINANCE_ALPHA
3184
+ >0 ulelong 0x80E1 \b, BGR
3185
+ >0 ulelong 0x80E2 \b, BGRA
3186
+ >0 ulelong 0x83A0 \b, RGB_S3TC
3187
+ >0 ulelong 0x83A1 \b, RGB4_S3TC
3188
+ >0 ulelong 0x83A2 \b, RGBA_S3TC
3189
+ >0 ulelong 0x83A3 \b, RGBA4_S3TC
3190
+ >0 ulelong 0x83A4 \b, RGBA_DXT5_S3TC
3191
+ >0 ulelong 0x83A5 \b, RGBA4_DXT5_S3TC
3192
+ >0 ulelong 0x83F0 \b, COMPRESSED_RGB_S3TC_DXT1_EXT
3193
+ >0 ulelong 0x83F1 \b, COMPRESSED_RGBA_S3TC_DXT1_EXT
3194
+ >0 ulelong 0x83F2 \b, COMPRESSED_RGBA_S3TC_DXT3_EXT
3195
+ >0 ulelong 0x83F3 \b, COMPRESSED_RGBA_S3TC_DXT5_EXT
3196
+ >0 ulelong 0x8D64 \b, ETC1_RGB8_OES
3197
+ >0 ulelong 0x9270 \b, COMPRESSED_R11_EAC
3198
+ >0 ulelong 0x9271 \b, COMPRESSED_SIGNED_R11_EAC
3199
+ >0 ulelong 0x9272 \b, COMPRESSED_RG11_EAC
3200
+ >0 ulelong 0x9273 \b, COMPRESSED_SIGNED_RG11_EAC
3201
+ >0 ulelong 0x9274 \b, COMPRESSED_RGB8_ETC2
3202
+ >0 ulelong 0x9275 \b, COMPRESSED_SRGB8_ETC2
3203
+ >0 ulelong 0x9276 \b, COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2
3204
+ >0 ulelong 0x9277 \b, COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2
3205
+ >0 ulelong 0x9278 \b, COMPRESSED_RGBA2_ETC2_EAC
3206
+ >0 ulelong 0x9279 \b, COMPRESSED_SRGB8_ALPHA8_ETC2_EAC
3207
+ >0 ulelong 0x93B0 \b, COMPRESSED_RGBA_ASTC_4x4_KHR
3208
+ >0 ulelong 0x93B1 \b, COMPRESSED_RGBA_ASTC_5x4_KHR
3209
+ >0 ulelong 0x93B2 \b, COMPRESSED_RGBA_ASTC_5x5_KHR
3210
+ >0 ulelong 0x93B3 \b, COMPRESSED_RGBA_ASTC_6x5_KHR
3211
+ >0 ulelong 0x93B4 \b, COMPRESSED_RGBA_ASTC_6x6_KHR
3212
+ >0 ulelong 0x93B5 \b, COMPRESSED_RGBA_ASTC_8x5_KHR
3213
+ >0 ulelong 0x93B6 \b, COMPRESSED_RGBA_ASTC_8x6_KHR
3214
+ >0 ulelong 0x93B7 \b, COMPRESSED_RGBA_ASTC_8x8_KHR
3215
+ >0 ulelong 0x93B8 \b, COMPRESSED_RGBA_ASTC_10x5_KHR
3216
+ >0 ulelong 0x93B9 \b, COMPRESSED_RGBA_ASTC_10x6_KHR
3217
+ >0 ulelong 0x93BA \b, COMPRESSED_RGBA_ASTC_10x8_KHR
3218
+ >0 ulelong 0x93BB \b, COMPRESSED_RGBA_ASTC_10x10_KHR
3219
+ >0 ulelong 0x93BC \b, COMPRESSED_RGBA_ASTC_12x10_KHR
3220
+ >0 ulelong 0x93BD \b, COMPRESSED_RGBA_ASTC_12x12_KHR
3221
+ >0 ulelong 0x93D0 \b, COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR
3222
+ >0 ulelong 0x93D1 \b, COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR
3223
+ >0 ulelong 0x93D2 \b, COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR
3224
+ >0 ulelong 0x93D3 \b, COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR
3225
+ >0 ulelong 0x93D4 \b, COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR
3226
+ >0 ulelong 0x93D5 \b, COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR
3227
+ >0 ulelong 0x93D6 \b, COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR
3228
+ >0 ulelong 0x93D7 \b, COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR
3229
+ >0 ulelong 0x93D8 \b, COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR
3230
+ >0 ulelong 0x93D9 \b, COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR
3231
+ >0 ulelong 0x93DA \b, COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR
3232
+ >0 ulelong 0x93DB \b, COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR
3233
+ >0 ulelong 0x93DC \b, COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR
3234
+ >0 ulelong 0x93DD \b, COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR
3235
+
3236
+ # Endian-specific KTX header.
3237
+ # TODO: glType (all textures I've seen so far are GL_UNSIGNED_BYTE)
3238
+ 0 name khronos-ktx-endian-header
3239
+ >20 ulelong x \b, %u
3240
+ >24 ulelong >1 x %u
3241
+ >28 ulelong >1 x %u
3242
+ >8 ulelong >0
3243
+ >>8 use khronos-ktx-glEnum
3244
+ >8 ulelong 0
3245
+ >>12 use khronos-ktx-glEnum
3246
+
3247
+ # Main KTX header.
3248
+ # Determine endianness, then check the rest of the header.
3249
+ 0 string \xABKTX\ 11\xBB\r\n\x1A\n Khronos KTX texture
3250
+ >12 ulelong 0x04030201 (little-endian)
3251
+ >>16 use khronos-ktx-endian-header
3252
+ >12 ubelong 0x04030201 (big-endian)
3253
+ >>16 use \^khronos-ktx-endian-header
3254
+
3255
+ # Type: Khronos KTX2 texture.
3256
+ # From: David Korth <gerbilsoft@gerbilsoft.com>
3257
+ # Based on draft19.
3258
+ # Reference: http://github.khronos.org/KTX-Specification/
3259
+
3260
+ # Supercompression enum.
3261
+ 0 name khronos-ktx2-supercompression
3262
+ >0 ulelong 1 BasisLZ
3263
+ >0 ulelong 2 Zstandard
3264
+ >0 ulelong 3 ZLIB
3265
+
3266
+ # Vulkan format identifier.
3267
+ # NOTE: Formats prohibited from KTX2 are commented out.
3268
+ 0 name khronos-ktx2-vkFormat
3269
+ >0 ulelong 0 UNDEFINED
3270
+ >0 ulelong 1 R4G4_UNORM_PACK8
3271
+ >0 ulelong 2 R4G4B4A4_UNORM_PACK16
3272
+ >0 ulelong 3 B4G4R4A4_UNORM_PACK16
3273
+ >0 ulelong 4 R5G6B5_UNORM_PACK16
3274
+ >0 ulelong 5 B5G6R5_UNORM_PACK16
3275
+ >0 ulelong 6 R5G5B5A1_UNORM_PACK16
3276
+ >0 ulelong 7 B5G5R5A1_UNORM_PACK16
3277
+ >0 ulelong 8 A1R5G5B5_UNORM_PACK16
3278
+ >0 ulelong 9 R8_UNORM
3279
+ >0 ulelong 10 R8_SNORM
3280
+ #>0 ulelong 11 R8_USCALED
3281
+ #>0 ulelong 12 R8_SSCALED
3282
+ >0 ulelong 13 R8_UINT
3283
+ >0 ulelong 14 R8_SINT
3284
+ >0 ulelong 15 R8_SRGB
3285
+ >0 ulelong 16 R8G8_UNORM
3286
+ >0 ulelong 17 R8G8_SNORM
3287
+ #>0 ulelong 18 R8G8_USCALED
3288
+ #>0 ulelong 19 R8G8_SSCALED
3289
+ >0 ulelong 20 R8G8_UINT
3290
+ >0 ulelong 21 R8G8_SINT
3291
+ >0 ulelong 22 R8G8_SRGB
3292
+ >0 ulelong 23 R8G8B8_UNORM
3293
+ >0 ulelong 24 R8G8B8_SNORM
3294
+ #>0 ulelong 25 R8G8B8_USCALED
3295
+ #>0 ulelong 26 R8G8B8_SSCALED
3296
+ >0 ulelong 27 R8G8B8_UINT
3297
+ >0 ulelong 28 R8G8B8_SINT
3298
+ >0 ulelong 29 R8G8B8_SRGB
3299
+ >0 ulelong 30 B8G8R8_UNORM
3300
+ >0 ulelong 31 B8G8R8_SNORM
3301
+ #>0 ulelong 32 B8G8R8_USCALED
3302
+ #>0 ulelong 33 B8G8R8_SSCALED
3303
+ >0 ulelong 34 B8G8R8_UINT
3304
+ >0 ulelong 35 B8G8R8_SINT
3305
+ >0 ulelong 36 B8G8R8_SRGB
3306
+ >0 ulelong 37 R8G8B8A8_UNORM
3307
+ >0 ulelong 38 R8G8B8A8_SNORM
3308
+ #>0 ulelong 39 R8G8B8A8_USCALED
3309
+ #>0 ulelong 40 R8G8B8A8_SSCALED
3310
+ >0 ulelong 41 R8G8B8A8_UINT
3311
+ >0 ulelong 42 R8G8B8A8_SINT
3312
+ >0 ulelong 43 R8G8B8A8_SRGB
3313
+ >0 ulelong 44 B8G8R8A8_UNORM
3314
+ >0 ulelong 45 B8G8R8A8_SNORM
3315
+ #>0 ulelong 46 B8G8R8A8_USCALED
3316
+ #>0 ulelong 47 B8G8R8A8_SSCALED
3317
+ >0 ulelong 48 B8G8R8A8_UINT
3318
+ >0 ulelong 49 B8G8R8A8_SINT
3319
+ >0 ulelong 50 B8G8R8A8_SRGB
3320
+ #>0 ulelong 51 A8B8G8R8_UNORM_PACK32
3321
+ #>0 ulelong 52 A8B8G8R8_SNORM_PACK32
3322
+ #>0 ulelong 53 A8B8G8R8_USCALED_PACK32
3323
+ #>0 ulelong 54 A8B8G8R8_SSCALED_PACK32
3324
+ #>0 ulelong 55 A8B8G8R8_UINT_PACK32
3325
+ #>0 ulelong 56 A8B8G8R8_SINT_PACK32
3326
+ #>0 ulelong 57 A8B8G8R8_SRGB_PACK32
3327
+ >0 ulelong 58 A2R10G10B10_UNORM_PACK32
3328
+ >0 ulelong 59 A2R10G10B10_SNORM_PACK32
3329
+ #>0 ulelong 60 A2R10G10B10_USCALED_PACK32
3330
+ #>0 ulelong 61 A2R10G10B10_SSCALED_PACK32
3331
+ >0 ulelong 62 A2R10G10B10_UINT_PACK32
3332
+ >0 ulelong 63 A2R10G10B10_SINT_PACK32
3333
+ >0 ulelong 64 A2B10G10R10_UNORM_PACK32
3334
+ >0 ulelong 65 A2B10G10R10_SNORM_PACK32
3335
+ #>0 ulelong 66 A2B10G10R10_USCALED_PACK32
3336
+ #>0 ulelong 67 A2B10G10R10_SSCALED_PACK32
3337
+ >0 ulelong 68 A2B10G10R10_UINT_PACK32
3338
+ >0 ulelong 69 A2B10G10R10_SINT_PACK32
3339
+ >0 ulelong 70 R16_UNORM
3340
+ >0 ulelong 71 R16_SNORM
3341
+ #>0 ulelong 72 R16_USCALED
3342
+ #>0 ulelong 73 R16_SSCALED
3343
+ >0 ulelong 74 R16_UINT
3344
+ >0 ulelong 75 R16_SINT
3345
+ >0 ulelong 76 R16_SFLOAT
3346
+ >0 ulelong 77 R16G16_UNORM
3347
+ >0 ulelong 78 R16G16_SNORM
3348
+ #>0 ulelong 79 R16G16_USCALED
3349
+ #>0 ulelong 80 R16G16_SSCALED
3350
+ >0 ulelong 81 R16G16_UINT
3351
+ >0 ulelong 82 R16G16_SINT
3352
+ >0 ulelong 83 R16G16_SFLOAT
3353
+ >0 ulelong 84 R16G16B16_UNORM
3354
+ >0 ulelong 85 R16G16B16_SNORM
3355
+ #>0 ulelong 86 R16G16B16_USCALED
3356
+ #>0 ulelong 87 R16G16B16_SSCALED
3357
+ >0 ulelong 88 R16G16B16_UINT
3358
+ >0 ulelong 89 R16G16B16_SINT
3359
+ >0 ulelong 90 R16G16B16_SFLOAT
3360
+ >0 ulelong 91 R16G16B16A16_UNORM
3361
+ >0 ulelong 92 R16G16B16A16_SNORM
3362
+ #>0 ulelong 93 R16G16B16A16_USCALED
3363
+ #>0 ulelong 94 R16G16B16A16_SSCALED
3364
+ >0 ulelong 95 R16G16B16A16_UINT
3365
+ >0 ulelong 96 R16G16B16A16_SINT
3366
+ >0 ulelong 97 R16G16B16A16_SFLOAT
3367
+ >0 ulelong 98 R32_UINT
3368
+ >0 ulelong 99 R32_SINT
3369
+ >0 ulelong 100 R32_SFLOAT
3370
+ >0 ulelong 101 R32G32_UINT
3371
+ >0 ulelong 102 R32G32_SINT
3372
+ >0 ulelong 103 R32G32_SFLOAT
3373
+ >0 ulelong 104 R32G32B32_UINT
3374
+ >0 ulelong 105 R32G32B32_SINT
3375
+ >0 ulelong 106 R32G32B32_SFLOAT
3376
+ >0 ulelong 107 R32G32B32A32_UINT
3377
+ >0 ulelong 108 R32G32B32A32_SINT
3378
+ >0 ulelong 109 R32G32B32A32_SFLOAT
3379
+ >0 ulelong 110 R64_UINT
3380
+ >0 ulelong 111 R64_SINT
3381
+ >0 ulelong 112 R64_SFLOAT
3382
+ >0 ulelong 113 R64G64_UINT
3383
+ >0 ulelong 114 R64G64_SINT
3384
+ >0 ulelong 115 R64G64_SFLOAT
3385
+ >0 ulelong 116 R64G64B64_UINT
3386
+ >0 ulelong 117 R64G64B64_SINT
3387
+ >0 ulelong 118 R64G64B64_SFLOAT
3388
+ >0 ulelong 119 R64G64B64A64_UINT
3389
+ >0 ulelong 120 R64G64B64A64_SINT
3390
+ >0 ulelong 121 R64G64B64A64_SFLOAT
3391
+ >0 ulelong 122 B10G11R11_UFLOAT_PACK32
3392
+ >0 ulelong 123 E5B9G9R9_UFLOAT_PACK32
3393
+ >0 ulelong 124 D16_UNORM
3394
+ >0 ulelong 125 X8_D24_UNORM_PACK32
3395
+ >0 ulelong 126 D32_SFLOAT
3396
+ >0 ulelong 127 S8_UINT
3397
+ >0 ulelong 128 D16_UNORM_S8_UINT
3398
+ >0 ulelong 129 D24_UNORM_S8_UINT
3399
+ >0 ulelong 130 D32_SFLOAT_S8_UINT
3400
+
3401
+ >0 ulelong 131 BC1_RGB_UNORM_BLOCK
3402
+ >0 ulelong 132 BC1_RGB_SRGB_BLOCK
3403
+ >0 ulelong 133 BC1_RGBA_UNORM_BLOCK
3404
+ >0 ulelong 134 BC1_RGBA_SRGB_BLOCK
3405
+ >0 ulelong 135 BC2_UNORM_BLOCK
3406
+ >0 ulelong 136 BC2_SRGB_BLOCK
3407
+ >0 ulelong 137 BC3_UNORM_BLOCK
3408
+ >0 ulelong 138 BC3_SRGB_BLOCK
3409
+ >0 ulelong 139 BC4_UNORM_BLOCK
3410
+ >0 ulelong 140 BC4_SNORM_BLOCK
3411
+ >0 ulelong 141 BC5_UNORM_BLOCK
3412
+ >0 ulelong 142 BC5_SNORM_BLOCK
3413
+ >0 ulelong 143 BC6H_UFLOAT_BLOCK
3414
+ >0 ulelong 144 BC6H_SFLOAT_BLOCK
3415
+ >0 ulelong 145 BC7_UNORM_BLOCK
3416
+ >0 ulelong 146 BC7_SRGB_BLOCK
3417
+
3418
+ >0 ulelong 147 ETC2_R8G8B8_UNORM_BLOCK
3419
+ >0 ulelong 148 ETC2_R8G8B8_SRGB_BLOCK
3420
+ >0 ulelong 149 ETC2_R8G8B8A1_UNORM_BLOCK
3421
+ >0 ulelong 150 ETC2_R8G8B8A1_SRGB_BLOCK
3422
+ >0 ulelong 151 ETC2_R8G8B8A8_UNORM_BLOCK
3423
+ >0 ulelong 152 ETC2_R8G8B8A8_SRGB_BLOCK
3424
+
3425
+ >0 ulelong 153 EAC_R11_UNORM_BLOCK
3426
+ >0 ulelong 154 EAC_R11_SNORM_BLOCK
3427
+ >0 ulelong 155 EAC_R11G11_UNORM_BLOCK
3428
+ >0 ulelong 156 EAC_R11G11_SNORM_BLOCK
3429
+
3430
+ >0 ulelong 157 ASTC_4x4_UNORM_BLOCK
3431
+ >0 ulelong 158 ASTC_4x4_SRGB_BLOCK
3432
+ >0 ulelong 159 ASTC_5x4_UNORM_BLOCK
3433
+ >0 ulelong 160 ASTC_5x4_SRGB_BLOCK
3434
+ >0 ulelong 161 ASTC_5x5_UNORM_BLOCK
3435
+ >0 ulelong 162 ASTC_5x5_SRGB_BLOCK
3436
+ >0 ulelong 163 ASTC_6x5_UNORM_BLOCK
3437
+ >0 ulelong 164 ASTC_6x5_SRGB_BLOCK
3438
+ >0 ulelong 165 ASTC_6x6_UNORM_BLOCK
3439
+ >0 ulelong 166 ASTC_6x6_SRGB_BLOCK
3440
+ >0 ulelong 167 ASTC_8x5_UNORM_BLOCK
3441
+ >0 ulelong 168 ASTC_8x5_SRGB_BLOCK
3442
+ >0 ulelong 169 ASTC_8x6_UNORM_BLOCK
3443
+ >0 ulelong 170 ASTC_8x6_SRGB_BLOCK
3444
+ >0 ulelong 171 ASTC_8x8_UNORM_BLOCK
3445
+ >0 ulelong 172 ASTC_8x8_SRGB_BLOCK
3446
+ >0 ulelong 173 ASTC_10x5_UNORM_BLOCK
3447
+ >0 ulelong 174 ASTC_10x5_SRGB_BLOCK
3448
+ >0 ulelong 175 ASTC_10x6_UNORM_BLOCK
3449
+ >0 ulelong 176 ASTC_10x6_SRGB_BLOCK
3450
+ >0 ulelong 177 ASTC_10x8_UNORM_BLOCK
3451
+ >0 ulelong 178 ASTC_10x8_SRGB_BLOCK
3452
+ >0 ulelong 179 ASTC_10x10_UNORM_BLOCK
3453
+ >0 ulelong 180 ASTC_10x10_SRGB_BLOCK
3454
+ >0 ulelong 181 ASTC_12x10_UNORM_BLOCK
3455
+ >0 ulelong 182 ASTC_12x10_SRGB_BLOCK
3456
+ >0 ulelong 183 ASTC_12x12_UNORM_BLOCK
3457
+ >0 ulelong 184 ASTC_12x12_SRGB_BLOCK
3458
+
3459
+ >0 ulelong 1000156000 G8B8G8R8_422_UNORM
3460
+ >0 ulelong 1000156001 B8G8R8G8_422_UNORM
3461
+ >0 ulelong 1000156002 G8_B8_R8_3PLANE_420_UNORM
3462
+ >0 ulelong 1000156003 G8_B8R8_2PLANE_420_UNORM
3463
+ >0 ulelong 1000156004 G8_B8_R8_3PLANE_422_UNORM
3464
+ >0 ulelong 1000156005 G8_B8R8_2PLANE_422_UNORM
3465
+ >0 ulelong 1000156006 G8_B8_R8_3PLANE_444_UNORM
3466
+ >0 ulelong 1000156007 R10X6_UNORM_PACK16
3467
+ >0 ulelong 1000156008 R10X6G10X6_UNORM_2PACK16
3468
+ >0 ulelong 1000156009 R10X6G10X6B10X6A10X6_UNORM_4PACK16
3469
+ >0 ulelong 1000156010 G10X6B10X6G10X6R10X6_422_UNORM_4PACK16
3470
+ >0 ulelong 1000156011 B10X6G10X6R10X6G10X6_422_UNORM_4PACK16
3471
+ >0 ulelong 1000156012 G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16
3472
+ >0 ulelong 1000156013 G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16
3473
+ >0 ulelong 1000156014 G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16
3474
+ >0 ulelong 1000156015 G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16
3475
+ >0 ulelong 1000156016 G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16
3476
+ >0 ulelong 1000156017 R12X4_UNORM_PACK16
3477
+ >0 ulelong 1000156018 R12X4G12X4_UNORM_2PACK16
3478
+ >0 ulelong 1000156019 R12X4G12X4B12X4A12X4_UNORM_4PACK16
3479
+ >0 ulelong 1000156020 G12X4B12X4G12X4R12X4_422_UNORM_4PACK16
3480
+ >0 ulelong 1000156021 B12X4G12X4R12X4G12X4_422_UNORM_4PACK16
3481
+ >0 ulelong 1000156022 G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16
3482
+ >0 ulelong 1000156023 G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16
3483
+ >0 ulelong 1000156024 G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16
3484
+ >0 ulelong 1000156025 G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16
3485
+ >0 ulelong 1000156026 G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16
3486
+ >0 ulelong 1000156027 G16B16G16R16_422_UNORM
3487
+ >0 ulelong 1000156028 B16G16R16G16_422_UNORM
3488
+ >0 ulelong 1000156029 G16_B16_R16_3PLANE_420_UNORM
3489
+ >0 ulelong 1000156030 G16_B16R16_2PLANE_420_UNORM
3490
+ >0 ulelong 1000156031 G16_B16_R16_3PLANE_422_UNORM
3491
+ >0 ulelong 1000156032 G16_B16R16_2PLANE_422_UNORM
3492
+ >0 ulelong 1000156033 G16_B16_R16_3PLANE_444_UNORM
3493
+
3494
+ >0 ulelong 1000054000 PVRTC1_2BPP_UNORM_BLOCK_IMG
3495
+ >0 ulelong 1000054001 PVRTC1_4BPP_UNORM_BLOCK_IMG
3496
+ >0 ulelong 1000054002 PVRTC2_2BPP_UNORM_BLOCK_IMG
3497
+ >0 ulelong 1000054003 PVRTC2_4BPP_UNORM_BLOCK_IMG
3498
+ >0 ulelong 1000054004 PVRTC1_2BPP_SRGB_BLOCK_IMG
3499
+ >0 ulelong 1000054005 PVRTC1_4BPP_SRGB_BLOCK_IMG
3500
+ >0 ulelong 1000054006 PVRTC2_2BPP_SRGB_BLOCK_IMG
3501
+ >0 ulelong 1000054007 PVRTC2_4BPP_SRGB_BLOCK_IMG
3502
+
3503
+ >0 ulelong 1000066000 ASTC_4x4_SFLOAT_BLOCK_EXT
3504
+ >0 ulelong 1000066001 ASTC_5x4_SFLOAT_BLOCK_EXT
3505
+ >0 ulelong 1000066002 ASTC_5x5_SFLOAT_BLOCK_EXT
3506
+ >0 ulelong 1000066003 ASTC_6x5_SFLOAT_BLOCK_EXT
3507
+ >0 ulelong 1000066004 ASTC_6x6_SFLOAT_BLOCK_EXT
3508
+ >0 ulelong 1000066005 ASTC_8x5_SFLOAT_BLOCK_EXT
3509
+ >0 ulelong 1000066006 ASTC_8x6_SFLOAT_BLOCK_EXT
3510
+ >0 ulelong 1000066007 ASTC_8x8_SFLOAT_BLOCK_EXT
3511
+ >0 ulelong 1000066008 ASTC_10x5_SFLOAT_BLOCK_EXT
3512
+ >0 ulelong 1000066009 ASTC_10x6_SFLOAT_BLOCK_EXT
3513
+ >0 ulelong 1000066010 ASTC_10x8_SFLOAT_BLOCK_EXT
3514
+ >0 ulelong 1000066011 ASTC_10x10_SFLOAT_BLOCK_EXT
3515
+ >0 ulelong 1000066012 ASTC_12x10_SFLOAT_BLOCK_EXT
3516
+ >0 ulelong 1000066013 ASTC_12x12_SFLOAT_BLOCK_EXT
3517
+
3518
+ # Main KTX2 header.
3519
+ 0 string \xABKTX\ 20\xBB\r\n\x1A\n Khronos KTX2 texture
3520
+ >20 ulelong x \b, %u
3521
+ >24 ulelong >1 x %u
3522
+ >28 ulelong >1 x %u
3523
+ >32 ulelong >1 \b, %u layers
3524
+ >36 ulelong >1 \b, %u faces
3525
+ >40 ulelong >1 \b, %u mipmaps
3526
+ >44 ulelong >0 \b,
3527
+ >>44 use khronos-ktx2-supercompression
3528
+ >12 ulelong >0 \b,
3529
+ >>12 use khronos-ktx2-vkFormat
3530
+
3531
+ # Type: Valve VTF texture.
3532
+ # From: David Korth <gerbilsoft@gerbilsoft.com>
3533
+ # References:
3534
+ # - https://developer.valvesoftware.com/wiki/Valve_Texture_Format
3535
+
3536
+ # VTF image formats.
3537
+ 0 name vtf-image-format
3538
+ >0 ulelong 0 RGBA8888
3539
+ >0 ulelong 1 ABGR8888
3540
+ >0 ulelong 2 RGB888
3541
+ >0 ulelong 3 BGR888
3542
+ >0 ulelong 4 RGB565
3543
+ >0 ulelong 5 I8
3544
+ >0 ulelong 6 IA88
3545
+ >0 ulelong 7 P8
3546
+ >0 ulelong 8 A8
3547
+ >0 ulelong 9 RGB888 (bluescreen)
3548
+ >0 ulelong 10 BGR888 (bluescreen)
3549
+ >0 ulelong 11 ARGB8888
3550
+ >0 ulelong 12 BGRA8888
3551
+ >0 ulelong 13 DXT1
3552
+ >0 ulelong 14 DXT3
3553
+ >0 ulelong 15 DXT5
3554
+ >0 ulelong 16 BGRx8888
3555
+ >0 ulelong 17 BGR565
3556
+ >0 ulelong 18 BGRx5551
3557
+ >0 ulelong 19 BGRA4444
3558
+ >0 ulelong 20 DXT1+A1
3559
+ >0 ulelong 21 BGRA5551
3560
+ >0 ulelong 22 UV88
3561
+ >0 ulelong 23 UVWQ8888
3562
+ >0 ulelong 24 RGBA16161616F
3563
+ >0 ulelong 25 RGBA16161616
3564
+ >0 ulelong 26 UVLX8888
3565
+
3566
+ # Main VTF header.
3567
+ 0 string VTF\0 Valve Texture Format
3568
+ >4 ulelong x v%u
3569
+ >8 ulelong x \b.%u
3570
+ >0x10 uleshort x \b, %u
3571
+ >0x12 uleshort >1 x %u
3572
+ >4 lequad 0x0000000700000002
3573
+ >>0x3F uleshort >1 x %u
3574
+ >0x18 uleshort >1 \b, %u frames
3575
+ >0x38 ubyte x \b, mipmaps: %u
3576
+ >0x34 ulelong >-1 \b,
3577
+ >>0x34 use vtf-image-format
3578
+
3579
+ # Type: Valve VTF3 (PS3) texture.
3580
+ # From: David Korth <gerbilsoft@gerbilsoft.com>
3581
+ 0 string VTF3 Valve Texture Format (PS3)
3582
+ >0x14 ubeshort x \b, %u
3583
+ >0x16 ubeshort x \b x %u
3584
+ >0x10 ubelong&0x2000 0 \b, DXT1
3585
+ >0x10 ubelong&0x2000 0x2000 \b, DXT5
3586
+
3587
+ # Type: ASTC texture.
3588
+ # From: David Korth <gerbilsoft@gerbilsoft.com>
3589
+ # References:
3590
+ # - https://stackoverflow.com/questions/22600678/determine-internal-format-of-given-astc-compressed-image-through-its-header
3591
+ # - https://stackoverflow.com/a/22682244
3592
+ 0 ulelong 0x5ca1ab13 ASTC
3593
+ >4 ubyte x %u
3594
+ >5 ubyte x \bx%u
3595
+ >6 ubyte >1 \bx%u
3596
+ # X, Y, and Z dimensions are stored as 24-bit LE.
3597
+ # Pretend it's 32-bit and mask off the high byte.
3598
+ >7 ulelong&0x00FFFFFF x texture, %u
3599
+ >10 ulelong&0x00FFFFFF x x %u
3600
+ >13 ulelong&0x00FFFFFF >1 x %u
3601
+
3602
+ # Zebra Metafile graphic
3603
+ # http://www.fileformat.info/format/zbr/egff.htm
3604
+ 0 ubeshort 0x9a02 Zebra Metafile graphic
3605
+ >2 uleshort 1 (version 1.x)
3606
+ >2 uleshort 2 (version 1.1x or 1.2x)
3607
+ >2 uleshort 3 (version 1.49)
3608
+ >2 uleshort 4 (version 1.50)
3609
+ >4 string x (comment = %s)
3610
+
3611
+ # Microsoft Paint graphic
3612
+ # http://www.fileformat.info/format/mspaint/egff.htm
3613
+ 0 string DanM icrosoft Paint image data (version 1.x)
3614
+ >4 uleshort x (%d
3615
+ >>6 uleshort x x %d)
3616
+ 0 string LinS Microsoft Paint image data (version 2.0)
3617
+ >4 uleshort x (%d
3618
+ >>6 uleshort x x %d)
3619
+
3620
+ # reMarkable tablet internal file format (https://www.remarkable.com/)
3621
+ # https://github.com/ax3l/lines-are-beautiful
3622
+ # https://plasma.ninja/blog/devices/remarkable/binary/format/2017/12/26/\
3623
+ # reMarkable-lines-file-format.html#what-to-do-next
3624
+ # from Axel Huebl
3625
+ 0 string reMarkable
3626
+ >11 string lines
3627
+ >>17 string with
3628
+ >>>22 string selections
3629
+ >>>>33 string and
3630
+ >>>>>37 string layers
3631
+ >>>>>>43 ulelong x reMarkable tablet notebook lines, 1404 x 1872, %x page(s)
3632
+
3633
+ # newer per-page files for the reMarkable
3634
+ 0 string reMarkable
3635
+ >11 string .lines
3636
+ >>18 string file,
3637
+ >>>24 string version=
3638
+ >>>>32 ubyte x reMarkable tablet page (v%c), 1404 x 1872,
3639
+ >>>>>43 ulelong x %d layer(s)
3640
+
3641
+ # Type: PVR3 texture.
3642
+ # From: David Korth <gerbilsoft@gerbilsoft.com>
3643
+ # References:
3644
+ # - http://cdn.imgtec.com/sdk-documentation/PVR+File+Format.Specification.pdf
3645
+
3646
+ # PVR3 pixel formats.
3647
+ 0 name pvr3-pixel-format
3648
+ >0 ulelong 0 PVRTC 2bpp RGB
3649
+ >0 ulelong 1 PVRTC 2bpp RGBA
3650
+ >0 ulelong 2 PVRTC 4bpp RGB
3651
+ >0 ulelong 3 PVRTC 4bpp RGBA
3652
+ >0 ulelong 4 PVRTC-II 2bpp
3653
+ >0 ulelong 5 PVRTC-II 4bpp
3654
+ >0 ulelong 6 ETC1
3655
+ >0 ulelong 7 DXT1
3656
+ >0 ulelong 8 DXT2
3657
+ >0 ulelong 9 DXT3
3658
+ >0 ulelong 10 DXT4
3659
+ >0 ulelong 11 DXT5
3660
+ >0 ulelong 12 BC4
3661
+ >0 ulelong 13 BC5
3662
+ >0 ulelong 14 BC6
3663
+ >0 ulelong 15 BC7
3664
+ >0 ulelong 16 UYVY
3665
+ >0 ulelong 17 YUY2
3666
+ >0 ulelong 18 BW1bpp
3667
+ >0 ulelong 19 R9G9B9E5 Shared Exponent
3668
+ >0 ulelong 20 RGBG8888
3669
+ >0 ulelong 21 GRGB8888
3670
+ >0 ulelong 22 ETC2 RGB
3671
+ >0 ulelong 23 ETC2 RGBA
3672
+ >0 ulelong 24 ETC2 RGB A1
3673
+ >0 ulelong 25 EAC R11
3674
+ >0 ulelong 26 EAC RG11
3675
+ >0 ulelong 27 ASTC_4x4
3676
+ >0 ulelong 28 ASTC_5x4
3677
+ >0 ulelong 29 ASTC_5x5
3678
+ >0 ulelong 30 ASTC_6x5
3679
+ >0 ulelong 31 ASTC_6x6
3680
+ >0 ulelong 32 ASTC_8x5
3681
+ >0 ulelong 33 ASTC_8x6
3682
+ >0 ulelong 34 ASTC_8x8
3683
+ >0 ulelong 35 ASTC_10x5
3684
+ >0 ulelong 36 ASTC_10x6
3685
+ >0 ulelong 37 ASTC_10x8
3686
+ >0 ulelong 38 ASTC_10x10
3687
+ >0 ulelong 39 ASTC_12x10
3688
+ >0 ulelong 40 ASTC_12x12
3689
+ >0 ulelong 41 ASTC_3x3x3
3690
+ >0 ulelong 42 ASTC_4x3x3
3691
+ >0 ulelong 43 ASTC_4x4x3
3692
+ >0 ulelong 44 ASTC_4x4x4
3693
+ >0 ulelong 45 ASTC_5x4x4
3694
+ >0 ulelong 46 ASTC_5x5x4
3695
+ >0 ulelong 47 ASTC_5x5x5
3696
+ >0 ulelong 48 ASTC_6x5x5
3697
+ >0 ulelong 49 ASTC_6x6x5
3698
+ >0 ulelong 50 ASTC_6x6x6
3699
+
3700
+ 0 string PVR\x03 PowerVR 3.0 texture:
3701
+ >0x18 ulelong x %u x
3702
+ >0x1C ulelong x %u
3703
+ >0x20 ulelong >1 x %u
3704
+ >0x08 ubyte x \b,
3705
+ >0x0C ulelong 0
3706
+ >>0x08 use pvr3-pixel-format
3707
+ >0x0C ulelong !0
3708
+ >>0x08 ubyte !0 %c
3709
+ >>>0x0C ubyte !0 \b%u
3710
+ >>0x09 ubyte !0 \b%c
3711
+ >>>0x0D ubyte !0 \b%u
3712
+ >>0x0A ubyte !0 \b%c
3713
+ >>>0x0E ubyte !0 \b%u
3714
+ >>0x0B ubyte !0 \b%c
3715
+ >>>0x0F ubyte !0 \b%u
3716
+ >0x10 ulelong 1 \b, sRGB
3717
+ >0x04 ulelong&0x02 0x02 \b, premultiplied alpha
3718
+
3719
+ 0 string \x03RVP PowerVR 3.0 texture: BE,
3720
+ >0x18 ubelong x %u x
3721
+ >0x1C ubelong x %u
3722
+ >0x20 ubelong >1 x %u
3723
+ >0x08 ubyte x \b,
3724
+ >0x0C ubelong 0
3725
+ >>0x08 use pvr3-pixel-format
3726
+ >0x0C ubelong !0
3727
+ >>0x0B ubyte !0 %c
3728
+ >>>0x0F ubyte !0 \b%u
3729
+ >>0x0A ubyte !0 \b%c
3730
+ >>>0x0E ubyte !0 \b%u
3731
+ >>0x09 ubyte !0 \b%c
3732
+ >>>0x0D ubyte !0 \b%u
3733
+ >>0x08 ubyte !0 \b%c
3734
+ >>>0x0C ubyte !0 \b%u
3735
+ >0x10 ubelong 1 \b, sRGB
3736
+ >0x04 ubelong&0x02 0x02 \b, premultiplied alpha
3737
+
3738
+ # Type: Microsoft Xbox XPR0 texture.
3739
+ # From: David Korth <gerbilsoft@gerbilsoft.com>
3740
+ # References:
3741
+ # - https://github.com/Cxbx-Reloaded/Cxbx-Reloaded/blob/develop/src/core/hle/D3D8/XbD3D8Types.h
3742
+
3743
+ # XPR pixel formats.
3744
+ 0 name xbox-xpr-pixel-format
3745
+ >0 ubyte 0x00 L8
3746
+ >0 ubyte 0x01 AL8
3747
+ >0 ubyte 0x02 ARGB1555
3748
+ >0 ubyte 0x03 RGB555
3749
+ >0 ubyte 0x04 ARGB4444
3750
+ >0 ubyte 0x05 RGB565
3751
+ >0 ubyte 0x06 ARGB8888
3752
+ >0 ubyte 0x07 xRGB8888
3753
+ >0 ubyte 0x0B P8
3754
+ >0 ubyte 0x0C DXT1
3755
+ >0 ubyte 0x0E DXT2
3756
+ >0 ubyte 0x0F DXT4
3757
+ >0 ubyte 0x10 Linear ARGB1555
3758
+ >0 ubyte 0x11 Linear RGB565
3759
+ >0 ubyte 0x12 Linear ARGB8888
3760
+ >0 ubyte 0x13 Linear L8
3761
+ >0 ubyte 0x16 Linear R8B8
3762
+ >0 ubyte 0x17 Linear G8B8
3763
+ >0 ubyte 0x19 A8
3764
+ >0 ubyte 0x1A A8L8
3765
+ >0 ubyte 0x1B Linear AL8
3766
+ >0 ubyte 0x1C Linear RGB555
3767
+ >0 ubyte 0x1D Linear ARGB4444
3768
+ >0 ubyte 0x1E Linear xRGB8888
3769
+ >0 ubyte 0x1F Linear A8
3770
+ >0 ubyte 0x20 Linear A8L8
3771
+ >0 ubyte 0x24 YUY2
3772
+ >0 ubyte 0x25 UYVY
3773
+ >0 ubyte 0x27 L6V5U5
3774
+ >0 ubyte 0x28 V8U8
3775
+ >0 ubyte 0x29 R8B8
3776
+ >0 ubyte 0x2A D24S8
3777
+ >0 ubyte 0x2B F24S8
3778
+ >0 ubyte 0x2C D16
3779
+ >0 ubyte 0x2D F16
3780
+ >0 ubyte 0x2E Linear D24S8
3781
+ >0 ubyte 0x2F Linear F24S8
3782
+ >0 ubyte 0x30 Linear D16
3783
+ >0 ubyte 0x31 Linear F16
3784
+ >0 ubyte 0x32 L16
3785
+ >0 ubyte 0x33 V16U16
3786
+ >0 ubyte 0x35 Linear L16
3787
+ >0 ubyte 0x36 Linear V16U16
3788
+ >0 ubyte 0x37 Linear L6V5U5
3789
+ >0 ubyte 0x38 RGBA5551
3790
+ >0 ubyte 0x39 RGBA4444
3791
+ >0 ubyte 0x3A QWVU8888
3792
+ >0 ubyte 0x3B BGRA8888
3793
+ >0 ubyte 0x3C RGBA8888
3794
+ >0 ubyte 0x3D Linear RGBA5551
3795
+ >0 ubyte 0x3E Linear RGBA4444
3796
+ >0 ubyte 0x3F Linear ABGR8888
3797
+ >0 ubyte 0x40 Linear BGRA8888
3798
+ >0 ubyte 0x41 Linear RGBA8888
3799
+ >0 ubyte 0x64 Vertex Data
3800
+
3801
+ 0 string XPR0 Microsoft Xbox XPR0 texture
3802
+ >0x19 ubyte x \b, format:
3803
+ >>0x19 use xbox-xpr-pixel-format
3804
+
3805
+ # ILDA Image Data Transfer Format
3806
+ # https://www.ilda.com/resources/StandardsDocs/ILDA_IDTF14_rev011.pdf
3807
+ #
3808
+ # Updated by Chuck Hein (laser@geekdude.com)
3809
+ #
3810
+ 0 string ILDA ILDA Image Data Transfer Format
3811
+ >7 ubyte 0x00 3D Coordinates with Indexed Color
3812
+ >7 ubyte 0x01 2D Coordinates with Indexed Color
3813
+ >7 ubyte 0x02 Color Palette
3814
+ >7 ubyte 0x04 3D Coordinates with True Color
3815
+ >7 ubyte 0x05 2D Coordinates with True Color
3816
+ >8 string >0 \b, palette %s
3817
+ >16 string >0 \b, company %s
3818
+ >24 ubeshort >0 \b, number of records %d
3819
+ >>26 ubeshort x \b, palette number %d
3820
+ >>28 ubeshort >0 \b, number of frames %d
3821
+ >>30 ubyte >0 \b, projector number %d
3822
+
3823
+ # Dropbox "lepton" compressed jpeg format
3824
+ # https://github.com/dropbox/lepton
3825
+ 0 ubelong&0xfffff0ff 0xcf84005a Lepton image file
3826
+ >2 ubyte x (version %d)
3827
+
3828
+ # Apple QuickTake camera raw images
3829
+ # https://en.wikipedia.org/wiki/Apple_QuickTake
3830
+ # dcraw can decode them
3831
+ 0 name quicktake
3832
+ >4 ubelong 8
3833
+ >>544 ubeshort x \b, %dx
3834
+ >>546 ubeshort x \b%d
3835
+ >4 ubelong 4
3836
+ >>546 ubeshort x \b, %dx
3837
+ >>544 ubeshort x \b%d
3838
+
3839
+ 0 string qktk Apple QuickTake 100 Raw Image
3840
+ >0 use quicktake
3841
+
3842
+ 0 string qktn
3843
+ >4 ubyte 0 Apple QuickTake 150 Raw Image
3844
+ >4 ubyte >0 Apple QuickTake 200 Raw Image
3845
+ >0 use quicktake
3846
+
3847
+ # From: Joerg Jenderek
3848
+ # URL: http://fileformats.archiveteam.org/wiki/Corel_Photo-Paint_image
3849
+ # Reference: http://blog.argasinski.eu/wp-content/uploads/2011/08/cpt-specification-0.01.pdf
3850
+ 0 string CPT
3851
+ >4 string FILE Corel Photo-Paint image, version
3852
+ # version like 7, 9 or 8
3853
+ >>3 ubyte x %c,
3854
+ !:mime image/x-corel-cpt
3855
+ !:ext cpt
3856
+ # if blocks_array_offset available jump blockNumber*8 bytes
3857
+ >>0x34 ulelong >0
3858
+ >>>(0x28.l*8) ubyte x
3859
+ # jump additional stored blocks_array_offset bytes forward to object block
3860
+ >>>>&(0x34.l-1) ulelong x %u
3861
+ # object height in pixels
3862
+ >>>>>&0 ulelong x x %u
3863
+ # if no blocks_array_offset available jump blockNumber*8 bytes
3864
+ >>0x34 ulelong =0
3865
+ >>>(0x28.l*8) ubyte x
3866
+ # jump additional 0x13C bytes forward to object block
3867
+ >>>>&0x13B ulelong x %u
3868
+ >>>>>&0 ulelong x x %u
3869
+ # image color model used
3870
+ >>0x8 ulelong x
3871
+ >>>0x8 ulelong 0x1 RGB 24 bits
3872
+ >>>0x8 ulelong 0x3 CMYK 24 bits
3873
+ >>>0x8 ulelong 0x5 greyscale 8 bits
3874
+ >>>0x8 ulelong 0x6 black and white 1 bit
3875
+ >>>0x8 ulelong 0xA RGB 8 bits
3876
+ # palette_length number of colors * 3 in case of 8-bit RGB paletted image
3877
+ # 0 otherwise. Allowed values: 0 or [1..256] * 3
3878
+ #>>0xC ulelong >0 \b, palette length %u
3879
+ >>>>0xC ulelong/3 <256 \b, %u colors
3880
+ >>>0x8 ulelong 0xB LAB
3881
+ >>>0x8 ulelong 0xC RGB 48 bits
3882
+ >>>0x8 ulelong 0xE greyscale 16 bits
3883
+ # this should not happen
3884
+ >>>0x8 default x color model
3885
+ >>>>0x8 ulelong x %#x
3886
+ # bit 1 in CPT file flags: UCS-2 file comment present
3887
+ >>0x31 ubyte &0x02
3888
+ # look for comment marker
3889
+ >>>0x100 search/0xc9d \4\2\0\0
3890
+ # UCS-2 file comment
3891
+ >>>>&0 lestring16 x "%s"
3892
+ # if no UCS-2 is present show ANSI file comment[112] if available
3893
+ >>0x31 ubyte&0x02 =0
3894
+ >>>0x3C string >\0 "%-.112s"
3895
+ # reserved seems to be always 0
3896
+ #>>0x10 ulelong >0 \b, reserved1 %u
3897
+ # horizontal real dpi = dpi_h * 25.4 / 10**6
3898
+ >>0x18 ulelong x \b, %u micro dots/mm
3899
+ # image vertical DPI in CPT DPI unit
3900
+ #>>0x1C ulelong x \b, %u micro dots/mm
3901
+ # reserved seems to be always 0
3902
+ #>>0x20 ulelong >0 \b, reserved2 %u
3903
+ #>>0x24 ulelong >0 \b, reserved3 %u
3904
+ # blocks_count; number of CPT_Block blocks. Allowed values: > 0
3905
+ >>0x28 ulelong x \b, %u block
3906
+ # plural s
3907
+ >>0x28 ulelong !1 \bs
3908
+ # CPT file flags
3909
+ # lower byte of CPT file flags: 0x94~CPT9FILE 0x01~often CPT7FILE 0x8C~CPT8FILE
3910
+ #>>0x30 ubyte x \b, lower flags %#x
3911
+ # upper byte of CPT file flags:
3912
+ #>>0x31 ubyte >0 \b, upper flags %#x
3913
+ # bit 2 in CPT file flags: unknown
3914
+ #>>0x31 ubyte &0x04 \b, with UNKNOWN
3915
+ # bits 3-7 in CPT file flags: unknown, seem to be often 0
3916
+ # show unusual flag combinations
3917
+ >>0x31 ubyte&0xFC >0
3918
+ >>>0x30 uleshort x \b, flags %#4.4x
3919
+ # reserved seems to be always 0
3920
+ #>>0x32 uleshort >0 \b, reserved4 %#x
3921
+ # blocks_array_offset is always 0 for CPT7 and CPT8 files created by PP7-PP8
3922
+ # typical values like: 13Ch 154h 43Ch 4F0h DA8h
3923
+ >>0x34 ulelong x \b, array offset %#x
3924
+ # reserved seems to be often 0
3925
+ >>0x38 ulelong >0 \b, reserved5 %#x
3926
+ # possible next master block
3927
+ #>>0x100 ubequad !0 \b, next block=%#llx...
3928
+ # bit 0: ICC profile block present
3929
+ >>0x31 ubyte &0x01 \b, with ICC profile
3930
+ # check for characteristic string acsp of color profile for DEBUGGING
3931
+ #>>>0x178 string x icc=%.4s
3932
+ # display ICC/ICM color profile by ./icc
3933
+ #>>>0x154 use color-profile
3934
+
3935
+ # URL: http://fileformats.archiveteam.org/wiki/CorelDRAW
3936
+ # https://en.wikipedia.org/wiki/CorelDRAW
3937
+ # Reference: http://mark0.net/download/triddefs_xml.7z/defs/c/cdr-gen.trid.xml
3938
+ # Note: called "CorelDRAW drawing (generic)" by TrID
3939
+ # version til 2 WL-based; from version 3 til 13 handled by ./riff and from 14 zip based handled by ./archive
3940
+ 0 ubelong&0xFFffF7ff 0x574C6500 Corel Draw Picture
3941
+ #!:mime image/x-coreldraw
3942
+ !:mime application/vnd.corel-draw
3943
+ !:ext cdr
3944
+ # Reference: http://mark0.net/download/triddefs_xml.7z/defs/c/cdr-corel-10.trid.xml
3945
+ # Note: called "CorelDRAW drawing (v1.0)" by TrID and
3946
+ # "CorelDraw Drawing" with version "1.0" by DROID via PUID fmt/467
3947
+ # only DROID fmt-467-signature-id-726.cdr example
3948
+ >2 ubyte 0x65 \b, version 1.0
3949
+ #>>4 ubelong !0x45000000 \b, at 4 %#8.8x
3950
+ # Reference: http://mark0.net/download/triddefs_xml.7z/defs/c/cdr-corel-20.trid.xml
3951
+ # Note: called "CorelDRAW drawing (v2.0)" by TrID and
3952
+ # "CorelDraw Drawing" with version "2.0" by DROID via PUID fmt/466
3953
+ >2 ubyte 0x6D \b, version 2.0
3954
+ # According to DROID 0xed080000 or 0x25050000
3955
+ #>>4 ubelong !0xed080000
3956
+ #>>>4 ubelong !0x25050000 \b, at 4 %#8.8x
3957
+
3958
+ # Type: Crunch compressed texture.
3959
+ # From: David Korth <gerbilsoft@gerbilsoft.com>
3960
+ # References:
3961
+ # - https://github.com/BinomialLLC/crunch/blob/44c8402e24441c7524ca364941fd224ab3b971e9/inc/crn_decomp.h#L267
3962
+ 0 ubelong 0x4878004A Crunch compressed texture:
3963
+ >0x0C ubeshort x %u x
3964
+ >0x0E ubeshort x %u
3965
+ >0x12 ubyte 0 \b, DXT1
3966
+ >0x12 ubyte 1 \b, DXT3
3967
+ >0x12 ubyte 2 \b, DXT5
3968
+ >0x12 ubyte 3 \b, DXT5 CCxY
3969
+ >0x12 ubyte 4 \b, DXT5 xGxR
3970
+ >0x12 ubyte 5 \b, DXT5 xGBR
3971
+ >0x12 ubyte 6 \b, DXT5 AGBR
3972
+ >0x12 ubyte 7 \b, DXn XY
3973
+ >0x12 ubyte 8 \b, DXn YX
3974
+ >0x12 ubyte 9 \b, DXT5 Alpha
3975
+ >0x12 ubyte 10 \b, ETC1
3976
+ >0x10 ubyte >1 \b, %u images
3977
+ >0x11 ubyte >1 \b, %u faces
3978
+ # TODO: Flags at 0x13? (ubeshort)
3979
+
3980
+ # Type: BasisLZ compressed texture.
3981
+ # From: David Korth <gerbilsoft@gerbilsoft.com>
3982
+ # References:
3983
+ # - https://github.com/BinomialLLC/basis_universal/blob/master/spec/basis_spec.txt
3984
+ 0 uleshort 0x4273
3985
+ >0x04 uleshort 0x4D BasisLZ
3986
+ >>0x02 uleshort x v%x compressed texture:
3987
+ >>0x14 ubyte 0 ETC1S
3988
+ >>0x14 ubyte 1 UASTC 4x4
3989
+ >>0x0E ulelong&0xFFFFFF >1 \b, %u slices
3990
+ >>0x11 ulelong&0xFFFFFF >1 \b, %u images
3991
+ >>0x15 uleshort&0x02 2 \b, Y-flipped
3992
+
3993
+ # MIME registration: https://www.iana.org/assignments/media-types/model/e57
3994
+ # Sample files: http://www.libe57.org/data.html
3995
+ # Reference implementation: http://www.libe57.org/
3996
+ # https://www.ri.cmu.edu/pub_files/2011/1/2011-huber-e57-v3.pdf
3997
+ 0 string ASTM-E57 ASTM E57 three-dimensional model
3998
+ !:mime model/e57
3999
+ !:ext e57
4000
+
4001
+ # QOI [Quite OK Image Format] images
4002
+ # (Horia Mihai David, mihaidavid@posteo.net)
4003
+ #
4004
+ # QOI format by Dominic Szablewski <http://phoboslab.org/>
4005
+ # <https://qoiformat.org/>
4006
+ #
4007
+ # Based on spec v1.0 (2022.01.05) <https://qoiformat.org/qoi-specification.pdf>
4008
+
4009
+ 0 string qoif QOI image data
4010
+ !:ext qoi
4011
+ !:mime image/x-qoi
4012
+ # See <https://github.com/phoboslab/qoi/issues/167>
4013
+ >4 ubelong x %ux
4014
+ >8 ubelong x \b%u,
4015
+ >>13 ubyte 0 s
4016
+ >>>12 ubyte 3 \bRGB
4017
+ >>>12 ubyte 4 \bRGBA
4018
+ >>>12 default x
4019
+ >>>>12 ubyte x \b*bad channels %u*
4020
+ >>>13 ubyte 0 (linear alpha)
4021
+ >>13 ubyte 1
4022
+ >>>12 ubyte 3 RGB
4023
+ >>>12 ubyte 4 RGBA
4024
+ >>>13 ubyte 1 (all channels linear)
4025
+ >>13 default x
4026
+ >>>13 ubyte x *bad colorspace %u*
4027
+
4028
+
4029
+ # Type: Godot 3, 4 texture (pixel format)
4030
+ # From: David Korth <gerbilsoft@gerbilsoft.com>
4031
+ 0 name godot-pixel-format
4032
+ >0 ulelong&0xFFFFF 0 L8
4033
+ >0 ulelong&0xFFFFF 1 LA8
4034
+ >0 ulelong&0xFFFFF 2 R8
4035
+ >0 ulelong&0xFFFFF 3 RG8
4036
+ >0 ulelong&0xFFFFF 4 RGB8
4037
+ >0 ulelong&0xFFFFF 5 RGBA8
4038
+ >0 ulelong&0xFFFFF 6 RGBA4444
4039
+ >0 ulelong&0xFFFFF 7 RGB565
4040
+ >0 ulelong&0xFFFFF 8 RF
4041
+ >0 ulelong&0xFFFFF 9 RGF
4042
+ >0 ulelong&0xFFFFF 10 RGBF
4043
+ >0 ulelong&0xFFFFF 11 RGBAF
4044
+ >0 ulelong&0xFFFFF 12 RH
4045
+ >0 ulelong&0xFFFFF 13 RGH
4046
+ >0 ulelong&0xFFFFF 14 RGBH
4047
+ >0 ulelong&0xFFFFF 15 RGBAH
4048
+ >0 ulelong&0xFFFFF 16 RGBE9995
4049
+ >0 ulelong&0xFFFFF 17 DXT1
4050
+ >0 ulelong&0xFFFFF 18 DXT3
4051
+ >0 ulelong&0xFFFFF 19 DXT5
4052
+ >0 ulelong&0xFFFFF 20 RGTC_R
4053
+ >0 ulelong&0xFFFFF 21 RGTC_RG
4054
+ >0 ulelong&0xFFFFF 22 BPTC_RGBA
4055
+ >0 ulelong&0xFFFFF 23 BPTC_RGBF
4056
+ >0 ulelong&0xFFFFF 24 BPTC_RGBFU
4057
+ >0 ulelong&0xFFFFF 25 PVRTC1_2
4058
+ >0 ulelong&0xFFFFF 26 PVRTC1_2A
4059
+ >0 ulelong&0xFFFFF 27 PVRTC1_4
4060
+ >0 ulelong&0xFFFFF 28 PVRTC1_4A
4061
+ >0 ulelong&0xFFFFF 29 ETC
4062
+ >0 ulelong&0xFFFFF 30 ETC2_R11
4063
+ >0 ulelong&0xFFFFF 31 ETC2_R11S
4064
+ >0 ulelong&0xFFFFF 32 ETC2_RG11
4065
+ >0 ulelong&0xFFFFF 33 ETC2_RG11S
4066
+ >0 ulelong&0xFFFFF 34 ETC2_RGB8
4067
+ >0 ulelong&0xFFFFF 35 ETC2_RGBA8
4068
+ >0 ulelong&0xFFFFF 36 ETC2_RGB8A1
4069
+ >0 ulelong&0xFFFFF 37 ASTC_8x8
4070
+
4071
+ # Type: Godot 3, 4 texture (rescale display, width)
4072
+ # From: David Korth <gerbilsoft@gerbilsoft.com>
4073
+ # Shows rescale value if it's not a power of 2.
4074
+ 0 name godot-rescale-display-w
4075
+ >0 uleshort 0
4076
+ >0 uleshort 1
4077
+ >0 uleshort 2
4078
+ >0 uleshort 4
4079
+ >0 uleshort 8
4080
+ >0 uleshort 16
4081
+ >0 uleshort 32
4082
+ >0 uleshort 64
4083
+ >0 uleshort 128
4084
+ >0 uleshort 256
4085
+ >0 uleshort 512
4086
+ >0 uleshort 1024
4087
+ >0 uleshort 2048
4088
+ >0 uleshort 4096
4089
+ >0 uleshort 8192
4090
+ >0 uleshort 16384
4091
+ >0 uleshort 32768
4092
+ >0 default x
4093
+ >>0 uleshort x (rescale to %u x
4094
+
4095
+ # Type: Godot 3, 4 texture (rescale display, height)
4096
+ # From: David Korth <gerbilsoft@gerbilsoft.com>
4097
+ # Shows rescale value if it's not a power of 2.
4098
+ 0 name godot-rescale-display-h
4099
+ >0 clear x
4100
+ >0 uleshort 0
4101
+ >0 uleshort 1
4102
+ >0 uleshort 2
4103
+ >0 uleshort 4
4104
+ >0 uleshort 8
4105
+ >0 uleshort 16
4106
+ >0 uleshort 32
4107
+ >0 uleshort 64
4108
+ >0 uleshort 128
4109
+ >0 uleshort 256
4110
+ >0 uleshort 512
4111
+ >0 uleshort 1024
4112
+ >0 uleshort 2048
4113
+ >0 uleshort 4096
4114
+ >0 uleshort 8192
4115
+ >0 uleshort 16384
4116
+ >0 uleshort 32768
4117
+ >0 default x
4118
+ >>0 uleshort x %u)
4119
+
4120
+ # Type: Godot 3 texture
4121
+ # From: David Korth <gerbilsoft@gerbilsoft.com>
4122
+ # References:
4123
+ # - https://github.com/godotengine/godot/blob/3.3/core/image.h
4124
+ # - https://github.com/godotengine/godot/blob/3.3/scene/resources/texture.cpp
4125
+ # - https://github.com/godotengine/godot/blob/3.3/scene/resources/texture.h
4126
+ # TODO: Don't show "rescale to" if it matches the image size.
4127
+ 0 string GDST Godot 3 texture:
4128
+ !:ext stex
4129
+ !:mime image/x-godot-stex
4130
+ >4 uleshort x %u x
4131
+ >8 uleshort x %u
4132
+ >6 uleshort 0 \b,
4133
+ >6 uleshort !0
4134
+ >>6 use godot-rescale-display-w
4135
+ >>10 use godot-rescale-display-h
4136
+ >>10 uleshort x \b,
4137
+ >16 ulelong&0x800000 !0 has mipmaps,
4138
+ >16 ulelong&0x100000 0x100000 lossless encoding
4139
+ >16 ulelong&0x200000 0x200000 lossy encoding
4140
+ >16 ulelong&0x300000 0
4141
+ >>16 use godot-pixel-format
4142
+
4143
+ # Type: Godot 4 texture
4144
+ # From: David Korth <gerbilsoft@gerbilsoft.com>
4145
+ # References:
4146
+ # - https://github.com/godotengine/godot/blob/master/core/io/image.h
4147
+ # - https://github.com/godotengine/godot/blob/master/scene/resources/texture.cpp
4148
+ # - https://github.com/godotengine/godot/blob/master/scene/resources/texture.h
4149
+ # TODO: Don't show "rescale to" if it matches the image size.
4150
+ 0 string GST2 Godot 4 texture
4151
+ !:ext stex
4152
+ !:mime image/x-godot-stex
4153
+ >4 ulelong x v%u:
4154
+ >0x28 uleshort x %u x
4155
+ >0x2A uleshort x %u
4156
+ >8 use godot-rescale-display-w
4157
+ >12 use godot-rescale-display-h
4158
+ >12 uleshort x \b,
4159
+ >0x2C ulelong >1 %u mipmaps,
4160
+ >0x30 use godot-pixel-format
4161
+ >0x24 ulelong 1 \b, embedded PNG image
4162
+ >0x24 ulelong 2 \b, embedded WebP image
4163
+ >0x24 ulelong 3 \b, Basis Universal
4164
+
4165
+ # Summary: iCEDraw graphic *.IDF
4166
+ # URL: http://fileformats.archiveteam.org/wiki/ICEDraw
4167
+ # Reference: http://mark0.net/download/triddefs_xml.7z/defs/i/idf-icedraw.trid.xml
4168
+ # From: Joerg Jenderek
4169
+ # Note: called "iCEDraw graphic" by TrID, "iCEDraw text" by FFmpeg and "iCE Draw" by Ansilove
4170
+ # verified by FFmpeg command `ffprobe ICE-9605.IDF` and `ansilove -s SQ-FORCE.IDF`
4171
+ 0 string \0041.4\0\0\0\0O\0 iCEDraw graphic
4172
+ #!:mime application/octet-stream
4173
+ !:mime image/x-idf
4174
+ !:ext idf
4175
+
4176
+ # Type: ColoRIX VGA Paint Image File (.rix/.sci/.scX)
4177
+ # From: Eddy Jansson <github.com/eloj>
4178
+ # Reference: https://www.fileformat.info/format/rix/spec/
4179
+ #
4180
+ 0 name rix-header
4181
+ >0 uleshort x \b, %u x
4182
+ >2 uleshort x %u
4183
+ # palette type:
4184
+ # .. if direct color, low bits encode bpp
4185
+ >4 ubyte&128 0
4186
+ >>4 ubyte&127 x \b %u bpp (direct color)
4187
+ # .. else palette
4188
+ >4 ubyte&128 128
4189
+ >>4 ubyte&7 0 \b x 2
4190
+ >>4 ubyte&7 1 \b x 4
4191
+ >>4 ubyte&7 2 \b x 8
4192
+ >>4 ubyte&7 3 \b x 16
4193
+ >>4 ubyte&7 4 \b x 32
4194
+ >>4 ubyte&7 5 \b x 64
4195
+ >>4 ubyte&7 6 \b x 128
4196
+ >>4 ubyte&7 7 \b x 256
4197
+ # storage type
4198
+ #>5 ubyte&15 0 \b, Linear
4199
+ >5 ubyte&15 1 \b, Planar (0213)
4200
+ >5 ubyte&15 2 \b, Planar
4201
+ >5 ubyte&15 3 \b, Text
4202
+ >5 ubyte&15 4 \b, Planar lines
4203
+ >5 ubyte&128 128 \b (compressed)
4204
+ >5 ubyte&64 64 \b (extension)
4205
+ >5 ubyte&32 32 \b (encrypted)
4206
+
4207
+ 0 string RIX3 ColoRIX Image
4208
+ >4 use rix-header
4209
+
4210
+ 0 string RIX7 ColoRIX Slideshow