Thu, 15 Jan 2015 15:55:04 +0100
Back out 97036ab72558 which inappropriately compared turds to third parties.
2 /*
3 * Copyright 2006 The Android Open Source Project
4 *
5 * Use of this source code is governed by a BSD-style license that can be
6 * found in the LICENSE file.
7 */
10 #include "SkHitTest.h"
12 #if SK_USE_CONDENSED_INFO == 0
14 const SkMemberInfo SkHitTest::fInfo[] = {
15 SK_MEMBER_ARRAY(bullets, Displayable),
16 SK_MEMBER_ARRAY(hits, Int),
17 SK_MEMBER_ARRAY(targets, Displayable),
18 SK_MEMBER(value, Boolean)
19 };
21 #endif
23 DEFINE_GET_MEMBER(SkHitTest);
25 SkHitTest::SkHitTest() : value(false) {
26 }
28 bool SkHitTest::draw(SkAnimateMaker&) {
29 hits.setCount(bullets.count());
30 value = false;
31 int bulletCount = bullets.count();
32 int targetCount = targets.count();
33 for (int bIndex = 0; bIndex < bulletCount; bIndex++) {
34 SkDisplayable* bullet = bullets[bIndex];
35 SkRect bBounds;
36 bullet->getBounds(&bBounds);
37 hits[bIndex] = -1;
38 if (bBounds.fLeft == (int16_t)0x8000U)
39 continue;
40 for (int tIndex = 0; tIndex < targetCount; tIndex++) {
41 SkDisplayable* target = targets[tIndex];
42 SkRect tBounds;
43 target->getBounds(&tBounds);
44 if (bBounds.intersect(tBounds)) {
45 hits[bIndex] = tIndex;
46 value = true;
47 break;
48 }
49 }
50 }
51 return false;
52 }
54 bool SkHitTest::enable(SkAnimateMaker&) {
55 for (int bIndex = 0; bIndex < bullets.count(); bIndex++) {
56 SkDisplayable* bullet = bullets[bIndex];
57 bullet->enableBounder();
58 }
59 for (int tIndex = 0; tIndex < targets.count(); tIndex++) {
60 SkDisplayable* target = targets[tIndex];
61 target->enableBounder();
62 }
63 return false;
64 }
66 bool SkHitTest::hasEnable() const {
67 return true;
68 }
70 const SkMemberInfo* SkHitTest::preferredChild(SkDisplayTypes) {
71 if (bullets.count() == 0)
72 return getMember("bullets");
73 return getMember("targets"); // !!! cwap! need to refer to member through enum like kScope instead
74 }