1dbfa0bfd5516270482ebb9eff483ea058dfa19a9Stephen Hines/* 2dbfa0bfd5516270482ebb9eff483ea058dfa19a9Stephen Hines * Copyright (C) 2008 The Android Open Source Project 3dbfa0bfd5516270482ebb9eff483ea058dfa19a9Stephen Hines * 4dbfa0bfd5516270482ebb9eff483ea058dfa19a9Stephen Hines * Licensed under the Apache License, Version 2.0 (the "License"); 5dbfa0bfd5516270482ebb9eff483ea058dfa19a9Stephen Hines * you may not use this file except in compliance with the License. 6dbfa0bfd5516270482ebb9eff483ea058dfa19a9Stephen Hines * You may obtain a copy of the License at 7dbfa0bfd5516270482ebb9eff483ea058dfa19a9Stephen Hines * 8dbfa0bfd5516270482ebb9eff483ea058dfa19a9Stephen Hines * http://www.apache.org/licenses/LICENSE-2.0 9dbfa0bfd5516270482ebb9eff483ea058dfa19a9Stephen Hines * 10dbfa0bfd5516270482ebb9eff483ea058dfa19a9Stephen Hines * Unless required by applicable law or agreed to in writing, software 11dbfa0bfd5516270482ebb9eff483ea058dfa19a9Stephen Hines * distributed under the License is distributed on an "AS IS" BASIS, 12dbfa0bfd5516270482ebb9eff483ea058dfa19a9Stephen Hines * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13dbfa0bfd5516270482ebb9eff483ea058dfa19a9Stephen Hines * See the License for the specific language governing permissions and 14dbfa0bfd5516270482ebb9eff483ea058dfa19a9Stephen Hines * limitations under the License. 15dbfa0bfd5516270482ebb9eff483ea058dfa19a9Stephen Hines */ 16dbfa0bfd5516270482ebb9eff483ea058dfa19a9Stephen Hines 17dbfa0bfd5516270482ebb9eff483ea058dfa19a9Stephen Hinespackage com.android.rs.test_v16; 18dbfa0bfd5516270482ebb9eff483ea058dfa19a9Stephen Hines 19dbfa0bfd5516270482ebb9eff483ea058dfa19a9Stephen Hinesimport java.io.Writer; 20dbfa0bfd5516270482ebb9eff483ea058dfa19a9Stephen Hinesimport java.util.ArrayList; 21dbfa0bfd5516270482ebb9eff483ea058dfa19a9Stephen Hinesimport java.util.concurrent.Semaphore; 22dbfa0bfd5516270482ebb9eff483ea058dfa19a9Stephen Hines 23dbfa0bfd5516270482ebb9eff483ea058dfa19a9Stephen Hinesimport android.renderscript.RSSurfaceView; 24dbfa0bfd5516270482ebb9eff483ea058dfa19a9Stephen Hinesimport android.renderscript.RenderScript; 25dbfa0bfd5516270482ebb9eff483ea058dfa19a9Stephen Hinesimport android.renderscript.RenderScriptGL; 26dbfa0bfd5516270482ebb9eff483ea058dfa19a9Stephen Hines 27dbfa0bfd5516270482ebb9eff483ea058dfa19a9Stephen Hinesimport android.content.Context; 28dbfa0bfd5516270482ebb9eff483ea058dfa19a9Stephen Hinesimport android.content.res.Resources; 29dbfa0bfd5516270482ebb9eff483ea058dfa19a9Stephen Hinesimport android.graphics.Bitmap; 30dbfa0bfd5516270482ebb9eff483ea058dfa19a9Stephen Hinesimport android.graphics.drawable.BitmapDrawable; 31dbfa0bfd5516270482ebb9eff483ea058dfa19a9Stephen Hinesimport android.graphics.drawable.Drawable; 32dbfa0bfd5516270482ebb9eff483ea058dfa19a9Stephen Hinesimport android.os.Handler; 33dbfa0bfd5516270482ebb9eff483ea058dfa19a9Stephen Hinesimport android.os.Message; 34dbfa0bfd5516270482ebb9eff483ea058dfa19a9Stephen Hinesimport android.util.AttributeSet; 35dbfa0bfd5516270482ebb9eff483ea058dfa19a9Stephen Hinesimport android.util.Log; 36dbfa0bfd5516270482ebb9eff483ea058dfa19a9Stephen Hinesimport android.view.Surface; 37dbfa0bfd5516270482ebb9eff483ea058dfa19a9Stephen Hinesimport android.view.SurfaceHolder; 38dbfa0bfd5516270482ebb9eff483ea058dfa19a9Stephen Hinesimport android.view.SurfaceView; 39dbfa0bfd5516270482ebb9eff483ea058dfa19a9Stephen Hinesimport android.view.KeyEvent; 40dbfa0bfd5516270482ebb9eff483ea058dfa19a9Stephen Hinesimport android.view.MotionEvent; 41dbfa0bfd5516270482ebb9eff483ea058dfa19a9Stephen Hines 42dbfa0bfd5516270482ebb9eff483ea058dfa19a9Stephen Hinespublic class RSTestView extends RSSurfaceView { 43dbfa0bfd5516270482ebb9eff483ea058dfa19a9Stephen Hines 44dbfa0bfd5516270482ebb9eff483ea058dfa19a9Stephen Hines private Context mCtx; 45dbfa0bfd5516270482ebb9eff483ea058dfa19a9Stephen Hines 46dbfa0bfd5516270482ebb9eff483ea058dfa19a9Stephen Hines public RSTestView(Context context) { 47dbfa0bfd5516270482ebb9eff483ea058dfa19a9Stephen Hines super(context); 48dbfa0bfd5516270482ebb9eff483ea058dfa19a9Stephen Hines mCtx = context; 49dbfa0bfd5516270482ebb9eff483ea058dfa19a9Stephen Hines //setFocusable(true); 50dbfa0bfd5516270482ebb9eff483ea058dfa19a9Stephen Hines } 51dbfa0bfd5516270482ebb9eff483ea058dfa19a9Stephen Hines 52dbfa0bfd5516270482ebb9eff483ea058dfa19a9Stephen Hines private RenderScriptGL mRS; 53dbfa0bfd5516270482ebb9eff483ea058dfa19a9Stephen Hines private RSTestCore mRender; 54dbfa0bfd5516270482ebb9eff483ea058dfa19a9Stephen Hines 55dbfa0bfd5516270482ebb9eff483ea058dfa19a9Stephen Hines public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) { 56dbfa0bfd5516270482ebb9eff483ea058dfa19a9Stephen Hines super.surfaceChanged(holder, format, w, h); 57dbfa0bfd5516270482ebb9eff483ea058dfa19a9Stephen Hines if (mRS == null) { 58dbfa0bfd5516270482ebb9eff483ea058dfa19a9Stephen Hines RenderScriptGL.SurfaceConfig sc = new RenderScriptGL.SurfaceConfig(); 59dbfa0bfd5516270482ebb9eff483ea058dfa19a9Stephen Hines mRS = createRenderScriptGL(sc); 60dbfa0bfd5516270482ebb9eff483ea058dfa19a9Stephen Hines mRS.setSurface(holder, w, h); 61dbfa0bfd5516270482ebb9eff483ea058dfa19a9Stephen Hines mRender = new RSTestCore(mCtx); 62dbfa0bfd5516270482ebb9eff483ea058dfa19a9Stephen Hines mRender.init(mRS, getResources(), w, h); 63dbfa0bfd5516270482ebb9eff483ea058dfa19a9Stephen Hines } 64dbfa0bfd5516270482ebb9eff483ea058dfa19a9Stephen Hines } 65dbfa0bfd5516270482ebb9eff483ea058dfa19a9Stephen Hines 66dbfa0bfd5516270482ebb9eff483ea058dfa19a9Stephen Hines @Override 67dbfa0bfd5516270482ebb9eff483ea058dfa19a9Stephen Hines protected void onDetachedFromWindow() { 68dbfa0bfd5516270482ebb9eff483ea058dfa19a9Stephen Hines if(mRS != null) { 69dbfa0bfd5516270482ebb9eff483ea058dfa19a9Stephen Hines mRender.cleanup(); 70dbfa0bfd5516270482ebb9eff483ea058dfa19a9Stephen Hines mRS = null; 71dbfa0bfd5516270482ebb9eff483ea058dfa19a9Stephen Hines destroyRenderScriptGL(); 72dbfa0bfd5516270482ebb9eff483ea058dfa19a9Stephen Hines } 73dbfa0bfd5516270482ebb9eff483ea058dfa19a9Stephen Hines } 74dbfa0bfd5516270482ebb9eff483ea058dfa19a9Stephen Hines 75dbfa0bfd5516270482ebb9eff483ea058dfa19a9Stephen Hines @Override 76dbfa0bfd5516270482ebb9eff483ea058dfa19a9Stephen Hines public boolean onKeyDown(int keyCode, KeyEvent event) 77dbfa0bfd5516270482ebb9eff483ea058dfa19a9Stephen Hines { 78dbfa0bfd5516270482ebb9eff483ea058dfa19a9Stephen Hines return super.onKeyDown(keyCode, event); 79dbfa0bfd5516270482ebb9eff483ea058dfa19a9Stephen Hines } 80dbfa0bfd5516270482ebb9eff483ea058dfa19a9Stephen Hines 81dbfa0bfd5516270482ebb9eff483ea058dfa19a9Stephen Hines @Override 82dbfa0bfd5516270482ebb9eff483ea058dfa19a9Stephen Hines public boolean onTouchEvent(MotionEvent ev) 83dbfa0bfd5516270482ebb9eff483ea058dfa19a9Stephen Hines { 84dbfa0bfd5516270482ebb9eff483ea058dfa19a9Stephen Hines boolean ret = false; 85dbfa0bfd5516270482ebb9eff483ea058dfa19a9Stephen Hines int act = ev.getAction(); 86dbfa0bfd5516270482ebb9eff483ea058dfa19a9Stephen Hines if (act == ev.ACTION_DOWN) { 87dbfa0bfd5516270482ebb9eff483ea058dfa19a9Stephen Hines mRender.onActionDown((int)ev.getX(), (int)ev.getY()); 88dbfa0bfd5516270482ebb9eff483ea058dfa19a9Stephen Hines ret = true; 89dbfa0bfd5516270482ebb9eff483ea058dfa19a9Stephen Hines } 90dbfa0bfd5516270482ebb9eff483ea058dfa19a9Stephen Hines else if (act == ev.ACTION_MOVE) { 91dbfa0bfd5516270482ebb9eff483ea058dfa19a9Stephen Hines mRender.onActionMove((int)ev.getX(), (int)ev.getY()); 92dbfa0bfd5516270482ebb9eff483ea058dfa19a9Stephen Hines ret = true; 93dbfa0bfd5516270482ebb9eff483ea058dfa19a9Stephen Hines } 94dbfa0bfd5516270482ebb9eff483ea058dfa19a9Stephen Hines 95dbfa0bfd5516270482ebb9eff483ea058dfa19a9Stephen Hines return ret; 96dbfa0bfd5516270482ebb9eff483ea058dfa19a9Stephen Hines } 97dbfa0bfd5516270482ebb9eff483ea058dfa19a9Stephen Hines} 98