123730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved.
223730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
323730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)// found in the LICENSE file.
423730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)
523730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)#ifndef UI_DISPLAY_CHROMEOS_X11_DISPLAY_SNAPSHOT_X11_H_
623730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)#define UI_DISPLAY_CHROMEOS_X11_DISPLAY_SNAPSHOT_X11_H_
723730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)
8a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch#include "ui/display/display_export.h"
91320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "ui/display/types/display_snapshot.h"
1023730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)
1123730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)// Forward declare from Xlib and Xrandr.
1223730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)typedef unsigned long XID;
1323730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)typedef XID RROutput;
1423730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)typedef XID RRCrtc;
1523730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)
1623730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)namespace ui {
1723730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)
1823730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)class DISPLAY_EXPORT DisplaySnapshotX11 : public DisplaySnapshot {
1923730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) public:
2023730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)  DisplaySnapshotX11(int64_t display_id,
2123730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)                     bool has_proper_display_id,
2223730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)                     const gfx::Point& origin,
2323730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)                     const gfx::Size& physical_size,
24c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch                     DisplayConnectionType type,
2523730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)                     bool is_aspect_preserving_scaling,
26c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch                     bool has_overscan,
27c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch                     std::string display_name,
2823730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)                     const std::vector<const DisplayMode*>& modes,
2923730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)                     const DisplayMode* current_mode,
3023730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)                     const DisplayMode* native_mode,
3123730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)                     RROutput output,
3223730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)                     RRCrtc crtc,
3323730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)                     int index);
3423730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)  virtual ~DisplaySnapshotX11();
3523730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)
3623730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)  RROutput output() const { return output_; }
3723730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)  RRCrtc crtc() const { return crtc_; }
3823730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)  int index() const { return index_; }
3923730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)
4023730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)  // DisplaySnapshot overrides:
4123730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)  virtual std::string ToString() const OVERRIDE;
4223730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)
4323730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) private:
4423730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)  RROutput output_;
4523730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)
4623730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)  // CRTC that should be used for this output. Not necessarily the CRTC
4723730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)  // that XRandR reports is currently being used.
4823730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)  RRCrtc crtc_;
4923730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)
5023730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)  // This output's index in the array returned by XRandR. Stable even as
5123730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)  // outputs are connected or disconnected.
5223730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)  int index_;
5323730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)
5423730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)  DISALLOW_COPY_AND_ASSIGN(DisplaySnapshotX11);
5523730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)};
5623730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)
5723730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)}  // namespace ui
5823730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)
5923730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)#endif  // UI_DISPLAY_CHROMEOS_X11_DISPLAY_SNAPSHOT_X11_H_
60