1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-16 10:14:57 +00:00
Commit graph

17230 commits

Author SHA1 Message Date
Nico Weber
103f818afc ICC: Rename tag_for_rendering_intent()
To make clear it's for forward transforms, it's now called
forward_transform_tag_for_rendering_intent().

No behavior change.
2023-05-02 17:15:48 +01:00
Daniel Bertalan
be7bc41470 LibJS: Fix mix-up between assignment and comparison 2023-05-02 07:03:57 -04:00
Zaggy1024
1422f7f904 LibVideo/VP9: Revert framebuffer size reduction to allow OOB blocks
The framebuffer size was reduced in f2c0cee, but this caused some niche
block layouts to write outside of the frame.

This could be fixed by adding checks to see if a block being predicted/
reconstructed is within the frame, but the branches introduced by that
reduce performance slightly. Therefore, it's better to keep the
framebuffer sized according to the decoded frame size in 8x8 blocks so
that any block can be decoded without bounds checking.

A test was added to ensure that this continues to work.
2023-05-02 07:00:46 -04:00
Aliaksandr Kalenik
6cec431720 LibWeb: Set zero underflow when calculating intrinsic width of block
This fix resolves issue where calculating the min size of a block could
result in incorrect value if width of the block's children was
compensated by margins to fit into container width (which is equal to 0
during min size calculation).
2023-05-02 12:41:45 +02:00
Andreas Kling
00e3e82bbd LibWeb: Account for box-sizing:border-box in layout-less definite sizes
When we determine that a size is definite because it can be resolved now
without performing layout, we also need to account for the box-sizing
property.

This lets us remove a hack from flex layout where box-sizing:border-box
was manually undone at one point in the layout algorithm.
2023-05-02 11:47:13 +02:00
Andreas Kling
deea7cbc11 LibWeb: Remove vestigial resolve_definite_width/height helper functions
These functions no longer do anything interesting and just forward to
content_width/content_height. Let's make the callers use those directly
instead and remove this indirection layer.
2023-05-02 11:47:13 +02:00
Caoimhe
d05cb50b24 LibGUI: Only clear TreeView::m_view_metadata when required
Prior to this commit, we were always clearing the TreeView's metadata,
even if it wasn't needed. Now, we only clear it if the callee says that
we should invalidate indices.

This fixes an issue in FileManager (#6903), where updating the file
system by creating/deleting any file/folder would cause the tree to
collapse completely.

This may be more of a 'patch' than an actual fix, since I don't have a
lot of experience with `GUI::TreeView` or `GUI::Model`, but it doesn't
appear to break any other `TreeView` use-cases and using FileManager is
now much better than it was before :^)
2023-05-02 07:24:55 +02:00
Ali Mohammad Pur
8d446d2a9e LibWeb: Make XMLDocumentBuilder create elements with the HTML namespace
Otherwise we'll end up with all-generic elements and not run any special
HTML sauce logic, leading to very plain pages.
2023-05-01 15:22:55 +02:00
Andreas Kling
75d603c31b LibWeb: Support getting the grid-template-areas from resolved style
Without this, we crash when opening the DOM inspector.
2023-05-01 11:23:40 +02:00
Andreas Kling
9fa51987f8 Userland+Base: Treat ".webp" files as images :^) 2023-05-01 11:10:56 +02:00
Fabian Dellwing
4ebc7306da LibCore: Implement integral ArgsParser positionals through a template
This matches the behaviour of options.
2023-04-30 21:12:46 +03:30
Fabian Dellwing
f4ed9d5d83 LibCore: Add support for short integral type to ArgsParser 2023-04-30 21:12:46 +03:30
Jelle Raaijmakers
1951f7874d LibELF: Report file path for unimplemented DYNAMIC tags
This allows us to immediately locate the shared library with the
unimplemented tag.
2023-04-30 14:10:01 +02:00
Andreas Kling
98b8bab441 LibGUI: Use Variant's built-in equality operator in Window and Widget
Now that Variant has operator==(), we don't need to go through all this
trouble to compare two Variant values.
2023-04-30 14:01:59 +02:00
iyush
a268dcb1e2 HackStudio: Move around execution order and prevent crashing
Previously hackstudio tried to synchronize the language server before
executing the command inside the editor.  If sync-command for the server
(for example the CommentLineCommand) is not implemented inside the
function responsible for syncing the language server, the IDE would
crash.

This patch makes it such that the synchronization happens only after IDE
executes the command locally.  If such command is not implemented (as
was the case earlier), it would simply reupdate the content inside the
language server. Even though the reupdate might be expensive, it is
better than crashing hackstudio altogether.

Because of reordering, the relevant function names have been changed to
better reflect the code flow.
2023-04-30 06:08:22 +02:00
Matthew Olsson
a9d192e882 LibJS+LibWeb: Explicitly mark ignored members in visit_edges methods 2023-04-30 06:04:33 +02:00
Matthew Olsson
39d8c8d2a9 LibJS+LibWeb: Add missing visit calls in visit_edges implementations 2023-04-30 06:04:33 +02:00
Matthew Olsson
a3344cab63 LibWeb: Fix incorrect usage of JS::GCPtr 2023-04-30 06:04:33 +02:00
Matthew Olsson
82eeee2008 LibJS+LibWeb: Normalize calls to Base::visit_edges in GC objects 2023-04-30 06:04:33 +02:00
Matthew Olsson
3f22919eb5 LibWeb: Add missing JS::GCPtr wrappers in HTMLLinkElement 2023-04-30 06:04:33 +02:00
Zaggy1024
2ec043c4db LibVideo/VP9: Make inter-prediction fast path accumulators 32-bit
Some occasional cases could cause the accumulator to overflow and have
an incorrect result. It would be nice to use a smaller accumulator, but
it seems not to be correct. :^(

We now cast to i16 to allow 128-bit vectorization to make use of one
whole register instead of having to split the loop into multiple.

This results in about a 5% reduction in performance in my testing.
2023-04-30 05:58:27 +02:00
Nico Weber
8ab6e0d3a5 ICC: Mark Profile::to_pcs() and to_lab() const 2023-04-30 05:57:20 +02:00
Nico Weber
923027b1df LibGfx: Add DeltaE() function 2023-04-30 05:57:20 +02:00
Nico Weber
adec1abf81 LibGfx: Move CIELAB to its own file 2023-04-30 05:57:20 +02:00
martinfalisse
22202715fc LibWeb: Parse grid-template property 2023-04-30 05:56:10 +02:00
martinfalisse
bebf4363db LibWeb: Change name of GridTrackSizeListStyleValue
Change the name of GridTrackSizeStyleValue to
GridTrackSizeListStyleValue which is more accurate.
2023-04-30 05:56:10 +02:00
Andreas Kling
5236819f58 LibWeb: Resolve horizontal auto margins for images with display: block 2023-04-30 05:52:19 +02:00
thankyouverycool
f7e034d4b2 LibGfx+Userland: Merge FrameShape and FrameShadow into FrameStyle
Previously, Frames could set both these properties along with a
thickness to confusing effect: Most shapes of the same shadowing only
differentiated at a thickness >= 2, and some not at all. This led
to a lot of creative but ultimately superfluous choices in the code.

Instead let's streamline our options, automate thickness, and get
the right look without so much guesswork.

Plain shadowing has been consolidated into a single Plain style,
and 0 thickness can be had by setting style to NoFrame.
2023-04-30 05:49:46 +02:00
thankyouverycool
4c9933bfb7 LibGUI: Remove Label icons and replace instances with ImageWidget
These icons are a relic of GLabel and were never implemented to
accomodate both image and text. This convenience can always be added
in the future, but no current instance assumes or needs it, so let's
replace them all with ImageWidget to show clearer intent.
2023-04-30 05:48:14 +02:00
thankyouverycool
59483b0654 LibGUI: Don't fix ImageWidget's size when disabling auto_resize() 2023-04-30 05:48:14 +02:00
thankyouverycool
b17d4a0ced LibGUI: Propagate construction errors in LinkLabel 2023-04-30 05:48:14 +02:00
thankyouverycool
91bafc2653 LibGUI+Userland: Port Labels to String 2023-04-30 05:48:14 +02:00
thankyouverycool
3d53dc8228 LibGfx: Return StringView for SystemTheme Roles
This will simplify upcoming Label porting in ThemeEditor.
2023-04-30 05:48:14 +02:00
Nico Weber
f3dbfb85d9 ICC: Add Profile::to_lab()
This can be used to convert a profile-dependent color to the L*a*b*
color space.

(I'd like to use this to implement the DeltaE (CIE 2000) algorithm,
which is a metric for how similar two colors are perceived.
(And I'd like to use that to evaluate color conversion roundtrip
quality, once I've implemented full conversions.)
2023-04-30 00:46:11 +02:00
Nico Weber
5fc11a316f LibTest: Add a EXPECT_APPROXIMATE_WITH_ERROR macro with custom error 2023-04-30 00:46:11 +02:00
Nicolas Josef Zunker
3aadc09c53 LibC: Add Ipv6 address checking macros to netinet/in.h
To be able to port c-ares the IN6_IS_ADDR_V4COMPAT and
various macros of the form IN6_IS_ADDR_MC_XX_LOCAL were added
as well as the IN_CLASS{A,B} macros
2023-04-29 08:55:16 -06:00
Sam Atkins
28ceeec435 LibWeb: Split Length::relative_length_to_px() by type
Length units are either relative to the font, or to the viewport, but
never both. So we can save some work by not gathering font metrics for
a viewport unit, and not retrieving the viewport for a font unit.

Currently this is only helpful when the `to_px(Layout::Node)` method is
called, but since that is 208 places according to CLion, (plus 33
indirect uses via `Length::resolved()`) it still seems worthwhile. :^)
2023-04-29 16:23:50 +02:00
Sam Atkins
d6e5e61ed4 LibWeb: Add even more viewport-based Length units
`*vi` and `*vb` vary on which direction they check depending on whether
the writing mode is horizontal or vertical, so they will need some
modification once we support that.
2023-04-29 16:23:50 +02:00
Sam Atkins
091a1ff527 LibWeb: Add *lots* of viewport-based Length units
`sfoo` `lfoo` and `dfoo` are, for our purposes, identical to `foo`,
because we don't have dynamic GUI elements that cover the page content.
2023-04-29 16:23:50 +02:00
Sam Atkins
0dd585ba7b LibWeb: Add ic and ric Length units
Using the rough heuristic instead of the actual spec measurement. It's
allowed by the spec, but not ideal:

> In the cases where it is impossible or impractical to determine the
  ideographic advance measure, it must be assumed to be 1em.
2023-04-29 16:23:50 +02:00
Sam Atkins
03ed37eb14 LibWeb: Add cap and rcap Length units
As noted, the ascent of the font is not the best heuristic for this, but
it is one that's listed as OK to use by the spec:

> In the cases where it is impossible or impractical to determine the
  cap-height, the font’s ascent must be used.
2023-04-29 16:23:50 +02:00
Sam Atkins
a8e0fa403a LibWeb: Add rex and rch Length units
These are the same as `ex` and `ch`, but using the root element's
metrics. We now have this information available, so let's use it. :^)
2023-04-29 16:23:50 +02:00
Sam Atkins
3c171593f8 LibWeb: Merge StyleComputer root-element font-metric calculation methods
This saves us from doing a lot of the same work multiple times, when we
want both the root font size and its line height.
2023-04-29 16:23:50 +02:00
Sam Atkins
0679b4e0b9 LibWeb: Wrap font metrics into a struct
Rather than passing an increasingly-unwieldy number of font parameters
individually to every function that resolves lengths, let's wrap them
up.

This is frustratingly close to being `Gfx::FontPixelMetrics`, but bitmap
fonts cause issues: We choose the closest font to what the CSS
requests, but that might have a wildly different size than what the
page expects, so we have to fudge the numbers.

No behaviour changes.
2023-04-29 16:23:50 +02:00
Sam Atkins
4a191875a9 LibWeb: Categorize relative length units 2023-04-29 16:23:50 +02:00
Sam Atkins
7add4f2d2f LibWeb: Add some font-related properties to the resolved style 2023-04-29 16:23:50 +02:00
Sam Atkins
2c5f72b4f0 LibWeb: Remove outdated comment
I missed this when removing calc() from Length. Oops!
2023-04-29 16:23:50 +02:00
Sam Atkins
6ea84a7c87 LibWeb: Sort and group CSS Length units as they are in the spec
They previously weren't sorted at all. Alphabetical would be nice, but
then things like `em` and `rem` would be separated. So, let's copy the
spec's order. That way it's easier to keep track of which units we have
or haven't implemented. (Since there are so many...)
2023-04-29 16:23:50 +02:00
Aliaksandr Kalenik
e54ee7de96 LibWeb: Exclude borders from width available for table columns
Fix table box width calculation to minus horizonal borders from space
available for columns.
2023-04-29 16:08:48 +02:00
Torstennator
abcfaca3da LibGfx: Add support to draw radial gradients with an rotation angle 2023-04-29 11:55:31 +01:00