Skip to content

Commit

Permalink
Merge remote-tracking branch 'origin/main'
Browse files Browse the repository at this point in the history
  • Loading branch information
LaurenzV committed Aug 30, 2024
2 parents e421b03 + ff9226a commit fef83a7
Show file tree
Hide file tree
Showing 30 changed files with 459 additions and 225 deletions.
Binary file added assets/refs/apple_color_emoji.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
18 changes: 12 additions & 6 deletions krilla-macros/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@ pub fn snapshot(attr: TokenStream, item: TokenStream) -> TokenStream {
let settings = SerializeSettings::#serialize_settings();
let mut sc = SerializerContext::new(settings);
#impl_ident(&mut sc);
check_snapshot(#snapshot_name, sc.finish().as_bytes(), false);
check_snapshot(#snapshot_name, sc.finish().unwrap().as_bytes(), false);
}
}
SnapshotMode::SinglePage => {
Expand All @@ -77,7 +77,7 @@ pub fn snapshot(attr: TokenStream, item: TokenStream) -> TokenStream {
let mut page = db.start_page(Size::from_wh(200.0, 200.0).unwrap());
#impl_ident(&mut page);
page.finish();
check_snapshot(#snapshot_name, &db.finish(), true);
check_snapshot(#snapshot_name, &db.finish().unwrap(), true);
}
}
SnapshotMode::Document => {
Expand All @@ -86,7 +86,7 @@ pub fn snapshot(attr: TokenStream, item: TokenStream) -> TokenStream {
let settings = SerializeSettings::#serialize_settings();
let mut db = Document::new(settings);
#impl_ident(&mut db);
check_snapshot(#snapshot_name, &db.finish(), true);
check_snapshot(#snapshot_name, &db.finish().unwrap(), true);
}
}
};
Expand Down Expand Up @@ -124,7 +124,7 @@ impl RendererExt for Renderer {
#[proc_macro_attribute]
pub fn visreg(attr: TokenStream, item: TokenStream) -> TokenStream {
let attrs = parse_macro_input!(attr as AttributeInput);
let serialize_settings = format_ident!("default");
let mut serialize_settings = format_ident!("default");

let mut pdfium = false;
let mut mupdf = false;
Expand All @@ -147,6 +147,12 @@ pub fn visreg(attr: TokenStream, item: TokenStream) -> TokenStream {

for identifier in attrs.identifiers {
let string_ident = identifier.to_string();

if string_ident.starts_with("settings") {
serialize_settings = identifier.clone();
continue;
}

match string_ident.as_str() {
"pdfium" => pdfium = true,
"mupdf" => mupdf = true,
Expand Down Expand Up @@ -186,7 +192,7 @@ pub fn visreg(attr: TokenStream, item: TokenStream) -> TokenStream {
let settings = SerializeSettings::#serialize_settings();
let mut db = Document::new(settings);
#impl_ident(&mut db);
let pdf = db.finish();
let pdf = db.finish().unwrap();

let rendered = render_document(&pdf, &renderer);
check_render(stringify!(#fn_name), &renderer, rendered, &pdf, #ignore_renderer);
Expand All @@ -200,7 +206,7 @@ pub fn visreg(attr: TokenStream, item: TokenStream) -> TokenStream {
#impl_ident(&mut surface);
surface.finish();
page.finish();
let pdf = db.finish();
let pdf = db.finish().unwrap();

let rendered = render_document(&pdf, &renderer);
check_render(stringify!(#fn_name), &renderer, rendered, &pdf, #ignore_renderer);
Expand Down
5 changes: 3 additions & 2 deletions src/document.rs
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
use crate::error::KrillaResult;
use crate::object::outline::Outline;
use crate::object::page::PageLabel;
use crate::serialize::{SerializeSettings, SerializerContext};
Expand Down Expand Up @@ -31,7 +32,7 @@ impl Document {
self.serializer_context.set_outline(outline);
}

pub fn finish(self) -> Vec<u8> {
self.serializer_context.finish().finish()
pub fn finish(self) -> KrillaResult<Vec<u8>> {
Ok(self.serializer_context.finish()?.finish())
}
}
7 changes: 7 additions & 0 deletions src/error.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
pub type KrillaResult<T> = Result<T, KrillaError>;

#[derive(Debug, PartialEq, Eq)]
pub enum KrillaError {
Font(String),
GlyphDrawing(String),
}
11 changes: 7 additions & 4 deletions src/font/bitmap.rs
Original file line number Diff line number Diff line change
@@ -1,11 +1,12 @@
use crate::error::{KrillaError, KrillaResult};
use crate::font::Font;
use crate::object::image::Image;
use crate::surface::Surface;
use skrifa::raw::TableProvider;
use skrifa::{GlyphId, MetadataProvider, Tag};
use tiny_skia_path::{Size, Transform};

pub fn draw_glyph(font: Font, glyph: GlyphId, surface: &mut Surface) -> Option<()> {
pub fn draw_glyph(font: Font, glyph: GlyphId, surface: &mut Surface) -> KrillaResult<Option<()>> {
let metrics = font
.font_ref()
.metrics(skrifa::instance::Size::unscaled(), font.location_ref());
Expand All @@ -22,7 +23,9 @@ pub fn draw_glyph(font: Font, glyph: GlyphId, surface: &mut Surface) -> Option<(
let ppem = strike.ppem() as f32;

if data.graphic_type() == Tag::new(b"png ") {
let dynamic_image = image::load_from_memory(data.data()).ok().unwrap();
let dynamic_image = image::load_from_memory(data.data()).map_err(|_| {
KrillaError::GlyphDrawing("failed to decode png of glyph ".to_string())
})?;
let size_factor = upem / (ppem);
let width = dynamic_image.width() as f32 * size_factor;
let height = dynamic_image.height() as f32 * size_factor;
Expand All @@ -41,10 +44,10 @@ pub fn draw_glyph(font: Font, glyph: GlyphId, surface: &mut Surface) -> Option<(
surface.draw_image(Image::new(&dynamic_image), size);
surface.pop();

return Some(());
return Ok(Some(()));
}
}
}

None
Ok(None)
}
Loading

0 comments on commit fef83a7

Please sign in to comment.