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 "SkBoundable.h"
118a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#include "SkAnimateMaker.h"
128a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#include "SkCanvas.h"
138a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
148a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.comSkBoundable::SkBoundable() {
158a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    clearBounds();
168a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    fBounds.fTop = 0;
178a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    fBounds.fRight = 0;
188a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    fBounds.fBottom = 0;
198a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com}
208a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
218a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.comvoid SkBoundable::clearBounder() {
228a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    fBounds.fLeft = 0x7fff;
238a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com}
248a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
258a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.comvoid SkBoundable::getBounds(SkRect* rect) {
268a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    SkASSERT(rect);
278a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    if (fBounds.fLeft == (int16_t)0x8000U) {
288a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com        INHERITED::getBounds(rect);
298a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com        return;
308a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    }
318a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    rect->fLeft = SkIntToScalar(fBounds.fLeft);
328a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    rect->fTop = SkIntToScalar(fBounds.fTop);
338a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    rect->fRight = SkIntToScalar(fBounds.fRight);
348a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    rect->fBottom = SkIntToScalar(fBounds.fBottom);
358a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com}
368a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
378a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.comvoid SkBoundable::enableBounder() {
388a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    fBounds.fLeft = 0;
398a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com}
408a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
418a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
42d6176b0dcacb124539e0cfd051e6d93a9782f020rmistry@google.comSkBoundableAuto::SkBoundableAuto(SkBoundable* boundable,
438a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com        SkAnimateMaker& maker) : fBoundable(boundable), fMaker(maker) {
448a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    if (fBoundable->hasBounds()) {
45868074b50b0fc3e460d2aa97c1096827fe0a1935reed//        fMaker.fCanvas->setBounder(&maker.fDisplayList);
468a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com        fMaker.fDisplayList.fBounds.setEmpty();
478a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    }
488a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com}
498a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com
508a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.comSkBoundableAuto::~SkBoundableAuto() {
518a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    if (fBoundable->hasBounds() == false)
528a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com        return;
53868074b50b0fc3e460d2aa97c1096827fe0a1935reed//    fMaker.fCanvas->setBounder(NULL);
548a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com    fBoundable->setBounds(fMaker.fDisplayList.fBounds);
558a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com}
56