11320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// Copyright (c) 2014 The Chromium Authors. All rights reserved. 21320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// Use of this source code is governed by a BSD-style license that can be 31320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// found in the LICENSE file. 41320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 51320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include <jni.h> 61320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 71320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "android_webview/public/browser/draw_gl.h" 81320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 91320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciextern "C" { 101320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 111320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciJNIEXPORT jint JNI_OnLoad(JavaVM* vm, void* reserved) { 121320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return JNI_VERSION_1_4; 131320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 141320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 151320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// This code goes into its own dynamic library, so we cannot depend on 161320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// any other components like base. 171320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciJNIEXPORT void JNICALL 181320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci Java_org_chromium_android_1webview_shell_DrawGL_nativeDrawGL( 191320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci JNIEnv*, 201320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci jclass, 211320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci jlong draw_gl, 221320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci jlong view, 231320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci jint width, 241320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci jint height, 251320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci jint scroll_x, 261320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci jint scroll_y, 271320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci jint mode) { 281320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci AwDrawGLInfo draw_info; 291320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci draw_info.mode = static_cast<AwDrawGLInfo::Mode>(mode); 301320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci draw_info.version = kAwDrawGLInfoVersion; 311320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci draw_info.is_layer = false; 321320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci draw_info.width = width; 331320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci draw_info.height = height; 341320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci draw_info.clip_left = 0; 351320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci draw_info.clip_top = 0; 361320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci draw_info.clip_bottom = height; 371320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci draw_info.clip_right = width; 381320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci draw_info.transform[0] = 1.0; 391320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci draw_info.transform[1] = 0.0; 401320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci draw_info.transform[2] = 0.0; 411320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci draw_info.transform[3] = 0.0; 421320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 431320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci draw_info.transform[4] = 0.0; 441320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci draw_info.transform[5] = 1.0; 451320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci draw_info.transform[6] = 0.0; 461320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci draw_info.transform[7] = 0.0; 471320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 481320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci draw_info.transform[8] = 0.0; 491320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci draw_info.transform[9] = 0.0; 501320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci draw_info.transform[10] = 1.0; 511320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci draw_info.transform[11] = 0.0; 521320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 531320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci draw_info.transform[12] = -scroll_x; 541320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci draw_info.transform[13] = -scroll_y; 551320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci draw_info.transform[14] = 0.0; 561320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci draw_info.transform[15] = 1.0; 571320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci AwDrawGLFunction* draw_func = reinterpret_cast<AwDrawGLFunction*>(draw_gl); 581320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci draw_func(view, &draw_info, 0); 591320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 601320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 611320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 62