//
// Copyright (c) 2014 VK.com
//
// Permission is hereby granted, free of charge, to any person obtaining a copy of
// this software and associated documentation files (the "Software"), to deal in
// the Software without restriction, including without limitation the rights to
// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
// the Software, and to permit persons to whom the Software is furnished to do so,
// subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in all
// copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
//
package com.vk.sdk.api.httpClient;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Handler;
import android.os.Looper;
public class VKImageOperation extends VKHttpOperation<Bitmap> {
public float imageDensity;
/**
* Create new operation for loading prepared Http request.
*
* @param imageUrl URL for image
*/
public VKImageOperation(String imageUrl) {
super(new VKHttpClient.VKHTTPRequest(imageUrl));
}
@Override
public Bitmap getResultObject() {
byte[] response = getResponseData();
Bitmap image = BitmapFactory.decodeByteArray(response, 0, response.length);
if (imageDensity > 0) {
image = Bitmap.createScaledBitmap(image, (int) (image.getWidth() * imageDensity), (int) (image.getHeight() * imageDensity), true);
}
return image;
}
/**
* Set listener for current operation
*
* @param listener Listener subclasses VKHTTPOperationCompleteListener
*/
public void setImageOperationListener(final VKImageOperationListener listener) {
this.setCompleteListener(new VKOperationCompleteListener() {
@Override
public void onComplete() {
if (VKImageOperation.this.state() != VKOperationState.Finished || mLastException != null) {
listener.onError(VKImageOperation.this, generateError(mLastException));
} else {
final Bitmap result = getResultObject();
new Handler(Looper.getMainLooper()).post(new Runnable() {
@Override
public void run() {
listener.onComplete(VKImageOperation.this, result);
}
});
}
}
});
}
/**
* Class representing operation listener for VKHttpOperation
*/
public static abstract class VKImageOperationListener extends VKAbstractCompleteListener<VKImageOperation, Bitmap> {
}
}