1ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com
2ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com/*
3ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com * Copyright 2006 The Android Open Source Project
4ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com *
5ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com * Use of this source code is governed by a BSD-style license that can be
6ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com * found in the LICENSE file.
7ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com */
8ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com
98a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
108a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#include "SkDisplayBounds.h"
118a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#include "SkAnimateMaker.h"
128a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
138a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#if SK_USE_CONDENSED_INFO == 0
148a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
158a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.comconst SkMemberInfo SkDisplayBounds::fInfo[] = {
168a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    SK_MEMBER_INHERITED,
178a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    SK_MEMBER(inval, Boolean)
188a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com};
198a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
208a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#endif
218a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
228a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.comDEFINE_GET_MEMBER(SkDisplayBounds);
238a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
248a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.comSkDisplayBounds::SkDisplayBounds() : inval(false) {
258a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com}
268a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
278a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.combool SkDisplayBounds::draw(SkAnimateMaker& maker) {
288a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    maker.fDisplayList.fUnionBounds = SkToBool(inval);
298a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    maker.fDisplayList.fDrawBounds = false;
308a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    fBounds.setEmpty();
318a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    bool result = INHERITED::draw(maker);
328a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    maker.fDisplayList.fUnionBounds = false;
338a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    maker.fDisplayList.fDrawBounds = true;
348a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    if (inval && fBounds.isEmpty() == false) {
358a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com        SkIRect& rect = maker.fDisplayList.fInvalBounds;
368a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com        maker.fDisplayList.fHasUnion = true;
378a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com        if (rect.isEmpty())
388a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com            rect = fBounds;
39d6176b0dcacb124539e0cfd051e6d93a9782f020rmistry@google.com        else
408a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com            rect.join(fBounds);
418a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    }
428a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    return result;
438a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com}
44