blob: d8fb8845b47f12fc58809c9f5fa9a5d53f926db7 [file] [log] [blame]
/*
* Copyright 2012 Google Inc.
*
* Use of this source code is governed by a BSD-style license that can be
* found in the LICENSE file.
*/
package com.skia;
import android.opengl.GLSurfaceView;
import android.os.Handler;
import android.util.Log;
import javax.microedition.khronos.egl.EGLConfig;
import javax.microedition.khronos.opengles.GL10;
import javax.microedition.khronos.opengles.GL11;
public class SkiaSampleRenderer implements GLSurfaceView.Renderer {
private final SkiaSampleView mSampleView;
private Handler mHandler = new Handler();
private int mMSAASampleCount;
SkiaSampleRenderer(SkiaSampleView view) {
mSampleView = view;
}
@Override
public void onDrawFrame(GL10 gl) {
draw();
}
@Override
public void onSurfaceChanged(GL10 gl, int width, int height) {
updateSize(width, height);
}
@Override
public void onSurfaceCreated(GL10 gl, EGLConfig config) {
if (gl instanceof GL11) {
int value[] = new int[1];
((GL11) gl).glGetIntegerv(GL11.GL_SAMPLES, value, 0);
if (value[0] == 1) {
mMSAASampleCount = 0;
} else {
mMSAASampleCount = value[0];
}
}
gl.glClearStencil(0);
gl.glClear(GL10.GL_STENCIL_BUFFER_BIT);
init((SkiaSampleActivity)mSampleView.getContext(), mMSAASampleCount);
}
// Called by JNI and the view.
synchronized public int getMSAASampleCount() {
return mMSAASampleCount;
}
// Called by JNI
private void startTimer(int ms) {
// After the delay, queue an event to the Renderer's thread
// to handle the event on the timer queue
mHandler.postDelayed(new Runnable() {
@Override
public void run() {
mSampleView.queueEvent(new Runnable() {
@Override
public void run() {
serviceQueueTimer();
}
});
}
}, ms);
}
// Called by JNI
private void queueSkEvent() {
mSampleView.queueEvent(new Runnable() {
@Override
public void run() {
processSkEvent();
}
});
}
// Called by JNI
private void requestRender() {
mSampleView.requestRender();
}
native void init(SkiaSampleActivity activity, int msaaSampleCount);
native void term();
native void draw();
native void updateSize(int w, int h);
native void handleClick(int owner, float x, float y, int state);
native void showOverview();
native void nextSample();
native void previousSample();
native void goToSample(int position);
native void toggleRenderingMode();
native void toggleSlideshow();
native void toggleFPS();
native void toggleTiling();
native void toggleBBox();
native void processSkEvent();
native void serviceQueueTimer();
native void saveToPDF();
native void postInval();
}