exposed-gl 0.0.1-beta

OpenGl context creation for library "exposed".
Documentation
use crate::{platform::GlPixelFormat, tokens, GlConfigPicker};

#[derive(Debug, Default)]
pub struct GlDefaultPicker {
    values: [i32; 3],
}

impl GlConfigPicker for GlDefaultPicker {
    fn pick(&mut self, pixel_format: GlPixelFormat) -> Option<usize> {
        #[rustfmt::skip]
        let attributes = [
            tokens::COLOR_BITS_ARB,
            tokens::SAMPLE_BUFFERS_ARB,
            tokens::SAMPLES_ARB,
        ];

        let mut values = unsafe { std::mem::zeroed() };

        pixel_format.get(&attributes, &mut values).ok()?;

        if values[2] > self.values[2] {
            self.values = values;
            return Some(pixel_format.format);
        }

        if values[0] > self.values[0] {
            self.values = values;
            return Some(pixel_format.format);
        }

        None
    }
}