All checks were successful
ci / fast (linux) (push) Successful in 3m18s
Add end-to-end image rendering: HTML <img> elements are now decoded, sized with CSS replaced-element rules (intrinsic dimensions, proportional scaling), emitted as DisplayItem::Image in the display list, and rasterized with nearest-neighbor scaling and alpha blending. Key changes: - ImageId newtype in shared crate, DecodedImage/ImageStore/ImagePipeline in image crate using the `image` crate for PNG/JPEG/GIF/WebP decoding - DisplayItem::Image variant in display list with render_image() emission - LayoutBox gains intrinsic_width/height/image_id; <img> elements coerced from Inline to InlineBlock only when image is successfully loaded - Replaced element sizing in block layout: intrinsic width/height short-circuits with proportional scaling and infinity guards - Pipeline wires image loading (DOM walk, URL resolve, decode) through to layout_with_images() and stores ImageStore in PipelineResult - CpuRasterizer.rasterize_with_images() draws images with nearest-neighbor scaling, safe usize arithmetic, bounds checking, and alpha blending - Replaced standalone png crate with image_decoder for PNG writing - 12 golden tests (125-136) and 28 unit tests covering sizing, edge cases, zero dimensions, and rasterization Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
68 lines
1.4 KiB
TOML
68 lines
1.4 KiB
TOML
[package]
|
|
name = "app_browser"
|
|
version = "0.1.0"
|
|
edition = "2021"
|
|
publish = false
|
|
|
|
# The desktop application shell. This crate owns:
|
|
# - window creation
|
|
# - platform event loop integration
|
|
# - wiring together runtime + engine crates
|
|
# No browser logic or engine internals should live here.
|
|
|
|
[[bin]]
|
|
name = "app_browser"
|
|
path = "src/main.rs"
|
|
|
|
[dependencies]
|
|
# Internal crates
|
|
browser_runtime = { path = "../browser_runtime" }
|
|
platform = { path = "../platform" }
|
|
shared = { path = "../shared" }
|
|
net = { path = "../net" }
|
|
html = { path = "../html" }
|
|
dom = { path = "../dom" }
|
|
css = { path = "../css" }
|
|
style = { path = "../style" }
|
|
layout = { path = "../layout" }
|
|
display_list = { path = "../display_list" }
|
|
render = { path = "../render" }
|
|
image = { path = "../image" }
|
|
|
|
# Logging / tracing
|
|
tracing.workspace = true
|
|
tracing-subscriber.workspace = true
|
|
log.workspace = true
|
|
|
|
# Error handling
|
|
anyhow.workspace = true
|
|
|
|
# URL parsing
|
|
url.workspace = true
|
|
|
|
# Platform abstraction helpers (narrow usage only)
|
|
once_cell.workspace = true
|
|
|
|
# --- Platform-specific deps go here (feature-gated later) ---
|
|
|
|
[target.'cfg(target_os = "macos")'.dependencies]
|
|
# Example placeholders (do not add until needed)
|
|
# cocoa = "0.25"
|
|
# objc = "0.2"
|
|
|
|
[target.'cfg(target_os = "linux")'.dependencies]
|
|
# Example placeholders
|
|
# x11 = "2"
|
|
# wayland-client = "0.31"
|
|
|
|
|
|
# --- Dev Dependencies (testing) ---
|
|
|
|
[dev-dependencies]
|
|
tempfile = "3"
|
|
|
|
# --- Lints ---
|
|
|
|
[lints]
|
|
workspace = true
|