blob: 374a2dfe957aae816ba1a622832fc28432a8b603 [file] [log] [blame]
Chris Daltona32a3c32017-12-05 10:05:21 -07001/*
2 * Copyright 2017 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
Chris Dalton383a2ef2018-01-08 17:21:41 -05008#ifndef GrCCClipProcessor_DEFINED
9#define GrCCClipProcessor_DEFINED
Chris Daltona32a3c32017-12-05 10:05:21 -070010
11#include "GrFragmentProcessor.h"
12#include "ccpr/GrCoverageCountingPathRenderer.h"
13
Chris Dalton383a2ef2018-01-08 17:21:41 -050014class GrCCClipProcessor : public GrFragmentProcessor {
Chris Daltona32a3c32017-12-05 10:05:21 -070015public:
16 using ClipPath = GrCoverageCountingPathRenderer::ClipPath;
17
18 enum class MustCheckBounds : bool {
19 kNo = false,
20 kYes = true
21 };
22
Chris Dalton383a2ef2018-01-08 17:21:41 -050023 GrCCClipProcessor(const ClipPath*, MustCheckBounds, SkPath::FillType overrideFillType);
Chris Daltona32a3c32017-12-05 10:05:21 -070024
Chris Dalton383a2ef2018-01-08 17:21:41 -050025 const char* name() const override { return "GrCCClipProcessor"; }
Chris Daltona32a3c32017-12-05 10:05:21 -070026 std::unique_ptr<GrFragmentProcessor> clone() const override;
27 void onGetGLSLProcessorKey(const GrShaderCaps&, GrProcessorKeyBuilder*) const override;
28 bool onIsEqual(const GrFragmentProcessor&) const override;
29 GrGLSLFragmentProcessor* onCreateGLSLInstance() const override;
30
31private:
32 const ClipPath* const fClipPath;
33 const bool fMustCheckBounds;
34 const SkPath::FillType fOverrideFillType;
35 const TextureSampler fAtlasAccess;
36
37 class Impl;
38
39 typedef GrFragmentProcessor INHERITED;
40};
41
42#endif