1# Copyright 2014 The Chromium OS 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"""Module for display info."""
6
7class DisplayInfo(object):
8    """The class match displayInfo object from chrome.system.display API.
9    """
10
11    class Bounds(object):
12        """The class match Bounds object from chrome.system.display API.
13
14        @param left: The x-coordinate of the upper-left corner.
15        @param top: The y-coordinate of the upper-left corner.
16        @param width: The width of the display in pixels.
17        @param height: The height of the display in pixels.
18        """
19        def __init__(self, d):
20            self.left = d['left']
21            self.top = d['top']
22            self.width = d['width']
23            self.height = d['height']
24
25
26    class Insets(object):
27        """The class match Insets object from chrome.system.display API.
28
29        @param left: The x-axis distance from the left bound.
30        @param left: The y-axis distance from the top bound.
31        @param left: The x-axis distance from the right bound.
32        @param left: The y-axis distance from the bottom bound.
33        """
34
35        def __init__(self, d):
36            self.left = d['left']
37            self.top = d['top']
38            self.right = d['right']
39            self.bottom = d['bottom']
40
41
42    def __init__(self, d):
43        self.display_id = d['id']
44        self.name = d['name']
45        self.mirroring_source_id = d['mirroringSourceId']
46        self.is_primary = d['isPrimary']
47        self.is_internal = d['isInternal']
48        self.is_enabled = d['isEnabled']
49        self.dpi_x = d['dpiX']
50        self.dpi_y = d['dpiY']
51        self.rotation = d['rotation']
52        self.bounds = self.Bounds(d['bounds'])
53        self.overscan = self.Insets(d['overscan'])
54        self.work_area = self.Bounds(d['workArea'])
55