14fb265e877b70cf52c3b53f5c33bf6309dca2ee6Jack Palevich/*
24fb265e877b70cf52c3b53f5c33bf6309dca2ee6Jack Palevich * Copyright (C) 2009 The Android Open Source Project
34fb265e877b70cf52c3b53f5c33bf6309dca2ee6Jack Palevich *
44fb265e877b70cf52c3b53f5c33bf6309dca2ee6Jack Palevich * Licensed under the Apache License, Version 2.0 (the "License");
54fb265e877b70cf52c3b53f5c33bf6309dca2ee6Jack Palevich * you may not use this file except in compliance with the License.
64fb265e877b70cf52c3b53f5c33bf6309dca2ee6Jack Palevich * You may obtain a copy of the License at
74fb265e877b70cf52c3b53f5c33bf6309dca2ee6Jack Palevich *
84fb265e877b70cf52c3b53f5c33bf6309dca2ee6Jack Palevich *      http://www.apache.org/licenses/LICENSE-2.0
94fb265e877b70cf52c3b53f5c33bf6309dca2ee6Jack Palevich *
104fb265e877b70cf52c3b53f5c33bf6309dca2ee6Jack Palevich * Unless required by applicable law or agreed to in writing, software
114fb265e877b70cf52c3b53f5c33bf6309dca2ee6Jack Palevich * distributed under the License is distributed on an "AS IS" BASIS,
124fb265e877b70cf52c3b53f5c33bf6309dca2ee6Jack Palevich * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
134fb265e877b70cf52c3b53f5c33bf6309dca2ee6Jack Palevich * See the License for the specific language governing permissions and
144fb265e877b70cf52c3b53f5c33bf6309dca2ee6Jack Palevich * limitations under the License.
154fb265e877b70cf52c3b53f5c33bf6309dca2ee6Jack Palevich */
164fb265e877b70cf52c3b53f5c33bf6309dca2ee6Jack Palevich
174fb265e877b70cf52c3b53f5c33bf6309dca2ee6Jack Palevichpackage com.android.test;
184fb265e877b70cf52c3b53f5c33bf6309dca2ee6Jack Palevich/*
194fb265e877b70cf52c3b53f5c33bf6309dca2ee6Jack Palevich * Copyright (C) 2008 The Android Open Source Project
204fb265e877b70cf52c3b53f5c33bf6309dca2ee6Jack Palevich *
214fb265e877b70cf52c3b53f5c33bf6309dca2ee6Jack Palevich * Licensed under the Apache License, Version 2.0 (the "License");
224fb265e877b70cf52c3b53f5c33bf6309dca2ee6Jack Palevich * you may not use this file except in compliance with the License.
234fb265e877b70cf52c3b53f5c33bf6309dca2ee6Jack Palevich * You may obtain a copy of the License at
244fb265e877b70cf52c3b53f5c33bf6309dca2ee6Jack Palevich *
254fb265e877b70cf52c3b53f5c33bf6309dca2ee6Jack Palevich *      http://www.apache.org/licenses/LICENSE-2.0
264fb265e877b70cf52c3b53f5c33bf6309dca2ee6Jack Palevich *
274fb265e877b70cf52c3b53f5c33bf6309dca2ee6Jack Palevich * Unless required by applicable law or agreed to in writing, software
284fb265e877b70cf52c3b53f5c33bf6309dca2ee6Jack Palevich * distributed under the License is distributed on an "AS IS" BASIS,
294fb265e877b70cf52c3b53f5c33bf6309dca2ee6Jack Palevich * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
304fb265e877b70cf52c3b53f5c33bf6309dca2ee6Jack Palevich * See the License for the specific language governing permissions and
314fb265e877b70cf52c3b53f5c33bf6309dca2ee6Jack Palevich * limitations under the License.
324fb265e877b70cf52c3b53f5c33bf6309dca2ee6Jack Palevich */
334fb265e877b70cf52c3b53f5c33bf6309dca2ee6Jack Palevich
344fb265e877b70cf52c3b53f5c33bf6309dca2ee6Jack Palevich
354fb265e877b70cf52c3b53f5c33bf6309dca2ee6Jack Palevichimport android.content.Context;
364fb265e877b70cf52c3b53f5c33bf6309dca2ee6Jack Palevichimport android.opengl.GLSurfaceView;
374fb265e877b70cf52c3b53f5c33bf6309dca2ee6Jack Palevichimport android.util.AttributeSet;
384fb265e877b70cf52c3b53f5c33bf6309dca2ee6Jack Palevichimport android.util.Log;
394fb265e877b70cf52c3b53f5c33bf6309dca2ee6Jack Palevichimport android.view.KeyEvent;
404fb265e877b70cf52c3b53f5c33bf6309dca2ee6Jack Palevichimport android.view.MotionEvent;
414fb265e877b70cf52c3b53f5c33bf6309dca2ee6Jack Palevich
424fb265e877b70cf52c3b53f5c33bf6309dca2ee6Jack Palevichimport javax.microedition.khronos.egl.EGL10;
434fb265e877b70cf52c3b53f5c33bf6309dca2ee6Jack Palevichimport javax.microedition.khronos.egl.EGLConfig;
444fb265e877b70cf52c3b53f5c33bf6309dca2ee6Jack Palevichimport javax.microedition.khronos.opengles.GL10;
454fb265e877b70cf52c3b53f5c33bf6309dca2ee6Jack Palevich/**
464fb265e877b70cf52c3b53f5c33bf6309dca2ee6Jack Palevich * An implementation of SurfaceView that uses the dedicated surface for
474fb265e877b70cf52c3b53f5c33bf6309dca2ee6Jack Palevich * displaying an OpenGL animation.  This allows the animation to run in a
484fb265e877b70cf52c3b53f5c33bf6309dca2ee6Jack Palevich * separate thread, without requiring that it be driven by the update mechanism
494fb265e877b70cf52c3b53f5c33bf6309dca2ee6Jack Palevich * of the view hierarchy.
504fb265e877b70cf52c3b53f5c33bf6309dca2ee6Jack Palevich *
514fb265e877b70cf52c3b53f5c33bf6309dca2ee6Jack Palevich * The application-specific rendering code is delegated to a GLView.Renderer
524fb265e877b70cf52c3b53f5c33bf6309dca2ee6Jack Palevich * instance.
534fb265e877b70cf52c3b53f5c33bf6309dca2ee6Jack Palevich */
544fb265e877b70cf52c3b53f5c33bf6309dca2ee6Jack Palevichclass TestView extends GLSurfaceView {
554fb265e877b70cf52c3b53f5c33bf6309dca2ee6Jack Palevich    TestView(Context context) {
564fb265e877b70cf52c3b53f5c33bf6309dca2ee6Jack Palevich        super(context);
574fb265e877b70cf52c3b53f5c33bf6309dca2ee6Jack Palevich        init();
584fb265e877b70cf52c3b53f5c33bf6309dca2ee6Jack Palevich    }
594fb265e877b70cf52c3b53f5c33bf6309dca2ee6Jack Palevich
604fb265e877b70cf52c3b53f5c33bf6309dca2ee6Jack Palevich    public TestView(Context context, AttributeSet attrs) {
614fb265e877b70cf52c3b53f5c33bf6309dca2ee6Jack Palevich        super(context, attrs);
624fb265e877b70cf52c3b53f5c33bf6309dca2ee6Jack Palevich        init();
634fb265e877b70cf52c3b53f5c33bf6309dca2ee6Jack Palevich    }
644fb265e877b70cf52c3b53f5c33bf6309dca2ee6Jack Palevich
654fb265e877b70cf52c3b53f5c33bf6309dca2ee6Jack Palevich    private void init() {
664fb265e877b70cf52c3b53f5c33bf6309dca2ee6Jack Palevich        setRenderer(new Renderer());
674fb265e877b70cf52c3b53f5c33bf6309dca2ee6Jack Palevich    }
684fb265e877b70cf52c3b53f5c33bf6309dca2ee6Jack Palevich
694fb265e877b70cf52c3b53f5c33bf6309dca2ee6Jack Palevich    private class Renderer implements GLSurfaceView.Renderer {
704fb265e877b70cf52c3b53f5c33bf6309dca2ee6Jack Palevich        private static final String TAG = "Renderer";
714fb265e877b70cf52c3b53f5c33bf6309dca2ee6Jack Palevich        public void onDrawFrame(GL10 gl) {
724fb265e877b70cf52c3b53f5c33bf6309dca2ee6Jack Palevich            // Do nothing.
734fb265e877b70cf52c3b53f5c33bf6309dca2ee6Jack Palevich        }
744fb265e877b70cf52c3b53f5c33bf6309dca2ee6Jack Palevich
754fb265e877b70cf52c3b53f5c33bf6309dca2ee6Jack Palevich        public void onSurfaceChanged(GL10 gl, int width, int height) {
764fb265e877b70cf52c3b53f5c33bf6309dca2ee6Jack Palevich            // Do nothing.
774fb265e877b70cf52c3b53f5c33bf6309dca2ee6Jack Palevich        }
784fb265e877b70cf52c3b53f5c33bf6309dca2ee6Jack Palevich
794fb265e877b70cf52c3b53f5c33bf6309dca2ee6Jack Palevich        public void onSurfaceCreated(GL10 gl, EGLConfig config) {
804fb265e877b70cf52c3b53f5c33bf6309dca2ee6Jack Palevich            // Do nothing.
814fb265e877b70cf52c3b53f5c33bf6309dca2ee6Jack Palevich        }
824fb265e877b70cf52c3b53f5c33bf6309dca2ee6Jack Palevich    }
834fb265e877b70cf52c3b53f5c33bf6309dca2ee6Jack Palevich}
844fb265e877b70cf52c3b53f5c33bf6309dca2ee6Jack Palevich
85