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

Side by Side Diff: cc/output/overlay_candidate.cc

Issue 1533773002: Delete CC. (Closed) Base URL: git@github.com:domokit/mojo.git@cl-2e
Patch Set: rebase Created 5 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
« no previous file with comments | « cc/output/overlay_candidate.h ('k') | cc/output/overlay_candidate_validator.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 // Copyright 2014 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 #include "cc/output/overlay_candidate.h"
6
7 #include <algorithm>
8 #include "base/logging.h"
9 #include "ui/gfx/geometry/rect_conversions.h"
10
11 namespace cc {
12
13 OverlayCandidate::OverlayCandidate()
14 : transform(gfx::OVERLAY_TRANSFORM_NONE),
15 format(RGBA_8888),
16 uv_rect(0.f, 0.f, 1.f, 1.f),
17 resource_id(0),
18 plane_z_order(0),
19 overlay_handled(false) {}
20
21 OverlayCandidate::~OverlayCandidate() {}
22
23 // static
24 gfx::OverlayTransform OverlayCandidate::GetOverlayTransform(
25 const gfx::Transform& quad_transform,
26 bool flipped) {
27 if (!quad_transform.IsPositiveScaleOrTranslation())
28 return gfx::OVERLAY_TRANSFORM_INVALID;
29
30 return flipped ? gfx::OVERLAY_TRANSFORM_FLIP_VERTICAL
31 : gfx::OVERLAY_TRANSFORM_NONE;
32 }
33
34 // static
35 gfx::OverlayTransform OverlayCandidate::ModifyTransform(
36 gfx::OverlayTransform in,
37 gfx::OverlayTransform delta) {
38 // There are 8 different possible transforms. We can characterize these
39 // by looking at where the origin moves and the direction the horizontal goes.
40 // (TL=top-left, BR=bottom-right, H=horizontal, V=vertical).
41 // NONE: TL, H
42 // FLIP_VERTICAL: BL, H
43 // FLIP_HORIZONTAL: TR, H
44 // ROTATE_90: TR, V
45 // ROTATE_180: BR, H
46 // ROTATE_270: BL, V
47 // Missing transforms: TL, V & BR, V
48 // Basic combinations:
49 // Flip X & Y -> Rotate 180 (TL,H -> TR,H -> BR,H or TL,H -> BL,H -> BR,H)
50 // Flip X or Y + Rotate 180 -> other flip (eg, TL,H -> TR,H -> BL,H)
51 // Rotate + Rotate simply adds values.
52 // Rotate 90/270 + flip is invalid because we can only have verticals with
53 // the origin in TR or BL.
54 if (delta == gfx::OVERLAY_TRANSFORM_NONE)
55 return in;
56 switch (in) {
57 case gfx::OVERLAY_TRANSFORM_NONE:
58 return delta;
59 case gfx::OVERLAY_TRANSFORM_FLIP_VERTICAL:
60 switch (delta) {
61 case gfx::OVERLAY_TRANSFORM_FLIP_VERTICAL:
62 return gfx::OVERLAY_TRANSFORM_NONE;
63 case gfx::OVERLAY_TRANSFORM_FLIP_HORIZONTAL:
64 return gfx::OVERLAY_TRANSFORM_ROTATE_180;
65 case gfx::OVERLAY_TRANSFORM_ROTATE_180:
66 return gfx::OVERLAY_TRANSFORM_FLIP_HORIZONTAL;
67 default:
68 return gfx::OVERLAY_TRANSFORM_INVALID;
69 }
70 break;
71 case gfx::OVERLAY_TRANSFORM_FLIP_HORIZONTAL:
72 switch (delta) {
73 case gfx::OVERLAY_TRANSFORM_FLIP_HORIZONTAL:
74 return gfx::OVERLAY_TRANSFORM_NONE;
75 case gfx::OVERLAY_TRANSFORM_FLIP_VERTICAL:
76 return gfx::OVERLAY_TRANSFORM_ROTATE_180;
77 case gfx::OVERLAY_TRANSFORM_ROTATE_90:
78 case gfx::OVERLAY_TRANSFORM_ROTATE_180:
79 return gfx::OVERLAY_TRANSFORM_FLIP_VERTICAL;
80 case gfx::OVERLAY_TRANSFORM_ROTATE_270:
81 default:
82 return gfx::OVERLAY_TRANSFORM_INVALID;
83 }
84 break;
85 case gfx::OVERLAY_TRANSFORM_ROTATE_90:
86 switch (delta) {
87 case gfx::OVERLAY_TRANSFORM_ROTATE_90:
88 return gfx::OVERLAY_TRANSFORM_ROTATE_180;
89 case gfx::OVERLAY_TRANSFORM_ROTATE_180:
90 return gfx::OVERLAY_TRANSFORM_ROTATE_270;
91 case gfx::OVERLAY_TRANSFORM_ROTATE_270:
92 return gfx::OVERLAY_TRANSFORM_NONE;
93 default:
94 return gfx::OVERLAY_TRANSFORM_INVALID;
95 }
96 break;
97 case gfx::OVERLAY_TRANSFORM_ROTATE_180:
98 switch (delta) {
99 case gfx::OVERLAY_TRANSFORM_FLIP_HORIZONTAL:
100 return gfx::OVERLAY_TRANSFORM_FLIP_VERTICAL;
101 case gfx::OVERLAY_TRANSFORM_FLIP_VERTICAL:
102 return gfx::OVERLAY_TRANSFORM_FLIP_HORIZONTAL;
103 case gfx::OVERLAY_TRANSFORM_ROTATE_90:
104 return gfx::OVERLAY_TRANSFORM_ROTATE_270;
105 case gfx::OVERLAY_TRANSFORM_ROTATE_180:
106 return gfx::OVERLAY_TRANSFORM_NONE;
107 case gfx::OVERLAY_TRANSFORM_ROTATE_270:
108 return gfx::OVERLAY_TRANSFORM_ROTATE_90;
109 default:
110 return gfx::OVERLAY_TRANSFORM_INVALID;
111 }
112 break;
113 case gfx::OVERLAY_TRANSFORM_ROTATE_270:
114 switch (delta) {
115 case gfx::OVERLAY_TRANSFORM_ROTATE_90:
116 return gfx::OVERLAY_TRANSFORM_NONE;
117 case gfx::OVERLAY_TRANSFORM_ROTATE_180:
118 return gfx::OVERLAY_TRANSFORM_ROTATE_90;
119 case gfx::OVERLAY_TRANSFORM_ROTATE_270:
120 return gfx::OVERLAY_TRANSFORM_ROTATE_180;
121 default:
122 return gfx::OVERLAY_TRANSFORM_INVALID;
123 }
124 break;
125 default:
126 return gfx::OVERLAY_TRANSFORM_INVALID;
127 }
128 }
129
130 // static
131 gfx::Rect OverlayCandidate::GetOverlayRect(const gfx::Transform& quad_transform,
132 const gfx::Rect& rect) {
133 DCHECK(quad_transform.IsPositiveScaleOrTranslation());
134
135 gfx::RectF float_rect(rect);
136 quad_transform.TransformRect(&float_rect);
137 return gfx::ToNearestRect(float_rect);
138 }
139
140 } // namespace cc
OLDNEW
« no previous file with comments | « cc/output/overlay_candidate.h ('k') | cc/output/overlay_candidate_validator.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698