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