Window_android.h revision 6cb70251829a467b146da9bc8925064f33608e48
112d62a7d51a1826e221ffd34224d01c9bec49babdjsollen/* 212d62a7d51a1826e221ffd34224d01c9bec49babdjsollen* Copyright 2016 Google Inc. 312d62a7d51a1826e221ffd34224d01c9bec49babdjsollen* 412d62a7d51a1826e221ffd34224d01c9bec49babdjsollen* Use of this source code is governed by a BSD-style license that can be 512d62a7d51a1826e221ffd34224d01c9bec49babdjsollen* found in the LICENSE file. 612d62a7d51a1826e221ffd34224d01c9bec49babdjsollen*/ 712d62a7d51a1826e221ffd34224d01c9bec49babdjsollen 812d62a7d51a1826e221ffd34224d01c9bec49babdjsollen#ifndef Window_android_DEFINED 912d62a7d51a1826e221ffd34224d01c9bec49babdjsollen#define Window_android_DEFINED 1012d62a7d51a1826e221ffd34224d01c9bec49babdjsollen 116cb70251829a467b146da9bc8925064f33608e48liyuqian#include <android/native_window_jni.h> 126cb70251829a467b146da9bc8925064f33608e48liyuqian 1312d62a7d51a1826e221ffd34224d01c9bec49babdjsollen#include "../Window.h" 14796c5bb4655a511553970e111c96d90963fb9ae4liyuqian#include "surface_glue_android.h" 1512d62a7d51a1826e221ffd34224d01c9bec49babdjsollen 16345242671587d7273819bfe423be96e4392033e3jvanverthnamespace sk_app { 17345242671587d7273819bfe423be96e4392033e3jvanverth 186cb70251829a467b146da9bc8925064f33608e48liyuqianstruct ContextPlatformData_android { 196cb70251829a467b146da9bc8925064f33608e48liyuqian ANativeWindow* fNativeWindow; 206cb70251829a467b146da9bc8925064f33608e48liyuqian}; 216cb70251829a467b146da9bc8925064f33608e48liyuqian 2212d62a7d51a1826e221ffd34224d01c9bec49babdjsollenclass Window_android : public Window { 2312d62a7d51a1826e221ffd34224d01c9bec49babdjsollenpublic: 242d1ee7936e3536e45c963db004e3b512bb415fd8brianosman Window_android() : Window() {} 2512d62a7d51a1826e221ffd34224d01c9bec49babdjsollen ~Window_android() override {} 2612d62a7d51a1826e221ffd34224d01c9bec49babdjsollen 27796c5bb4655a511553970e111c96d90963fb9ae4liyuqian bool init(SkiaAndroidApp* skiaAndroidApp); 2812d62a7d51a1826e221ffd34224d01c9bec49babdjsollen void initDisplay(ANativeWindow* window); 29796c5bb4655a511553970e111c96d90963fb9ae4liyuqian void onDisplayDestroyed(); 3012d62a7d51a1826e221ffd34224d01c9bec49babdjsollen 3140d21de8b6620d724f34bdc85af1dcb593d33fe0liyuqian const DisplayParams& getDisplayParams() override; 3212d62a7d51a1826e221ffd34224d01c9bec49babdjsollen void setTitle(const char*) override; 3312d62a7d51a1826e221ffd34224d01c9bec49babdjsollen void show() override {} 3412d62a7d51a1826e221ffd34224d01c9bec49babdjsollen 35af236b5aa9e7d71d59bee6533d16deb76e9d098bjvanverth bool attach(BackendType attachType, const DisplayParams& params) override; 36566c8e4a36c51cb24d8bb97cc71b3eb26737c012liyuqian void onInval() override; 37e5a6cd9832eaa7011dee162283ff6470f82a3fdcliyuqian void setUIState(const Json::Value& state) override; 38566c8e4a36c51cb24d8bb97cc71b3eb26737c012liyuqian 39566c8e4a36c51cb24d8bb97cc71b3eb26737c012liyuqian void paintIfNeeded(); 4012d62a7d51a1826e221ffd34224d01c9bec49babdjsollen 4112d62a7d51a1826e221ffd34224d01c9bec49babdjsollen bool scaleContentToFit() const override { return true; } 4212d62a7d51a1826e221ffd34224d01c9bec49babdjsollen bool supportsContentRect() const override { return true; } 43796c5bb4655a511553970e111c96d90963fb9ae4liyuqian SkRect getContentRect() override { return fContentRect; } 44796c5bb4655a511553970e111c96d90963fb9ae4liyuqian void setContentRect(int l, int t, int r, int b) { fContentRect.set(l,t,r,b); } 4512d62a7d51a1826e221ffd34224d01c9bec49babdjsollen 4612d62a7d51a1826e221ffd34224d01c9bec49babdjsollenprivate: 476cb70251829a467b146da9bc8925064f33608e48liyuqian // We need fNativeWindow for attaching with another backend. 486cb70251829a467b146da9bc8925064f33608e48liyuqian // (in that case, attach is called without initDisplay being called later) 496cb70251829a467b146da9bc8925064f33608e48liyuqian ANativeWindow* fNativeWindow = nullptr; 50796c5bb4655a511553970e111c96d90963fb9ae4liyuqian SkiaAndroidApp* fSkiaAndroidApp = nullptr; 51796c5bb4655a511553970e111c96d90963fb9ae4liyuqian SkRect fContentRect; 5205de216ffb864cb1f3a4fa37a2c3a772be38a0c9brianosman DisplayParams fDisplayParams; 536cb70251829a467b146da9bc8925064f33608e48liyuqian BackendType fBackendType; 5412d62a7d51a1826e221ffd34224d01c9bec49babdjsollen}; 5512d62a7d51a1826e221ffd34224d01c9bec49babdjsollen 56345242671587d7273819bfe423be96e4392033e3jvanverth} // namespace sk_app 57345242671587d7273819bfe423be96e4392033e3jvanverth 5812d62a7d51a1826e221ffd34224d01c9bec49babdjsollen#endif 59