| /* |
| * 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 |