/* * Copyright (C) 2015-2017 Intel Corporation * Copyright (c) 2017, Fuzhou Rockchip Electronics Co., Ltd * * 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. */ #ifndef _CAMERA3_HAL_CAMERA_WINDOW_H_ #define _CAMERA3_HAL_CAMERA_WINDOW_H_ #include #include #include "3ATypes.h" #include "FrameInfo.h" NAMESPACE_DECLARATION { class CameraWindow; /** * \struct Range * interval defined by 2 numbers. */ typedef struct Range { int start; int end; bool isEmpty() { return (start == end)? true: false; } } Range; /** * \class CameraWindow * Weighted rectangle in a coordinate system where the top left corner is 0,0 */ class CameraWindow { public: CameraWindow(); /** * Initializators */ void init(ia_coordinate topLeft,ia_coordinate bottomRight, int aWeight); void init(ia_coordinate topLeft,int width, int height, int aWeight); void init(int aWeight); /** * Queries */ bool isValid(); ia_coordinate center(){ return mCenter; } int width() const { return mWidth; } int height() const { return mHeight; } int left() const { return mXleft; } int right() const { return mXright; } int top() const { return mYtop; } int bottom() const { return mYbottom; } int weight() const { return mWeight; } int* meteringRectangle(); /** * Operations * This methods modify the values of the window */ CameraWindow scale(float widthRatio, float heightRatio); // in place modification void clip(CameraWindow &clippingRegion); /** * Debug support */ void dump(); private: inline void _calculateCenter(); Range _intersect(Range range1, Range range2); private: int mXleft; int mXright; int mYtop; int mYbottom; int mWeight; int mWidth; int mHeight; ia_coordinate mCenter; int mMeteringRectangle[5]; }; } NAMESPACE_DECLARATION_END #endif // _CAMERA3_HAL_CAMERA_WINDOW_H_