1 /* -*- Mode: C++; tab-width: 2; 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_image_DynamicImage_h
7 #define mozilla_image_DynamicImage_h
9 #include "mozilla/MemoryReporting.h"
10 #include "gfxDrawable.h"
17 * An Image that is dynamically created. The content of the image is provided by
18 * a gfxDrawable. It's anticipated that most uses of DynamicImage will be
21 class DynamicImage
: public Image
{
26 explicit DynamicImage(gfxDrawable
* aDrawable
) : mDrawable(aDrawable
) {
27 MOZ_ASSERT(aDrawable
, "Must have a gfxDrawable to wrap");
30 // Inherited methods from Image.
31 virtual already_AddRefed
<ProgressTracker
> GetProgressTracker() override
;
32 virtual size_t SizeOfSourceWithComputedFallback(
33 SizeOfState
& aState
) const override
;
34 virtual void CollectSizeOfSurfaces(nsTArray
<SurfaceMemoryCounter
>& aCounters
,
35 MallocSizeOf aMallocSizeOf
) const override
;
37 virtual void IncrementAnimationConsumers() override
;
38 virtual void DecrementAnimationConsumers() override
;
40 virtual uint32_t GetAnimationConsumers() override
;
43 virtual nsresult
OnImageDataAvailable(nsIRequest
* aRequest
,
44 nsIInputStream
* aInStr
,
45 uint64_t aSourceOffset
,
46 uint32_t aCount
) override
;
47 virtual nsresult
OnImageDataComplete(nsIRequest
* aRequest
, nsresult aStatus
,
48 bool aLastPart
) override
;
50 virtual void OnSurfaceDiscarded(const SurfaceKey
& aSurfaceKey
) override
;
52 virtual void SetInnerWindowID(uint64_t aInnerWindowId
) override
;
53 virtual uint64_t InnerWindowID() const override
;
55 virtual bool HasError() override
;
56 virtual void SetHasError() override
;
58 nsIURI
* GetURI() const override
;
61 virtual ~DynamicImage() {}
63 RefPtr
<gfxDrawable
> mDrawable
;
67 } // namespace mozilla
69 #endif // mozilla_image_DynamicImage_h