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