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
20e1f5e6fd7ad07778fa4381059852a94567d77dfcMathias Agopian#include <stdint.h>
21e1f5e6fd7ad07778fa4381059852a94567d77dfcMathias Agopian
22e1f5e6fd7ad07778fa4381059852a94567d77dfcMathias Agopian#include <vector>
23e1f5e6fd7ad07778fa4381059852a94567d77dfcMathias Agopian
24e1f5e6fd7ad07778fa4381059852a94567d77dfcMathias Agopian#include <utils/Flattenable.h>
257d7ae7345abfb91be55c4aed6c9be9d09a144e4cDan Stoza
267d7ae7345abfb91be55c4aed6c9be9d09a144e4cDan Stozanamespace android {
277d7ae7345abfb91be55c4aed6c9be9d09a144e4cDan Stoza
28e1f5e6fd7ad07778fa4381059852a94567d77dfcMathias Agopianclass HdrCapabilities : public LightFlattenable<HdrCapabilities>
297d7ae7345abfb91be55c4aed6c9be9d09a144e4cDan Stoza{
307d7ae7345abfb91be55c4aed6c9be9d09a144e4cDan Stozapublic:
317d7ae7345abfb91be55c4aed6c9be9d09a144e4cDan Stoza    HdrCapabilities(const std::vector<int32_t /*android_hdr_t*/>& types,
327d7ae7345abfb91be55c4aed6c9be9d09a144e4cDan Stoza            float maxLuminance, float maxAverageLuminance, float minLuminance)
337d7ae7345abfb91be55c4aed6c9be9d09a144e4cDan Stoza      : mSupportedHdrTypes(types),
347d7ae7345abfb91be55c4aed6c9be9d09a144e4cDan Stoza        mMaxLuminance(maxLuminance),
357d7ae7345abfb91be55c4aed6c9be9d09a144e4cDan Stoza        mMaxAverageLuminance(maxAverageLuminance),
367d7ae7345abfb91be55c4aed6c9be9d09a144e4cDan Stoza        mMinLuminance(minLuminance) {}
377d7ae7345abfb91be55c4aed6c9be9d09a144e4cDan Stoza
387d7ae7345abfb91be55c4aed6c9be9d09a144e4cDan Stoza    // Make this move-constructable and move-assignable
39e1f5e6fd7ad07778fa4381059852a94567d77dfcMathias Agopian    HdrCapabilities(HdrCapabilities&& other);
40e1f5e6fd7ad07778fa4381059852a94567d77dfcMathias Agopian    HdrCapabilities& operator=(HdrCapabilities&& other);
417d7ae7345abfb91be55c4aed6c9be9d09a144e4cDan Stoza
427d7ae7345abfb91be55c4aed6c9be9d09a144e4cDan Stoza    HdrCapabilities()
437d7ae7345abfb91be55c4aed6c9be9d09a144e4cDan Stoza      : mSupportedHdrTypes(),
447d7ae7345abfb91be55c4aed6c9be9d09a144e4cDan Stoza        mMaxLuminance(-1.0f),
457d7ae7345abfb91be55c4aed6c9be9d09a144e4cDan Stoza        mMaxAverageLuminance(-1.0f),
467d7ae7345abfb91be55c4aed6c9be9d09a144e4cDan Stoza        mMinLuminance(-1.0f) {}
477d7ae7345abfb91be55c4aed6c9be9d09a144e4cDan Stoza
48e1f5e6fd7ad07778fa4381059852a94567d77dfcMathias Agopian    ~HdrCapabilities();
497d7ae7345abfb91be55c4aed6c9be9d09a144e4cDan Stoza
507d7ae7345abfb91be55c4aed6c9be9d09a144e4cDan Stoza    const std::vector<int32_t /*android_hdr_t*/>& getSupportedHdrTypes() const {
517d7ae7345abfb91be55c4aed6c9be9d09a144e4cDan Stoza        return mSupportedHdrTypes;
527d7ae7345abfb91be55c4aed6c9be9d09a144e4cDan Stoza    }
537d7ae7345abfb91be55c4aed6c9be9d09a144e4cDan Stoza    float getDesiredMaxLuminance() const { return mMaxLuminance; }
547d7ae7345abfb91be55c4aed6c9be9d09a144e4cDan Stoza    float getDesiredMaxAverageLuminance() const { return mMaxAverageLuminance; }
557d7ae7345abfb91be55c4aed6c9be9d09a144e4cDan Stoza    float getDesiredMinLuminance() const { return mMinLuminance; }
567d7ae7345abfb91be55c4aed6c9be9d09a144e4cDan Stoza
57e1f5e6fd7ad07778fa4381059852a94567d77dfcMathias Agopian    // Flattenable protocol
58e1f5e6fd7ad07778fa4381059852a94567d77dfcMathias Agopian    bool isFixedSize() const { return false; }
59e1f5e6fd7ad07778fa4381059852a94567d77dfcMathias Agopian    size_t getFlattenedSize() const;
60e1f5e6fd7ad07778fa4381059852a94567d77dfcMathias Agopian    status_t flatten(void* buffer, size_t size) const;
61e1f5e6fd7ad07778fa4381059852a94567d77dfcMathias Agopian    status_t unflatten(void const* buffer, size_t size);
627d7ae7345abfb91be55c4aed6c9be9d09a144e4cDan Stoza
637d7ae7345abfb91be55c4aed6c9be9d09a144e4cDan Stozaprivate:
647d7ae7345abfb91be55c4aed6c9be9d09a144e4cDan Stoza    std::vector<int32_t /*android_hdr_t*/> mSupportedHdrTypes;
657d7ae7345abfb91be55c4aed6c9be9d09a144e4cDan Stoza    float mMaxLuminance;
667d7ae7345abfb91be55c4aed6c9be9d09a144e4cDan Stoza    float mMaxAverageLuminance;
677d7ae7345abfb91be55c4aed6c9be9d09a144e4cDan Stoza    float mMinLuminance;
687d7ae7345abfb91be55c4aed6c9be9d09a144e4cDan Stoza};
697d7ae7345abfb91be55c4aed6c9be9d09a144e4cDan Stoza
707d7ae7345abfb91be55c4aed6c9be9d09a144e4cDan Stoza} // namespace android
717d7ae7345abfb91be55c4aed6c9be9d09a144e4cDan Stoza
727d7ae7345abfb91be55c4aed6c9be9d09a144e4cDan Stoza#endif
73