11cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger 21cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger/* 31cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger * Copyright 2006 The Android Open Source Project 41cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger * 51cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger * Use of this source code is governed by a BSD-style license that can be 61cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger * found in the LICENSE file. 71cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger */ 81cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger 90910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project 100910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#include "SkDisplayBounds.h" 110910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#include "SkAnimateMaker.h" 120910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project 130910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#if SK_USE_CONDENSED_INFO == 0 140910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project 150910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Projectconst SkMemberInfo SkDisplayBounds::fInfo[] = { 160910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project SK_MEMBER_INHERITED, 170910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project SK_MEMBER(inval, Boolean) 180910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project}; 190910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project 200910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#endif 210910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project 220910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source ProjectDEFINE_GET_MEMBER(SkDisplayBounds); 230910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project 240910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source ProjectSkDisplayBounds::SkDisplayBounds() : inval(false) { 250910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project} 260910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project 270910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Projectbool SkDisplayBounds::draw(SkAnimateMaker& maker) { 280910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project maker.fDisplayList.fUnionBounds = SkToBool(inval); 290910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project maker.fDisplayList.fDrawBounds = false; 300910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project fBounds.setEmpty(); 310910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project bool result = INHERITED::draw(maker); 320910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project maker.fDisplayList.fUnionBounds = false; 330910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project maker.fDisplayList.fDrawBounds = true; 340910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project if (inval && fBounds.isEmpty() == false) { 350910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project SkIRect& rect = maker.fDisplayList.fInvalBounds; 360910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project maker.fDisplayList.fHasUnion = true; 370910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project if (rect.isEmpty()) 380910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project rect = fBounds; 390910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project else 400910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project rect.join(fBounds); 410910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project } 420910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project return result; 430910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project} 440910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project 450910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project 460910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project 47