Skip to documentation
SLOP

tiny.gif.animationFromBytes

Reference tiny.gif animationFromBytes

Defined in tiny.gif.

Called byCallsprivate sourcelib.gif.src.decode.test.TestDecodeinittest sourcelib.gif.src.decode.testtest: Activated GIF decode storage pe...test sourcelib.gif.src.decode.testtest: GIF decode errors release stora...test sourcelib.gif.src.decode.testtest: GIF decode storage rejects conc...private sourcelib.gif.src.test.TestDecodeinittest sourcelib.gif.src.testtest: GIF root composes caller-select...private sourcelib.gif.src.decode.readdecodeFrameprivate sourcelib.gif.src.decode.readreadLoopCountprivate sourcelib.gif.src.decode.streamreadControlprivate sourcelib.gif.src.decode.streamskipSubBlocksprivate sourcelib.trace.src.profiling.storageresettiny.gifanimationFromBytes
Static calls · unresolved targets: 1 · external targets: 4.

Source

Source: lib/gif/src/decode/read.zig:12

zig
pub fn animationFromBytes(storage: *Storage, bytes: []const u8) Error!Animation {    const regions = try storage.acquire(bytes);    errdefer storage.reset();    var reader = stream.Reader{ .bytes = bytes };    const header = try stream.readHeader(&reader);    var control = model.Control{};    var loop_count: ?u16 = null;    var frame_index: usize = 0;    var trailer = false;    while (!trailer) {        switch (try reader.byte()) {            0x21 => {                const label = try reader.byte();                switch (label) {                    0xf9 => control = try stream.readControl(&reader),                    0xff => {                        const size = try reader.byte();                        const app = try reader.take(size);                        if (size == 11 and (std.mem.eql(u8, app, "NETSCAPE2.0") or std.mem.eql(u8, app, "ANIMEXTS1.0"))) {                            loop_count = try readLoopCount(&reader) orelse loop_count;                        } else {                            try stream.skipSubBlocks(&reader);                        }                    },                    else => try stream.skipSubBlocks(&reader),                }            },            0x2c => {                if (frame_index >= regions.frames.len) return error.FrameCapacityExceeded;                const snapshot = regions.retained_rgba8[frame_index * regions.canvas.len ..][0..regions.canvas.len];                regions.frames[frame_index] = try decodeFrame(                    &reader,                    header,                    control,                    regions.canvas,                    regions.previous_canvas,                    regions.indices,                    regions.compressed,                    snapshot,                );                frame_index += 1;                control = .{};            },            0x3b => trailer = true,            else => return error.InvalidDescriptor,        }    }    if (frame_index == 0) return error.NoFrames;    if (frame_index != regions.frames.len) return error.DecodeInputMismatch;    return .{        .width = header.width,        .height = header.height,        .frames = regions.frames[0..frame_index],        .loop_count = loop_count,    };}

Source: lib/gif/src/root.zig:24

zig
pub const animationFromBytes = decode.animationFromBytes;

Audit

Definitions1
Public names1
Members0
Version26.7.0
Revisiondaab053ee433