1package com.android.rs.refocus.image;
2
3import com.android.rs.refocus.DepthTransform;
4
5/**
6 *
7 * An implementation of {@code DepthTransform} that uses a linear 8-bit
8 * quantization.
9 *
10 * @author chernand@google.com (Carlos Hernandez)
11 */
12public class RangeLinearDepthTransform implements DepthTransform {
13  public static final String FORMAT = "RangeLinear";
14
15  private final float near;
16  private final float far;
17
18  public RangeLinearDepthTransform(float near, float far) {
19    this.near = near;
20    this.far = far;
21  }
22
23  @Override
24  public float getNear() {
25    return near;
26  }
27
28  @Override
29  public float getFar() {
30    return far;
31  }
32
33  @Override
34  public String getFormat() {
35    return FORMAT;
36  }
37
38  @Override
39  public int quantize(float value) {
40    return Math.max(0, Math.min(255,
41        (int) ((value - near) / (far - near) * 255f)));
42  }
43
44  @Override
45  public float reconstruct(int value) {
46    return near + (far - near) * Math.max(0, Math.min(255, value)) / 255f;
47  }
48}
49