yaged 0.2.0

Yet another gif encoder decoder
Documentation
use crate::decoder::steps::nth_bit;
use crate::types::ScreenDescriptor;

pub fn decode(bytes: &[u8], cursor: usize) -> (ScreenDescriptor, usize) {
    let to_index = cursor + 7;
    let screen_descriptor = &bytes[cursor..to_index];

    let screen_width = ((screen_descriptor[1] as u16) << 8) | screen_descriptor[0] as u16;
    let screen_height = ((screen_descriptor[3] as u16) << 8) | screen_descriptor[2] as u16;

    let flags: u8 = screen_descriptor[4];
    let m: bool = nth_bit(flags, 7);
    let cr: u8 = (flags << 1) >> 5;
    let pixel: u8 = (flags << 5) >> 5;

    let background: u8 = screen_descriptor[5];

    (
        ScreenDescriptor::new(screen_width, screen_height, m, cr, pixel, background),
        to_index,
    )
}