1use crate::{platform::GlPixelFormat, tokens, GlConfigPicker};
2
3#[derive(Debug, Default)]
4pub struct GlDefaultPicker {
5 values: [i32; 3],
6}
7
8impl GlConfigPicker for GlDefaultPicker {
9 fn pick(&mut self, pixel_format: GlPixelFormat) -> Option<usize> {
10 #[rustfmt::skip]
11 let attributes = [
12 tokens::COLOR_BITS_ARB,
13 tokens::SAMPLE_BUFFERS_ARB,
14 tokens::SAMPLES_ARB,
15 ];
16
17 let mut values = unsafe { std::mem::zeroed() };
18
19 pixel_format.get(&attributes, &mut values).ok()?;
20
21 if values[2] > self.values[2] {
22 self.values = values;
23 return Some(pixel_format.format);
24 }
25
26 if values[0] > self.values[0] {
27 self.values = values;
28 return Some(pixel_format.format);
29 }
30
31 None
32 }
33}