Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(813)

Unified Diff: third_party/WebKit/Source/platform/graphics/paint/GeometryMapper.h

Issue 2802443002: Compute rounded-ness of visual rects (Closed)
Patch Set: none Created 3 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: third_party/WebKit/Source/platform/graphics/paint/GeometryMapper.h
diff --git a/third_party/WebKit/Source/platform/graphics/paint/GeometryMapper.h b/third_party/WebKit/Source/platform/graphics/paint/GeometryMapper.h
index 5766bfaf755e4ebd38f1c60f30d8e399678e5de3..c1284d57eb479387a6f680deeabd05261e34b9e6 100644
--- a/third_party/WebKit/Source/platform/graphics/paint/GeometryMapper.h
+++ b/third_party/WebKit/Source/platform/graphics/paint/GeometryMapper.h
@@ -48,10 +48,17 @@ class PLATFORM_EXPORT GeometryMapper {
// clip of |sourceState|, or the inverse transform is not invertible.
//
// |mappingRect| is both input and output.
+ //
+ // The output FloatClipRect may contain false positives for rounded-ness
+ // if a rounded clip is clipped out, and overly conservative results
+ // in the presences of transforms.
+ //
+ // TODO(chrishtr): we should provide a variant of these methods that
+ // guarantees a tight result, or else signals an error. crbug.com/708741
static void sourceToDestinationVisualRect(
const PropertyTreeState& sourceState,
const PropertyTreeState& destinationState,
- FloatRect& mappingRect);
+ FloatClipRect& mappingRect);
// Same as sourceToDestinationVisualRect() except that only transforms are
// applied.
@@ -76,10 +83,14 @@ class PLATFORM_EXPORT GeometryMapper {
// |ancestorState|.
//
// |mappingRect| is both input and output.
+ //
+ // The output FloatClipRect may contain false positives for rounded-ness
+ // if a rounded clip is clipped out, and overly conservative results
+ // in the presences of transforms.
static void localToAncestorVisualRect(
const PropertyTreeState& localTransformState,
const PropertyTreeState& ancestorState,
- FloatRect& mappingRect);
+ FloatClipRect& mappingRect);
// Maps from a rect in |localTransformNode| space to its transformed rect in
// |ancestorTransformNode| space. This is computed by multiplying the rect by
@@ -123,12 +134,20 @@ class PLATFORM_EXPORT GeometryMapper {
// Returns the "clip visual rect" between |localTransformState| and
// |ancestorState|. See above for the definition of "clip visual rect".
+ //
+ // The output FloatClipRect may contain false positives for rounded-ness
+ // if a rounded clip is clipped out, and overly conservative results
+ // in the presences of transforms.
static FloatClipRect localToAncestorClipRect(
const PropertyTreeState& localTransformState,
const PropertyTreeState& ancestorState);
// Like localToAncestorClipRect, except it can handle destination transform
// spaces which are not direct ancestors of the source transform space.
+ //
+ // The output FloatClipRect may contain false positives for rounded-ness
+ // if a rounded clip is clipped out, and overly conservative results
+ // in the presences of transforms.
static const FloatClipRect& sourceToDestinationClipRect(
const PropertyTreeState& sourceState,
const PropertyTreeState& destinationState);
@@ -149,13 +168,13 @@ class PLATFORM_EXPORT GeometryMapper {
static void sourceToDestinationVisualRectInternal(
const PropertyTreeState& sourceState,
const PropertyTreeState& destinationState,
- FloatRect& mappingRect,
+ FloatClipRect& mappingRect,
bool& success);
static void localToAncestorVisualRectInternal(
const PropertyTreeState& localTransformState,
const PropertyTreeState& ancestorState,
- FloatRect& mappingRect,
+ FloatClipRect& mappingRect,
bool& success);
static void localToAncestorRectInternal(
@@ -183,7 +202,7 @@ class PLATFORM_EXPORT GeometryMapper {
static void slowLocalToAncestorVisualRectWithEffects(
const PropertyTreeState& localState,
const PropertyTreeState& ancestorState,
- FloatRect& mappingRect,
+ FloatClipRect& mappingRect,
bool& success);
static const TransformationMatrix& identityMatrix();

Powered by Google App Engine
This is Rietveld 408576698