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

Unified Diff: Source/core/html/canvas/CanvasRenderingContext2DState.cpp

Issue 1093673002: Removing the dependency on GraphicsContext for drawing images in 2D canvas (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: fixup Created 5 years, 7 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: Source/core/html/canvas/CanvasRenderingContext2DState.cpp
diff --git a/Source/core/html/canvas/CanvasRenderingContext2DState.cpp b/Source/core/html/canvas/CanvasRenderingContext2DState.cpp
index f7827fa8e0fde02214202e47ba9558d5487e9840..fc4102e0c6e20136fd2454e8aaafa1cf9d17859c 100644
--- a/Source/core/html/canvas/CanvasRenderingContext2DState.cpp
+++ b/Source/core/html/canvas/CanvasRenderingContext2DState.cpp
@@ -41,6 +41,8 @@ CanvasRenderingContext2DState::CanvasRenderingContext2DState()
{
m_fillPaint.setStyle(SkPaint::kFill_Style);
m_fillPaint.setAntiAlias(true);
+ m_imagePaint.setStyle(SkPaint::kFill_Style);
+ m_imagePaint.setAntiAlias(true);
m_strokePaint.setStyle(SkPaint::kStroke_Style);
m_strokePaint.setStrokeWidth(1);
m_strokePaint.setStrokeCap(SkPaint::kButt_Cap);
@@ -59,6 +61,7 @@ CanvasRenderingContext2DState::CanvasRenderingContext2DState(const CanvasRenderi
, m_fillStyle(other.m_fillStyle)
, m_strokePaint(other.m_strokePaint)
, m_fillPaint(other.m_fillPaint)
+ , m_imagePaint(other.m_imagePaint)
, m_shadowOffset(other.m_shadowOffset)
, m_shadowBlur(other.m_shadowBlur)
, m_shadowColor(other.m_shadowColor)
@@ -107,6 +110,7 @@ CanvasRenderingContext2DState& CanvasRenderingContext2DState::operator=(const Ca
m_fillStyle = other.m_fillStyle;
m_strokePaint = other.m_strokePaint;
m_fillPaint = other.m_fillPaint;
+ m_imagePaint = other.m_imagePaint;
m_shadowOffset = other.m_shadowOffset;
m_shadowBlur = other.m_shadowBlur;
m_shadowColor = other.m_shadowColor;
@@ -235,16 +239,33 @@ CanvasStyle* CanvasRenderingContext2DState::style(PaintType paintType) const
return fillStyle();
case StrokePaintType:
return strokeStyle();
+ case ImagePaintType:
+ return nullptr;
}
ASSERT_NOT_REACHED();
return nullptr;
}
+void CanvasRenderingContext2DState::setShouldAntialias(bool shouldAntialias)
+{
+ m_fillPaint.setAntiAlias(shouldAntialias);
+ m_strokePaint.setAntiAlias(shouldAntialias);
+ m_imagePaint.setAntiAlias(shouldAntialias);
+}
+
+bool CanvasRenderingContext2DState::shouldAntialias() const
+{
+ ASSERT(m_fillPaint.isAntiAlias() == m_strokePaint.isAntiAlias() && m_fillPaint.isAntiAlias() == m_imagePaint.isAntiAlias());
+ return m_fillPaint.isAntiAlias();
+}
+
void CanvasRenderingContext2DState::setGlobalAlpha(float alpha)
{
m_globalAlpha = alpha;
m_strokeStyleDirty = true;
m_fillStyleDirty = true;
+ int imageAlpha = clampedAlphaForBlending(alpha);
+ m_imagePaint.setAlpha(imageAlpha > 255 ? 255 : imageAlpha);
}
void CanvasRenderingContext2DState::clipPath(const SkPath& path, AntiAliasingMode antiAliasingMode)
@@ -369,6 +390,7 @@ void CanvasRenderingContext2DState::setGlobalComposite(SkXfermode::Mode mode)
{
m_strokePaint.setXfermodeMode(mode);
m_fillPaint.setXfermodeMode(mode);
+ m_imagePaint.setXfermodeMode(mode);
}
SkXfermode::Mode CanvasRenderingContext2DState::globalComposite() const
@@ -385,11 +407,12 @@ void CanvasRenderingContext2DState::setImageSmoothingEnabled(bool enabled)
SkFilterQuality filterQuality = enabled ? kLow_SkFilterQuality : kNone_SkFilterQuality;
m_strokePaint.setFilterQuality(filterQuality);
m_fillPaint.setFilterQuality(filterQuality);
+ m_imagePaint.setFilterQuality(filterQuality);
}
bool CanvasRenderingContext2DState::imageSmoothingEnabled() const
{
- return m_strokePaint.getFilterQuality() == kLow_SkFilterQuality;
+ return m_imagePaint.getFilterQuality() == kLow_SkFilterQuality;
}
bool CanvasRenderingContext2DState::shouldDrawShadows() const
@@ -400,13 +423,22 @@ bool CanvasRenderingContext2DState::shouldDrawShadows() const
const SkPaint* CanvasRenderingContext2DState::getPaint(PaintType paintType, ShadowMode shadowMode, ImageType imageType) const
{
SkPaint* paint;
- if (paintType == StrokePaintType) {
+ switch (paintType) {
+ case StrokePaintType:
updateLineDash();
updateStrokeStyle();
paint = &m_strokePaint;
- } else {
+ break;
+ default:
+ ASSERT_NOT_REACHED();
+ // no break on purpose: paint needs to be assigned to avoid compiler warning about uninitialized variable
+ case FillPaintType:
updateFillStyle();
paint = &m_fillPaint;
+ break;
+ case ImagePaintType:
+ paint = &m_imagePaint;
+ break;
}
if ((!shouldDrawShadows() && shadowMode == DrawShadowAndForeground) || shadowMode == DrawForegroundOnly) {

Powered by Google App Engine
This is Rietveld 408576698