180bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru 280bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru/* 380bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru * Copyright 2006 The Android Open Source Project 480bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru * 580bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru * Use of this source code is governed by a BSD-style license that can be 680bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru * found in the LICENSE file. 780bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru */ 880bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru 980bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru 1080bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru#include "SkBoundable.h" 1180bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru#include "SkAnimateMaker.h" 1280bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru#include "SkCanvas.h" 1380bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru 1480bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste QueruSkBoundable::SkBoundable() { 1580bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru clearBounds(); 1680bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru fBounds.fTop = 0; 1780bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru fBounds.fRight = 0; 1880bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru fBounds.fBottom = 0; 1980bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru} 2080bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru 2180bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queruvoid SkBoundable::clearBounder() { 2280bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru fBounds.fLeft = 0x7fff; 2380bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru} 2480bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru 2580bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queruvoid SkBoundable::getBounds(SkRect* rect) { 2680bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru SkASSERT(rect); 2780bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru if (fBounds.fLeft == (int16_t)0x8000U) { 2880bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru INHERITED::getBounds(rect); 2980bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru return; 3080bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru } 3180bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru rect->fLeft = SkIntToScalar(fBounds.fLeft); 3280bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru rect->fTop = SkIntToScalar(fBounds.fTop); 3380bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru rect->fRight = SkIntToScalar(fBounds.fRight); 3480bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru rect->fBottom = SkIntToScalar(fBounds.fBottom); 3580bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru} 3680bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru 3780bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queruvoid SkBoundable::enableBounder() { 3880bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru fBounds.fLeft = 0; 3980bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru} 4080bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru 4180bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru 4280bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste QueruSkBoundableAuto::SkBoundableAuto(SkBoundable* boundable, 4380bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru SkAnimateMaker& maker) : fBoundable(boundable), fMaker(maker) { 4480bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru if (fBoundable->hasBounds()) { 4580bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru fMaker.fCanvas->setBounder(&maker.fDisplayList); 4680bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru fMaker.fDisplayList.fBounds.setEmpty(); 4780bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru } 4880bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru} 4980bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru 5080bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste QueruSkBoundableAuto::~SkBoundableAuto() { 5180bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru if (fBoundable->hasBounds() == false) 5280bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru return; 5380bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru fMaker.fCanvas->setBounder(NULL); 5480bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru fBoundable->setBounds(fMaker.fDisplayList.fBounds); 5580bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru} 56