// Copyright 2014 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#include "ui/ozone/platform/dri/overlay_plane.h"

#include "base/logging.h"
#include "ui/ozone/platform/dri/scanout_buffer.h"

namespace ui {

OverlayPlane::OverlayPlane(scoped_refptr<ScanoutBuffer> buffer)
    : buffer(buffer),
      z_order(0),
      display_bounds(gfx::Point(), buffer->GetSize()),
      crop_rect(0, 0, 1, 1),
      overlay_plane(0) {
}

OverlayPlane::OverlayPlane(scoped_refptr<ScanoutBuffer> buffer,
                           int z_order,
                           gfx::OverlayTransform plane_transform,
                           const gfx::Rect& display_bounds,
                           const gfx::RectF& crop_rect)
    : buffer(buffer),
      z_order(z_order),
      plane_transform(plane_transform),
      display_bounds(display_bounds),
      crop_rect(crop_rect),
      overlay_plane(0) {
}

OverlayPlane::~OverlayPlane() {
}

// static
const OverlayPlane& OverlayPlane::GetPrimaryPlane(
    const OverlayPlaneList& overlays) {
  for (size_t i = 0; i < overlays.size(); ++i) {
    if (overlays[i].z_order == 0)
      return overlays[i];
  }

  NOTREACHED();
  return overlays[0];
}

}  // namespace ui
