From 4eb8bde10a77f3d3eae9b83afc68d5cbb0edbddb Mon Sep 17 00:00:00 2001 From: Patrick Walton Date: Fri, 10 Jul 2015 16:05:30 -0700 Subject: [PATCH] Add serde serialization support. Necessary for multiprocess Servo. --- Cargo.toml | 13 +++++++++++++ src/lib.rs | 8 +++++++- 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/Cargo.toml b/Cargo.toml index 44d7c4d..7d77fa6 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -14,5 +14,18 @@ path = "png-sys" [dependencies] libc = "0.1.5" +[dependencies.serde] +version = "*" +optional = true + +[dependencies.serde_macros] +version = "*" +optional = true + [build-dependencies] gcc = "0.3.4" + +[features] +serde-serialization = [ "serde", "serde_macros" ] + + diff --git a/src/lib.rs b/src/lib.rs index 0eba0fd..c632e96 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -9,9 +9,14 @@ #![crate_name = "png"] #![crate_type = "rlib"] +#![cfg_attr(feature="serde-serialization", feature(custom_derive, plugin))] +#![cfg_attr(feature="serde-serialization", plugin(serde_macros))] extern crate libc; +#[cfg(feature="serde-serialization")] +extern crate serde; + use libc::{c_int, size_t}; use std::error::Error; use std::fs::File; @@ -24,7 +29,7 @@ use std::slice; pub mod ffi; - +#[cfg_attr(feature="serde-serialization", derive(Deserialize, Serialize))] pub enum PixelsByColorType { K8(Vec), KA8(Vec), @@ -32,6 +37,7 @@ pub enum PixelsByColorType { RGBA8(Vec), } +#[cfg_attr(feature="serde-serialization", derive(Deserialize, Serialize))] pub struct Image { pub width: u32, pub height: u32,