Commit graph

472 commits

Author SHA1 Message Date
bors-servo
691bff86b6 Auto merge of #19651 - pyfisch:background-placement, r=emilio
Unify background placement code

Merges the implementations for background-image placement
from gradients and images. Add missing parts and fix bugs.

Now supported are the CSS properties:

* background-attachment (except for local value, see #19650)
* background-clip
* background-origin
* background-position-x/y
* background-repeat
* background-size

It should be noted that backgrounds are not clipped to
rounded border corners.
(This was done before but worked only in simple cases)
See: #19649

This solves the following issues:
closes #19626
closes #16657
closes #19482 (examples from http://lea.verou.me/css3patterns/ are rendered perfectly but the round border is completely ignored now)
closes #19577

- `./mach build -d` does not report any errors
- `./mach test-tidy` does not report any errors

I enabled a few tests with the first commit but I have written about a dozen manual tests I will try to turn into ref tests either before or after this patch lands.

@bors-servo try

The relationship between the different inputs is visualized in this flowchart:
![flowchart-background](https://user-images.githubusercontent.com/2781017/34394430-5a06c72c-eb59-11e7-9d51-3d23e2215f07.png)

<!-- Reviewable:start -->
---
This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/19651)
<!-- Reviewable:end -->
2018-01-02 08:47:24 -06:00
Pyfisch
cf12e27364 Test with fixes for background repeat: spaced
Test the interaction between background-repeat: spaced
and CSS borders. Fix tile_image_axis() function.
2018-01-02 13:57:32 +01:00
Pyfisch
94f3e3353d Fix division by zero in gradient stop calculation
Check if total_length is zero and return 0.0 instead
of NaN in this case.

Closes #18435

Regression test for crash.
2017-12-28 21:18:49 +01:00
Pyfisch
b0492f53af layout: background-origin attribute for gradients
Fixes the glitches mentioned in #19554.
Now gradient tiles are placed in the whole bounding box.
2017-12-15 22:16:58 +01:00
Pyfisch
9502e9f42a layout: support tiled gradients
Use background-size, background-position properties to render
CSS gradients.

Some cleanup in display_list_builder.rs related to gradient
calculations.

Adds two wpt tests for tiled gradients.

Note: For now even gradients with background-repeat: no-repeat
are repeated. Sometimes the gradient is not repeated everywhere.

Enable vars-background-shorthand-001.html CSS test.
2017-12-14 09:25:30 +01:00
Emilio Cobos Álvarez
23d69ea77d
style: Support calc() in color functions. 2017-12-05 10:06:24 +01:00
Emilio Cobos Álvarez
d45a8425af
style: Upstream calc serialization test. 2017-12-01 18:15:26 +01:00
CYBAI
96ba56c2c8 Add tests for using replaceData to change CSS 2017-11-28 11:35:01 +08:00
Cameron McCormack
523ffd587d selectors: Allow white space in the brackets of an attribute selector. 2017-11-18 14:47:33 +08:00
Josh Matthews
c227604a2c Update web-platform-tests to revision 44702f2bc8ea98bc32b5b244f2fe63c6ce66d49d 2017-11-15 12:47:30 -05:00
Josh Matthews
64e0a52537 Update web-platform-tests to revision 58b72393db0bd273bb93268c33666cf893feb985 2017-10-31 09:04:54 -04:00
Josh Matthews
75736751d9 Update web-platform-tests to revision 14cfa4d648cc1c853b4153268df672d21425f8c1 2017-10-30 18:26:08 -04:00
Emilio Cobos Álvarez
aff81aa169
style: Add a test for calc() inside animation-iteration-count. 2017-10-24 22:28:36 +02:00
Josh Matthews
cb9490cb73 Update web-platform-tests to revision 238e9855c35a3570f824b837826aac71e50722f4 2017-10-16 17:27:46 -04:00
Josh Matthews
20a833eb75 Update web-platform-tests to revision e03a9b1341ae9bdb1e4fa03765257b84d26fe2f1 2017-10-16 15:03:02 -04:00
Josh Matthews
1f531f66ea Update web-platform-tests to revision 8a2ceb5f18911302b7a5c1cd2791f4ab50ad4326 2017-10-12 12:36:21 -04:00
Emilio Cobos Álvarez
90ee40f43f
style: Fix ex computation with more than one operand. 2017-10-10 18:41:23 +02:00
Xidorn Quan
dd0366c6b9 Add wpt for :scope pseudo-class 2017-10-10 12:09:38 +11:00
Josh Matthews
578498ba24 Update web-platform-tests to revision a46616a5b18e83587ddbbed756c7b96cbb4b015d 2017-10-05 00:42:13 +02:00
Pyfisch
4935fbf555 Add some more tests for gradients 2017-06-21 20:19:06 +02:00
Pyfisch
a34d8c7fa9 Make background gradient cover padding
CSS-gradients should not only cover the content of an
element but also the padding (but not the border).

Add a reftest.
2017-06-20 14:35:02 +02:00
Josh Matthews
665817d2a6 Update web-platform-tests to revision 58eb04cecbbec2e18531ab440225e38944a9c444 2017-04-22 14:17:10 +02:00