1 /* 2 * Copyright 2018 Google Inc. 3 * 4 * Use of this source code is governed by a BSD-style license that can be 5 * found in the LICENSE file. 6 */ 7 8 #ifndef GrStrokeRectOp_DEFINED 9 #define GrStrokeRectOp_DEFINED 10 11 #include "include/private/GrTypesPriv.h" 12 13 class GrDrawOp; 14 class GrPaint; 15 class GrRecordingContext; 16 class SkMatrix; 17 struct SkRect; 18 class SkStrokeRec; 19 20 /** 21 * A set of factory functions for drawing stroked rectangles either coverage-antialiased, or 22 * non-antialiased. The non-antialiased ops can be used with MSAA. As with other GrDrawOp factories, 23 * the GrPaint is only consumed by these methods if a valid op is returned. If null is returned then 24 * the paint is unmodified and may still be used. 25 */ 26 namespace GrStrokeRectOp { 27 28 std::unique_ptr<GrDrawOp> Make(GrRecordingContext* context, 29 GrPaint&& paint, 30 GrAAType aaType, 31 const SkMatrix& viewMatrix, 32 const SkRect& rect, 33 const SkStrokeRec& stroke); 34 35 // rects[0] == outer rectangle, rects[1] == inner rectangle. Null return means there is nothing to 36 // draw rather than failure. The area between the rectangles will be filled by the paint, and it 37 // will be anti-aliased with coverage AA. viewMatrix.rectStaysRect() must be true. 38 std::unique_ptr<GrDrawOp> MakeNested(GrRecordingContext* context, 39 GrPaint&& paint, 40 const SkMatrix& viewMatrix, 41 const SkRect rects[2]); 42 43 } // namespace GrStrokeRectOp 44 45 #endif // GrStrokeRectOp_DEFINED 46