| /* | |
| * Copyright 2006 The Android Open Source Project | |
| * | |
| * Use of this source code is governed by a BSD-style license that can be | |
| * found in the LICENSE file. | |
| */ | |
| #include "SkDisplayBounds.h" | |
| #include "SkAnimateMaker.h" | |
| #if SK_USE_CONDENSED_INFO == 0 | |
| const SkMemberInfo SkDisplayBounds::fInfo[] = { | |
| SK_MEMBER_INHERITED, | |
| SK_MEMBER(inval, Boolean) | |
| }; | |
| #endif | |
| DEFINE_GET_MEMBER(SkDisplayBounds); | |
| SkDisplayBounds::SkDisplayBounds() : inval(false) { | |
| } | |
| bool SkDisplayBounds::draw(SkAnimateMaker& maker) { | |
| maker.fDisplayList.fUnionBounds = SkToBool(inval); | |
| maker.fDisplayList.fDrawBounds = false; | |
| fBounds.setEmpty(); | |
| bool result = INHERITED::draw(maker); | |
| maker.fDisplayList.fUnionBounds = false; | |
| maker.fDisplayList.fDrawBounds = true; | |
| if (inval && fBounds.isEmpty() == false) { | |
| SkIRect& rect = maker.fDisplayList.fInvalBounds; | |
| maker.fDisplayList.fHasUnion = true; | |
| if (rect.isEmpty()) | |
| rect = fBounds; | |
| else | |
| rect.join(fBounds); | |
| } | |
| return result; | |
| } |