1package com.android.rs.refocus;
2
3import android.graphics.Bitmap;
4import android.support.v8.renderscript.Allocation;
5import android.support.v8.renderscript.RenderScript;
6
7/**
8 * A class that manages the image buffers that interface between Java and Render
9 * Script. This class will be specialized for float in f32 package and for byte
10 * in u8 package.
11 *
12 * @author zhl@google.com (Li Zhang)
13 */
14public class ImageBuffersForRenderScript {
15  /**
16   * Input and output images and their corresponding Allocation to interface
17   * with Render Script. Both input and output images are unpadded images.
18   */
19  public Bitmap inputImage;
20  public Bitmap outputImage;
21  public Allocation inAllocation;
22  public Allocation outAllocation;
23
24  /**
25   * The following three member variables are used in the subclasses that extend
26   * this class. Therefore, they are protected.
27   */
28  public int imageWidthPadded;
29  public int imageHeightPadded;
30  public int paddedMargin;
31
32  public ImageBuffersForRenderScript(Bitmap inImage, int margin,
33      RenderScript renderScript) {
34    inputImage = inImage;
35    inAllocation = Allocation.createFromBitmap(renderScript, inputImage);
36
37    outputImage = Bitmap.createBitmap(inputImage.getWidth(),
38        inputImage.getHeight(), Bitmap.Config.ARGB_8888);
39    outAllocation = Allocation.createFromBitmap(renderScript, outputImage);
40
41    paddedMargin = margin;
42    imageWidthPadded = inputImage.getWidth() + 2 * margin;
43    imageHeightPadded = inputImage.getHeight() + 2 * margin;
44  }
45}
46