xref: /freebsd/contrib/file/magic/Magdir/images (revision 324cdd9320f58837c2fbaa7f6ceb9ea5c33d5b2a)
1
2#------------------------------------------------------------------------------
3# $File: images,v 1.160 2019/04/19 00:42:27 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
290	ubequad&0x00FeC400000000C0	0
30# Prevent conflicts with CRI ADX.
31>(2.S-2) belong	!0x28632943
32# skip more garbage like *.iso by looking for positive image type
33>>2	ubyte			>0
34# skip some compiled terminfo like xterm+tmux by looking for image type less equal 33
35>>>2	ubyte			<34
36# skip arches.3200 , Finder.Root , Slp.1 by looking for low pixel depth 1 8 15 16 24 32
37>>>>16	ubyte			1
38>>>>>0		use		tga-image
39>>>>16	ubyte			8
40>>>>>0		use		tga-image
41>>>>16	ubyte			15
42>>>>>0		use		tga-image
43>>>>16	ubyte			16
44>>>>>0		use		tga-image
45>>>>16	ubyte			24
46>>>>>0		use		tga-image
47>>>>16	ubyte			32
48>>>>>0		use		tga-image
49#	display tga bitmap image information
500	name				tga-image
51>2	ubyte		<34		Targa image data
52!:mime	image/x-tga
53!:apple	????TPIC
54# normal extension .tga but some Truevision products used others:
55# tpic (Apple),icb (Image Capture Board),vda (Video Display Adapter),vst (NuVista),win (UNSURE about that)
56!:ext	tga/tpic/icb/vda/vst
57# image type 1 2 3 9 10 11 32 33
58>2	ubyte&0xF7	1		- Map
59>2	ubyte&0xF7	2		- RGB
60# alpha channel
61>>17	ubyte&0x0F	>0		\bA
62>2	ubyte&0xF7	3		- Mono
63# type not found, but by http://www.fileformat.info/format/tga/corion.htm
64# Compressed color-mapped data, using Huffman, Delta, and runlength encoding
65>2	ubyte		32		- Color
66# Compressed color-mapped data, using Huffman, Delta, and RLE. 4-pass quadtree- type process
67>2	ubyte		33		- Color
68# Color Map Type 0~no 1~color map
69>1	ubyte		1		(
70# first color map entry, 0 normal
71>>3	uleshort	>0		\b%d-
72# color map length 0 2 1dh 3bh d9h 100h
73>>5	uleshort	x		\b%d)
74# 8~run length encoding bit
75>2	ubyte&0x08	8		- RLE
76# gimp can create big pictures!
77>12	uleshort	>0		%d x
78>12	uleshort	=0		65536 x
79# image height. 0 interpreted as 65536
80>14	uleshort	>0		%d
81>14	uleshort	=0		65536
82# Image Pixel depth 1 8 15 16 24 32
83>16	ubyte		x		x %d
84# X origin of image. 0 normal
85>8	uleshort	>0		+%d
86# Y origin of image. 0 normal; positive for top
87>10	uleshort	>0		+%d
88# Image descriptor: bits 3-0 give the alpha channel depth, bits 5-4 give direction
89>17	ubyte&0x0F	>0		- %d-bit alpha
90# bits 5-4 give direction. normal bottom left
91>17	ubyte		&0x20		- top
92#>17	ubyte		^0x20		- bottom
93>17	ubyte		&0x10		- right
94#>17	ubyte		^0x10		- left
95# some info say other bits 6-7 should be zero
96# but data storage interleave by http://www.fileformat.info/format/tga/corion.htm
97# 00 - no interleave;01 - even/odd interleave; 10 - four way interleave; 11 - reserved
98#>17	ubyte&0xC0	0x00		- no interleave
99>17	ubyte&0xC0	0x40		- interleave
100>17	ubyte&0xC0	0x80		- four way interleave
101>17	ubyte&0xC0	0xC0		- reserved
102# positive length implies identification field
103>0	ubyte		>0
104>>18	string		x		"%s"
105# last 18 bytes of newer tga file footer signature
106>18	search/4261301/s	TRUEVISION-XFILE.\0
107# extension area offset if not 0
108>>&-8		ulelong			>0
109# length of the extension area. normal 495 for version 2.0
110>>>(&-4.l)	uleshort		0x01EF
111# AuthorName[41]
112>>>>&0		string			>\0		- author "%-.40s"
113# Comment[324]=4 * 80 null terminated
114>>>>&41		string			>\0		- comment "%-.80s"
115# date
116>>>>&365	ubequad&0xffffFFFFffff0000	!0
117# Day
118>>>>>&-6		uleshort		x		%d
119# Month
120>>>>>&-8		uleshort		x		\b-%d
121# Year
122>>>>>&-4		uleshort		x		\b-%d
123# time
124>>>>&371	ubequad&0xffffFFFFffff0000	!0
125# hour
126>>>>>&-8		uleshort		x		%d
127# minutes
128>>>>>&-6		uleshort		x		\b:%.2d
129# second
130>>>>>&-4		uleshort		x		\b:%.2d
131# JobName[41]
132>>>>&377		string			>\0		- job "%-.40s"
133# JobHour Jobminute Jobsecond
134>>>>&418	ubequad&0xffffFFFFffff0000	!0
135>>>>>&-8		uleshort		x		%d
136>>>>>&-6		uleshort		x		\b:%.2d
137>>>>>&-4		uleshort		x		\b:%.2d
138# SoftwareId[41]
139>>>>&424		string			>\0		- %-.40s
140# SoftwareVersionNumber
141>>>>&424	ubyte				>0
142>>>>>&40		uleshort/100		x		%d
143>>>>>&40		uleshort%100		x		\b.%d
144# VersionLetter
145>>>>>&42		ubyte			>0x20		\b%c
146# KeyColor
147>>>>&468		ulelong			>0		- keycolor 0x%8.8x
148# Denominator of Pixel ratio. 0~no pixel aspect
149>>>>&474	uleshort			>0
150# Numerator
151>>>>>&-4		uleshort		>0		- aspect %d
152>>>>>&-2		uleshort		x		\b/%d
153# Denominator of Gamma ratio. 0~no Gamma value
154>>>>&478	uleshort			>0
155# Numerator
156>>>>>&-4		uleshort		>0		- gamma %d
157>>>>>&-2		uleshort		x		\b/%d
158# ColorOffset
159#>>>>&480	ulelong			x		- col offset 0x%8.8x
160# StampOffset
161#>>>>&484	ulelong			x		- stamp offset 0x%8.8x
162# ScanOffset
163#>>>>&488	ulelong			x		- scan offset 0x%8.8x
164# AttributesType
165#>>>>&492	ubyte			x		- Attributes 0x%x
166## EndOfTGA
167
168# PBMPLUS images
169# The next byte following the magic is always whitespace.
170# strength is changed to try these patterns before "x86 boot sector"
1710	name		netpbm
172>3	regex/s		=[0-9]{1,50}\ [0-9]{1,50}	Netpbm image data
173>>&0	regex		=[0-9]{1,50} 			\b, size = %s x
174>>>&0	regex		=[0-9]{1,50}			\b %s
175
1760	search/1	P1
177>0	regex/4		P1[\040\t\f\r\n]
178>>0	use		netpbm
179>>0	string		x	\b, bitmap
180!:strength + 65
181!:mime	image/x-portable-bitmap
182
1830	search/1	P2
184>0	regex/4		P2[\040\t\f\r\n]
185>>0	use		netpbm
186>>0	string		x	\b, greymap
187!:strength + 65
188!:mime	image/x-portable-greymap
189
1900	search/1	P3
191>0	regex/4		P3[\040\t\f\r\n]
192>>0	use		netpbm
193>>0	string		x	\b, pixmap
194!:strength + 65
195!:mime	image/x-portable-pixmap
196
1970	string		P4
198>0	regex/4		P4[\040\t\f\r\n]
199>>0	use		netpbm
200>>0	string		x	\b, rawbits, bitmap
201!:strength + 65
202!:mime	image/x-portable-bitmap
203
2040	string		P5
205>0	regex/4		P5[\040\t\f\r\n]
206>>0	use		netpbm
207>>0	string		x	\b, rawbits, greymap
208!:strength + 65
209!:mime	image/x-portable-greymap
210
2110	string		P6
212>0	regex/4		P6[\040\t\f\r\n]
213>>0	use		netpbm
214>>0	string		x	\b, rawbits, pixmap
215!:strength + 65
216!:mime	image/x-portable-pixmap
217
2180	string		P7		Netpbm PAM image file
219!:mime	image/x-portable-pixmap
220
221# From: bryanh@giraffe-data.com (Bryan Henderson)
2220	string		\117\072	Solitaire Image Recorder format
223>4	string		\013		MGI Type 11
224>4	string		\021		MGI Type 17
2250	string		.MDA		MicroDesign data
226>21	byte		48		version 2
227>21	byte		51		version 3
2280	string		.MDP		MicroDesign page data
229>21	byte		48		version 2
230>21	byte		51		version 3
231
232# NIFF (Navy Interchange File Format, a modification of TIFF) images
233# [GRR:  this *must* go before TIFF]
2340	string		IIN1		NIFF image data
235!:mime	image/x-niff
236
237# Canon RAW version 1 (CRW) files are a type of Canon Image File Format
238# (CIFF) file. These are apparently all little-endian.
239# From: Adam Buchbinder <adam.buchbinder@gmail.com>
240# URL: https://www.sno.phy.queensu.ca/~phil/exiftool/canon_raw.html
2410	string		II\x1a\0\0\0HEAPCCDR	Canon CIFF raw image data
242!:mime	image/x-canon-crw
243>16	leshort		x	\b, version %d.
244>14	leshort		x	\b%d
245
246# Canon RAW version 2 (CR2) files are a kind of TIFF with an extra magic
247# number. Put this above the TIFF test to make sure we detect them.
248# These are apparently all little-endian.
249# From: Adam Buchbinder <adam.buchbinder@gmail.com>
250# URL: https://libopenraw.freedesktop.org/wiki/Canon_CR2
2510	string		II\x2a\0\x10\0\0\0CR	Canon CR2 raw image data
252!:mime	image/x-canon-cr2
253!:strength +80
254>10	byte		x	\b, version %d.
255>11	byte		x	\b%d
256
257# Tag Image File Format, from Daniel Quinlan (quinlan@yggdrasil.com)
258# The second word of TIFF files is the TIFF version number, 42, which has
259# never changed.  The TIFF specification recommends testing for it.
2600	string		MM\x00\x2a	TIFF image data, big-endian
261!:strength +70
262!:mime	image/tiff
263>(4.L)	use		\^tiff_ifd
2640	string		II\x2a\x00	TIFF image data, little-endian
265!:mime	image/tiff
266!:strength +70
267>(4.l)	use		tiff_ifd
268
2690	name		tiff_ifd
270>0	leshort		x		\b, direntries=%d
271>2	use		tiff_entry
272
2730	name		tiff_entry
274# NewSubFileType
275>0	leshort		0xfe
276>>12	use		tiff_entry
277>0	leshort		0x100
278>>4	lelong		1
279>>>12	use		tiff_entry
280>>>8	leshort		x		\b, width=%d
281>0	leshort		0x101
282>>4	lelong		1
283>>>8	leshort		x		\b, height=%d
284>>>12	use		tiff_entry
285>0	leshort		0x102
286>>8	leshort		x		\b, bps=%d
287>>12	use		tiff_entry
288>0	leshort		0x103
289>>4	lelong		1		\b, compression=
290>>>8	leshort		1		\bnone
291>>>8	leshort		2		\bhuffman
292>>>8	leshort		3		\bbi-level group 3
293>>>8	leshort		4		\bbi-level group 4
294>>>8	leshort		5		\bLZW
295>>>8	leshort		6		\bJPEG (old)
296>>>8	leshort		7		\bJPEG
297>>>8	leshort		8		\bdeflate
298>>>8	leshort		9		\bJBIG, ITU-T T.85
299>>>8	leshort		0xa		\bJBIG, ITU-T T.43
300>>>8	leshort		0x7ffe		\bNeXT RLE 2-bit
301>>>8	leshort		0x8005		\bPackBits (Macintosh RLE)
302>>>8	leshort		0x8029		\bThunderscan RLE
303>>>8	leshort		0x807f		\bRasterPadding (CT or MP)
304>>>8	leshort		0x8080		\bRLE (Line Work)
305>>>8	leshort		0x8081		\bRLE (High-Res Cont-Tone)
306>>>8	leshort		0x8082		\bRLE (Binary Line Work)
307>>>8	leshort		0x80b2		\bDeflate (PKZIP)
308>>>8	leshort		0x80b3		\bKodak DCS
309>>>8	leshort		0x8765		\bJBIG
310>>>8	leshort		0x8798		\bJPEG2000
311>>>8	leshort		0x8799		\bNikon NEF Compressed
312>>>8	default		x
313>>>>8	leshort		x		\b(unknown 0x%x)
314>>>12	use		tiff_entry
315>0	leshort		0x106		\b, PhotometricIntepretation=
316>>8	clear		x
317>>8	leshort		0		\bWhiteIsZero
318>>8	leshort		1		\bBlackIsZero
319>>8	leshort		2		\bRGB
320>>8	leshort		3		\bRGB Palette
321>>8	leshort		4		\bTransparency Mask
322>>8	leshort		5		\bCMYK
323>>8	leshort		6		\bYCbCr
324>>8	leshort		8		\bCIELab
325>>8	default		x
326>>>8	leshort		x		\b(unknown=0x%x)
327>>12	use		tiff_entry
328# FillOrder
329>0	leshort		0x10a
330>>4	lelong		1
331>>>12	use		tiff_entry
332# DocumentName
333>0	leshort		0x10d
334>>(8.l)	string		x		\b, name=%s
335>>>12	use		tiff_entry
336# ImageDescription
337>0	leshort		0x10e
338>>(8.l)	string		x		\b, description=%s
339>>>12	use		tiff_entry
340# Make
341>0	leshort		0x10f
342>>(8.l)	string		x		\b, manufacturer=%s
343>>>12	use		tiff_entry
344# Model
345>0	leshort		0x110
346>>(8.l)	string		x		\b, model=%s
347>>>12	use		tiff_entry
348# StripOffsets
349>0	leshort		0x111
350>>12	use		tiff_entry
351# Orientation
352>0	leshort		0x112		\b, orientation=
353>>8	leshort		1		\bupper-left
354>>8	leshort		3		\blower-right
355>>8	leshort		6		\bupper-right
356>>8	leshort		8		\blower-left
357>>8	leshort		9		\bundefined
358>>8	default		x
359>>>8	leshort		x		\b[*%d*]
360>>12	use		tiff_entry
361# XResolution
362>0	leshort		0x11a
363>>8	lelong		x		\b, xresolution=%d
364>>12	use		tiff_entry
365# YResolution
366>0	leshort		0x11b
367>>8	lelong		x		\b, yresolution=%d
368>>12	use		tiff_entry
369# ResolutionUnit
370>0	leshort		0x128
371>>8	leshort		x		\b, resolutionunit=%d
372>>12	use		tiff_entry
373# Software
374>0	leshort		0x131
375>>(8.l)	string		x		\b, software=%s
376>>12	use		tiff_entry
377# Datetime
378>0	leshort		0x132
379>>(8.l)	string		x		\b, datetime=%s
380>>12	use		tiff_entry
381# HostComputer
382>0	leshort		0x13c
383>>(8.l)	string		x		\b, hostcomputer=%s
384>>12	use		tiff_entry
385# WhitePoint
386>0	leshort		0x13e
387>>12	use		tiff_entry
388# PrimaryChromaticities
389>0	leshort		0x13f
390>>12	use		tiff_entry
391# YCbCrCoefficients
392>0	leshort		0x211
393>>12	use		tiff_entry
394# YCbCrPositioning
395>0	leshort		0x213
396>>12	use		tiff_entry
397# ReferenceBlackWhite
398>0	leshort		0x214
399>>12	use		tiff_entry
400# Copyright
401>0	leshort		0x8298
402>>(8.l)	string		x		\b, copyright=%s
403>>12	use		tiff_entry
404# ExifOffset
405>0	leshort		0x8769
406>>12	use		tiff_entry
407# GPS IFD
408>0	leshort		0x8825		\b, GPS-Data
409>>12	use		tiff_entry
410
411#>0	leshort		x		\b, unknown=0x%x
412#>>12	use		tiff_entry
413
4140	string		MM\x00\x2b	Big TIFF image data, big-endian
415!:mime	image/tiff
4160	string		II\x2b\x00	Big TIFF image data, little-endian
417!:mime	image/tiff
418
419# PNG [Portable Network Graphics, or "PNG's Not GIF"] images
420# (Greg Roelofs, newt@uchicago.edu)
421# (Albert Cahalan, acahalan@cs.uml.edu)
422#
423# 137 P N G \r \n ^Z \n [4-byte length] I H D R [HEAD data] [HEAD crc] ...
424#
425
426# IHDR parser
4270	name		png-ihdr
428>0	belong		x		\b, %d x
429>4	belong		x		%d,
430>8	byte		x		%d-bit
431>9	byte		0		grayscale,
432>9	byte		2		\b/color RGB,
433>9	byte		3		colormap,
434>9	byte		4		gray+alpha,
435>9	byte		6		\b/color RGBA,
436#>10	byte		0		deflate/32K,
437>12	byte		0		non-interlaced
438>12	byte		1		interlaced
439
440# Standard PNG image.
4410	string		\x89PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0DIHDR	PNG image data
442!:mime	image/png
443!:ext   png
444!:strength +10
445>16	use		png-ihdr
446
447# Apple CgBI PNG image.
4480	string		\x89PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x04CgBI
449>24	string  	\x00\x00\x00\x0DIHDR	PNG image data (CgBI)
450!:mime	image/png
451!:ext   png
452!:strength +10
453>>32	use		png-ihdr
454
455# possible GIF replacements; none yet released!
456# (Greg Roelofs, newt@uchicago.edu)
457#
458# GRR 950115:  this was mine ("Zip GIF"):
4590	string		GIF94z		ZIF image (GIF+deflate alpha)
460!:mime	image/x-unknown
461#
462# GRR 950115:  this is Jeremy Wohl's Free Graphics Format (better):
463#
4640	string		FGF95a		FGF image (GIF+deflate beta)
465!:mime	image/x-unknown
466#
467# GRR 950115:  this is Thomas Boutell's Portable Bitmap Format proposal
468# (best; not yet implemented):
469#
4700	string		PBF		PBF image (deflate compression)
471!:mime	image/x-unknown
472
473# GIF
474# Strength set up to beat 0x55AA DOS/MBR signature word lookups (+65)
4750	string		GIF8		GIF image data
476!:strength +80
477!:mime	image/gif
478!:apple	8BIMGIFf
479>4	string		7a		\b, version 8%s,
480>4	string		9a		\b, version 8%s,
481>6	leshort		>0		%d x
482>8	leshort		>0		%d
483#>10	byte		&0x80		color mapped,
484#>10	byte&0x07	=0x00		2 colors
485#>10	byte&0x07	=0x01		4 colors
486#>10	byte&0x07	=0x02		8 colors
487#>10	byte&0x07	=0x03		16 colors
488#>10	byte&0x07	=0x04		32 colors
489#>10	byte&0x07	=0x05		64 colors
490#>10	byte&0x07	=0x06		128 colors
491#>10	byte&0x07	=0x07		256 colors
492
493# ITC (CMU WM) raster files.  It is essentially a byte-reversed Sun raster,
494# 1 plane, no encoding.
4950	string		\361\0\100\273	CMU window manager raster image data
496>4	lelong		>0		%d x
497>8	lelong		>0		%d,
498>12	lelong		>0		%d-bit
499
500# Magick Image File Format
5010	string		id=ImageMagick	MIFF image data
502
503# Artisan
5040	long		1123028772	Artisan image data
505>4	long		1		\b, rectangular 24-bit
506>4	long		2		\b, rectangular 8-bit with colormap
507>4	long		3		\b, rectangular 32-bit (24-bit with matte)
508
509# FIG (Facility for Interactive Generation of figures), an object-based format
5100	search/1	#FIG		FIG image text
511>5	string		x		\b, version %.3s
512
513# PHIGS
5140	string		ARF_BEGARF		PHIGS clear text archive
5150	string		@(#)SunPHIGS		SunPHIGS
516# version number follows, in the form m.n
517>40	string		SunBin			binary
518>32	string		archive			archive
519
520# GKS (Graphics Kernel System)
5210	string		GKSM		GKS Metafile
522>24	string		SunGKS		\b, SunGKS
523
524# CGM image files
5250	string		BEGMF		clear text Computer Graphics Metafile
526
527# MGR bitmaps  (Michael Haardt, u31b3hs@pool.informatik.rwth-aachen.de)
5280	string	yz	MGR bitmap, modern format, 8-bit aligned
5290	string	zz	MGR bitmap, old format, 1-bit deep, 16-bit aligned
5300	string	xz	MGR bitmap, old format, 1-bit deep, 32-bit aligned
5310	string	yx	MGR bitmap, modern format, squeezed
532
533# Fuzzy Bitmap (FBM) images
5340	string		%bitmap\0	FBM image data
535>30	long		0x31		\b, mono
536>30	long		0x33		\b, color
537
538# facsimile data
5391	string		PC\ Research,\ Inc	group 3 fax data
540>29	byte		0		\b, normal resolution (204x98 DPI)
541>29	byte		1		\b, fine resolution (204x196 DPI)
542# From: Herbert Rosmanith <herp@wildsau.idv.uni.linz.at>
5430	string		Sfff		structured fax file
544
545# From: Joerg Jenderek <joerg.jen.der.ek@gmx.net>
546# most files with the extension .EPA and some with .BMP
5470	string		\x11\x06	Award BIOS Logo, 136 x 84
548!:mime	image/x-award-bioslogo
5490	string		\x11\x09	Award BIOS Logo, 136 x 126
550!:mime	image/x-award-bioslogo
551#0	string		\x07\x1f	BIOS Logo corrupted?
552# http://www.blackfiveservices.co.uk/awbmtools.shtml
553# http://biosgfx.narod.ru/v3/
554# http://biosgfx.narod.ru/abr-2/
5550	string		AWBM
556>4	leshort		<1981		Award BIOS bitmap
557!:mime	image/x-award-bmp
558# image width is a multiple of 4
559>>4	leshort&0x0003	0
560>>>4		leshort	x		\b, %d
561>>>6		leshort	x		x %d
562>>4	leshort&0x0003	>0		\b,
563>>>4	leshort&0x0003	=1
564>>>>4		leshort	x		%d+3
565>>>4	leshort&0x0003	=2
566>>>>4		leshort	x		%d+2
567>>>4	leshort&0x0003	=3
568>>>>4		leshort	x		%d+1
569>>>6		leshort	x		x %d
570# at offset 8 starts imagedata followed by "RGB " marker
571
572# PC bitmaps (OS/2, Windows BMP files)  (Greg Roelofs, newt@uchicago.edu)
573# https://en.wikipedia.org/wiki/BMP_file_format#DIB_header_.\
574# 28bitmap_information_header.29
5750	string		BM
576>14	leshort		12		PC bitmap, OS/2 1.x format
577!:mime	image/x-ms-bmp
578>>18	leshort		x		\b, %d x
579>>20	leshort		x		%d
580>14	leshort		64		PC bitmap, OS/2 2.x format
581!:mime	image/x-ms-bmp
582>>18	leshort		x		\b, %d x
583>>20	leshort		x		%d
584>14	leshort		40		PC bitmap, Windows 3.x format
585!:mime	image/x-ms-bmp
586>>18	lelong		x		\b, %d x
587>>22	lelong		x		%d x
588>>28	leshort		x		%d
589>14	leshort		124		PC bitmap, Windows 98/2000 and newer format
590!:mime	image/x-ms-bmp
591>>18	lelong		x		\b, %d x
592>>22	lelong		x		%d x
593>>28	leshort		x		%d
594>14	leshort		108		PC bitmap, Windows 95/NT4 and newer format
595!:mime	image/x-ms-bmp
596>>18	lelong		x		\b, %d x
597>>22	lelong		x		%d x
598>>28	leshort		x		%d
599>14	leshort		128		PC bitmap, Windows NT/2000 format
600!:mime	image/x-ms-bmp
601>>18	lelong		x		\b, %d x
602>>22	lelong		x		%d x
603>>28	leshort		x		%d
604# Too simple - MPi
605#0	string		IC		PC icon data
606#0	string		PI		PC pointer image data
607#0	string		CI		PC color icon data
608#0	string		CP		PC color pointer image data
609# Conflicts with other entries [BABYL]
610#0	string		BA		PC bitmap array data
611
612# XPM icons (Greg Roelofs, newt@uchicago.edu)
6130	search/1	/*\ XPM\ */	X pixmap image text
614!:mime	image/x-xpmi
615
616# Utah Raster Toolkit RLE images (janl@ifi.uio.no)
6170	leshort		0xcc52		RLE image data,
618>6	leshort		x		%d x
619>8	leshort		x		%d
620>2	leshort		>0		\b, lower left corner: %d
621>4	leshort		>0		\b, lower right corner: %d
622>10	byte&0x1	=0x1		\b, clear first
623>10	byte&0x2	=0x2		\b, no background
624>10	byte&0x4	=0x4		\b, alpha channel
625>10	byte&0x8	=0x8		\b, comment
626>11	byte		>0		\b, %d color channels
627>12	byte		>0		\b, %d bits per pixel
628>13	byte		>0		\b, %d color map channels
629
630# image file format (Robert Potter, potter@cs.rochester.edu)
6310	string		Imagefile\ version-	iff image data
632# this adds the whole header (inc. version number), informative but longish
633>10	string		>\0		%s
634
635# Sun raster images, from Daniel Quinlan (quinlan@yggdrasil.com)
6360	belong		0x59a66a95	Sun raster image data
637>4	belong		>0		\b, %d x
638>8	belong		>0		%d,
639>12	belong		>0		%d-bit,
640#>16	belong		>0		%d bytes long,
641>20	belong		0		old format,
642#>20	belong		1		standard,
643>20	belong		2		compressed,
644>20	belong		3		RGB,
645>20	belong		4		TIFF,
646>20	belong		5		IFF,
647>20	belong		0xffff		reserved for testing,
648>24	belong		0		no colormap
649>24	belong		1		RGB colormap
650>24	belong		2		raw colormap
651#>28	belong		>0		colormap is %d bytes long
652
653# SGI image file format, from Daniel Quinlan (quinlan@yggdrasil.com)
654#
655# See
656#	http://reality.sgi.com/grafica/sgiimage.html
657#
6580	beshort		474		SGI image data
659#>2	byte		0		\b, verbatim
660>2	byte		1		\b, RLE
661#>3	byte		1		\b, normal precision
662>3	byte		2		\b, high precision
663>4	beshort		x		\b, %d-D
664>6	beshort		x		\b, %d x
665>8	beshort		x		%d
666>10	beshort		x		\b, %d channel
667>10	beshort		!1		\bs
668>80	string		>0		\b, "%s"
669
6700	string		IT01		FIT image data
671>4	belong		x		\b, %d x
672>8	belong		x		%d x
673>12	belong		x		%d
674#
6750	string		IT02		FIT image data
676>4	belong		x		\b, %d x
677>8	belong		x		%d x
678>12	belong		x		%d
679#
6802048	string		PCD_IPI		Kodak Photo CD image pack file
681>0xe02	byte&0x03	0x00		, landscape mode
682>0xe02	byte&0x03	0x01		, portrait mode
683>0xe02	byte&0x03	0x02		, landscape mode
684>0xe02	byte&0x03	0x03		, portrait mode
6850	string		PCD_OPA		Kodak Photo CD overview pack file
686
687# FITS format.  Jeff Uphoff <juphoff@tarsier.cv.nrao.edu>
688# FITS is the Flexible Image Transport System, the de facto standard for
689# data and image transfer, storage, etc., for the astronomical community.
690# (FITS floating point formats are big-endian.)
6910	string	SIMPLE\ \ =	FITS image data
692!:mime	image/fits
693!:ext	fits/fts
694>109	string	8		\b, 8-bit, character or unsigned binary integer
695>108	string	16		\b, 16-bit, two's complement binary integer
696>107	string	\ 32		\b, 32-bit, two's complement binary integer
697>107	string	-32		\b, 32-bit, floating point, single precision
698>107	string	-64		\b, 64-bit, floating point, double precision
699
700# other images
7010	string	This\ is\ a\ BitMap\ file	Lisp Machine bit-array-file
702
703# From SunOS 5.5.1 "/etc/magic" - appeared right before Sun raster image
704# stuff.
705#
7060	beshort		0x1010		PEX Binary Archive
707
708# DICOM medical imaging data
709# URL:		https://en.wikipedia.org/wiki/DICOM#Data_format
710# Note:		"dcm" is the official file name extension
711# 		XnView mention also "dc3" and "acr" as file name extension
712128	string	DICM			DICOM medical imaging data
713!:mime	application/dicom
714!:ext dcm/dicom/dic
715
716# XWD - X Window Dump file.
717#   As described in /usr/X11R6/include/X11/XWDFile.h
718#   used by the xwd program.
719#   Bradford Castalia, idaeim, 1/01
720#   updated by Adam Buchbinder, 2/09
721# The following assumes version 7 of the format; the first long is the length
722# of the header, which is at least 25 4-byte longs, and the one at offset 8
723# is a constant which is always either 1 or 2. Offset 12 is the pixmap depth,
724# which is a maximum of 32.
7250	belong	>100
726>8	belong	<3
727>>12	belong	<33
728>>>4	belong	7			XWD X Window Dump image data
729!:mime	image/x-xwindowdump
730>>>>100	string	>\0			\b, "%s"
731>>>>16	belong	x			\b, %dx
732>>>>20	belong	x			\b%dx
733>>>>12	belong	x			\b%d
734
735# PDS - Planetary Data System
736#   These files use Parameter Value Language in the header section.
737#   Unfortunately, there is no certain magic, but the following
738#   strings have been found to be most likely.
7390	string	NJPL1I00		PDS (JPL) image data
7402	string	NJPL1I			PDS (JPL) image data
7410	string	CCSD3ZF			PDS (CCSD) image data
7422	string	CCSD3Z			PDS (CCSD) image data
7430	string	PDS_			PDS image data
7440	string	LBLSIZE=		PDS (VICAR) image data
745
746# pM8x: ATARI STAD compressed bitmap format
747#
748# from Oskar Schirmer <schirmer@scara.com> Feb 2, 2001
749# p M 8 5/6 xx yy zz data...
750# Atari ST STAD bitmap is always 640x400, bytewise runlength compressed.
751# bytes either run horizontally (pM85) or vertically (pM86). yy is the
752# most frequent byte, xx and zz are runlength escape codes, where xx is
753# used for runs of yy.
754#
7550	string	pM85		Atari ST STAD bitmap image data (hor)
756>5	byte	0x00		(white background)
757>5	byte	0xFF		(black background)
7580	string	pM86		Atari ST STAD bitmap image data (vert)
759>5	byte	0x00		(white background)
760>5	byte	0xFF		(black background)
761
762# From: Alex Myczko <alex@aiei.ch>
763# https://www.atarimax.com/jindroush.atari.org/afmtatr.html
7640	leshort	0x0296		Atari ATR image
765
766# XXX:
767# This is bad magic 0x5249 == 'RI' conflicts with RIFF and other
768# magic.
769# SGI RICE image file <mpruett@sgi.com>
770#0	beshort	0x5249		RICE image
771#>2	beshort	x		v%d
772#>4	beshort	x		(%d x
773#>6	beshort	x		%d)
774#>8	beshort	0		8 bit
775#>8	beshort	1		10 bit
776#>8	beshort	2		12 bit
777#>8	beshort	3		13 bit
778#>10	beshort	0		4:2:2
779#>10	beshort	1		4:2:2:4
780#>10	beshort	2		4:4:4
781#>10	beshort	3		4:4:4:4
782#>12	beshort	1		RGB
783#>12	beshort	2		CCIR601
784#>12	beshort	3		RP175
785#>12	beshort	4		YUV
786
787# PCX image files
788# From: Dan Fandrich <dan@coneharvesters.com>
789# updated by Joerg Jenderek at Feb 2013 by https://de.wikipedia.org/wiki/PCX
790# https://web.archive.org/web/20100206055706/http://www.qzx.com/pc-gpe/pcx.txt
791# GRR: original test was still too general as it catches xbase examples T5.DBT,T6.DBT with 0xa000000
792# 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
7930	ubelong&0xffF8fe00	0x0a000000
794# for PCX bit depth > 0
795>3	ubyte		>0
796# test for valid versions
797>>1	ubyte		<6
798>>>1	ubyte		!1	PCX
799!:mime	image/x-pcx
800#!:mime	image/pcx
801>>>>1	ubyte		0	ver. 2.5 image data
802>>>>1	ubyte		2	ver. 2.8 image data, with palette
803>>>>1	ubyte		3	ver. 2.8 image data, without palette
804>>>>1	ubyte		4	for Windows image data
805>>>>1	ubyte		5	ver. 3.0 image data
806>>>>4	uleshort	x	bounding box [%d,
807>>>>6	uleshort	x	%d] -
808>>>>8	uleshort	x	[%d,
809>>>>10	uleshort	x	%d],
810>>>>65	ubyte		>1	%d planes each of
811>>>>3	ubyte		x	%d-bit
812>>>>68	byte		1	colour,
813>>>>68	byte		2	grayscale,
814# this should not happen
815>>>>68	default		x	image,
816>>>>12	leshort		>0	%d x
817>>>>>14	uleshort	x	%d dpi,
818>>>>2	byte		0	uncompressed
819>>>>2	byte		1	RLE compressed
820
821# Adobe Photoshop
822# From: Asbjoern Sloth Toennesen <asbjorn@lila.io>
8230	string		8BPS Adobe Photoshop Image
824!:mime	image/vnd.adobe.photoshop
825>4   beshort 2 (PSB)
826>18  belong  x \b, %d x
827>14  belong  x %d,
828>24  beshort 0 bitmap
829>24  beshort 1 grayscale
830>>12 beshort 2 with alpha
831>24  beshort 2 indexed
832>24  beshort 3 RGB
833>>12 beshort 4 \bA
834>24  beshort 4 CMYK
835>>12 beshort 5 \bA
836>24  beshort 7 multichannel
837>24  beshort 8 duotone
838>24  beshort 9 lab
839>12  beshort > 1
840>>12  beshort x \b, %dx
841>12  beshort 1 \b,
842>22  beshort x %d-bit channel
843>12  beshort > 1 \bs
844
845# XV thumbnail indicator (ThMO)
8460	string		P7\ 332		XV thumbnail image data
847
848# NITF is defined by United States MIL-STD-2500A
8490	string	NITF	National Imagery Transmission Format
850>25	string	>\0	dated %.14s
851
852# GEM Image: Version 1, Headerlen 8 (Wolfram Kleff)
853# Format variations from: Bernd Nuernberger <bernd.nuernberger@web.de>
854# Update: Joerg Jenderek
855# See http://fileformats.archiveteam.org/wiki/GEM_Raster
856# For variations, also see:
857#    https://www.seasip.info/Gem/ff_img.html (Ventura)
858#    http://www.atari-wiki.com/?title=IMG_file (XIMG, STTT)
859#    http://www.fileformat.info/format/gemraster/spec/index.htm (XIMG, STTT)
860#    http://sylvana.net/1stguide/1STGUIDE.ENG (TIMG)
8610       beshort     0x0001
862# header_size
863>2      beshort     0x0008
864>>0     use gem_info
865>2      beshort     0x0009
866>>0     use gem_info
867# no example for NOSIG
868>2      beshort     24
869>>0     use gem_info
870# no example for HYPERPAINT
871>2      beshort     25
872>>0     use gem_info
87316      string      XIMG\0
874>0      use gem_info
875# no example
87616      string      STTT\0\x10
877>0      use gem_info
878# no example or description
87916      string      TIMG\0
880>0      use gem_info
881
8820   name        gem_info
883# version is 2 for some XIMG and 1 for all others
884>0	beshort		<0x0003		GEM
885# https://www.snowstone.org.uk/riscos/mimeman/mimemap.txt
886!:mime	image/x-gem
887# header_size 24 25 27 59 779 words for colored bitmaps
888>>2	beshort		>9
889>>>16	string		STTT\0\x10	STTT
890>>>16	string		TIMG\0		TIMG
891# HYPERPAINT or NOSIG variant
892>>>16	string		\0\x80
893>>>>2	beshort		=24		NOSIG
894>>>>2	beshort		!24		HYPERPAINT
895# NOSIG or XIMG variant
896>>>16	default		x
897>>>>16	string		!XIMG\0		NOSIG
898>>16	string		=XIMG\0		XIMG Image data
899!:ext	img/ximg
900# to avoid Warning: Current entry does not yet have a description for adding a EXTENSION type
901>>16	string		!XIMG\0		Image data
902!:ext	img
903# header_size is 9 for Ventura files and 8 for other GEM Paint files
904>>2	beshort		9		(Ventura)
905#>>2	beshort		8		(Paint)
906>>12	beshort		x		%d x
907>>14	beshort		x		%d,
908# 1 4 8
909>>4	beshort		x		%d planes,
910# in tenths of a millimetre
911>>8	beshort		x		%d x
912>>10	beshort		x		%d pixelsize
913# pattern_size 1-8. 2 for GEM Paint
914>>6	beshort		!2		\b, pattern size %d
915
916# GEM Metafile (Wolfram Kleff)
9170	lelong		0x0018FFFF	GEM Metafile data
918>4	leshort		x		version %d
919
920#
921# SMJPEG. A custom Motion JPEG format used by Loki Entertainment
922# Software Torbjorn Andersson <d91tan@Update.UU.SE>.
923#
9240	string	\0\nSMJPEG	SMJPEG
925>8	belong	x		%d.x data
926# According to the specification you could find any number of _TXT
927# headers here, but I can't think of any way of handling that. None of
928# the SMJPEG files I tried it on used this feature. Even if such a
929# file is encountered the output should still be reasonable.
930>16	string	_SND		\b,
931>>24	beshort	>0		%d Hz
932>>26	byte	8		8-bit
933>>26	byte	16		16-bit
934>>28	string	NONE		uncompressed
935# >>28	string	APCM		ADPCM compressed
936>>27	byte	1		mono
937>>28	byte	2		stereo
938# Help! Isn't there any way to avoid writing this part twice?
939>>32	string	_VID		\b,
940# >>>48	string	JFIF		JPEG
941>>>40	belong	>0		%d frames
942>>>44	beshort	>0		(%d x
943>>>46	beshort	>0		%d)
944>16	string	_VID		\b,
945# >>32	string	JFIF		JPEG
946>>24	belong	>0		%d frames
947>>28	beshort	>0		(%d x
948>>30	beshort	>0		%d)
949
9500	string	Paint\ Shop\ Pro\ Image\ File	Paint Shop Pro Image File
951
952# "thumbnail file" (icon)
953# descended from "xv", but in use by other applications as well (Wolfram Kleff)
9540       string          P7\ 332         XV "thumbnail file" (icon) data
955
956# taken from fkiss: (<yav@mte.biglobe.ne.jp> ?)
9570       string          KiSS            KISS/GS
958>4      byte            16              color
959>>5     byte            x               %d bit
960>>8     leshort         x               %d colors
961>>10    leshort         x               %d groups
962>4      byte            32              cell
963>>5     byte            x               %d bit
964>>8     leshort         x               %d x
965>>10    leshort         x               %d
966>>12    leshort         x               +%d
967>>14    leshort         x               +%d
968
969# Webshots (www.webshots.com), by John Harrison
9700       string          C\253\221g\230\0\0\0 Webshots Desktop .wbz file
971
972# Hercules DASD image files
973# From Jan Jaeger <jj@septa.nl>
9740       string  CKD_P370        Hercules CKD DASD image file
975>8      long    x               \b, %d heads per cylinder
976>12     long    x               \b, track size %d bytes
977>16     byte    x               \b, device type 33%2.2X
978
9790       string  CKD_C370        Hercules compressed CKD DASD image file
980>8      long    x               \b, %d heads per cylinder
981>12     long    x               \b, track size %d bytes
982>16     byte    x               \b, device type 33%2.2X
983
9840       string  CKD_S370        Hercules CKD DASD shadow file
985>8      long    x               \b, %d heads per cylinder
986>12     long    x               \b, track size %d bytes
987>16     byte    x               \b, device type 33%2.2X
988
989# Squeak images and programs - etoffi@softhome.net
9900	string		\146\031\0\0	Squeak image data
9910	search/1	'From\040Squeak	Squeak program text
992
993# partimage: file(1) magic for PartImage files (experimental, incomplete)
994# Author: Hans-Joachim Baader <hjb@pro-linux.de>
9950		string	PaRtImAgE-VoLuMe	PartImage
996>0x0020		string	0.6.1		file version %s
997>>0x0060	lelong	>-1		volume %d
998#>>0x0064 8 byte identifier
999#>>0x007c reserved
1000>>0x0200	string	>\0		type %s
1001>>0x1400	string	>\0		device %s,
1002>>0x1600	string	>\0		original filename %s,
1003# Some fields omitted
1004>>0x2744	lelong	0		not compressed
1005>>0x2744	lelong	1		gzip compressed
1006>>0x2744	lelong	2		bzip2 compressed
1007>>0x2744	lelong	>2		compressed with unknown algorithm
1008>0x0020		string	>0.6.1		file version %s
1009>0x0020		string	<0.6.1		file version %s
1010
1011# DCX is multi-page PCX, using a simple header of up to 1024
1012# offsets for the respective PCX components.
1013# From: Joerg Wunsch <joerg_wunsch@uriah.heep.sax.de>
10140	lelong	987654321	DCX multi-page PCX image data
1015
1016# Simon Walton <simonw@matteworld.com>
1017# Kodak Cineon format for scanned negatives
1018# http://www.kodak.com/US/en/motion/support/dlad/
10190	lelong  0xd75f2a80	Cineon image data
1020>200	belong  >0		\b, %d x
1021>204	belong  >0		%d
1022
1023
1024# Bio-Rad .PIC is an image format used by microscope control systems
1025# and related image processing software used by biologists.
1026# From: Vebjorn Ljosa <vebjorn@ljosa.com>
1027# BOOL values are two-byte integers; use them to rule out false positives.
1028# https://web.archive.org/web/20050317223257/www.cs.ubc.ca/spider/ladic/text/biorad.txt
1029# Samples: https://www.loci.wisc.edu/software/sample-data
103014	leshort <2
1031>62	leshort <2
1032>>54	leshort 12345		Bio-Rad .PIC Image File
1033>>>0	leshort >0		%d x
1034>>>2	leshort >0		%d,
1035>>>4	leshort =1		1 image in file
1036>>>4	leshort >1		%d images in file
1037
1038# From Jan "Yenya" Kasprzak <kas@fi.muni.cz>
1039# The description of *.mrw format can be found at
1040# http://www.dalibor.cz/minolta/raw_file_format.htm
10410	string	\000MRM			Minolta Dimage camera raw image data
1042
1043# Summary: DjVu image / document
1044# Extension: .djvu
1045# Reference: http://djvu.org/docs/DjVu3Spec.djvu
1046# Submitted by: Stephane Loeuillet <stephane.loeuillet@tiscali.fr>
1047# Modified by (1): Abel Cheung <abelcheung@gmail.com>
10480	string	AT&TFORM
1049>12	string	DJVM		DjVu multiple page document
1050!:mime	image/vnd.djvu
1051>12	string	DJVU		DjVu image or single page document
1052!:mime	image/vnd.djvu
1053>12	string	DJVI		DjVu shared document
1054!:mime	image/vnd.djvu
1055>12	string	THUM		DjVu page thumbnails
1056!:mime	image/vnd.djvu
1057
1058# Originally by Marc Espie
1059# Modified by Robert Minsk <robertminsk at yahoo.com>
1060# https://www.openexr.com/openexrfilelayout.pdf
10610	lelong		20000630	OpenEXR image data,
1062!:mime image/x-exr
1063>4	lelong&0x000000ff x		version %d,
1064>4	lelong		^0x00000200	storage: scanline
1065>4	lelong		&0x00000200	storage: tiled
1066>8	search/0x1000	compression\0	\b, compression:
1067>>&16	byte		0		none
1068>>&16	byte		1		rle
1069>>&16	byte		2		zips
1070>>&16	byte		3		zip
1071>>&16	byte		4		piz
1072>>&16	byte		5		pxr24
1073>>&16	byte		6		b44
1074>>&16	byte		7		b44a
1075>>&16	byte		8		dwaa
1076>>&16	byte		9		dwab
1077>>&16	byte		>9		unknown
1078>8	 search/0x1000	dataWindow\0	\b, dataWindow:
1079>>&10	lelong		x		(%d
1080>>&14	lelong		x		%d)-
1081>>&18	lelong		x		\b(%d
1082>>&22	lelong		x		%d)
1083>8	search/0x1000	displayWindow\0	\b, displayWindow:
1084>>&10	lelong		x		(%d
1085>>&14	lelong		x		%d)-
1086>>&18	lelong		x		\b(%d
1087>>&22	lelong		x		%d)
1088>8	search/0x1000	lineOrder\0	 \b, lineOrder:
1089>>&14	byte		0		increasing y
1090>>&14	byte		1		decreasing y
1091>>&14	byte		2		random y
1092>>&14	byte		>2		unknown
1093
1094# SMPTE Digital Picture Exchange Format, SMPTE DPX
1095#
1096# ANSI/SMPTE 268M-1994, SMPTE Standard for File Format for Digital
1097# Moving-Picture Exchange (DPX), v1.0, 18 February 1994
1098# Robert Minsk <robertminsk at yahoo.com>
1099# Modified by Harry Mallon <hjmallon at gmail.com>
11000	string		SDPX	DPX image data, big-endian,
1101!:mime image/x-dpx
1102>0	use		dpx_info
11030	string		XPDS	DPX image data, little-endian,
1104!:mime image/x-dpx
1105>0	use		\^dpx_info
1106
11070	name		dpx_info
1108>768	beshort		<4
1109>>772	belong		x	%dx
1110>>776	belong		x	\b%d,
1111>768	beshort		>3
1112>>776	belong		x	%dx
1113>>772	belong		x	\b%d,
1114>768	beshort		0	left to right/top to bottom
1115>768	beshort		1	right to left/top to bottom
1116>768	beshort		2	left to right/bottom to top
1117>768	beshort		3	right to left/bottom to top
1118>768	beshort		4	top to bottom/left to right
1119>768	beshort		5	top to bottom/right to left
1120>768	beshort		6	bottom to top/left to right
1121>768	beshort		7	bottom to top/right to left
1122
1123# From: Tom Hilinski <tom.hilinski@comcast.net>
1124# https://www.unidata.ucar.edu/packages/netcdf/
11250	string	CDF\001			NetCDF Data Format data
1126
1127#-----------------------------------------------------------------------
1128# Hierarchical Data Format, used to facilitate scientific data exchange
1129# specifications at http://hdf.ncsa.uiuc.edu/
11300	belong	0x0e031301	Hierarchical Data Format (version 4) data
1131!:mime	application/x-hdf
11320	string	\211HDF\r\n\032\n	Hierarchical Data Format (version 5) data
1133!:mime	application/x-hdf
1134512	string	\211HDF\r\n\032\n	Hierarchical Data Format (version 5) with 512 bytes user block
1135!:mime	application/x-hdf
11361024	string	\211HDF\r\n\032\n	Hierarchical Data Format (version 5) with 1k user block
1137!:mime	application/x-hdf
11382048	string	\211HDF\r\n\032\n	Hierarchical Data Format (version 5) with 2k user block
1139!:mime	application/x-hdf
11404096	string	\211HDF\r\n\032\n	Hierarchical Data Format (version 5) with 4k user block
1141!:mime	application/x-hdf
1142
1143
1144# From: Tobias Burnus <burnus@net-b.de>
1145# Xara (for a while: Corel Xara) is a graphic package, see
1146# http://www.xara.com/ for Windows and as GPL application for Linux
11470	string	XARA\243\243	Xara graphics file
1148
1149# https://www.cartesianinc.com/Tech/
11500	string	CPC\262		Cartesian Perceptual Compression image
1151!:mime	image/x-cpi
1152
1153# From Albert Cahalan <acahalan@gmail.com>
1154# puredigital used it for the CVS disposable camcorder
1155#8       lelong  4       ZBM bitmap image data
1156#>4      leshort x       %u x
1157#>6      leshort x       %u
1158
1159# From Albert Cahalan <acahalan@gmail.com>
1160# uncompressed 5:6:5 HighColor image for OLPC XO firmware icons
11610       string C565     OLPC firmware icon image data
1162>4      leshort x       %u x
1163>6      leshort x       %u
1164
1165# Applied Images - Image files from Cytovision
1166# Gustavo Junior Alves <gjalves@gjalves.com.br>
11670	string	\xce\xda\xde\xfa	Cytovision Metaphases file
11680	string	\xed\xad\xef\xac	Cytovision Karyotype file
11690	string	\x0b\x00\x03\x00	Cytovision FISH Probe file
11700	string	\xed\xfe\xda\xbe	Cytovision FLEX file
11710	string	\xed\xab\xed\xfe	Cytovision FLEX file
11720	string	\xad\xfd\xea\xad	Cytovision RATS file
1173
1174# Wavelet Scalar Quantization format used in gray-scale fingerprint images
1175# From Tano M Fotang <mfotang@quanteq.com>
11760	string	\xff\xa0\xff\xa8\x00	Wavelet Scalar Quantization image data
1177
1178# Type:		PCO B16 image files
1179# URL:		http://www.pco.de/fileadmin/user_upload/db/download/MA_CWDCOPIE_0412b.pdf
1180# From:		Florian Philipp <florian.philipp@binarywings.net>
1181# Extension:	.b16
1182# Description:	Pixel image format produced by PCO Camware, typically used
1183#		together with PCO cameras.
1184# Note:		Different versions exist for e.g. 8 bit and 16 bit images.
1185#		Documentation is incomplete.
11860	string/b	PCO-	PCO B16 image data
1187>12	lelong		x	\b, %dx
1188>16	lelong		x	\b%d
1189>20	lelong		0	\b, short header
1190>20	lelong		-1	\b, extended header
1191>>24	lelong		0	\b, grayscale
1192>>>36	lelong		0	linear LUT
1193>>>36	lelong		1	logarithmic LUT
1194>>>28	lelong		x	[%d
1195>>>32	lelong		x	\b,%d]
1196>>24	lelong		1	\b, color
1197>>>64	lelong		0	linear LUT
1198>>>64	lelong		1	logarithmic LUT
1199>>>40	lelong		x	r[%d
1200>>>44	lelong		x	\b,%d]
1201>>>48	lelong		x	g[%d
1202>>>52	lelong		x	\b,%d]
1203>>>56	lelong		x	b[%d
1204>>>60	lelong		x	\b,%d]
1205
1206# Polar Monitor Bitmap (.pmb) used as logo for Polar Electro watches
1207# From: Markus Heidelberg <markus.heidelberg at web.de>
12080	string/t	[BitmapInfo2]	Polar Monitor Bitmap text
1209!:mime	image/x-polar-monitor-bitmap
1210
1211# From: Rick Richardson <rickrich@gmail.com>
1212# updated by: Joerg Jenderek
1213# URL: http://techmods.net/nuvi/
12140	string	GARMIN\ BITMAP\ 01	Garmin Bitmap file
1215# extension is also used for
1216# Sony SRF raw image (image/x-sony-srf)
1217# SRF map
1218# Terragen Surface Map (https://www.planetside.co.uk/terragen)
1219# FileLocator Pro search criteria file (https://www.mythicsoft.com/filelocatorpro)
1220!:ext srf
1221#!:mime	image/x-garmin-srf
1222# version 1.00,2.00,2.10,2.40,2.50
1223>0x2f	string		>0		\b, version %4.4s
1224# width (2880,2881,3240)
1225>0x55	uleshort	>0		\b, %dx
1226# height (80,90)
1227>>0x53	uleshort	x		\b%d
1228
1229# Type:	Ulead Photo Explorer5 (.pe5)
1230# URL:	http://www.jisyo.com/cgibin/view.cgi?EXT=pe5 (Japanese)
1231# From:	Simon Horman <horms@debian.org>
12320	string	IIO2H			Ulead Photo Explorer5
1233
1234# Type:	X11 cursor
1235# URL:	http://webcvs.freedesktop.org/mime/shared-mime-info/freedesktop.org.xml.in?view=markup
1236# From:	Mathias Brodala <info@noctus.net>
12370	string	Xcur			X11 cursor
1238
1239# Type:	Olympus ORF raw images.
1240# URL:	https://libopenraw.freedesktop.org/wiki/Olympus_ORF
1241# From:	Adam Buchbinder <adam.buchbinder@gmail.com>
12420	string		MMOR		Olympus ORF raw image data, big-endian
1243!:mime	image/x-olympus-orf
12440	string		IIRO		Olympus ORF raw image data, little-endian
1245!:mime	image/x-olympus-orf
12460	string		IIRS		Olympus ORF raw image data, little-endian
1247!:mime	image/x-olympus-orf
1248
1249# Type: files used in modern AVCHD camcoders to store clip information
1250# Extension: .cpi
1251# From: Alexander Danilov <alexander.a.danilov@gmail.com>
12520	string	HDMV0100	AVCHD Clip Information
1253
1254# From: Adam Buchbinder <adam.buchbinder@gmail.com>
1255# URL: http://local.wasp.uwa.edu.au/~pbourke/dataformats/pic/
1256# Radiance HDR; usually has .pic or .hdr extension.
12570	string	#?RADIANCE\n	Radiance HDR image data
1258#!mime	image/vnd.radiance
1259
1260# From: Adam Buchbinder <adam.buchbinder@gmail.com>
1261# URL: https://www.mpi-inf.mpg.de/resources/pfstools/pfs_format_spec.pdf
1262# Used by the pfstools packages. The regex matches for the image size could
1263# probably use some work. The MIME type is made up; if there's one in
1264# actual common use, it should replace the one below.
12650	string	PFS1\x0a	PFS HDR image data
1266#!mime	image/x-pfs
1267>1	regex	[0-9]*\ 		\b, %s
1268>>1	regex	\ [0-9]{4}		\bx%s
1269
1270# Type: Foveon X3F
1271# URL:  https://www.photofo.com/downloads/x3f-raw-format.pdf
1272# From: Adam Buchbinder <adam.buchbinder@gmail.com>
1273# Note that the MIME type isn't defined anywhere that I can find; if
1274# there's a canonical type for this format, it should replace this one.
12750	string	FOVb	Foveon X3F raw image data
1276!:mime	image/x-x3f
1277>6	leshort	x	\b, version %d.
1278>4	leshort	x	\b%d
1279>28	lelong	x	\b, %dx
1280>32	lelong	x	\b%d
1281
1282# Paint.NET file
1283# From Adam Buchbinder <adam.buchbinder@gmail.com>
12840	string	PDN3	Paint.NET image data
1285!:mime	image/x-paintnet
1286
1287# Not really an image.
1288# From: "Tano M. Fotang" <mfotang@quanteq.com>
12890	string	\x46\x4d\x52\x00	ISO/IEC 19794-2 Format Minutiae Record (FMR)
1290
1291# doc: https://www.shikino.co.jp/eng/products/images/FLOWER.jpg.zip
1292# example: https://www.shikino.co.jp/eng/products/images/FLOWER.wdp.zip
129390	bequad		0x574D50484F544F00	JPEG-XR Image
1294>98	byte&0x08	=0x08			\b, hard tiling
1295>99	byte&0x80	=0x80			\b, tiling present
1296>99	byte&0x40	=0x40			\b, codestream present
1297>99	byte&0x38	x			\b, spatial xform=
1298>99	byte&0x38	0x00			\bTL
1299>99	byte&0x38	0x08			\bBL
1300>99	byte&0x38	0x10			\bTR
1301>99	byte&0x38	0x18			\bBR
1302>99	byte&0x38	0x20			\bBT
1303>99	byte&0x38	0x28			\bRB
1304>99	byte&0x38	0x30			\bLT
1305>99	byte&0x38	0x38			\bLB
1306>100	byte&0x80	=0x80			\b, short header
1307>>102	beshort+1	x			\b, %d
1308>>104	beshort+1	x			\bx%d
1309>100	byte&0x80	=0x00			\b, long header
1310>>102	belong+1	x			\b, %x
1311>>106	belong+1	x			\bx%x
1312>101	beshort&0xf	x			\b, bitdepth=
1313>>101	beshort&0xf	0x0			\b1-WHITE=1
1314>>101	beshort&0xf	0x1			\b8
1315>>101	beshort&0xf	0x2			\b16
1316>>101	beshort&0xf	0x3			\b16-SIGNED
1317>>101	beshort&0xf	0x4			\b16-FLOAT
1318>>101	beshort&0xf	0x5			\b(reserved 5)
1319>>101	beshort&0xf	0x6			\b32-SIGNED
1320>>101	beshort&0xf	0x7			\b32-FLOAT
1321>>101	beshort&0xf	0x8			\b5
1322>>101	beshort&0xf	0x9			\b10
1323>>101	beshort&0xf	0xa			\b5-6-5
1324>>101	beshort&0xf	0xb			\b(reserved %d)
1325>>101	beshort&0xf	0xc			\b(reserved %d)
1326>>101	beshort&0xf	0xd			\b(reserved %d)
1327>>101	beshort&0xf	0xe			\b(reserved %d)
1328>>101	beshort&0xf	0xf			\b1-BLACK=1
1329>101	beshort&0xf0	x			\b, colorfmt=
1330>>101	beshort&0xf0	0x00			\bYONLY
1331>>101	beshort&0xf0	0x10			\bYUV240
1332>>101	beshort&0xf0	0x20			\bYWV422
1333>>101	beshort&0xf0	0x30			\bYWV444
1334>>101	beshort&0xf0	0x40			\bCMYK
1335>>101	beshort&0xf0	0x50			\bCMYKDIRECT
1336>>101	beshort&0xf0	0x60			\bNCOMPONENT
1337>>101	beshort&0xf0	0x70			\bRGB
1338>>101	beshort&0xf0	0x80			\bRGBE
1339>>101	beshort&0xf0	>0x80			\b(reserved 0x%x)
1340
1341# From: Johan van der Knijff <johan.vanderknijff@kb.nl>
1342#
1343# BPG (Better Portable Graphics) format
1344# https://bellard.org/bpg/
1345# http://fileformats.archiveteam.org/wiki/BPG
1346#
13470	string	\x42\x50\x47\xFB	BPG (Better Portable Graphics)
1348!:mime  image/bpg
1349
1350# From: Joerg Jenderek
1351# URL: https://en.wikipedia.org/wiki/Apple_Icon_Image_format
13520	string		icns		Mac OS X icon
1353!:mime	image/x-icns
1354!:apple	????icns
1355!:ext icns
1356>4	ubelong		>0
1357# file size
1358>>4	ubelong		x		\b, %d bytes
1359# icon type
1360>>8	string		x		\b, "%4.4s" type
1361
1362# TIM images
13630		lelong		0x00000010	TIM image,
1364>4		lelong  	0x8		4-Bit,
1365>4		lelong  	0x9		8-Bit,
1366>4		lelong  	0x2		15-Bit,
1367>4		lelong  	0x3		24-Bit,
1368>4		lelong 		&8
1369>>(8.l+12)	leshort		x		Pixel at (%d,
1370>>(8.l+14)	leshort		x		\b%d)
1371>>(8.l+16)	leshort		x		Size=%dx
1372>>(8.l+18)	leshort		x		\b%d,
1373>>4		lelong 		0x8		16 CLUT Entries at
1374>>4		lelong 		0x9		256 CLUT Entries at
1375>>12		leshort		x		(%d,
1376>>14		leshort		x		\b%d)
1377>4		lelong		^8
1378>>12		leshort		x		Pixel at (%d,
1379>>14		leshort		x		\b%d)
1380>>16		leshort		x		Size=%dx
1381>>18		leshort		x		\b%d
1382
1383# MDEC streams
13840		lelong		0x80010160	MDEC video stream,
1385>16		leshort		x		%dx
1386>18		leshort		x		\b%d
1387#>8		lelong		x		%d frames
1388#>4		leshort		x		secCount=%d;
1389#>6		leshort		x		nSectors=%d;
1390#>12		lelong		x		frameSize=%d;
1391
1392# BS encoded bitstreams
13932		leshort		0x3800		BS image,
1394>6		leshort		x		Version %d,
1395>4		leshort		x		Quantization %d,
1396>0		leshort		x		(Decompresses to %d words)
1397
1398# Type: farbfeld image.
1399# Url: http://tools.suckless.org/farbfeld/
1400# From: Ian D. Scott <ian@iandouglasscott.com>
1401#
14020		string		farbfeld	farbfeld image data,
1403>8		ubelong		x		%dx
1404>12		ubelong		x		\b%d
1405
1406# Type: Microsoft DirectDraw Surface (common data)
1407# URL:	https://msdn.microsoft.com/library/default.asp?url=/library/en-us/directx9_c/directx/graphics/reference/DDSFileReference/ddsfileformat.asp
1408# From: Morten Hustveit <morten@debian.org>
1409# Updated by: David Korth <gerbilsoft@gerbilsoft.com>
14100	name	ms-directdraw-surface
1411>0x10	ulelong	x			%u x
1412>0x0C	ulelong	x			%u
1413# Color depth.
1414>0x58	ulelong	>0			\b, %u-bit color
1415# Determine the pixel format.
1416>0x50	ulelong&0x4	4
1417# FIXME: Handle DX10 and XBOX formats.
1418>>0x54	string	x			\b, compressed using %.4s
1419>0x50	ulelong&0x2	0x2		\b, alpha only
1420>0x50	ulelong&0x200	0x200		\b, YUV
1421>0x50	ulelong&0x20000	0x20000		\b, luminance
1422# RGB pixel format
1423>0x50	ulelong&0x40	0x40
1424
1425# Determine the RGB format using the color masks.
1426# ulequad order: 0xGGGGGGGGRRRRRRRR, 0xAAAAAAAABBBBBBBB
1427
1428>>0x58		ulelong	16
1429
1430# NOTE: 15-bit color formats usually have 16-bit listed as the color depth.
1431>>>0x5C		ulequad	0x000003E000007C00
1432>>>>0x64	ulequad 0x000000000000001F	\b, RGB555
1433>>>0x5C		ulequad	0x000003E000001F00
1434>>>>0x64	ulequad 0x000000000000007C	\b, BGR555
1435
1436>>>0x5C		ulequad	0x000007E00000F800
1437>>>>0x64	ulequad 0x000000000000001F	\b, RGB565
1438>>>0x5C		ulequad	0x000007E000001F00
1439>>>>0x64	ulequad 0x00000000000000F8	\b, BGR565
1440
1441>>>0x5C		ulequad	0x000000F000000F00
1442>>>>0x64	ulequad 0x0000F0000000000F	\b, ARGB4444
1443>>>0x5C		ulequad	0x000000F00000000F
1444>>>>0x64	ulequad 0x0000F00000000F00	\b, ABGR4444
1445
1446>>>0x5C		ulequad	0x00000F000000F000
1447>>>>0x64	ulequad 0x0000000F000000F0	\b, RGBA4444
1448>>>0x5C		ulequad	0x00000F00000000F0
1449>>>>0x64	ulequad 0x0000000F0000F000	\b, BGRA4444
1450
1451>>>0x5C		ulequad	0x000000F000000F00
1452>>>>0x64	ulequad 0x000000000000000F	\b, xRGB4444
1453>>>0x5C		ulequad	0x000000F00000000F
1454>>>>0x64	ulequad 0x0000000000000F00	\b, xBGR4444
1455
1456>>>0x5C		ulequad	0x00000F000000F000
1457>>>>0x64	ulequad 0x00000000000000F0	\b, RGBx4444
1458>>>0x5C		ulequad	0x00000F00000000F0
1459>>>>0x64	ulequad 0x000000000000F000	\b, BGRx4444
1460
1461>>>0x5C		ulequad	0x000003E000007C00
1462>>>>0x64	ulequad 0x000080000000001F	\b, ARGB1555
1463>>>0x5C		ulequad	0x000003E000001F00
1464>>>>0x64	ulequad 0x000080000000007C	\b, ABGR1555
1465>>>0x5C		ulequad	0x000007C00000F800
1466>>>>0x64	ulequad 0x000000010000003E	\b, RGBA5551
1467>>>0x5C		ulequad	0x000007C00000003E
1468>>>>0x64	ulequad 0x000000010000F800	\b, BGRA5551
1469
1470>>88		ulelong 24
1471>>>0x5C		ulequad	0x0000FF0000FF0000
1472>>>>0x64	ulequad 0x00000000000000FF	\b, RGB888
1473>>>0x5C		ulequad	0x0000FF00000000FF
1474>>>>0x64	ulequad 0x0000000000FF0000	\b, BGR888
1475
1476>>88		ulelong 32
1477>>>0x5C		ulequad	0x0000FF0000FF0000
1478>>>>0x64	ulequad 0xFF000000000000FF	\b, ARGB8888
1479>>>0x5C		ulequad	0x0000FF00000000FF
1480>>>>0x64	ulequad 0xFF00000000FF0000	\b, ABGR8888
1481
1482>>>0x5C		ulequad	0x00FF0000FF000000
1483>>>>0x64	ulequad 0x000000FF0000FF00	\b, RGBA8888
1484>>>0x5C		ulequad	0x00FF00000000FF00
1485>>>>0x64	ulequad 0x000000FFFF000000	\b, BGBA8888
1486
1487>>>0x5C		ulequad	0x0000FF0000FF0000
1488>>>>0x64	ulequad 0x00000000000000FF	\b, xRGB8888
1489>>>0x5C		ulequad	0x0000FF00000000FF
1490>>>>0x64	ulequad 0x0000000000FF0000	\b, xBGR8888
1491
1492>>>0x5C		ulequad	0x00FF0000FF000000
1493>>>>0x64	ulequad 0x000000000000FF00	\b, RGBx8888
1494>>>0x5C		ulequad	0x00FF00000000FF00
1495>>>>0x64	ulequad 0x00000000FF000000	\b, BGBx8888
1496
1497# Less common 32-bit color formats.
1498>>>0x5C		ulequad	0xFFFF00000000FFFF
1499>>>>0x64	ulequad 0x0000000000000000	\b, G16R16
1500>>>0x5C		ulequad	0x0000FFFFFFFF0000
1501>>>>0x64	ulequad 0x0000000000000000	\b, R16G16
1502
1503>>>0x5C		ulequad	0x000FFC003FF00000
1504>>>>0x64	ulequad 0xC0000000000003FF	\b, A2R10G10B10
1505>>>0x5C		ulequad	0x000FFC00000003FF
1506>>>>0x64	ulequad 0xC00000003FF00000	\b, A2B10G10R10
1507
1508# Type: Microsoft DirectDraw Surface
1509# URL:	https://msdn.microsoft.com/library/default.asp?url=/library/en-us/directx9_c/directx/graphics/reference/DDSFileReference/ddsfileformat.asp
1510# From: Morten Hustveit <morten@debian.org>
1511# Updated by: David Korth <gerbilsoft@gerbilsoft.com>
15120	string/b	DDS\040\174\000\000\000 Microsoft DirectDraw Surface (DDS):
1513>0	use	ms-directdraw-surface
1514
1515# Type: Sega PVR image.
1516# From: David Korth <gerbilsoft@gerbilsoft.com>
1517# References:
1518# - https://fabiensanglard.net/Mykaruga/tools/segaPVRFormat.txt
1519# - https://github.com/yazgoo/pvrx2png
1520# - https://github.com/nickworonekin/puyotools
1521
1522# Sega PVR header.
15230	name	sega-pvr-image-header
1524>0x0C	leshort	x	%u x
1525>0x0E	leshort	x	%u
1526# Image format.
1527>0x08	byte	0	\b, ARGB1555
1528>0x08	byte	1	\b, RGB565
1529>0x08	byte	2	\b, ARGB4444
1530>0x08	byte	3	\b, YUV442
1531>0x08	byte	4	\b, Bump
1532>0x08	byte	5	\b, 4bpp
1533>0x08	byte	6	\b, 8bpp
1534# Image data type.
1535>0x09	byte	0x01	\b, square twiddled
1536>0x09	byte	0x02	\b, square twiddled & mipmap
1537>0x09	byte	0x03	\b, VQ
1538>0x09	byte	0x04	\b, VQ & mipmap
1539>0x09	byte	0x05	\b, 8-bit CLUT twiddled
1540>0x09	byte	0x06	\b, 4-bit CLUT twiddled
1541>0x09	byte	0x07	\b, 8-bit direct twiddled
1542>0x09	byte	0x08	\b, 4-bit direct twiddled
1543>0x09	byte	0x09	\b, rectangle
1544>0x09	byte	0x0B	\b, rectangular stride
1545>0x09	byte	0x0D	\b, rectangular twiddled
1546>0x09	byte	0x10	\b, small VQ
1547>0x09	byte	0x11	\b, small VQ & mipmap
1548>0x09	byte	0x12	\b, square twiddled & mipmap
1549
1550# Sega PVR image.
15510	string	PVRT
1552>0x10	string	DDS\040\174\000\000\000 Sega PVR (Xbox) image:
1553>>0x20	use	ms-directdraw-surface
1554>0x10	belong	!0x44445320		Sega PVR image:
1555>>0	use	sega-pvr-image-header
1556
1557# Sega PVR image with GBIX.
15580	string	GBIX
1559>0x10	string	PVRT
1560>>0x10	string	DDS\040\174\000\000\000 Sega PVR (Xbox) image:
1561>>>0x20	use	ms-directdraw-surface
1562>>0x10	belong	!0x44445320		Sega PVR image:
1563>>>0x10	use	sega-pvr-image-header
1564>>0x08	lelong	x	\b, global index = %u
1565
1566# Sega GVR header.
15670	name	sega-gvr-image-header
1568>0x0C	beshort	x	%u x
1569>0x0E	beshort	x	%u
1570# Image data format.
1571>0x0B	byte	0	\b, I4
1572>0x0B	byte	1	\b, I8
1573>0x0B	byte	2	\b, IA4
1574>0x0B	byte	3	\b, IA8
1575>0x0B	byte	4	\b, RGB565
1576>0x0B	byte	5	\b, RGB5A3
1577>0x0B	byte	6	\b, ARGB8888
1578>0x0B	byte	8	\b, CI4
1579>0x0B	byte	9	\b, CI8
1580>0x0B	byte	14	\b, DXT1
1581
1582# Sega GVR image.
15830	string	GVRT	Sega GVR image:
1584>0x10	use	sega-gvr-image-header
1585
1586# Sega GVR image with GBIX.
15870	string	GBIX
1588>0x10	string	GVRT	Sega GVR image:
1589>>0x10	use	sega-gvr-image-header
1590>>0x08	belong	x	\b, global index = %u
1591
1592# Sega GVR image with GCIX. (Wii)
15930	string	GCIX
1594>0x10	string	GVRT	Sega GVR image:
1595>>0x10	use	sega-gvr-image-header
1596>>0x08	belong	x	\b, global index = %u
1597
1598# Light Field Picture
1599# Documentation: http://optics.miloush.net/lytro/TheFileFormat.aspx
1600# Typical file extensions: .lfp .lfr .lfx
1601
16020	belong	0x894C4650
1603>4	belong	0x0D0A1A0A
1604>12	belong	0x00000000	Lytro Light Field Picture
1605>8	belong	x		\b, version %d
1606
1607# Type: Vision Research Phantom CINE Format
1608# URL: https://www.phantomhighspeed.com/
1609# URL2: http://phantomhighspeed.force.com/vriknowledge/servlet/fileField?id=0BEU0000000Cfyk
1610# From: Harry Mallon <hjmallon at gmail.com>
1611#
1612# This has a short "CI" code but the 44 is the size of the struct which is
1613# stable
16140	string	CI
1615>2	leshort 44		Vision Research CINE Video,
1616>>4	leshort	0		Grayscale,
1617>>4	leshort 1		JPEG Compressed,
1618>>4	leshort 2		RAW,
1619>>6	leshort x		version %d,
1620>>20	lelong	x		%d frames,
1621>>48	lelong	x		%dx
1622>>52	lelong	x		\b%d
1623
1624# Type: ARRI Raw Image
1625# Info: SMPTE RDD30:2014
1626# From: Harry Mallon <hjmallon at gmail.com>
16270	string ARRI		ARRI ARI image data,
1628>4	lelong 0x78563412	little-endian,
1629>4 	lelong 0x12345678	big-endian,
1630>12	lelong x		version %d,
1631>20	lelong x 		%dx
1632>24	lelong x		\b%d
1633
1634# Type: Khronos KTX texture.
1635# From: David Korth <gerbilsoft@gerbilsoft.com>
1636# References:
1637# - https://www.khronos.org/opengles/sdk/tools/KTX/file_format_spec/
1638
1639# glEnum decoding.
1640# NOTE: Only the most common formats are listed here.
16410	name	khronos-ktx-glEnum
1642>0	lelong	0x1907	\b, RGB
1643>0	lelong	0x1908	\b, RGBA
1644>0	lelong	0x1909	\b, LUMINANCE
1645>0	lelong	0x190A	\b, LUMINANCE_ALPHA
1646>0	lelong	0x80E1	\b, BGR
1647>0	lelong	0x80E2	\b, BGRA
1648>0	lelong	0x83A0	\b, RGB_S3TC
1649>0	lelong	0x83A1	\b, RGB4_S3TC
1650>0	lelong	0x83A2	\b, RGBA_S3TC
1651>0	lelong	0x83A3	\b, RGBA4_S3TC
1652>0	lelong	0x83A4	\b, RGBA_DXT5_S3TC
1653>0	lelong	0x83A5	\b, RGBA4_DXT5_S3TC
1654>0	lelong	0x8D64	\b, ETC1_RGB8_OES
1655>0	lelong	0x9270	\b, COMPRESSED_R11_EAC
1656>0	lelong	0x9271	\b, COMPRESSED_SIGNED_R11_EAC
1657>0	lelong	0x9272	\b, COMPRESSED_RG11_EAC
1658>0	lelong	0x9273	\b, COMPRESSED_SIGNED_RG11_EAC
1659>0	lelong	0x9274	\b, COMPRESSED_RGB8_ETC2
1660>0	lelong	0x9275	\b, COMPRESSED_SRGB8_ETC2
1661>0	lelong	0x9276	\b, COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2
1662>0	lelong	0x9277	\b, COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2
1663>0	lelong	0x9278	\b, COMPRESSED_RGBA2_ETC2_EAC
1664>0	lelong	0x9279	\b, COMPRESSED_SRGB8_ALPHA8_ETC2_EAC
1665>0	lelong	0x93B0	\b, COMPRESSED_RGBA_ASTC_4x4_KHR
1666>0	lelong	0x93B1	\b, COMPRESSED_RGBA_ASTC_5x4_KHR
1667>0	lelong	0x93B2	\b, COMPRESSED_RGBA_ASTC_5x5_KHR
1668>0	lelong	0x93B3	\b, COMPRESSED_RGBA_ASTC_6x5_KHR
1669>0	lelong	0x93B4	\b, COMPRESSED_RGBA_ASTC_6x6_KHR
1670>0	lelong	0x93B5	\b, COMPRESSED_RGBA_ASTC_8x5_KHR
1671>0	lelong	0x93B6	\b, COMPRESSED_RGBA_ASTC_8x6_KHR
1672>0	lelong	0x93B7	\b, COMPRESSED_RGBA_ASTC_8x8_KHR
1673>0	lelong	0x93B8	\b, COMPRESSED_RGBA_ASTC_10x5_KHR
1674>0	lelong	0x93B9	\b, COMPRESSED_RGBA_ASTC_10x6_KHR
1675>0	lelong	0x93BA	\b, COMPRESSED_RGBA_ASTC_10x8_KHR
1676>0	lelong	0x93BB	\b, COMPRESSED_RGBA_ASTC_10x10_KHR
1677>0	lelong	0x93BC	\b, COMPRESSED_RGBA_ASTC_12x10_KHR
1678>0	lelong	0x93BD	\b, COMPRESSED_RGBA_ASTC_12x12_KHR
1679>0	lelong	0x93D0	\b, COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR
1680>0	lelong	0x93D1	\b, COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR
1681>0	lelong	0x93D2	\b, COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR
1682>0	lelong	0x93D3	\b, COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR
1683>0	lelong	0x93D4	\b, COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR
1684>0	lelong	0x93D5	\b, COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR
1685>0	lelong	0x93D6	\b, COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR
1686>0	lelong	0x93D7	\b, COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR
1687>0	lelong	0x93D8	\b, COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR
1688>0	lelong	0x93D9	\b, COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR
1689>0	lelong	0x93DA	\b, COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR
1690>0	lelong	0x93DB	\b, COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR
1691>0	lelong	0x93DC	\b, COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR
1692>0	lelong	0x93DD	\b, COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR
1693
1694# Endian-specific KTX header.
1695# TODO: glType (all textures I've seen so far are GL_UNSIGNED_BYTE)
16960	name	khronos-ktx-endian-header
1697>20	lelong	x	\b, %u
1698>24	lelong	>1	x %u
1699>28	lelong	>1	x %u
1700>8	lelong	>0
1701>>8	use	khronos-ktx-glEnum
1702>8	lelong	0
1703>>12	use	khronos-ktx-glEnum
1704
1705# Main KTX header.
1706# Determine endianness, then check the rest of the header.
17070	string	\xABKTX\ 11\xBB\r\n\x1A\n	Khronos KTX texture
1708>12	lelong	0x04030201			(little-endian)
1709>>16	use	khronos-ktx-endian-header
1710>12	belong	0x04030201			(big-endian)
1711>>16	use	\^khronos-ktx-endian-header
1712
1713# Type: Valve VTF texture.
1714# From: David Korth <gerbilsoft@gerbilsoft.com>
1715# References:
1716# - https://developer.valvesoftware.com/wiki/Valve_Texture_Format
1717
1718# VTF image formats.
17190	name	vtf-image-format
1720>0	lelong	0	RGBA8888
1721>0	lelong	1	ABGR8888
1722>0	lelong	2	RGB888
1723>0	lelong	3	BGR888
1724>0	lelong	4	RGB565
1725>0	lelong	5	I8
1726>0	lelong	6	IA88
1727>0	lelong	7	P8
1728>0	lelong	8	A8
1729>0	lelong	9	RGB888 (bluescreen)
1730>0	lelong	10	BGR888 (bluescreen)
1731>0	lelong	11	ARGB8888
1732>0	lelong	12	BGRA8888
1733>0	lelong	13	DXT1
1734>0	lelong	14	DXT3
1735>0	lelong	15	DXT5
1736>0	lelong	16	BGRx8888
1737>0	lelong	17	BGR565
1738>0	lelong	18	BGRx5551
1739>0	lelong	19	BGRA4444
1740>0	lelong	20	DXT1+A1
1741>0	lelong	21	BGRA5551
1742>0	lelong	22	UV88
1743>0	lelong	23	UVWQ8888
1744>0	lelong	24	RGBA16161616F
1745>0	lelong	25	RGBA16161616
1746>0	lelong	26	UVLX8888
1747
1748# Main VTF header.
17490	string	VTF\0				Valve Texture Format
1750>4	lelong	x				v%u
1751>8	lelong	x				\b.%u
1752>0x10	leshort	x				\b, %u
1753>0x12	leshort	>1				x %u
1754>4	lequad	0x0000000700000002
1755>>0x3F	leshort	>1				x %u
1756>0x18	leshort	>1				\b, %u frames
1757>0x38	byte	x				\b, mipmaps: %u
1758>0x34	lelong	>-1				\b,
1759>>0x34	use	vtf-image-format
1760
1761# Type: Valve VTF3 (PS3) texture.
1762# From: David Korth <gerbilsoft@gerbilsoft.com>
17630	string		VTF3	Valve Texture Format (PS3)
1764>0x14	beshort		x	\b, %u
1765>0x16	beshort		x	\b x %u
1766>0x10	belong&0x2000	0	\b, DXT1
1767>0x10	belong&0x2000	0x2000	\b, DXT5
1768
1769# Type: ASTC texture.
1770# From: David Korth <gerbilsoft@gerbilsoft.com>
1771# References:
1772# - https://stackoverflow.com/questions/22600678/determine-internal-format-of-given-astc-compressed-image-through-its-header
1773# - https://stackoverflow.com/a/22682244
17740	lelong	0x5ca1ab13			ASTC
1775>4	byte	x				%u
1776>5	byte	x				\bx%u
1777>6	byte	>1				\bx%u
1778# X, Y, and Z dimensions are stored as 24-bit LE.
1779# Pretend it's 32-bit and mask off the high byte.
1780>7	lelong&0x00FFFFFF	x		texture, %u
1781>10	lelong&0x00FFFFFF	x		x %u
1782>13	lelong&0x00FFFFFF	>1		x %u
1783
1784# Zebra Metafile graphic
1785# http://www.fileformat.info/format/zbr/egff.htm
17860	beshort	0x9a02	Zebra Metafile graphic
1787>2	leshort 1	(version 1.x)
1788>2	leshort	2	(version 1.1x or 1.2x)
1789>2	leshort	3	(version 1.49)
1790>2	leshort	4	(version 1.50)
1791>4	string	x	(comment = %s)
1792
1793# Microsoft Paint graphic
1794# http://www.fileformat.info/format/mspaint/egff.htm
17950	string	DanM 	icrosoft Paint image data (version 1.x)
1796>4	leshort	x	(%d
1797>>6	leshort	x	x %d)
17980	string	LinS 	Microsoft Paint image data (version 2.0)
1799>4	leshort	x	(%d
1800>>6	leshort	x	x %d)
1801
1802# reMarkable tablet internal file format (https://www.remarkable.com/)
1803# https://github.com/ax3l/lines-are-beautiful
1804# https://plasma.ninja/blog/devices/remarkable/binary/format/2017/12/26/\
1805#	reMarkable-lines-file-format.html#what-to-do-next
1806# from Axel Huebl
18070		string	reMarkable
1808>11		string	lines
1809>>17		string	with
1810>>>22		string	selections
1811>>>>33		string	and
1812>>>>>37		string	layers
1813>>>>>>43	lelong	x	reMarkable tablet notebook lines, 1404 x 1872, %x page(s)
1814
1815# newer per-page files for the reMarkable
18160		string	reMarkable
1817>11		string	.lines
1818>>18		string	file,
1819>>>24		string	version=
1820>>>>32		byte	x	reMarkable tablet page (v%c), 1404 x 1872,
1821>>>>>43		lelong	x	%d layer(s)
1822
1823# Type: PVR3 texture.
1824# From: David Korth <gerbilsoft@gerbilsoft.com>
1825# References:
1826# - http://cdn.imgtec.com/sdk-documentation/PVR+File+Format.Specification.pdf
1827
1828# PVR3 pixel formats.
18290	name		pvr3-pixel-format
1830>4	ulelong	0
1831>>0	ulelong	0	PVRTC 2bpp RGB
1832>>0	ulelong	1	PVRTC 2bpp RGBA
1833>>0	ulelong	2	PVRTC 4bpp RGB
1834>>0	ulelong	3	PVRTC 4bpp RGBA
1835>>0	ulelong	4	PVRTC-II 2bpp
1836>>0	ulelong	5	PVRTC-II 4bpp
1837>>0	ulelong	6	ETC1
1838>>0	ulelong	7	DXT1
1839>>0	ulelong	8	DXT2
1840>>0	ulelong	9	DXT3
1841>>0	ulelong	10	DXT4
1842>>0	ulelong	11	DXT5
1843>>0	ulelong	12	BC4
1844>>0	ulelong	13	BC5
1845>>0	ulelong	14	BC6
1846>>0	ulelong	15	BC7
1847>>0	ulelong	16	UYVY
1848>>0	ulelong	17	YUY2
1849>>0	ulelong	18	BW1bpp
1850>>0	ulelong	19	R9G9B9E5 Shared Exponent
1851>>0	ulelong	20	RGBG8888
1852>>0	ulelong	21	GRGB8888
1853>>0	ulelong	22	ETC2 RGB
1854>>0	ulelong	23	ETC2 RGBA
1855>>0	ulelong	24	ETC2 RGB A1
1856>>0	ulelong	25	EAC R11
1857>>0	ulelong	26	EAC RG11
1858>>0	ulelong	27	ASTC_4x4
1859>>0	ulelong	28	ASTC_5x4
1860>>0	ulelong	29	ASTC_5x5
1861>>0	ulelong	30	ASTC_6x5
1862>>0	ulelong	31	ASTC_6x6
1863>>0	ulelong	32	ASTC_8x5
1864>>0	ulelong	33	ASTC_8x6
1865>>0	ulelong	34	ASTC_8x8
1866>>0	ulelong	35	ASTC_10x5
1867>>0	ulelong	36	ASTC_10x6
1868>>0	ulelong	37	ASTC_10x8
1869>>0	ulelong	38	ASTC_10x10
1870>>0	ulelong	39	ASTC_12x10
1871>>0	ulelong	40	ASTC_12x12
1872>>0	ulelong	41	ASTC_3x3x3
1873>>0	ulelong	42	ASTC_4x3x3
1874>>0	ulelong	43	ASTC_4x4x3
1875>>0	ulelong	44	ASTC_4x4x4
1876>>0	ulelong	45	ASTC_5x4x4
1877>>0	ulelong	46	ASTC_5x5x4
1878>>0	ulelong	47	ASTC_5x5x5
1879>>0	ulelong	48	ASTC_6x5x5
1880>>0	ulelong	49	ASTC_6x6x5
1881>>0	ulelong	50	ASTC_6x6x6
1882>4	ulelong	!0
1883>>0	byte	!0	%c
1884>>1	byte	!0	\b%c
1885>>2	byte	!0	\b%c
1886>>3	byte	!0	\b%c
1887
18880	string		PVR\x03			PVR 3.0 texture:
1889>0x18	ulelong		x	%u x
1890>0x1C	ulelong		x	%u
1891>0x20	ulelong		>1	x %u
1892>0x08	byte		x	\b,
1893>0x08	use	pvr3-pixel-format
1894>0x10	ulelong		1	\b, sRGB
1895>0x04	ulelong&0x02	0x02	\b, premultiplied alpha
1896
1897# Type: Microsoft Xbox XPR0 texture.
1898# From: David Korth <gerbilsoft@gerbilsoft.com>
1899# References:
1900# - https://github.com/Cxbx-Reloaded/Cxbx-Reloaded/blob/develop/src/core/hle/D3D8/XbD3D8Types.h
1901
1902# XPR pixel formats.
19030	name	xbox-xpr-pixel-format
1904>0	byte	0x00	L8
1905>0	byte	0x01	AL8
1906>0	byte	0x02	ARGB1555
1907>0	byte	0x03	RGB555
1908>0	byte	0x04	ARGB4444
1909>0	byte	0x05	RGB565
1910>0	byte	0x06	ARGB8888
1911>0	byte	0x07	xRGB8888
1912>0	byte	0x0B	P8
1913>0	byte	0x0C	DXT1
1914>0	byte	0x0E	DXT2
1915>0	byte	0x0F	DXT4
1916>0	byte	0x10	Linear ARGB1555
1917>0	byte	0x11	Linear RGB565
1918>0	byte	0x12	Linear ARGB8888
1919>0	byte	0x13	Linear L8
1920>0	byte	0x16	Linear R8B8
1921>0	byte	0x17	Linear G8B8
1922>0	byte	0x19	A8
1923>0	byte	0x1A	A8L8
1924>0	byte	0x1B	Linear AL8
1925>0	byte	0x1C	Linear RGB555
1926>0	byte	0x1D	Linear ARGB4444
1927>0	byte	0x1E	Linear xRGB8888
1928>0	byte	0x1F	Linear A8
1929>0	byte	0x20	Linear A8L8
1930>0	byte	0x24	YUY2
1931>0	byte	0x25	UYVY
1932>0	byte	0x27	L6V5U5
1933>0	byte	0x28	V8U8
1934>0	byte	0x29	R8B8
1935>0	byte	0x2A	D24S8
1936>0	byte	0x2B	F24S8
1937>0	byte	0x2C	D16
1938>0	byte	0x2D	F16
1939>0	byte	0x2E	Linear D24S8
1940>0	byte	0x2F	Linear F24S8
1941>0	byte	0x30	Linear D16
1942>0	byte	0x31	Linear F16
1943>0	byte	0x32	L16
1944>0	byte	0x33	V16U16
1945>0	byte	0x35	Linear L16
1946>0	byte	0x36	Linear V16U16
1947>0	byte	0x37	Linear L6V5U5
1948>0	byte	0x38	RGBA5551
1949>0	byte	0x39	RGBA4444
1950>0	byte	0x3A	QWVU8888
1951>0	byte	0x3B	BGRA8888
1952>0	byte	0x3C	RGBA8888
1953>0	byte	0x3D	Linear RGBA5551
1954>0	byte	0x3E	Linear RGBA4444
1955>0	byte	0x3F	Linear ABGR8888
1956>0	byte	0x40	Linear BGRA8888
1957>0	byte	0x41	Linear RGBA8888
1958>0	byte	0x64	Vertex Data
1959
19600	string		XPR0	Microsoft Xbox XPR0 texture
1961>0x19	byte	x	\b, format:
1962>>0x19	use	xbox-xpr-pixel-format
1963