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