Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update to the last rust-nightly. #39

Closed
wants to merge 1 commit into from
Closed
Changes from all commits
Commits
File filter...
Filter file types
Jump to…
Jump to file
Failed to load files.

Always

Just for now

Update to the last rust-nightly.

Version on rustc: 0.11.0-nightly (459f155f81291c46633e86a480628b50304ffb1c 2014-07-04 23:46:44 +0000).
  • Loading branch information
sebcrozet committed Jul 5, 2014
commit 53f4204ce314d734e268f037825db66a016534ba
56 ffi.rs
@@ -38,43 +38,43 @@ pub type png_info = c_void;
#[link(name = "shim")]
extern {
// libc routines needed
pub fn setjmp(env: *c_void) -> c_int;
pub fn setjmp(env: *const c_void) -> c_int;

// shim routines
pub fn pngshim_jmpbuf(pnt_ptr: *mut png_struct) -> *c_void;
pub fn pngshim_jmpbuf(pnt_ptr: *mut png_struct) -> *const c_void;

// libpng routines
pub fn png_get_header_ver(png_ptr: *png_struct) -> *c_char;
pub fn png_sig_cmp(sig: *u8, start: size_t, num_to_check: size_t) -> c_int;
pub fn png_get_header_ver(png_ptr: *const png_struct) -> *const c_char;
pub fn png_sig_cmp(sig: *const u8, start: size_t, num_to_check: size_t) -> c_int;

pub fn png_create_info_struct(png_ptr: *png_struct) -> *mut png_info;
pub fn png_get_io_ptr(png_ptr: *png_struct) -> *mut c_void;
pub fn png_create_info_struct(png_ptr: *const png_struct) -> *mut png_info;
pub fn png_get_io_ptr(png_ptr: *const png_struct) -> *mut c_void;
pub fn png_set_sig_bytes(png_ptr: *mut png_struct, num_bytes: c_int);

pub fn png_create_read_struct(user_png_ver: *c_char, error_ptr: *c_void, error_fn: *u8, warn_fn: *u8) -> *mut png_struct;
pub fn png_destroy_read_struct(png_ptr_ptr: **png_struct, info_ptr_ptr: **png_info, end_info_ptr_ptr: **png_info);
pub fn png_set_read_fn(png_ptr: *mut png_struct, io_ptr: *mut c_void, read_data_fn: extern "C" fn(*png_struct, *mut u8, size_t));
pub fn png_create_read_struct(user_png_ver: *const c_char, error_ptr: *const c_void, error_fn: *const u8, warn_fn: *const u8) -> *mut png_struct;
pub fn png_destroy_read_struct(png_ptr_ptr: *const *const png_struct, info_ptr_ptr: *const *const png_info, end_info_ptr_ptr: *const *const png_info);
pub fn png_set_read_fn(png_ptr: *mut png_struct, io_ptr: *mut c_void, read_data_fn: extern "C" fn(*const png_struct, *mut u8, size_t));
pub fn png_read_info(png_ptr: *mut png_struct, info_ptr: *mut png_info);
pub fn png_read_update_info(png_ptr: *mut png_struct, info_ptr: *mut png_info);
pub fn png_read_image(png_ptr: *mut png_struct, row_pointers: **mut u8);
pub fn png_read_png(png_ptr: *mut png_struct, info_ptr: *mut png_info, transforms: c_int, params: *c_void);

pub fn png_create_write_struct(user_png_ver: *c_char, error_ptr: *c_void, error_fn: *u8, warn_fn: *u8) -> *mut png_struct;
pub fn png_destroy_write_struct(png_ptr_ptr: **png_struct, info_ptr_ptr: **png_info);
pub fn png_set_write_fn(png_ptr: *mut png_struct, io_ptr: *mut c_void, write_data_fn: extern "C" fn(*png_struct, *u8, size_t), output_flush_ptr: extern "C" fn(*png_struct));
pub fn png_write_png(pnt_ptr: *mut png_struct, info_ptr: *mut png_info, transforms: c_int, params: *c_void); // ??

pub fn png_get_IHDR(png_ptr: *png_struct, info_ptr: *png_info, width: *mut u32, height: *mut u32, bit_depth: *mut c_int, color_type: *mut c_int, interlace_method: *mut c_int, compression_method: *mut c_int, filter_method: *mut c_int) -> u32;
pub fn png_get_pHYs(png_ptr: *png_struct, info_ptr: *png_info, res_x: *mut u32, res_y: *mut u32, unit_type: *mut c_int) -> u32;
pub fn png_get_image_width(png_ptr: *png_struct, info_ptr: *png_info) -> u32;
pub fn png_get_image_height(png_ptr: *png_struct, info_ptr: *png_info) -> u32;
pub fn png_get_bit_depth(png_ptr: *png_struct, info_ptr: *png_info) -> u8;
pub fn png_get_color_type(png_ptr: *png_struct, info_ptr: *png_info) -> u8;
pub fn png_get_rows(png_ptr: *png_struct, info_ptr: *png_info) -> **u8;

pub fn png_set_IHDR(png_ptr: *png_struct, info_ptr: *mut png_info, width: u32, height: u32, bit_depth: c_int, color_type: c_int, interlace_method: c_int, compression_method: c_int, filter_method: c_int);
pub fn png_set_pHYs(png_ptr: *png_struct, info_ptr: *mut png_info, res_x: u32, res_y: u32, unit_type: c_int);
pub fn png_set_rows(png_ptr: *png_struct, info_ptr: *mut png_info, row_pointers: **u8);
pub fn png_read_image(png_ptr: *mut png_struct, row_pointers: *const *mut u8);
pub fn png_read_png(png_ptr: *mut png_struct, info_ptr: *mut png_info, transforms: c_int, params: *const c_void);

pub fn png_create_write_struct(user_png_ver: *const c_char, error_ptr: *const c_void, error_fn: *const u8, warn_fn: *const u8) -> *mut png_struct;
pub fn png_destroy_write_struct(png_ptr_ptr: *const *const png_struct, info_ptr_ptr: *const *const png_info);
pub fn png_set_write_fn(png_ptr: *mut png_struct, io_ptr: *mut c_void, write_data_fn: extern "C" fn(*const png_struct, *const u8, size_t), output_flush_ptr: extern "C" fn(*const png_struct));
pub fn png_write_png(pnt_ptr: *mut png_struct, info_ptr: *mut png_info, transforms: c_int, params: *const c_void); // ??

pub fn png_get_IHDR(png_ptr: *const png_struct, info_ptr: *const png_info, width: *mut u32, height: *mut u32, bit_depth: *mut c_int, color_type: *mut c_int, interlace_method: *mut c_int, compression_method: *mut c_int, filter_method: *mut c_int) -> u32;
pub fn png_get_pHYs(png_ptr: *const png_struct, info_ptr: *const png_info, res_x: *mut u32, res_y: *mut u32, unit_type: *mut c_int) -> u32;
pub fn png_get_image_width(png_ptr: *const png_struct, info_ptr: *const png_info) -> u32;
pub fn png_get_image_height(png_ptr: *const png_struct, info_ptr: *const png_info) -> u32;
pub fn png_get_bit_depth(png_ptr: *const png_struct, info_ptr: *const png_info) -> u8;
pub fn png_get_color_type(png_ptr: *const png_struct, info_ptr: *const png_info) -> u8;
pub fn png_get_rows(png_ptr: *const png_struct, info_ptr: *const png_info) -> *const *const u8;

pub fn png_set_IHDR(png_ptr: *const png_struct, info_ptr: *mut png_info, width: u32, height: u32, bit_depth: c_int, color_type: c_int, interlace_method: c_int, compression_method: c_int, filter_method: c_int);
pub fn png_set_pHYs(png_ptr: *const png_struct, info_ptr: *mut png_info, res_x: u32, res_y: u32, unit_type: c_int);
pub fn png_set_rows(png_ptr: *const png_struct, info_ptr: *mut png_info, row_pointers: *const *const u8);

pub fn png_set_packing(png_ptr: *mut png_struct);
pub fn png_set_palette_to_rgb(png_ptr: *mut png_struct);
28 lib.rs
@@ -54,7 +54,7 @@ pub fn is_png(image: &[u8]) -> bool {
}
}

pub extern fn read_data(png_ptr: *ffi::png_struct, data: *mut u8, length: size_t) {
pub extern fn read_data(png_ptr: *const ffi::png_struct, data: *mut u8, length: size_t) {
unsafe {
let io_ptr = ffi::png_get_io_ptr(png_ptr);
let image_data: &mut ImageData = mem::transmute(io_ptr);
@@ -90,14 +90,14 @@ pub fn load_png_from_memory(image: &[u8]) -> Result<Image,String> {
}
let info_ptr = ffi::png_create_info_struct(&*png_ptr);
if info_ptr.is_null() {
let png_ptr: *ffi::png_struct = &*png_ptr;
let png_ptr: *const ffi::png_struct = &*png_ptr;
ffi::png_destroy_read_struct(&png_ptr, ptr::null(), ptr::null());
return Err("could not create info struct".to_string());
}
let res = ffi::setjmp(ffi::pngshim_jmpbuf(png_ptr));
if res != 0 {
let png_ptr: *ffi::png_struct = &*png_ptr;
let info_ptr: *ffi::png_info = &*info_ptr;
let png_ptr: *const ffi::png_struct = &*png_ptr;
let info_ptr: *const ffi::png_info = &*info_ptr;
ffi::png_destroy_read_struct(&png_ptr, &info_ptr, ptr::null());
return Err("error reading png".to_string());
}
@@ -154,8 +154,8 @@ pub fn load_png_from_memory(image: &[u8]) -> Result<Image,String> {

ffi::png_read_image(png_ptr, row_pointers.as_ptr());

let png_ptr: *ffi::png_struct = &*png_ptr;
let info_ptr: *ffi::png_info = &*info_ptr;
let png_ptr: *const ffi::png_struct = &*png_ptr;
let info_ptr: *const ffi::png_info = &*info_ptr;
ffi::png_destroy_read_struct(&png_ptr, &info_ptr, ptr::null());

Ok(Image {
@@ -167,7 +167,7 @@ pub fn load_png_from_memory(image: &[u8]) -> Result<Image,String> {
}
}

pub extern fn write_data(png_ptr: *ffi::png_struct, data: *u8, length: size_t) {
pub extern fn write_data(png_ptr: *const ffi::png_struct, data: *const u8, length: size_t) {
unsafe {
let io_ptr = ffi::png_get_io_ptr(png_ptr);
let writer: &mut &mut io::Writer = mem::transmute(io_ptr);
@@ -180,7 +180,7 @@ pub extern fn write_data(png_ptr: *ffi::png_struct, data: *u8, length: size_t) {
}
}

pub extern fn flush_data(png_ptr: *ffi::png_struct) {
pub extern fn flush_data(png_ptr: *const ffi::png_struct) {
unsafe {
let io_ptr = ffi::png_get_io_ptr(png_ptr);
let writer: &mut &mut io::Writer = mem::transmute(io_ptr);
@@ -212,14 +212,14 @@ pub fn store_png(img: &Image, path: &Path) -> Result<(),String> {
}
let info_ptr = ffi::png_create_info_struct(&*png_ptr);
if info_ptr.is_null() {
let png_ptr: *ffi::png_struct = &*png_ptr;
let png_ptr: *const ffi::png_struct = &*png_ptr;
ffi::png_destroy_write_struct(&png_ptr, ptr::null());
return Err("could not create info struct".to_string());
}
let res = ffi::setjmp(ffi::pngshim_jmpbuf(png_ptr));
if res != 0 {
let png_ptr: *ffi::png_struct = &*png_ptr;
let info_ptr: *ffi::png_info = &*info_ptr;
let png_ptr: *const ffi::png_struct = &*png_ptr;
let info_ptr: *const ffi::png_info = &*info_ptr;
ffi::png_destroy_write_struct(&png_ptr, &info_ptr);
return Err("error writing png".to_string());
}
@@ -238,15 +238,15 @@ pub fn store_png(img: &Image, path: &Path) -> Result<(),String> {
ffi::INTERLACE_NONE, ffi::COMPRESSION_TYPE_DEFAULT, ffi::FILTER_NONE);

let image_buf = img.pixels.as_ptr();
let row_pointers: Vec<*u8> = Vec::from_fn(img.height as uint, |idx| {
let row_pointers: Vec<*const u8> = Vec::from_fn(img.height as uint, |idx| {
image_buf.offset((((img.width * pixel_width) as uint) * idx) as int)
});
ffi::png_set_rows(&*png_ptr, info_ptr, row_pointers.as_ptr());

ffi::png_write_png(png_ptr, info_ptr, ffi::TRANSFORM_IDENTITY, ptr::null());

let png_ptr: *ffi::png_struct = &*png_ptr;
let info_ptr: *ffi::png_info = &*info_ptr;
let png_ptr: *const ffi::png_struct = &*png_ptr;
let info_ptr: *const ffi::png_info = &*info_ptr;
ffi::png_destroy_write_struct(&png_ptr, &info_ptr);
}
Ok(())
ProTip! Use n and p to navigate between commits in a pull request.
You can’t perform that action at this time.