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