17dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch// Copyright 2013 The Chromium Authors. All rights reserved. 27dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch// Use of this source code is governed by a BSD-style license that can be 37dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch// found in the LICENSE file. 47dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch 57dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch#ifndef ASH_DISPLAY_DISPLAY_LAYOUT_STORE_H_ 67dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch#define ASH_DISPLAY_DISPLAY_LAYOUT_STORE_H_ 77dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch 87dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch#include <map> 97dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch 107dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch#include "ash/ash_export.h" 117dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch#include "ash/display/display_layout.h" 127dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch 137dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdochnamespace ash { 147dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdochnamespace internal { 157dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch 167dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdochclass ASH_EXPORT DisplayLayoutStore { 177dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch public: 187dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch DisplayLayoutStore(); 197dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch ~DisplayLayoutStore(); 207dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch 217dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch const DisplayLayout& default_display_layout() const { 227dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch return default_display_layout_; 237dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch } 247dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch void SetDefaultDisplayLayout(const DisplayLayout& layout); 257dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch 267dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch // Registeres the display layout info for the specified display(s). 277dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch void RegisterLayoutForDisplayIdPair(int64 id1, 287dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch int64 id2, 297dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch const DisplayLayout& layout); 307dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch 317dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch // If no layout is registered, it creatas new layout using 327dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch // |default_display_layout_|. 337dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch DisplayLayout GetRegisteredDisplayLayout(const DisplayIdPair& pair); 347dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch 357dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch // Returns the display layout for the display id pair 367dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch // with display swapping applied. That is, this returns 377dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch // flipped layout if the displays are swapped. 387dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch DisplayLayout ComputeDisplayLayoutForDisplayIdPair( 397dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch const DisplayIdPair& display_pair); 407dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch 417dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch // Update the mirrored flag in the display layout for 427dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch // |display_pair|. This creates new display layout if no layout is 437dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch // registered for |display_pair|. 447dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch void UpdateMirrorStatus(const DisplayIdPair& display_pair, 457dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch bool mirrored); 467dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch 477dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch // Update the |primary_id| in the display layout for 487dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch // |display_pair|. This creates new display layout if no layout is 497dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch // registered for |display_pair|. 507dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch void UpdatePrimaryDisplayId(const DisplayIdPair& display_pair, 517dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch int64 display_id); 527dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch 537dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch private: 547dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch // Creates new layout for display pair from |default_display_layout_|. 557dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch DisplayLayout CreateDisplayLayout(const DisplayIdPair& display_pair); 567dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch 577dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch // The default display layout. 587dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch DisplayLayout default_display_layout_; 597dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch 607dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch // Display layout per pair of devices. 617dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch std::map<DisplayIdPair, DisplayLayout> paired_layouts_; 627dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch 637dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch DISALLOW_COPY_AND_ASSIGN(DisplayLayoutStore); 647dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch}; 657dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch 667dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch} // namespace internal 677dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch} // namespace ash 687dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch 697dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch#endif // ASH_DISPLAY_DISPLAY_LAYOUT_STORE_H_ 70