Home | History | Annotate | Download | only in public
      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_OZONE_PUBLIC_OVERLAY_CANDIDATES_OZONE_H_
      6 #define UI_OZONE_PUBLIC_OVERLAY_CANDIDATES_OZONE_H_
      7 
      8 #include <vector>
      9 
     10 #include "base/basictypes.h"
     11 #include "ui/gfx/rect_f.h"
     12 #include "ui/ozone/ozone_base_export.h"
     13 #include "ui/ozone/public/surface_factory_ozone.h"
     14 
     15 namespace ui {
     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 OZONE_BASE_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 ui
     55 
     56 #endif  // UI_OZONE_PUBLIC_OVERLAY_CANDIDATES_OZONE_H_
     57