/* * Copyright (C) 2011 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.android.settings.drawable; import android.graphics.Canvas; import android.graphics.ColorFilter; import android.graphics.Rect; import android.graphics.Region; import android.graphics.drawable.Drawable; import android.view.View; import com.android.internal.util.Preconditions; /** * Base wrapper that delegates all calls to another {@link Drawable}. The * wrapped {@link Drawable} <em>must</em> be fully released from any * {@link View} before wrapping, otherwise internal {@link Drawable.Callback} * may be dropped. */ public class DrawableWrapper extends Drawable implements Drawable.Callback { private final Drawable mDrawable; public DrawableWrapper(Drawable drawable) { mDrawable = Preconditions.checkNotNull(drawable); mDrawable.setCallback(this); } @Override public void draw(Canvas canvas) { mDrawable.draw(canvas); } @Override public void setBounds(int left, int top, int right, int bottom) { super.setBounds(left, top, right, bottom); mDrawable.setBounds(left, top, right, bottom); } @Override public void setChangingConfigurations(int configs) { mDrawable.setChangingConfigurations(configs); } @Override public int getChangingConfigurations() { return mDrawable.getChangingConfigurations(); } @Override public void setDither(boolean dither) { mDrawable.setDither(dither); } @Override public void setFilterBitmap(boolean filter) { mDrawable.setFilterBitmap(filter); } @Override public void setAlpha(int alpha) { mDrawable.setAlpha(alpha); } @Override public void setColorFilter(ColorFilter cf) { mDrawable.setColorFilter(cf); } @Override public boolean isStateful() { return mDrawable.isStateful(); } @Override public boolean setState(final int[] stateSet) { return mDrawable.setState(stateSet); } @Override public int[] getState() { return mDrawable.getState(); } @Override public void jumpToCurrentState() { mDrawable.jumpToCurrentState(); } @Override public Drawable getCurrent() { return mDrawable.getCurrent(); } @Override public boolean setVisible(boolean visible, boolean restart) { return super.setVisible(visible, restart) || mDrawable.setVisible(visible, restart); } @Override public int getOpacity() { return mDrawable.getOpacity(); } @Override public Region getTransparentRegion() { return mDrawable.getTransparentRegion(); } @Override public int getIntrinsicWidth() { return mDrawable.getIntrinsicWidth(); } @Override public int getIntrinsicHeight() { return mDrawable.getIntrinsicHeight(); } @Override public int getMinimumWidth() { return mDrawable.getMinimumWidth(); } @Override public int getMinimumHeight() { return mDrawable.getMinimumHeight(); } @Override public boolean getPadding(Rect padding) { return mDrawable.getPadding(padding); } /** {@inheritDoc} */ public void invalidateDrawable(Drawable who) { invalidateSelf(); } /** {@inheritDoc} */ public void scheduleDrawable(Drawable who, Runnable what, long when) { scheduleSelf(what, when); } /** {@inheritDoc} */ public void unscheduleDrawable(Drawable who, Runnable what) { unscheduleSelf(what); } }