// Copyright (c) 2012 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef ANDROID_WEBVIEW_PUBLIC_BROWSER_DRAW_SW_H_ #define ANDROID_WEBVIEW_PUBLIC_BROWSER_DRAW_SW_H_ #include #include #ifndef __cplusplus #error "Can't mix C and C++ when using jni.h" #endif // Holds the information required to implement the SW draw to system canvas. struct AwPixelInfo { int config; // In SkBitmap::Config format. int width; // In pixels. int height; // In pixels. int row_bytes; // Number of bytes from start of one line to next. void* pixels; // The pixels, all (height * row_bytes) of them. float matrix[9]; // The matrix currently in effect on the canvas. void* clip_region; // Flattened clip region. size_t clip_region_size; // Number of bytes in |clip_region|. }; // Function that can be called to fish out the underlying native pixel data // from a Java canvas object, for optimized rendering path. // Returns the pixel info on success, which must be freed via a call to // AwReleasePixelsFunction, or NULL. typedef AwPixelInfo* (AwAccessPixelsFunction)(JNIEnv* env, jobject canvas); // Must be called to balance every *successful* call to AwAccessPixelsFunction // (i.e. that returned true). typedef void (AwReleasePixelsFunction)(AwPixelInfo* pixels); // "vtable" for the functions declared in this file. An instance must be set via // AwContents.setAwDrawSWFunctionTable struct AwDrawSWFunctionTable { AwAccessPixelsFunction* access_pixels; AwReleasePixelsFunction* release_pixels; }; #endif // ANDROID_WEBVIEW_PUBLIC_BROWSER_DRAW_SW_H_