image/SVGDrawingParameters.h
author L. David Baron <dbaron@dbaron.org>
Thu, 11 Oct 2018 10:04:04 +0000
changeset 499519 e816bcd461abb456bad50c9df457d7a0fdcbe83b
parent 496036 1e53e6af422382ae1ddfee87a7081810b51d8ac5
child 508163 6f3709b3878117466168c40affa7bca0b60cf75b
permissions -rw-r--r--
Bug 1498030 [wpt PR 13459] - Sync Mozilla CSS tests as of 2018-10-10, a=testonly Automatic update from web-platform-testsSync Mozilla CSS tests as of https://hg.mozilla.org/mozilla-central/rev/91b4c3687d7563244fbba0f58075779eb89259fb . (#13459) This contains changes from [bug 1495470](https://bugzilla.mozilla.org/show_bug.cgi?id=1495470) by @dholbert, reviewed by me. -- wpt-commits: ad906e0d1ad2225635cde0b676575f84255348cf wpt-pr: 13459

/* -*- 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