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