• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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)10 GrResourceKey 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