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