17d7ae7345abfb91be55c4aed6c9be9d09a144e4cDan Stoza/*
27d7ae7345abfb91be55c4aed6c9be9d09a144e4cDan Stoza * Copyright 2016 The Android Open Source Project
37d7ae7345abfb91be55c4aed6c9be9d09a144e4cDan Stoza *
47d7ae7345abfb91be55c4aed6c9be9d09a144e4cDan Stoza * Licensed under the Apache License, Version 2.0 (the "License");
57d7ae7345abfb91be55c4aed6c9be9d09a144e4cDan Stoza * you may not use this file except in compliance with the License.
67d7ae7345abfb91be55c4aed6c9be9d09a144e4cDan Stoza * You may obtain a copy of the License at
77d7ae7345abfb91be55c4aed6c9be9d09a144e4cDan Stoza *
87d7ae7345abfb91be55c4aed6c9be9d09a144e4cDan Stoza *      http://www.apache.org/licenses/LICENSE-2.0
97d7ae7345abfb91be55c4aed6c9be9d09a144e4cDan Stoza *
107d7ae7345abfb91be55c4aed6c9be9d09a144e4cDan Stoza * Unless required by applicable law or agreed to in writing, software
117d7ae7345abfb91be55c4aed6c9be9d09a144e4cDan Stoza * distributed under the License is distributed on an "AS IS" BASIS,
127d7ae7345abfb91be55c4aed6c9be9d09a144e4cDan Stoza * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
137d7ae7345abfb91be55c4aed6c9be9d09a144e4cDan Stoza * See the License for the specific language governing permissions and
147d7ae7345abfb91be55c4aed6c9be9d09a144e4cDan Stoza * limitations under the License.
157d7ae7345abfb91be55c4aed6c9be9d09a144e4cDan Stoza */
167d7ae7345abfb91be55c4aed6c9be9d09a144e4cDan Stoza
177d7ae7345abfb91be55c4aed6c9be9d09a144e4cDan Stoza#ifndef ANDROID_UI_HDR_CAPABILTIES_H
187d7ae7345abfb91be55c4aed6c9be9d09a144e4cDan Stoza#define ANDROID_UI_HDR_CAPABILTIES_H
197d7ae7345abfb91be55c4aed6c9be9d09a144e4cDan Stoza
207d7ae7345abfb91be55c4aed6c9be9d09a144e4cDan Stoza#include <binder/Parcelable.h>
217d7ae7345abfb91be55c4aed6c9be9d09a144e4cDan Stoza
227d7ae7345abfb91be55c4aed6c9be9d09a144e4cDan Stozanamespace android {
237d7ae7345abfb91be55c4aed6c9be9d09a144e4cDan Stoza
247d7ae7345abfb91be55c4aed6c9be9d09a144e4cDan Stozaclass HdrCapabilities : public Parcelable
257d7ae7345abfb91be55c4aed6c9be9d09a144e4cDan Stoza{
267d7ae7345abfb91be55c4aed6c9be9d09a144e4cDan Stozapublic:
277d7ae7345abfb91be55c4aed6c9be9d09a144e4cDan Stoza    HdrCapabilities(const std::vector<int32_t /*android_hdr_t*/>& types,
287d7ae7345abfb91be55c4aed6c9be9d09a144e4cDan Stoza            float maxLuminance, float maxAverageLuminance, float minLuminance)
297d7ae7345abfb91be55c4aed6c9be9d09a144e4cDan Stoza      : mSupportedHdrTypes(types),
307d7ae7345abfb91be55c4aed6c9be9d09a144e4cDan Stoza        mMaxLuminance(maxLuminance),
317d7ae7345abfb91be55c4aed6c9be9d09a144e4cDan Stoza        mMaxAverageLuminance(maxAverageLuminance),
327d7ae7345abfb91be55c4aed6c9be9d09a144e4cDan Stoza        mMinLuminance(minLuminance) {}
337d7ae7345abfb91be55c4aed6c9be9d09a144e4cDan Stoza
347d7ae7345abfb91be55c4aed6c9be9d09a144e4cDan Stoza    // Make this move-constructable and move-assignable
357d7ae7345abfb91be55c4aed6c9be9d09a144e4cDan Stoza    HdrCapabilities(HdrCapabilities&& other) = default;
367d7ae7345abfb91be55c4aed6c9be9d09a144e4cDan Stoza    HdrCapabilities& operator=(HdrCapabilities&& other) = default;
377d7ae7345abfb91be55c4aed6c9be9d09a144e4cDan Stoza
387d7ae7345abfb91be55c4aed6c9be9d09a144e4cDan Stoza    HdrCapabilities()
397d7ae7345abfb91be55c4aed6c9be9d09a144e4cDan Stoza      : mSupportedHdrTypes(),
407d7ae7345abfb91be55c4aed6c9be9d09a144e4cDan Stoza        mMaxLuminance(-1.0f),
417d7ae7345abfb91be55c4aed6c9be9d09a144e4cDan Stoza        mMaxAverageLuminance(-1.0f),
427d7ae7345abfb91be55c4aed6c9be9d09a144e4cDan Stoza        mMinLuminance(-1.0f) {}
437d7ae7345abfb91be55c4aed6c9be9d09a144e4cDan Stoza
447d7ae7345abfb91be55c4aed6c9be9d09a144e4cDan Stoza    virtual ~HdrCapabilities() = default;
457d7ae7345abfb91be55c4aed6c9be9d09a144e4cDan Stoza
467d7ae7345abfb91be55c4aed6c9be9d09a144e4cDan Stoza    const std::vector<int32_t /*android_hdr_t*/>& getSupportedHdrTypes() const {
477d7ae7345abfb91be55c4aed6c9be9d09a144e4cDan Stoza        return mSupportedHdrTypes;
487d7ae7345abfb91be55c4aed6c9be9d09a144e4cDan Stoza    }
497d7ae7345abfb91be55c4aed6c9be9d09a144e4cDan Stoza    float getDesiredMaxLuminance() const { return mMaxLuminance; }
507d7ae7345abfb91be55c4aed6c9be9d09a144e4cDan Stoza    float getDesiredMaxAverageLuminance() const { return mMaxAverageLuminance; }
517d7ae7345abfb91be55c4aed6c9be9d09a144e4cDan Stoza    float getDesiredMinLuminance() const { return mMinLuminance; }
527d7ae7345abfb91be55c4aed6c9be9d09a144e4cDan Stoza
537d7ae7345abfb91be55c4aed6c9be9d09a144e4cDan Stoza    // Parcelable interface
547d7ae7345abfb91be55c4aed6c9be9d09a144e4cDan Stoza    virtual status_t writeToParcel(Parcel* parcel) const override;
557d7ae7345abfb91be55c4aed6c9be9d09a144e4cDan Stoza    virtual status_t readFromParcel(const Parcel* parcel) override;
567d7ae7345abfb91be55c4aed6c9be9d09a144e4cDan Stoza
577d7ae7345abfb91be55c4aed6c9be9d09a144e4cDan Stozaprivate:
587d7ae7345abfb91be55c4aed6c9be9d09a144e4cDan Stoza    std::vector<int32_t /*android_hdr_t*/> mSupportedHdrTypes;
597d7ae7345abfb91be55c4aed6c9be9d09a144e4cDan Stoza    float mMaxLuminance;
607d7ae7345abfb91be55c4aed6c9be9d09a144e4cDan Stoza    float mMaxAverageLuminance;
617d7ae7345abfb91be55c4aed6c9be9d09a144e4cDan Stoza    float mMinLuminance;
627d7ae7345abfb91be55c4aed6c9be9d09a144e4cDan Stoza};
637d7ae7345abfb91be55c4aed6c9be9d09a144e4cDan Stoza
647d7ae7345abfb91be55c4aed6c9be9d09a144e4cDan Stoza} // namespace android
657d7ae7345abfb91be55c4aed6c9be9d09a144e4cDan Stoza
667d7ae7345abfb91be55c4aed6c9be9d09a144e4cDan Stoza#endif
67