|  | /* | 
|  | * Copyright 2014 Google Inc. | 
|  | * | 
|  | * Use of this source code is governed by a BSD-style license that can be | 
|  | * found in the LICENSE file. | 
|  | */ | 
|  |  | 
|  | #ifndef GrPathRange_DEFINED | 
|  | #define GrPathRange_DEFINED | 
|  |  | 
|  | #include "GrGpuResource.h" | 
|  | #include "GrResourceCache.h" | 
|  | #include "SkStrokeRec.h" | 
|  |  | 
|  | class SkPath; | 
|  |  | 
|  | /** | 
|  | * Represents a contiguous range of GPU path objects with a common stroke. The | 
|  | * path range is immutable with the exception that individual paths can be | 
|  | * initialized lazily. Unititialized paths are silently ignored by drawing | 
|  | * functions. | 
|  | */ | 
|  | class GrPathRange : public GrGpuResource { | 
|  | public: | 
|  | SK_DECLARE_INST_COUNT(GrPathRange); | 
|  |  | 
|  | static const bool kIsWrapped = false; | 
|  |  | 
|  | static GrResourceKey::ResourceType resourceType() { | 
|  | static const GrResourceKey::ResourceType type = GrResourceKey::GenerateResourceType(); | 
|  | return type; | 
|  | } | 
|  |  | 
|  | /** | 
|  | * Initialize to a range with a fixed size and stroke. Stroke must not be hairline. | 
|  | */ | 
|  | GrPathRange(GrGpu* gpu, size_t size, const SkStrokeRec& stroke) | 
|  | : INHERITED(gpu, kIsWrapped), | 
|  | fSize(size), | 
|  | fStroke(stroke) { | 
|  | } | 
|  |  | 
|  | size_t getSize() const { return fSize; } | 
|  | const SkStrokeRec& getStroke() const { return fStroke; } | 
|  |  | 
|  | /** | 
|  | * Initialize a path in the range. It is invalid to call this method for a | 
|  | * path that has already been initialized. | 
|  | */ | 
|  | virtual void initAt(size_t index, const SkPath&) = 0; | 
|  |  | 
|  | protected: | 
|  | size_t fSize; | 
|  | SkStrokeRec fStroke; | 
|  |  | 
|  | private: | 
|  | typedef GrGpuResource INHERITED; | 
|  | }; | 
|  |  | 
|  | #endif |