SkiaSampleRenderer.java revision dcdd57faf02fb4fd23bb8265392b9c22e068907e
1dcdd57faf02fb4fd23bb8265392b9c22e068907edjsollen@google.com/* 2dcdd57faf02fb4fd23bb8265392b9c22e068907edjsollen@google.com * Copyright 2012 Google Inc. 3dcdd57faf02fb4fd23bb8265392b9c22e068907edjsollen@google.com * 4dcdd57faf02fb4fd23bb8265392b9c22e068907edjsollen@google.com * Use of this source code is governed by a BSD-style license that can be 5dcdd57faf02fb4fd23bb8265392b9c22e068907edjsollen@google.com * found in the LICENSE file. 6dcdd57faf02fb4fd23bb8265392b9c22e068907edjsollen@google.com */ 7dcdd57faf02fb4fd23bb8265392b9c22e068907edjsollen@google.com 8dcdd57faf02fb4fd23bb8265392b9c22e068907edjsollen@google.compackage com.skia; 9dcdd57faf02fb4fd23bb8265392b9c22e068907edjsollen@google.com 10dcdd57faf02fb4fd23bb8265392b9c22e068907edjsollen@google.comimport android.opengl.GLSurfaceView; 11dcdd57faf02fb4fd23bb8265392b9c22e068907edjsollen@google.comimport android.os.Handler; 12dcdd57faf02fb4fd23bb8265392b9c22e068907edjsollen@google.com 13dcdd57faf02fb4fd23bb8265392b9c22e068907edjsollen@google.comimport javax.microedition.khronos.egl.EGLConfig; 14dcdd57faf02fb4fd23bb8265392b9c22e068907edjsollen@google.comimport javax.microedition.khronos.opengles.GL10; 15dcdd57faf02fb4fd23bb8265392b9c22e068907edjsollen@google.com 16dcdd57faf02fb4fd23bb8265392b9c22e068907edjsollen@google.compublic class SkiaSampleRenderer implements GLSurfaceView.Renderer { 17dcdd57faf02fb4fd23bb8265392b9c22e068907edjsollen@google.com 18dcdd57faf02fb4fd23bb8265392b9c22e068907edjsollen@google.com private final SkiaSampleView mSampleView; 19dcdd57faf02fb4fd23bb8265392b9c22e068907edjsollen@google.com private Handler mHandler = new Handler(); 20dcdd57faf02fb4fd23bb8265392b9c22e068907edjsollen@google.com 21dcdd57faf02fb4fd23bb8265392b9c22e068907edjsollen@google.com SkiaSampleRenderer(SkiaSampleView view) { 22dcdd57faf02fb4fd23bb8265392b9c22e068907edjsollen@google.com mSampleView = view; 23dcdd57faf02fb4fd23bb8265392b9c22e068907edjsollen@google.com } 24dcdd57faf02fb4fd23bb8265392b9c22e068907edjsollen@google.com 25dcdd57faf02fb4fd23bb8265392b9c22e068907edjsollen@google.com @Override 26dcdd57faf02fb4fd23bb8265392b9c22e068907edjsollen@google.com public void onDrawFrame(GL10 gl) { 27dcdd57faf02fb4fd23bb8265392b9c22e068907edjsollen@google.com draw(); 28dcdd57faf02fb4fd23bb8265392b9c22e068907edjsollen@google.com } 29dcdd57faf02fb4fd23bb8265392b9c22e068907edjsollen@google.com 30dcdd57faf02fb4fd23bb8265392b9c22e068907edjsollen@google.com @Override 31dcdd57faf02fb4fd23bb8265392b9c22e068907edjsollen@google.com public void onSurfaceChanged(GL10 gl, int width, int height) { 32dcdd57faf02fb4fd23bb8265392b9c22e068907edjsollen@google.com updateSize(width, height); 33dcdd57faf02fb4fd23bb8265392b9c22e068907edjsollen@google.com } 34dcdd57faf02fb4fd23bb8265392b9c22e068907edjsollen@google.com 35dcdd57faf02fb4fd23bb8265392b9c22e068907edjsollen@google.com @Override 36dcdd57faf02fb4fd23bb8265392b9c22e068907edjsollen@google.com public void onSurfaceCreated(GL10 gl, EGLConfig config) { 37dcdd57faf02fb4fd23bb8265392b9c22e068907edjsollen@google.com gl.glClearStencil(0); 38dcdd57faf02fb4fd23bb8265392b9c22e068907edjsollen@google.com gl.glClear(GL10.GL_STENCIL_BUFFER_BIT); 39dcdd57faf02fb4fd23bb8265392b9c22e068907edjsollen@google.com init((SkiaSampleActivity)mSampleView.getContext()); 40dcdd57faf02fb4fd23bb8265392b9c22e068907edjsollen@google.com } 41dcdd57faf02fb4fd23bb8265392b9c22e068907edjsollen@google.com 42dcdd57faf02fb4fd23bb8265392b9c22e068907edjsollen@google.com // Called by JNI 43dcdd57faf02fb4fd23bb8265392b9c22e068907edjsollen@google.com private void startTimer(int ms) { 44dcdd57faf02fb4fd23bb8265392b9c22e068907edjsollen@google.com // After the delay, queue an event to the Renderer's thread 45dcdd57faf02fb4fd23bb8265392b9c22e068907edjsollen@google.com // to handle the event on the timer queue 46dcdd57faf02fb4fd23bb8265392b9c22e068907edjsollen@google.com mHandler.postDelayed(new Runnable() { 47dcdd57faf02fb4fd23bb8265392b9c22e068907edjsollen@google.com @Override 48dcdd57faf02fb4fd23bb8265392b9c22e068907edjsollen@google.com public void run() { 49dcdd57faf02fb4fd23bb8265392b9c22e068907edjsollen@google.com mSampleView.queueEvent(new Runnable() { 50dcdd57faf02fb4fd23bb8265392b9c22e068907edjsollen@google.com @Override 51dcdd57faf02fb4fd23bb8265392b9c22e068907edjsollen@google.com public void run() { 52dcdd57faf02fb4fd23bb8265392b9c22e068907edjsollen@google.com serviceQueueTimer(); 53dcdd57faf02fb4fd23bb8265392b9c22e068907edjsollen@google.com } 54dcdd57faf02fb4fd23bb8265392b9c22e068907edjsollen@google.com }); 55dcdd57faf02fb4fd23bb8265392b9c22e068907edjsollen@google.com } 56dcdd57faf02fb4fd23bb8265392b9c22e068907edjsollen@google.com }, ms); 57dcdd57faf02fb4fd23bb8265392b9c22e068907edjsollen@google.com } 58dcdd57faf02fb4fd23bb8265392b9c22e068907edjsollen@google.com 59dcdd57faf02fb4fd23bb8265392b9c22e068907edjsollen@google.com // Called by JNI 60dcdd57faf02fb4fd23bb8265392b9c22e068907edjsollen@google.com private void queueSkEvent() { 61dcdd57faf02fb4fd23bb8265392b9c22e068907edjsollen@google.com mSampleView.queueEvent(new Runnable() { 62dcdd57faf02fb4fd23bb8265392b9c22e068907edjsollen@google.com @Override 63dcdd57faf02fb4fd23bb8265392b9c22e068907edjsollen@google.com public void run() { 64dcdd57faf02fb4fd23bb8265392b9c22e068907edjsollen@google.com processSkEvent(); 65dcdd57faf02fb4fd23bb8265392b9c22e068907edjsollen@google.com } 66dcdd57faf02fb4fd23bb8265392b9c22e068907edjsollen@google.com }); 67dcdd57faf02fb4fd23bb8265392b9c22e068907edjsollen@google.com } 68dcdd57faf02fb4fd23bb8265392b9c22e068907edjsollen@google.com 69dcdd57faf02fb4fd23bb8265392b9c22e068907edjsollen@google.com // Called by JNI 70dcdd57faf02fb4fd23bb8265392b9c22e068907edjsollen@google.com private void requestRender() { 71dcdd57faf02fb4fd23bb8265392b9c22e068907edjsollen@google.com mSampleView.requestRender(); 72dcdd57faf02fb4fd23bb8265392b9c22e068907edjsollen@google.com } 73dcdd57faf02fb4fd23bb8265392b9c22e068907edjsollen@google.com 74dcdd57faf02fb4fd23bb8265392b9c22e068907edjsollen@google.com native void init(SkiaSampleActivity activity); 75dcdd57faf02fb4fd23bb8265392b9c22e068907edjsollen@google.com native void term(); 76dcdd57faf02fb4fd23bb8265392b9c22e068907edjsollen@google.com native void draw(); 77dcdd57faf02fb4fd23bb8265392b9c22e068907edjsollen@google.com native void updateSize(int w, int h); 78dcdd57faf02fb4fd23bb8265392b9c22e068907edjsollen@google.com native void handleClick(int owner, float x, float y, int state); 79dcdd57faf02fb4fd23bb8265392b9c22e068907edjsollen@google.com native void showOverview(); 80dcdd57faf02fb4fd23bb8265392b9c22e068907edjsollen@google.com native void nextSample(); 81dcdd57faf02fb4fd23bb8265392b9c22e068907edjsollen@google.com native void previousSample(); 82dcdd57faf02fb4fd23bb8265392b9c22e068907edjsollen@google.com native void goToSample(int position); 83dcdd57faf02fb4fd23bb8265392b9c22e068907edjsollen@google.com native void toggleRenderingMode(); 84dcdd57faf02fb4fd23bb8265392b9c22e068907edjsollen@google.com native void toggleSlideshow(); 85dcdd57faf02fb4fd23bb8265392b9c22e068907edjsollen@google.com native void toggleFPS(); 86dcdd57faf02fb4fd23bb8265392b9c22e068907edjsollen@google.com native void toggleTiling(); 87dcdd57faf02fb4fd23bb8265392b9c22e068907edjsollen@google.com native void toggleBBox(); 88dcdd57faf02fb4fd23bb8265392b9c22e068907edjsollen@google.com native void processSkEvent(); 89dcdd57faf02fb4fd23bb8265392b9c22e068907edjsollen@google.com native void serviceQueueTimer(); 90dcdd57faf02fb4fd23bb8265392b9c22e068907edjsollen@google.com native void saveToPDF(); 91dcdd57faf02fb4fd23bb8265392b9c22e068907edjsollen@google.com native void postInval(); 92dcdd57faf02fb4fd23bb8265392b9c22e068907edjsollen@google.com}