blob: 7e31ea53832ba77afcaf2dbcba8e4ef61390b072 [file] [log] [blame]
/*
* Copyright (C) 2010 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.monkeyrunner.adb.image;
import com.android.ddmlib.RawImage;
import com.android.monkeyrunner.MonkeyDevice;
import com.android.monkeyrunner.adb.AdbBackend;
import com.android.monkeyrunner.adb.AdbMonkeyImage;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectOutputStream;
import java.io.Serializable;
/**
* Utility program to capture raw and converted images from a device and write them to a file.
* This is used to generate the test data for ImageUtilsTest.
*/
public class CaptureRawAndConvertedImage {
public static class MonkeyRunnerRawImage implements Serializable {
public int version;
public int bpp;
public int size;
public int width;
public int height;
public int red_offset;
public int red_length;
public int blue_offset;
public int blue_length;
public int green_offset;
public int green_length;
public int alpha_offset;
public int alpha_length;
public byte[] data;
public MonkeyRunnerRawImage(RawImage rawImage) {
version = rawImage.version;
bpp = rawImage.bpp;
size = rawImage.size;
width = rawImage.width;
height = rawImage.height;
red_offset = rawImage.red_offset;
red_length = rawImage.red_length;
blue_offset = rawImage.blue_offset;
blue_length = rawImage.blue_length;
green_offset = rawImage.green_offset;
green_length = rawImage.green_length;
alpha_offset = rawImage.alpha_offset;
alpha_length = rawImage.alpha_length;
data = rawImage.data;
}
public RawImage toRawImage() {
RawImage rawImage = new RawImage();
rawImage.version = version;
rawImage.bpp = bpp;
rawImage.size = size;
rawImage.width = width;
rawImage.height = height;
rawImage.red_offset = red_offset;
rawImage.red_length = red_length;
rawImage.blue_offset = blue_offset;
rawImage.blue_length = blue_length;
rawImage.green_offset = green_offset;
rawImage.green_length = green_length;
rawImage.alpha_offset = alpha_offset;
rawImage.alpha_length = alpha_length;
rawImage.data = data;
return rawImage;
}
}
private static void writeOutImage(RawImage screenshot, String name) throws IOException {
ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream(name));
out.writeObject(new MonkeyRunnerRawImage(screenshot));
out.close();
}
public static void main(String[] args) throws IOException {
AdbBackend backend = new AdbBackend();
MonkeyDevice device = backend.waitForConnection();
AdbMonkeyImage snapshot = (AdbMonkeyImage) device.takeSnapshot();
// write out to a file
snapshot.writeToFile("output.png", "png");
writeOutImage(snapshot.getRawImage(), "output.raw");
System.exit(0);
}
}