106936feb07bf6fbef262e4adebeb8e53910d8cf4Santos Cordon/* 206936feb07bf6fbef262e4adebeb8e53910d8cf4Santos Cordon * Copyright (C) 2017 The Android Open Source Project 306936feb07bf6fbef262e4adebeb8e53910d8cf4Santos Cordon * 406936feb07bf6fbef262e4adebeb8e53910d8cf4Santos Cordon * Licensed under the Apache License, Version 2.0 (the "License"); 506936feb07bf6fbef262e4adebeb8e53910d8cf4Santos Cordon * you may not use this file except in compliance with the License. 606936feb07bf6fbef262e4adebeb8e53910d8cf4Santos Cordon * You may obtain a copy of the License at 706936feb07bf6fbef262e4adebeb8e53910d8cf4Santos Cordon * 806936feb07bf6fbef262e4adebeb8e53910d8cf4Santos Cordon * http://www.apache.org/licenses/LICENSE-2.0 906936feb07bf6fbef262e4adebeb8e53910d8cf4Santos Cordon * 1006936feb07bf6fbef262e4adebeb8e53910d8cf4Santos Cordon * Unless required by applicable law or agreed to in writing, software 1106936feb07bf6fbef262e4adebeb8e53910d8cf4Santos Cordon * distributed under the License is distributed on an "AS IS" BASIS, 1206936feb07bf6fbef262e4adebeb8e53910d8cf4Santos Cordon * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1306936feb07bf6fbef262e4adebeb8e53910d8cf4Santos Cordon * See the License for the specific language governing permissions and 1406936feb07bf6fbef262e4adebeb8e53910d8cf4Santos Cordon * limitations under the License. 1506936feb07bf6fbef262e4adebeb8e53910d8cf4Santos Cordon */ 1606936feb07bf6fbef262e4adebeb8e53910d8cf4Santos Cordon 1706936feb07bf6fbef262e4adebeb8e53910d8cf4Santos Cordon#ifndef _LIBINPUT_DISPLAY_VIEWPORT_H 1806936feb07bf6fbef262e4adebeb8e53910d8cf4Santos Cordon#define _LIBINPUT_DISPLAY_VIEWPORT_H 1906936feb07bf6fbef262e4adebeb8e53910d8cf4Santos Cordon 2006936feb07bf6fbef262e4adebeb8e53910d8cf4Santos Cordon#include <ui/DisplayInfo.h> 2106936feb07bf6fbef262e4adebeb8e53910d8cf4Santos Cordon#include <input/Input.h> 2206936feb07bf6fbef262e4adebeb8e53910d8cf4Santos Cordon 2306936feb07bf6fbef262e4adebeb8e53910d8cf4Santos Cordonnamespace android { 2406936feb07bf6fbef262e4adebeb8e53910d8cf4Santos Cordon 2506936feb07bf6fbef262e4adebeb8e53910d8cf4Santos Cordon/* 2606936feb07bf6fbef262e4adebeb8e53910d8cf4Santos Cordon * Describes how coordinates are mapped on a physical display. 2706936feb07bf6fbef262e4adebeb8e53910d8cf4Santos Cordon * See com.android.server.display.DisplayViewport. 2806936feb07bf6fbef262e4adebeb8e53910d8cf4Santos Cordon */ 2906936feb07bf6fbef262e4adebeb8e53910d8cf4Santos Cordonstruct DisplayViewport { 3006936feb07bf6fbef262e4adebeb8e53910d8cf4Santos Cordon int32_t displayId; // -1 if invalid 3106936feb07bf6fbef262e4adebeb8e53910d8cf4Santos Cordon int32_t orientation; 3206936feb07bf6fbef262e4adebeb8e53910d8cf4Santos Cordon int32_t logicalLeft; 3306936feb07bf6fbef262e4adebeb8e53910d8cf4Santos Cordon int32_t logicalTop; 3406936feb07bf6fbef262e4adebeb8e53910d8cf4Santos Cordon int32_t logicalRight; 3506936feb07bf6fbef262e4adebeb8e53910d8cf4Santos Cordon int32_t logicalBottom; 3606936feb07bf6fbef262e4adebeb8e53910d8cf4Santos Cordon int32_t physicalLeft; 3706936feb07bf6fbef262e4adebeb8e53910d8cf4Santos Cordon int32_t physicalTop; 3806936feb07bf6fbef262e4adebeb8e53910d8cf4Santos Cordon int32_t physicalRight; 3906936feb07bf6fbef262e4adebeb8e53910d8cf4Santos Cordon int32_t physicalBottom; 4006936feb07bf6fbef262e4adebeb8e53910d8cf4Santos Cordon int32_t deviceWidth; 4106936feb07bf6fbef262e4adebeb8e53910d8cf4Santos Cordon int32_t deviceHeight; 4206936feb07bf6fbef262e4adebeb8e53910d8cf4Santos Cordon String8 uniqueId; 4306936feb07bf6fbef262e4adebeb8e53910d8cf4Santos Cordon 4406936feb07bf6fbef262e4adebeb8e53910d8cf4Santos Cordon DisplayViewport() : 4506936feb07bf6fbef262e4adebeb8e53910d8cf4Santos Cordon displayId(ADISPLAY_ID_NONE), orientation(DISPLAY_ORIENTATION_0), 4606936feb07bf6fbef262e4adebeb8e53910d8cf4Santos Cordon logicalLeft(0), logicalTop(0), logicalRight(0), logicalBottom(0), 4706936feb07bf6fbef262e4adebeb8e53910d8cf4Santos Cordon physicalLeft(0), physicalTop(0), physicalRight(0), physicalBottom(0), 4806936feb07bf6fbef262e4adebeb8e53910d8cf4Santos Cordon deviceWidth(0), deviceHeight(0) { 4906936feb07bf6fbef262e4adebeb8e53910d8cf4Santos Cordon } 5006936feb07bf6fbef262e4adebeb8e53910d8cf4Santos Cordon 5106936feb07bf6fbef262e4adebeb8e53910d8cf4Santos Cordon bool operator==(const DisplayViewport& other) const { 5206936feb07bf6fbef262e4adebeb8e53910d8cf4Santos Cordon return displayId == other.displayId 5306936feb07bf6fbef262e4adebeb8e53910d8cf4Santos Cordon && orientation == other.orientation 5406936feb07bf6fbef262e4adebeb8e53910d8cf4Santos Cordon && logicalLeft == other.logicalLeft 5506936feb07bf6fbef262e4adebeb8e53910d8cf4Santos Cordon && logicalTop == other.logicalTop 5606936feb07bf6fbef262e4adebeb8e53910d8cf4Santos Cordon && logicalRight == other.logicalRight 5706936feb07bf6fbef262e4adebeb8e53910d8cf4Santos Cordon && logicalBottom == other.logicalBottom 5806936feb07bf6fbef262e4adebeb8e53910d8cf4Santos Cordon && physicalLeft == other.physicalLeft 5906936feb07bf6fbef262e4adebeb8e53910d8cf4Santos Cordon && physicalTop == other.physicalTop 6006936feb07bf6fbef262e4adebeb8e53910d8cf4Santos Cordon && physicalRight == other.physicalRight 6106936feb07bf6fbef262e4adebeb8e53910d8cf4Santos Cordon && physicalBottom == other.physicalBottom 6206936feb07bf6fbef262e4adebeb8e53910d8cf4Santos Cordon && deviceWidth == other.deviceWidth 6306936feb07bf6fbef262e4adebeb8e53910d8cf4Santos Cordon && deviceHeight == other.deviceHeight 6406936feb07bf6fbef262e4adebeb8e53910d8cf4Santos Cordon && uniqueId == other.uniqueId; 6506936feb07bf6fbef262e4adebeb8e53910d8cf4Santos Cordon } 6606936feb07bf6fbef262e4adebeb8e53910d8cf4Santos Cordon 6706936feb07bf6fbef262e4adebeb8e53910d8cf4Santos Cordon bool operator!=(const DisplayViewport& other) const { 6806936feb07bf6fbef262e4adebeb8e53910d8cf4Santos Cordon return !(*this == other); 6906936feb07bf6fbef262e4adebeb8e53910d8cf4Santos Cordon } 7006936feb07bf6fbef262e4adebeb8e53910d8cf4Santos Cordon 7106936feb07bf6fbef262e4adebeb8e53910d8cf4Santos Cordon inline bool isValid() const { 7206936feb07bf6fbef262e4adebeb8e53910d8cf4Santos Cordon return displayId >= 0; 7306936feb07bf6fbef262e4adebeb8e53910d8cf4Santos Cordon } 7406936feb07bf6fbef262e4adebeb8e53910d8cf4Santos Cordon 7506936feb07bf6fbef262e4adebeb8e53910d8cf4Santos Cordon void setNonDisplayViewport(int32_t width, int32_t height) { 7606936feb07bf6fbef262e4adebeb8e53910d8cf4Santos Cordon displayId = ADISPLAY_ID_NONE; 7706936feb07bf6fbef262e4adebeb8e53910d8cf4Santos Cordon orientation = DISPLAY_ORIENTATION_0; 7806936feb07bf6fbef262e4adebeb8e53910d8cf4Santos Cordon logicalLeft = 0; 7906936feb07bf6fbef262e4adebeb8e53910d8cf4Santos Cordon logicalTop = 0; 8006936feb07bf6fbef262e4adebeb8e53910d8cf4Santos Cordon logicalRight = width; 8106936feb07bf6fbef262e4adebeb8e53910d8cf4Santos Cordon logicalBottom = height; 8206936feb07bf6fbef262e4adebeb8e53910d8cf4Santos Cordon physicalLeft = 0; 8306936feb07bf6fbef262e4adebeb8e53910d8cf4Santos Cordon physicalTop = 0; 8406936feb07bf6fbef262e4adebeb8e53910d8cf4Santos Cordon physicalRight = width; 8506936feb07bf6fbef262e4adebeb8e53910d8cf4Santos Cordon physicalBottom = height; 8606936feb07bf6fbef262e4adebeb8e53910d8cf4Santos Cordon deviceWidth = width; 8706936feb07bf6fbef262e4adebeb8e53910d8cf4Santos Cordon deviceHeight = height; 8806936feb07bf6fbef262e4adebeb8e53910d8cf4Santos Cordon uniqueId.clear(); 8906936feb07bf6fbef262e4adebeb8e53910d8cf4Santos Cordon } 9006936feb07bf6fbef262e4adebeb8e53910d8cf4Santos Cordon}; 9106936feb07bf6fbef262e4adebeb8e53910d8cf4Santos Cordon 9206936feb07bf6fbef262e4adebeb8e53910d8cf4Santos Cordon/** 9306936feb07bf6fbef262e4adebeb8e53910d8cf4Santos Cordon * Describes the different type of viewports supported by input flinger. 9406936feb07bf6fbef262e4adebeb8e53910d8cf4Santos Cordon * Keep in sync with values in InputManagerService.java. 9506936feb07bf6fbef262e4adebeb8e53910d8cf4Santos Cordon */ 9606936feb07bf6fbef262e4adebeb8e53910d8cf4Santos Cordonenum class ViewportType : int32_t { 9706936feb07bf6fbef262e4adebeb8e53910d8cf4Santos Cordon VIEWPORT_INTERNAL = 1, 9806936feb07bf6fbef262e4adebeb8e53910d8cf4Santos Cordon VIEWPORT_EXTERNAL = 2, 9906936feb07bf6fbef262e4adebeb8e53910d8cf4Santos Cordon VIEWPORT_VIRTUAL = 3, 10006936feb07bf6fbef262e4adebeb8e53910d8cf4Santos Cordon}; 10106936feb07bf6fbef262e4adebeb8e53910d8cf4Santos Cordon 10206936feb07bf6fbef262e4adebeb8e53910d8cf4Santos Cordon} // namespace android 10306936feb07bf6fbef262e4adebeb8e53910d8cf4Santos Cordon 10406936feb07bf6fbef262e4adebeb8e53910d8cf4Santos Cordon#endif // _LIBINPUT_DISPLAY_VIEWPORT_H 105