katana-document-viewer 0.1.4

KatanA document viewer artifact, render evaluation, and export foundation.
Documentation
mod export_surface_line_debug;
mod export_surface_line_impl;
mod export_surface_line_markers;
use crate::export_surface_span::SurfaceTextSpan;

pub(crate) const BODY_FONT_SIZE: f32 = 24.0;
pub(crate) const LIST_MARKER_COLUMN_WIDTH: u32 = 36;

pub(crate) struct SurfaceLine {
    pub(crate) text: String,
    pub(crate) spans: Vec<SurfaceTextSpan>,
    level: SurfaceLineLevel,
    quote_depth: u32,
    indent_depth: u32,
    alignment: SurfaceLineAlignment,
}

enum SurfaceLineLevel {
    Heading(u8),
    Body,
    Code,
}

#[derive(Clone, Copy)]
enum SurfaceLineAlignment {
    Left,
    Center,
}

#[derive(Clone, Debug, PartialEq, Eq)]
pub(crate) enum SurfaceLineMarker {
    Bullet,
    Ordered(String),
    Task(SurfaceTaskMarker),
}

#[derive(Clone, Copy, Debug, PartialEq, Eq)]
pub(crate) enum SurfaceTaskMarker {
    Done,
    Empty,
    Blocked,
    InProgress,
}