Skip to content

Commit

Permalink
Update thirdparty dependencies
Browse files Browse the repository at this point in the history
The current mupdf bindings target the master branch: I've encountered a
crash while using 0.6.0 and I want to make sure that the problem isn't
caused by a bug that might have fixed in the more recent versions of the
thirdparty dependencies.
  • Loading branch information
baskerville committed Dec 9, 2018
1 parent 2dda564 commit d5f829a
Show file tree
Hide file tree
Showing 4 changed files with 32 additions and 22 deletions.
2 changes: 1 addition & 1 deletion doc/BUILD.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
## Preliminary

Install [Ubuntu 12.04.5](http://releases.ubuntu.com/12.04/).
Install [Ubuntu 14.04.5](http://releases.ubuntu.com/14.04.5/).

Install the required packages:
```sh
Expand Down
27 changes: 19 additions & 8 deletions src/document/mupdf_sys.rs
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ extern crate libc;
use std::mem;

pub const FZ_MAX_COLORS: usize = 32;
pub const FZ_VERSION: &str = "1.13.0";
pub const FZ_VERSION: &str = "1.14.0";

pub const FZ_META_INFO_AUTHOR: &str = "info:Author";
pub const FZ_META_INFO_TITLE: &str = "info:Title";
Expand Down Expand Up @@ -56,14 +56,14 @@ extern {
pub fn fz_drop_outline(ctx: *mut FzContext, outline: *mut FzOutline);
pub fn fz_device_rgb(ctx: *mut FzContext) -> *mut FzColorspace;
pub fn fz_device_gray(ctx: *mut FzContext) -> *mut FzColorspace;
pub fn fz_scale(mat: *mut FzMatrix, sx: libc::c_float, sy: libc::c_float);
pub fn fz_new_pixmap_from_page(ctx: *mut FzContext, page: *mut FzPage, mat: *const FzMatrix, cs: *mut FzColorspace, alpha: libc::c_int) -> *mut FzPixmap;
pub fn fz_scale(sx: libc::c_float, sy: libc::c_float) -> FzMatrix;
pub fn fz_new_pixmap_from_page(ctx: *mut FzContext, page: *mut FzPage, mat: FzMatrix, cs: *mut FzColorspace, alpha: libc::c_int) -> *mut FzPixmap;
pub fn fz_set_pixmap_resolution(ctx: *mut FzContext, pix: *mut FzPixmap, xres: libc::c_int, yres: libc::c_int);
pub fn fz_drop_pixmap(ctx: *mut FzContext, pixmap: *mut FzPixmap);
pub fn mp_load_page(ctx: *mut FzContext, doc: *mut FzDocument, page_idx: libc::c_int) -> *mut FzPage;
pub fn fz_drop_page(ctx: *mut FzContext, page: *mut FzPage);
pub fn fz_bound_page(ctx: *mut FzContext, page: *mut FzPage, rect: *mut FzRect) -> *mut FzRect;
pub fn fz_run_page(ctx: *mut FzContext, page: *mut FzPage, dev: *mut FzDevice, mat: *const FzMatrix, cookie: *mut FzCookie);
pub fn fz_bound_page(ctx: *mut FzContext, page: *mut FzPage) -> FzRect;
pub fn fz_run_page(ctx: *mut FzContext, page: *mut FzPage, dev: *mut FzDevice, mat: FzMatrix, cookie: *mut FzCookie);
pub fn fz_load_links(ctx: *mut FzContext, page: *mut FzPage) -> *mut FzLink;
pub fn fz_drop_link(ctx: *mut FzContext, link: *mut FzLink);
pub fn mp_new_stext_page_from_page(ctx: *mut FzContext, page: *mut FzPage, options: *const FzTextOptions) -> *mut FzTextPage;
Expand All @@ -72,13 +72,14 @@ extern {
pub fn fz_close_device(ctx: *mut FzContext, dev: *mut FzDevice);
pub fn fz_drop_device(ctx: *mut FzContext, dev: *mut FzDevice);
pub fn fz_new_pixmap(ctx: *mut FzContext, cs: *mut FzColorspace, width: libc::c_int, height: libc::c_int, alpha: libc::c_int) -> *mut FzPixmap;
pub fn fz_union_rect(a: *mut FzRect, b: *const FzRect);
pub fn fz_union_rect(a: FzRect, b: FzRect) -> FzRect;
pub fn fz_rect_from_quad(q: FzQuad) -> FzRect;
pub fn fz_runetochar(buf: *mut u8, rune: libc::c_int) -> libc::c_int;
pub static fz_identity: FzMatrix;
}

#[repr(C)]
#[derive(Debug, Clone)]
#[derive(Debug, Copy, Clone)]
pub struct FzRect {
pub x0: libc::c_float,
pub y0: libc::c_float,
Expand All @@ -93,11 +94,21 @@ impl Default for FzRect {
}

#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct FzPoint {
x: libc::c_float,
y: libc::c_float,
}

#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct FzQuad {
ul: FzPoint,
ur: FzPoint,
ll: FzPoint,
lr: FzPoint,
}

#[derive(Copy, Clone)]
#[repr(C)]
pub struct FzMatrix {
Expand Down Expand Up @@ -207,7 +218,7 @@ pub struct FzTextLine {
pub struct FzTextChar {
pub c: libc::c_int,
origin: FzPoint,
pub bbox: FzRect,
pub quad: FzQuad,
size: libc::c_float,
font: *mut FzFont,
pub next: *mut FzTextChar,
Expand Down
17 changes: 8 additions & 9 deletions src/document/pdf.rs
Original file line number Diff line number Diff line change
Expand Up @@ -257,7 +257,7 @@ impl<'a> PdfPage<'a> {
let mut line = text_block.first_line;

while !line.is_null() {
let rect = (*line).bbox.clone().into();
let rect = (*line).bbox.into();
lines.push(BoundedText { text: "".to_string(), rect });
line = (*line).next;
}
Expand Down Expand Up @@ -297,7 +297,8 @@ impl<'a> PdfPage<'a> {
chr = (*chr).next;
break;
} else {
fz_union_rect(&mut rect, &(*chr).bbox);
let chr_rect = fz_rect_from_quad((*chr).quad);
rect = fz_union_rect(rect, chr_rect);
text.push(c);
}
}
Expand Down Expand Up @@ -337,7 +338,7 @@ impl<'a> PdfPage<'a> {

while !link.is_null() {
let text = CStr::from_ptr((*link).uri).to_string_lossy().into_owned();
let rect = (*link).rect.clone().into();
let rect = (*link).rect.into();
result.push(BoundedText { text, rect });
link = (*link).next;
}
Expand All @@ -350,11 +351,10 @@ impl<'a> PdfPage<'a> {

pub fn pixmap(&self, scale: f32) -> Option<Pixmap> {
unsafe {
let mut mat = FzMatrix::default();
fz_scale(&mut mat, scale as libc::c_float, scale as libc::c_float);
let mat = fz_scale(scale as libc::c_float, scale as libc::c_float);
let pixmap = fz_new_pixmap_from_page(self.ctx.0,
self.page,
&mat,
mat,
fz_device_gray(self.ctx.0),
0);
if pixmap.is_null() {
Expand All @@ -379,7 +379,7 @@ impl<'a> PdfPage<'a> {
if dev.is_null() {
None
} else {
fz_run_page(self.ctx.0, self.page, dev, &fz_identity, ptr::null_mut());
fz_run_page(self.ctx.0, self.page, dev, fz_identity, ptr::null_mut());
fz_close_device(self.ctx.0, dev);
fz_drop_device(self.ctx.0, dev);
Some(rect.into())
Expand All @@ -389,8 +389,7 @@ impl<'a> PdfPage<'a> {

pub fn dims(&self) -> (f32, f32) {
unsafe {
let mut bounds = FzRect::default();
fz_bound_page(self.ctx.0, self.page, &mut bounds);
let bounds = fz_bound_page(self.ctx.0, self.page);
((bounds.x1 - bounds.x0) as f32, (bounds.y1 - bounds.y0) as f32)
}
}
Expand Down
8 changes: 4 additions & 4 deletions thirdparty/download.sh
Original file line number Diff line number Diff line change
Expand Up @@ -5,13 +5,13 @@ declare -A urls=(
["zlib"]="https://zlib.net/zlib-1.2.11.tar.gz"
["bzip2"]="https://ftp.osuosl.org/pub/clfs/conglomeration/bzip2/bzip2-1.0.6.tar.gz"
# Images
["libpng"]="https://download.sourceforge.net/libpng/libpng-1.6.34.tar.gz"
["libpng"]="https://download.sourceforge.net/libpng/libpng-1.6.36.tar.gz"
["libjpeg"]="http://www.ijg.org/files/jpegsrc.v9c.tar.gz"
["openjpeg"]="https://github.com/uclouvain/openjpeg/archive/v2.3.0.tar.gz"
["jbig2dec"]="https://github.com/ArtifexSoftware/ghostpdl-downloads/releases/download/gs922/jbig2dec-0.14.tar.gz"
["jbig2dec"]="https://github.com/ArtifexSoftware/ghostpdl-downloads/releases/download/gs924/jbig2dec-0.15.tar.gz"
# Fonts
["freetype2"]="https://download.savannah.gnu.org/releases/freetype/freetype-2.9.tar.gz"
["harfbuzz"]="https://github.com/harfbuzz/harfbuzz/archive/1.7.6.tar.gz"
["freetype2"]="https://download.savannah.gnu.org/releases/freetype/freetype-2.9.1.tar.gz"
["harfbuzz"]="https://github.com/harfbuzz/harfbuzz/archive/2.1.0.tar.gz"
# Documents
["djvulibre"]="http://downloads.sourceforge.net/djvu/djvulibre-3.5.27.tar.gz"
["mupdf"]="https://mupdf.com/downloads/mupdf-1.13.0-source.tar.gz"
Expand Down

0 comments on commit d5f829a

Please sign in to comment.