Move more Ops to skgpu::v1 namespace
GrFillRRectOp
GrFillRectOp
Bug: skia:11837
Change-Id: Icdecc2ccd9def659b0d9402910b2072e02577a66
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/444817
Reviewed-by: Michael Ludwig <michaelludwig@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
diff --git a/src/gpu/ops/FillRectOp.h b/src/gpu/ops/FillRectOp.h
new file mode 100644
index 0000000..db3380b
--- /dev/null
+++ b/src/gpu/ops/FillRectOp.h
@@ -0,0 +1,86 @@
+/*
+ * Copyright 2018 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#ifndef FillRectOp_DEFINED
+#define FillRectOp_DEFINED
+
+#include "include/private/GrTypesPriv.h"
+#include "src/gpu/ops/GrSimpleMeshDrawOpHelper.h"
+
+struct DrawQuad;
+class GrClip;
+class GrDrawOp;
+class GrPaint;
+class GrQuad;
+struct GrQuadSetEntry;
+class GrRecordingContext;
+struct GrUserStencilSettings;
+class SkMatrix;
+struct SkRect;
+
+namespace skgpu::v1 {
+
+class SurfaceDrawContext;
+
+/**
+ * A set of factory functions for drawing filled rectangles either coverage-antialiased, or
+ * 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.
+ */
+class FillRectOp {
+public:
+ using InputFlags = GrSimpleMeshDrawOpHelper::InputFlags;
+
+ static GrOp::Owner Make(GrRecordingContext*,
+ GrPaint&&,
+ GrAAType,
+ DrawQuad*,
+ const GrUserStencilSettings* = nullptr,
+ InputFlags = InputFlags::kNone);
+
+ // Utility function to create a non-AA rect transformed by view. This is used commonly enough
+ // in testing and GMs that manage ops without going through GrRTC that it's worth the
+ // convenience.
+ static GrOp::Owner MakeNonAARect(GrRecordingContext*,
+ GrPaint&&,
+ const SkMatrix& view,
+ const SkRect&,
+ const GrUserStencilSettings* = nullptr);
+
+ // Bulk API for drawing quads with a single op
+ // TODO(michaelludwig) - remove if the bulk API is not useful for SkiaRenderer
+ static void AddFillRectOps(SurfaceDrawContext*,
+ const GrClip*,
+ GrRecordingContext*,
+ GrPaint&&,
+ GrAAType,
+ const SkMatrix& viewMatrix,
+ const GrQuadSetEntry quads[],
+ int quadCount,
+ const GrUserStencilSettings* = nullptr);
+
+#if GR_TEST_UTILS
+ static uint32_t ClassID();
+#endif
+
+private:
+ // Create a FillRectOp that uses as many quads as possible from 'quads' w/o exceeding
+ // any index buffer size limits.
+ static GrOp::Owner MakeOp(GrRecordingContext*,
+ GrPaint&&,
+ GrAAType,
+ const SkMatrix& viewMatrix,
+ const GrQuadSetEntry quads[],
+ int quadCount,
+ const GrUserStencilSettings*,
+ int* numConsumed);
+};
+
+} // namespace skgpu::v1
+
+#endif // FillRectOp_DEFINED