Home | History | Annotate | Download | only in plat_support
      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 
     25 class SkCanvasState;
     26 class SkPicture;
     27 
     28 static const int kAwPixelInfoVersion = 3;
     29 
     30 // Holds the information required to implement the SW draw to system canvas.
     31 struct 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.
     41 typedef AwPixelInfo* (AwAccessPixelsFunction)(JNIEnv* env, jobject canvas);
     42 
     43 // Must be called to balance every *successful* call to AwAccessPixelsFunction
     44 // (i.e. that returned true).
     45 typedef void (AwReleasePixelsFunction)(AwPixelInfo* pixels);
     46 
     47 // Called to create an Android Picture object encapsulating a native SkPicture.
     48 typedef jobject (AwCreatePictureFunction)(JNIEnv* env, SkPicture* picture);
     49 
     50 // Method that returns the current Skia function.
     51 typedef void (SkiaVersionFunction)(int* major, int* minor, int* patch);
     52 
     53 // Called to verify if the Skia versions are compatible.
     54 typedef bool (AwIsSkiaVersionCompatibleFunction)(SkiaVersionFunction function);
     55 
     56 static const int kAwDrawSWFunctionTableVersion = 1;
     57 
     58 // "vtable" for the functions declared in this file. An instance must be set via
     59 // AwContents.setAwDrawSWFunctionTable
     60 struct AwDrawSWFunctionTable {
     61   int version;
     62   AwAccessPixelsFunction* access_pixels;
     63   AwReleasePixelsFunction* release_pixels;
     64 };
     65 
     66 #endif  // ANDROID_WEBVIEW_PUBLIC_BROWSER_DRAW_SW_H_
     67