Window_android.h revision 566c8e4a36c51cb24d8bb97cc71b3eb26737c012
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
1112d62a7d51a1826e221ffd34224d01c9bec49babdjsollen#include "../Window.h"
12796c5bb4655a511553970e111c96d90963fb9ae4liyuqian#include "surface_glue_android.h"
1312d62a7d51a1826e221ffd34224d01c9bec49babdjsollen
14345242671587d7273819bfe423be96e4392033e3jvanverthnamespace sk_app {
15345242671587d7273819bfe423be96e4392033e3jvanverth
1612d62a7d51a1826e221ffd34224d01c9bec49babdjsollenclass Window_android : public Window {
1712d62a7d51a1826e221ffd34224d01c9bec49babdjsollenpublic:
182d1ee7936e3536e45c963db004e3b512bb415fd8brianosman    Window_android() : Window() {}
1912d62a7d51a1826e221ffd34224d01c9bec49babdjsollen    ~Window_android() override {}
2012d62a7d51a1826e221ffd34224d01c9bec49babdjsollen
21796c5bb4655a511553970e111c96d90963fb9ae4liyuqian    bool init(SkiaAndroidApp* skiaAndroidApp);
2212d62a7d51a1826e221ffd34224d01c9bec49babdjsollen    void initDisplay(ANativeWindow* window);
23796c5bb4655a511553970e111c96d90963fb9ae4liyuqian    void onDisplayDestroyed();
2412d62a7d51a1826e221ffd34224d01c9bec49babdjsollen
2540d21de8b6620d724f34bdc85af1dcb593d33fe0liyuqian    const DisplayParams& getDisplayParams() override;
2612d62a7d51a1826e221ffd34224d01c9bec49babdjsollen    void setTitle(const char*) override;
2712d62a7d51a1826e221ffd34224d01c9bec49babdjsollen    void show() override {}
2812d62a7d51a1826e221ffd34224d01c9bec49babdjsollen
29af236b5aa9e7d71d59bee6533d16deb76e9d098bjvanverth    bool attach(BackendType attachType, const DisplayParams& params) override;
30566c8e4a36c51cb24d8bb97cc71b3eb26737c012liyuqian    void onInval() override;
31566c8e4a36c51cb24d8bb97cc71b3eb26737c012liyuqian
32566c8e4a36c51cb24d8bb97cc71b3eb26737c012liyuqian    void paintIfNeeded();
3312d62a7d51a1826e221ffd34224d01c9bec49babdjsollen
3412d62a7d51a1826e221ffd34224d01c9bec49babdjsollen    bool scaleContentToFit() const override { return true; }
3512d62a7d51a1826e221ffd34224d01c9bec49babdjsollen    bool supportsContentRect() const override { return true; }
36796c5bb4655a511553970e111c96d90963fb9ae4liyuqian    SkRect getContentRect() override { return fContentRect; }
37796c5bb4655a511553970e111c96d90963fb9ae4liyuqian    void setContentRect(int l, int t, int r, int b) { fContentRect.set(l,t,r,b); }
3812d62a7d51a1826e221ffd34224d01c9bec49babdjsollen
3912d62a7d51a1826e221ffd34224d01c9bec49babdjsollenprivate:
40796c5bb4655a511553970e111c96d90963fb9ae4liyuqian    SkiaAndroidApp* fSkiaAndroidApp = nullptr;
41796c5bb4655a511553970e111c96d90963fb9ae4liyuqian    SkRect fContentRect;
4205de216ffb864cb1f3a4fa37a2c3a772be38a0c9brianosman    DisplayParams fDisplayParams;
4312d62a7d51a1826e221ffd34224d01c9bec49babdjsollen};
4412d62a7d51a1826e221ffd34224d01c9bec49babdjsollen
45345242671587d7273819bfe423be96e4392033e3jvanverth}   // namespace sk_app
46345242671587d7273819bfe423be96e4392033e3jvanverth
4712d62a7d51a1826e221ffd34224d01c9bec49babdjsollen#endif
48