mplusfonts-macros 0.3.4

Procedural macros re-exported in the mplusfonts crate
Documentation
pub mod parts;

use swash::zeno::{Fill, Vector};

use crate::mplus::bitmap::units::Grid;

use super::render_image;
use super::{Block, GlyphMetrics, ImageCluster, MapIndex, Points};

macro_rules! def_unicode_char {
    (
        $(
            $fn_ident:ident,
        )*
    ) => {
        $(
            pub fn $fn_ident(glyph_metrics: &GlyphMetrics, offset: Vector) -> ImageCluster {
                let Grid(points) = &glyph_metrics.block;
                let block = parts::$fn_ident(points, offset);
                let image = render_image(&block, Fill::NonZero);

                Vec::from([image])
            }
        )*
    }
}

def_unicode_char! {
    left_half_block,
    right_half_block,

    left_one_quarter_block,
    right_one_quarter_block,
    left_three_quarters_block,
    right_three_quarters_block,

    left_one_eighth_block,
    right_one_eighth_block,
    left_three_eighths_block,
    right_three_eighths_block,
    left_five_eighths_block,
    right_five_eighths_block,
    left_seven_eighths_block,
    right_seven_eighths_block,

    vertical_one_eighth_block_2,
    vertical_one_eighth_block_3,
    vertical_one_eighth_block_4,
    vertical_one_eighth_block_5,
    vertical_one_eighth_block_6,
    vertical_one_eighth_block_7,

    left_one_third_block,
    left_two_thirds_block,
}