diff --git a/Cargo.toml b/Cargo.toml index 1d6fca0..7191f53 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "offscreen_gl_context" license = "MIT / Apache-2.0" -version = "0.1.6" +version = "0.1.7" authors = ["Emilio Cobos Álvarez ", "The Servo Project Developers"] description = "Creation and manipulation of HW accelerated offscreen rendering contexts in multiple platforms. Originally intended for the Servo project's WebGL implementation." repository = "https://github.com/emilio/rust-offscreen-rendering-context" diff --git a/src/gl_context_attributes.rs b/src/gl_context_attributes.rs index 8227ad6..456baa7 100644 --- a/src/gl_context_attributes.rs +++ b/src/gl_context_attributes.rs @@ -18,19 +18,14 @@ impl Deserialize for GLContextAttributes { fn deserialize(deserializer: &mut D) -> Result where D: Deserializer { - let alpha = try!(bool::deserialize(deserializer)); - let depth = try!(bool::deserialize(deserializer)); - let stencil = try!(bool::deserialize(deserializer)); - let antialias = try!(bool::deserialize(deserializer)); - let premultiplied_alpha = try!(bool::deserialize(deserializer)); - let preserve_drawing_buffer = try!(bool::deserialize(deserializer)); + let values = try!(<[_; 6]>::deserialize(deserializer)); Ok(GLContextAttributes { - alpha: alpha, - depth: depth, - stencil: stencil, - antialias: antialias, - premultiplied_alpha: premultiplied_alpha, - preserve_drawing_buffer: preserve_drawing_buffer, + alpha: values[0], + depth: values[1], + stencil: values[2], + antialias: values[3], + premultiplied_alpha: values[4], + preserve_drawing_buffer: values[5], }) } } @@ -40,13 +35,11 @@ impl Serialize for GLContextAttributes { fn serialize(&self, serializer: &mut S) -> Result<(), S::Error> where S: Serializer { - try!(self.alpha.serialize(serializer)); - try!(self.depth.serialize(serializer)); - try!(self.stencil.serialize(serializer)); - try!(self.antialias.serialize(serializer)); - try!(self.premultiplied_alpha.serialize(serializer)); - try!(self.preserve_drawing_buffer.serialize(serializer)); - Ok(()) + let values = [ + self.alpha, self.depth, self.stencil, + self.antialias, self.premultiplied_alpha, self.preserve_drawing_buffer, + ]; + values.serialize(serializer) } } diff --git a/src/gl_limits.rs b/src/gl_limits.rs index abbe35a..6c23f7a 100644 --- a/src/gl_limits.rs +++ b/src/gl_limits.rs @@ -14,13 +14,11 @@ impl Deserialize for GLLimits { fn deserialize(deserializer: &mut D) -> Result where D: Deserializer { - let max_vertex_attribs = try!(u32::deserialize(deserializer)); - let max_tex_size = try!(u32::deserialize(deserializer)); - let max_cube_map_tex_size = try!(u32::deserialize(deserializer)); + let values = try!(<[_; 3]>::deserialize(deserializer)); Ok(GLLimits { - max_vertex_attribs: max_vertex_attribs, - max_tex_size: max_tex_size, - max_cube_map_tex_size: max_cube_map_tex_size, + max_vertex_attribs: values[0], + max_tex_size: values[1], + max_cube_map_tex_size: values[2], }) } } @@ -30,10 +28,8 @@ impl Serialize for GLLimits { fn serialize(&self, serializer: &mut S) -> Result<(), S::Error> where S: Serializer { - try!(self.max_vertex_attribs.serialize(serializer)); - try!(self.max_tex_size.serialize(serializer)); - try!(self.max_cube_map_tex_size.serialize(serializer)); - Ok(()) + [self.max_vertex_attribs, self.max_tex_size, self.max_cube_map_tex_size] + .serialize(serializer) } }