15c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)/* 25c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * Copyright (C) 2006, 2007, 2009, 2010, 2011, 2012 Apple Inc. All rights reserved. 35c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * 45c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * Redistribution and use in source and binary forms, with or without 55c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * modification, are permitted provided that the following conditions 65c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * are met: 75c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * 1. Redistributions of source code must retain the above copyright 85c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * notice, this list of conditions and the following disclaimer. 95c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * 2. Redistributions in binary form must reproduce the above copyright 105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * notice, this list of conditions and the following disclaimer in the 115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * documentation and/or other materials provided with the distribution. 125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * 135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY 145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR 175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY 215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#ifndef CanvasRenderingContext2D_h 275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define CanvasRenderingContext2D_h 285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 29197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch#include "bindings/core/v8/ScriptWrappable.h" 3009380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)#include "core/css/CSSFontSelectorClient.h" 3153e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)#include "core/html/canvas/Canvas2DContextAttributes.h" 3253e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)#include "core/html/canvas/CanvasPathMethods.h" 3353e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)#include "core/html/canvas/CanvasRenderingContext.h" 34197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch#include "core/html/canvas/HitRegion.h" 35d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)#include "core/svg/SVGMatrixTearOff.h" 36a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles)#include "platform/fonts/Font.h" 37f79f16f17ddc4f842d7b7a38603e280e94be826aTorne (Richard Coles)#include "platform/graphics/Color.h" 38a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles)#include "platform/geometry/FloatSize.h" 39f79f16f17ddc4f842d7b7a38603e280e94be826aTorne (Richard Coles)#include "platform/graphics/GraphicsTypes.h" 40a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles)#include "platform/graphics/ImageBuffer.h" 41a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles)#include "platform/graphics/Path.h" 421e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles)#include "platform/transforms/AffineTransform.h" 43521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles)#include "wtf/HashMap.h" 44521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles)#include "wtf/Vector.h" 45521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles)#include "wtf/text/WTFString.h" 465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 4751b2906e11752df6c18351cf520e30522d3b53a1Torne (Richard Coles)namespace blink { class WebLayer; } 485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 49c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)namespace blink { 505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 51d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)class CanvasImageSource; 525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)class CanvasGradient; 535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)class CanvasPattern; 545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)class CanvasStyle; 55d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)class Path2D; 56f5e4ad553afbc08dd2e729bb77e937a9a94d5827Torne (Richard Coles)class Element; 57df95704c49daea886ddad70775bda23618d6274dBen Murdochclass ExceptionState; 585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)class FloatRect; 595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)class GraphicsContext; 605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)class HTMLCanvasElement; 615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)class HTMLImageElement; 625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)class HTMLVideoElement; 637242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucciclass HitRegionOptions; 64e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdochclass ImageBitmap; 655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)class ImageData; 665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)class TextMetrics; 675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 68f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liutypedef WillBeHeapHashMap<String, RefPtrWillBeMember<MutableStylePropertySet> > MutableStylePropertyMap; 695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 70f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liuclass CanvasRenderingContext2D FINAL: public CanvasRenderingContext, public ScriptWrappable, public CanvasPathMethods { 717242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci DEFINE_WRAPPERTYPEINFO(); 725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)public: 73f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu static PassOwnPtrWillBeRawPtr<CanvasRenderingContext2D> create(HTMLCanvasElement* canvas, const Canvas2DContextAttributes* attrs, bool usesCSSCompatibilityParseMode) 745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 75f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu return adoptPtrWillBeNoop(new CanvasRenderingContext2D(canvas, attrs, usesCSSCompatibilityParseMode)); 765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) virtual ~CanvasRenderingContext2D(); 785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) CanvasStyle* strokeStyle() const; 80c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) void setStrokeStyle(PassRefPtrWillBeRawPtr<CanvasStyle>); 815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) CanvasStyle* fillStyle() const; 83c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) void setFillStyle(PassRefPtrWillBeRawPtr<CanvasStyle>); 845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) float lineWidth() const; 865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) void setLineWidth(float); 875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) String lineCap() const; 895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) void setLineCap(const String&); 905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) String lineJoin() const; 925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) void setLineJoin(const String&); 935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) float miterLimit() const; 955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) void setMiterLimit(float); 965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) const Vector<float>& getLineDash() const; 985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) void setLineDash(const Vector<float>&); 995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) float lineDashOffset() const; 1015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) void setLineDashOffset(float); 1025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) float shadowOffsetX() const; 1045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) void setShadowOffsetX(float); 1055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) float shadowOffsetY() const; 1075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) void setShadowOffsetY(float); 1085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) float shadowBlur() const; 1105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) void setShadowBlur(float); 1115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) String shadowColor() const; 1135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) void setShadowColor(const String&); 1145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) float globalAlpha() const; 1165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) void setGlobalAlpha(float); 1175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 118aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch bool isContextLost() const; 119aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch 1205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) String globalCompositeOperation() const; 1215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) void setGlobalCompositeOperation(const String&); 1225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 12307a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch void save() { ++m_stateStack.last()->m_unrealizedSaveCount; } 1245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) void restore(); 1255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 126d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) PassRefPtr<SVGMatrixTearOff> currentTransform() const 1271e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) { 128d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) return SVGMatrixTearOff::create(state().m_transform); 1291e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) } 130a9984bf9ddc3cf73fdae3f29134a2bab379e7029Ben Murdoch void setCurrentTransform(PassRefPtr<SVGMatrixTearOff>); 1311e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) 1325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) void scale(float sx, float sy); 1335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) void rotate(float angleInRadians); 1345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) void translate(float tx, float ty); 1355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) void transform(float m11, float m12, float m21, float m22, float dx, float dy); 1365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) void setTransform(float m11, float m12, float m21, float m22, float dx, float dy); 1378abfc5808a4e34d6e03867af8bc440dee641886fTorne (Richard Coles) void resetTransform(); 1385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) void setStrokeColor(const String& color); 1405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) void setStrokeColor(float grayLevel); 1415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) void setStrokeColor(const String& color, float alpha); 1425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) void setStrokeColor(float grayLevel, float alpha); 1435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) void setStrokeColor(float r, float g, float b, float a); 1445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) void setStrokeColor(float c, float m, float y, float k, float a); 1455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) void setFillColor(const String& color); 1475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) void setFillColor(float grayLevel); 1485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) void setFillColor(const String& color, float alpha); 1495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) void setFillColor(float grayLevel, float alpha); 1505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) void setFillColor(float r, float g, float b, float a); 1515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) void setFillColor(float c, float m, float y, float k, float a); 1525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) void beginPath(); 1545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 155926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) void fill(const String& winding = "nonzero"); 15610f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch void fill(Path2D*, const String& winding = "nonzero"); 1575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) void stroke(); 1586f543c786fc42989f552b4daa774ca5ff32fa697Ben Murdoch void stroke(Path2D*); 159926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) void clip(const String& winding = "nonzero"); 16010f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch void clip(Path2D*, const String& winding = "nonzero"); 1615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 162926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) bool isPointInPath(const float x, const float y, const String& winding = "nonzero"); 16310f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch bool isPointInPath(Path2D*, const float x, const float y, const String& winding = "nonzero"); 164926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) bool isPointInStroke(const float x, const float y); 1656f543c786fc42989f552b4daa774ca5ff32fa697Ben Murdoch bool isPointInStroke(Path2D*, const float x, const float y); 1665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 167aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch void scrollPathIntoView(); 1686f543c786fc42989f552b4daa774ca5ff32fa697Ben Murdoch void scrollPathIntoView(Path2D*); 169aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch 1705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) void clearRect(float x, float y, float width, float height); 1715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) void fillRect(float x, float y, float width, float height); 1725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) void strokeRect(float x, float y, float width, float height); 1735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) void setShadow(float width, float height, float blur); 1755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) void setShadow(float width, float height, float blur, const String& color); 1765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) void setShadow(float width, float height, float blur, float grayLevel); 1775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) void setShadow(float width, float height, float blur, const String& color, float alpha); 1785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) void setShadow(float width, float height, float blur, float grayLevel, float alpha); 1795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) void setShadow(float width, float height, float blur, float r, float g, float b, float a); 1805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) void setShadow(float width, float height, float blur, float c, float m, float y, float k, float a); 1815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) void clearShadow(); 1835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 184d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) void drawImage(CanvasImageSource*, float x, float y, ExceptionState&); 185d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) void drawImage(CanvasImageSource*, float x, float y, float width, float height, ExceptionState&); 186d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) void drawImage(CanvasImageSource*, float sx, float sy, float sw, float sh, float dx, float dy, float dw, float dh, ExceptionState&); 1875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) void drawImageFromRect(HTMLImageElement*, float sx = 0, float sy = 0, float sw = 0, float sh = 0, 1895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) float dx = 0, float dy = 0, float dw = 0, float dh = 0, const String& compositeOperation = emptyString()); 1905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) void setAlpha(float); 1925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) void setCompositeOperation(const String&); 1945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 195c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) PassRefPtrWillBeRawPtr<CanvasGradient> createLinearGradient(float x0, float y0, float x1, float y1); 196c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) PassRefPtrWillBeRawPtr<CanvasGradient> createRadialGradient(float x0, float y0, float r0, float x1, float y1, float r1, ExceptionState&); 197c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) PassRefPtrWillBeRawPtr<CanvasPattern> createPattern(CanvasImageSource*, const String& repetitionType, ExceptionState&); 1985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1996f543c786fc42989f552b4daa774ca5ff32fa697Ben Murdoch PassRefPtrWillBeRawPtr<ImageData> createImageData(PassRefPtrWillBeRawPtr<ImageData>) const; 200aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch PassRefPtrWillBeRawPtr<ImageData> createImageData(float width, float height, ExceptionState&) const; 201aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch PassRefPtrWillBeRawPtr<ImageData> getImageData(float sx, float sy, float sw, float sh, ExceptionState&) const; 202f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu void putImageData(ImageData*, float dx, float dy); 203f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu void putImageData(ImageData*, float dx, float dy, float dirtyX, float dirtyY, float dirtyWidth, float dirtyHeight); 2045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) void reset(); 2065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) String font() const; 2085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) void setFont(const String&); 2095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) String textAlign() const; 2115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) void setTextAlign(const String&); 2125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) String textBaseline() const; 2145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) void setTextBaseline(const String&); 2155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2167242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci String direction() const; 2177242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci void setDirection(const String&); 2187242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci 2195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) void fillText(const String& text, float x, float y); 2205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) void fillText(const String& text, float x, float y, float maxWidth); 2215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) void strokeText(const String& text, float x, float y); 2225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) void strokeText(const String& text, float x, float y, float maxWidth); 223c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) PassRefPtrWillBeRawPtr<TextMetrics> measureText(const String& text); 2245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) LineCap getLineCap() const { return state().m_lineCap; } 2265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) LineJoin getLineJoin() const { return state().m_lineJoin; } 2275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2281fad5ca6c42d689812b66fc493992aa6d747a6fbBen Murdoch bool imageSmoothingEnabled() const; 2291fad5ca6c42d689812b66fc493992aa6d747a6fbBen Murdoch void setImageSmoothingEnabled(bool); 2305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 231c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) PassRefPtrWillBeRawPtr<Canvas2DContextAttributes> getContextAttributes() const; 23253e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) 23307a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch void drawFocusIfNeeded(Element*); 23410f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch void drawFocusIfNeeded(Path2D*, Element*); 235f5e4ad553afbc08dd2e729bb77e937a9a94d5827Torne (Richard Coles) 2367242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci void addHitRegion(const HitRegionOptions&, ExceptionState&); 237197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch void removeHitRegion(const String& id); 238197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch void clearHitRegions(); 239197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch HitRegion* hitRegionAtPoint(const LayoutPoint&); 240197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch unsigned hitRegionsCount() const; 241197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch 242aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch void loseContext(); 243aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch void restoreContext(); 244aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch 245f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu virtual void trace(Visitor*) OVERRIDE; 246f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu 2475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)private: 2487242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci enum Direction { 2497242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci DirectionInherit, 2507242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci DirectionRTL, 2517242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci DirectionLTR 2527242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci }; 2537242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci 25407a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch class State FINAL : public CSSFontSelectorClient { 25507a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch public: 2565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) State(); 2575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) virtual ~State(); 2585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) State(const State&); 2605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) State& operator=(const State&); 2615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 26209380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) // CSSFontSelectorClient implementation 26309380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) virtual void fontsNeedUpdate(CSSFontSelector*) OVERRIDE; 26409380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) 265c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) virtual void trace(Visitor*) OVERRIDE; 26607a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch 26709380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) unsigned m_unrealizedSaveCount; 2685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) String m_unparsedStrokeColor; 2705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) String m_unparsedFillColor; 271c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) RefPtrWillBeMember<CanvasStyle> m_strokeStyle; 272c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles) RefPtrWillBeMember<CanvasStyle> m_fillStyle; 2735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) float m_lineWidth; 2745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) LineCap m_lineCap; 2755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) LineJoin m_lineJoin; 2765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) float m_miterLimit; 2775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) FloatSize m_shadowOffset; 2785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) float m_shadowBlur; 2795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) RGBA32 m_shadowColor; 2805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) float m_globalAlpha; 2815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) CompositeOperator m_globalComposite; 282a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) blink::WebBlendMode m_globalBlend; 2835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) AffineTransform m_transform; 2845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) bool m_invertibleCTM; 2855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) Vector<float> m_lineDash; 2865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) float m_lineDashOffset; 2875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) bool m_imageSmoothingEnabled; 2885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Text state. 2905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) TextAlign m_textAlign; 2915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) TextBaseline m_textBaseline; 2927242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci Direction m_direction; 2935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) String m_unparsedFont; 2955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) Font m_font; 2965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) bool m_realizedFont; 297197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch 298197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch bool m_hasClip; 2995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }; 3005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 30153e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) CanvasRenderingContext2D(HTMLCanvasElement*, const Canvas2DContextAttributes* attrs, bool usesCSSCompatibilityParseMode); 3025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 30307a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch State& modifiableState() { ASSERT(!state().m_unrealizedSaveCount); return *m_stateStack.last(); } 30407a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch const State& state() const { return *m_stateStack.last(); } 3055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 3065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) void applyLineDash() const; 3075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) void setShadow(const FloatSize& offset, float blur, RGBA32 color); 3085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) void applyShadow(); 3095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) bool shouldDrawShadows() const; 3105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 311aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch void dispatchContextLostEvent(Timer<CanvasRenderingContext2D>*); 312aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch void dispatchContextRestoredEvent(Timer<CanvasRenderingContext2D>*); 313aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch void tryRestoreContextEvent(Timer<CanvasRenderingContext2D>*); 314aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch 31506f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles) bool computeDirtyRect(const FloatRect& localBounds, FloatRect*); 31606f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles) bool computeDirtyRect(const FloatRect& localBounds, const FloatRect& transformedClipBounds, FloatRect*); 31706f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles) void didDraw(const FloatRect&); 3185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 3195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) GraphicsContext* drawingContext() const; 3205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 3215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) void unwindStateStack(); 3227242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci void realizeSaves(GraphicsContext*); 3235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 3245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) void applyStrokePattern(); 3255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) void applyFillPattern(); 3265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 3277242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci 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); 328d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) void drawVideo(HTMLVideoElement*, FloatRect srcRect, FloatRect dstRect); 329d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) 330d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) void fillInternal(const Path&, const String& windingRuleString); 331d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) void strokeInternal(const Path&); 332d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) void clipInternal(const Path&, const String& windingRuleString); 333d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) 334d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) bool isPointInPathInternal(const Path&, const float x, const float y, const String& windingRuleString); 335d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) bool isPointInStrokeInternal(const Path&, const float x, const float y); 336d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) 337aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch void scrollPathIntoViewInternal(const Path&); 338aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch 3395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) void drawTextInternal(const String& text, float x, float y, bool fill, float maxWidth = 0, bool useMaxWidth = false); 3405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 3415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) const Font& accessFont(); 342d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) int getFontBaseline(const FontMetrics&) const; 3435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 3445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) void clearCanvas(); 34506f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles) bool rectContainsTransformedRect(const FloatRect&, const FloatRect&) const; 3465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 3475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) void inflateStrokeRect(FloatRect&) const; 3485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 3495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) template<class T> void fullCanvasCompositedFill(const T&); 3506f543c786fc42989f552b4daa774ca5ff32fa697Ben Murdoch template<class T> void fullCanvasCompositedStroke(const T&); 3515267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) template<class T> void fullCanvasCompositedDrawImage(T*, const FloatRect&, const FloatRect&, CompositeOperator); 3525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 35310f88d5669dbd969c059d61ba09fa37dd72ac559Ben Murdoch void drawFocusIfNeededInternal(const Path&, Element*); 354f5e4ad553afbc08dd2e729bb77e937a9a94d5827Torne (Richard Coles) bool focusRingCallIsValid(const Path&, Element*); 3551fad5ca6c42d689812b66fc493992aa6d747a6fbBen Murdoch void drawFocusRing(const Path&); 356f5e4ad553afbc08dd2e729bb77e937a9a94d5827Torne (Richard Coles) 3577242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci void addHitRegionInternal(const HitRegionOptionsInternal&, ExceptionState&); 358197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch bool hasClip() { return state().m_hasClip; } 359197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch 360f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles) void validateStateStack(); 361f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles) 3625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) virtual bool is2d() const OVERRIDE { return true; } 3635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) virtual bool isAccelerated() const OVERRIDE; 36453e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) virtual bool hasAlpha() const OVERRIDE { return m_hasAlpha; } 3657242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci virtual void setIsHidden(bool) OVERRIDE; 3665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 36709380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) virtual bool isTransformInvertible() const OVERRIDE { return state().m_invertibleCTM; } 368926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 36951b2906e11752df6c18351cf520e30522d3b53a1Torne (Richard Coles) virtual blink::WebLayer* platformLayer() const OVERRIDE; 3707242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci TextDirection toTextDirection(Direction, RenderStyle** computedStyle = nullptr) const; 3715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 372f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu WillBeHeapVector<OwnPtrWillBeMember<State> > m_stateStack; 373197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch OwnPtrWillBeMember<HitRegionManager> m_hitRegionManager; 3745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) bool m_usesCSSCompatibilityParseMode; 37553e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) bool m_hasAlpha; 376aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch bool m_isContextLost; 377aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch bool m_contextRestorable; 378aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch Canvas2DContextStorage m_storageMode; 3793c9e4aeaee9f9b0a9a814da07bcb33319c7ea363Ben Murdoch MutableStylePropertyMap m_fetchedFonts; 380aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch unsigned m_tryRestoreContextAttemptCount; 381aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch Timer<CanvasRenderingContext2D> m_dispatchContextLostEventTimer; 382aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch Timer<CanvasRenderingContext2D> m_dispatchContextRestoredEventTimer; 383aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch Timer<CanvasRenderingContext2D> m_tryRestoreContextEventTimer; 3845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}; 3855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 386a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles)DEFINE_TYPE_CASTS(CanvasRenderingContext2D, CanvasRenderingContext, context, context->is2d(), context.is2d()); 387a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) 388c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)} // namespace blink 3895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 3907242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci#endif // CanvasRenderingContext2D_h 391