1ded4f4b163f5aa19c22c871178c55ecb34623846bsalomon@google.com
2ded4f4b163f5aa19c22c871178c55ecb34623846bsalomon@google.com/*
3ded4f4b163f5aa19c22c871178c55ecb34623846bsalomon@google.com * Copyright 2012 Google Inc.
4ded4f4b163f5aa19c22c871178c55ecb34623846bsalomon@google.com *
5ded4f4b163f5aa19c22c871178c55ecb34623846bsalomon@google.com * Use of this source code is governed by a BSD-style license that can be
6ded4f4b163f5aa19c22c871178c55ecb34623846bsalomon@google.com * found in the LICENSE file.
7ded4f4b163f5aa19c22c871178c55ecb34623846bsalomon@google.com */
8ded4f4b163f5aa19c22c871178c55ecb34623846bsalomon@google.com
9ded4f4b163f5aa19c22c871178c55ecb34623846bsalomon@google.com#ifndef GrBuiltInPathRenderer_DEFINED
10ded4f4b163f5aa19c22c871178c55ecb34623846bsalomon@google.com#define GrBuiltInPathRenderer_DEFINED
11ded4f4b163f5aa19c22c871178c55ecb34623846bsalomon@google.com
12ded4f4b163f5aa19c22c871178c55ecb34623846bsalomon@google.com#include "GrPathRenderer.h"
13ded4f4b163f5aa19c22c871178c55ecb34623846bsalomon@google.com
14ded4f4b163f5aa19c22c871178c55ecb34623846bsalomon@google.comclass GrContext;
15ded4f4b163f5aa19c22c871178c55ecb34623846bsalomon@google.comclass GrGpu;
16ded4f4b163f5aa19c22c871178c55ecb34623846bsalomon@google.com
17ded4f4b163f5aa19c22c871178c55ecb34623846bsalomon@google.com/**
18ded4f4b163f5aa19c22c871178c55ecb34623846bsalomon@google.com * Uses GrGpu::stencilPath followed by a cover rectangle. This subclass doesn't apply AA; it relies
19ded4f4b163f5aa19c22c871178c55ecb34623846bsalomon@google.com * on the target having MSAA if AA is desired.
20ded4f4b163f5aa19c22c871178c55ecb34623846bsalomon@google.com */
21ded4f4b163f5aa19c22c871178c55ecb34623846bsalomon@google.comclass GrStencilAndCoverPathRenderer : public GrPathRenderer {
22ded4f4b163f5aa19c22c871178c55ecb34623846bsalomon@google.compublic:
23ded4f4b163f5aa19c22c871178c55ecb34623846bsalomon@google.com
2445a15f551b5b3c6c747d8eaf6466b7d3b76a8faebsalomon@google.com    static GrPathRenderer* Create(GrContext*);
25ded4f4b163f5aa19c22c871178c55ecb34623846bsalomon@google.com
26ded4f4b163f5aa19c22c871178c55ecb34623846bsalomon@google.com    virtual ~GrStencilAndCoverPathRenderer();
27ded4f4b163f5aa19c22c871178c55ecb34623846bsalomon@google.com
28e79f320ed6c5ec9f6164ba84be1ff586532e6517robertphillips@google.com    virtual bool canDrawPath(const SkPath&,
29e79f320ed6c5ec9f6164ba84be1ff586532e6517robertphillips@google.com                             const SkStrokeRec&,
3045a15f551b5b3c6c747d8eaf6466b7d3b76a8faebsalomon@google.com                             const GrDrawTarget*,
31ded4f4b163f5aa19c22c871178c55ecb34623846bsalomon@google.com                             bool antiAlias) const SK_OVERRIDE;
32ded4f4b163f5aa19c22c871178c55ecb34623846bsalomon@google.com
33ded4f4b163f5aa19c22c871178c55ecb34623846bsalomon@google.comprotected:
34e79f320ed6c5ec9f6164ba84be1ff586532e6517robertphillips@google.com    virtual StencilSupport onGetStencilSupport(const SkPath&,
35e79f320ed6c5ec9f6164ba84be1ff586532e6517robertphillips@google.com                                               const SkStrokeRec&,
3645a15f551b5b3c6c747d8eaf6466b7d3b76a8faebsalomon@google.com                                               const GrDrawTarget*) const SK_OVERRIDE;
3745a15f551b5b3c6c747d8eaf6466b7d3b76a8faebsalomon@google.com
38e79f320ed6c5ec9f6164ba84be1ff586532e6517robertphillips@google.com    virtual bool onDrawPath(const SkPath&,
39e79f320ed6c5ec9f6164ba84be1ff586532e6517robertphillips@google.com                            const SkStrokeRec&,
4045a15f551b5b3c6c747d8eaf6466b7d3b76a8faebsalomon@google.com                            GrDrawTarget*,
41ded4f4b163f5aa19c22c871178c55ecb34623846bsalomon@google.com                            bool antiAlias) SK_OVERRIDE;
42ded4f4b163f5aa19c22c871178c55ecb34623846bsalomon@google.com
43e79f320ed6c5ec9f6164ba84be1ff586532e6517robertphillips@google.com    virtual void onStencilPath(const SkPath&,
44e79f320ed6c5ec9f6164ba84be1ff586532e6517robertphillips@google.com                               const SkStrokeRec&,
4545a15f551b5b3c6c747d8eaf6466b7d3b76a8faebsalomon@google.com                               GrDrawTarget*) SK_OVERRIDE;
4645a15f551b5b3c6c747d8eaf6466b7d3b76a8faebsalomon@google.com
47ded4f4b163f5aa19c22c871178c55ecb34623846bsalomon@google.comprivate:
4845a15f551b5b3c6c747d8eaf6466b7d3b76a8faebsalomon@google.com    GrStencilAndCoverPathRenderer(GrGpu*);
49ded4f4b163f5aa19c22c871178c55ecb34623846bsalomon@google.com
50ded4f4b163f5aa19c22c871178c55ecb34623846bsalomon@google.com    GrGpu* fGpu;
51ded4f4b163f5aa19c22c871178c55ecb34623846bsalomon@google.com
52ded4f4b163f5aa19c22c871178c55ecb34623846bsalomon@google.com    typedef GrPathRenderer INHERITED;
53ded4f4b163f5aa19c22c871178c55ecb34623846bsalomon@google.com};
54ded4f4b163f5aa19c22c871178c55ecb34623846bsalomon@google.com
55ded4f4b163f5aa19c22c871178c55ecb34623846bsalomon@google.com#endif
56