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