equal
deleted
inserted
replaced
89 value.map_or(0, |v| v.get()) |
89 value.map_or(0, |v| v.get()) |
90 } |
90 } |
91 |
91 |
92 fn is_out_of_bounds(data: &[u8], data_stride: Option<NonZeroU32>, texture_size: Size) -> bool { |
92 fn is_out_of_bounds(data: &[u8], data_stride: Option<NonZeroU32>, texture_size: Size) -> bool { |
93 let data_stride = get_u32(data_stride); |
93 let data_stride = get_u32(data_stride); |
94 data_stride == 0 && texture_size.area() * 4 > data.len() |
94 data_stride == 0 && texture_size.area() * 4 > data.len() as u32 |
95 || data_stride != 0 |
95 || data_stride != 0 |
96 && texture_size.width > data_stride as usize |
96 && texture_size.width > data_stride |
97 && (texture_size.height * data_stride as usize) * 4 > data.len() |
97 && (texture_size.height * data_stride) * 4 > data.len() as u32 |
98 } |
98 } |
99 |
99 |
100 impl Texture2D { |
100 impl Texture2D { |
101 pub fn new(size: Size, internal_format: TextureInternalFormat, filter: TextureFilter) -> Self { |
101 pub fn new(size: Size, internal_format: TextureInternalFormat, filter: TextureFilter) -> Self { |
102 if let Some(handle) = new_texture() { |
102 if let Some(handle) = new_texture() { |
191 } |
191 } |
192 } |
192 } |
193 } |
193 } |
194 |
194 |
195 pub fn retrieve(&self, data: &mut [u8]) { |
195 pub fn retrieve(&self, data: &mut [u8]) { |
196 if self.size.area() * 4 > data.len() { |
196 if self.size.area() * 4 > data.len() as u32 { |
197 return; |
197 return; |
198 } |
198 } |
199 |
199 |
200 if let Some(handle) = self.handle { |
200 if let Some(handle) = self.handle { |
201 unsafe { |
201 unsafe { |