blob: 068f118f0345df7d3ee770e80fb31fbb6d624fcc [file] [log] [blame]
// Copyright 2015 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef UI_DISPLAY_CHROMEOS_DISPLAY_LAYOUT_MANAGER_H_
#define UI_DISPLAY_CHROMEOS_DISPLAY_LAYOUT_MANAGER_H_
#include <vector>
#include "third_party/cros_system_api/dbus/service_constants.h"
#include "ui/display/chromeos/display_configurator.h"
#include "ui/display/types/display_constants.h"
namespace ui {
struct DisplayConfigureRequest;
class DisplaySnapshot;
class DisplayLayoutManager {
public:
virtual ~DisplayLayoutManager() {}
virtual DisplayConfigurator::SoftwareMirroringController*
GetSoftwareMirroringController() const = 0;
virtual DisplayConfigurator::StateController* GetStateController() const = 0;
// Returns the current display state.
virtual MultipleDisplayState GetDisplayState() const = 0;
// Returns the current power state.
virtual chromeos::DisplayPowerState GetPowerState() const = 0;
// Based on the given |displays|, display state and power state, it will
// create display configuration requests which will then be used to
// configure the hardware. The requested configuration is stored in
// |requests| and |framebuffer_size|.
virtual bool GetDisplayLayout(const std::vector<DisplaySnapshot*>& displays,
MultipleDisplayState new_display_state,
chromeos::DisplayPowerState new_power_state,
std::vector<DisplayConfigureRequest>* requests,
gfx::Size* framebuffer_size) const = 0;
virtual std::vector<DisplaySnapshot*> GetDisplayStates() const = 0;
virtual bool IsMirroring() const = 0;
};
} // namespace ui
#endif // UI_DISPLAY_CHROMEOS_DISPLAY_LAYOUT_MANAGER_H_