Bumping gaia.json for 2 gaia revision(s) a=gaia-bump
[gecko.git] / gfx / 2d / DrawTargetTiled.h
blob00fafae41a66aad89207671eb3c96db0a84b6f19
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_
9 #include "2D.h"
10 #include "Filters.h"
12 #include <vector>
14 namespace mozilla {
15 namespace gfx {
17 class DrawTargetTiled : public DrawTarget
19 public:
20 DrawTargetTiled();
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()); }
31 virtual void Flush();
32 virtual void DrawSurface(SourceSurface *aSurface,
33 const Rect &aDest,
34 const Rect &aSource,
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,
42 const Point &aDest,
43 const Color &aColor,
44 const Point &aOffset,
45 Float aSigma,
46 CompositionOp aOperator) { /* Not implemented */ MOZ_CRASH(); }
48 virtual void ClearRect(const Rect &aRect);
49 virtual void MaskSurface(const Pattern &aSource,
50 SourceSurface *aMask,
51 Point aOffset,
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,
66 const Point &aEnd,
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,
83 const Pattern &aMask,
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,
92 const IntSize &aSize,
93 int32_t aStride,
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,
122 uint32_t aNumStops,
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);
132 private:
133 std::vector<Tile> mTiles;
134 IntRect mRect;
140 #endif