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