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 ATHENA_SCREEN_PUBLIC_SCREEN_MANAGER_H_ 6 #define ATHENA_SCREEN_PUBLIC_SCREEN_MANAGER_H_ 7 8 #include <string> 9 10 #include "athena/athena_export.h" 11 12 namespace aura { 13 class Window; 14 } 15 16 namespace gfx { 17 class ImageSkia; 18 } 19 20 namespace athena { 21 22 // Mananges basic UI components on the screen such as background, and provide 23 // API for other UI components, such as window manager, home card, to 24 // create and manage their windows on the screen. 25 class ATHENA_EXPORT ScreenManager { 26 public: 27 // Creates, returns and deletes the singleton object of the ScreenManager 28 // implementation. 29 static ScreenManager* Create(aura::Window* root); 30 static ScreenManager* Get(); 31 static void Shutdown(); 32 33 virtual ~ScreenManager() {} 34 35 // Creates the container window that is used when creating a normal 36 // widget without specific parent. 37 virtual aura::Window* CreateDefaultContainer(const std::string& name) = 0; 38 39 // Creates the container window on the screen. 40 virtual aura::Window* CreateContainer(const std::string& name) = 0; 41 42 // Return the context object to be used for widget creation. 43 virtual aura::Window* GetContext() = 0; 44 45 // Sets the background image. 46 virtual void SetBackgroundImage(const gfx::ImageSkia& image) = 0; 47 }; 48 49 } // namespace athena 50 51 #endif // ATHENA_SCREEN_PUBLIC_SCREEN_MANAGER_H_ 52