1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-31 07:38:10 +00:00
serenity/Userland/Libraries/LibWeb/SVG
Aliaksandr Kalenik 063e66cae9 LibWeb: Introduce RecordingPainter to serialize painting commands
This modification introduces a new layer to the painting process. The
stacking context traversal no longer immediately calls the
Gfx::Painter methods. Instead, it writes serialized painting commands
into newly introduced RecordingPainter. Created list of commands is
executed later to produce resulting bitmap.

Producing painting command list will make it easier to add new
optimizations:
- It's simpler to check if the painting result is not visible in the
  viewport at the command level rather than during stacking context
  traversal.
- Run painting in a separate thread. The painting thread can process
  serialized painting commands, while the main thread can work on the
  next paintable tree and safely invalidate the previous one.
- As we consider GPU-accelerated painting support, it would be easier
  to back each painting command rather than constructing an alternative
  for the entire Gfx::Painter API.
2023-10-18 10:58:42 +02:00
..
AttributeNames.cpp LibWeb: Port AttributeNames to FlyString 2023-10-08 08:11:48 -04:00
AttributeNames.h LibWeb: Port AttributeNames to FlyString 2023-10-08 08:11:48 -04:00
AttributeParser.cpp LibWeb: Flesh out SVGMaskElement a bit 2023-09-19 10:46:05 +02:00
AttributeParser.h LibWeb: Flesh out SVGMaskElement a bit 2023-09-19 10:46:05 +02:00
Default.css LibWeb: Include standard SVG user agent style sheet 2023-09-23 16:27:14 +02:00
SVGAnimatedLength.cpp LibJS: Make Heap::allocate<T>() infallible 2023-08-13 15:38:42 +02:00
SVGAnimatedLength.h LibJS: Make Heap::allocate<T>() infallible 2023-08-13 15:38:42 +02:00
SVGAnimatedLength.idl LibWeb: Add Exposed attribute and IDL spec links where missing 2022-10-09 10:14:57 +02:00
SVGAnimatedNumber.cpp LibJS: Make Heap::allocate<T>() infallible 2023-08-13 15:38:42 +02:00
SVGAnimatedNumber.h LibJS: Make Heap::allocate<T>() infallible 2023-08-13 15:38:42 +02:00
SVGAnimatedNumber.idl LibWeb: Implement SVGAnimatedNumber 2023-04-28 09:42:28 +02:00
SVGCircleElement.cpp AK+Everywhere: Remove the null state of DeprecatedString 2023-10-13 18:33:21 +03:30
SVGCircleElement.h AK+Everywhere: Remove the null state of DeprecatedString 2023-10-13 18:33:21 +03:30
SVGCircleElement.idl LibWeb: Expose SVGCircleElement attributes to JS 2022-03-22 22:33:17 +01:00
SVGClipPathElement.cpp LibJS: Make Cell::initialize() return void 2023-08-08 07:39:11 +02:00
SVGClipPathElement.h LibJS: Make Cell::initialize() return void 2023-08-08 07:39:11 +02:00
SVGClipPathElement.idl LibWeb: Sketch out a very basic SVG <clipPath> element 2022-04-10 21:35:55 +02:00
SVGDecodedImageData.cpp LibWeb: Introduce RecordingPainter to serialize painting commands 2023-10-18 10:58:42 +02:00
SVGDecodedImageData.h LibWeb: Use CSSPixelFraction to represent aspect ratios 2023-09-04 12:40:17 +02:00
SVGDefsElement.cpp LibWeb: Layout SVG <mask> elements (but don't paint them) 2023-09-19 10:46:05 +02:00
SVGDefsElement.h LibJS: Make Cell::initialize() return void 2023-08-08 07:39:11 +02:00
SVGDefsElement.idl LibWeb: Add SVGDefsElement 2022-04-11 20:19:10 +02:00
SVGElement.cpp AK+Everywhere: Remove the null state of DeprecatedString 2023-10-13 18:33:21 +03:30
SVGElement.h AK+Everywhere: Remove the null state of DeprecatedString 2023-10-13 18:33:21 +03:30
SVGElement.idl LibWeb: Move Element.prototype.style to ElementCSSInlineStyle mixin 2023-03-20 20:37:40 -04:00
SVGEllipseElement.cpp AK+Everywhere: Remove the null state of DeprecatedString 2023-10-13 18:33:21 +03:30
SVGEllipseElement.h AK+Everywhere: Remove the null state of DeprecatedString 2023-10-13 18:33:21 +03:30
SVGEllipseElement.idl LibWeb: Expose SVGEllipseElement attributes to JS 2022-03-22 22:33:17 +01:00
SVGForeignObjectElement.cpp LibWeb: Rename Element::attribute to Element::deprecated_attribute 2023-09-05 20:36:09 -04:00
SVGForeignObjectElement.h LibJS: Make Cell::initialize() return void 2023-08-08 07:39:11 +02:00
SVGForeignObjectElement.idl LibWeb: Sketch out basic support for SVG <foreignObject> elements 2022-11-16 13:01:21 +01:00
SVGGElement.cpp LibWeb: Make the layout tree GC-allocated 2022-10-20 15:16:23 +02:00
SVGGElement.h LibWeb: Make the layout tree GC-allocated 2022-10-20 15:16:23 +02:00
SVGGeometryElement.cpp LibWeb: Remove exceptions from DOMPoint because allocate is unfailable 2023-09-01 20:58:13 +02:00
SVGGeometryElement.h LibJS: Make Cell::initialize() return void 2023-08-08 07:39:11 +02:00
SVGGeometryElement.idl LibWeb: Add Exposed attribute and IDL spec links where missing 2022-10-09 10:14:57 +02:00
SVGGradientElement.cpp AK+Everywhere: Remove the null state of DeprecatedString 2023-10-13 18:33:21 +03:30
SVGGradientElement.h AK+Everywhere: Remove the null state of DeprecatedString 2023-10-13 18:33:21 +03:30
SVGGradientElement.idl LibWeb: Implement SVGGradientElement 2023-04-28 09:42:28 +02:00
SVGGraphicsElement.cpp AK+Everywhere: Remove the null state of DeprecatedString 2023-10-13 18:33:21 +03:30
SVGGraphicsElement.h LibWeb: Introduce RecordingPainter to serialize painting commands 2023-10-18 10:58:42 +02:00
SVGGraphicsElement.idl LibWeb: Add Exposed attribute and IDL spec links where missing 2022-10-09 10:14:57 +02:00
SVGLength.cpp LibJS: Make Heap::allocate<T>() infallible 2023-08-13 15:38:42 +02:00
SVGLength.h LibJS: Make Heap::allocate<T>() infallible 2023-08-13 15:38:42 +02:00
SVGLength.idl LibWeb: Add Exposed attribute and IDL spec links where missing 2022-10-09 10:14:57 +02:00
SVGLinearGradientElement.cpp AK+Everywhere: Remove the null state of DeprecatedString 2023-10-13 18:33:21 +03:30
SVGLinearGradientElement.h AK+Everywhere: Remove the null state of DeprecatedString 2023-10-13 18:33:21 +03:30
SVGLinearGradientElement.idl LibWeb: Implement SVGLinearGradientElement (<linearGradient>) 2023-04-28 09:42:28 +02:00
SVGLineElement.cpp AK+Everywhere: Remove the null state of DeprecatedString 2023-10-13 18:33:21 +03:30
SVGLineElement.h AK+Everywhere: Remove the null state of DeprecatedString 2023-10-13 18:33:21 +03:30
SVGLineElement.idl LibWeb: Expose SVGLineElement attributes to JS 2022-03-22 22:33:17 +01:00
SVGMaskElement.cpp AK+Everywhere: Remove the null state of DeprecatedString 2023-10-13 18:33:21 +03:30
SVGMaskElement.h AK+Everywhere: Remove the null state of DeprecatedString 2023-10-13 18:33:21 +03:30
SVGMaskElement.idl LibWeb: Stub out SVGMaskElement 2023-08-10 11:36:17 +02:00
SVGPathElement.cpp LibWeb: Introduce RecordingPainter to serialize painting commands 2023-10-18 10:58:42 +02:00
SVGPathElement.h AK+Everywhere: Remove the null state of DeprecatedString 2023-10-13 18:33:21 +03:30
SVGPathElement.idl LibWeb: Add Exposed attribute and IDL spec links where missing 2022-10-09 10:14:57 +02:00
SVGPolygonElement.cpp AK+Everywhere: Remove the null state of DeprecatedString 2023-10-13 18:33:21 +03:30
SVGPolygonElement.h AK+Everywhere: Remove the null state of DeprecatedString 2023-10-13 18:33:21 +03:30
SVGPolygonElement.idl LibWeb: Add imports to all IDL files that depend on others 2022-02-16 22:48:32 +03:30
SVGPolylineElement.cpp AK+Everywhere: Remove the null state of DeprecatedString 2023-10-13 18:33:21 +03:30
SVGPolylineElement.h AK+Everywhere: Remove the null state of DeprecatedString 2023-10-13 18:33:21 +03:30
SVGPolylineElement.idl LibWeb: Add imports to all IDL files that depend on others 2022-02-16 22:48:32 +03:30
SVGRadialGradientElement.cpp AK+Everywhere: Remove the null state of DeprecatedString 2023-10-13 18:33:21 +03:30
SVGRadialGradientElement.h AK+Everywhere: Remove the null state of DeprecatedString 2023-10-13 18:33:21 +03:30
SVGRadialGradientElement.idl LibWeb: Add an initial implementation of SVG <radialGradient> 2023-05-04 16:50:01 +02:00
SVGRectElement.cpp AK+Everywhere: Remove the null state of DeprecatedString 2023-10-13 18:33:21 +03:30
SVGRectElement.h AK+Everywhere: Remove the null state of DeprecatedString 2023-10-13 18:33:21 +03:30
SVGRectElement.idl LibWeb: Begin implementing SVGRectElement's SVGAnimatedLength attributes 2022-03-21 21:04:39 +01:00
SVGScriptElement.cpp LibWeb: Add IDL definition for SVGScriptElement 2023-09-23 11:41:57 +02:00
SVGScriptElement.h LibWeb: Add IDL definition for SVGScriptElement 2023-09-23 11:41:57 +02:00
SVGScriptElement.idl LibWeb: Add IDL definition for SVGScriptElement 2023-09-23 11:41:57 +02:00
SVGStopElement.cpp AK+Everywhere: Remove the null state of DeprecatedString 2023-10-13 18:33:21 +03:30
SVGStopElement.h AK+Everywhere: Remove the null state of DeprecatedString 2023-10-13 18:33:21 +03:30
SVGStopElement.idl LibWeb: Implement SVGStopElement (<stop>) 2023-04-28 09:42:28 +02:00
SVGStyleElement.cpp LibJS: Make Cell::initialize() return void 2023-08-08 07:39:11 +02:00
SVGStyleElement.h LibJS: Make Cell::initialize() return void 2023-08-08 07:39:11 +02:00
SVGStyleElement.idl LibWeb: Add Optional<String> overload for Element::set_attribute 2023-09-02 19:23:41 +01:00
SVGSVGElement.cpp AK+Everywhere: Remove the null state of DeprecatedString 2023-10-13 18:33:21 +03:30
SVGSVGElement.h AK+Everywhere: Remove the null state of DeprecatedString 2023-10-13 18:33:21 +03:30
SVGSVGElement.idl LibWeb: Add Exposed attribute and IDL spec links where missing 2022-10-09 10:14:57 +02:00
SVGSymbolElement.cpp AK+Everywhere: Remove the null state of DeprecatedString 2023-10-13 18:33:21 +03:30
SVGSymbolElement.h AK+Everywhere: Remove the null state of DeprecatedString 2023-10-13 18:33:21 +03:30
SVGSymbolElement.idl LibWeb: Implement the <symbol> SVG element 2023-06-03 05:58:00 +02:00
SVGTextContentElement.cpp LibJS: Make Cell::initialize() return void 2023-08-08 07:39:11 +02:00
SVGTextContentElement.h LibJS: Make Cell::initialize() return void 2023-08-08 07:39:11 +02:00
SVGTextContentElement.idl LibWeb: Split SVGTextContentElement into spec defined subclasses 2023-07-23 06:32:39 +02:00
SVGTextElement.cpp LibJS: Make Cell::initialize() return void 2023-08-08 07:39:11 +02:00
SVGTextElement.h LibJS: Make Cell::initialize() return void 2023-08-08 07:39:11 +02:00
SVGTextElement.idl LibWeb: Split SVGTextContentElement into spec defined subclasses 2023-07-23 06:32:39 +02:00
SVGTextPositioningElement.cpp AK+Everywhere: Remove the null state of DeprecatedString 2023-10-13 18:33:21 +03:30
SVGTextPositioningElement.h AK+Everywhere: Remove the null state of DeprecatedString 2023-10-13 18:33:21 +03:30
SVGTextPositioningElement.idl LibWeb: Split SVGTextContentElement into spec defined subclasses 2023-07-23 06:32:39 +02:00
SVGTitleElement.cpp LibWeb: Remove FrameLoader 2023-09-20 18:29:17 +02:00
SVGTitleElement.h LibJS: Make Cell::initialize() return void 2023-08-08 07:39:11 +02:00
SVGTitleElement.idl LibWeb: Implement the SVG title element 2023-06-09 01:12:48 +02:00
SVGTSpanElement.cpp LibJS: Make Cell::initialize() return void 2023-08-08 07:39:11 +02:00
SVGTSpanElement.h LibJS: Make Cell::initialize() return void 2023-08-08 07:39:11 +02:00
SVGTSpanElement.idl LibWeb: Add support for SVG <tspan> elements 2023-07-23 06:32:39 +02:00
SVGUseElement.cpp AK+Everywhere: Remove the null state of DeprecatedString 2023-10-13 18:33:21 +03:30
SVGUseElement.h AK+Everywhere: Remove the null state of DeprecatedString 2023-10-13 18:33:21 +03:30
SVGUseElement.idl LibWeb: Implement the <use> SVG element 2023-06-03 05:58:00 +02:00
TagNames.cpp LibWeb: Port SVG::TagNames from DeprecatedFlyString 2023-10-08 08:11:48 -04:00
TagNames.h LibWeb: Port SVG::TagNames from DeprecatedFlyString 2023-10-08 08:11:48 -04:00
ViewBox.cpp LibWeb: Allow floating point values when parsing SVG viewboxes 2023-04-12 07:40:22 +02:00
ViewBox.h LibWeb: Make CSSPixels and Length use 64-bit (double) floating point 2023-05-24 14:40:35 +02:00