ladybird/Userland/Libraries/LibWeb/CSS
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
..
Parser LibWeb/CSS: Parser should treat calc() with flex values as invalid 2023-10-11 07:07:29 +02:00
StyleValues LibWeb: Introduce RecordingPainter to serialize painting commands 2023-10-18 10:58:42 +02:00
SyntaxHighlighter LibSyntax+Userland: Make LibSyntax not depend on LibGUI 2023-08-29 07:57:39 -04:00
Angle.cpp AK: Add to_radians and to_degrees math functions 2023-09-10 08:38:29 +01:00
Angle.h LibWeb: Make serializing basic CSS types infallible 2023-08-22 17:51:48 +01:00
BackdropFilter.h LibWeb: Split FilterValueListStyleValue out of StyleValue.{h,cpp} 2023-03-25 16:56:04 +00:00
CalculatedOr.cpp LibWeb: Allow calc() values in image sizes attribute 2023-07-29 11:58:51 +02:00
CalculatedOr.h LibWeb: Make StyleValue::to_string() infallible 2023-08-22 17:51:48 +01:00
Clip.cpp LibWeb: Move CSS::EdgeRect into its own files 2023-03-30 21:29:50 +02:00
Clip.h LibWeb: Move CSS::EdgeRect into its own files 2023-03-30 21:29:50 +02:00
ColumnCount.h LibWeb: Implement support for parsing CSS column-count property 2023-09-07 20:16:33 +02:00
ComputedValues.h LibWeb: Make CSS Transformation struct a proper class 2023-10-15 07:14:39 +02:00
CSS.cpp LibWeb: Make Serialize functions infallible 2023-08-22 17:51:48 +01:00
CSS.h LibWeb: Port the CSS namespace to IDL 2023-03-15 12:48:25 -04:00
CSS.idl LibWeb: Port the CSS namespace to IDL 2023-03-15 12:48:25 -04:00
CSSConditionRule.cpp LibJS: Make Cell::initialize() return void 2023-08-08 07:39:11 +02:00
CSSConditionRule.h LibWeb: Port CSSConditionRule interface from DeprecatedString to String 2023-08-29 10:05:02 +02:00
CSSConditionRule.idl LibWeb: Switch IDL from UseNewAKString to UseDeprecatedAKString 2023-09-02 19:23:41 +01:00
CSSFontFaceRule.cpp LibWeb: Parse src: local(...) in CSS @font-face rules 2023-08-25 11:51:28 +02:00
CSSFontFaceRule.h LibJS: Make Heap::allocate<T>() infallible 2023-08-13 15:38:42 +02:00
CSSFontFaceRule.idl
CSSGroupingRule.cpp LibJS: Make Cell::initialize() return void 2023-08-08 07:39:11 +02:00
CSSGroupingRule.h LibJS: Make Cell::initialize() return void 2023-08-08 07:39:11 +02:00
CSSGroupingRule.idl
CSSImportRule.cpp LibJS: Make Heap::allocate<T>() infallible 2023-08-13 15:38:42 +02:00
CSSImportRule.h LibJS: Make Heap::allocate<T>() infallible 2023-08-13 15:38:42 +02:00
CSSImportRule.idl
CSSKeyframeRule.cpp LibJS: Make Heap::allocate<T>() infallible 2023-08-13 15:38:42 +02:00
CSSKeyframeRule.h LibWeb: Port CSSKeyframeRules interface from DeprecatedString to String 2023-08-29 10:05:02 +02:00
CSSKeyframeRule.idl LibWeb: Switch IDL from UseNewAKString to UseDeprecatedAKString 2023-09-02 19:23:41 +01:00
CSSKeyframesRule.cpp LibWeb: Use JS::MarkedVector while parsing CSS keyframe rules 2023-09-04 18:22:59 +02:00
CSSKeyframesRule.h LibWeb: Use JS::MarkedVector while parsing CSS keyframe rules 2023-09-04 18:22:59 +02:00
CSSKeyframesRule.idl LibWeb: Switch IDL from UseNewAKString to UseDeprecatedAKString 2023-09-02 19:23:41 +01:00
CSSMediaRule.cpp LibWeb: Port CSSConditionRule interface from DeprecatedString to String 2023-08-29 10:05:02 +02:00
CSSMediaRule.h LibWeb: Port CSSConditionRule interface from DeprecatedString to String 2023-08-29 10:05:02 +02:00
CSSMediaRule.idl
CSSNamespaceRule.cpp AK+Everywhere: Remove the null state of DeprecatedString 2023-10-13 18:33:21 +03:30
CSSNamespaceRule.h LibJS: Make Heap::allocate<T>() infallible 2023-08-13 15:38:42 +02:00
CSSNamespaceRule.idl LibWeb: Rough implementation of CSS namespace rule 2023-07-30 20:27:19 +01:00
CSSNumericType.cpp LibWeb: Implement Flex and FlexStyleValue types 2023-09-28 20:33:20 +01:00
CSSNumericType.h LibWeb: Implement Flex and FlexStyleValue types 2023-09-28 20:33:20 +01:00
CSSRule.cpp AK+Everywhere: Rename String to DeprecatedString 2022-12-06 08:54:33 +01:00
CSSRule.h LibWeb: Rough implementation of CSS namespace rule 2023-07-30 20:27:19 +01:00
CSSRule.idl LibWeb: Add preliminary support for CSS animations 2023-05-29 05:35:41 +02:00
CSSRuleList.cpp LibWeb: Port DOMException interface from DeprecatedString to String 2023-09-06 11:44:45 -04:00
CSSRuleList.h LibJS: Make Heap::allocate<T>() infallible 2023-08-13 15:38:42 +02:00
CSSRuleList.idl
CSSStyleDeclaration.cpp LibWeb: Port AttributeNames to FlyString 2023-10-08 08:11:48 -04:00
CSSStyleDeclaration.h LibWeb: Fix memory leak in CSS::ImageStyleValue 2023-09-25 04:16:36 +02:00
CSSStyleDeclaration.idl LibWeb: Allow indexing into CSSStyleDeclaration by number 2023-09-29 20:20:55 +02:00
CSSStyleRule.cpp AK+Everywhere: Remove the null state of DeprecatedString 2023-10-13 18:33:21 +03:30
CSSStyleRule.h LibJS: Make Heap::allocate<T>() infallible 2023-08-13 15:38:42 +02:00
CSSStyleRule.idl
CSSStyleSheet.cpp LibWeb: Port DOMException interface from DeprecatedString to String 2023-09-06 11:44:45 -04:00
CSSStyleSheet.h LibWeb: Port CSSStyleSheet interface from DeprecatedString to String 2023-09-05 20:36:09 -04:00
CSSStyleSheet.idl LibWeb: Add Exposed attribute and IDL spec links where missing 2022-10-09 10:14:57 +02:00
CSSSupportsRule.cpp LibWeb: Port CSSConditionRule interface from DeprecatedString to String 2023-08-29 10:05:02 +02:00
CSSSupportsRule.h LibWeb: Port CSSConditionRule interface from DeprecatedString to String 2023-08-29 10:05:02 +02:00
CSSSupportsRule.idl
Default.css LibWeb/HTMLInputElement: Improve appearance of color picker 2023-10-16 12:46:30 +01:00
Display.cpp LibWeb: Move <display-foo> definitions into Enums.json 2023-09-11 17:03:22 +01:00
Display.h LibWeb: Add display: math 2023-09-11 17:03:22 +01:00
EasingFunctions.json Meta/CodeGenerators+LibWeb: Implement parsing CSS easing functions 2023-07-13 05:10:41 +02:00
EdgeRect.cpp LibWeb: Don't convert to floating point in CSS::EdgeRect 2023-09-01 09:40:14 +02:00
EdgeRect.h LibWeb: Don't convert to floating point in CSS::EdgeRect 2023-09-01 09:40:14 +02:00
ElementCSSInlineStyle.idl LibWeb: Move Element.prototype.style to ElementCSSInlineStyle mixin 2023-03-20 20:37:40 -04:00
Enums.json LibWeb: Implement mask-type CSS property 2023-10-09 07:28:18 +02:00
Flex.cpp LibWeb: Implement Flex and FlexStyleValue types 2023-09-28 20:33:20 +01:00
Flex.h LibWeb: Implement Flex and FlexStyleValue types 2023-09-28 20:33:20 +01:00
FontFace.cpp LibWeb: Parse font-weight and font-style inside @font-face rules 2023-05-24 17:19:18 +02:00
FontFace.h LibWeb: Parse src: local(...) in CSS @font-face rules 2023-08-25 11:51:28 +02:00
Frequency.cpp LibWeb: Make serializing basic CSS types infallible 2023-08-22 17:51:48 +01:00
Frequency.h LibWeb: Make serializing basic CSS types infallible 2023-08-22 17:51:48 +01:00
GeneralEnclosed.h LibWeb: Port GeneralEnclosed to new Strings 2023-02-19 00:51:16 +01:00
GridTrackPlacement.cpp LibWeb: Define if identifier represent area or line during layout [GFC] 2023-08-28 09:19:41 +02:00
GridTrackPlacement.h LibWeb: Define if identifier represent area or line during layout [GFC] 2023-08-28 09:19:41 +02:00
GridTrackSize.cpp LibWeb: Store GridSize values as a Variant 2023-09-28 20:33:20 +01:00
GridTrackSize.h LibWeb: Store GridSize values as a Variant 2023-09-28 20:33:20 +01:00
Identifiers.json LibWeb: Implement mask-type CSS property 2023-10-09 07:28:18 +02:00
Length.cpp LibWeb: Change viewport ownership from BrowsingContext to Navigable 2023-09-16 16:53:32 +02:00
Length.h LibWeb: Add CSSPixels::nearest_value_for(FloatingPoint) 2023-08-26 23:53:45 +02:00
LengthBox.cpp LibWeb: Move PercentageOr and subclasses into PercentageOr.{h,cpp} 2023-03-30 21:29:50 +02:00
LengthBox.h Everywhere: Remove needless trailing semi-colons after functions 2023-07-08 10:32:56 +01:00
LinkStyle.idl
MathFunctions.json LibWeb: Generate parsing code for CSS math functions 2023-07-15 10:23:33 +02:00
MediaFeatures.json LibWeb: Reformat inconsistent CSS JSON files 2023-08-02 12:49:46 +01:00
MediaList.cpp LibWeb: Port MediaList interface from DeprecatedString to String 2023-08-29 10:05:02 +02:00
MediaList.h LibWeb: Port MediaList interface from DeprecatedString to String 2023-08-29 10:05:02 +02:00
MediaList.idl LibWeb: Switch IDL from UseNewAKString to UseDeprecatedAKString 2023-09-02 19:23:41 +01:00
MediaQuery.cpp LibWeb: Remove FrameLoader 2023-09-20 18:29:17 +02:00
MediaQuery.h LibWeb: Make serializing media-queries infallible 2023-08-22 17:51:48 +01:00
MediaQueryList.cpp LibWeb: Make serializing media-queries infallible 2023-08-22 17:51:48 +01:00
MediaQueryList.h LibJS: Make Heap::allocate<T>() infallible 2023-08-13 15:38:42 +02:00
MediaQueryList.idl
MediaQueryListEvent.cpp LibJS: Make Heap::allocate<T>() infallible 2023-08-13 15:38:42 +02:00
MediaQueryListEvent.h LibJS: Make Heap::allocate<T>() infallible 2023-08-13 15:38:42 +02:00
MediaQueryListEvent.idl LibWeb: Switch IDL from UseNewAKString to UseDeprecatedAKString 2023-09-02 19:23:41 +01:00
Number.h LibWeb: Make serializing basic CSS types infallible 2023-08-22 17:51:48 +01:00
Percentage.h LibWeb: Make serializing basic CSS types infallible 2023-08-22 17:51:48 +01:00
PercentageOr.cpp LibWeb: Add Length::resolved() overload for CSSPixels 2023-08-30 20:09:15 +02:00
PercentageOr.h LibWeb: Add Length::resolved() overload for CSSPixels 2023-08-30 20:09:15 +02:00
Position.cpp LibWeb: Avoid conversion from floating point in CSS position resolution 2023-09-09 13:03:11 +02:00
Position.h LibWeb: Make serializing basic CSS types infallible 2023-08-22 17:51:48 +01:00
PreferredColorScheme.cpp Everywhere: Rename equals_ignoring_case => equals_ignoring_ascii_case 2023-03-10 13:15:44 +01:00
PreferredColorScheme.h LibWeb: Use StringView in CSS::PreferredColorScheme 2023-02-15 12:48:26 -05:00
Properties.json LibWeb: Implement mask-type CSS property 2023-10-09 07:28:18 +02:00
PseudoClasses.json LibWeb: Implement the :open and :closed pseudo-classes 2023-09-13 19:55:22 +02:00
QuirksMode.css LibWeb: Flesh out the default "quirks mode" style sheet 2022-09-20 14:48:07 +02:00
Ratio.cpp LibWeb: Make serializing basic CSS types infallible 2023-08-22 17:51:48 +01:00
Ratio.h LibWeb: Use CSSPixelFraction to represent aspect ratios 2023-09-04 12:40:17 +02:00
Resolution.cpp LibWeb: Fix broken conversion of CSS <resolution> dpi/dpcm to dppx 2023-08-25 20:10:47 +02:00
Resolution.h LibWeb: Make serializing basic CSS types infallible 2023-08-22 17:51:48 +01:00
ResolvedCSSStyleDeclaration.cpp LibWeb: Produce resolved transform value according to spec algorithm 2023-10-15 07:14:39 +02:00
ResolvedCSSStyleDeclaration.h LibWeb: Port CSSStyleDeclaration from DeprecatedString to String 2023-09-09 10:47:12 -06:00
Screen.cpp LibJS: Make Heap::allocate<T>() infallible 2023-08-13 15:38:42 +02:00
Screen.h LibJS: Make Heap::allocate<T>() infallible 2023-08-13 15:38:42 +02:00
Screen.idl LibWeb: Add Exposed attribute and IDL spec links where missing 2022-10-09 10:14:57 +02:00
Selector.cpp LibWeb: Make serializing selectors infallible 2023-08-22 17:51:48 +01:00
Selector.h LibWeb: Make serializing selectors infallible 2023-08-22 17:51:48 +01:00
SelectorEngine.cpp AK+Everywhere: Remove the null state of DeprecatedString 2023-10-13 18:33:21 +03:30
SelectorEngine.h LibWeb: Add namespaces to Universal and TagName selectors 2023-08-08 20:49:45 +01:00
Serialize.cpp LibWeb: Make serializing basic CSS types infallible 2023-08-22 17:51:48 +01:00
Serialize.h LibWeb: Make Serialize functions infallible 2023-08-22 17:51:48 +01:00
Size.cpp LibWeb: Add Length::resolved() overload for CSSPixels 2023-08-30 20:09:15 +02:00
Size.h LibWeb: Add Length::resolved() overload for CSSPixels 2023-08-30 20:09:15 +02:00
StyleComputer.cpp LibWeb: Resolve percentages in calc() for font-size 2023-10-06 08:23:03 +02:00
StyleComputer.h LibWeb: Implement font-size: math 2023-09-11 17:03:22 +01:00
StyleProperties.cpp LibWeb: Make CSS Transformation struct a proper class 2023-10-15 07:14:39 +02:00
StyleProperties.h LibWeb: Implement mask-type CSS property 2023-10-09 07:28:18 +02:00
StyleProperty.cpp LibWeb: Don't include Layout/Node.h from DOM/Element.h 2023-05-08 09:29:44 +02:00
StyleProperty.h LibWeb: Don't include Layout/Node.h from DOM/Element.h 2023-05-08 09:29:44 +02:00
StyleSheet.cpp LibWeb: Respect media attribute of style tag 2022-11-14 14:47:37 +00:00
StyleSheet.h LibWeb: Port CSSStyleSheet interface from DeprecatedString to String 2023-09-05 20:36:09 -04:00
StyleSheet.idl LibWeb: Port CSSStyleSheet interface from DeprecatedString to String 2023-09-05 20:36:09 -04:00
StyleSheetList.cpp LibJS: Make Heap::allocate<T>() infallible 2023-08-13 15:38:42 +02:00
StyleSheetList.h LibJS: Make Heap::allocate<T>() infallible 2023-08-13 15:38:42 +02:00
StyleSheetList.idl
StyleValue.cpp LibWeb: Implement Flex and FlexStyleValue types 2023-09-28 20:33:20 +01:00
StyleValue.h LibWeb: Implement Flex and FlexStyleValue types 2023-09-28 20:33:20 +01:00
Supports.cpp LibWeb: Make serializing Supports rules infallible 2023-08-22 17:51:48 +01:00
Supports.h LibWeb: Make serializing Supports rules infallible 2023-08-22 17:51:48 +01:00
SystemColor.cpp LibWeb: Implement <system-color> and <deprecated-color> keywords 2023-08-25 20:30:20 +01:00
SystemColor.h LibWeb: Implement <system-color> and <deprecated-color> keywords 2023-08-25 20:30:20 +01:00
Time.cpp LibWeb: Make serializing basic CSS types infallible 2023-08-22 17:51:48 +01:00
Time.h LibWeb: Make serializing basic CSS types infallible 2023-08-22 17:51:48 +01:00
Transformation.cpp LibWeb: Make CSS Transformation struct a proper class 2023-10-15 07:14:39 +02:00
Transformation.h LibWeb: Make CSS Transformation struct a proper class 2023-10-15 07:14:39 +02:00
TransformFunctions.json LibWeb: Reformat inconsistent CSS JSON files 2023-08-02 12:49:46 +01:00
UnicodeRange.h LibWeb: Make serializing basic CSS types infallible 2023-08-22 17:51:48 +01:00
VisualViewport.cpp LibWeb: Change viewport ownership from BrowsingContext to Navigable 2023-09-16 16:53:32 +02:00
VisualViewport.h LibJS: Make Heap::allocate<T>() infallible 2023-08-13 15:38:42 +02:00
VisualViewport.idl LibWeb: Implement basic version of CSSOM View's VisualViewport 2023-08-06 16:29:24 +02:00