1 /* This Source Code Form is subject to the terms of the Mozilla Public
2 * License, v. 2.0. If a copy of the MPL was not distributed with this file,
3 * You can obtain one at http://mozilla.org/MPL/2.0/. */
5 #ifndef BasicRenderingContext2D_h
6 #define BasicRenderingContext2D_h
8 #include "mozilla/dom/CanvasRenderingContext2DBinding.h"
9 #include "mozilla/dom/DOMMatrix.h"
15 HTMLImageElementOrSVGImageElementOrHTMLCanvasElementOrHTMLVideoElementOrImageBitmap
;
16 typedef HTMLImageElementOrSVGImageElementOrHTMLCanvasElementOrHTMLVideoElementOrImageBitmap
20 * BasicRenderingContext2D
22 class BasicRenderingContext2D
{
27 virtual void Save() = 0;
28 virtual void Restore() = 0;
33 virtual void Scale(double aX
, double aY
, mozilla::ErrorResult
& aError
) = 0;
34 virtual void Rotate(double aAngle
, mozilla::ErrorResult
& aError
) = 0;
35 virtual void Translate(double aX
, double aY
,
36 mozilla::ErrorResult
& aError
) = 0;
37 virtual void Transform(double aM11
, double aM12
, double aM21
, double aM22
,
38 double aDx
, double aDy
,
39 mozilla::ErrorResult
& aError
) = 0;
40 virtual already_AddRefed
<DOMMatrix
> GetTransform(
41 mozilla::ErrorResult
& aError
) = 0;
42 virtual void SetTransform(double aM11
, double aM12
, double aM21
, double aM22
,
43 double aDx
, double aDy
,
44 mozilla::ErrorResult
& aError
) = 0;
45 virtual void SetTransform(const DOMMatrix2DInit
& aInit
,
46 mozilla::ErrorResult
& aError
) = 0;
47 virtual void ResetTransform(mozilla::ErrorResult
& aError
) = 0;
52 virtual double GlobalAlpha() = 0;
53 virtual void SetGlobalAlpha(double aGlobalAlpha
) = 0;
54 virtual void GetGlobalCompositeOperation(nsAString
& aOp
,
55 mozilla::ErrorResult
& aError
) = 0;
56 virtual void SetGlobalCompositeOperation(const nsAString
& aOp
,
57 mozilla::ErrorResult
& aError
) = 0;
60 // CanvasImageSmoothing
62 virtual bool ImageSmoothingEnabled() = 0;
63 virtual void SetImageSmoothingEnabled(bool aImageSmoothingEnabled
) = 0;
66 // CanvasFillStrokeStyles
68 virtual void GetStrokeStyle(
69 OwningUTF8StringOrCanvasGradientOrCanvasPattern
& aValue
) = 0;
70 virtual void SetStrokeStyle(
71 const UTF8StringOrCanvasGradientOrCanvasPattern
& aValue
) = 0;
72 virtual void GetFillStyle(
73 OwningUTF8StringOrCanvasGradientOrCanvasPattern
& aValue
) = 0;
74 virtual void SetFillStyle(
75 const UTF8StringOrCanvasGradientOrCanvasPattern
& aValue
) = 0;
76 virtual already_AddRefed
<CanvasGradient
> CreateLinearGradient(double aX0
,
80 virtual already_AddRefed
<CanvasGradient
> CreateRadialGradient(
81 double aX0
, double aY0
, double aR0
, double aX1
, double aY1
, double aR1
,
82 ErrorResult
& aError
) = 0;
83 virtual already_AddRefed
<CanvasGradient
> CreateConicGradient(double aAngle
,
86 virtual already_AddRefed
<CanvasPattern
> CreatePattern(
87 const CanvasImageSource
& aElement
, const nsAString
& aRepeat
,
88 ErrorResult
& aError
) = 0;
92 virtual double ShadowOffsetX() = 0;
93 virtual void SetShadowOffsetX(double aShadowOffsetX
) = 0;
94 virtual double ShadowOffsetY() = 0;
95 virtual void SetShadowOffsetY(double aShadowOffsetY
) = 0;
96 virtual double ShadowBlur() = 0;
97 virtual void SetShadowBlur(double aShadowBlur
) = 0;
98 virtual void GetShadowColor(nsACString
& aShadowColor
) = 0;
99 virtual void SetShadowColor(const nsACString
& aShadowColor
) = 0;
104 virtual void ClearRect(double aX
, double aY
, double aW
, double aH
) = 0;
105 virtual void FillRect(double aX
, double aY
, double aW
, double aH
) = 0;
106 virtual void StrokeRect(double aX
, double aY
, double aW
, double aH
) = 0;
111 virtual void DrawImage(const CanvasImageSource
& aImage
, double aDx
,
112 double aDy
, mozilla::ErrorResult
& aError
) = 0;
113 virtual void DrawImage(const CanvasImageSource
& aImage
, double aDx
,
114 double aDy
, double aDw
, double aDh
,
115 mozilla::ErrorResult
& aError
) = 0;
116 virtual void DrawImage(const CanvasImageSource
& aImage
, double aSx
,
117 double aSy
, double aSw
, double aSh
, double aDx
,
118 double aDy
, double aDw
, double aDh
,
119 mozilla::ErrorResult
& aError
) = 0;
122 // CanvasPathDrawingStyles
124 virtual double LineWidth() = 0;
125 virtual void SetLineWidth(double aWidth
) = 0;
126 virtual void GetLineCap(nsAString
& aLinecapStyle
) = 0;
127 virtual void SetLineCap(const nsAString
& aLinecapStyle
) = 0;
128 virtual void GetLineJoin(nsAString
& aLinejoinStyle
,
129 mozilla::ErrorResult
& aError
) = 0;
130 virtual void SetLineJoin(const nsAString
& aLinejoinStyle
) = 0;
131 virtual double MiterLimit() = 0;
132 virtual void SetMiterLimit(double aMiter
) = 0;
133 virtual void SetLineDash(const Sequence
<double>& aSegments
,
134 mozilla::ErrorResult
& aRv
) = 0;
135 virtual void GetLineDash(nsTArray
<double>& aSegments
) const = 0;
136 virtual void SetLineDashOffset(double aOffset
) = 0;
137 virtual double LineDashOffset() const = 0;
142 virtual void ClosePath() = 0;
143 virtual void MoveTo(double aX
, double aY
) = 0;
144 virtual void LineTo(double aX
, double aY
) = 0;
145 virtual void QuadraticCurveTo(double aCpx
, double aCpy
, double aX
,
147 virtual void BezierCurveTo(double aCp1x
, double aCp1y
, double aCp2x
,
148 double aCp2y
, double aX
, double aY
) = 0;
149 virtual void ArcTo(double aX1
, double aY1
, double aX2
, double aY2
,
150 double aRadius
, mozilla::ErrorResult
& aError
) = 0;
151 virtual void Rect(double aX
, double aY
, double aW
, double aH
) = 0;
152 virtual void Arc(double aX
, double aY
, double aRadius
, double aStartAngle
,
153 double aEndAngle
, bool aAnticlockwise
,
154 mozilla::ErrorResult
& aError
) = 0;
155 virtual void Ellipse(double aX
, double aY
, double aRadiusX
, double aRadiusY
,
156 double aRotation
, double aStartAngle
, double aEndAngle
,
157 bool aAnticlockwise
, ErrorResult
& aError
) = 0;
161 } // namespace mozilla
163 #endif /* BasicRenderingContext2D_h */