1 /* -*- Mode: C++; tab-width: 20; indent-tabs-mode: nil; c-basic-offset: 2 -*-
2 * This Source Code Form is subject to the terms of the Mozilla Public
3 * License, v. 2.0. If a copy of the MPL was not distributed with this
4 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
6 #ifndef MOZILLA_GFX_DRAWTARGETTILED_H_
7 #define MOZILLA_GFX_DRAWTARGETTILED_H_
17 class DrawTargetTiled
: public DrawTarget
22 bool Init(const TileSet
& mTiles
);
24 virtual bool IsTiledDrawTarget() const { return true; }
26 virtual DrawTargetType
GetType() const MOZ_OVERRIDE
{ return mTiles
[0].mDrawTarget
->GetType(); }
27 virtual BackendType
GetBackendType() const { return mTiles
[0].mDrawTarget
->GetBackendType(); }
28 virtual TemporaryRef
<SourceSurface
> Snapshot();
29 virtual IntSize
GetSize() { return IntSize(mRect
.XMost(), mRect
.YMost()); }
32 virtual void DrawSurface(SourceSurface
*aSurface
,
35 const DrawSurfaceOptions
&aSurfOptions
,
36 const DrawOptions
&aOptions
);
37 virtual void DrawFilter(FilterNode
*aNode
,
38 const Rect
&aSourceRect
,
39 const Point
&aDestPoint
,
40 const DrawOptions
&aOptions
= DrawOptions());
41 virtual void DrawSurfaceWithShadow(SourceSurface
*aSurface
,
46 CompositionOp aOperator
) { /* Not implemented */ MOZ_CRASH(); }
48 virtual void ClearRect(const Rect
&aRect
);
49 virtual void MaskSurface(const Pattern
&aSource
,
52 const DrawOptions
&aOptions
= DrawOptions());
54 virtual void CopySurface(SourceSurface
*aSurface
,
55 const IntRect
&aSourceRect
,
56 const IntPoint
&aDestination
);
58 virtual void FillRect(const Rect
&aRect
,
59 const Pattern
&aPattern
,
60 const DrawOptions
&aOptions
= DrawOptions());
61 virtual void StrokeRect(const Rect
&aRect
,
62 const Pattern
&aPattern
,
63 const StrokeOptions
&aStrokeOptions
= StrokeOptions(),
64 const DrawOptions
&aOptions
= DrawOptions());
65 virtual void StrokeLine(const Point
&aStart
,
67 const Pattern
&aPattern
,
68 const StrokeOptions
&aStrokeOptions
= StrokeOptions(),
69 const DrawOptions
&aOptions
= DrawOptions());
70 virtual void Stroke(const Path
*aPath
,
71 const Pattern
&aPattern
,
72 const StrokeOptions
&aStrokeOptions
= StrokeOptions(),
73 const DrawOptions
&aOptions
= DrawOptions());
74 virtual void Fill(const Path
*aPath
,
75 const Pattern
&aPattern
,
76 const DrawOptions
&aOptions
= DrawOptions());
77 virtual void FillGlyphs(ScaledFont
*aFont
,
78 const GlyphBuffer
&aBuffer
,
79 const Pattern
&aPattern
,
80 const DrawOptions
&aOptions
= DrawOptions(),
81 const GlyphRenderingOptions
*aRenderingOptions
= nullptr);
82 virtual void Mask(const Pattern
&aSource
,
84 const DrawOptions
&aOptions
= DrawOptions());
85 virtual void PushClip(const Path
*aPath
);
86 virtual void PushClipRect(const Rect
&aRect
);
87 virtual void PopClip();
89 virtual void SetTransform(const Matrix
&aTransform
);
91 virtual TemporaryRef
<SourceSurface
> CreateSourceSurfaceFromData(unsigned char *aData
,
94 SurfaceFormat aFormat
) const
96 return mTiles
[0].mDrawTarget
->CreateSourceSurfaceFromData(aData
, aSize
, aStride
, aFormat
);
98 virtual TemporaryRef
<SourceSurface
> OptimizeSourceSurface(SourceSurface
*aSurface
) const
100 return mTiles
[0].mDrawTarget
->OptimizeSourceSurface(aSurface
);
103 virtual TemporaryRef
<SourceSurface
>
104 CreateSourceSurfaceFromNativeSurface(const NativeSurface
&aSurface
) const
106 return mTiles
[0].mDrawTarget
->CreateSourceSurfaceFromNativeSurface(aSurface
);
109 virtual TemporaryRef
<DrawTarget
>
110 CreateSimilarDrawTarget(const IntSize
&aSize
, SurfaceFormat aFormat
) const
112 return mTiles
[0].mDrawTarget
->CreateSimilarDrawTarget(aSize
, aFormat
);
115 virtual TemporaryRef
<PathBuilder
> CreatePathBuilder(FillRule aFillRule
= FillRule::FILL_WINDING
) const
117 return mTiles
[0].mDrawTarget
->CreatePathBuilder(aFillRule
);
120 virtual TemporaryRef
<GradientStops
>
121 CreateGradientStops(GradientStop
*aStops
,
123 ExtendMode aExtendMode
= ExtendMode::CLAMP
) const
125 return mTiles
[0].mDrawTarget
->CreateGradientStops(aStops
, aNumStops
, aExtendMode
);
127 virtual TemporaryRef
<FilterNode
> CreateFilter(FilterType aType
)
129 return mTiles
[0].mDrawTarget
->CreateFilter(aType
);
133 std::vector
<Tile
> mTiles
;