ZoomedCropRegion.java revision 9ad0984f36ff9cd133c61c4e979032988b77a995
19c94ab32a69a1ad3642a0f1e38e68bcfd97d3511Puneet Lall/* 29c94ab32a69a1ad3642a0f1e38e68bcfd97d3511Puneet Lall * Copyright (C) 2014 The Android Open Source Project 39c94ab32a69a1ad3642a0f1e38e68bcfd97d3511Puneet Lall * 49c94ab32a69a1ad3642a0f1e38e68bcfd97d3511Puneet Lall * Licensed under the Apache License, Version 2.0 (the "License"); 59c94ab32a69a1ad3642a0f1e38e68bcfd97d3511Puneet Lall * you may not use this file except in compliance with the License. 69c94ab32a69a1ad3642a0f1e38e68bcfd97d3511Puneet Lall * You may obtain a copy of the License at 79c94ab32a69a1ad3642a0f1e38e68bcfd97d3511Puneet Lall * 89c94ab32a69a1ad3642a0f1e38e68bcfd97d3511Puneet Lall * http://www.apache.org/licenses/LICENSE-2.0 99c94ab32a69a1ad3642a0f1e38e68bcfd97d3511Puneet Lall * 109c94ab32a69a1ad3642a0f1e38e68bcfd97d3511Puneet Lall * Unless required by applicable law or agreed to in writing, software 119c94ab32a69a1ad3642a0f1e38e68bcfd97d3511Puneet Lall * distributed under the License is distributed on an "AS IS" BASIS, 129c94ab32a69a1ad3642a0f1e38e68bcfd97d3511Puneet Lall * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 139c94ab32a69a1ad3642a0f1e38e68bcfd97d3511Puneet Lall * See the License for the specific language governing permissions and 149c94ab32a69a1ad3642a0f1e38e68bcfd97d3511Puneet Lall * limitations under the License. 159c94ab32a69a1ad3642a0f1e38e68bcfd97d3511Puneet Lall */ 169c94ab32a69a1ad3642a0f1e38e68bcfd97d3511Puneet Lall 179c94ab32a69a1ad3642a0f1e38e68bcfd97d3511Puneet Lallpackage com.android.camera.one.v2.common; 189c94ab32a69a1ad3642a0f1e38e68bcfd97d3511Puneet Lall 199c94ab32a69a1ad3642a0f1e38e68bcfd97d3511Puneet Lallimport android.graphics.Rect; 209c94ab32a69a1ad3642a0f1e38e68bcfd97d3511Puneet Lallimport android.hardware.camera2.CameraCharacteristics; 219c94ab32a69a1ad3642a0f1e38e68bcfd97d3511Puneet Lall 229ad0984f36ff9cd133c61c4e979032988b77a995Puneet Lallimport com.google.common.base.Supplier; 239c94ab32a69a1ad3642a0f1e38e68bcfd97d3511Puneet Lall 249c94ab32a69a1ad3642a0f1e38e68bcfd97d3511Puneet Lall/** 2512f608f3d2089439a108788a1908941eea4277b9Puneet Lall * Computes the current crop region based on the current zoom. 269c94ab32a69a1ad3642a0f1e38e68bcfd97d3511Puneet Lall */ 279ad0984f36ff9cd133c61c4e979032988b77a995Puneet Lallpublic class ZoomedCropRegion implements Supplier<Rect> { 289c94ab32a69a1ad3642a0f1e38e68bcfd97d3511Puneet Lall private final CameraCharacteristics mCharacteristics; 299ad0984f36ff9cd133c61c4e979032988b77a995Puneet Lall private final Supplier<Float> mZoom; 309c94ab32a69a1ad3642a0f1e38e68bcfd97d3511Puneet Lall 319ad0984f36ff9cd133c61c4e979032988b77a995Puneet Lall public ZoomedCropRegion(CameraCharacteristics characteristics, Supplier<Float> zoom) { 329c94ab32a69a1ad3642a0f1e38e68bcfd97d3511Puneet Lall mCharacteristics = characteristics; 339c94ab32a69a1ad3642a0f1e38e68bcfd97d3511Puneet Lall mZoom = zoom; 349c94ab32a69a1ad3642a0f1e38e68bcfd97d3511Puneet Lall } 359c94ab32a69a1ad3642a0f1e38e68bcfd97d3511Puneet Lall 369c94ab32a69a1ad3642a0f1e38e68bcfd97d3511Puneet Lall @Override 379ad0984f36ff9cd133c61c4e979032988b77a995Puneet Lall public Rect get() { 389c94ab32a69a1ad3642a0f1e38e68bcfd97d3511Puneet Lall float zoom = mZoom.get(); 399c94ab32a69a1ad3642a0f1e38e68bcfd97d3511Puneet Lall Rect sensor = mCharacteristics.get(CameraCharacteristics.SENSOR_INFO_ACTIVE_ARRAY_SIZE); 409c94ab32a69a1ad3642a0f1e38e68bcfd97d3511Puneet Lall int xCenter = sensor.width() / 2; 419c94ab32a69a1ad3642a0f1e38e68bcfd97d3511Puneet Lall int yCenter = sensor.height() / 2; 429c94ab32a69a1ad3642a0f1e38e68bcfd97d3511Puneet Lall int xDelta = (int) (0.5f * sensor.width() / zoom); 439c94ab32a69a1ad3642a0f1e38e68bcfd97d3511Puneet Lall int yDelta = (int) (0.5f * sensor.height() / zoom); 449c94ab32a69a1ad3642a0f1e38e68bcfd97d3511Puneet Lall return new Rect(xCenter - xDelta, yCenter - yDelta, xCenter + xDelta, yCenter + yDelta); 459c94ab32a69a1ad3642a0f1e38e68bcfd97d3511Puneet Lall } 469c94ab32a69a1ad3642a0f1e38e68bcfd97d3511Puneet Lall} 47