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