Coverage Report

Created: 2018-09-25 14:53

/work/obj-fuzz/dist/include/mozilla/dom/CanvasGradient.h
Line
Count
Source (jump to first uncovered line)
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/. */
4
5
#ifndef mozilla_dom_CanvasGradient_h
6
#define mozilla_dom_CanvasGradient_h
7
8
#include "mozilla/Attributes.h"
9
#include "nsTArray.h"
10
#include "mozilla/RefPtr.h"
11
#include "mozilla/dom/CanvasRenderingContext2DBinding.h"
12
#include "mozilla/dom/CanvasRenderingContext2D.h"
13
#include "mozilla/gfx/2D.h"
14
#include "nsWrapperCache.h"
15
#include "gfxGradientCache.h"
16
17
namespace mozilla {
18
namespace dom {
19
20
class CanvasGradient : public nsWrapperCache
21
{
22
public:
23
  NS_INLINE_DECL_CYCLE_COLLECTING_NATIVE_REFCOUNTING(CanvasGradient)
24
  NS_DECL_CYCLE_COLLECTION_SCRIPT_HOLDER_NATIVE_CLASS(CanvasGradient)
25
26
  enum class Type : uint8_t {
27
    LINEAR = 0,
28
    RADIAL
29
  };
30
31
  Type GetType()
32
0
  {
33
0
    return mType;
34
0
  }
35
36
  mozilla::gfx::GradientStops *
37
  GetGradientStopsForTarget(mozilla::gfx::DrawTarget *aRT)
38
0
  {
39
0
    if (mStops && mStops->GetBackendType() == aRT->GetBackendType()) {
40
0
      return mStops;
41
0
    }
42
0
43
0
    mStops =
44
0
      gfx::gfxGradientCache::GetOrCreateGradientStops(aRT,
45
0
                                                      mRawStops,
46
0
                                                      gfx::ExtendMode::CLAMP);
47
0
48
0
    return mStops;
49
0
  }
50
51
  // WebIDL
52
  void AddColorStop(float offset, const nsAString& colorstr, ErrorResult& rv);
53
54
  JSObject* WrapObject(JSContext* aCx, JS::Handle<JSObject*> aGivenProto) override
55
0
  {
56
0
    return CanvasGradient_Binding::Wrap(aCx, this, aGivenProto);
57
0
  }
58
59
  CanvasRenderingContext2D* GetParentObject()
60
0
  {
61
0
    return mContext;
62
0
  }
63
64
protected:
65
  friend struct CanvasBidiProcessor;
66
67
  CanvasGradient(CanvasRenderingContext2D* aContext, Type aType)
68
    : mContext(aContext)
69
    , mType(aType)
70
0
  {
71
0
  }
72
73
  RefPtr<CanvasRenderingContext2D> mContext;
74
  nsTArray<mozilla::gfx::GradientStop> mRawStops;
75
  RefPtr<mozilla::gfx::GradientStops> mStops;
76
  Type mType;
77
0
  virtual ~CanvasGradient() {}
78
};
79
80
} // namespace dom
81
} // namespace mozilla
82
83
#endif // mozilla_dom_CanvasGradient_h