Current section
Files
Jump to
Current section
Files
lib/mead/native.ex
# NIF stubs mirror the native function signatures one-to-one; their arity
# is fixed by the Rust side, not restructurable here.
# credo:disable-for-this-file Credo.Check.Refactor.FunctionArity
defmodule Mead.Native do
@moduledoc false
# base_url mirrors :source_url in mix.exs (kept literal here: styler
# reorders module attributes above `use`, breaking attribute interpolation).
# force_build: developing mead itself (dev/test) always builds from source;
# consumers get precompiled binaries unless they opt in with MEAD_BUILD=1.
use RustlerPrecompiled,
otp_app: :mead_pdf,
crate: "mead_nif",
base_url: "https://github.com/jakeprem/mead/releases/download/v#{Mix.Project.config()[:version]}",
version: Mix.Project.config()[:version],
force_build: System.get_env("MEAD_BUILD") in ["1", "true"] or Mix.env() in [:dev, :test]
# Recompile this module (and therefore the crate) when the Rust source changes.
@external_resource "native/mead_nif/src/lib.rs"
@external_resource "native/mead_nif/src/text.rs"
@external_resource "native/mead_nif/Cargo.toml"
def font_set_new(_specs, _fallback, _pool), do: :erlang.nif_error(:nif_not_loaded)
def session_new(_font_set, _shape_cache_entries), do: :erlang.nif_error(:nif_not_loaded)
def render(_root, _header, _footer, _meta, _session, _assets, _page_width, _page_height, _margin, _max_pages),
do: :erlang.nif_error(:nif_not_loaded)
def layout(_root, _session, _assets, _page_width), do: :erlang.nif_error(:nif_not_loaded)
def paginate(_root, _header, _footer, _session, _assets, _page_width, _page_height, _margin, _max_pages),
do: :erlang.nif_error(:nif_not_loaded)
end