1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-10-17 14:22:24 +00:00
Commit graph

14825 commits

Author SHA1 Message Date
Tim Schumacher
add2e2c076 LibCore: Do short forward seeks by discarding bytes from the buffer
This saves us an actual seek and rereading already stored buffer data in
cases where the seek is entirely covered by the currently buffered data.
This is especially important since we implement `discard` using `seek`
for seekable streams.
2023-01-17 21:56:56 +01:00
Tim Schumacher
bdf991fe76 LibCore: Calculate the correct seek offset for buffered streams 2023-01-17 21:56:56 +01:00
Jelle Raaijmakers
634d1e0197 LibGUI+WindowServer: Improve window resizing performance
The old `GUI::Window` resizing behavior created a new backing store for
each resize event (i.e. every visible window size). This caused a lot of
trashing and on my machine, caused up to 25% of CPU time spent in
creating new backing stores.

The new behavior is a bit more sensible:

  * If the window size is shrinking, the backing store is already large
    enough to contain the entire window - so we don't create a new one.

  * If the window size is growing, as soon as the backing store can no
    longer contain the window, it is inflated with a large margin (of an
    arbitrary chosen 64 pixels) in both directions to accommodate some
    leeway in resizing before an even larger backing store is required.

  * When the user stops resizing the window, the backing store is
    resized to the exact dimensions of the window.

For me, this brings the CPU time for creating backing stores down to 0%.
2023-01-17 18:16:02 +01:00
Aliaksandr Kalenik
45e85d20b6 LibWeb: Output display type inline-table in layout dump 2023-01-17 10:18:33 +01:00
Aliaksandr Kalenik
276a77f02d LibWeb: Support display inline-table
Add support for inline-table display type with corrresponding changes in
tree builder to generate inline anonymous wrapper around inline table
boxes.
2023-01-17 10:18:33 +01:00
Jonah
569b56e2ad WebDriver: Add computedrole endpoint 2023-01-16 20:32:21 -05:00
Tim Ledbetter
112035d5c3 LibGUI: Allow extra metadata when copying bitmaps to the clipboard 2023-01-17 00:36:01 +01:00
Timothy Flynn
d6ddca0c0f AK+LibUnicode: Provide Unicode-aware String titlecase transformation 2023-01-16 18:33:44 -05:00
Timothy Flynn
bc51017a03 LibUnicode: Support full case folding for titlecasing a string
Unicode declares that to titlecase a string, the first cased code point
after each word boundary should be transformed to its titlecase mapping.
All other codepoints are transformed to their lowercase mapping.
2023-01-16 18:33:44 -05:00
Timothy Flynn
b562348d31 LibUnicode: Generate simple case folding mappings for titlecase
Note we already generate the special case foldings for titlecase.
2023-01-16 18:33:44 -05:00
Timothy Flynn
6d710eeb43 LibUnicode: Add an overload of word segmentation for UTF-8 strings 2023-01-16 18:33:44 -05:00
Tim Schumacher
40cb41a16c LibLine: Do a whole bunch of internal error propagation 2023-01-16 21:04:48 +00:00
Tim Schumacher
f9f1e1dd49 LibLine: Port most functions to Core::Stream 2023-01-16 21:04:48 +00:00
Lucas CHOLLET
0ab29cffd2 LibVirtGPU: Port to Core::Stream 2023-01-16 17:05:41 +00:00
Lucas CHOLLET
2e52de5744 LibCore: Add Stream::File::fd()
Unlike `leak_fd()` the stream is still owning the file descriptor after
the call.
2023-01-16 17:05:41 +00:00
Timothy Flynn
fc413711ee LibJS: Port trivial use cases in the Intl namespace to String 2023-01-16 10:12:37 +00:00
Timothy Flynn
edfdade9e9 LibLocale: Add a method to convert LanguageID to a String 2023-01-16 10:12:37 +00:00
Timothy Flynn
b6b5ddeb3b LibJS: Port StringIterator to String 2023-01-16 10:12:37 +00:00
Timothy Flynn
0d47c4e7a0 LibJS: Port the TrimString AO to String
This also adds spec comments to parseFloat to make it clear that we are
now deviating a bit from the spec (the TrimString invocation should be
infallible, but we want to propagate OOM errors).
2023-01-16 10:12:37 +00:00
Timothy Flynn
4235c59397 LibJS: Add a convenience StringView accessor to PrimitiveString 2023-01-16 10:12:37 +00:00
Brian Gianforcaro
bffc29ae34 LibJS: Fix uninitialized member variable in DurationFormat
Reported-by: PVS Studio
2023-01-16 09:45:46 +01:00
Aliaksandr Kalenik
7dc0edcb86 LibWeb: Prevent floats from being placed higher than preceding blocks
CSS 2.2 section 9.5.1:
The outer top of a floating box may not be higher than the
outer top of any _block_ or floated box generated by an
element earlier in the source document.

Where block is `BlockContainer` in LibWeb type system.
Which means `current_boxes` need to be cleared before
leaving block container.

```html
<style>
.wrapper {
  width: 100px;
  height: 300px;
  background-color: lightgray;
}

.box {
  margin: 10px;
  width: 50px;
  height: 50px;
  float: left;
}

.a { background-color: salmon; }
.b { background-color: slateblue; }
.c { background-color: green; }
</style>
<div class="wrapper">
	<div class="box a"></div>
	<div class="box b"></div>
</div>
<div class="box c">
</div>
```
2023-01-16 09:45:16 +01:00
Tim Schumacher
3ed9627f4e LibIPC: Decode messages using Core::Stream internally 2023-01-15 23:06:31 -05:00
Tim Schumacher
d1711f1cef AK: Define our own concept of "trivially serializable"
While at it, rename the `read_trivial_value` and `write_trivial_value`
functions to `read_value` and `write_value` respectively, since we'll
add compatibility for non-trivial types down the line.
2023-01-15 23:06:31 -05:00
Tim Schumacher
6777cb0975 LibCore: Fix up type mistakes in Stream::read_trivial_value 2023-01-15 23:06:31 -05:00
BodilessSleeper
c5daa6d997 LibJS: Remove redundant ToString from ToTemporalZonedDateTime
Assert that the type of offsetString is either undefined or
string in order to avoid unnecessary ToString
Temporal commit: tc39/proposal-temporal@24ebcbd
2023-01-15 21:35:25 +00:00
BodilessSleeper
219db02b2f LibJS: Assert TemporalDateTimeToString if showCalendar is "never"
The only part of TemporalDateTimeToString that can fail is
MaybeFormatAnnotateCalendar which cannot fail if showCalendar is
"never" as it simply makes an empty string.
Temporal commit: tc39/proposal-temporal@a1faee6
2023-01-15 21:35:25 +00:00
Jelle Raaijmakers
5ed53b3474 LibGfx: Prevent reading OOB in TGA header decode 2023-01-15 19:59:33 +01:00
Liav A
2f2d808869 LibGfx: Add support for RLE compressed TGA images
RLE is an old technique being used for decades, as is known as
Run-Length-Encoding, which means that for repeating sequence of bytes,
we keep an indicator for the length of the sequence and only one sample
of it, to save storage space.

GIMP can generate lossless-compressed TGA images, with RLE compression
being used. It means that for a compressed image, the data is no longer
arranged in sequence of pixels, but a sequence of pixel packets.
There are two possible pixel packets:
- RLE packets, which are encoded with one byte for indicating the
  run-length and another one pixel (3 bytes for TrueColor pixel), so
  essentially in runtime, the TGA decoder will use the length to plot
  the same pixel in multiple pixels of the output pixel bitmap.
- Raw packets, which are encoded with one byte as indicator for the
  length of the whole pixel sequence and N-length pixel sequence
  afterwards.
  This is not used for any sort of compression by the TGA format, but
  still needed to be supported for full compatibility with TGA images
  that uses the RLE compression.
2023-01-15 12:43:03 +01:00
Liav A
a46df41265 LibGfx: Handle tga images with top-left and bottom-left orientation
GIMP allows a user to export a TGA image with either of these possible
orientations, so we can easily support it by looking at the X origin and
Y origin values to determine where to put the pixels in the bitmap.
2023-01-15 12:43:03 +01:00
Tom Needham
591bebe662 LibGfx: Add the TGA format into the list of bitmap formats :^) 2023-01-15 12:43:03 +01:00
Tom Needham
5bce58cd3e LibGfx: Plumb the TGALoader into ImageDecoder :^)
This patch plumbs the TGALoader into ImageDecoder
so TGA images can be decoded by the system
2023-01-15 12:43:03 +01:00
Tom Needham
21db070887 LibGfx: Add TGA Loader :^)
This patch adds a basic TGA Loader. Currently it can only handle
uncompressed files with a bit depth of 24 or 32 bits per pixel.
2023-01-15 12:43:03 +01:00
Andreas Kling
db27499865 LibWeb: Make sure that fetch() response cookies get saved
We have to provide the Web::Page* in order for cookies to get saved.
2023-01-15 10:53:58 +00:00
nipos
bfacbe1e0d LibCore: Enable file descriptor passing on OpenBSD 2023-01-15 01:11:46 +00:00
Agustin Gianni
4a816ed891 LibC: Fix incorrect limit for SSIZE_MAX and remove 32 bit definitions
The file `limits.h` had definitions for x86. This PR removes these
definitions and fixes the upper limit for the type ssize_t which was
defined to be 0x7fffffff.
2023-01-15 01:07:05 +00:00
Timothy Flynn
bb4c7b6a35 LibJS: Remove now-unused ThrowableFormat header
The one place this was used now uses the fallible String::formatted.
2023-01-15 01:00:20 +00:00
Timothy Flynn
9f78e8728a LibJS: Port (most of) String.prototype to String
The locations that haven't been ported have a much wider footprint than
just the String.prototype files, so they've been left alone for now.
2023-01-15 01:00:20 +00:00
Timothy Flynn
ceaec41726 LibJS: Port Value to-string methods to String 2023-01-15 01:00:20 +00:00
Timothy Flynn
46dd8c1c0b LibJS: Resolve all UTF-8 rope strings as a String 2023-01-15 01:00:20 +00:00
Timothy Flynn
58bc831750 LibUnicode: Return a String from Unicode normalization 2023-01-15 01:00:20 +00:00
Timothy Flynn
c9056b824e LibJS: Define Value::to_string to convert a Value to a String 2023-01-15 01:00:20 +00:00
Timothy Flynn
afeb7273cc LibJS+Everywhere: Rename Value::to_string to to_deprecated_string 2023-01-15 01:00:20 +00:00
Timothy Flynn
8f5bdce8e7 LibJS: Add initial support for creating PrimitiveStrings with AK::String
This will temporarily bloat the size of PrimitiveString as LibJS is
transitioned to use String throughout, but will make doing so piecemeal
much easier.
2023-01-15 01:00:20 +00:00
Timothy Flynn
0b58748156 LibJS: Define number_to_string to convert a double to a String 2023-01-15 01:00:20 +00:00
Timothy Flynn
8a88d4434f LibJS+LibWeb: Rename number_to_string to number_to_deprecated_string 2023-01-15 01:00:20 +00:00
Timothy Flynn
c79d20be58 LibJS: Define Utf16String::to_utf8 to convert Utf16String to String 2023-01-15 01:00:20 +00:00
Timothy Flynn
4eb5eb2080 LibJS: Rename Utf16String::to_utf8 to to_deprecated_string 2023-01-15 01:00:20 +00:00
Timothy Flynn
ca655f5e7d LibJS: Rename VM::string_cache to deprecated_string_cache
And rename the member variable from m_string_cache to
m_deprecated_string_cache to match.
2023-01-15 01:00:20 +00:00
Timothy Flynn
3a004e8f1a LibJS: Rename PrimitiveString::has_utf8_string to has_deprecated_string
And rename the member variable from m_utf8_string to m_deprecated_string
to match.
2023-01-15 01:00:20 +00:00