1ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Copyright 2006 The Android Open Source Project 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Use of this source code is governed by a BSD-style license that can be 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * found in the LICENSE file. 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "SkBoundable.h" 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "SkAnimateMaker.h" 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "SkCanvas.h" 13ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)SkBoundable::SkBoundable() { 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) clearBounds(); 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fBounds.fTop = 0; 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fBounds.fRight = 0; 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fBounds.fBottom = 0; 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void SkBoundable::clearBounder() { 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) fBounds.fLeft = 0x7fff; 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 25eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochvoid SkBoundable::getBounds(SkRect* rect) { 26eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch SkASSERT(rect); 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (fBounds.fLeft == (int16_t)0x8000U) { 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) INHERITED::getBounds(rect); 2968043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) return; 3068043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) } 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) rect->fLeft = SkIntToScalar(fBounds.fLeft); 328bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) rect->fTop = SkIntToScalar(fBounds.fTop); 338bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) rect->fRight = SkIntToScalar(fBounds.fRight); 348bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) rect->fBottom = SkIntToScalar(fBounds.fBottom); 358bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)} 3668043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) 378bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)void SkBoundable::enableBounder() { 3858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) fBounds.fLeft = 0; 3958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)} 405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 41f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 42f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)SkBoundableAuto::SkBoundableAuto(SkBoundable* boundable, 4368043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) SkAnimateMaker& maker) : fBoundable(boundable), fMaker(maker) { 4458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) if (fBoundable->hasBounds()) { 4558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)// fMaker.fCanvas->setBounder(&maker.fDisplayList); 4658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) fMaker.fDisplayList.fBounds.setEmpty(); 4758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) } 488bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)} 498bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) 5058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)SkBoundableAuto::~SkBoundableAuto() { 5158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) if (fBoundable->hasBounds() == false) 5258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) return; 5358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)// fMaker.fCanvas->setBounder(NULL); 54a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) fBoundable->setBounds(fMaker.fDisplayList.fBounds); 55a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)} 56a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)