forked from chromium/chromium
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathdisplay_transform.cc
45 lines (39 loc) · 1.72 KB
/
display_transform.cc
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
// Copyright 2019 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "ui/display/display_transform.h"
#include "base/notreached.h"
#include "ui/gfx/overlay_transform_utils.h"
namespace display {
gfx::Transform CreateRotationTransform(display::Display::Rotation rotation,
const gfx::SizeF& size_to_rotate) {
return OverlayTransformToTransform(
DisplayRotationToOverlayTransform(rotation), size_to_rotate);
}
gfx::OverlayTransform DisplayRotationToOverlayTransform(
display::Display::Rotation rotation) {
// Note that the angle provided by |rotation| here is the opposite direction
// of the physical rotation of the device, which is the space in which the UI
// prepares the scene (see
// https://developer.android.com/reference/android/view/Display#getRotation()
// for details).
//
// The rotation which needs to be applied by the display compositor to allow
// the buffers produced by it to be used directly by the system compositor
// needs to be the inverse of this rotation. Since display::Rotation is in
// clockwise direction while gfx::OverlayTransform is anti-clockwise, directly
// mapping them below performs this inversion.
switch (rotation) {
case display::Display::ROTATE_0:
return gfx::OVERLAY_TRANSFORM_NONE;
case display::Display::ROTATE_90:
return gfx::OVERLAY_TRANSFORM_ROTATE_90;
case display::Display::ROTATE_180:
return gfx::OVERLAY_TRANSFORM_ROTATE_180;
case display::Display::ROTATE_270:
return gfx::OVERLAY_TRANSFORM_ROTATE_270;
}
NOTREACHED();
return gfx::OVERLAY_TRANSFORM_NONE;
}
} // namespace display