|
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 |
|
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 } |