[package]
name = "sugarloaf"
authors.workspace = true
version.workspace = true
edition.workspace = true
license.workspace = true
keywords.workspace = true
include = [
"Cargo.toml",
"src/**/*.ttf",
"src/**/*.otf",
"src/**/*.wgsl",
"src/**/*.rs"
]
description = "Sugarloaf is Rio rendering engine, designed to be multiplatform. It is based on WebGPU, Rust library for Desktops and WebAssembly for Web (JavaScript). This project is created and maintained for Rio terminal purposes but feel free to use it."
documentation = "https://docs.rs/crate/sugarloaf/latest"
repository = "https://github.com/raphamorim/rio/tree/main/sugarloaf"
[lib]
crate-type = ["cdylib", "rlib"]
[package.metadata.docs.rs]
all-features = true
rustdoc-args = ["--cfg", "docsrs"]
targets = [
"x86_64-unknown-linux-gnu",
"x86_64-apple-darwin",
"x86_64-pc-windows-msvc",
"wasm32-unknown-unknown",
]
[dependencies]
wgpu = { workspace = true }
bytemuck = { workspace = true }
log = { workspace = true }
serde = { workspace = true }
twox-hash = { version = "1.6.3", default-features = false }
image = { workspace = true }
unicode-width = { workspace = true }
guillotiere = "0.6.2"
ordered-float = "4.2.0"
rustc-hash = "1.1.0"
raw-window-handle = { workspace = true }
ab_glyph = "0.2.23"
linked-hash-map = "0.5.6"
xi-unicode = "0.3.0"
approx = "0.5.1"
fnv = "1.0.7"
swash = "0.1.16"
[target.'cfg(not(target_arch = "wasm32"))'.dependencies]
crossbeam-channel = "0.5.13"
crossbeam-deque = "0.8.5"
rayon = "1.10.0"
twox-hash = { version = "1.6.3", default-features = false, features = ["std"] }
memmap2 = { version = "0.9.3" }
slotmap = { version = "1.0.7", default-features = false }
tinyvec = { version = "1.6.0", features = ["alloc"] }
ttf-parser = { version = "0.21.1", default-features = false, features = ["opentype-layout", "apple-layout", "variable-fonts", "glyph-names"]}
[target.'cfg(not(target_arch = "wasm32"))'.dev-dependencies]
tokio = { workspace = true }
[target.'cfg(all(unix, not(any(target_os = "macos", target_os = "android"))))'.dependencies]
fontconfig-parser = { version = "0.5.3", default-features = false }
[dev-dependencies]
winit = { workspace = true }
image = "0.24.6"
png = "0.17.8"
deflate = "1.0.0"
criterion = "0.5.1"
futures = "0.3.29"
once_cell = "1.18.0"
[features]
default = []
render_equal_updates = []
[[bench]]
name = "bench_sugar_pile"
path = "benches/bench_sugar_pile.rs"
harness = false
[[bench]]
name = "bench_sugar_pile_with_screen"
path = "benches/bench_sugar_pile_with_screen.rs"
harness = false
[target.'cfg(target_arch = "wasm32")'.dependencies]
console_error_panic_hook = { workspace = true }
console_log = { workspace = true }
js-sys = "0.3.61"
wasm-bindgen = { workspace = true }
wasm-bindgen-futures = { workspace = true }
wasm-bindgen-test = { workspace = true }
web-sys = { version = "0.3.61", features = [
"Location",
"Document",
"Navigator",
"Node",
"NodeList",
"Gpu",
"GpuAdapter",
"GpuAddressMode",
"GpuAutoLayoutMode",
"GpuBindGroup",
"GpuBindGroupDescriptor",
"GpuBindGroupEntry",
"GpuBindGroupLayout",
"GpuBindGroupLayoutDescriptor",
"GpuBindGroupLayoutEntry",
"GpuBlendComponent",
"GpuBlendFactor",
"GpuBlendOperation",
"GpuBlendState",
"GpuBuffer",
"GpuBufferBinding",
"GpuBufferBindingLayout",
"GpuBufferBindingType",
"GpuBufferDescriptor",
"GpuCanvasAlphaMode",
"GpuCanvasContext",
"GpuCanvasConfiguration",
"GpuColorDict",
"GpuColorTargetState",
"GpuCommandBuffer",
"GpuCommandBufferDescriptor",
"GpuCommandEncoder",
"GpuCommandEncoderDescriptor",
"GpuCompareFunction",
"GpuCompilationInfo",
"GpuCompilationMessage",
"GpuCompilationMessageType",
"GpuComputePassDescriptor",
"GpuComputePassEncoder",
"GpuComputePipeline",
"GpuComputePipelineDescriptor",
"GpuCullMode",
"GpuDepthStencilState",
"GpuDevice",
"GpuDeviceDescriptor",
"GpuDeviceLostInfo",
"GpuDeviceLostReason",
"GpuError",
"GpuErrorFilter",
"GpuExtent3dDict",
"GpuFeatureName",
"GpuFilterMode",
"GpuFragmentState",
"GpuFrontFace",
"GpuImageCopyBuffer",
"GpuImageCopyExternalImage",
"GpuImageCopyTexture",
"GpuImageCopyTextureTagged",
"GpuImageDataLayout",
"GpuIndexFormat",
"GpuLoadOp",
"gpu_map_mode",
"GpuMipmapFilterMode",
"GpuMultisampleState",
"GpuObjectDescriptorBase",
"GpuOrigin2dDict",
"GpuOrigin3dDict",
"GpuOutOfMemoryError",
"GpuPipelineDescriptorBase",
"GpuPipelineLayout",
"GpuPipelineLayoutDescriptor",
"GpuPowerPreference",
"GpuPrimitiveState",
"GpuPrimitiveTopology",
"GpuProgrammableStage",
"GpuQuerySet",
"GpuQuerySetDescriptor",
"GpuQueryType",
"GpuQueue",
"GpuRenderBundle",
"GpuRenderBundleDescriptor",
"GpuRenderBundleEncoder",
"GpuRenderBundleEncoderDescriptor",
"GpuRenderPassColorAttachment",
"GpuRenderPassDepthStencilAttachment",
"GpuRenderPassDescriptor",
"GpuRenderPassEncoder",
"GpuRenderPipeline",
"GpuRenderPipelineDescriptor",
"GpuRequestAdapterOptions",
"GpuSampler",
"GpuSamplerBindingLayout",
"GpuSamplerBindingType",
"GpuSamplerDescriptor",
"GpuShaderModule",
"GpuShaderModuleDescriptor",
"GpuStencilFaceState",
"GpuStencilOperation",
"GpuStorageTextureAccess",
"GpuStorageTextureBindingLayout",
"GpuStoreOp",
"GpuSupportedFeatures",
"GpuSupportedLimits",
"GpuTexture",
"GpuTextureAspect",
"GpuTextureBindingLayout",
"GpuTextureDescriptor",
"GpuTextureDimension",
"GpuTextureFormat",
"GpuTextureSampleType",
"GpuTextureView",
"GpuTextureViewDescriptor",
"GpuTextureViewDimension",
"GpuUncapturedErrorEvent",
"GpuUncapturedErrorEventInit",
"GpuValidationError",
"GpuVertexAttribute",
"GpuVertexBufferLayout",
"GpuVertexFormat",
"GpuVertexState",
"GpuVertexStepMode",
"HtmlCanvasElement",
"OffscreenCanvas",
"ImageBitmap",
"ImageBitmapRenderingContext",
"Window",
"WorkerGlobalScope",
"WorkerNavigator"
] }
[target.'cfg(target_arch = "wasm32")'.dev-dependencies]
web-sys = { version = "0.3.61", features = [
"Location",
"Blob",
"RequestInit",
"RequestMode",
"Request",
"Response",
"WebGl2RenderingContext",
"CanvasRenderingContext2d"
]}