michael@0: /* michael@0: * Copyright 2012 Google Inc. michael@0: * michael@0: * Use of this source code is governed by a BSD-style license that can be michael@0: * found in the LICENSE file. michael@0: */ michael@0: michael@0: #include "GrPath.h" michael@0: michael@0: GrResourceKey GrPath::ComputeKey(const SkPath& path, const SkStrokeRec& stroke) { michael@0: static const GrResourceKey::ResourceType gPathResourceType = GrResourceKey::GenerateResourceType(); michael@0: static const GrCacheID::Domain gPathDomain = GrCacheID::GenerateDomain(); michael@0: michael@0: GrCacheID::Key key; michael@0: uint32_t* keyData = key.fData32; michael@0: keyData[0] = path.getGenerationID(); michael@0: michael@0: SK_COMPILE_ASSERT(SkPaint::kJoinCount <= 3, cap_shift_will_be_wrong); michael@0: keyData[1] = stroke.needToApply(); michael@0: if (0 != keyData[1]) { michael@0: keyData[1] |= stroke.getJoin() << 1; michael@0: keyData[1] |= stroke.getCap() << 3; michael@0: keyData[2] = static_cast(stroke.getMiter()); michael@0: keyData[3] = static_cast(stroke.getWidth()); michael@0: } else { michael@0: keyData[2] = 0; michael@0: keyData[3] = 0; michael@0: } michael@0: michael@0: return GrResourceKey(GrCacheID(gPathDomain, key), gPathResourceType, 0); michael@0: }