• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright 2013 The Chromium 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 #ifndef ASH_DISPLAY_DISPLAY_LAYOUT_STORE_H_
6 #define ASH_DISPLAY_DISPLAY_LAYOUT_STORE_H_
7 
8 #include <map>
9 
10 #include "ash/ash_export.h"
11 #include "ash/display/display_layout.h"
12 
13 namespace ash {
14 
15 class ASH_EXPORT DisplayLayoutStore {
16  public:
17   DisplayLayoutStore();
18   ~DisplayLayoutStore();
19 
default_display_layout()20   const DisplayLayout& default_display_layout() const {
21     return default_display_layout_;
22   }
23   void SetDefaultDisplayLayout(const DisplayLayout& layout);
24 
25   // Registeres the display layout info for the specified display(s).
26   void RegisterLayoutForDisplayIdPair(int64 id1,
27                                       int64 id2,
28                                       const DisplayLayout& layout);
29 
30   // If no layout is registered, it creatas new layout using
31   // |default_display_layout_|.
32   DisplayLayout GetRegisteredDisplayLayout(const DisplayIdPair& pair);
33 
34   // Returns the display layout for the display id pair
35   // with display swapping applied.  That is, this returns
36   // flipped layout if the displays are swapped.
37   DisplayLayout ComputeDisplayLayoutForDisplayIdPair(
38       const DisplayIdPair& display_pair);
39 
40   // Update the mirrored flag in the display layout for
41   // |display_pair|.  This creates new display layout if no layout is
42   // registered for |display_pair|.
43   void UpdateMirrorStatus(const DisplayIdPair& display_pair,
44                           bool mirrored);
45 
46   // Update the |primary_id| in the display layout for
47   // |display_pair|.  This creates new display layout if no layout is
48   // registered for |display_pair|.
49   void UpdatePrimaryDisplayId(const DisplayIdPair& display_pair,
50                               int64 display_id);
51 
52  private:
53   // Creates new layout for display pair from |default_display_layout_|.
54   DisplayLayout CreateDisplayLayout(const DisplayIdPair& display_pair);
55 
56   // The default display layout.
57   DisplayLayout default_display_layout_;
58 
59   // Display layout per pair of devices.
60   std::map<DisplayIdPair, DisplayLayout> paired_layouts_;
61 
62   DISALLOW_COPY_AND_ASSIGN(DisplayLayoutStore);
63 };
64 
65 }  // namespace ash
66 
67 #endif  // ASH_DISPLAY_DISPLAY_LAYOUT_STORE_H_
68