190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)// Copyright (c) 2013 The Chromium Authors. All rights reserved.
290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)// found in the LICENSE file.
490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)
56d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles)#include "ui/ozone/public/surface_factory_ozone.h"
690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)
7ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch#include <stdlib.h>
890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)
91e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)#include "base/command_line.h"
106d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles)#include "ui/ozone/public/surface_ozone_canvas.h"
116d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles)#include "ui/ozone/public/surface_ozone_egl.h"
128bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)
136d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles)namespace ui {
1490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)
15eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch// static
16eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen MurdochSurfaceFactoryOzone* SurfaceFactoryOzone::impl_ = NULL;
1790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)
1890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)SurfaceFactoryOzone::SurfaceFactoryOzone() {
19cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  CHECK(!impl_) << "There should only be a single SurfaceFactoryOzone.";
20cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  impl_ = this;
2190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)}
2290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)
2390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)SurfaceFactoryOzone::~SurfaceFactoryOzone() {
24cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  CHECK_EQ(impl_, this);
25cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  impl_ = NULL;
2690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)}
2790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)
2890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)SurfaceFactoryOzone* SurfaceFactoryOzone::GetInstance() {
290f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)  CHECK(impl_) << "No SurfaceFactoryOzone implementation set.";
30eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  return impl_;
3190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)}
3290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)
3358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)intptr_t SurfaceFactoryOzone::GetNativeDisplay() {
3458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  return 0;
3558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)}
3658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)
37c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdochscoped_ptr<SurfaceOzoneEGL> SurfaceFactoryOzone::CreateEGLSurfaceForWidget(
386d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles)    gfx::AcceleratedWidget widget) {
39e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch  NOTIMPLEMENTED();
40c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch  return scoped_ptr<SurfaceOzoneEGL>();
41c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch}
42c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch
43c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdochscoped_ptr<SurfaceOzoneCanvas> SurfaceFactoryOzone::CreateCanvasForWidget(
446d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles)    gfx::AcceleratedWidget widget) {
45c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch  NOTIMPLEMENTED();
46c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch  return scoped_ptr<SurfaceOzoneCanvas>();
471e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)}
481e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)
494e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)const int32* SurfaceFactoryOzone::GetEGLSurfaceProperties(
504e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)    const int32* desired_attributes) {
514e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  return desired_attributes;
524e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)}
534e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
546d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles)ui::OverlayCandidatesOzone* SurfaceFactoryOzone::GetOverlayCandidates(
55a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)    gfx::AcceleratedWidget w) {
56a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  return NULL;
57a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)}
58a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)
59c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdochvoid SurfaceFactoryOzone::ScheduleOverlayPlane(
60c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch    gfx::AcceleratedWidget w,
61c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch    int plane_z_order,
62c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch    gfx::OverlayTransform plane_transform,
636d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles)    ui::NativeBufferOzone buffer,
64c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch    const gfx::Rect& display_bounds,
65c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch    gfx::RectF crop_rect) {
66a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  NOTREACHED();
67a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)}
68a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)
696d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles)ui::NativeBufferOzone SurfaceFactoryOzone::CreateNativeBuffer(
70a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)    gfx::Size size,
71a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)    BufferFormat format) {
72a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  return 0;
73a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)}
74a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)
756d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles)}  // namespace ui
76