| |
| /* |
| * 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; |
| } |