Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(500)

Side by Side Diff: ui/display/manager/display_layout.h

Issue 2540313002: Split //ui/display and create //ui/display/manager. (Closed)
Patch Set: Cleanup export header. Created 4 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
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
3 // found in the LICENSE file.
4
5 #ifndef UI_DISPLAY_MANAGER_DISPLAY_LAYOUT_H_
6 #define UI_DISPLAY_MANAGER_DISPLAY_LAYOUT_H_
7
8 #include <stdint.h>
9
10 #include <memory>
11 #include <string>
12 #include <vector>
13
14 #include "base/macros.h"
15 #include "base/strings/string_piece.h"
16 #include "ui/display/display_export.h"
17
18 namespace display {
19 class Display;
20
21 // An identifier used to manage display layout in DisplayManager /
22 // DisplayLayoutStore.
23 using DisplayIdList = std::vector<int64_t>;
24
25 using Displays = std::vector<Display>;
26
27 // DisplayPlacement specifies where the display (D) is placed relative to
28 // parent (P) display. In the following example, D given by |display_id| is
29 // placed at the left side of P given by |parent_display_id|, with a negative
30 // offset and a top-left offset reference.
31 //
32 // + +--------+
33 // offset | | |
34 // + | D +--------+
35 // | | |
36 // +--------+ P |
37 // | |
38 // +--------+
39 //
40 struct DISPLAY_EXPORT DisplayPlacement {
41 // The id of the display this placement will be applied to.
42 int64_t display_id;
43
44 // The parent display id to which the above display is placed.
45 int64_t parent_display_id;
46
47 // To which side the parent display the display is positioned.
48 enum Position { TOP, RIGHT, BOTTOM, LEFT };
49 Position position;
50
51 // The offset of the position with respect to the parent.
52 int offset;
53
54 // Determines if the offset is relative to the TOP_LEFT or the BOTTOM_RIGHT.
55 // Defaults to TOP_LEFT.
56 enum OffsetReference { TOP_LEFT, BOTTOM_RIGHT };
57 OffsetReference offset_reference;
58
59 DisplayPlacement();
60 DisplayPlacement(Position position, int offset);
61 DisplayPlacement(Position position,
62 int offset,
63 OffsetReference offset_reference);
64 DisplayPlacement(int64_t display_id,
65 int64_t parent_display_id,
66 Position position,
67 int offset,
68 OffsetReference offset_reference);
69
70 DisplayPlacement(const DisplayPlacement& placement);
71
72 DisplayPlacement& Swap();
73
74 std::string ToString() const;
75
76 static std::string PositionToString(Position position);
77 static bool StringToPosition(const base::StringPiece& string,
78 Position* position);
79 };
80
81 class DISPLAY_EXPORT DisplayLayout final {
82 public:
83 DisplayLayout();
84 ~DisplayLayout();
85
86 // Applies the layout to the displays in |display_list|.
87 // |updated_ids| (optional) contains the ids for displays whose bounds have
88 // changed. |minimum_offset_overlap| represents the minimum required overlap
89 // between displays.
90 void ApplyToDisplayList(Displays* display_list,
91 std::vector<int64_t>* updated_ids,
92 int minimum_offset_overlap) const;
93
94 // Validates the layout object.
95 static bool Validate(const DisplayIdList& list, const DisplayLayout& layout);
96
97 std::vector<DisplayPlacement> placement_list;
98
99 // True if displays are mirrored.
100 bool mirrored;
101
102 // True if multi displays should default to unified mode.
103 bool default_unified;
104
105 // The id of the display used as a primary display.
106 int64_t primary_id;
107
108 std::unique_ptr<DisplayLayout> Copy() const;
109
110 // Test if the |layout| has the same placement list. Other fields such
111 // as mirrored, primary_id are ignored.
112 bool HasSamePlacementList(const DisplayLayout& layout) const;
113
114 // Returns string representation of the layout for debugging/testing.
115 std::string ToString() const;
116
117 // Returns the DisplayPlacement entry matching |display_id| if it exists,
118 // otherwise returns a DisplayPlacement with an invalid display id.
119 DisplayPlacement FindPlacementById(int64_t display_id) const;
120
121 private:
122 // Apply the display placement to |display_list|.
123 // Returns true if the display bounds were updated.
124 static bool ApplyDisplayPlacement(const DisplayPlacement& placement,
125 Displays* display_list,
126 int minimum_offset_overlap);
127
128 DISALLOW_COPY_AND_ASSIGN(DisplayLayout);
129 };
130
131 } // namespace display
132
133 #endif // UI_DISPLAY_MANAGER_DISPLAY_LAYOUT_H_
OLDNEW
« no previous file with comments | « ui/display/manager/chromeos/x11/native_display_event_dispatcher_x11_unittest.cc ('k') | ui/display/manager/display_layout.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698