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 skgpu_ganesh_StrokeRectOp_DEFINED 9 #define skgpu_ganesh_StrokeRectOp_DEFINED 10 11 #include "src/gpu/ganesh/ops/GrOp.h" 12 13 class GrPaint; 14 class GrRecordingContext; 15 class SkMatrix; 16 class SkStrokeRec; 17 enum class GrAAType : unsigned int; 18 struct SkRect; 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 skgpu::ganesh::StrokeRectOp { 27 28 GrOp::Owner Make(GrRecordingContext*, 29 GrPaint&&, 30 GrAAType, 31 const SkMatrix& viewMatrix, 32 const SkRect&, 33 const SkStrokeRec&); 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 GrOp::Owner MakeNested(GrRecordingContext*, 39 GrPaint&&, 40 const SkMatrix& viewMatrix, 41 const SkRect rects[2]); 42 43 } // namespace skgpu::ganesh::StrokeRectOp 44 45 #endif // skgpu_ganesh_StrokeRectOp_DEFINED 46