1b2f5bd2d6043132d8c1d0f3e2e7e454c2693f499Tom Hudson/*
2b2f5bd2d6043132d8c1d0f3e2e7e454c2693f499Tom Hudson * Copyright (C) 2015 The Android Open Source Project
3b2f5bd2d6043132d8c1d0f3e2e7e454c2693f499Tom Hudson *
4b2f5bd2d6043132d8c1d0f3e2e7e454c2693f499Tom Hudson * Licensed under the Apache License, Version 2.0 (the "License");
5b2f5bd2d6043132d8c1d0f3e2e7e454c2693f499Tom Hudson * you may not use this file except in compliance with the License.
6b2f5bd2d6043132d8c1d0f3e2e7e454c2693f499Tom Hudson * You may obtain a copy of the License at
7b2f5bd2d6043132d8c1d0f3e2e7e454c2693f499Tom Hudson *
8b2f5bd2d6043132d8c1d0f3e2e7e454c2693f499Tom Hudson *      http://www.apache.org/licenses/LICENSE-2.0
9b2f5bd2d6043132d8c1d0f3e2e7e454c2693f499Tom Hudson *
10b2f5bd2d6043132d8c1d0f3e2e7e454c2693f499Tom Hudson * Unless required by applicable law or agreed to in writing, software
11b2f5bd2d6043132d8c1d0f3e2e7e454c2693f499Tom Hudson * distributed under the License is distributed on an "AS IS" BASIS,
12b2f5bd2d6043132d8c1d0f3e2e7e454c2693f499Tom Hudson * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13b2f5bd2d6043132d8c1d0f3e2e7e454c2693f499Tom Hudson * See the License for the specific language governing permissions and
14b2f5bd2d6043132d8c1d0f3e2e7e454c2693f499Tom Hudson * limitations under the License.
15b2f5bd2d6043132d8c1d0f3e2e7e454c2693f499Tom Hudson */
16b2f5bd2d6043132d8c1d0f3e2e7e454c2693f499Tom Hudson#ifndef TESTWINDOWCONTEXT_H_
17b2f5bd2d6043132d8c1d0f3e2e7e454c2693f499Tom Hudson#define TESTWINDOWCONTEXT_H_
18b2f5bd2d6043132d8c1d0f3e2e7e454c2693f499Tom Hudson
19b2f5bd2d6043132d8c1d0f3e2e7e454c2693f499Tom Hudson#include <cutils/compiler.h>
20b2f5bd2d6043132d8c1d0f3e2e7e454c2693f499Tom Hudson
21b2f5bd2d6043132d8c1d0f3e2e7e454c2693f499Tom Hudsonclass SkBitmap;
22b2f5bd2d6043132d8c1d0f3e2e7e454c2693f499Tom Hudsonclass SkCanvas;
23b2f5bd2d6043132d8c1d0f3e2e7e454c2693f499Tom Hudson
24b2f5bd2d6043132d8c1d0f3e2e7e454c2693f499Tom Hudsonnamespace android {
25b2f5bd2d6043132d8c1d0f3e2e7e454c2693f499Tom Hudson
26b2f5bd2d6043132d8c1d0f3e2e7e454c2693f499Tom Hudsonnamespace uirenderer {
27b2f5bd2d6043132d8c1d0f3e2e7e454c2693f499Tom Hudson
28b2f5bd2d6043132d8c1d0f3e2e7e454c2693f499Tom Hudson/**
29b2f5bd2d6043132d8c1d0f3e2e7e454c2693f499Tom Hudson  Wraps all libui/libgui classes and types that external tests depend on,
30b2f5bd2d6043132d8c1d0f3e2e7e454c2693f499Tom Hudson  exposing only primitive Skia types.
31b2f5bd2d6043132d8c1d0f3e2e7e454c2693f499Tom Hudson*/
32b2f5bd2d6043132d8c1d0f3e2e7e454c2693f499Tom Hudson
33b2f5bd2d6043132d8c1d0f3e2e7e454c2693f499Tom Hudsonclass ANDROID_API TestWindowContext {
34b2f5bd2d6043132d8c1d0f3e2e7e454c2693f499Tom Hudson
35b2f5bd2d6043132d8c1d0f3e2e7e454c2693f499Tom Hudsonpublic:
36b2f5bd2d6043132d8c1d0f3e2e7e454c2693f499Tom Hudson
37b2f5bd2d6043132d8c1d0f3e2e7e454c2693f499Tom Hudson    TestWindowContext();
3858862c9f6f33a9aa3602ca4a7ce49ac2a1fdc7c6Tom Hudson    ~TestWindowContext();
39b2f5bd2d6043132d8c1d0f3e2e7e454c2693f499Tom Hudson
40b2f5bd2d6043132d8c1d0f3e2e7e454c2693f499Tom Hudson    /// We need to know the size of the window.
41b2f5bd2d6043132d8c1d0f3e2e7e454c2693f499Tom Hudson    void initialize(int width, int height);
42b2f5bd2d6043132d8c1d0f3e2e7e454c2693f499Tom Hudson
43b2f5bd2d6043132d8c1d0f3e2e7e454c2693f499Tom Hudson    /// Returns a canvas to draw into; NULL if not yet initialize()d.
44b2f5bd2d6043132d8c1d0f3e2e7e454c2693f499Tom Hudson    SkCanvas* prepareToDraw();
45b2f5bd2d6043132d8c1d0f3e2e7e454c2693f499Tom Hudson
46b2f5bd2d6043132d8c1d0f3e2e7e454c2693f499Tom Hudson    /// Flushes all drawing commands to HWUI; no-op if not yet initialize()d.
47b2f5bd2d6043132d8c1d0f3e2e7e454c2693f499Tom Hudson    void finishDrawing();
48b2f5bd2d6043132d8c1d0f3e2e7e454c2693f499Tom Hudson
49b2f5bd2d6043132d8c1d0f3e2e7e454c2693f499Tom Hudson    /// Blocks until HWUI has processed all pending drawing commands;
50b2f5bd2d6043132d8c1d0f3e2e7e454c2693f499Tom Hudson    /// no-op if not yet initialize()d.
51b2f5bd2d6043132d8c1d0f3e2e7e454c2693f499Tom Hudson    void fence();
52b2f5bd2d6043132d8c1d0f3e2e7e454c2693f499Tom Hudson
53b2f5bd2d6043132d8c1d0f3e2e7e454c2693f499Tom Hudson    /// Returns false if not yet initialize()d.
54b2f5bd2d6043132d8c1d0f3e2e7e454c2693f499Tom Hudson    bool capturePixels(SkBitmap* bmp);
55b2f5bd2d6043132d8c1d0f3e2e7e454c2693f499Tom Hudson
56b2f5bd2d6043132d8c1d0f3e2e7e454c2693f499Tom Hudsonprivate:
57b2f5bd2d6043132d8c1d0f3e2e7e454c2693f499Tom Hudson    /// Hidden implementation.
58b2f5bd2d6043132d8c1d0f3e2e7e454c2693f499Tom Hudson    class TestWindowData;
59b2f5bd2d6043132d8c1d0f3e2e7e454c2693f499Tom Hudson
60b2f5bd2d6043132d8c1d0f3e2e7e454c2693f499Tom Hudson    TestWindowData* mData;
61b2f5bd2d6043132d8c1d0f3e2e7e454c2693f499Tom Hudson
62b2f5bd2d6043132d8c1d0f3e2e7e454c2693f499Tom Hudson};
63b2f5bd2d6043132d8c1d0f3e2e7e454c2693f499Tom Hudson
64b2f5bd2d6043132d8c1d0f3e2e7e454c2693f499Tom Hudson}  // namespace uirenderer
65b2f5bd2d6043132d8c1d0f3e2e7e454c2693f499Tom Hudson}  // namespace android
66b2f5bd2d6043132d8c1d0f3e2e7e454c2693f499Tom Hudson
67b2f5bd2d6043132d8c1d0f3e2e7e454c2693f499Tom Hudson#endif  // TESTWINDOWCONTEXT_H_
68b2f5bd2d6043132d8c1d0f3e2e7e454c2693f499Tom Hudson
69