Commit graph

157 commits

Author SHA1 Message Date
Glenn Watson
14e438391a Disable flaky reftests until a proper solution is found.
A race condition exists where pipelines that are removed from a document
may not ever trigger a paint for that pipeline. The compositor relies
on a paint occurring for each pipeline before outputting the image when
in reftest mode.
2015-03-06 10:24:20 +10:00
bors-servo
9d58c086e7 auto merge of #5128 : bjwbell/servo/inline-block_fix_min-width, r=jdm
With inline-block elements set the width to max(min width,
specified width) instead of only using the specified width.

Fixes https://github.com/servo/servo/issues/4945
2015-03-03 22:24:44 -07:00
Bryan Bell
a35ffe1c6e For inline-block correctly use min-width
With inline-block elements set the width to max(min width,
specified width) instead of only using the specified width.
2015-03-03 21:06:57 -08:00
bors-servo
07a3ce2ce1 auto merge of #5130 : bjwbell/servo/inline_block_overflow_ref_test, r=glennw
For https://github.com/servo/servo/issues/3725
2015-03-03 21:48:43 -07:00
Bryan Bell
3b32178962 Add inline-block overflow ref test
For https://github.com/servo/servo/issues/3725
2015-03-03 20:44:49 -08:00
bors-servo
e19fbc686c auto merge of #5125 : glennw/servo/remove-iframe-layers, r=larsbergstrom 2015-03-03 15:12:45 -07:00
Glenn Watson
86baef2cc0 Remove compositor layers when iframes are removed from doc or display:none. 2015-03-04 07:51:46 +10:00
Simon Sapin
4c1d778ced Revert "layout: Implement ordered lists, CSS counters, and quotes per CSS 2.1"
This reverts commit 30fd28d107.
2015-03-03 21:16:24 +01:00
bors-servo
e1a50c7719 auto merge of #5133 : servo/servo/background-size, r=SimonSapin
`background-size` per CSS-BACKGROUNDS § 3.9.

Nearest neighbor interpolation is used for `crisp-edges`, like Firefox.
A note has been added that we could do better if we wanted to.

Multiple backgrounds are not yet supported.

Rebase of #4368. Fixes #4368.
2015-03-03 11:48:54 -07:00
bors-servo
5cd6316add auto merge of #5067 : servo/servo/counters, r=SimonSapin
Only simple alphabetic and numeric counter styles are supported. (This
is most of them though.)

Although this PR adds a sequential pass to layout, I verified that on
pages that contain a reasonable number of ordered lists (Reddit
`/r/rust`), the time spent in generated content resolution is dwarfed by
the time spent in the parallelizable parts of layout. So I don't expect
this to negatively affect our parallelism expect perhaps in pathological
cases.

Moved from #4544, because Critic.

Fixes #4544.
2015-03-03 10:42:52 -07:00
Patrick Walton
09c53f461d layout: Implement image-rendering per CSS-IMAGES-3 § 5.3 and
`background-size` per CSS-BACKGROUNDS § 3.9.

Nearest neighbor interpolation is used for `crisp-edges`, like Firefox.
A note has been added that we could do better if we wanted to.

Multiple backgrounds are not yet supported.
2015-03-03 17:54:12 +01:00
Patrick Walton
30fd28d107 layout: Implement ordered lists, CSS counters, and quotes per CSS 2.1
§ 12.3-12.5.

Only simple alphabetic and numeric counter styles are supported. (This
is most of them though.)

Although this PR adds a sequential pass to layout, I verified that on
pages that contain a reasonable number of ordered lists (Reddit
`/r/rust`), the time spent in generated content resolution is dwarfed by
the time spent in the parallelizable parts of layout. So I don't expect
this to negatively affect our parallelism expect perhaps in pathological
cases.
2015-03-03 17:31:19 +01:00
Patrick Walton
a82fc00806 layout: Implement overflow-x and overflow-y per CSS-OVERFLOW § 3.
Fragmentation is not yet supported.
2015-03-03 17:03:27 +01:00
bors-servo
891dd496e3 auto merge of #5065 : glennw/servo/iframe-vis-fix, r=pcwalton
When an iframe is created with display:none it sets the root layer to be zero width and height. When updating the rect of the iframe from layout send the entire rect rather than just the new origin, which handles the case where the iframe has been made visible and now has a non-zero rect.
2015-03-02 15:30:52 -07:00
bors-servo
93d1f40a96 auto merge of #4475 : pcwalton/servo/text-shadow, r=mbrubeck
r? @mbrubeck 

Depends on servo/rust-geom#64.
2015-03-02 14:54:52 -07:00
Glenn Watson
f68386f0fa Fix making an iframe visible when it was initially set to display:none.
When an iframe is created with display:none it sets the root layer to be
zero width and height. When updating the rect of the iframe from layout
send the entire rect rather than just the new origin, which handles the case
where the iframe has been made visible and now has a non-zero rect.
2015-03-03 07:46:26 +10:00
Patrick Walton
09358b908d layout: Implement text-shadow per CSS-TEXT-DECORATION-3 § 4. 2015-03-02 13:28:51 -08:00
Mátyás Mustoha
774cc4a93a Canvas: added lineTo(). 2015-03-02 21:00:50 +01:00
bors-servo
b2f099026a auto merge of #4952 : bjwbell/servo/borders-txt-nodes, r=pcwalton
Inline fragments that are part of a text run don't have interior borders.
So don't draw interior borders or include them when calculating positioning.

Fixes https://github.com/servo/servo/issues/4658, where multiple text nodes that are adjacent have distinct borders.

r? @Ms2ger, @pcwalton
2015-02-27 16:57:53 -07:00
Bryan Bell
ec2fa2558c Remove interior borders during flow construction
Instead of looking at the boundaries of the text run, set the border
width to zero and the border style to none on border sides that are not
the outermost for a node container that is display: inline.
2015-02-27 15:52:12 -08:00
Bryan Bell
0f407804fe Remove WA for borders ref test
The borders_a.html ref test had a WA to avoid displaying a spurious
black pixel at (0,0). Details are at
https://github.com/servo/servo/issues/2879

The WA can be removed since the bug is no longer reproducible.
2015-02-27 00:40:53 -08:00
Glenn Watson
a2f1f12c96 Fix setting display:none after a layout where the element was visible.
Prior to incremental layout, the code would remove the existing
construction result. However, with incremental layout the construction result
is cloned rather than removed. This change ensures that the previous
construction result is cleared when an element's display type
changes to none.
2015-02-27 07:44:24 +10:00
Patrick Walton
f188278dd2 style: Fix parsing of text decorations.
Adds a reftest so it doesn't break again.
2015-02-24 17:51:22 -08:00
Patrick Walton
55a0ee6ec7 script: Implement enough 2D canvas support to render basic SVGs such as the tiger. 2015-02-22 22:29:58 -05:00
bors-servo
6d2e840bf4 auto merge of #4934 : glennw/servo/fix-1248, r=pcwalton 2015-02-16 14:06:52 -07:00
Glenn Watson
984012c9e3 Support root element having percentage heights in layout. This allows using standard CSS techniques to place a footer at the bottom of the page. 2015-02-16 14:46:19 +10:00
Glenn Watson
7aacf90161 Fixes background-color calculation for iframes. Fixes #1248 2015-02-16 08:16:18 +10:00
Matthew Rasmus
5b340599f2 Fix 'inline-block' sizing issues
Fixes #3624
2015-02-02 15:52:11 -08:00
Patrick Walton
5fdaba05a6 layout: Implement text-align: justify and text-justify per
CSS-TEXT-3 § 7.3.

`text-justify: distribute` is not supported.

The behavior of `text-justify: none` does not seem to match what Firefox
and Chrome do, but it seems to match the spec.

Closes #213.
2015-01-29 17:00:41 -08:00
Glenn Watson
1f37c6eabe Add layout support and tests for inline iframes. Fixes #1697. 2015-01-29 16:36:20 +10:00
Patrick Walton
d891c677aa layout: Implement floated list items.
This patch also makes Servo not crash when
`generated_containing_block_rect()` is called on a list item (as, for
example, GitHub does), and for good measure I added the fix to other
flows as well.
2015-01-28 19:58:24 -08:00
Patrick Walton
0f8e436745 layout: Implement text-overflow: ellipsis per CSS-UI-3 § 6.2.
Only the one-value syntax is supported for now.
2015-01-28 16:23:31 -08:00
bors-servo
c2076d707e auto merge of #4660 : deokjinkim/servo/font_style, r=jdm
'oblique' font-style is not supported now.
When I checked freetype.h, same macro is used for italic and oblique.

  /*    FT_STYLE_FLAG_ITALIC ::                                            */
  /*      Indicates that a given face style is italic or oblique.          */

So, when font style is 'oblique', enable flag for italic.
With tests/html/test_italic_bold.html, it works well.
2015-01-28 11:51:53 -07:00
Peter Reid
c9cbb5b071 Handle overlapping border-radius corners
Conforming to section 5.5 (Rounded Corners/Overlapping Curves) of "CSS
Background and Borders Module Level 3", border radii on elements whose
border curves would have overlapped are uniformly scaled down to the
point that they no longer do.

http://dev.w3.org/csswg/css-backgrounds/#corner-overlap
2015-01-26 09:04:42 -05:00
Deokjin Kim
80a6f0ae08 Support 'font-style: oblique'. 2015-01-20 10:48:23 +09:00
bors-servo
62d1761d2a auto merge of #4598 : mttr/servo/table_percentage, r=pcwalton
Fixes #4421
2015-01-13 13:24:48 -07:00
Patrick Walton
97d3443003 layout: Implement mix-blend-mode per COMPOSITING § 3.4.1.
`background-blend-mode` is not yet supported because we don't support
multiple backgrounds yet.
2015-01-12 08:02:41 -08:00
Matthew Rasmus
182f1a0d01 table_wrapper.rs: Fix for percentage widths
Fixes #4421
2015-01-11 11:39:09 -08:00
Patrick Walton
15d60d7ea4 layout: Implement filter per CSS-FILTERS § 5.
`blur` and `drop-shadow` are not yet supported, because the
`text-shadow` PR makes some fundamental changes to blur rendering that
are needed first.
2015-01-09 07:26:13 -08:00
Patrick Walton
af7cf26e76 layout: Implement outline-offset per CSS-UI-3 § 5.5. 2015-01-08 10:49:54 -08:00
Patrick Walton
0627d4c599 layout: Implement word-break: break-all per CSS3-TEXT § 5.2. 2015-01-08 09:04:24 -08:00
Patrick Walton
5ea2c6dcfd layout: Paint stacking contexts' overflow areas properly.
This was making `box-shadow` not show up in many cases, in particular,
but the effects were not limited to that.
2015-01-04 17:41:59 -08:00
bors-servo
b83b4932da auto merge of #4461 : glennw/servo/glutin-tests, r=larsbergstrom
This stops some ref tests on linux blocking while waiting for
user input events and never outputting the file.

Also mark vertical writing test as flaky on all platforms. Due
to unrelated timing reasons, this fails reliably on mac when glutin
is enabled. The related bug with details on the root cause is #3926.
2014-12-22 17:57:46 -07:00
Patrick Walton
cc7cacfd5f gfx: Clip the background properly when border-radius is used.
Improves Reddit, GitHub, etc.
2014-12-22 14:48:55 -08:00
Glenn Watson
2accabd554 Use event polling instead of blocking when outputting to a file.
This stops some ref tests on linux blocking while waiting for
user input events and never outputting the file.

Also mark vertical writing test as flaky on all platforms. Due
to unrelated timing reasons, this fails reliably on mac when glutin
is enabled. The related bug with details on the root cause is #3926.
2014-12-23 08:32:53 +10:00
bors-servo
4ac8b6a723 auto merge of #4437 : Adenilson/servo/fixInsetOutsetBlack03, r=jdm
Freshly rebased.
2014-12-18 16:24:54 -07:00
bors-servo
3cc87165a1 auto merge of #4425 : SimonSapin/servo/mixed-writing-modes, r=mbrubeck
The rendering is still wrong beause of #2795, but at least we get a rendering.

(This test change is just for readability, it should be equivalent to before.)

r? @mbrubeck
2014-12-18 15:31:28 -07:00
Adenilson Cavalcanti
b6f315cb35 Adding outset ref test. 2014-12-18 13:55:45 -08:00
Adenilson Cavalcanti
06bbecc049 Adding inset ref test. 2014-12-18 13:55:07 -08:00
Patrick Walton
6b28965b94 layout: Implement clip per CSS 2.1 § 11.1.2.
Only the recommended, comma-separated syntax is supported.
2014-12-18 13:07:13 -08:00