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 17 class GrPath : public GrGpuResource { 18 public: 19 /** 20 * Initialize to a path with a fixed stroke. Stroke must not be hairline. 21 */ GrPath(GrGpu * gpu,const SkPath & skPath,const GrStrokeInfo & stroke)22 GrPath(GrGpu* gpu, const SkPath& skPath, const GrStrokeInfo& stroke) 23 : INHERITED(gpu, kCached_LifeCycle) 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 getBounds()36 const SkRect& getBounds() const { return fBounds; } 37 getFillType()38 GrPathRendering::FillType getFillType() const { return fFillType; } 39 #ifdef SK_DEBUG 40 bool isEqualTo(const SkPath& path, const GrStrokeInfo& stroke) const; 41 #endif 42 43 protected: 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 52 private: 53 typedef GrGpuResource INHERITED; 54 }; 55 56 #endif 57