1cb93a386Sopenharmony_ci 2cb93a386Sopenharmony_ci/* 3cb93a386Sopenharmony_ci * Copyright 2017 Google Inc. 4cb93a386Sopenharmony_ci * 5cb93a386Sopenharmony_ci * Use of this source code is governed by a BSD-style license that can be 6cb93a386Sopenharmony_ci * found in the LICENSE file. 7cb93a386Sopenharmony_ci */ 8cb93a386Sopenharmony_ci 9cb93a386Sopenharmony_ci#ifndef WindowContextFactory_ios_DEFINED 10cb93a386Sopenharmony_ci#define WindowContextFactory_ios_DEFINED 11cb93a386Sopenharmony_ci 12cb93a386Sopenharmony_ci#include "tools/sk_app/ios/Window_ios.h" 13cb93a386Sopenharmony_ci 14cb93a386Sopenharmony_ci#import <UIKit/UIKit.h> 15cb93a386Sopenharmony_ci 16cb93a386Sopenharmony_ci#include "tools/sk_app/WindowContext.h" 17cb93a386Sopenharmony_ci 18cb93a386Sopenharmony_ci#include <memory> 19cb93a386Sopenharmony_ci 20cb93a386Sopenharmony_cinamespace sk_app { 21cb93a386Sopenharmony_ci 22cb93a386Sopenharmony_cistruct DisplayParams; 23cb93a386Sopenharmony_ci 24cb93a386Sopenharmony_cinamespace window_context_factory { 25cb93a386Sopenharmony_ci 26cb93a386Sopenharmony_cistruct IOSWindowInfo { 27cb93a386Sopenharmony_ci sk_app::Window_ios* fWindow; 28cb93a386Sopenharmony_ci UIViewController* fViewController; 29cb93a386Sopenharmony_ci}; 30cb93a386Sopenharmony_ci 31cb93a386Sopenharmony_ci#ifdef SK_VULKAN 32cb93a386Sopenharmony_ciinline std::unique_ptr<WindowContext> MakeVulkanForIOS(const IOSWindowInfo&, const DisplayParams&) { 33cb93a386Sopenharmony_ci // No Vulkan support on iOS yet. 34cb93a386Sopenharmony_ci return nullptr; 35cb93a386Sopenharmony_ci} 36cb93a386Sopenharmony_ci#endif 37cb93a386Sopenharmony_ci 38cb93a386Sopenharmony_ci#ifdef SK_METAL 39cb93a386Sopenharmony_cistd::unique_ptr<WindowContext> MakeMetalForIOS(const IOSWindowInfo&, const DisplayParams&); 40cb93a386Sopenharmony_ci#endif 41cb93a386Sopenharmony_ci 42cb93a386Sopenharmony_ci#ifdef SK_GL 43cb93a386Sopenharmony_cistd::unique_ptr<WindowContext> MakeGLForIOS(const IOSWindowInfo&, const DisplayParams&); 44cb93a386Sopenharmony_cistd::unique_ptr<WindowContext> MakeRasterForIOS(const IOSWindowInfo&, const DisplayParams&); 45cb93a386Sopenharmony_ci#endif 46cb93a386Sopenharmony_ci 47cb93a386Sopenharmony_ci} // namespace window_context_factory 48cb93a386Sopenharmony_ci 49cb93a386Sopenharmony_ci} // namespace sk_app 50cb93a386Sopenharmony_ci 51cb93a386Sopenharmony_ci#endif 52