/*
 * Copyright 2016 Google Inc.
 *
 * Use of this source code is governed by a BSD-style license that can be
 * found in the LICENSE file.
 */

#ifndef GrRegionOp_DEFINED
#define GrRegionOp_DEFINED

#include "GrTypesPriv.h"

class GrContext;
class GrDrawOp;
class SkMatrix;
class SkRegion;
class GrPaint;
struct GrUserStencilSettings;

namespace GrRegionOp {
/** GrAAType must be kNone or kMSAA. */
std::unique_ptr<GrDrawOp> Make(GrContext*,
                               GrPaint&&,
                               const SkMatrix& viewMatrix,
                               const SkRegion&,
                               GrAAType,
                               const GrUserStencilSettings* stencilSettings = nullptr);
}

#endif
