1685cfc0ee13d7c355ae2f4f3d225ad45e945763fepoger@google.com
2685cfc0ee13d7c355ae2f4f3d225ad45e945763fepoger@google.com/*
3685cfc0ee13d7c355ae2f4f3d225ad45e945763fepoger@google.com * Copyright 2006 The Android Open Source Project
4685cfc0ee13d7c355ae2f4f3d225ad45e945763fepoger@google.com *
5685cfc0ee13d7c355ae2f4f3d225ad45e945763fepoger@google.com * Use of this source code is governed by a BSD-style license that can be
6685cfc0ee13d7c355ae2f4f3d225ad45e945763fepoger@google.com * found in the LICENSE file.
7685cfc0ee13d7c355ae2f4f3d225ad45e945763fepoger@google.com */
8685cfc0ee13d7c355ae2f4f3d225ad45e945763fepoger@google.com
9bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com
10bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com#include "SkDisplayBounds.h"
11bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com#include "SkAnimateMaker.h"
12bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com
13bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com#if SK_USE_CONDENSED_INFO == 0
14bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com
15bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.comconst SkMemberInfo SkDisplayBounds::fInfo[] = {
16bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com    SK_MEMBER_INHERITED,
17bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com    SK_MEMBER(inval, Boolean)
18bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com};
19bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com
20bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com#endif
21bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com
22bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.comDEFINE_GET_MEMBER(SkDisplayBounds);
23bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com
24bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.comSkDisplayBounds::SkDisplayBounds() : inval(false) {
25bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com}
26bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com
27bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.combool SkDisplayBounds::draw(SkAnimateMaker& maker) {
28bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com    maker.fDisplayList.fUnionBounds = SkToBool(inval);
29bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com    maker.fDisplayList.fDrawBounds = false;
30bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com    fBounds.setEmpty();
31bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com    bool result = INHERITED::draw(maker);
32bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com    maker.fDisplayList.fUnionBounds = false;
33bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com    maker.fDisplayList.fDrawBounds = true;
34bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com    if (inval && fBounds.isEmpty() == false) {
35bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com        SkIRect& rect = maker.fDisplayList.fInvalBounds;
36bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com        maker.fDisplayList.fHasUnion = true;
37bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com        if (rect.isEmpty())
38bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com            rect = fBounds;
39dfb3e3c0faadabc131ac1532e29ca71667328513rmistry@google.com        else
40bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com            rect.join(fBounds);
41bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com    }
42bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com    return result;
43bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com}
44