mirror of
https://github.com/WerWolv/ImHex-Patterns.git
synced 2026-03-27 23:37:04 -05:00
* repo-wide: trim trailing spaces Note: This doesn't touch the .tbl files in encodings/ since they include meaningful trailing spaces (`20= `) * patterns: clean up duplicate semicolons * ELF: add header magic check * glTF: use type::Magic for magic value * glTF: check that the file size in the header matches * xgstexture: fix generics syntax for magic value * JPEG: define hex enum with 0x00 instead of 0X00 * CI: update deprecated actions --------- Co-authored-by: Nik <werwolv98@gmail.com>
50 lines
954 B
Rust
50 lines
954 B
Rust
#pragma author WerWolv
|
|
#pragma description Windows Icon (.ico) or Cursor (.cur)
|
|
|
|
#pragma endian little
|
|
|
|
import std.sys;
|
|
|
|
#pragma MIME image/vnd.microsoft.icon
|
|
#pragma MIME image/x-icon
|
|
#pragma MIME image/icon
|
|
#pragma MIME image/ico
|
|
#pragma MIME text/ico
|
|
#pragma MIME application/ico
|
|
|
|
enum ImageType : u16 {
|
|
Icon = 1,
|
|
Cursor = 2
|
|
};
|
|
|
|
struct ICONDIR {
|
|
u16 reserved [[hidden]];
|
|
ImageType type;
|
|
u16 num_images;
|
|
};
|
|
|
|
struct ImageData {
|
|
u8 data[parent.image_data_size] [[inline]];
|
|
};
|
|
|
|
struct ICONDIRENTRY {
|
|
u8 width, height;
|
|
u8 num_colors;
|
|
u8 reserved [[hidden]];
|
|
|
|
if (header.type == ImageType::Icon) {
|
|
u16 color_planes;
|
|
u16 bits_per_pixel;
|
|
} else if (header.type == ImageType::Cursor) {
|
|
u16 horizontal_hotspot_coordinate;
|
|
u16 vertical_hotspot_coordinate;
|
|
}
|
|
|
|
u32 image_data_size;
|
|
ImageData *image_data : u32;
|
|
};
|
|
|
|
ICONDIR header @ 0x00;
|
|
ICONDIRENTRY images[header.num_images] @ $;
|
|
|
|
std::assert(header.reserved == 0x00, "Invalid ICO header"); |