Home | History | Annotate | Download | only in animator
      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 
     24 SkDisplayBounds::SkDisplayBounds() : inval(false) {
     25 }
     26 
     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