Mermaid

Struct Mermaid 

Source
pub struct Mermaid {
    diagram: String,
    scale: f32,
    auto_scale: bool,
    max_ratio: f32,
    alignment: Alignment,
    position: Option<Position>,
    link: Option<String>,
}
Expand description

Element that renders a Mermaid diagram into the PDF as an SVG image.

This element is only available when the mermaid feature is enabled. Rendering requires headless Chrome at runtime; the following example demonstrates creating and configuring a Mermaid element but does not attempt to render it.

§Examples

use genpdfi_extended::elements::Mermaid;
use genpdfi_extended::Alignment;

let m = Mermaid::new("graph TB\na-->b")
    .with_alignment(Alignment::Center)
    .with_scale(1.5);

// Example verifies the API compiles and can be debug-formatted without invoking Chrome.
let s = format!("{:?}", m);
assert!(s.contains("Mermaid"));

Fields§

§diagram: String§scale: f32

Scaling factor applied directly to the generated SVG. A value of 1.0 means no scaling.

§auto_scale: bool

If true, automatically reduce the scale so the rendered diagram fits within 90% of the page width or height (whichever constrains first). When enabled the scale is initially set to 2.0 by with_auto_scale() and then adjusted at render time based on the available area.

§max_ratio: f32

Maximum ratio of page size to use when auto-scaling (e.g. 0.9 for 90% of page)

§alignment: Alignment

Positioning and presentation helpers mirrored from Image.

§position: Option<Position>§link: Option<String>

Implementations§

Source§

impl Mermaid

Source

pub fn render_svg(diagram: &str) -> Result<String, Error>

Renders the diagram string to an SVG string using an embedded helper page and the mermaid.min.js script from examples/helper.

Source§

impl Mermaid

Source

pub fn new<S: Into<String>>(diagram: S) -> Self

Create a new Mermaid element from the source string.

§Examples
use genpdfi_extended::elements::Mermaid;
let m = Mermaid::new("graph TB\na-->b");
let s = format!("{:?}", m);
assert!(s.contains("Mermaid"));
Source

pub fn ensure_browser() -> Result<(), Error>

Ensure the global headless Chrome instance is up and running.

Useful for examples that want to pre-check the environment before building the full PDF.

Source

pub fn get_browser() -> Result<&'static Browser, Error>

Returns a reference to the shared headless Chrome Browser instance, initializing it if necessary. Use this if you need to open tabs or interact directly with the browser in integration tests or examples.

Source

pub fn with_alignment(self, a: Alignment) -> Self

Set alignment used when no absolute position is given.

Source

pub fn with_position(self, p: Position) -> Self

Set an absolute position for the element.

Attach a hyperlink to the rendered SVG.

Source

pub fn with_scale(self, s: f32) -> Self

Set the scale to apply directly to the generated SVG.

The scaling is applied to the SVG markup (a wrapper <g transform="scale(...)"> is inserted) and numeric width/height attributes are multiplied accordingly.

§Examples
use genpdfi_extended::elements::Mermaid;
let m = Mermaid::new("graph TB\na-->b").with_scale(2.0);
let s = format!("{:?}", m);
assert!(s.contains("Mermaid"));
Source

pub fn with_auto_scale(self, s: f32, max_ratio: f32) -> Self

Enable automatic scaling with a sensible default.

This sets the scale and enables automatic adjustment at render time so that the final rendered diagram does not exceed 90% of the available page width or height. The computed scale will never be larger than the initial value.

§Examples
use genpdfi_extended::elements::Mermaid;
let m = Mermaid::new("graph TB\na-->b").with_auto_scale(2.0, 0.9);
let s = format!("{:?}", m);
assert!(s.contains("Mermaid"));

Trait Implementations§

Source§

impl Clone for Mermaid

Source§

fn clone(&self) -> Mermaid

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for Mermaid

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Element for Mermaid

Source§

fn render( &mut self, context: &Context, area: Area<'_>, style: Style, ) -> Result<RenderResult, Error>

Renders this element to the given area using the given style and font cache. Read more
Source§

fn framed(self, line_style: impl Into<LineStyle>) -> FramedElement<Self>
where Self: Sized,

Draws a frame around this element using the given line style.
Source§

fn padded(self, padding: impl Into<Margins>) -> PaddedElement<Self>
where Self: Sized,

Adds a padding to this element.
Source§

fn styled(self, style: impl Into<Style>) -> StyledElement<Self>
where Self: Sized,

Sets the default style for this element and its children.

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
§

impl<T> Finish for T

§

fn finish(self)

Does nothing but move self, equivalent to drop.
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<E> IntoBoxedElement for E
where E: Element + 'static,

Source§

fn into_boxed_element(self) -> Box<dyn Element>

Creates a boxed element from this element.
Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
§

impl<T> Pointable for T

§

const ALIGN: usize

The alignment of pointer.
§

type Init = T

The type for initializers.
§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
§

impl<U, T> ToOwnedObj<U> for T
where U: FromObjRef<T>,

§

fn to_owned_obj(&self, data: FontData<'_>) -> U

Convert this type into T, using the provided data to resolve any offsets.
§

impl<U, T> ToOwnedTable<U> for T
where U: FromTableRef<T>,

§

fn to_owned_table(&self) -> U

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

§

fn vzip(self) -> V