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