1 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 */ 8 9 10 #include "SkDisplayBounds.h" 11 #include "SkAnimateMaker.h" 12 13 #if SK_USE_CONDENSED_INFO == 0 14 15 const SkMemberInfo SkDisplayBounds::fInfo[] = { 16 SK_MEMBER_INHERITED, 17 SK_MEMBER(inval, Boolean) 18 }; 19 20 #endif 21 22 DEFINE_GET_MEMBER(SkDisplayBounds); 23 24 SkDisplayBounds::SkDisplayBounds() : inval(false) { 25 } 26 27 bool SkDisplayBounds::draw(SkAnimateMaker& maker) { 28 maker.fDisplayList.fUnionBounds = SkToBool(inval); 29 maker.fDisplayList.fDrawBounds = false; 30 fBounds.setEmpty(); 31 bool result = INHERITED::draw(maker); 32 maker.fDisplayList.fUnionBounds = false; 33 maker.fDisplayList.fDrawBounds = true; 34 if (inval && fBounds.isEmpty() == false) { 35 SkIRect& rect = maker.fDisplayList.fInvalBounds; 36 maker.fDisplayList.fHasUnion = true; 37 if (rect.isEmpty()) 38 rect = fBounds; 39 else 40 rect.join(fBounds); 41 } 42 return result; 43 } 44