11cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger 21cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger/* 31cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger * Copyright 2006 The Android Open Source Project 41cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger * 51cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger * Use of this source code is governed by a BSD-style license that can be 61cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger * found in the LICENSE file. 71cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger */ 81cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger 90910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project 100910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#include "SkBoundable.h" 110910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#include "SkAnimateMaker.h" 120910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#include "SkCanvas.h" 130910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project 140910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source ProjectSkBoundable::SkBoundable() { 150910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project clearBounds(); 160910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project fBounds.fTop = 0; 170910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project fBounds.fRight = 0; 180910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project fBounds.fBottom = 0; 190910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project} 200910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project 210910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Projectvoid SkBoundable::clearBounder() { 220910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project fBounds.fLeft = 0x7fff; 230910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project} 240910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project 250910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Projectvoid SkBoundable::getBounds(SkRect* rect) { 260910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project SkASSERT(rect); 270910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project if (fBounds.fLeft == (int16_t)0x8000U) { 280910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project INHERITED::getBounds(rect); 290910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project return; 300910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project } 310910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project rect->fLeft = SkIntToScalar(fBounds.fLeft); 320910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project rect->fTop = SkIntToScalar(fBounds.fTop); 330910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project rect->fRight = SkIntToScalar(fBounds.fRight); 340910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project rect->fBottom = SkIntToScalar(fBounds.fBottom); 350910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project} 360910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project 370910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Projectvoid SkBoundable::enableBounder() { 380910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project fBounds.fLeft = 0; 390910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project} 400910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project 410910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project 420910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source ProjectSkBoundableAuto::SkBoundableAuto(SkBoundable* boundable, 430910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project SkAnimateMaker& maker) : fBoundable(boundable), fMaker(maker) { 440910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project if (fBoundable->hasBounds()) { 450910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project fMaker.fCanvas->setBounder(&maker.fDisplayList); 460910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project fMaker.fDisplayList.fBounds.setEmpty(); 470910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project } 480910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project} 490910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project 500910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source ProjectSkBoundableAuto::~SkBoundableAuto() { 510910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project if (fBoundable->hasBounds() == false) 520910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project return; 530910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project fMaker.fCanvas->setBounder(NULL); 540910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project fBoundable->setBounds(fMaker.fDisplayList.fBounds); 550910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project} 560910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project 57