blob: 3e58f8f353c97be775d98214b10600e4fa702ee6 [file] [log] [blame]
// Copyright 2018 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#pragma once
#include <fbl/string.h>
#include <fbl/vector.h>
#include <zircon/pixelformat.h>
#include "fuchsia/hardware/display/c/fidl.h"
class Display {
public:
Display(fuchsia_hardware_display_Info* info);
void Init(zx_handle_t dc_handle);
zx_pixel_format_t format() const { return pixel_formats_[format_idx_]; }
fuchsia_hardware_display_Mode mode() const { return modes_[mode_idx_]; }
fuchsia_hardware_display_CursorInfo cursor() const { return cursors_[0]; }
uint64_t id() const { return id_; }
bool set_format_idx(uint32_t idx) {
format_idx_ = idx;
return format_idx_ < pixel_formats_.size();
}
bool set_mode_idx(uint32_t idx) {
mode_idx_ = idx;
return mode_idx_ < modes_.size();
}
void set_grayscale(bool grayscale) {
grayscale_ = grayscale;
}
void Dump();
private:
uint32_t format_idx_ = 0;
uint32_t mode_idx_ = 0;
bool grayscale_ = false;
uint64_t id_;
fbl::Vector<zx_pixel_format_t> pixel_formats_;
fbl::Vector<fuchsia_hardware_display_Mode> modes_;
fbl::Vector<fuchsia_hardware_display_CursorInfo> cursors_;
fbl::String manufacturer_name_;
fbl::String monitor_name_;
fbl::String monitor_serial_;
};