Coverage Report

Created: 2018-09-25 14:53

/src/mozilla-central/gfx/2d/DrawTargetOffset.h
Line
Count
Source (jump to first uncovered line)
1
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
2
/* vim: set ts=8 sts=2 et sw=2 tw=80: */
3
/* This Source Code Form is subject to the terms of the Mozilla Public
4
 * License, v. 2.0. If a copy of the MPL was not distributed with this
5
 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
6
7
#ifndef MOZILLA_GFX_DRAWTARGETOFFSET_H_
8
#define MOZILLA_GFX_DRAWTARGETOFFSET_H_
9
10
#include "2D.h"
11
12
#include "mozilla/Vector.h"
13
14
#include "Filters.h"
15
#include "Logging.h"
16
17
#include <vector>
18
19
namespace mozilla {
20
namespace gfx {
21
22
class DrawTargetOffset : public DrawTarget
23
{
24
public:
25
  DrawTargetOffset();
26
27
  bool Init(DrawTarget *aDrawTarget, IntPoint aOrigin);
28
29
  // We'll pestimistically return true here
30
0
  virtual bool IsTiledDrawTarget() const override { return true; }
31
32
0
  virtual bool IsCaptureDT() const override { return mDrawTarget->IsCaptureDT(); }
33
0
  virtual DrawTargetType GetType() const override { return mDrawTarget->GetType(); }
34
0
  virtual BackendType GetBackendType() const override { return mDrawTarget->GetBackendType(); }
35
  virtual already_AddRefed<SourceSurface> Snapshot() override;
36
  virtual void DetachAllSnapshots() override;
37
0
  virtual IntSize GetSize() const override {
38
0
    return mDrawTarget->GetSize();
39
0
  }
40
0
  virtual IntRect GetRect() const override {
41
0
    return mDrawTarget->GetRect();
42
0
  }
43
44
  virtual void Flush() override;
45
  virtual void DrawSurface(SourceSurface *aSurface,
46
                           const Rect &aDest,
47
                           const Rect &aSource,
48
                           const DrawSurfaceOptions &aSurfOptions,
49
                           const DrawOptions &aOptions) override;
50
  virtual void DrawFilter(FilterNode *aNode,
51
                          const Rect &aSourceRect,
52
                          const Point &aDestPoint,
53
                          const DrawOptions &aOptions = DrawOptions()) override;
54
  virtual void DrawSurfaceWithShadow(SourceSurface *aSurface,
55
                                     const Point &aDest,
56
                                     const Color &aColor,
57
                                     const Point &aOffset,
58
                                     Float aSigma,
59
0
                                     CompositionOp aOperator) override { /* Not implemented */ MOZ_CRASH("GFX: DrawSurfaceWithShadow"); }
60
61
  virtual void ClearRect(const Rect &aRect) override;
62
  virtual void MaskSurface(const Pattern &aSource,
63
                           SourceSurface *aMask,
64
                           Point aOffset,
65
                           const DrawOptions &aOptions = DrawOptions()) override;
66
67
  virtual void CopySurface(SourceSurface *aSurface,
68
                           const IntRect &aSourceRect,
69
                           const IntPoint &aDestination) override;
70
71
  virtual void FillRect(const Rect &aRect,
72
                        const Pattern &aPattern,
73
                        const DrawOptions &aOptions = DrawOptions()) override;
74
  virtual void StrokeRect(const Rect &aRect,
75
                          const Pattern &aPattern,
76
                          const StrokeOptions &aStrokeOptions = StrokeOptions(),
77
                          const DrawOptions &aOptions = DrawOptions()) override;
78
  virtual void StrokeLine(const Point &aStart,
79
                          const Point &aEnd,
80
                          const Pattern &aPattern,
81
                          const StrokeOptions &aStrokeOptions = StrokeOptions(),
82
                          const DrawOptions &aOptions = DrawOptions()) override;
83
  virtual void Stroke(const Path *aPath,
84
                      const Pattern &aPattern,
85
                      const StrokeOptions &aStrokeOptions = StrokeOptions(),
86
                      const DrawOptions &aOptions = DrawOptions()) override;
87
  virtual void Fill(const Path *aPath,
88
                    const Pattern &aPattern,
89
                    const DrawOptions &aOptions = DrawOptions()) override;
90
  virtual void FillGlyphs(ScaledFont *aFont,
91
                          const GlyphBuffer &aBuffer,
92
                          const Pattern &aPattern,
93
                          const DrawOptions &aOptions = DrawOptions()) override;
94
  virtual void Mask(const Pattern &aSource,
95
                    const Pattern &aMask,
96
                    const DrawOptions &aOptions = DrawOptions()) override;
97
  virtual void PushClip(const Path *aPath) override;
98
  virtual void PushClipRect(const Rect &aRect) override;
99
  virtual void PopClip() override;
100
  virtual void PushLayer(bool aOpaque, Float aOpacity,
101
                         SourceSurface* aMask,
102
                         const Matrix& aMaskTransform,
103
                         const IntRect& aBounds = IntRect(),
104
                         bool aCopyBackground = false) override;
105
  virtual void PushLayerWithBlend(bool aOpaque, Float aOpacity,
106
                         SourceSurface* aMask,
107
                         const Matrix& aMaskTransform,
108
                         const IntRect& aBounds = IntRect(),
109
                         bool aCopyBackground = false,
110
                         CompositionOp = CompositionOp::OP_OVER) override;
111
  virtual void PopLayer() override;
112
113
114
  virtual void SetTransform(const Matrix &aTransform) override;
115
116
  virtual void SetPermitSubpixelAA(bool aPermitSubpixelAA) override;
117
118
  virtual already_AddRefed<SourceSurface> CreateSourceSurfaceFromData(unsigned char *aData,
119
                                                                  const IntSize &aSize,
120
                                                                  int32_t aStride,
121
                                                                  SurfaceFormat aFormat) const override
122
0
  {
123
0
    return mDrawTarget->CreateSourceSurfaceFromData(aData, aSize, aStride, aFormat);
124
0
  }
125
  virtual already_AddRefed<SourceSurface> OptimizeSourceSurface(SourceSurface *aSurface) const override
126
0
  {
127
0
    return mDrawTarget->OptimizeSourceSurface(aSurface);
128
0
  }
129
130
  virtual already_AddRefed<SourceSurface>
131
    CreateSourceSurfaceFromNativeSurface(const NativeSurface &aSurface) const override
132
0
  {
133
0
    return mDrawTarget->CreateSourceSurfaceFromNativeSurface(aSurface);
134
0
  }
135
136
  virtual already_AddRefed<DrawTarget>
137
    CreateSimilarDrawTarget(const IntSize &aSize, SurfaceFormat aFormat) const override
138
0
  {
139
0
    return mDrawTarget->CreateSimilarDrawTarget(aSize, aFormat);
140
0
  }
141
142
  virtual already_AddRefed<PathBuilder> CreatePathBuilder(FillRule aFillRule = FillRule::FILL_WINDING) const override
143
0
  {
144
0
    return mDrawTarget->CreatePathBuilder(aFillRule);
145
0
  }
146
147
  virtual already_AddRefed<GradientStops>
148
    CreateGradientStops(GradientStop *aStops,
149
                        uint32_t aNumStops,
150
                        ExtendMode aExtendMode = ExtendMode::CLAMP) const override
151
0
  {
152
0
    return mDrawTarget->CreateGradientStops(aStops, aNumStops, aExtendMode);
153
0
  }
154
  virtual already_AddRefed<FilterNode> CreateFilter(FilterType aType) override
155
0
  {
156
0
    return mDrawTarget->CreateFilter(aType);
157
0
  }
158
159
private:
160
  RefPtr<DrawTarget> mDrawTarget;
161
  IntPoint mOrigin;
162
};
163
164
} // namespace gfx
165
} // namespace mozilla
166
167
#endif