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#ifndef SkBoundable_DEFINED
110910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#define SkBoundable_DEFINED
120910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
130910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#include "SkDrawable.h"
140910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#include "SkRect.h"
150910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
160910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Projectclass SkBoundable : public SkDrawable {
170910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Projectpublic:
180910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    SkBoundable();
190910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    virtual void clearBounder();
200910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    virtual void enableBounder();
210910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    virtual void getBounds(SkRect* );
220910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    bool hasBounds() { return fBounds.fLeft != (int16_t)0x8000U; }
230910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    void setBounds(SkIRect& bounds) { fBounds = bounds; }
240910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Projectprotected:
250910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    void clearBounds() { fBounds.fLeft = (int16_t) SkToU16(0x8000); }; // mark bounds as unset
260910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    SkIRect fBounds;
270910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Projectprivate:
280910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    typedef SkDrawable INHERITED;
290910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project};
300910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
310910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Projectclass SkBoundableAuto {
320910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Projectpublic:
330910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    SkBoundableAuto(SkBoundable* boundable, SkAnimateMaker& maker);
340910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    ~SkBoundableAuto();
350910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Projectprivate:
360910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    SkBoundable* fBoundable;
370910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    SkAnimateMaker& fMaker;
380910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    SkBoundableAuto& operator= (const SkBoundableAuto& );
390910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project};
400910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
410910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#endif // SkBoundable_DEFINED
420910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
43