darkly 0.5.0

A GPU-native paint engine on wgpu: brushes, layers, blend modes, masks, selections, and undo.
Documentation
//! Document-level metadata — name and dirty state.

use serde::Deserialize;

use crate::engine::protocol::{decode, RequestRegistration, Response};

pub fn registrations() -> Vec<RequestRegistration> {
    vec![
        RequestRegistration {
            kind: "document_name",
            handle: |engine, _payload, _b| {
                Ok(Response::json(serde_json::json!({
                    "name": engine.document_name(),
                })))
            },
        },
        RequestRegistration {
            kind: "set_document_name",
            handle: |engine, payload, _b| {
                #[derive(Deserialize)]
                struct Req {
                    name: String,
                }
                let r: Req = decode(payload)?;
                engine.set_document_name(r.name);
                Ok(Response::empty())
            },
        },
        RequestRegistration {
            kind: "is_dirty",
            handle: |engine, _payload, _b| {
                Ok(Response::json(serde_json::json!({
                    "value": engine.is_dirty(),
                })))
            },
        },
        RequestRegistration {
            kind: "mark_dirty",
            handle: |engine, _payload, _b| {
                engine.mark_dirty();
                Ok(Response::empty())
            },
        },
    ]
}