darkly 0.5.0

A GPU-native paint engine on wgpu: brushes, layers, blend modes, masks, selections, and undo.
Documentation
# THIS FILE IS AUTOMATICALLY GENERATED BY CARGO
#
# When uploading crates to the registry Cargo will automatically
# "normalize" Cargo.toml files for maximal compatibility
# with all versions of Cargo and also rewrite `path` dependencies
# to registry (e.g., crates.io) dependencies.
#
# If you are reading this file be aware that the original Cargo.toml
# will likely look very different (and much more reasonable).
# See Cargo.toml.orig for the original contents.

[package]
edition = "2021"
name = "darkly"
version = "0.5.0"
build = "build.rs"
autolib = false
autobins = false
autoexamples = false
autotests = false
autobenches = false
description = "A GPU-native paint engine on wgpu: brushes, layers, blend modes, masks, selections, and undo."
homepage = "https://github.com/darkly-art/darkly"
readme = "README.md"
keywords = [
    "paint",
    "gpu",
    "webgpu",
    "graphics",
    "wgpu",
]
categories = [
    "graphics",
    "rendering",
    "wasm",
]
license = "AGPL-3.0-or-later"
repository = "https://github.com/darkly-art/darkly"

[features]
profile = []
testing = []

[lib]
name = "darkly"
path = "src/lib.rs"

[[bin]]
name = "stroke_replay_bench"
path = "src/bin/stroke_replay_bench.rs"
required-features = ["testing"]

[[bin]]
name = "stroke_replay_matrix"
path = "src/bin/stroke_replay_matrix.rs"
required-features = ["testing"]

[[test]]
name = "blend_modes"
path = "tests/blend_modes.rs"

[[test]]
name = "brush_begin_stroke_lifecycle"
path = "tests/brush_begin_stroke_lifecycle.rs"

[[test]]
name = "brush_editor_preview"
path = "tests/brush_editor_preview.rs"

[[test]]
name = "brush_erase"
path = "tests/brush_erase.rs"

[[test]]
name = "brush_picker_backend"
path = "tests/brush_picker_backend.rs"

[[test]]
name = "brush_preserves_pixels_outside_dab"
path = "tests/brush_preserves_pixels_outside_dab.rs"

[[test]]
name = "canvas_resize"
path = "tests/canvas_resize.rs"

[[test]]
name = "coord_invariants"
path = "tests/coord_invariants.rs"

[[test]]
name = "cursor_preview_coverage_scale"
path = "tests/cursor_preview_coverage_scale.rs"

[[test]]
name = "engine"
path = "tests/engine.rs"

[[test]]
name = "filters"
path = "tests/filters.rs"

[[test]]
name = "flip_rotate"
path = "tests/flip_rotate.rs"

[[test]]
name = "gpu_undo_round_trip_preserves_pixels"
path = "tests/gpu_undo_round_trip_preserves_pixels.rs"

[[test]]
name = "image_rescale"
path = "tests/image_rescale.rs"

[[test]]
name = "layer_bake"
path = "tests/layer_bake.rs"

[[test]]
name = "layer_clipboard"
path = "tests/layer_clipboard.rs"

[[test]]
name = "liquify"
path = "tests/liquify.rs"

[[test]]
name = "multi_engine"
path = "tests/multi_engine.rs"

[[test]]
name = "paint_basic"
path = "tests/paint_basic.rs"

[[test]]
name = "paint_info_derive_sensors"
path = "tests/paint_info_derive_sensors.rs"

[[test]]
name = "paint_ops"
path = "tests/paint_ops.rs"

[[test]]
name = "paint_target"
path = "tests/paint_target.rs"

[[test]]
name = "preview_liquify"
path = "tests/preview_liquify.rs"

[[test]]
name = "preview_paint"
path = "tests/preview_paint.rs"

[[test]]
name = "preview_rotation"
path = "tests/preview_rotation.rs"

[[test]]
name = "preview_smudge"
path = "tests/preview_smudge.rs"

[[test]]
name = "preview_unit_invariance"
path = "tests/preview_unit_invariance.rs"

[[test]]
name = "preview_watercolor"
path = "tests/preview_watercolor.rs"

[[test]]
name = "probe_liquify"
path = "tests/probe_liquify.rs"

[[test]]
name = "profile_render"
path = "tests/profile_render.rs"

[[test]]
name = "protocol"
path = "tests/protocol.rs"

[[test]]
name = "protocol_reentrancy"
path = "tests/protocol_reentrancy.rs"

[[test]]
name = "region_store"
path = "tests/region_store.rs"

[[test]]
name = "rough_ink"
path = "tests/rough_ink.rs"

[[test]]
name = "schema_contracts"
path = "tests/schema_contracts.rs"

[[test]]
name = "selection"
path = "tests/selection.rs"

[[test]]
name = "shader_compile"
path = "tests/shader_compile.rs"

[[test]]
name = "smudge"
path = "tests/smudge.rs"

[[test]]
name = "stroke"
path = "tests/stroke.rs"

[[test]]
name = "stroke_recording"
path = "tests/stroke_recording.rs"

[[test]]
name = "stroke_replay"
path = "tests/stroke_replay.rs"

[[test]]
name = "thumbnail_reactivity"
path = "tests/thumbnail_reactivity.rs"

[[test]]
name = "transform"
path = "tests/transform.rs"

[[test]]
name = "veil_preview"
path = "tests/veil_preview.rs"

[[test]]
name = "void_layer"
path = "tests/void_layer.rs"

[[test]]
name = "void_preview"
path = "tests/void_preview.rs"

[[test]]
name = "watercolor"
path = "tests/watercolor.rs"

[[test]]
name = "wgsl"
path = "tests/wgsl.rs"

[[test]]
name = "wire_range_remap"
path = "tests/wire_range_remap.rs"

[dependencies.base64]
version = "0.22"

[dependencies.bytemuck]
version = "1.13"
features = ["derive"]

[dependencies.image]
version = "0.25"
features = [
    "png",
    "jpeg",
]
default-features = false

[dependencies.indexmap]
version = "2"
features = ["serde"]

[dependencies.log]
version = "0.4"

[dependencies.png]
version = "0.18"

[dependencies.quick-xml]
version = "0.40"

[dependencies.serde]
version = "1.0"
features = ["derive"]

[dependencies.serde_json]
version = "1.0"

[dependencies.serde_yaml_ng]
version = "0.10"

[dependencies.slotmap]
version = "1.0"
features = ["serde"]

[dependencies.smallvec]
version = "1"

[dependencies.thiserror]
version = "2.0"

[dependencies.web-time]
version = "1.1.0"

[dependencies.wgpu]
version = "29.0"
features = ["webgpu"]

[dependencies.zip]
version = "8.6"
features = ["deflate"]
default-features = false

[dev-dependencies.naga]
version = "29.0"
features = ["wgsl-in"]

[dev-dependencies.pollster]
version = "0.4"

[dev-dependencies.syn]
version = "2"
features = [
    "visit",
    "full",
]

[lints.clippy]
too_many_arguments = "allow"