GrPath.h revision 85d9667f59d4138438427bb2cdf67992d100e1a0
1/*
2 * Copyright 2012 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 GrPath_DEFINED
9#define GrPath_DEFINED
10
11#include "GrGpuResource.h"
12#include "GrStrokeInfo.h"
13#include "GrPathRendering.h"
14#include "SkPath.h"
15#include "SkRect.h"
16
17class GrPath : public GrGpuResource {
18public:
19    /**
20     * Initialize to a path with a fixed stroke. Stroke must not be hairline.
21     */
22    GrPath(GrGpu* gpu, const SkPath& skPath, const GrStrokeInfo& stroke)
23        : INHERITED(gpu)
24        , fBounds(SkRect::MakeEmpty())
25        , fFillType(GrPathRendering::kWinding_FillType)
26#ifdef SK_DEBUG
27        , fSkPath(skPath)
28        , fStroke(stroke)
29#endif
30    {
31    }
32
33    static void ComputeKey(const SkPath& path, const GrStrokeInfo& stroke, GrUniqueKey* key,
34                           bool* outIsVolatile);
35
36    const SkRect& getBounds() const { return fBounds; }
37
38    GrPathRendering::FillType getFillType() const { return fFillType; }
39#ifdef SK_DEBUG
40    bool isEqualTo(const SkPath& path, const GrStrokeInfo& stroke) const;
41#endif
42
43protected:
44    // Subclass should init these.
45    SkRect fBounds;
46    GrPathRendering::FillType fFillType;
47#ifdef SK_DEBUG
48    SkPath fSkPath;
49    GrStrokeInfo fStroke;
50#endif
51
52private:
53    typedef GrGpuResource INHERITED;
54};
55
56#endif
57