Index: sky/engine/core/html/canvas/CanvasRenderingContext2D.h |
diff --git a/sky/engine/core/html/canvas/CanvasRenderingContext2D.h b/sky/engine/core/html/canvas/CanvasRenderingContext2D.h |
deleted file mode 100644 |
index 2c98768395e9d65e54ec1ecc4e2811f48c4be336..0000000000000000000000000000000000000000 |
--- a/sky/engine/core/html/canvas/CanvasRenderingContext2D.h |
+++ /dev/null |
@@ -1,359 +0,0 @@ |
-/* |
- * Copyright (C) 2006, 2007, 2009, 2010, 2011, 2012 Apple Inc. All rights reserved. |
- * |
- * Redistribution and use in source and binary forms, with or without |
- * modification, are permitted provided that the following conditions |
- * are met: |
- * 1. Redistributions of source code must retain the above copyright |
- * notice, this list of conditions and the following disclaimer. |
- * 2. Redistributions in binary form must reproduce the above copyright |
- * notice, this list of conditions and the following disclaimer in the |
- * documentation and/or other materials provided with the distribution. |
- * |
- * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY |
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR |
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR |
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, |
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, |
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR |
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY |
- * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
- */ |
- |
-#ifndef SKY_ENGINE_CORE_HTML_CANVAS_CANVASRENDERINGCONTEXT2D_H_ |
-#define SKY_ENGINE_CORE_HTML_CANVAS_CANVASRENDERINGCONTEXT2D_H_ |
- |
-#include "sky/engine/tonic/dart_wrappable.h" |
-#include "sky/engine/core/css/CSSFontSelectorClient.h" |
-#include "sky/engine/core/html/canvas/Canvas2DContextAttributes.h" |
-#include "sky/engine/core/html/canvas/CanvasPathMethods.h" |
-#include "sky/engine/core/html/canvas/CanvasRenderingContext.h" |
-#include "sky/engine/core/html/canvas/HitRegion.h" |
-#include "sky/engine/platform/fonts/Font.h" |
-#include "sky/engine/platform/geometry/FloatSize.h" |
-#include "sky/engine/platform/graphics/Color.h" |
-#include "sky/engine/platform/graphics/GraphicsTypes.h" |
-#include "sky/engine/platform/graphics/ImageBuffer.h" |
-#include "sky/engine/platform/graphics/Path.h" |
-#include "sky/engine/platform/transforms/AffineTransform.h" |
-#include "sky/engine/wtf/HashMap.h" |
-#include "sky/engine/wtf/Vector.h" |
-#include "sky/engine/wtf/text/WTFString.h" |
- |
-namespace blink { class WebLayer; } |
- |
-namespace blink { |
- |
-class CanvasImageSource; |
-class CanvasGradient; |
-class CanvasPattern; |
-class CanvasStyle; |
-class Path2D; |
-class Element; |
-class ExceptionState; |
-class FloatRect; |
-class GraphicsContext; |
-class HTMLCanvasElement; |
-class HTMLImageElement; |
-class ImageBitmap; |
-class ImageData; |
-class TextMetrics; |
- |
-typedef HashMap<String, RefPtr<MutableStylePropertySet> > MutableStylePropertyMap; |
- |
-class CanvasRenderingContext2D final: public CanvasRenderingContext, public DartWrappable, public CanvasPathMethods { |
- DEFINE_WRAPPERTYPEINFO(); |
-public: |
- static PassOwnPtr<CanvasRenderingContext2D> create(HTMLCanvasElement* canvas, const Canvas2DContextAttributes* attrs) |
- { |
- return adoptPtr(new CanvasRenderingContext2D(canvas, attrs)); |
- } |
- virtual ~CanvasRenderingContext2D(); |
- |
- CanvasStyle* strokeStyle() const; |
- void setStrokeStyle(PassRefPtr<CanvasStyle>); |
- |
- CanvasStyle* fillStyle() const; |
- void setFillStyle(PassRefPtr<CanvasStyle>); |
- |
- float lineWidth() const; |
- void setLineWidth(float); |
- |
- String lineCap() const; |
- void setLineCap(const String&); |
- |
- String lineJoin() const; |
- void setLineJoin(const String&); |
- |
- float miterLimit() const; |
- void setMiterLimit(float); |
- |
- const Vector<float>& getLineDash() const; |
- void setLineDash(const Vector<float>&); |
- |
- float lineDashOffset() const; |
- void setLineDashOffset(float); |
- |
- float shadowOffsetX() const; |
- void setShadowOffsetX(float); |
- |
- float shadowOffsetY() const; |
- void setShadowOffsetY(float); |
- |
- float shadowBlur() const; |
- void setShadowBlur(float); |
- |
- String shadowColor() const; |
- void setShadowColor(const String&); |
- |
- bool isContextLost() const; |
- |
- void save() { ++m_stateStack.last()->m_unrealizedSaveCount; } |
- void restore(); |
- |
- void scale(float sx, float sy); |
- void rotate(float angleInRadians); |
- void translate(float tx, float ty); |
- void transform(float m11, float m12, float m21, float m22, float dx, float dy); |
- void setTransform(float m11, float m12, float m21, float m22, float dx, float dy); |
- void resetTransform(); |
- |
- String strokeColor(); |
- void setStrokeColor(const String& color); |
- void setStrokeColor(float grayLevel); |
- void setStrokeColor(const String& color, float alpha); |
- void setStrokeColor(float grayLevel, float alpha); |
- void setStrokeColor(float r, float g, float b, float a); |
- void setStrokeColor(float c, float m, float y, float k, float a); |
- |
- String fillColor(); |
- void setFillColor(const String& color); |
- void setFillColor(float grayLevel); |
- void setFillColor(const String& color, float alpha); |
- void setFillColor(float grayLevel, float alpha); |
- void setFillColor(float r, float g, float b, float a); |
- void setFillColor(float c, float m, float y, float k, float a); |
- |
- 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 float x, const float y, const String& winding = "nonzero"); |
- bool isPointInPath(Path2D*, const float x, const float y, const String& winding = "nonzero"); |
- bool isPointInStroke(const float x, const float y); |
- bool isPointInStroke(Path2D*, const float x, const float y); |
- |
- void clearRect(float x, float y, float width, float height); |
- void fillRect(float x, float y, float width, float height); |
- void strokeRect(float x, float y, float width, float height); |
- |
- void setShadow(float width, float height, float blur); |
- void setShadow(float width, float height, float blur, const String& color); |
- void setShadow(float width, float height, float blur, float grayLevel); |
- void setShadow(float width, float height, float blur, const String& color, float alpha); |
- void setShadow(float width, float height, float blur, float grayLevel, float alpha); |
- void setShadow(float width, float height, float blur, float r, float g, float b, float a); |
- void setShadow(float width, float height, float blur, float c, float m, float y, float k, float a); |
- |
- void clearShadow(); |
- |
- void drawImage(CanvasImageSource*, float x, float y, ExceptionState&); |
- void drawImage(CanvasImageSource*, float x, float y, float width, float height, ExceptionState&); |
- void drawImage(CanvasImageSource*, float sx, float sy, float sw, float sh, float dx, float dy, float dw, float dh, ExceptionState&); |
- |
- void drawImageFromRect(HTMLImageElement*, float sx = 0, float sy = 0, float sw = 0, float sh = 0, |
- float dx = 0, float dy = 0, float dw = 0, float dh = 0, const String& compositeOperation = emptyString()); |
- |
- void setCompositeOperation(const String&); |
- |
- PassRefPtr<CanvasGradient> createLinearGradient(float x0, float y0, float x1, float y1); |
- PassRefPtr<CanvasGradient> createRadialGradient(float x0, float y0, float r0, float x1, float y1, float r1, ExceptionState&); |
- PassRefPtr<CanvasPattern> createPattern(CanvasImageSource*, const String& repetitionType, ExceptionState&); |
- |
- PassRefPtr<ImageData> createImageData(PassRefPtr<ImageData>) const; |
- PassRefPtr<ImageData> createImageData(float width, float height, ExceptionState&) const; |
- PassRefPtr<ImageData> getImageData(float sx, float sy, float sw, float sh, ExceptionState&) const; |
- void putImageData(ImageData*, float dx, float dy); |
- void putImageData(ImageData*, float dx, float dy, float dirtyX, float dirtyY, float dirtyWidth, float dirtyHeight); |
- |
- void reset(); |
- |
- String font() const; |
- void setFont(const String&); |
- |
- String textAlign() const; |
- void setTextAlign(const String&); |
- |
- String textBaseline() const; |
- void setTextBaseline(const String&); |
- |
- String direction() const; |
- void setDirection(const String&); |
- |
- void fillText(const String& text, float x, float y); |
- void fillText(const String& text, float x, float y, float maxWidth); |
- void strokeText(const String& text, float x, float y); |
- void strokeText(const String& text, float x, float y, float maxWidth); |
- PassRefPtr<TextMetrics> measureText(const String& text); |
- |
- LineCap getLineCap() const { return state().m_lineCap; } |
- LineJoin getLineJoin() const { return state().m_lineJoin; } |
- |
- bool imageSmoothingEnabled() const; |
- void setImageSmoothingEnabled(bool); |
- |
- PassRefPtr<Canvas2DContextAttributes> getContextAttributes() const; |
- |
- void drawFocusIfNeeded(Element*); |
- void drawFocusIfNeeded(Path2D*, Element*); |
- |
- void addHitRegion(ExceptionState&); |
- void removeHitRegion(const String& id); |
- void clearHitRegions(); |
- HitRegion* hitRegionAtPoint(const LayoutPoint&); |
- unsigned hitRegionsCount() const; |
- |
- void loseContext(); |
- void restoreContext(); |
- |
-private: |
- enum Direction { |
- DirectionInherit, |
- DirectionRTL, |
- DirectionLTR |
- }; |
- |
- class State final : public CSSFontSelectorClient { |
- public: |
- State(); |
- virtual ~State(); |
- |
- State(const State&); |
- State& operator=(const State&); |
- |
- // CSSFontSelectorClient implementation |
- virtual void fontsNeedUpdate(CSSFontSelector*) override; |
- |
- unsigned m_unrealizedSaveCount; |
- |
- String m_unparsedStrokeColor; |
- String m_unparsedFillColor; |
- RefPtr<CanvasStyle> m_strokeStyle; |
- RefPtr<CanvasStyle> m_fillStyle; |
- float m_lineWidth; |
- LineCap m_lineCap; |
- LineJoin m_lineJoin; |
- float m_miterLimit; |
- FloatSize m_shadowOffset; |
- float m_shadowBlur; |
- RGBA32 m_shadowColor; |
- AffineTransform m_transform; |
- bool m_invertibleCTM; |
- Vector<float> m_lineDash; |
- float m_lineDashOffset; |
- bool m_imageSmoothingEnabled; |
- |
- // Text state. |
- TextAlign m_textAlign; |
- TextBaseline m_textBaseline; |
- Direction m_direction; |
- |
- String m_unparsedFont; |
- Font m_font; |
- bool m_realizedFont; |
- |
- bool m_hasClip; |
- }; |
- |
- CanvasRenderingContext2D(HTMLCanvasElement*, const Canvas2DContextAttributes* attrs); |
- |
- State& modifiableState() { ASSERT(!state().m_unrealizedSaveCount); return *m_stateStack.last(); } |
- const State& state() const { return *m_stateStack.last(); } |
- |
- void applyLineDash() const; |
- void setShadow(const FloatSize& offset, float blur, RGBA32 color); |
- void applyShadow(); |
- bool shouldDrawShadows() const; |
- |
- void dispatchContextLostEvent(Timer<CanvasRenderingContext2D>*); |
- void dispatchContextRestoredEvent(Timer<CanvasRenderingContext2D>*); |
- void tryRestoreContextEvent(Timer<CanvasRenderingContext2D>*); |
- |
- bool computeDirtyRect(const FloatRect& localBounds, FloatRect*); |
- bool computeDirtyRect(const FloatRect& localBounds, const FloatRect& transformedClipBounds, FloatRect*); |
- void didDraw(const FloatRect&); |
- |
- GraphicsContext* drawingContext() const; |
- |
- void unwindStateStack(); |
- void realizeSaves(GraphicsContext*); |
- |
- void applyStrokePattern(); |
- void applyFillPattern(); |
- |
- void drawImageInternal(CanvasImageSource*, float sx, float sy, float sw, float sh, float dx, float dy, float dw, float dh, ExceptionState&, CompositeOperator, blink::WebBlendMode, GraphicsContext* = 0); |
- |
- void fillInternal(const Path&, const String& windingRuleString); |
- void strokeInternal(const Path&); |
- void clipInternal(const Path&, const String& windingRuleString); |
- |
- bool isPointInPathInternal(const Path&, const float x, const float y, const String& windingRuleString); |
- bool isPointInStrokeInternal(const Path&, const float x, const float y); |
- |
- void drawTextInternal(const String& text, float x, float y, bool fill, float maxWidth = 0, bool useMaxWidth = false); |
- |
- const Font& accessFont(); |
- int getFontBaseline(const FontMetrics&) const; |
- |
- void clearCanvas(); |
- bool rectContainsTransformedRect(const FloatRect&, const FloatRect&) const; |
- |
- void inflateStrokeRect(FloatRect&) const; |
- |
- template<class T> void fullCanvasCompositedFill(const T&); |
- template<class T> void fullCanvasCompositedStroke(const T&); |
- template<class T> void fullCanvasCompositedDrawImage(T*, const FloatRect&, const FloatRect&, CompositeOperator); |
- |
- void drawFocusIfNeededInternal(const Path&, Element*); |
- bool focusRingCallIsValid(const Path&, Element*); |
- void drawFocusRing(const Path&); |
- |
- void addHitRegionInternal(const HitRegionOptions&, ExceptionState&); |
- bool hasClip() { return state().m_hasClip; } |
- |
- void validateStateStack(); |
- |
- virtual bool is2d() const override { return true; } |
- virtual bool isAccelerated() const override; |
- virtual void setIsHidden(bool) override; |
- |
- virtual bool isTransformInvertible() const override { return state().m_invertibleCTM; } |
- |
- virtual blink::WebLayer* platformLayer() const override; |
- TextDirection toTextDirection(Direction, RenderStyle** computedStyle = nullptr) const; |
- |
- Vector<OwnPtr<State> > m_stateStack; |
- OwnPtr<HitRegionManager> m_hitRegionManager; |
- bool m_isContextLost; |
- bool m_contextRestorable; |
- Canvas2DContextStorage m_storageMode; |
- MutableStylePropertyMap m_fetchedFonts; |
- unsigned m_tryRestoreContextAttemptCount; |
- Timer<CanvasRenderingContext2D> m_dispatchContextLostEventTimer; |
- Timer<CanvasRenderingContext2D> m_dispatchContextRestoredEventTimer; |
- Timer<CanvasRenderingContext2D> m_tryRestoreContextEventTimer; |
-}; |
- |
-DEFINE_TYPE_CASTS(CanvasRenderingContext2D, CanvasRenderingContext, context, context->is2d(), context.is2d()); |
- |
-} // namespace blink |
- |
-#endif // SKY_ENGINE_CORE_HTML_CANVAS_CANVASRENDERINGCONTEXT2D_H_ |