mirror of
https://github.com/odin-lang/Odin.git
synced 2026-02-18 17:08:21 +00:00
Add even more file formats
This commit is contained in:
@@ -7,18 +7,22 @@ Which_File_Type :: enum {
|
||||
|
||||
BMP,
|
||||
EXR,
|
||||
FLIF,
|
||||
GIF,
|
||||
HDR, // Radiance RGBE HDR
|
||||
ICNS, // Apple Icon Image
|
||||
JPEG,
|
||||
JPEG_2000,
|
||||
JPEG_XL,
|
||||
PBM, PGM, PPM, // NetPBM family
|
||||
PIC, // Softimage PIC
|
||||
PNG,
|
||||
PNG, // Portable Network Graphics
|
||||
PSD, // Photoshop PSD
|
||||
QOI,
|
||||
QOI, // Quite Okay Image
|
||||
SGI_RGB, // Silicon Graphics Image RGB file format
|
||||
Sun_Rast, // Sun Raster Graphic
|
||||
TGA, // Targa Truevision
|
||||
TIFF,
|
||||
TIFF, // Tagged Image File Format
|
||||
WebP,
|
||||
XBM, // X BitMap
|
||||
}
|
||||
@@ -90,8 +94,19 @@ which_bytes :: proc(data: []byte) -> Which_File_Type {
|
||||
return .GIF
|
||||
case s[6:10] == "JFIF", s[6:10] == "Exif":
|
||||
return .JPEG
|
||||
case s[:4] == "\xff\xd8\xff\xdb":
|
||||
return .JPEG
|
||||
case s[:3] == "\xff\xd8\xff":
|
||||
switch s[4] {
|
||||
case 0xdb, 0xee, 0xe1, 0xe0:
|
||||
return .JPEG
|
||||
}
|
||||
switch {
|
||||
case s[:12] == "\xff\xd8\xff\xe0\x00\x10\x4a\x46\x49\x46\x00\x01":
|
||||
return .JPEG
|
||||
}
|
||||
case s[:4] == "\xff\x4f\xff\x51", s[:12] == "\x00\x00\x00\x0c\x6a\x50\x20\x20\x0d\x0a\x87\x0a":
|
||||
return .JPEG_2000
|
||||
case s[:12] == "\x00\x00\x00\x0c\x4a\x58\x4c\x20\x0d\x0a\x87\x0a":
|
||||
return .JPEG_XL
|
||||
case s[0] == 'P':
|
||||
switch s[2] {
|
||||
case '\t', '\n', '\r':
|
||||
@@ -112,7 +127,7 @@ which_bytes :: proc(data: []byte) -> Which_File_Type {
|
||||
return .SGI_RGB
|
||||
case s[:4] == "\x59\xA6\x6A\x95":
|
||||
return .Sun_Rast
|
||||
case s[:2] == "MM", s[:2] == "II":
|
||||
case s[:4] == "MM\x2a\x00", s[:4] == "II\x00\x2A":
|
||||
return .TIFF
|
||||
case s[:4] == "RIFF" && s[8:12] == "WEBP":
|
||||
return .WebP
|
||||
@@ -125,6 +140,10 @@ which_bytes :: proc(data: []byte) -> Which_File_Type {
|
||||
return .PSD
|
||||
case s[:4] != "\x53\x80\xF6\x34" && s[88:92] == "PICT":
|
||||
return .PIC
|
||||
case s[:4] == "\x69\x63\x6e\x73":
|
||||
return .ICNS
|
||||
case s[:4] == "\x46\x4c\x49\x46":
|
||||
return .FLIF
|
||||
case:
|
||||
// More complex formats
|
||||
if test_tga(s) {
|
||||
|
||||
Reference in New Issue
Block a user