Upstream version 7.36.149.0
[platform/framework/web/crosswalk.git] / src / ui / gfx / ozone / overlay_candidates_ozone.h
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 UI_GFX_OZONE_OVERLAY_CANDIDATES_OZONE_H_
6 #define UI_GFX_OZONE_OVERLAY_CANDIDATES_OZONE_H_
7
8 #include <vector>
9
10 #include "base/basictypes.h"
11 #include "ui/gfx/gfx_export.h"
12 #include "ui/gfx/ozone/surface_factory_ozone.h"
13 #include "ui/gfx/rect_f.h"
14
15 namespace gfx {
16
17 // This class can be used to answer questions about possible overlay
18 // configurations for a particular output device. We get an instance of this
19 // class from SurfaceFactoryOzone given an AcceleratedWidget.
20 class GFX_EXPORT OverlayCandidatesOzone {
21  public:
22   struct OverlaySurfaceCandidate {
23     OverlaySurfaceCandidate();
24     ~OverlaySurfaceCandidate();
25
26     // Transformation to apply to layer during composition.
27     gfx::OverlayTransform transform;
28     // Format of the buffer to composite.
29     SurfaceFactoryOzone::BufferFormat format;
30     // Rect on the display to position the overlay to.
31     gfx::Rect display_rect;
32     // Crop within the buffer to be placed inside |display_rect|.
33     gfx::RectF crop_rect;
34     // Stacking order of the overlay plane relative to the main surface,
35     // which is 0. Signed to allow for "underlays".
36     int plane_z_order;
37
38     // To be modified by the implementer if this candidate can go into
39     // an overlay.
40     bool overlay_handled;
41   };
42
43   typedef std::vector<OverlaySurfaceCandidate> OverlaySurfaceCandidateList;
44
45   // A list of possible overlay candidates is presented to this function.
46   // The expected result is that those candidates that can be in a separate
47   // plane are marked with |overlay_handled| set to true, otherwise they are
48   // to be tranditionally composited.
49   virtual void CheckOverlaySupport(OverlaySurfaceCandidateList* surfaces);
50
51   virtual ~OverlayCandidatesOzone();
52 };
53
54 }  // namespace gfx
55
56 #endif  // UI_GFX_OZONE_OVERLAY_CANDIDATES_OZONE_H_