1cb93a386Sopenharmony_ci 2cb93a386Sopenharmony_ci/* 3cb93a386Sopenharmony_ci * Copyright 2016 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_mac_DEFINED 10cb93a386Sopenharmony_ci#define WindowContextFactory_mac_DEFINED 11cb93a386Sopenharmony_ci 12cb93a386Sopenharmony_ci#include "tools/sk_app/WindowContext.h" 13cb93a386Sopenharmony_ci 14cb93a386Sopenharmony_ci#include <Cocoa/Cocoa.h> 15cb93a386Sopenharmony_ci 16cb93a386Sopenharmony_ci#include <memory> 17cb93a386Sopenharmony_ci 18cb93a386Sopenharmony_cinamespace sk_app { 19cb93a386Sopenharmony_ci 20cb93a386Sopenharmony_cistruct DisplayParams; 21cb93a386Sopenharmony_ci 22cb93a386Sopenharmony_cistatic inline CGFloat GetBackingScaleFactor(NSView* view) { 23cb93a386Sopenharmony_ci #ifdef SK_BUILD_FOR_IOS 24cb93a386Sopenharmony_ci UIScreen* screen = view.window.screen ?: [UIScreen mainScreen]; 25cb93a386Sopenharmony_ci return screen.nativeScale; 26cb93a386Sopenharmony_ci #else 27cb93a386Sopenharmony_ci NSScreen* screen = view.window.screen ?: [NSScreen mainScreen]; 28cb93a386Sopenharmony_ci return screen.backingScaleFactor; 29cb93a386Sopenharmony_ci #endif 30cb93a386Sopenharmony_ci} 31cb93a386Sopenharmony_ci 32cb93a386Sopenharmony_cinamespace window_context_factory { 33cb93a386Sopenharmony_ci 34cb93a386Sopenharmony_cistruct MacWindowInfo { 35cb93a386Sopenharmony_ci NSView* fMainView; 36cb93a386Sopenharmony_ci}; 37cb93a386Sopenharmony_ci 38cb93a386Sopenharmony_ci#ifdef SK_VULKAN 39cb93a386Sopenharmony_ciinline std::unique_ptr<WindowContext> MakeVulkanForMac(const MacWindowInfo&, const DisplayParams&) { 40cb93a386Sopenharmony_ci // No Vulkan support on Mac. 41cb93a386Sopenharmony_ci return nullptr; 42cb93a386Sopenharmony_ci} 43cb93a386Sopenharmony_ci#endif 44cb93a386Sopenharmony_ci 45cb93a386Sopenharmony_ci#ifdef SK_GL 46cb93a386Sopenharmony_cistd::unique_ptr<WindowContext> MakeRasterForMac(const MacWindowInfo&, const DisplayParams&); 47cb93a386Sopenharmony_cistd::unique_ptr<WindowContext> MakeGLForMac(const MacWindowInfo&, const DisplayParams&); 48cb93a386Sopenharmony_ci#endif 49cb93a386Sopenharmony_ci 50cb93a386Sopenharmony_ci#ifdef SK_DAWN 51cb93a386Sopenharmony_cistd::unique_ptr<WindowContext> MakeDawnMTLForMac(const MacWindowInfo&, const DisplayParams&); 52cb93a386Sopenharmony_ci#endif 53cb93a386Sopenharmony_ci 54cb93a386Sopenharmony_ci#ifdef SK_METAL 55cb93a386Sopenharmony_cistd::unique_ptr<WindowContext> MakeMetalForMac(const MacWindowInfo&, const DisplayParams&); 56cb93a386Sopenharmony_ci#ifdef SK_GRAPHITE_ENABLED 57cb93a386Sopenharmony_cistd::unique_ptr<WindowContext> MakeGraphiteMetalForMac(const MacWindowInfo&, const DisplayParams&); 58cb93a386Sopenharmony_ci#endif 59cb93a386Sopenharmony_ci#endif 60cb93a386Sopenharmony_ci 61cb93a386Sopenharmony_ci} // namespace window_context_factory 62cb93a386Sopenharmony_ci 63cb93a386Sopenharmony_ci} // namespace sk_app 64cb93a386Sopenharmony_ci 65cb93a386Sopenharmony_ci#endif 66