# 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