• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 "SkPath.h"
13 #include "SkRect.h"
14 #include "SkStrokeRec.h"
15 
16 class GrPath : public GrGpuResource {
17 public:
18     SK_DECLARE_INST_COUNT(GrPath);
19 
20     /**
21      * Initialize to a path with a fixed stroke. Stroke must not be hairline.
22      */
GrPath(GrGpu * gpu,const SkPath & skPath,const SkStrokeRec & stroke)23     GrPath(GrGpu* gpu, const SkPath& skPath, const SkStrokeRec& stroke)
24         : INHERITED(gpu, kCached_LifeCycle),
25           fSkPath(skPath),
26           fStroke(stroke),
27           fBounds(skPath.getBounds()) {
28     }
29 
30     static void ComputeKey(const SkPath& path, const SkStrokeRec& stroke, GrUniqueKey* key);
31     static uint64_t ComputeStrokeKey(const SkStrokeRec&);
32 
isEqualTo(const SkPath & path,const SkStrokeRec & stroke)33     bool isEqualTo(const SkPath& path, const SkStrokeRec& stroke) {
34         return fSkPath == path && fStroke.hasEqualEffect(stroke);
35     }
36 
getBounds()37     const SkRect& getBounds() const { return fBounds; }
38 
getStroke()39     const SkStrokeRec& getStroke() const { return fStroke; }
40 
41 protected:
42     SkPath fSkPath;
43     SkStrokeRec fStroke;
44     SkRect fBounds;
45 
46 private:
47     typedef GrGpuResource INHERITED;
48 };
49 
50 #endif
51