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 #include "GrPath.h" 9 ComputeKey(const SkPath & path,const SkStrokeRec & stroke)10GrResourceKey GrPath::ComputeKey(const SkPath& path, const SkStrokeRec& stroke) { 11 static const GrResourceKey::ResourceType gPathResourceType = GrResourceKey::GenerateResourceType(); 12 static const GrCacheID::Domain gPathDomain = GrCacheID::GenerateDomain(); 13 14 GrCacheID::Key key; 15 uint32_t* keyData = key.fData32; 16 keyData[0] = path.getGenerationID(); 17 18 SK_COMPILE_ASSERT(SkPaint::kJoinCount <= 3, cap_shift_will_be_wrong); 19 keyData[1] = stroke.needToApply(); 20 if (0 != keyData[1]) { 21 keyData[1] |= stroke.getJoin() << 1; 22 keyData[1] |= stroke.getCap() << 3; 23 keyData[2] = static_cast<uint32_t>(stroke.getMiter()); 24 keyData[3] = static_cast<uint32_t>(stroke.getWidth()); 25 } else { 26 keyData[2] = 0; 27 keyData[3] = 0; 28 } 29 30 return GrResourceKey(GrCacheID(gPathDomain, key), gPathResourceType, 0); 31 } 32