forked from chromium/chromium
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Define public inteface for accessing Canvas pixels
The embedder can supply implementations of the declared functions, allowing the software draw path to have direct access to the pixels underlying the java Canvas object from native code. BUG= Review URL: https://chromiumcodereview.appspot.com/11665020 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@174592 0039d316-1c4b-4281-b951-d872f2087c98
- Loading branch information
joth@chromium.org
committed
Dec 25, 2012
1 parent
931989f
commit 441c33c
Showing
5 changed files
with
109 additions
and
2 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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_ |