| /* | |
| * Copyright 2017 Google Inc. | |
| * | |
| * Use of this source code is governed by a BSD-style license that can be | |
| * found in the LICENSE file. | |
| */ | |
| #ifndef GrRectOpFactory_DEFINED | |
| #define GrRectOpFactory_DEFINED | |
| #include <memory> | |
| #include "GrTypes.h" | |
| enum class GrAAType : unsigned; | |
| class GrDrawOp; | |
| class GrPaint; | |
| struct GrUserStencilSettings; | |
| class SkMatrix; | |
| struct SkRect; | |
| class SkStrokeRec; | |
| /** | |
| * A set of factory functions for drawing rectangles including fills, strokes, coverage-antialiased, | |
| * and non-antialiased. The non-antialiased ops can be used with MSAA. As with other GrDrawOp | |
| * factories, the GrPaint is only consumed by these methods if a valid op is returned. If null is | |
| * returned then the paint is unmodified and may still be used. | |
| */ | |
| namespace GrRectOpFactory { | |
| /** AA Fill */ | |
| std::unique_ptr<GrDrawOp> MakeAAFill(GrContext*, | |
| GrPaint&&, | |
| const SkMatrix&, | |
| const SkRect&, | |
| const GrUserStencilSettings* = nullptr); | |
| std::unique_ptr<GrDrawOp> MakeAAFillWithLocalMatrix(GrContext*, | |
| GrPaint&&, | |
| const SkMatrix& viewMatrix, | |
| const SkMatrix& localMatrix, | |
| const SkRect&); | |
| std::unique_ptr<GrDrawOp> MakeAAFillWithLocalRect(GrContext*, | |
| GrPaint&&, | |
| const SkMatrix&, | |
| const SkRect& rect, | |
| const SkRect& localRect); | |
| /** Non-AA Fill - GrAAType must be either kNone or kMSAA. */ | |
| std::unique_ptr<GrDrawOp> MakeNonAAFill(GrContext*, | |
| GrPaint&&, | |
| const SkMatrix& viewMatrix, | |
| const SkRect& rect, | |
| GrAAType, | |
| const GrUserStencilSettings* = nullptr); | |
| std::unique_ptr<GrDrawOp> MakeNonAAFillWithLocalMatrix(GrContext*, | |
| GrPaint&&, | |
| const SkMatrix& viewMatrix, | |
| const SkMatrix& localMatrix, | |
| const SkRect&, | |
| GrAAType, | |
| const GrUserStencilSettings* = nullptr); | |
| std::unique_ptr<GrDrawOp> MakeNonAAFillWithLocalRect(GrContext*, | |
| GrPaint&&, | |
| const SkMatrix&, | |
| const SkRect& rect, | |
| const SkRect& localRect, | |
| GrAAType); | |
| /** AA Stroke */ | |
| std::unique_ptr<GrDrawOp> MakeAAStroke(GrContext*, | |
| GrPaint&&, | |
| const SkMatrix&, | |
| const SkRect&, | |
| const SkStrokeRec&); | |
| // rects[0] == outer rectangle, rects[1] == inner rectangle. Null return means there is nothing to | |
| // draw rather than failure. | |
| std::unique_ptr<GrDrawOp> MakeAAFillNestedRects(GrContext*, | |
| GrPaint&&, | |
| const SkMatrix&, | |
| const SkRect rects[2]); | |
| /** Non-AA Stroke - GrAAType must be either kNone or kMSAA. */ | |
| std::unique_ptr<GrDrawOp> MakeNonAAStroke(GrContext*, | |
| GrPaint&&, | |
| const SkMatrix&, | |
| const SkRect&, | |
| const SkStrokeRec&, | |
| GrAAType); | |
| } // namespace GrRectOpFactory | |
| #endif |