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