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#ifndef CC_OUTPUT_OVERLAY_CANDIDATE_H_
6#define CC_OUTPUT_OVERLAY_CANDIDATE_H_
7
8#include <vector>
9
10#include "cc/base/cc_export.h"
11#include "cc/resources/resource_format.h"
12#include "ui/gfx/geometry/rect.h"
13#include "ui/gfx/overlay_transform.h"
14#include "ui/gfx/transform.h"
15
16namespace cc {
17
18class CC_EXPORT OverlayCandidate {
19 public:
20  static gfx::OverlayTransform GetOverlayTransform(
21      const gfx::Transform& quad_transform,
22      bool flipped);
23  static gfx::Rect GetOverlayRect(const gfx::Transform& quad_transform,
24                                  const gfx::Rect& rect);
25
26  OverlayCandidate();
27  ~OverlayCandidate();
28
29  // Transformation to apply to layer during composition.
30  gfx::OverlayTransform transform;
31  // Format of the buffer to composite.
32  ResourceFormat format;
33  // Rect on the display to position the overlay to.
34  gfx::Rect display_rect;
35  // Crop within the buffer to be placed inside |display_rect|.
36  gfx::RectF uv_rect;
37  // Texture resource to present in an overlay.
38  unsigned resource_id;
39  // Stacking order of the overlay plane relative to the main surface,
40  // which is 0. Signed to allow for "underlays".
41  int plane_z_order;
42
43  // To be modified by the implementer if this candidate can go into
44  // an overlay.
45  bool overlay_handled;
46};
47
48typedef std::vector<OverlayCandidate> OverlayCandidateList;
49
50}  // namespace cc
51
52#endif  // CC_OUTPUT_OVERLAY_CANDIDATE_H_
53