Types

Configuration Types

BlobBoards.PatternConfig — Type
PatternConfig

Deterministic configuration for pattern generation.

Fields (selected)

  • pattern_resolution::Size2: logical size of the pattern region
  • min_scale: minimum σ (in logical units)
  • max_scale: maximum σ (in logical units) — the top of the scale ladder, exact (see calc_blob_scales). The constructor keyword's nothing (its default) stores a disc diameter of 20% of the short side; the field is always a σ. Users give sizes through blob_sizes (printed disc diameters) on blob_pattern/blob_board; this struct stores only σ in px (schema v2).
  • seed::UInt64: RNG seed for reproducibility
  • pixel_type: requested output colorant type (e.g. Gray{N0f16})
  • polarity::Symbol: blob polarity (:dark for dark blobs on light background, :light for light blobs on dark background)
source
BlobBoards.BoardConfig — Type
BoardConfig

Physical board configuration including canvas, print density, border, and ruler. Construct using physical units (e.g. mm or inch).

source
BlobBoards.BoardPreamble — Type
BoardPreamble

Metadata for a board, bundling the physical BoardConfig and the embedded PatternConfig used to render the pattern region.

source

Bundle Types

BlobBoards.PatternBundle — Type
PatternBundle <: AbstractBundle

Container returned by blob_pattern with configuration and blob list.

Fields:

  • pattern_config::PatternConfig
  • blobs::Vector{Disc}
source
BlobBoards.BoardBundle — Type
BoardBundle <: AbstractBundle

Container returned by blob_board with preamble, generated blobs, and optional saddle points.

Fields:

  • preamble::BoardPreamble
  • blobs::Vector{Disc} - blob locations in logical units (pixels, COLMAP convention)
  • saddle_points::Vector{Point2{VgcQuantity{Float64}}} - saddle point locations in pixel units (only for frame_style=:saddle)

Blobs and saddle points are stored internally in logical (pixel) coordinates in :pattern reference frame. Use blobs(bundle, reference_frame; units=mm) or saddle_points(bundle, reference_frame; units=mm) to extract in different frames or units.

`saddle_points` is EMPTY on every board in circulation

It is populated only by frame_style = :saddle, and no printed board uses it: all 50 boards in the shipped artifact are frame_style = :ruler with zero saddle points (checked 2026-09-10). The detection pipeline never reads this field either — correspondences are built from blob CENTROIDS alone, so a board's saddles play no part in detection, matching or pose.

An empty vector here is therefore normal, not a defect or a load failure. The capability itself is live and tested (plot_saddle in the authoring extension, saddle_points_python in the Python one) — it is simply unused by the current board population.

source

Layout Types

BlobBoards.LogicalBoardSizes — Type
LogicalBoardSizes

Derived logical sizes (in dots) for a board layout at a given density. Provides canvas, pattern, corner, and frame sizes used by layout_grid.

The margin field is a 4-tuple (left, right, bottom, top) of integral padding values suitable for Makie's figure_padding parameter.

source

Ruler Types

BlobBoards.RulerTick — Type
RulerTick{T}

Tick specification for a printed ruler. Fields

  • spacing::T: center-to-center distance between ticks
  • width::T: the tick's full drawn length across the frame band (physical)
source
BlobBoards.RulerSpec — Type
RulerSpec{RT<:RulerTick}

Ruler specification: the major_tick and minor_tick spacings and widths.

A tick's width is its FULL drawn length across the frame band, in physical units, centred in the band. BoardConfig's defaults (major = the padded band frame_width − 2·frame_padding, minor = half of it) fill the band with major ticks. Requires 0 < minor ≤ major ≤ frame_width − 2·frame_padding (checked by BoardConfig for frame_style = :ruler).

Schema: board bundles before blobboards/board/v3 stored a third field, width (the "ruler width"), and HALF-extent tick widths; the reader drops that field and doubles the tick widths (StructTypes.construct below), which reproduces exactly the ruler those boards were drawn with. The stored hashes.config stays their identity.

source

Constants

BlobBoards.PRINT_SIZES — Constant
PRINT_SIZES

Mapping of common paper sizes (ISO/ANSI names) to physical Size2 dimensions. Use with blob_board(paper_size::String, ...).

source

UID Generation

BlobBoards.hash_config — Function
hash_config(config)

Hash a configuration (PatternConfig or BoardPreamble) — SHA-256 over the canonical v1 encoding (canonical_config_json); full hex string.

Minting only: identities of existing boards come from their STORED hashes.config (authoritative on load), never from recomputation.

source