diff options
Diffstat (limited to 'android_webview/public')
-rw-r--r-- | android_webview/public/browser/draw_sw.h | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/android_webview/public/browser/draw_sw.h b/android_webview/public/browser/draw_sw.h new file mode 100644 index 0000000..e2e1dbf --- /dev/null +++ b/android_webview/public/browser/draw_sw.h @@ -0,0 +1,44 @@ +// 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 <jni.h> +#include <stddef.h> + +#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_ |