initial PDF support
This commit is contained in:
parent
3785fcf413
commit
fa47d5a181
|
@ -950,7 +950,7 @@ checksum = "7bad48618fdb549078c333a7a8528acb57af271d0433bdecd523eb620628364e"
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "font"
|
name = "font"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
source = "git+https://github.com/pdf-rs/font/#6047031ce86dd5fb075c4225f7deeaaeb596918f"
|
source = "git+https://github.com/pdf-rs/font/#17d3c1d19d937440c760c79be373798326f02bcb"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"brotli-decompressor",
|
"brotli-decompressor",
|
||||||
"decorum",
|
"decorum",
|
||||||
|
@ -960,7 +960,6 @@ dependencies = [
|
||||||
"itertools 0.8.2",
|
"itertools 0.8.2",
|
||||||
"log",
|
"log",
|
||||||
"nom",
|
"nom",
|
||||||
"pathfinder_builder",
|
|
||||||
"pathfinder_color",
|
"pathfinder_color",
|
||||||
"pathfinder_content",
|
"pathfinder_content",
|
||||||
"pathfinder_geometry",
|
"pathfinder_geometry",
|
||||||
|
@ -2011,15 +2010,6 @@ dependencies = [
|
||||||
"pathfinder_gpu",
|
"pathfinder_gpu",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "pathfinder_builder"
|
|
||||||
version = "0.1.0"
|
|
||||||
source = "git+https://github.com/s3bk/pathfinder/#6197446b8c7816227ebcd6d81009df357b9f0c0b"
|
|
||||||
dependencies = [
|
|
||||||
"pathfinder_content",
|
|
||||||
"pathfinder_geometry",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "pathfinder_c"
|
name = "pathfinder_c"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
|
@ -2323,7 +2313,7 @@ dependencies = [
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "pdf"
|
name = "pdf"
|
||||||
version = "0.7.0"
|
version = "0.7.0"
|
||||||
source = "git+https://github.com/pdf-rs/pdf#f7b0acb4ac8c37cb0eb37dfa3ebeedb5b431cc8c"
|
source = "git+https://github.com/pdf-rs/pdf#2beb20e6396722a1a6771d0caabc4fe6e05b671c"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"byteorder",
|
"byteorder",
|
||||||
"chrono",
|
"chrono",
|
||||||
|
@ -2345,7 +2335,7 @@ dependencies = [
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "pdf_derive"
|
name = "pdf_derive"
|
||||||
version = "0.1.19"
|
version = "0.1.19"
|
||||||
source = "git+https://github.com/pdf-rs/pdf#f7b0acb4ac8c37cb0eb37dfa3ebeedb5b431cc8c"
|
source = "git+https://github.com/pdf-rs/pdf#2beb20e6396722a1a6771d0caabc4fe6e05b671c"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"quote 1.0.7",
|
"quote 1.0.7",
|
||||||
"syn 1.0.33",
|
"syn 1.0.33",
|
||||||
|
@ -2354,13 +2344,12 @@ dependencies = [
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "pdf_render"
|
name = "pdf_render"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
source = "git+https://github.com/pdf-rs/pdf#f7b0acb4ac8c37cb0eb37dfa3ebeedb5b431cc8c"
|
source = "git+https://github.com/pdf-rs/pdf#2beb20e6396722a1a6771d0caabc4fe6e05b671c"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"encoding",
|
"encoding",
|
||||||
"font",
|
"font",
|
||||||
"itertools 0.9.0",
|
"itertools 0.9.0",
|
||||||
"log",
|
"log",
|
||||||
"pathfinder_builder",
|
|
||||||
"pathfinder_color",
|
"pathfinder_color",
|
||||||
"pathfinder_content",
|
"pathfinder_content",
|
||||||
"pathfinder_geometry",
|
"pathfinder_geometry",
|
||||||
|
|
|
@ -69,3 +69,10 @@ default-members = [
|
||||||
[patch.crates-io]
|
[patch.crates-io]
|
||||||
pathfinder_geometry = { path = "geometry" }
|
pathfinder_geometry = { path = "geometry" }
|
||||||
pathfinder_simd = { path = "simd" }
|
pathfinder_simd = { path = "simd" }
|
||||||
|
|
||||||
|
[patch."https://github.com/servo/pathfinder"]
|
||||||
|
pathfinder_content = { path = "content" }
|
||||||
|
pathfinder_color = { path = "color" }
|
||||||
|
pathfinder_geometry = { path = "geometry" }
|
||||||
|
pathfinder_renderer = { path = "renderer" }
|
||||||
|
pathfinder_simd = { path = "simd" }
|
||||||
|
|
|
@ -85,7 +85,11 @@ mod ui;
|
||||||
|
|
||||||
enum Content {
|
enum Content {
|
||||||
Svg(SvgTree),
|
Svg(SvgTree),
|
||||||
Pdf(PdfFile<Vec<u8>>, PdfRenderCache, u32)
|
Pdf {
|
||||||
|
file: PdfFile<Vec<u8>>,
|
||||||
|
cache: PdfRenderCache,
|
||||||
|
page_nr: u32
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub struct DemoApp<W> where W: Window {
|
pub struct DemoApp<W> where W: Window {
|
||||||
|
@ -765,7 +769,7 @@ impl Content {
|
||||||
let message = get_svg_building_message(&built_svg);
|
let message = get_svg_building_message(&built_svg);
|
||||||
(built_svg.scene, message)
|
(built_svg.scene, message)
|
||||||
}
|
}
|
||||||
Content::Pdf(ref file, ref mut cache, page_nr) => {
|
Content::Pdf { ref file, ref mut cache, page_nr } => {
|
||||||
let page = file.get_page(page_nr).expect("no such page");
|
let page = file.get_page(page_nr).expect("no such page");
|
||||||
let (scene, _) = cache.render_page(file, &page).unwrap();
|
let (scene, _) = cache.render_page(file, &page).unwrap();
|
||||||
(scene, String::new())
|
(scene, String::new())
|
||||||
|
@ -785,9 +789,8 @@ fn load_scene(resource_loader: &dyn ResourceLoader,
|
||||||
|
|
||||||
if let Ok(tree) = SvgTree::from_data(&data, &UsvgOptions::default()) {
|
if let Ok(tree) = SvgTree::from_data(&data, &UsvgOptions::default()) {
|
||||||
Content::Svg(tree)
|
Content::Svg(tree)
|
||||||
}
|
} else if let Ok(file) = PdfFile::from_data(data) {
|
||||||
else if let Ok(pdf) = PdfFile::from_data(data) {
|
Content::Pdf { file, cache: PdfRenderCache::new(), page_nr: 0 }
|
||||||
Content::Pdf(pdf, PdfRenderCache::new(), 0)
|
|
||||||
} else {
|
} else {
|
||||||
panic!("can't load data");
|
panic!("can't load data");
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue