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 "SkBoundable.h" 11bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com#include "SkAnimateMaker.h" 12bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com#include "SkCanvas.h" 13bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com 14bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.comSkBoundable::SkBoundable() { 15bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com clearBounds(); 16bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com fBounds.fTop = 0; 17bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com fBounds.fRight = 0; 18bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com fBounds.fBottom = 0; 19bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com} 20bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com 21bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.comvoid SkBoundable::clearBounder() { 22bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com fBounds.fLeft = 0x7fff; 23bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com} 24bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com 25bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.comvoid SkBoundable::getBounds(SkRect* rect) { 26bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com SkASSERT(rect); 27bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com if (fBounds.fLeft == (int16_t)0x8000U) { 28bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com INHERITED::getBounds(rect); 29bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com return; 30bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com } 31bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com rect->fLeft = SkIntToScalar(fBounds.fLeft); 32bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com rect->fTop = SkIntToScalar(fBounds.fTop); 33bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com rect->fRight = SkIntToScalar(fBounds.fRight); 34bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com rect->fBottom = SkIntToScalar(fBounds.fBottom); 35bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com} 36bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com 37bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.comvoid SkBoundable::enableBounder() { 38bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com fBounds.fLeft = 0; 39bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com} 40bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com 41bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com 42dfb3e3c0faadabc131ac1532e29ca71667328513rmistry@google.comSkBoundableAuto::SkBoundableAuto(SkBoundable* boundable, 43bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com SkAnimateMaker& maker) : fBoundable(boundable), fMaker(maker) { 44bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com if (fBoundable->hasBounds()) { 45bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com fMaker.fCanvas->setBounder(&maker.fDisplayList); 46bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com fMaker.fDisplayList.fBounds.setEmpty(); 47bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com } 48bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com} 49bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com 50bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.comSkBoundableAuto::~SkBoundableAuto() { 51bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com if (fBoundable->hasBounds() == false) 52bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com return; 53bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com fMaker.fCanvas->setBounder(NULL); 54bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com fBoundable->setBounds(fMaker.fDisplayList.fBounds); 55bcd4d5ab12df062500a4df90ec90d0f2d764931reed@android.com} 56