From 658ec20b3741d029d5e953b9f250c2aa760da584 Mon Sep 17 00:00:00 2001 From: pew Date: Tue, 9 Jan 2024 23:38:18 +0000 Subject: [PATCH] patterns: Add .ras pattern (#216) * Add simple .ras file pattern * Update ras.hexpat * Update README.md * Add .ras test file * Update ras.hexpat * Update ras.hexpat * Update ras.hexpat * Update ras.hexpat --- README.md | 1 + patterns/ras.hexpat | 31 ++++++++++++++++++++++++ tests/patterns/test_data/ras.hexpat.ras | Bin 0 -> 65568 bytes 3 files changed, 32 insertions(+) create mode 100644 patterns/ras.hexpat create mode 100644 tests/patterns/test_data/ras.hexpat.ras diff --git a/README.md b/README.md index 141c22c..a59c76e 100644 --- a/README.md +++ b/README.md @@ -94,6 +94,7 @@ Everything will immediately show up in ImHex's Content Store and gets bundled wi | PYC | | [`patterns/pyc.hexpat`](patterns/pyc.hexpat) | Python bytecode files | | QBCL | | [`patterns/qbcl.hexpat`](patterns/qbcl.hexpat) | Qubicle voxel scene project file | | QOI | `image/qoi` | [`patterns/qoi.hexpat`](patterns/qoi.hexpat) | QOI image files | +| RAS | `image/x-sun-raster` | [`patterns/ras.hexpat`](patterns/ras.hexpat) | RAS image files | | Shell Link | `application/x-ms-shortcut` | [`patterns/lnk.hexpat`](patterns/lnk.hexpat) | Windows Shell Link file format | | shp | | [`patterns/shp.hexpat`](patterns/shp.hexpat) | ESRI shape file | | shx | | [`patterns/shx.hexpat`](patterns/shx.hexpat) | ESRI index file | diff --git a/patterns/ras.hexpat b/patterns/ras.hexpat new file mode 100644 index 0000000..a2709a9 --- /dev/null +++ b/patterns/ras.hexpat @@ -0,0 +1,31 @@ +#pragma author Fl3ch4 + +#pragma MIME image/webp +#pragma endian big + + +#include +#include + + +struct RAS{ + + //Magic Bytes + type::Magic<"\x59\xa6\x6a\x95"> signature; + + //BE -> px -> mm + u32 width [[name("Width")]]; + u32 height [[name("Height")]]; + + //BE + u32 depth; + u32 length; + u32 type; + u32 colorMapType; + u32 colorMapLenght; + + //Data Viewer + u8 image_data[length]; +}; + +RAS header @0x00; diff --git a/tests/patterns/test_data/ras.hexpat.ras b/tests/patterns/test_data/ras.hexpat.ras new file mode 100644 index 0000000000000000000000000000000000000000..b02ef30c20adf601ebe08fd45596f7a2925f1265 GIT binary patch literal 65568 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 gYX)31;F