| OLD | NEW | 
|---|
| 1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 The Chromium Authors. All rights reserved. | 
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be | 
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. | 
| 4 | 4 | 
| 5 #include "ui/display/manager/display_layout.h" | 5 #include "ui/display/manager/display_layout.h" | 
| 6 | 6 | 
| 7 #include <algorithm> | 7 #include <algorithm> | 
| 8 #include <set> | 8 #include <set> | 
| 9 #include <sstream> | 9 #include <sstream> | 
| 10 | 10 | 
| (...skipping 18 matching lines...) Expand all  Loading... | 
| 29 // to change this value in case to support even larger displays. | 29 // to change this value in case to support even larger displays. | 
| 30 const int kMaxValidOffset = 10000; | 30 const int kMaxValidOffset = 10000; | 
| 31 | 31 | 
| 32 bool IsIdInList(int64_t id, const DisplayIdList& list) { | 32 bool IsIdInList(int64_t id, const DisplayIdList& list) { | 
| 33   const auto iter = | 33   const auto iter = | 
| 34       std::find_if(list.begin(), list.end(), | 34       std::find_if(list.begin(), list.end(), | 
| 35                    [id](int64_t display_id) { return display_id == id; }); | 35                    [id](int64_t display_id) { return display_id == id; }); | 
| 36   return iter != list.end(); | 36   return iter != list.end(); | 
| 37 } | 37 } | 
| 38 | 38 | 
| 39 Display* FindDisplayById(DisplayList* display_list, int64_t id) { | 39 Display* FindDisplayById(Displays* display_list, int64_t id) { | 
| 40   auto iter = | 40   auto iter = | 
| 41       std::find_if(display_list->begin(), display_list->end(), | 41       std::find_if(display_list->begin(), display_list->end(), | 
| 42                    [id](const Display& display) { return display.id() == id; }); | 42                    [id](const Display& display) { return display.id() == id; }); | 
| 43   return &(*iter); | 43   return &(*iter); | 
| 44 } | 44 } | 
| 45 | 45 | 
| 46 }  // namespace | 46 }  // namespace | 
| 47 | 47 | 
| 48 //////////////////////////////////////////////////////////////////////////////// | 48 //////////////////////////////////////////////////////////////////////////////// | 
| 49 // DisplayPlacement | 49 // DisplayPlacement | 
| (...skipping 125 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 175 //////////////////////////////////////////////////////////////////////////////// | 175 //////////////////////////////////////////////////////////////////////////////// | 
| 176 // DisplayLayout | 176 // DisplayLayout | 
| 177 | 177 | 
| 178 DisplayLayout::DisplayLayout() | 178 DisplayLayout::DisplayLayout() | 
| 179     : mirrored(false), | 179     : mirrored(false), | 
| 180       default_unified(true), | 180       default_unified(true), | 
| 181       primary_id(Display::kInvalidDisplayID) {} | 181       primary_id(Display::kInvalidDisplayID) {} | 
| 182 | 182 | 
| 183 DisplayLayout::~DisplayLayout() {} | 183 DisplayLayout::~DisplayLayout() {} | 
| 184 | 184 | 
| 185 void DisplayLayout::ApplyToDisplayList(DisplayList* display_list, | 185 void DisplayLayout::ApplyToDisplayList(Displays* display_list, | 
| 186                                        std::vector<int64_t>* updated_ids, | 186                                        std::vector<int64_t>* updated_ids, | 
| 187                                        int minimum_offset_overlap) const { | 187                                        int minimum_offset_overlap) const { | 
| 188   // Layout from primary, then dependent displays. | 188   // Layout from primary, then dependent displays. | 
| 189   std::set<int64_t> parents; | 189   std::set<int64_t> parents; | 
| 190   parents.insert(primary_id); | 190   parents.insert(primary_id); | 
| 191   while (parents.size()) { | 191   while (parents.size()) { | 
| 192     int64_t parent_id = *parents.begin(); | 192     int64_t parent_id = *parents.begin(); | 
| 193     parents.erase(parent_id); | 193     parents.erase(parent_id); | 
| 194     for (const DisplayPlacement& placement : placement_list) { | 194     for (const DisplayPlacement& placement : placement_list) { | 
| 195       if (placement.parent_display_id == parent_id) { | 195       if (placement.parent_display_id == parent_id) { | 
| (...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 303       std::find_if(placement_list.begin(), placement_list.end(), | 303       std::find_if(placement_list.begin(), placement_list.end(), | 
| 304                    [display_id](const DisplayPlacement& placement) { | 304                    [display_id](const DisplayPlacement& placement) { | 
| 305                      return placement.display_id == display_id; | 305                      return placement.display_id == display_id; | 
| 306                    }); | 306                    }); | 
| 307   return (iter == placement_list.end()) ? DisplayPlacement() | 307   return (iter == placement_list.end()) ? DisplayPlacement() | 
| 308                                         : DisplayPlacement(*iter); | 308                                         : DisplayPlacement(*iter); | 
| 309 } | 309 } | 
| 310 | 310 | 
| 311 // static | 311 // static | 
| 312 bool DisplayLayout::ApplyDisplayPlacement(const DisplayPlacement& placement, | 312 bool DisplayLayout::ApplyDisplayPlacement(const DisplayPlacement& placement, | 
| 313                                           DisplayList* display_list, | 313                                           Displays* display_list, | 
| 314                                           int minimum_offset_overlap) { | 314                                           int minimum_offset_overlap) { | 
| 315   const Display& parent_display = | 315   const Display& parent_display = | 
| 316       *FindDisplayById(display_list, placement.parent_display_id); | 316       *FindDisplayById(display_list, placement.parent_display_id); | 
| 317   DCHECK(parent_display.is_valid()); | 317   DCHECK(parent_display.is_valid()); | 
| 318   Display* target_display = FindDisplayById(display_list, placement.display_id); | 318   Display* target_display = FindDisplayById(display_list, placement.display_id); | 
| 319   gfx::Rect old_bounds(target_display->bounds()); | 319   gfx::Rect old_bounds(target_display->bounds()); | 
| 320   DCHECK(target_display); | 320   DCHECK(target_display); | 
| 321 | 321 | 
| 322   const gfx::Rect& parent_bounds = parent_display.bounds(); | 322   const gfx::Rect& parent_bounds = parent_display.bounds(); | 
| 323   const gfx::Rect& target_bounds = target_display->bounds(); | 323   const gfx::Rect& target_bounds = target_display->bounds(); | 
| (...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 363 | 363 | 
| 364   gfx::Insets insets = target_display->GetWorkAreaInsets(); | 364   gfx::Insets insets = target_display->GetWorkAreaInsets(); | 
| 365   target_display->set_bounds( | 365   target_display->set_bounds( | 
| 366       gfx::Rect(new_target_origin, target_bounds.size())); | 366       gfx::Rect(new_target_origin, target_bounds.size())); | 
| 367   target_display->UpdateWorkAreaFromInsets(insets); | 367   target_display->UpdateWorkAreaFromInsets(insets); | 
| 368 | 368 | 
| 369   return old_bounds != target_display->bounds(); | 369   return old_bounds != target_display->bounds(); | 
| 370 } | 370 } | 
| 371 | 371 | 
| 372 }  // namespace display | 372 }  // namespace display | 
| OLD | NEW | 
|---|