mirror of
https://github.com/Myriad-Dreamin/tinymist.git
synced 2025-08-04 02:08:17 +00:00
feat: convert TypstDocument to enum (#1256)
* feat: convert `TypstDocument` to enum * fix: errors * build: update cargo.lock * fix: warnings * fix: error * html changes * Revert "html changes" This reverts commitf9fc0e4872
. * Revert "Revert "html changes"" This reverts commit7dc554a9e4
. * use std typst docs * span * paged * paged * html change * paged * html change * bytes * paged * paged * paged * html changes * paged * html changes * paged
This commit is contained in:
parent
30a08e79ab
commit
3bc5f19cf5
23 changed files with 237 additions and 123 deletions
|
@ -16,6 +16,8 @@ rust-version.workspace = true
|
|||
serde.workspace = true
|
||||
tinymist-query.workspace = true
|
||||
reflexo-vec2svg.workspace = true
|
||||
reflexo-typst.workspace = true
|
||||
tinymist-std.workspace = true
|
||||
base64.workspace = true
|
||||
log.workspace = true
|
||||
|
||||
|
|
|
@ -10,6 +10,7 @@ use core::fmt;
|
|||
use base64::Engine;
|
||||
use reflexo_vec2svg::{ExportFeature, SvgExporter, SvgText};
|
||||
use tinymist_query::{FramePosition, LocalContext, VersionedDocument};
|
||||
use tinymist_std::typst::TypstDocument;
|
||||
|
||||
struct PeriscopeExportFeature {}
|
||||
|
||||
|
@ -97,32 +98,36 @@ impl PeriscopeRenderer {
|
|||
doc: VersionedDocument,
|
||||
pos: FramePosition,
|
||||
) -> Option<(String, f32, f32)> {
|
||||
// todo: svg viewer compatibility
|
||||
type UsingExporter = SvgExporter<PeriscopeExportFeature>;
|
||||
let mut doc = UsingExporter::svg_doc(&doc.document);
|
||||
doc.module.prepare_glyphs();
|
||||
let page0 = doc.pages.get(pos.page.get() - 1)?.clone();
|
||||
let mut svg_text = UsingExporter::render(&doc.module, &[page0.clone()], None);
|
||||
match &doc.document {
|
||||
TypstDocument::Paged(paged_doc) => {
|
||||
// todo: svg viewer compatibility
|
||||
type UsingExporter = SvgExporter<PeriscopeExportFeature>;
|
||||
let mut doc = UsingExporter::svg_doc(paged_doc);
|
||||
doc.module.prepare_glyphs();
|
||||
let page0 = doc.pages.get(pos.page.get() - 1)?.clone();
|
||||
let mut svg_text = UsingExporter::render(&doc.module, &[page0.clone()], None);
|
||||
|
||||
// todo: let typst.ts expose it
|
||||
let svg_header = svg_text.get_mut(0)?;
|
||||
// todo: let typst.ts expose it
|
||||
let svg_header = svg_text.get_mut(0)?;
|
||||
|
||||
let y_center = pos.point.y.to_pt() as f32;
|
||||
let y_lo = y_center - self.p.y_above;
|
||||
let y_hi = y_center + self.p.y_below;
|
||||
let y_center = pos.point.y.to_pt() as f32;
|
||||
let y_lo = y_center - self.p.y_above;
|
||||
let y_hi = y_center + self.p.y_below;
|
||||
|
||||
let width = page0.size.x.0;
|
||||
let height = y_hi - y_lo;
|
||||
let width = page0.size.x.0;
|
||||
let height = y_hi - y_lo;
|
||||
|
||||
*svg_header = SvgText::Plain(header_inner(
|
||||
page0.size.x.0,
|
||||
y_lo,
|
||||
y_hi,
|
||||
self.p.scale,
|
||||
self.p.invert_color == "always",
|
||||
));
|
||||
*svg_header = SvgText::Plain(header_inner(
|
||||
page0.size.x.0,
|
||||
y_lo,
|
||||
y_hi,
|
||||
self.p.scale,
|
||||
self.p.invert_color == "always",
|
||||
));
|
||||
|
||||
Some((SvgText::join(svg_text), width, height))
|
||||
Some((SvgText::join(svg_text), width, height))
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue