1// Copyright (c) 2012 The Chromium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4// 5//****************************************************************************** 6// This is a copy of the coresponding android_webview/public/browser header. 7// Any changes to the interface should be made there. 8// 9// The purpose of having the copy is twofold: 10// - it removes the need to have Chromium sources present in the tree in order 11// to build the plat_support library, 12// - it captures API that the corresponding Android release supports. 13//****************************************************************************** 14 15#ifndef ANDROID_WEBVIEW_PUBLIC_BROWSER_DRAW_SW_H_ 16#define ANDROID_WEBVIEW_PUBLIC_BROWSER_DRAW_SW_H_ 17 18#include <jni.h> 19#include <stddef.h> 20 21#ifndef __cplusplus 22#error "Can't mix C and C++ when using jni.h" 23#endif 24 25class SkCanvasState; 26class SkPicture; 27 28static const int kAwPixelInfoVersion = 3; 29 30// Holds the information required to implement the SW draw to system canvas. 31struct AwPixelInfo { 32 int version; // The kAwPixelInfoVersion this struct was built with. 33 SkCanvasState* state; // The externalize state in skia format. 34 // NOTE: If you add more members, bump kAwPixelInfoVersion. 35}; 36 37// Function that can be called to fish out the underlying native pixel data 38// from a Java canvas object, for optimized rendering path. 39// Returns the pixel info on success, which must be freed via a call to 40// AwReleasePixelsFunction, or NULL. 41typedef AwPixelInfo* (AwAccessPixelsFunction)(JNIEnv* env, jobject canvas); 42 43// Must be called to balance every *successful* call to AwAccessPixelsFunction 44// (i.e. that returned true). 45typedef void (AwReleasePixelsFunction)(AwPixelInfo* pixels); 46 47// Called to create an Android Picture object encapsulating a native SkPicture. 48typedef jobject (AwCreatePictureFunction)(JNIEnv* env, SkPicture* picture); 49 50// Method that returns the current Skia function. 51typedef void (SkiaVersionFunction)(int* major, int* minor, int* patch); 52 53// Called to verify if the Skia versions are compatible. 54typedef bool (AwIsSkiaVersionCompatibleFunction)(SkiaVersionFunction function); 55 56static const int kAwDrawSWFunctionTableVersion = 1; 57 58// "vtable" for the functions declared in this file. An instance must be set via 59// AwContents.setAwDrawSWFunctionTable 60struct AwDrawSWFunctionTable { 61 int version; 62 AwAccessPixelsFunction* access_pixels; 63 AwReleasePixelsFunction* release_pixels; 64}; 65 66#endif // ANDROID_WEBVIEW_PUBLIC_BROWSER_DRAW_SW_H_ 67