Files
rust_browser/tests/goldens/expected/136-img-display-block.dl.txt
Zachary D. Rowitsch 15503fa4d9
All checks were successful
ci / fast (linux) (push) Successful in 3m18s
Implement image support (<img> with decode, sizing, and paint)
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>
2026-02-06 01:58:03 -05:00

3 lines
64 B
Plaintext

DisplayList items=1
Image rect=(8, 8, 100, 50) image_id=img#0