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 16 namespace cc { 17 18 class 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 48 typedef std::vector<OverlayCandidate> OverlayCandidateList; 49 50 } // namespace cc 51 52 #endif // CC_OUTPUT_OVERLAY_CANDIDATE_H_ 53