Blame image/DynamicImage.h

Packit f0b94e
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
Packit f0b94e
/* This Source Code Form is subject to the terms of the Mozilla Public
Packit f0b94e
 * License, v. 2.0. If a copy of the MPL was not distributed with this
Packit f0b94e
 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
Packit f0b94e
Packit f0b94e
#ifndef mozilla_image_DynamicImage_h
Packit f0b94e
#define mozilla_image_DynamicImage_h
Packit f0b94e
Packit f0b94e
#include "mozilla/MemoryReporting.h"
Packit f0b94e
#include "gfxDrawable.h"
Packit f0b94e
#include "Image.h"
Packit f0b94e
Packit f0b94e
namespace mozilla {
Packit f0b94e
namespace image {
Packit f0b94e
Packit f0b94e
/**
Packit f0b94e
 * An Image that is dynamically created. The content of the image is provided by
Packit f0b94e
 * a gfxDrawable. It's anticipated that most uses of DynamicImage will be
Packit f0b94e
 * ephemeral.
Packit f0b94e
 */
Packit f0b94e
class DynamicImage : public Image {
Packit f0b94e
 public:
Packit f0b94e
  NS_DECL_ISUPPORTS
Packit f0b94e
  NS_DECL_IMGICONTAINER
Packit f0b94e
Packit f0b94e
  explicit DynamicImage(gfxDrawable* aDrawable) : mDrawable(aDrawable) {
Packit f0b94e
    MOZ_ASSERT(aDrawable, "Must have a gfxDrawable to wrap");
Packit f0b94e
  }
Packit f0b94e
Packit f0b94e
  // Inherited methods from Image.
Packit f0b94e
  nsresult GetNativeSizes(nsTArray<gfx::IntSize>& aNativeSizes) const override;
Packit f0b94e
  size_t GetNativeSizesLength() const override;
Packit f0b94e
  virtual already_AddRefed<ProgressTracker> GetProgressTracker() override;
Packit f0b94e
  virtual size_t SizeOfSourceWithComputedFallback(
Packit f0b94e
      SizeOfState& aState) const override;
Packit f0b94e
  virtual void CollectSizeOfSurfaces(nsTArray<SurfaceMemoryCounter>& aCounters,
Packit f0b94e
                                     MallocSizeOf aMallocSizeOf) const override;
Packit f0b94e
Packit f0b94e
  virtual void IncrementAnimationConsumers() override;
Packit f0b94e
  virtual void DecrementAnimationConsumers() override;
Packit f0b94e
#ifdef DEBUG
Packit f0b94e
  virtual uint32_t GetAnimationConsumers() override;
Packit f0b94e
#endif
Packit f0b94e
Packit f0b94e
  virtual nsresult OnImageDataAvailable(nsIRequest* aRequest,
Packit f0b94e
                                        nsISupports* aContext,
Packit f0b94e
                                        nsIInputStream* aInStr,
Packit f0b94e
                                        uint64_t aSourceOffset,
Packit f0b94e
                                        uint32_t aCount) override;
Packit f0b94e
  virtual nsresult OnImageDataComplete(nsIRequest* aRequest,
Packit f0b94e
                                       nsISupports* aContext, nsresult aStatus,
Packit f0b94e
                                       bool aLastPart) override;
Packit f0b94e
Packit f0b94e
  virtual void OnSurfaceDiscarded(const SurfaceKey& aSurfaceKey) override;
Packit f0b94e
Packit f0b94e
  virtual void SetInnerWindowID(uint64_t aInnerWindowId) override;
Packit f0b94e
  virtual uint64_t InnerWindowID() const override;
Packit f0b94e
Packit f0b94e
  virtual bool HasError() override;
Packit f0b94e
  virtual void SetHasError() override;
Packit f0b94e
Packit f0b94e
  virtual ImageURL* GetURI() override;
Packit f0b94e
Packit f0b94e
 private:
Packit f0b94e
  virtual ~DynamicImage() {}
Packit f0b94e
Packit f0b94e
  RefPtr<gfxDrawable> mDrawable;
Packit f0b94e
};
Packit f0b94e
Packit f0b94e
}  // namespace image
Packit f0b94e
}  // namespace mozilla
Packit f0b94e
Packit f0b94e
#endif  // mozilla_image_DynamicImage_h