// Copyright 2013 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. // Use the <code>system.display</code> API to query display metadata. namespace system.display { dictionary Bounds { // The x-coordinate of the upper-left corner. long left; // The y-coordinate of the upper-left corner. long top; // The width of the display in pixels. long width; // The height of the display in pixels. long height; }; dictionary Insets { // The x-axis distance from the left bound. long left; // The y-axis distance from the top bound. long top; // The x-axis distance from the right bound. long right; // The y-axis distance from the bottom bound. long bottom; }; dictionary DisplayUnitInfo { // The unique identifier of the display. DOMString id; // The user-friendly name (e.g. "HP LCD monitor"). DOMString name; // Identifier of the display that is being mirrored on the display unit. // If mirroring is not in progress, set to an empty string. // Currently exposed only on ChromeOS. Will be empty string on other // platforms. DOMString mirroringSourceId; // True if this is the primary display. boolean isPrimary; // True if this is an internal display. boolean isInternal; // True if this display is enabled. boolean isEnabled; // The number of pixels per inch along the x-axis. double dpiX; // The number of pixels per inch along the y-axis. double dpiY; // The display's clockwise rotation in degrees relative to the vertical // position. // Currently exposed only on ChromeOS. Will be set to 0 on other platforms. long rotation; // The display's logical bounds. Bounds bounds; // The display's insets within its screen's bounds. // Currently exposed only on ChromeOS. Will be set to empty insets on // other platforms. Insets overscan; // The usable work area of the display within the display bounds. The work // area excludes areas of the display reserved for OS, for example taskbar // and launcher. Bounds workArea; }; dictionary DisplayProperties { // If set and not empty, starts mirroring between this and the display with // the provided id (the system will determine which of the displays is // actually mirrored). // If set and not empty, stops mirroring between this and the display with // the specified id (if mirroring is in progress). // If set, no other parameter may be set. DOMString? mirroringSourceId; // If set to true, makes the display primary. No-op if set to false. boolean? isPrimary; // If set, sets the display's overscan insets to the provided values. Note // that overscan values may not be negative or larger than a half of the // screen's size. Overscan cannot be changed on the internal monitor. // It's applied after <code>isPrimary</code> parameter. Insets? overscan; // If set, updates the display's rotation. // Legal values are [0, 90, 180, 270]. The rotation is set clockwise, // relative to the display's vertical position. // It's applied after <code>overscan</code> paramter. long? rotation; // If set, updates the display's logical bounds origin along x-axis. Applied // together with <code>boundsOriginY</code>, if <code>boundsOriginY</code> // is set. Note that, when updating the display origin, some constraints // will be applied, so the final bounds origin may be different than the one // set. The final bounds can be retrieved using $ref:getInfo. // The bounds origin is applied after <code>rotation</code>. // The bounds origin cannot be changed on the primary display. Note that is // also invalid to set bounds origin values if <code>isPrimary</code> is // also set (as <code>isPrimary</code> parameter is applied first). long? boundsOriginX; // If set, updates the display's logical bounds origin along y-axis. // See documentation for <code>boundsOriginX</code> parameter. long? boundsOriginY; }; callback DisplayInfoCallback = void (DisplayUnitInfo[] displayInfo); callback SetDisplayUnitInfoCallback = void(); interface Functions { // Get the information of all attached display devices. static void getInfo(DisplayInfoCallback callback); // Updates the properties for the display specified by |id|, according to // the information provided in |info|. On failure, $ref:runtime.lastError // will be set. // |id|: The display's unique identifier. // |info|: The information about display properties that should be changed. // A property will be changed only if a new value for it is specified in // |info|. // |callback|: Empty function called when the function finishes. To find out // whether the function succeeded, $ref:runtime.lastError should be // queried. static void setDisplayProperties( DOMString id, DisplayProperties info, optional SetDisplayUnitInfoCallback callback); }; interface Events { // Fired when anything changes to the display configuration. static void onDisplayChanged(); }; };