1cdf9ce7229e791fe345b0860fe32433f15c95db8Karthik Ravi Shankar/*
2cdf9ce7229e791fe345b0860fe32433f15c95db8Karthik Ravi Shankar * Copyright (C) 2017 The Android Open Source Project
3cdf9ce7229e791fe345b0860fe32433f15c95db8Karthik Ravi Shankar *
4cdf9ce7229e791fe345b0860fe32433f15c95db8Karthik Ravi Shankar * Licensed under the Apache License, Version 2.0 (the "License");
5cdf9ce7229e791fe345b0860fe32433f15c95db8Karthik Ravi Shankar * you may not use this file except in compliance with the License.
6cdf9ce7229e791fe345b0860fe32433f15c95db8Karthik Ravi Shankar * You may obtain a copy of the License at
7cdf9ce7229e791fe345b0860fe32433f15c95db8Karthik Ravi Shankar *
8cdf9ce7229e791fe345b0860fe32433f15c95db8Karthik Ravi Shankar *      http://www.apache.org/licenses/LICENSE-2.0
9cdf9ce7229e791fe345b0860fe32433f15c95db8Karthik Ravi Shankar *
10cdf9ce7229e791fe345b0860fe32433f15c95db8Karthik Ravi Shankar * Unless required by applicable law or agreed to in writing, software
11cdf9ce7229e791fe345b0860fe32433f15c95db8Karthik Ravi Shankar * distributed under the License is distributed on an "AS IS" BASIS,
12cdf9ce7229e791fe345b0860fe32433f15c95db8Karthik Ravi Shankar * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13cdf9ce7229e791fe345b0860fe32433f15c95db8Karthik Ravi Shankar * See the License for the specific language governing permissions and
14cdf9ce7229e791fe345b0860fe32433f15c95db8Karthik Ravi Shankar * limitations under the License.
15cdf9ce7229e791fe345b0860fe32433f15c95db8Karthik Ravi Shankar */
16cdf9ce7229e791fe345b0860fe32433f15c95db8Karthik Ravi Shankar
17cdf9ce7229e791fe345b0860fe32433f15c95db8Karthik Ravi Shankarpackage android.app;
18cdf9ce7229e791fe345b0860fe32433f15c95db8Karthik Ravi Shankar
19cdf9ce7229e791fe345b0860fe32433f15c95db8Karthik Ravi Shankarimport android.content.ComponentName;
20cdf9ce7229e791fe345b0860fe32433f15c95db8Karthik Ravi Shankarimport android.os.Parcel;
21cdf9ce7229e791fe345b0860fe32433f15c95db8Karthik Ravi Shankarimport android.os.Parcelable;
22cdf9ce7229e791fe345b0860fe32433f15c95db8Karthik Ravi Shankar
23cdf9ce7229e791fe345b0860fe32433f15c95db8Karthik Ravi Shankarimport java.io.PrintWriter;
24cdf9ce7229e791fe345b0860fe32433f15c95db8Karthik Ravi Shankar
25cdf9ce7229e791fe345b0860fe32433f15c95db8Karthik Ravi Shankar/**
26cdf9ce7229e791fe345b0860fe32433f15c95db8Karthik Ravi Shankar * Display properties to be used by VR mode when creating a virtual display.
27cdf9ce7229e791fe345b0860fe32433f15c95db8Karthik Ravi Shankar *
28cdf9ce7229e791fe345b0860fe32433f15c95db8Karthik Ravi Shankar * @hide
29cdf9ce7229e791fe345b0860fe32433f15c95db8Karthik Ravi Shankar */
302b9aaedf6310694de31301659ce604ff195b32eeKarthik Ravi Shankarpublic class Vr2dDisplayProperties implements Parcelable {
31cdf9ce7229e791fe345b0860fe32433f15c95db8Karthik Ravi Shankar
32cdf9ce7229e791fe345b0860fe32433f15c95db8Karthik Ravi Shankar   /**
33cdf9ce7229e791fe345b0860fe32433f15c95db8Karthik Ravi Shankar    * The actual width, height and dpi.
34cdf9ce7229e791fe345b0860fe32433f15c95db8Karthik Ravi Shankar    */
35cdf9ce7229e791fe345b0860fe32433f15c95db8Karthik Ravi Shankar    private final int mWidth;
36cdf9ce7229e791fe345b0860fe32433f15c95db8Karthik Ravi Shankar    private final int mHeight;
37cdf9ce7229e791fe345b0860fe32433f15c95db8Karthik Ravi Shankar    private final int mDpi;
38cdf9ce7229e791fe345b0860fe32433f15c95db8Karthik Ravi Shankar
392b9aaedf6310694de31301659ce604ff195b32eeKarthik Ravi Shankar    public Vr2dDisplayProperties(int width, int height, int dpi) {
40cdf9ce7229e791fe345b0860fe32433f15c95db8Karthik Ravi Shankar        mWidth = width;
41cdf9ce7229e791fe345b0860fe32433f15c95db8Karthik Ravi Shankar        mHeight = height;
42cdf9ce7229e791fe345b0860fe32433f15c95db8Karthik Ravi Shankar        mDpi = dpi;
43cdf9ce7229e791fe345b0860fe32433f15c95db8Karthik Ravi Shankar    }
44cdf9ce7229e791fe345b0860fe32433f15c95db8Karthik Ravi Shankar
45cdf9ce7229e791fe345b0860fe32433f15c95db8Karthik Ravi Shankar    @Override
46cdf9ce7229e791fe345b0860fe32433f15c95db8Karthik Ravi Shankar    public int hashCode() {
47cdf9ce7229e791fe345b0860fe32433f15c95db8Karthik Ravi Shankar        int result = getWidth();
48cdf9ce7229e791fe345b0860fe32433f15c95db8Karthik Ravi Shankar        result = 31 * result + getHeight();
49cdf9ce7229e791fe345b0860fe32433f15c95db8Karthik Ravi Shankar        result = 31 * result + getDpi();
50cdf9ce7229e791fe345b0860fe32433f15c95db8Karthik Ravi Shankar        return result;
51cdf9ce7229e791fe345b0860fe32433f15c95db8Karthik Ravi Shankar    }
52cdf9ce7229e791fe345b0860fe32433f15c95db8Karthik Ravi Shankar
53cdf9ce7229e791fe345b0860fe32433f15c95db8Karthik Ravi Shankar    @Override
54cdf9ce7229e791fe345b0860fe32433f15c95db8Karthik Ravi Shankar    public String toString() {
552b9aaedf6310694de31301659ce604ff195b32eeKarthik Ravi Shankar        return "Vr2dDisplayProperties{" +
56cdf9ce7229e791fe345b0860fe32433f15c95db8Karthik Ravi Shankar                "mWidth=" + mWidth +
57cdf9ce7229e791fe345b0860fe32433f15c95db8Karthik Ravi Shankar                ", mHeight=" + mHeight +
58cdf9ce7229e791fe345b0860fe32433f15c95db8Karthik Ravi Shankar                ", mDpi=" + mDpi +
59cdf9ce7229e791fe345b0860fe32433f15c95db8Karthik Ravi Shankar                "}";
60cdf9ce7229e791fe345b0860fe32433f15c95db8Karthik Ravi Shankar    }
61cdf9ce7229e791fe345b0860fe32433f15c95db8Karthik Ravi Shankar
62cdf9ce7229e791fe345b0860fe32433f15c95db8Karthik Ravi Shankar    @Override
63cdf9ce7229e791fe345b0860fe32433f15c95db8Karthik Ravi Shankar    public boolean equals(Object o) {
64cdf9ce7229e791fe345b0860fe32433f15c95db8Karthik Ravi Shankar        if (this == o) return true;
65cdf9ce7229e791fe345b0860fe32433f15c95db8Karthik Ravi Shankar        if (o == null || getClass() != o.getClass()) return false;
66cdf9ce7229e791fe345b0860fe32433f15c95db8Karthik Ravi Shankar
672b9aaedf6310694de31301659ce604ff195b32eeKarthik Ravi Shankar        Vr2dDisplayProperties that = (Vr2dDisplayProperties) o;
68cdf9ce7229e791fe345b0860fe32433f15c95db8Karthik Ravi Shankar
69cdf9ce7229e791fe345b0860fe32433f15c95db8Karthik Ravi Shankar        if (getWidth() != that.getWidth()) return false;
70cdf9ce7229e791fe345b0860fe32433f15c95db8Karthik Ravi Shankar        if (getHeight() != that.getHeight()) return false;
71cdf9ce7229e791fe345b0860fe32433f15c95db8Karthik Ravi Shankar        return getDpi() == that.getDpi();
72cdf9ce7229e791fe345b0860fe32433f15c95db8Karthik Ravi Shankar    }
73cdf9ce7229e791fe345b0860fe32433f15c95db8Karthik Ravi Shankar
74cdf9ce7229e791fe345b0860fe32433f15c95db8Karthik Ravi Shankar    @Override
75cdf9ce7229e791fe345b0860fe32433f15c95db8Karthik Ravi Shankar    public int describeContents() {
76cdf9ce7229e791fe345b0860fe32433f15c95db8Karthik Ravi Shankar        return 0;
77cdf9ce7229e791fe345b0860fe32433f15c95db8Karthik Ravi Shankar    }
78cdf9ce7229e791fe345b0860fe32433f15c95db8Karthik Ravi Shankar
79cdf9ce7229e791fe345b0860fe32433f15c95db8Karthik Ravi Shankar    @Override
80cdf9ce7229e791fe345b0860fe32433f15c95db8Karthik Ravi Shankar    public void writeToParcel(Parcel dest, int flags) {
81cdf9ce7229e791fe345b0860fe32433f15c95db8Karthik Ravi Shankar        dest.writeInt(mWidth);
82cdf9ce7229e791fe345b0860fe32433f15c95db8Karthik Ravi Shankar        dest.writeInt(mHeight);
83cdf9ce7229e791fe345b0860fe32433f15c95db8Karthik Ravi Shankar        dest.writeInt(mDpi);
84cdf9ce7229e791fe345b0860fe32433f15c95db8Karthik Ravi Shankar    }
85cdf9ce7229e791fe345b0860fe32433f15c95db8Karthik Ravi Shankar
862b9aaedf6310694de31301659ce604ff195b32eeKarthik Ravi Shankar    public static final Parcelable.Creator<Vr2dDisplayProperties> CREATOR
872b9aaedf6310694de31301659ce604ff195b32eeKarthik Ravi Shankar            = new Parcelable.Creator<Vr2dDisplayProperties>() {
88cdf9ce7229e791fe345b0860fe32433f15c95db8Karthik Ravi Shankar        @Override
892b9aaedf6310694de31301659ce604ff195b32eeKarthik Ravi Shankar        public Vr2dDisplayProperties createFromParcel(Parcel source) {
902b9aaedf6310694de31301659ce604ff195b32eeKarthik Ravi Shankar            return new Vr2dDisplayProperties(source);
91cdf9ce7229e791fe345b0860fe32433f15c95db8Karthik Ravi Shankar        }
92cdf9ce7229e791fe345b0860fe32433f15c95db8Karthik Ravi Shankar
93cdf9ce7229e791fe345b0860fe32433f15c95db8Karthik Ravi Shankar        @Override
942b9aaedf6310694de31301659ce604ff195b32eeKarthik Ravi Shankar        public Vr2dDisplayProperties[] newArray(int size) {
952b9aaedf6310694de31301659ce604ff195b32eeKarthik Ravi Shankar            return new Vr2dDisplayProperties[size];
96cdf9ce7229e791fe345b0860fe32433f15c95db8Karthik Ravi Shankar        }
97cdf9ce7229e791fe345b0860fe32433f15c95db8Karthik Ravi Shankar    };
98cdf9ce7229e791fe345b0860fe32433f15c95db8Karthik Ravi Shankar
992b9aaedf6310694de31301659ce604ff195b32eeKarthik Ravi Shankar    private Vr2dDisplayProperties(Parcel source) {
100cdf9ce7229e791fe345b0860fe32433f15c95db8Karthik Ravi Shankar        mWidth = source.readInt();
101cdf9ce7229e791fe345b0860fe32433f15c95db8Karthik Ravi Shankar        mHeight = source.readInt();
102cdf9ce7229e791fe345b0860fe32433f15c95db8Karthik Ravi Shankar        mDpi = source.readInt();
103cdf9ce7229e791fe345b0860fe32433f15c95db8Karthik Ravi Shankar    }
104cdf9ce7229e791fe345b0860fe32433f15c95db8Karthik Ravi Shankar
105cdf9ce7229e791fe345b0860fe32433f15c95db8Karthik Ravi Shankar    public void dump(PrintWriter pw, String prefix) {
1062b9aaedf6310694de31301659ce604ff195b32eeKarthik Ravi Shankar        pw.println(prefix + "Vr2dDisplayProperties:");
107cdf9ce7229e791fe345b0860fe32433f15c95db8Karthik Ravi Shankar        pw.println(prefix + "  width=" + mWidth);
108cdf9ce7229e791fe345b0860fe32433f15c95db8Karthik Ravi Shankar        pw.println(prefix + "  height=" + mHeight);
109cdf9ce7229e791fe345b0860fe32433f15c95db8Karthik Ravi Shankar        pw.println(prefix + "  dpi=" + mDpi);
110cdf9ce7229e791fe345b0860fe32433f15c95db8Karthik Ravi Shankar    }
111cdf9ce7229e791fe345b0860fe32433f15c95db8Karthik Ravi Shankar
112cdf9ce7229e791fe345b0860fe32433f15c95db8Karthik Ravi Shankar    public int getWidth() {
113cdf9ce7229e791fe345b0860fe32433f15c95db8Karthik Ravi Shankar        return mWidth;
114cdf9ce7229e791fe345b0860fe32433f15c95db8Karthik Ravi Shankar    }
115cdf9ce7229e791fe345b0860fe32433f15c95db8Karthik Ravi Shankar
116cdf9ce7229e791fe345b0860fe32433f15c95db8Karthik Ravi Shankar    public int getHeight() {
117cdf9ce7229e791fe345b0860fe32433f15c95db8Karthik Ravi Shankar        return mHeight;
118cdf9ce7229e791fe345b0860fe32433f15c95db8Karthik Ravi Shankar    }
119cdf9ce7229e791fe345b0860fe32433f15c95db8Karthik Ravi Shankar
120cdf9ce7229e791fe345b0860fe32433f15c95db8Karthik Ravi Shankar    public int getDpi() {
121cdf9ce7229e791fe345b0860fe32433f15c95db8Karthik Ravi Shankar        return mDpi;
122cdf9ce7229e791fe345b0860fe32433f15c95db8Karthik Ravi Shankar    }
123cdf9ce7229e791fe345b0860fe32433f15c95db8Karthik Ravi Shankar}
124