1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-31 16:18:12 +00:00
serenity/Libraries
Andreas Kling e1a24edfa9 LibWeb: Reorganize layout system in terms of formatting contexts
This is a first (huge) step towards modernizing the layout architecture
and bringing it closer to spec language.

Layout is now performed by a stack of formatting contexts, operating on
the box tree (or layout tree, if you will.)

There are currently three types of formatting context:

- BlockFormattingContext (BFC)
- InlineFormattingContext (IFC)
- TableFormattingContext (TFC)

Document::layout() creates the initial BlockFormattingContext (BFC)
which lays out the initial containing block (ICB), and then we recurse
through the tree, creating BFC, IFC or TFC as appropriate and handing
over control at the context boundaries.

The majority of this patch is just refactoring the old logic spread out
in LayoutBlock and LayoutTableRowGroup, and turning into these context
classes instead. A lot more cleanup will be needed.

There are many architectural wins here, the main one being that layout
is no longer performed by boxes themselves, which gives us much greater
flexibility in the outer/inner layout of a given box.
2020-11-22 14:36:56 +01:00
..
LibAudio LibAudio: Use new format functions. 2020-10-17 23:20:31 +02:00
LibC LibC: Notify UE at the start of free() instead of at the end 2020-11-16 15:11:02 +01:00
LibChess LibChess: Forbid King moving into check by a pawn on the home rank 2020-10-30 16:51:41 +01:00
LibCompress Everywhere: Fix typos 2020-10-02 16:03:17 +02:00
LibCore Everywhere: Add missing <AK/ByteBuffer.h> includes 2020-11-15 13:11:21 +01:00
LibCpp LibCpp: Add library for working with c++ code 2020-09-30 21:46:59 +02:00
LibCrypt Everywhere: Port to String::copy_characters_to_buffer() 2020-08-30 17:35:27 +02:00
LibCrypto LibCrypto: Implement GCM mode 2020-11-14 10:18:54 +01:00
LibDebug LibDebug: Use FlyString for file paths 2020-11-16 09:10:49 +01:00
LibDesktop Meta+LibC through LibHTTP: Make clang-format-10 clean 2020-09-25 21:18:17 +02:00
LibDiff LibDiff: Add library for working with diffs 2020-09-15 21:43:29 +02:00
LibELF Everywhere: Fix more typos 2020-10-03 12:36:49 +02:00
LibGemini LibProtocol+LibGemini+LibHTTP: Provide root certificates to LibTLS 2020-10-30 23:42:03 +01:00
LibGfx LibGfx: Make some GIFLoader magic numbers a bit less magic 2020-11-20 21:17:58 +01:00
LibGUI TextEditor: Change cursor behaviour when clicking empty space 2020-11-19 21:59:13 +01:00
LibHTTP LibProtocol+LibGemini+LibHTTP: Provide root certificates to LibTLS 2020-10-30 23:42:03 +01:00
LibImageDecoderClient AK: Add trivial structure validation to SharedBuffer 2020-10-02 15:38:07 +02:00
LibIPC LibIPC: Add support for passing around ByteBuffers and HashMap<K, V> 2020-11-08 21:46:13 +01:00
LibJS LibJS: Fix build with VM_DEBUG defined 2020-11-22 11:35:13 +01:00
LibKeyboard Everywhere: Add missing <AK/ByteBuffer.h> includes 2020-11-15 13:11:21 +01:00
LibLine Shell+LibLine: Support HISTCONTROL environment variable 2020-10-26 11:27:54 +01:00
LibM LibM: Define some floating point classification macros 2020-11-17 09:57:06 +01:00
LibMarkdown LibMarkdown: Use JS::MarkupGenerator for "js" code blocks :^) 2020-10-31 20:52:54 +01:00
LibPCIDB LibPCIDB: Mark compilation-unit-only functions as static 2020-08-12 20:40:59 +02:00
LibProtocol AK: Make RefPtr, NonnullRefPtr, WeakPtr thread safe 2020-11-10 19:11:52 +01:00
LibPthread Meta+LibHTTP through LibWeb: Make clang-format-10 clean 2020-09-25 21:18:17 +02:00
LibTar Userland: tar: support extracting gzipped files 2020-10-04 00:16:40 +02:00
LibTextCodec LibTextCodec: Add a function to convert encodings to standardized names 2020-11-14 10:14:03 +01:00
LibThread HackStudio: Detach from debugged process before terminating 2020-09-26 17:18:21 +02:00
LibTLS LibTLS: Count the mac size towards the packet length in CBC mode 2020-11-16 13:21:18 +01:00
LibUnwind Everywhere: Fix typos 2020-10-02 16:03:17 +02:00
LibVT LibVT: Add TerminalWidget::scroll_to_bottom() API 2020-11-10 11:55:12 +01:00
LibWeb LibWeb: Reorganize layout system in terms of formatting contexts 2020-11-22 14:36:56 +01:00
LibX86 LibX86: Pack the Instruction data structure 2020-11-17 17:09:49 +01:00
CMakeLists.txt LibTar: Create LibTar and TarStream 2020-10-04 00:16:40 +02:00