1 // Copyright 2018 The Fuchsia Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #pragma once 6 7 #include <fbl/string.h> 8 #include <fbl/vector.h> 9 #include <zircon/pixelformat.h> 10 11 #include "fuchsia/hardware/display/c/fidl.h" 12 13 class Display { 14 public: 15 Display(fuchsia_hardware_display_Info* info); 16 17 void Init(zx_handle_t dc_handle); 18 format()19 zx_pixel_format_t format() const { return pixel_formats_[format_idx_]; } mode()20 fuchsia_hardware_display_Mode mode() const { return modes_[mode_idx_]; } cursor()21 fuchsia_hardware_display_CursorInfo cursor() const { return cursors_[0]; } id()22 uint64_t id() const { return id_; } 23 set_format_idx(uint32_t idx)24 bool set_format_idx(uint32_t idx) { 25 format_idx_ = idx; 26 return format_idx_ < pixel_formats_.size(); 27 } 28 set_mode_idx(uint32_t idx)29 bool set_mode_idx(uint32_t idx) { 30 mode_idx_ = idx; 31 return mode_idx_ < modes_.size(); 32 } 33 set_grayscale(bool grayscale)34 void set_grayscale(bool grayscale) { 35 grayscale_ = grayscale; 36 } 37 38 void Dump(); 39 40 private: 41 uint32_t format_idx_ = 0; 42 uint32_t mode_idx_ = 0; 43 bool grayscale_ = false; 44 45 uint64_t id_; 46 fbl::Vector<zx_pixel_format_t> pixel_formats_; 47 fbl::Vector<fuchsia_hardware_display_Mode> modes_; 48 fbl::Vector<fuchsia_hardware_display_CursorInfo> cursors_; 49 50 fbl::String manufacturer_name_; 51 fbl::String monitor_name_; 52 fbl::String monitor_serial_; 53 }; 54