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

Unified Diff: third_party/WebKit/Source/modules/canvas2d/BaseRenderingContext2D.h

Issue 1732923002: Revert of Pull up a subset of CanvasRenderingContext2D into BaseRenderingContext2D. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 10 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
« no previous file with comments | « no previous file | third_party/WebKit/Source/modules/canvas2d/BaseRenderingContext2D.cpp » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: third_party/WebKit/Source/modules/canvas2d/BaseRenderingContext2D.h
diff --git a/third_party/WebKit/Source/modules/canvas2d/BaseRenderingContext2D.h b/third_party/WebKit/Source/modules/canvas2d/BaseRenderingContext2D.h
deleted file mode 100644
index 9cccce49960514a23052e79ef0233ea0def6b92e..0000000000000000000000000000000000000000
--- a/third_party/WebKit/Source/modules/canvas2d/BaseRenderingContext2D.h
+++ /dev/null
@@ -1,291 +0,0 @@
-// Copyright 2016 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef BaseRenderingContext2D_h
-#define BaseRenderingContext2D_h
-
-#include "bindings/core/v8/UnionTypesCore.h"
-#include "bindings/modules/v8/UnionTypesModules.h"
-#include "core/html/canvas/CanvasRenderingContext.h"
-#include "modules/ModulesExport.h"
-#include "modules/canvas2d/CanvasGradient.h"
-#include "modules/canvas2d/CanvasPathMethods.h"
-#include "modules/canvas2d/CanvasRenderingContext2DState.h"
-#include "modules/canvas2d/CanvasStyle.h"
-#include "third_party/skia/include/core/SkCanvas.h"
-
-namespace blink {
-
-class CanvasImageSource;
-class Color;
-class Image;
-class ImageBuffer;
-class Path2D;
-class SVGMatrixTearOff;
-
-typedef HTMLImageElementOrHTMLVideoElementOrHTMLCanvasElementOrImageBitmap CanvasImageSourceUnion;
-
-class MODULES_EXPORT BaseRenderingContext2D : public WillBeGarbageCollectedMixin, public CanvasPathMethods {
-public:
- ~BaseRenderingContext2D() override;
-
- void strokeStyle(StringOrCanvasGradientOrCanvasPattern&) const;
- void setStrokeStyle(const StringOrCanvasGradientOrCanvasPattern&);
-
- void fillStyle(StringOrCanvasGradientOrCanvasPattern&) const;
- void setFillStyle(const StringOrCanvasGradientOrCanvasPattern&);
-
- double lineWidth() const;
- void setLineWidth(double);
-
- String lineCap() const;
- void setLineCap(const String&);
-
- String lineJoin() const;
- void setLineJoin(const String&);
-
- double miterLimit() const;
- void setMiterLimit(double);
-
- const Vector<double>& getLineDash() const;
- void setLineDash(const Vector<double>&);
-
- double lineDashOffset() const;
- void setLineDashOffset(double);
-
- double shadowOffsetX() const;
- void setShadowOffsetX(double);
-
- double shadowOffsetY() const;
- void setShadowOffsetY(double);
-
- double shadowBlur() const;
- void setShadowBlur(double);
-
- String shadowColor() const;
- void setShadowColor(const String&);
-
- double globalAlpha() const;
- void setGlobalAlpha(double);
-
- String globalCompositeOperation() const;
- void setGlobalCompositeOperation(const String&);
-
- String filter() const;
- void setFilter(const String&);
-
- void save();
- void restore();
-
- PassRefPtrWillBeRawPtr<SVGMatrixTearOff> currentTransform() const;
- void setCurrentTransform(PassRefPtrWillBeRawPtr<SVGMatrixTearOff>);
-
- void scale(double sx, double sy);
- void rotate(double angleInRadians);
- void translate(double tx, double ty);
- void transform(double m11, double m12, double m21, double m22, double dx, double dy);
- void setTransform(double m11, double m12, double m21, double m22, double dx, double dy);
- void resetTransform();
-
- void beginPath();
-
- void fill(const String& winding = "nonzero");
- void fill(Path2D*, const String& winding = "nonzero");
- void stroke();
- void stroke(Path2D*);
- void clip(const String& winding = "nonzero");
- void clip(Path2D*, const String& winding = "nonzero");
-
- bool isPointInPath(const double x, const double y, const String& winding = "nonzero");
- bool isPointInPath(Path2D*, const double x, const double y, const String& winding = "nonzero");
- bool isPointInStroke(const double x, const double y);
- bool isPointInStroke(Path2D*, const double x, const double y);
-
- void clearRect(double x, double y, double width, double height);
- void fillRect(double x, double y, double width, double height);
- void strokeRect(double x, double y, double width, double height);
-
- void drawImage(const CanvasImageSourceUnion&, double x, double y, ExceptionState&);
- void drawImage(const CanvasImageSourceUnion&, double x, double y, double width, double height, ExceptionState&);
- void drawImage(const CanvasImageSourceUnion&, double sx, double sy, double sw, double sh, double dx, double dy, double dw, double dh, ExceptionState&);
- void drawImage(CanvasImageSource*, double sx, double sy, double sw, double sh, double dx, double dy, double dw, double dh, ExceptionState&);
-
- CanvasGradient* createLinearGradient(double x0, double y0, double x1, double y1);
- CanvasGradient* createRadialGradient(double x0, double y0, double r0, double x1, double y1, double r1, ExceptionState&);
- CanvasPattern* createPattern(const CanvasImageSourceUnion&, const String& repetitionType, ExceptionState&);
-
- ImageData* createImageData(ImageData*) const;
- ImageData* createImageData(double width, double height, ExceptionState&) const;
- ImageData* getImageData(double sx, double sy, double sw, double sh, ExceptionState&) const;
- void putImageData(ImageData*, double dx, double dy, ExceptionState&);
- void putImageData(ImageData*, double dx, double dy, double dirtyX, double dirtyY, double dirtyWidth, double dirtyHeight, ExceptionState&);
-
- bool imageSmoothingEnabled() const;
- void setImageSmoothingEnabled(bool);
- String imageSmoothingQuality() const;
- void setImageSmoothingQuality(const String&);
-
- virtual bool originClean() const = 0;
- virtual void setOriginTainted() = 0;
- virtual bool wouldTaintOrigin(CanvasImageSource*) = 0;
-
- virtual int width() const = 0;
- virtual int height() const = 0;
-
- virtual bool hasImageBuffer() const = 0;
- virtual ImageBuffer* imageBuffer() const = 0;
-
- virtual bool parseColorOrCurrentColor(Color&, const String& colorString) const = 0;
-
- virtual SkCanvas* drawingCanvas() const = 0;
- virtual SkCanvas* existingDrawingCanvas() const = 0;
- virtual void disableDeferral(DisableDeferralReason) = 0;
-
- virtual AffineTransform baseTransform() const = 0;
-
- virtual void didDraw(const SkIRect& dirtyRect) = 0;
-
- virtual bool stateHasFilter() = 0;
- virtual SkImageFilter* stateGetFilter() = 0;
-
- virtual void validateStateStack() = 0;
-
- virtual bool hasAlpha() const = 0;
-
- virtual bool isContextLost() const = 0;
-
- DECLARE_VIRTUAL_TRACE();
-
-protected:
- BaseRenderingContext2D();
-
- CanvasRenderingContext2DState& modifiableState();
- const CanvasRenderingContext2DState& state() const { return *m_stateStack.last(); }
-
- bool computeDirtyRect(const FloatRect& localBounds, SkIRect*);
- bool computeDirtyRect(const FloatRect& localBounds, const SkIRect& transformedClipBounds, SkIRect*);
-
- template<typename DrawFunc, typename ContainsFunc>
- bool draw(const DrawFunc&, const ContainsFunc&, const SkRect& bounds, CanvasRenderingContext2DState::PaintType, CanvasRenderingContext2DState::ImageType = CanvasRenderingContext2DState::NoImage);
-
- void inflateStrokeRect(FloatRect&) const;
-
- enum DrawType {
- ClipFill, // Fill that is already known to cover the current clip
- UntransformedUnclippedFill
- };
-
- void checkOverdraw(const SkRect&, const SkPaint*, CanvasRenderingContext2DState::ImageType, DrawType);
-
- WillBeHeapVector<OwnPtrWillBeMember<CanvasRenderingContext2DState>> m_stateStack;
- AntiAliasingMode m_clipAntialiasing;
-
-private:
- void realizeSaves();
-
- bool shouldDrawImageAntialiased(const FloatRect& destRect) const;
-
- void drawPathInternal(const Path&, CanvasRenderingContext2DState::PaintType, SkPath::FillType = SkPath::kWinding_FillType);
- void drawImageInternal(SkCanvas*, CanvasImageSource*, Image*, const FloatRect& srcRect, const FloatRect& dstRect, const SkPaint*);
- void clipInternal(const Path&, const String& windingRuleString);
-
- bool isPointInPathInternal(const Path&, const double x, const double y, const String& windingRuleString);
- bool isPointInStrokeInternal(const Path&, const double x, const double y);
-
- static bool isFullCanvasCompositeMode(SkXfermode::Mode);
-
- template<typename DrawFunc>
- void compositedDraw(const DrawFunc&, SkCanvas*, CanvasRenderingContext2DState::PaintType, CanvasRenderingContext2DState::ImageType);
-
- void clearCanvas();
- bool rectContainsTransformedRect(const FloatRect&, const SkIRect&) const;
-};
-
-template<typename DrawFunc, typename ContainsFunc>
-bool BaseRenderingContext2D::draw(const DrawFunc& drawFunc, const ContainsFunc& drawCoversClipBounds, const SkRect& bounds, CanvasRenderingContext2DState::PaintType paintType, CanvasRenderingContext2DState::ImageType imageType)
-{
- if (!state().isTransformInvertible())
- return false;
-
- SkIRect clipBounds;
- if (!drawingCanvas() || !drawingCanvas()->getClipDeviceBounds(&clipBounds))
- return false;
-
- // If gradient size is zero, then paint nothing.
- CanvasStyle* style = state().style(paintType);
- if (style) {
- CanvasGradient* gradient = style->canvasGradient();
- if (gradient && gradient->gradient()->isZeroSize())
- return false;
- }
-
- if (isFullCanvasCompositeMode(state().globalComposite()) || stateHasFilter()) {
- compositedDraw(drawFunc, drawingCanvas(), paintType, imageType);
- didDraw(clipBounds);
- } else if (state().globalComposite() == SkXfermode::kSrc_Mode) {
- clearCanvas(); // takes care of checkOverdraw()
- const SkPaint* paint = state().getPaint(paintType, DrawForegroundOnly, imageType);
- drawFunc(drawingCanvas(), paint);
- didDraw(clipBounds);
- } else {
- SkIRect dirtyRect;
- if (computeDirtyRect(bounds, clipBounds, &dirtyRect)) {
- const SkPaint* paint = state().getPaint(paintType, DrawShadowAndForeground, imageType);
- if (paintType != CanvasRenderingContext2DState::StrokePaintType && drawCoversClipBounds(clipBounds))
- checkOverdraw(bounds, paint, imageType, ClipFill);
- drawFunc(drawingCanvas(), paint);
- didDraw(dirtyRect);
- }
- }
- return true;
-}
-
-template<typename DrawFunc>
-void BaseRenderingContext2D::compositedDraw(const DrawFunc& drawFunc, SkCanvas* c, CanvasRenderingContext2DState::PaintType paintType, CanvasRenderingContext2DState::ImageType imageType)
-{
- SkImageFilter* filter = stateGetFilter();
- ASSERT(isFullCanvasCompositeMode(state().globalComposite()) || filter);
- SkMatrix ctm = c->getTotalMatrix();
- c->resetMatrix();
- SkPaint compositePaint;
- compositePaint.setXfermodeMode(state().globalComposite());
- if (state().shouldDrawShadows()) {
- // unroll into two independently composited passes if drawing shadows
- SkPaint shadowPaint = *state().getPaint(paintType, DrawShadowOnly, imageType);
- int saveCount = c->getSaveCount();
- if (filter) {
- SkPaint filterPaint;
- filterPaint.setImageFilter(filter);
- // TODO(junov): crbug.com/502921 We could use primitive bounds if we knew that the filter
- // does not affect transparent black regions.
- c->saveLayer(nullptr, &shadowPaint);
- c->saveLayer(nullptr, &filterPaint);
- SkPaint foregroundPaint = *state().getPaint(paintType, DrawForegroundOnly, imageType);
- c->setMatrix(ctm);
- drawFunc(c, &foregroundPaint);
- } else {
- ASSERT(isFullCanvasCompositeMode(state().globalComposite()));
- c->saveLayer(nullptr, &compositePaint);
- shadowPaint.setXfermodeMode(SkXfermode::kSrcOver_Mode);
- c->setMatrix(ctm);
- drawFunc(c, &shadowPaint);
- }
- c->restoreToCount(saveCount);
- }
-
- compositePaint.setImageFilter(filter);
- // TODO(junov): crbug.com/502921 We could use primitive bounds if we knew that the filter
- // does not affect transparent black regions *and* !isFullCanvasCompositeMode
- c->saveLayer(nullptr, &compositePaint);
- SkPaint foregroundPaint = *state().getPaint(paintType, DrawForegroundOnly, imageType);
- foregroundPaint.setXfermodeMode(SkXfermode::kSrcOver_Mode);
- c->setMatrix(ctm);
- drawFunc(c, &foregroundPaint);
- c->restore();
- c->setMatrix(ctm);
-}
-
-} // namespace blink
-
-#endif // BaseRenderingContext2D_h
« no previous file with comments | « no previous file | third_party/WebKit/Source/modules/canvas2d/BaseRenderingContext2D.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698