image/SVGDrawingParameters.h
author Ehsan Akhgari <ehsan@mozilla.com>
Thu, 25 Oct 2018 13:35:24 +0000
changeset 491334 578d395f555ee3d71cacb239f5f84ce897b313cb
parent 485877 1e53e6af422382ae1ddfee87a7081810b51d8ac5
permissions -rw-r--r--
Bug 1501286 - Part 4: Remove the browser.contentblocking.ui.enabled pref from several tests which now set it needlessly r=johannh Depends on D9521 Differential Revision: https://phabricator.services.mozilla.com/D9522

/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */

#ifndef mozilla_image_SVGDrawingParameters_h
#define mozilla_image_SVGDrawingParameters_h

#include "gfxContext.h"
#include "gfxTypes.h"
#include "ImageRegion.h"
#include "mozilla/gfx/Point.h"
#include "mozilla/gfx/Types.h"
#include "mozilla/Maybe.h"
#include "nsSize.h"
#include "SVGImageContext.h"

namespace mozilla {
namespace image {

struct SVGDrawingParameters
{
  typedef mozilla::gfx::IntSize IntSize;
  typedef mozilla::gfx::SamplingFilter SamplingFilter;

  SVGDrawingParameters(gfxContext* aContext,
                       const nsIntSize& aRasterSize,
                       const nsIntSize& aDrawSize,
                       const ImageRegion& aRegion,
                       SamplingFilter aSamplingFilter,
                       const Maybe<SVGImageContext>& aSVGContext,
                       float aAnimationTime,
                       uint32_t aFlags,
                       float aOpacity)
    : context(aContext)
    , size(aRasterSize)
    , drawSize(aDrawSize)
    , region(aRegion)
    , samplingFilter(aSamplingFilter)
    , svgContext(aSVGContext)
    , viewportSize(aRasterSize)
    , animationTime(aAnimationTime)
    , flags(aFlags)
    , opacity(aOpacity)
  {
    if (aSVGContext) {
      auto sz = aSVGContext->GetViewportSize();
      if (sz) {
        viewportSize = nsIntSize(sz->width, sz->height); // XXX losing unit
      }
    }
  }

  gfxContext*                   context;
  IntSize                       size; // Size to rasterize a surface at.
  IntSize                       drawSize; // Size to draw the given surface at.
  ImageRegion                   region;
  SamplingFilter                samplingFilter;
  const Maybe<SVGImageContext>& svgContext;
  nsIntSize                     viewportSize;
  float                         animationTime;
  uint32_t                      flags;
  gfxFloat                      opacity;
};

} // namespace image
} // namespace mozilla

#endif // mozilla_image_SVGDrawingParameters_h