SkDisplayBounds.cpp revision 03202c9c3dfbf8c4feb0a1ee9b3680817e633f58
1/* libs/graphics/animator/SkDisplayBounds.cpp 2** 3** Copyright 2006, The Android Open Source Project 4** 5** Licensed under the Apache License, Version 2.0 (the "License"); 6** you may not use this file except in compliance with the License. 7** You may obtain a copy of the License at 8** 9** http://www.apache.org/licenses/LICENSE-2.0 10** 11** Unless required by applicable law or agreed to in writing, software 12** distributed under the License is distributed on an "AS IS" BASIS, 13** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14** See the License for the specific language governing permissions and 15** limitations under the License. 16*/ 17 18#include "SkDisplayBounds.h" 19#include "SkAnimateMaker.h" 20 21#if SK_USE_CONDENSED_INFO == 0 22 23const SkMemberInfo SkDisplayBounds::fInfo[] = { 24 SK_MEMBER_INHERITED, 25 SK_MEMBER(inval, Boolean) 26}; 27 28#endif 29 30DEFINE_GET_MEMBER(SkDisplayBounds); 31 32SkDisplayBounds::SkDisplayBounds() : inval(false) { 33} 34 35bool SkDisplayBounds::draw(SkAnimateMaker& maker) { 36 maker.fDisplayList.fUnionBounds = SkToBool(inval); 37 maker.fDisplayList.fDrawBounds = false; 38 fBounds.setEmpty(); 39 bool result = INHERITED::draw(maker); 40 maker.fDisplayList.fUnionBounds = false; 41 maker.fDisplayList.fDrawBounds = true; 42 if (inval && fBounds.isEmpty() == false) { 43 SkIRect& rect = maker.fDisplayList.fInvalBounds; 44 maker.fDisplayList.fHasUnion = true; 45 if (rect.isEmpty()) 46 rect = fBounds; 47 else 48 rect.join(fBounds); 49 } 50 return result; 51} 52 53 54 55