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
15const SkMemberInfo SkDisplayBounds::fInfo[] = {
16    SK_MEMBER_INHERITED,
17    SK_MEMBER(inval, Boolean)
18};
19
20#endif
21
22DEFINE_GET_MEMBER(SkDisplayBounds);
23
24SkDisplayBounds::SkDisplayBounds() : inval(false) {
25}
26
27bool 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