blob: 9bcadad4c9bfeec7f251aefecbd6b865121b2100 [file] [log] [blame]
// Copyright 2014 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
package org.chromium.ui.resources.dynamics;
import android.graphics.Bitmap;
import android.graphics.Rect;
import org.chromium.ui.resources.ResourceFactory;
import org.chromium.ui.resources.statics.NinePatchData;
/**
* A basic implementation of {@link DynamicResource} to handle updatable bitmaps.
*/
public class BitmapDynamicResource implements DynamicResource {
private static final Rect EMPTY_RECT = new Rect();
private final int mResId;
private Bitmap mBitmap;
private final Rect mSize = new Rect();
private boolean mIsDirty = true;
public BitmapDynamicResource(int resourceId) {
mResId = resourceId;
}
/**
* @return A unique id for this resource.
*/
public int getResId() {
return mResId;
}
/**
* @param bitmap A bitmap to update this resource.
*/
public void setBitmap(Bitmap bitmap) {
// Not updating bitmap is still bad, but better than a crash. We will still crash if there
// is no bitmap to start with. See http://crbug.com/471234 for more.
if (bitmap == null) return;
mIsDirty = true;
if (mBitmap != null) mBitmap.recycle();
mBitmap = bitmap;
mSize.set(0, 0, mBitmap.getWidth(), mBitmap.getHeight());
}
@Override
public Bitmap getBitmap() {
mIsDirty = false;
return mBitmap;
}
@Override
public Rect getBitmapSize() {
return mSize;
}
@Override
public long createNativeResource() {
return ResourceFactory.createBitmapResource(null);
}
@Override
public NinePatchData getNinePatchData() {
return null;
}
@Override
public boolean isDirty() {
return mIsDirty;
}
}