1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-23 04:47:36 +00:00
Commit graph

13113 commits

Author SHA1 Message Date
Aliaksandr Kalenik
e4db71c88b LibWeb: Support translate3d 2022-11-02 11:04:23 +00:00
Aliaksandr Kalenik
f099e2aa12 LibWeb: Use more verbose input in CSS transform function generator 2022-11-02 11:04:23 +00:00
jack gleeson
4bf587811f PixelPaint+LibGfx: Allow resizing images and layers
This PR adds resize ability to PixelPaint as per issue 11862.
The previous behaviour was to always rescale the canvas when
resizing an image. This adds a checkbox to toggle between
rescaling, and resizing which blits the existing canvas to
the top left of the new, resized canvas.

As part of this, a new ScalingMode is added to
LibGfx - None.
2022-11-02 10:59:18 +00:00
MacDue
fdcc73d4b1 LibWeb: Paint conic-gradient()s
This is a first pass at painting conic-gradient()s, I've yet to try to
optimize this much, but I feel like you could do better than atan2
in a loop.
2022-11-01 23:07:05 +00:00
MacDue
49497044de LibWeb: Parse conic-gradient()s
This parses conic-gradient()s while also attempting to share the bulk
of the parsing code with linear-gradient()s. This is done by extracting
the <color-stop-list> parsing to a "fill in the blacks" generic
function. This is a little awkward but cuts down on a lot of copy
pasting of code.
2022-11-01 23:07:05 +00:00
MacDue
ee72dcd523 LibWeb: Parse CSS <position>s
This parses <position> according to the following grammer:

<position> = [
  [ left | center | right ] || [ top | center | bottom ]
|
  [ left | center | right | <length-percentage> ]
  [ top | center | bottom | <length-percentage> ]?
|
  [ [ left | right ] <length-percentage> ] &&
  [ [ top | bottom ] <length-percentage> ]
]

The code is a little hairy and simply tries each alternative in turn,
manually checking the possible orders. There may be a better way to
represent this.
2022-11-01 23:07:05 +00:00
MacDue
e568c93404 LibWeb: Add PositionValue class to represent CSS <position>s
This class represents a <position> and handles resolving it to a
Gfx::FloatPoint relative to some rectangle.

It can handle all forms of <position>:

- Two presets:
  left center
- A preset + a length percentage:
  10% bottom
- Or relative to some edges:
  right 20% bottom 30px
2022-11-01 23:07:05 +00:00
MacDue
067759c0e9 LibWeb: Add ConicGradientStyleValue
This commit adds a simple style value (which is an abstract image)
to represent conic-gradient()s.

This commit also starts to factor out some reusable parts of the
linear-gradient() style value for other gradient types.
2022-11-01 23:07:05 +00:00
Timothy Flynn
5eeb6bbee3 LibWeb: Define window.outerWidth and window.outerHeight 2022-11-01 21:16:50 +00:00
Timothy Flynn
8cc1997f33 LibWeb: Retrieve the last known window position for window.screenX/Y 2022-11-01 21:16:50 +00:00
Timothy Flynn
6aea60e6ee LibWeb+LibWebView+WebContent: Add IPC to receive window position/size
This information will have to come from the Browser application. This
adds IPCs to receive that information when it is available or changes.
2022-11-01 21:16:50 +00:00
Timothy Flynn
f7e747b68e LibGUI+WindowServer: Create and broadcast an event when a window moves
LibWeb's Window object will need to know the OS-level position and size
of the GUI::Window for e.g. screenX, screenY, outerWidth, outerHeight.
It will also need to know about changes to that data.
2022-11-01 21:16:50 +00:00
Linus Groh
216f68c566 LibWeb: Register PendingResponse with a Request to keep it alive
This was an oversight from when I converted PendingResponse and various
other classes from being ref-counted to GC-allocated last minute - no
one takes care to keep all of them alive. Some are on the stack, and
some might be captured in another PendingResponse's JS::SafeFunction,
but ultimately, we need a better solution.
Since a PendingResponse is *always* the result of someone having created
a Request, let's just let that keep a list of each PendingResponse that
has been created for it, and visit them until they are resolved. After
that, they can be GC'd with no complaints.
2022-11-01 20:14:12 +00:00
Timothy Flynn
948bd50197 LibSQL: Replace DownPointer copy constructor with move constructor
Avoids awkwardly const-casting the "other" DownPointer.
2022-11-01 14:52:59 +00:00
Timothy Flynn
4283109c13 LibSQL: Fix typo in debugging statement
Also put new lines between these statements as that was the only way I
saw the typo.
2022-11-01 14:52:59 +00:00
Timothy Flynn
3f8a4f69c6 LibSQL: Compute byte buffer offsets using size_t
Also compute specific offset indices rather than hard-coding them.
2022-11-01 14:52:59 +00:00
Timothy Flynn
99a713aa5b LibSQL: Port the backend SQL file to use Core::Stream
This allows surrounding IO operations with TRY, making the code much
easier to reason about. This also replaces surrounding dbgln_if
statements to use "{:hex-dump}" instead of individually writing out
bytes.
2022-11-01 14:52:59 +00:00
Tim Schumacher
ce2f1b845f Everywhere: Mark dependencies of most targets as PRIVATE
Otherwise, we end up propagating those dependencies into targets that
link against that library, which creates unnecessary link-time
dependencies.

Also included are changes to readd now missing dependencies to tools
that actually need them.
2022-11-01 14:49:09 +00:00
Tim Schumacher
678db534ff LibC: Properly implement stack protectors
The shared parts are now firmly compiled into LibC instead of being
defined as a static library and then being copied over manually.
The non-shared ("local") parts are kept as a static library that is
linked into each binary on demand.

This finally allows us to support linking with the -fstack-protector
flag, which now replaces the `ssp` target being linked into each binary
accidentally via CMake.
2022-11-01 14:49:09 +00:00
Tim Schumacher
7834e26ddb Everywhere: Explicitly link all binaries against the LibC target
Even though the toolchain implicitly links against -lc, it does not know
where it should get LibC from except for the sysroot. In the case of
Clang this causes it to pick up the LibC stub instead, which might be
slightly outdated and feature missing symbols.

This is currently not an issue that manifests because we pass through
the dependency on LibC and other libraries by accident, which causes
CMake to link against the LibC target (instead of just the library),
and thus points the linker at the build output directory.

Since we are looking to fix that in the upcoming commits, let's make
sure that everything will still be able to find the proper LibC first.
2022-11-01 14:49:09 +00:00
Tim Schumacher
39fca21e11 LibC: Link against the full LibSystem target
I'm not sure why this wasn't done to begin with, but let's see if this
resolves our "can't find libsystem.so while double-checking undefined
symbols" issues.
2022-11-01 14:49:09 +00:00
Tim Schumacher
ac40197047 LibCrypt: Define it as a normal library
LibCrypt has no need for being -nostdlib, especially since we just link
in LibC manually anyways.
2022-11-01 14:49:09 +00:00
Timothy Flynn
4686989582 LibJS: Map DurationFormat's list style to "short" when it is "digital"
This is a normative change in the Intl.DurationFormat proposal. See:
7495e32
2022-11-01 14:33:07 +00:00
Timothy Flynn
84e6833203 LibJS: Alphabetically sort the collations returned by CollationsOfLocale
This is a normative change in the Intl Locale Info proposal. See:
171d3ad

Note this doesn't affect us because we don't have collation info from
the CLDR; we just return ["default"] here.
2022-11-01 14:33:07 +00:00
martinfalisse
5ffff09e05 WebContent+Friends: Add get_element_text IPC and plumbing 2022-11-01 10:55:34 +00:00
Andreas Kling
67236d9573 LibJS: Disable bytecode optimizations again
Bytecode optimizations still break test262, so let's not enable this
until they have been confirmed to work there.
2022-11-01 11:44:41 +01:00
Hendiadyoin1
4a06e68ecd LibJS: Set default bytecode optimization level to Optimize 2022-11-01 11:21:18 +01:00
Hendiadyoin1
1e1bf84e6d LibJS: Add a sanity check to bytecodes argument_list_evaluation 2022-11-01 11:21:18 +01:00
Hendiadyoin1
c9e7d452c5 LibJS: Add a note about inaccuracies to UnifySameBlocks 2022-11-01 11:21:18 +01:00
Hendiadyoin1
c66284ab0b LibJS: Fix MergeBlocks emitting some blocks twice 2022-11-01 11:21:18 +01:00
Hendiadyoin1
28e2467b48 LibJS: Minor cleanups in MergeBlocks 2022-11-01 11:21:18 +01:00
Hendiadyoin1
1ac1a5bd58 LibJS: Don't memcpy NewBigInt instruction
These aren't trivially copyable, so we have to be a bit more careful
2022-11-01 11:21:18 +01:00
Hendiadyoin1
a1f1d9e4a7 LibJS: Expose some information about the bytecode interpreters state
This is quite helpful, when reporting internal errors.
2022-11-01 11:21:18 +01:00
martinfalisse
937fcfc75c LibWeb+Base: Use line names for positioning grid items
When there are grid tracks with line names, use these to resolve
line-names passed to positioned grid items.
2022-11-01 11:19:41 +01:00
martinfalisse
829f56572d LibWeb: Parse line names in grid track position properties
Parse line names when passed to the grid-column/row-start/end CSS
properties.
2022-11-01 11:19:41 +01:00
martinfalisse
78a573d678 LibWeb: Parse line names in grid track size declarations
Parse line names in the grid-template-* CSS properties.
2022-11-01 11:19:41 +01:00
martinfalisse
93211f45a6 LibWeb: Use w3.org for specs and include new ones
Include new w3.org specs for the grid and correct others so they use
w3.org instead of drafts.
2022-11-01 11:19:41 +01:00
martinfalisse
1a4f2dca38 LibWeb: Refactor GridTrackPlacement
Refactor this class for quality-of-life reasons as well as to better
prepare for the addition of line names.
2022-11-01 11:19:41 +01:00
martinfalisse
b2b677e984 LibWeb: Refactor GridTrackSize classes
Refactor various classes in the GridTrackSize file for the incoming
named_tracks feature.

Previously the ExplicitTrackSizing had mixed responsiblities with the
newly-named GridRepeat class. This made it so it was not possible to
have multiple repeats within a single 'GridTrackSizeList' definition.

The MetaGridTrackSize class had both the responsibilities of being a
container for minmax values as well as for simple GridSizes. By uniting
the different possible values (repeat, minmax, default) into the
ExplicitGridTrack class are able to be more expressive as to the
different grid size modalities.

The GridTrackSizeList will be useful as compared to a
Vector<ExplicitGridTrack> since this way can keep track of the declared
line names. These same line names are able to be declared within the
values of a repeat function, hence the presence of a GridTrackSizeList
inside the GridRepeat class.
2022-11-01 11:19:41 +01:00
martinfalisse
9441515312 LibWeb: Rename GridTrackSizedConstraints
In order to avoid naming conflicts with the many trial-and-error name
changes going on in the GridTrackSize file, rename this to a unique name
that is unlikely to be troublesome.
2022-11-01 11:19:41 +01:00
martinfalisse
dc9f8218a9 LibWeb: Fix bug in placing grid items
Before were resetting the auto_placement_cursor_x to 0 at the end of
the row but this was incorrect, especially since the
auto_placement_cursor_y wasn't being incremented.

This made it so that auto-placed items were occasionally placed before
absolutely-placed ones even after the latter had already been placed.
2022-11-01 11:19:41 +01:00
Peter Elliott
83e62e8c4f Utilities+LibArchive: Don't follow symlinks 2022-10-31 22:10:22 +00:00
Peter Elliott
415eb17490 LibCore: Add Core::System::readlink 2022-10-31 22:10:22 +00:00
Peter Elliott
612a3324d7 LibArchive: Support writing paths up to 255 characters
The POSIX.1-1988 limit was 100, but with the ustar prefix field it's 255
(kinda).
2022-10-31 22:10:22 +00:00
Peter Elliott
9ae36e2035 LibArchive: Refactor null-termination logic in TarFileHeader
Before this change the behavior was, confusingly:
- never null-terminate if set_field() is passed a StringView.
  - which would also not fail if the StringView is too large.
- require null-termination if set_field() is passed a String.

Not only are both of these wrong, having different behavior for those is
very confusing, and creating a String copy to force a type checker to
cause a string to be null-terminated is extremely weird.

The new behavior is to always null-terminate when possible, never
null-terminate if the last byte is used, and always verify that the
string will fit.
2022-10-31 22:10:22 +00:00
Tim Schumacher
6382b174dc LibELF: Drop the "resolve and map" all-in-one
Both users of this function now have to do their resolving separately
before anyways, so let's just drop the resolving part inside the
function and require absolute paths to be fed in instead.
2022-10-31 19:23:02 +00:00
Tim Schumacher
d4a4fe68f9 LibELF: Track libraries using their full path 2022-10-31 19:23:02 +00:00
Tim Schumacher
2f4c06b13b LibELF: Handle absolute and relative paths for all resolve requests 2022-10-31 19:23:02 +00:00
Tim Schumacher
5e2a146860 LibELF: Sift down "library name only"-strings as far as possible
I might have gone a bit overboard with the `VERIFY`s, but this allows
for very easy tracking of where we start to leak in non-absolute paths.
2022-10-31 19:23:02 +00:00
Tim Schumacher
e7d0fb50a1 LibELF: Use a bit of TRY in DynamicLinker
`TRY` also works for `Result<>`. Who knew?
2022-10-31 19:23:02 +00:00