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