Commit Graph

101 Commits

Author SHA1 Message Date
Brad Werth
bd11c1e59d Bug 1463745 Part 2: Change nsFlowAreaRect to also track whether it may widen in the block direction. r=dbaron
MozReview-Commit-ID: FWKQEFDBFgr
2018-05-30 11:07:18 -07:00
Brad Werth
a3f9bc0e19 Bug 1463745 Part 1: Add methods to FloatInfo and ShapeInfo to report whether or not they could narrow in the block direction. r=dbaron
MozReview-Commit-ID: 38TMjcoaeAe
2018-05-30 10:03:45 -07:00
Sebastian Hengst
d91e9954eb Backed out 4 changesets (bug 525063) on request from Andi. a=backout
Backed out changeset 516c4fb1e4b8 (bug 525063)
Backed out changeset 6ff8aaef2866 (bug 525063)
Backed out changeset bf13e4103150 (bug 525063)
Backed out changeset d7d2f08e051c (bug 525063)
2018-04-13 16:01:28 +03:00
Tristan Bourvon
6095241db8 Bug 525063 - Initialize uninitialized class attributes in m-c. r=ehsan 2018-04-10 21:11:02 +02:00
Ting-Yu Lin
3593258ca0 Bug 1404222 Part 1: Implement shape-outside: <image>. r=dbaron,dholbert
When creating ImageShapeInfo, it's likely that the image is still decoding.
Part 2 will add mechanism to trigger reflow after the image is ready.
2018-01-25 14:55:18 +08:00
Ryan VanderMeulen
93ffd60378 Backed out 11 changesets (bug 1404222) for static analysis failures on a CLOSED TREE.
Backed out changeset a6a99136300c (bug 1404222)
Backed out changeset 7183b8104399 (bug 1404222)
Backed out changeset a1e4294c1c59 (bug 1404222)
Backed out changeset b79d6e8318db (bug 1404222)
Backed out changeset 0450620fdabd (bug 1404222)
Backed out changeset 026c74a92d04 (bug 1404222)
Backed out changeset 50ac4167f702 (bug 1404222)
Backed out changeset 59038f2db68a (bug 1404222)
Backed out changeset f6b9096da915 (bug 1404222)
Backed out changeset 4e0baffdd79b (bug 1404222)
Backed out changeset 57eeb849ab88 (bug 1404222)
2018-04-02 17:57:27 -04:00
Ting-Yu Lin
14acc00a84 Bug 1404222 Part 1: Implement shape-outside: <image>. r=dbaron,dholbert
When creating ImageShapeInfo, it's likely that the image is still decoding.
Part 2 will add mechanism to trigger reflow after the image is ready.
2018-01-25 14:55:18 +08:00
Ting-Yu Lin
770e1495a5 Bug 1426065 Part 1 - Move ShapeInfo and its dervied classes from header to cpp. r=dholbert
ShapeInfo and its derived classes are private to nsFloatManager, which don't
need to be in the header. Move them to cpp to make compile faster after
changing them.

MozReview-Commit-ID: MRkBGoqcPj
2017-12-19 15:06:10 +08:00
Ting-Yu Lin
c944d7d613 Bug 1418224 Part 2 - Extract ShapeInfo::CreateBasicShape(). r=heycam
MozReview-Commit-ID: DZ1O0CzzsyT
2017-11-21 18:24:34 +08:00
dluca
617c4e7f6a Backed out 4 changesets (bug 1418224) for build bustages r=backout on a CLOSED TREE
Backed out changeset 3ef8715cb8d7 (bug 1418224)
Backed out changeset 0d58d9fed90d (bug 1418224)
Backed out changeset faad7f275749 (bug 1418224)
Backed out changeset 1e86ff6b95ae (bug 1418224)
2017-11-27 07:42:50 +02:00
Ting-Yu Lin
5e0f1b08ba Bug 1418224 Part 2 - Extract ShapeInfo::CreateBasicShape(). r=heycam
MozReview-Commit-ID: DZ1O0CzzsyT
2017-11-21 18:24:34 +08:00
Daniel Holbert
8fea3c215f Bug 1412346 part 5: (automated patch) Switch a bunch of C++ files in layout to use our standard mode lines. r=jfkthame
This patch was generated automatically by the "modeline.py" script, available
here: https://github.com/amccreight/moz-source-tools/blob/master/modeline.py

For every file that is modified in this patch, the changes are as follows:
 (1) The patch changes the file to use the exact C++ mode lines from the
     Mozilla coding style guide, available here:
https://developer.mozilla.org/en-US/docs/Mozilla/Developer_guide/Coding_Style#Mode_Line

 (2) The patch deletes any blank lines between the mode line & the MPL
     boilerplate comment.

 (3) If the file previously had the mode lines and MPL boilerplate in a
     single contiguous C++ comment, then the patch splits them into
     separate C++ comments, to match the boilerplate in the coding style.

MozReview-Commit-ID: EuRsDue63tK
2017-10-27 10:33:53 -07:00
Ting-Yu Lin
d35b7d33db Bug 1404243 Part 3 - Remove refcount for StyleBasicShape, and use UniquePtr to hold it. r=heycam
After StyleBasicShape is set to StyleShapeSource, it's life cycle never go
beyond StyleShapeSource, so I make StyleBasicShape hold by a UniquePtr in
StyleShapeSource.

Also, replace all raw pointers to StyleBasicShape by UniquePtr in all APIs.

MozReview-Commit-ID: 1MfIFjP8TsQ
2017-09-25 18:50:24 +08:00
Ehsan Akhgari
204053f422 Bug 1363252 - Increase NS_FLOAT_MANAGER_CACHE_SIZE to 64 in order to reduce the likelihood of dynamic allocations when creating new nsFloatManagers; r=dbaron 2017-05-08 22:27:26 -04:00
Ehsan Akhgari
8a2aee5a38 Bug 1362876 follow-up: Bump up the reserved size to 11 2017-05-08 21:49:08 -04:00
Ehsan Akhgari
8a2bc75027 Bug 1362876 - Use reserved storage for 10 FloatInfo objects on the stack in nsFloatManager::mFloats; r=dbaron 2017-05-08 21:36:51 -04:00
Ting-Yu Lin
17312fe511 Bug 1326409 Part 6 - Convert aBasicShape to a pointer to a const value. r=dholbert
To address reviewer's comments in bug 1326409 comment 13 and comment 14.

MozReview-Commit-ID: FiUXXk4O8N7
2017-03-13 12:03:40 +08:00
Ting-Yu Lin
6cf81bf416 Bug 1326409 Part 5 - Implement shape-outside: polygon(). r=dholbert
The <fill-rule> in the polygon() syntax is not handled because it doesn't
matter to shape-outside at all.

The reftests are numbered from 018 to avoid conflict with the w3c upstream
ones according to this list.
https://test.csswg.org/harness/results/css-shapes-1_dev/grouped/

Reftest 018 to 025 are under various writing-modes, 026 to 029 are testing
empty float area, 030 to 031 are testing polygon containing horizontal
lines.

MozReview-Commit-ID: FPUbMdZsvu6
2017-03-13 12:03:40 +08:00
Ting-Yu Lin
d88acdc8bf Bug 1326409 Part 3 - Remove unneeded WritingMode parameter. r=dholbert
Remove WritingMode parameter from LineRight() and LineLeft() in both
FloatInfo and ShapeInfo.

Bug 1316549 Part 3 added the parameter to compute the border radii under
writing-modes correctly. However, bug 1326407 Part 6 later made us cache
border radii, so the WritingMode parameter is no longer needed.

MozReview-Commit-ID: DFhm5d51OXJ
2017-03-13 12:03:39 +08:00
Ting-Yu Lin
fc4aa98b2e Bug 1326409 Part 1 - Annotate EllipseShapeInfo as 'final'. r=dholbert
MozReview-Commit-ID: IReCWO8JRSQ
2017-03-13 12:03:39 +08:00
cku
1819876e04 Bug 1336905 - Part 1. Remove StyleShapeSource's template argument. r=heycam,TYLin
MozReview-Commit-ID: FHTwGyXHsce
2017-02-21 23:26:17 +08:00
Ting-Yu Lin
787377e136 Bug 1326407 Part 8 - Implement shape-outside: inset(). r=dbaron
The reftests have passed
layout/reftests/w3c-css/submitted/check-for-references.sh.

MozReview-Commit-ID: JZk1fo8SxgV
2017-02-16 10:51:49 +08:00
Ting-Yu Lin
7ed1079d5a Bug 1326407 Part 7 - Rename BoxShapeInfo to RoundedBoxShapeInfo. r=dbaron
The radii has been cached in the BoxShapeInfo in the previous part. Hence
the rename.

This class will be used to implement inset() in the next part, so the rect
stored isn't necessarily the rect of the <shape-box>. It could be the inset
rectangle. Therefore I rename mShapeBoxRect to mRect to avoid any confusion.

MozReview-Commit-ID: J0hpQDsbMyN
2017-02-16 10:51:48 +08:00
Ting-Yu Lin
12032a13e7 Bug 1326407 Part 6 - Cache the border radii in BoxShapeInfo. r=dbaron
The radii can be computed when creating BoxShapeInfo. No need to compute
them every time in the LineLeft() and LineRight().

MozReview-Commit-ID: GIDSLgickCT
2017-02-16 10:51:48 +08:00
Ting-Yu Lin
27ea4a2d47 Bug 1326407 Part 5 - Rename ConvertPhysicalToLogical(). r=dbaron
Make the name and the order of arguments be consistent with the
ConvertPhysicalToLogical() method added in the previous part.

MozReview-Commit-ID: 1YARDzI3cyr
2017-02-16 10:51:48 +08:00
Ting-Yu Lin
cf4ea8c3c8 Bug 1326407 Part 4 - Extract a function to convert a rect to float manager's logical coordinate. r=dbaron
MozReview-Commit-ID: Ag6V6XmlHIU
2017-02-16 10:51:48 +08:00
Ting-Yu Lin
9e08b8cf6b Bug 1326407 Part 3 - Extract a function to compute <shape-box> rect. r=dbaron
MozReview-Commit-ID: HaiDqNgE25P
2017-02-16 10:51:48 +08:00
Ting-Yu Lin
4d1d8c9c48 Bug 1338443 followup - Fix comment indentation for nsFloatManager::mOld. r=me
Comment-only change. DONTBUILD.

MozReview-Commit-ID: Dci70Bqkbc0
2017-02-14 14:31:47 +08:00
Ting-Yu Lin
0bad077dee Bug 1338443 Part 2 - Convert nsAutoFloatManager::mNew to use UniquePtr. r=dholbert
The life cycle of nsFloatManager managed by mNew is same as
nsAutoFloatManager, which lives only in nsBlockFrame::Reflow(). Therefore,
other nsFloatManager pointers are all non-owning ref to the
nsAutoFloatManager::mNew.

MozReview-Commit-ID: B34BOcsjE2X
2017-02-09 17:57:16 +08:00
Ting-Yu Lin
3280edebe5 Bug 1333685 - Eliminate CircleShapeInfo, and use EllipseShapeInfo for circle(). r=dbaron
The difference between CircleShapeInfo's constructor and EllipseShapeInfo's
is the computation of the radii. Therefore, this patch creates a factory
function to distinguish that, so shape-outside: circle() could be
implemented by using EllipseShapeInfo.

MozReview-Commit-ID: 9ZBQu8zCSrM
2017-01-26 14:21:29 +08:00
Ting-Yu Lin
8fff247fa9 Bug 1326406 Part 6 - Make CircleShapeInfo inherit from EllipseShapeInfo. r=dbaron
MozReview-Commit-ID: H0UgT6P6c7K
2017-01-23 17:19:32 +08:00
Ting-Yu Lin
b788a7bcfc Bug 1326406 Part 5 - Update document about float manager's coordinate space. r=dbaron
MozReview-Commit-ID: LJVqs49CSqQ
2017-01-23 16:37:07 +08:00
Ting-Yu Lin
5c6e2823f3 Bug 1326406 Part 4 - Implement shape-outside: ellipse(). r=dbaron
MozReview-Commit-ID: t1gaoKNbNp
2017-01-23 17:18:07 +08:00
Ting-Yu Lin
062fcdcea1 Bug 1326406 Part 3 - Add ShapeInfo::Translate() for moving the origin of ShapeInfo. r=dbaron
Instead of manually adding (aLineLeft, aBlockStart) when creating a shape,
add Translate() to let the shapes implement their only way to move their
origin. FloatInfo could then move the shapes after they're created.

MozReview-Commit-ID: ApZBHnkng74
2017-01-23 17:17:37 +08:00
Ting-Yu Lin
353a498900 Bug 1311244 Part 7 - Implement shape-outside: circle(). r=dbaron
circle() allows the user to define an empty flow area, so IsEmpty() needs to
be overridden.

The flow area defined by a shape needs to be clipped to the margin-box per
https://drafts.csswg.org/css-shapes/#relation-to-box-model-and-float-behavior

In the reftests, both clip-path and shape-outside uses the same value so
that it's easier to debug visually.

Add LogicalPoint::LineRelative() because we need to convert a point's I() to
the line-axis in nsFloatManager. LineRelative() differs from I() in all
'rtl' direction per
https://drafts.csswg.org/css-writing-modes-3/#logical-to-physical

MozReview-Commit-ID: FxQaFPrEQ73
2017-01-06 16:36:43 +08:00
Ting-Yu Lin
a7c480ad7e Bug 1311244 Part 6 - Add ShapeInfo and move <shape-box> impl to BoxShapeInfo. r=dbaron
Create ShapeInfo as a base class for implementing all the shapes. In this
design, we only need to create the correct subclass in FloatInfo's
constructor whenever shape-outside is used rather than manually branching on
StyleShapeSourceType and StyleBasicShape in all the methods like
LineRight(), LineLeft(), etc.

The concrete subclass of ShapeInfo could focus on implementing how its shape
influence the flow area by overriding the needed methods in ShapeInfo.

Move ComputeEllipseLineInterceptDiff() and XInterceptAtY() under the scope
of ShapeInfo so that they could be used by BoxShapeInfo and all the other
ShpapeInfo subclasses yet to come.

MozReview-Commit-ID: ETVc5FdGNha
2017-01-06 16:36:30 +08:00
Ting-Yu Lin
a0a6586078 Bug 1311244 Part 5 - Convert FloatInfo's copy constructor into a move constructor. r=dbaron
Use move constructor for two reasons. 1) The copy constructor is needed only
when appending FloatInfo to mFloats, so using move constructor will likely
be more efficient if some of the member variables support move constructor.
2) Part 6 will added a UniquePtr member to FloatInfo, so using move
constructor becomes necessary.

Also change the return value of AddFloat() to void to simplify the code,
since all the other callers do not check the return value, and
BlockReflowInput::FloatAndPlaceFloat() only asserts in debug mode. I assume
it's safe to omit the OOM check.

MozReview-Commit-ID: GVbbsdBjr7b
2017-01-06 16:36:19 +08:00
Carsten "Tomcat" Book
453d6b6717 Backed out changeset 60d8d64ca347 (bug 1311244) 2017-01-12 14:19:22 +01:00
Carsten "Tomcat" Book
873fc01c44 Backed out changeset 2893ecc79fef (bug 1311244) 2017-01-12 14:19:20 +01:00
Carsten "Tomcat" Book
de8cecb003 Backed out changeset 466053d9302b (bug 1311244) 2017-01-12 14:19:18 +01:00
Ting-Yu Lin
d543342476 Bug 1311244 Part 7 - Implement shape-outside: circle(). r=dbaron
circle() allows the user to define an empty flow area, so IsEmpty() needs to
be overridden.

The flow area defined by a shape needs to be clipped to the margin-box per
https://drafts.csswg.org/css-shapes/#relation-to-box-model-and-float-behavior

In the reftests, both clip-path and shape-outside uses the same value so
that it's easier to debug visually.

Add LogicalPoint::LineRelative() because we need to convert a point's I() to
the line-axis in nsFloatManager. LineRelative() differs from I() in all
'rtl' direction per
https://drafts.csswg.org/css-writing-modes-3/#logical-to-physical

MozReview-Commit-ID: FxQaFPrEQ73
2017-01-06 16:36:43 +08:00
Ting-Yu Lin
5b323f206a Bug 1311244 Part 6 - Add ShapeInfo and move <shape-box> impl to BoxShapeInfo. r=dbaron
Create ShapeInfo as a base class for implementing all the shapes. In this
design, we only need to create the correct subclass in FloatInfo's
constructor whenever shape-outside is used rather than manually branching on
StyleShapeSourceType and StyleBasicShape in all the methods like
LineRight(), LineLeft(), etc.

The concrete subclass of ShapeInfo could focus on implementing how its shape
influence the flow area by overriding the needed methods in ShapeInfo.

Move ComputeEllipseLineInterceptDiff() and XInterceptAtY() under the scope
of ShapeInfo so that they could be used by BoxShapeInfo and all the other
ShpapeInfo subclasses yet to come.

MozReview-Commit-ID: ETVc5FdGNha
2017-01-06 16:36:30 +08:00
Ting-Yu Lin
68857838fc Bug 1311244 Part 5 - Convert FloatInfo's copy constructor into a move constructor. r=dbaron
Use move constructor for two reasons. 1) The copy constructor is needed only
when appending FloatInfo to mFloats, so using move constructor will likely
be more efficient if some of the member variables support move constructor.
2) Part 6 will added a UniquePtr member to FloatInfo, so using move
constructor becomes necessary.

Also change the return value of AddFloat() to void to simplify the code,
since all the other callers do not check the return value, and
BlockReflowInput::FloatAndPlaceFloat() only asserts in debug mode. I assume
it's safe to omit the OOM check.

MozReview-Commit-ID: GVbbsdBjr7b
2017-01-06 16:36:19 +08:00
Phil Ringnalda
6a908b136a Backed out 8 changesets (bug 1311244) for OOM failures in Win7 debug R1
Backed out changeset d5411799a28f (bug 1311244)
Backed out changeset ff9c71e1dbc8 (bug 1311244)
Backed out changeset 96988ec5b81c (bug 1311244)
Backed out changeset 9d257713833a (bug 1311244)
Backed out changeset 2c33905ccb04 (bug 1311244)
Backed out changeset 20148e33d523 (bug 1311244)
Backed out changeset f36cd1532fdb (bug 1311244)
Backed out changeset 2ee4ea83a6b4 (bug 1311244)
2017-01-08 21:11:25 -08:00
Ting-Yu Lin
e95ce09ad4 Bug 1311244 Part 7 - Implement shape-outside: circle(). r=dbaron
circle() allows the user to define an empty flow area, so IsEmpty() needs to
be overridden.

The flow area defined by a shape needs to be clipped to the margin-box per
https://drafts.csswg.org/css-shapes/#relation-to-box-model-and-float-behavior

In the reftests, both clip-path and shape-outside uses the same value so
that it's easier to debug visually.

Add LogicalPoint::LineRelative() because we need to convert a point's I() to
the line-axis in nsFloatManager. LineRelative() differs from I() in all
'rtl' direction per
https://drafts.csswg.org/css-writing-modes-3/#logical-to-physical

MozReview-Commit-ID: FxQaFPrEQ73
2017-01-06 16:36:43 +08:00
Ting-Yu Lin
24cda78512 Bug 1311244 Part 6 - Add ShapeInfo and move <shape-box> impl to BoxShapeInfo. r=dbaron
Create ShapeInfo as a base class for implementing all the shapes. In this
design, we only need to create the correct subclass in FloatInfo's
constructor whenever shape-outside is used rather than manually branching on
StyleShapeSourceType and StyleBasicShape in all the methods like
LineRight(), LineLeft(), etc.

The concrete subclass of ShapeInfo could focus on implementing how its shape
influence the flow area by overriding the needed methods in ShapeInfo.

Move ComputeEllipseLineInterceptDiff() and XInterceptAtY() under the scope
nsFloatManager so that they could be used by BoxShapeInfo and all the other
ShpapeInfo subclasses yet to come.

MozReview-Commit-ID: ETVc5FdGNha
2017-01-06 16:36:30 +08:00
Ting-Yu Lin
5dd41756d4 Bug 1311244 Part 5 - Convert FloatInfo's copy constructor into a move constructor. r=dbaron
Use move constructor for two reasons. 1) The copy constructor is needed only
when appending FloatInfo to mFloats, so using move constructor will likely
be more efficient if some of the member variables support move constructor.
2) Part 6 will added a UniquePtr member to FloatInfo, so using move
constructor becomes necessary.

Also change the return value of AddFloat() to void to simplify the code,
since all the other callers do not check the return value, and
BlockReflowInput::FloatAndPlaceFloat() only asserts in debug mode. I assume
it's safe to omit the OOM check.

MozReview-Commit-ID: GVbbsdBjr7b
2017-01-06 16:36:19 +08:00
Ting-Yu Lin
a498d798d3 Bug 1319672 Part 1 - Add document related to writing-mode in nsFloatManager. r=dbaron
MozReview-Commit-ID: 2Sr7UU6BQ9r
2016-11-23 18:07:56 +08:00
Ting-Yu Lin
17d214f4b2 Bug 1316549 Part 4 - Use logical names for ComputeEllipseLineInterceptDiff(). r=dbaron
This patch is just renames. No logic change for the function.

MozReview-Commit-ID: K7w0YL3G3gu
2016-11-18 13:54:09 +08:00
Ting-Yu Lin
e7919765e0 Bug 1316549 Part 3 - Fix <shape-box> with border-radius in writing-mode. r=dbaron
The tests cases are designed based on the integer solution to the ellipse
equation (x/a)^2 + (y/b)^2 = 1, where x=36, y=32, a=60, b=40.

MozReview-Commit-ID: De2fXcb6ypP
2016-11-14 18:11:45 +08:00