Index: third_party/WebKit/Source/modules/canvas2d/CanvasRenderingContext2D.cpp |
diff --git a/third_party/WebKit/Source/modules/canvas2d/CanvasRenderingContext2D.cpp b/third_party/WebKit/Source/modules/canvas2d/CanvasRenderingContext2D.cpp |
index 092c81f8dc3eacb822a2affea0ba8d14fd8e268c..6a932d59610868ebac31b6037d48693193acbc90 100644 |
--- a/third_party/WebKit/Source/modules/canvas2d/CanvasRenderingContext2D.cpp |
+++ b/third_party/WebKit/Source/modules/canvas2d/CanvasRenderingContext2D.cpp |
@@ -1,5 +1,6 @@ |
/* |
- * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 Apple Inc. All rights reserved. |
+ * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 Apple Inc. |
+ * All rights reserved. |
* Copyright (C) 2008, 2010 Nokia Corporation and/or its subsidiary(-ies) |
* Copyright (C) 2007 Alp Toker <alp@atoker.com> |
* Copyright (C) 2008 Eric Seidel <eric@webkit.org> |
@@ -80,7 +81,8 @@ static bool contextLostRestoredEventsEnabled() { |
return RuntimeEnabledFeatures::experimentalCanvasFeaturesEnabled(); |
} |
-// Drawing methods need to use this instead of SkAutoCanvasRestore in case overdraw |
+// Drawing methods need to use this instead of SkAutoCanvasRestore in case |
+// overdraw |
Justin Novosad
2016/10/03 18:13:11
oops
|
// detection substitutes the recording canvas (to discard overdrawn draw calls). |
class CanvasRenderingContext2DAutoRestoreSkCanvas { |
STACK_ALLOCATED(); |
@@ -228,7 +230,8 @@ void CanvasRenderingContext2D::dispatchContextLostEvent(TimerBase*) { |
} |
} |
- // If RealLostContext, it means the context was not lost due to surface failure |
+ // If RealLostContext, it means the context was not lost due to surface |
+ // failure |
Justin Novosad
2016/10/03 18:13:11
oops
|
// but rather due to a an eviction, which means image buffer exists. |
if (m_contextRestorable && m_contextLostMode == RealLostContext) { |
m_tryRestoreContextAttemptCount = 0; |
@@ -239,7 +242,8 @@ void CanvasRenderingContext2D::dispatchContextLostEvent(TimerBase*) { |
void CanvasRenderingContext2D::tryRestoreContextEvent(TimerBase* timer) { |
if (m_contextLostMode == NotLostContext) { |
- // Canvas was already restored (possibly thanks to a resize), so stop trying. |
+ // Canvas was already restored (possibly thanks to a resize), so stop |
+ // trying. |
m_tryRestoreContextEventTimer.stop(); |
return; |
} |
@@ -330,7 +334,8 @@ void CanvasRenderingContext2D::scrollPathIntoViewInternal(const Path& path) { |
ScrollAlignment::alignTopAlways); |
// TODO: should implement "inform the user" that the caret and/or |
- // selection the specified rectangle of the canvas. See http://crbug.com/357987 |
+ // selection the specified rectangle of the canvas. See |
+ // http://crbug.com/357987 |
} |
void CanvasRenderingContext2D::clearRect(double x, |
@@ -368,7 +373,8 @@ SkImageFilter* CanvasRenderingContext2D::stateGetFilter() { |
} |
void CanvasRenderingContext2D::snapshotStateForFilter() { |
- // The style resolution required for fonts is not available in frame-less documents. |
+ // The style resolution required for fonts is not available in frame-less |
+ // documents. |
if (!canvas()->document().frame()) |
return; |
@@ -417,7 +423,8 @@ String CanvasRenderingContext2D::font() const { |
if (fontFamily != &firstFontFamily) |
serializedFont.append(','); |
- // FIXME: We should append family directly to serializedFont rather than building a temporary string. |
+ // FIXME: We should append family directly to serializedFont rather than |
+ // building a temporary string. |
String family = fontFamily->family(); |
if (family.startsWith("-webkit-")) |
family = family.substring(8); |
@@ -432,7 +439,8 @@ String CanvasRenderingContext2D::font() const { |
} |
void CanvasRenderingContext2D::setFont(const String& newFont) { |
- // The style resolution required for fonts is not available in frame-less documents. |
+ // The style resolution required for fonts is not available in frame-less |
+ // documents. |
if (!canvas()->document().frame()) |
return; |
@@ -448,7 +456,8 @@ void CanvasRenderingContext2D::setFont(const String& newFont) { |
CanvasFontCache* canvasFontCache = canvas()->document().canvasFontCache(); |
- // Map the <canvas> font into the text style. If the font uses keywords like larger/smaller, these will work |
+ // Map the <canvas> font into the text style. If the font uses keywords like |
+ // larger/smaller, these will work |
// relative to the canvas. |
RefPtr<ComputedStyle> fontStyle; |
const ComputedStyle* computedStyle = canvas()->ensureComputedStyle(); |
@@ -469,7 +478,8 @@ void CanvasRenderingContext2D::setFont(const String& newFont) { |
fontStyle = ComputedStyle::create(); |
FontDescription elementFontDescription( |
computedStyle->getFontDescription()); |
- // Reset the computed size to avoid inheriting the zoom factor from the <canvas> element. |
+ // Reset the computed size to avoid inheriting the zoom factor from the |
+ // <canvas> element. |
elementFontDescription.setComputedSize( |
elementFontDescription.specifiedSize()); |
fontStyle->setFontDescription(elementFontDescription); |
@@ -493,8 +503,8 @@ void CanvasRenderingContext2D::setFont(const String& newFont) { |
} |
// The parse succeeded. |
- String newFontSafeCopy( |
- newFont); // Create a string copy since newFont can be deleted inside realizeSaves. |
+ String newFontSafeCopy(newFont); // Create a string copy since newFont can be |
+ // deleted inside realizeSaves. |
modifiableState().setUnparsedFont(newFontSafeCopy); |
} |
@@ -508,7 +518,8 @@ void CanvasRenderingContext2D::schedulePruneLocalFontCacheIfNeeded() { |
void CanvasRenderingContext2D::didProcessTask() { |
Platform::current()->currentThread()->removeTaskObserver(this); |
- // This should be the only place where canvas() needs to be checked for nullness |
+ // This should be the only place where canvas() needs to be checked for |
+ // nullness |
Justin Novosad
2016/10/03 18:13:11
oops
|
// because the circular refence with HTMLCanvasElement mean the canvas and the |
// context keep each other alive as long as the pair is referenced the task |
// observer is the only persisten refernce to this object that is not traced, |
@@ -726,7 +737,8 @@ void CanvasRenderingContext2D::strokeText(const String& text, |
TextMetrics* CanvasRenderingContext2D::measureText(const String& text) { |
TextMetrics* metrics = TextMetrics::create(); |
- // The style resolution required for fonts is not available in frame-less documents. |
+ // The style resolution required for fonts is not available in frame-less |
+ // documents. |
if (!canvas()->document().frame()) |
return metrics; |
@@ -762,8 +774,9 @@ TextMetrics* CanvasRenderingContext2D::measureText(const String& text) { |
metrics->setActualBoundingBoxAscent(-textBounds.y() - baselineY); |
metrics->setActualBoundingBoxDescent(textBounds.maxY() + baselineY); |
- // Note : top/bottom and ascend/descend are currently the same, so there's no difference |
- // between the EM box's top and bottom and the font's ascend and descend |
+ // Note : top/bottom and ascend/descend are currently the same, so there's no |
+ // difference between the EM box's top and bottom and the font's ascend and |
+ // descend |
metrics->setEmHeightAscent(0); |
metrics->setEmHeightDescent(0); |
@@ -779,13 +792,14 @@ void CanvasRenderingContext2D::drawTextInternal( |
double y, |
CanvasRenderingContext2DState::PaintType paintType, |
double* maxWidth) { |
- // The style resolution required for fonts is not available in frame-less documents. |
+ // The style resolution required for fonts is not available in frame-less |
+ // documents. |
if (!canvas()->document().frame()) |
return; |
- // accessFont needs the style to be up to date, but updating style can cause script to run, |
- // (e.g. due to autofocus) which can free the canvas (set size to 0, for example), so update |
- // style before grabbing the drawingCanvas. |
+ // accessFont needs the style to be up to date, but updating style can cause |
+ // script to run, (e.g. due to autofocus) which can free the canvas (set size |
+ // to 0, for example), so update style before grabbing the drawingCanvas. |
canvas()->document().updateStyleAndLayoutTreeForNode(canvas()); |
SkCanvas* c = drawingCanvas(); |
@@ -797,10 +811,10 @@ void CanvasRenderingContext2D::drawTextInternal( |
if (maxWidth && (!std::isfinite(*maxWidth) || *maxWidth <= 0)) |
return; |
- // Currently, SkPictureImageFilter does not support subpixel text anti-aliasing, which |
- // is expected when !creationAttributes().alpha(), so we need to fall out of display |
- // list mode when drawing text to an opaque canvas. |
- // crbug.com/583809 |
+ // Currently, SkPictureImageFilter does not support subpixel text |
+ // anti-aliasing, which is expected when !creationAttributes().alpha(), so we |
+ // need to fall out of display list mode when drawing text to an opaque |
+ // canvas. crbug.com/583809 |
if (!creationAttributes().alpha() && !isAccelerated()) |
canvas()->disableDeferral( |
DisableDeferralReasonSubPixelTextAntiAliasingSupport); |
@@ -847,7 +861,8 @@ void CanvasRenderingContext2D::drawTextInternal( |
break; |
} |
- // The slop built in to this mask rect matches the heuristic used in FontCGWin.cpp for GDI text. |
+ // The slop built in to this mask rect matches the heuristic used in |
+ // FontCGWin.cpp for GDI text. |
TextRunPaintInfo textRunPaintInfo(textRun); |
textRunPaintInfo.bounds = |
FloatRect(location.x() - fontMetrics.height() / 2, |
@@ -860,7 +875,8 @@ void CanvasRenderingContext2D::drawTextInternal( |
if (useMaxWidth) { |
drawingCanvas()->save(); |
drawingCanvas()->translate(location.x(), location.y()); |
- // We draw when fontWidth is 0 so compositing operations (eg, a "copy" op) still work. |
+ // We draw when fontWidth is 0 so compositing operations (eg, a "copy" op) |
+ // still work. |
drawingCanvas()->scale((fontWidth > 0 ? (width / fontWidth) : 0), 1); |
location = FloatPoint(); |
} |
@@ -891,8 +907,10 @@ int CanvasRenderingContext2D::getFontBaseline( |
case TopTextBaseline: |
return fontMetrics.ascent(); |
case HangingTextBaseline: |
- // According to http://wiki.apache.org/xmlgraphics-fop/LineLayout/AlignmentHandling |
- // "FOP (Formatting Objects Processor) puts the hanging baseline at 80% of the ascender height" |
+ // According to |
+ // http://wiki.apache.org/xmlgraphics-fop/LineLayout/AlignmentHandling |
+ // "FOP (Formatting Objects Processor) puts the hanging baseline at 80% of |
+ // the ascender height" |
return (fontMetrics.ascent() * 4) / 5; |
case BottomTextBaseline: |
case IdeographicTextBaseline: |
@@ -1089,8 +1107,8 @@ unsigned CanvasRenderingContext2D::hitRegionsCount() const { |
bool CanvasRenderingContext2D::isAccelerationOptimalForCanvasContent() const { |
// Heuristic to determine if the GPU accelerated rendering pipeline is optimal |
- // for performance based on past usage. It has a bias towards suggesting that the |
- // accelerated pipeline is optimal. |
+ // for performance based on past usage. It has a bias towards suggesting that |
+ // the accelerated pipeline is optimal. |
float acceleratedCost = estimateRenderingCost( |
ExpensiveCanvasHeuristicParameters::AcceleratedModeIndex); |