1423d39f6a9fd7b6399b92a272eadc49676375f48Marco Nelissen/* 2423d39f6a9fd7b6399b92a272eadc49676375f48Marco Nelissen * Copyright (C) 2009 The Android Open Source Project 3423d39f6a9fd7b6399b92a272eadc49676375f48Marco Nelissen * 4423d39f6a9fd7b6399b92a272eadc49676375f48Marco Nelissen * Licensed under the Apache License, Version 2.0 (the "License"); 5423d39f6a9fd7b6399b92a272eadc49676375f48Marco Nelissen * you may not use this file except in compliance with the License. 6423d39f6a9fd7b6399b92a272eadc49676375f48Marco Nelissen * You may obtain a copy of the License at 7423d39f6a9fd7b6399b92a272eadc49676375f48Marco Nelissen * 8423d39f6a9fd7b6399b92a272eadc49676375f48Marco Nelissen * http://www.apache.org/licenses/LICENSE-2.0 9423d39f6a9fd7b6399b92a272eadc49676375f48Marco Nelissen * 10423d39f6a9fd7b6399b92a272eadc49676375f48Marco Nelissen * Unless required by applicable law or agreed to in writing, software 11423d39f6a9fd7b6399b92a272eadc49676375f48Marco Nelissen * distributed under the License is distributed on an "AS IS" BASIS, 12423d39f6a9fd7b6399b92a272eadc49676375f48Marco Nelissen * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13423d39f6a9fd7b6399b92a272eadc49676375f48Marco Nelissen * See the License for the specific language governing permissions and 14423d39f6a9fd7b6399b92a272eadc49676375f48Marco Nelissen * limitations under the License. 15423d39f6a9fd7b6399b92a272eadc49676375f48Marco Nelissen */ 16423d39f6a9fd7b6399b92a272eadc49676375f48Marco Nelissen 17423d39f6a9fd7b6399b92a272eadc49676375f48Marco Nelissen 18423d39f6a9fd7b6399b92a272eadc49676375f48Marco Nelissenpackage com.android.magicsmoke; 19423d39f6a9fd7b6399b92a272eadc49676375f48Marco Nelissen 20423d39f6a9fd7b6399b92a272eadc49676375f48Marco Nelissenimport android.content.res.Resources; 2131be678ff706bdf7e7c9f34c9ffcd8d2794643e2Alex Sakhartchoukimport android.os.Bundle; 221cac273ca3dc02971458785fe4d6d27cfa3f613eJason Samsimport android.renderscript.RenderScriptGL; 23423d39f6a9fd7b6399b92a272eadc49676375f48Marco Nelissenimport android.renderscript.ScriptC; 2431be678ff706bdf7e7c9f34c9ffcd8d2794643e2Alex Sakhartchouk//import android.view.MotionEvent; 25423d39f6a9fd7b6399b92a272eadc49676375f48Marco Nelissen 26423d39f6a9fd7b6399b92a272eadc49676375f48Marco Nelissenpublic abstract class RenderScriptScene { 27423d39f6a9fd7b6399b92a272eadc49676375f48Marco Nelissen protected int mWidth; 28423d39f6a9fd7b6399b92a272eadc49676375f48Marco Nelissen protected int mHeight; 29423d39f6a9fd7b6399b92a272eadc49676375f48Marco Nelissen protected boolean mPreview; 30ce631a529b74ae79acc0d37da34a5ce8722fbc8cMarco Nelissen protected boolean mIsStarted; 31423d39f6a9fd7b6399b92a272eadc49676375f48Marco Nelissen protected Resources mResources; 321cac273ca3dc02971458785fe4d6d27cfa3f613eJason Sams protected RenderScriptGL mRS; 33423d39f6a9fd7b6399b92a272eadc49676375f48Marco Nelissen protected ScriptC mScript; 34423d39f6a9fd7b6399b92a272eadc49676375f48Marco Nelissen 35423d39f6a9fd7b6399b92a272eadc49676375f48Marco Nelissen public RenderScriptScene(int width, int height) { 36423d39f6a9fd7b6399b92a272eadc49676375f48Marco Nelissen mWidth = width; 37423d39f6a9fd7b6399b92a272eadc49676375f48Marco Nelissen mHeight = height; 38423d39f6a9fd7b6399b92a272eadc49676375f48Marco Nelissen } 39423d39f6a9fd7b6399b92a272eadc49676375f48Marco Nelissen 401cac273ca3dc02971458785fe4d6d27cfa3f613eJason Sams public void init(RenderScriptGL rs, Resources res, boolean isPreview) { 41423d39f6a9fd7b6399b92a272eadc49676375f48Marco Nelissen mRS = rs; 42423d39f6a9fd7b6399b92a272eadc49676375f48Marco Nelissen mResources = res; 43423d39f6a9fd7b6399b92a272eadc49676375f48Marco Nelissen mPreview = isPreview; 44423d39f6a9fd7b6399b92a272eadc49676375f48Marco Nelissen mScript = createScript(); 45423d39f6a9fd7b6399b92a272eadc49676375f48Marco Nelissen } 46423d39f6a9fd7b6399b92a272eadc49676375f48Marco Nelissen 47423d39f6a9fd7b6399b92a272eadc49676375f48Marco Nelissen public boolean isPreview() { 48423d39f6a9fd7b6399b92a272eadc49676375f48Marco Nelissen return mPreview; 49423d39f6a9fd7b6399b92a272eadc49676375f48Marco Nelissen } 50423d39f6a9fd7b6399b92a272eadc49676375f48Marco Nelissen 51423d39f6a9fd7b6399b92a272eadc49676375f48Marco Nelissen public int getWidth() { 52423d39f6a9fd7b6399b92a272eadc49676375f48Marco Nelissen return mWidth; 53423d39f6a9fd7b6399b92a272eadc49676375f48Marco Nelissen } 54423d39f6a9fd7b6399b92a272eadc49676375f48Marco Nelissen 55423d39f6a9fd7b6399b92a272eadc49676375f48Marco Nelissen public int getHeight() { 56423d39f6a9fd7b6399b92a272eadc49676375f48Marco Nelissen return mHeight; 57423d39f6a9fd7b6399b92a272eadc49676375f48Marco Nelissen } 58423d39f6a9fd7b6399b92a272eadc49676375f48Marco Nelissen 59423d39f6a9fd7b6399b92a272eadc49676375f48Marco Nelissen public Resources getResources() { 60423d39f6a9fd7b6399b92a272eadc49676375f48Marco Nelissen return mResources; 61423d39f6a9fd7b6399b92a272eadc49676375f48Marco Nelissen } 62423d39f6a9fd7b6399b92a272eadc49676375f48Marco Nelissen 631cac273ca3dc02971458785fe4d6d27cfa3f613eJason Sams public RenderScriptGL getRS() { 64423d39f6a9fd7b6399b92a272eadc49676375f48Marco Nelissen return mRS; 65423d39f6a9fd7b6399b92a272eadc49676375f48Marco Nelissen } 66423d39f6a9fd7b6399b92a272eadc49676375f48Marco Nelissen 67423d39f6a9fd7b6399b92a272eadc49676375f48Marco Nelissen public ScriptC getScript() { 68423d39f6a9fd7b6399b92a272eadc49676375f48Marco Nelissen return mScript; 69423d39f6a9fd7b6399b92a272eadc49676375f48Marco Nelissen } 70423d39f6a9fd7b6399b92a272eadc49676375f48Marco Nelissen 71423d39f6a9fd7b6399b92a272eadc49676375f48Marco Nelissen protected abstract ScriptC createScript(); 72423d39f6a9fd7b6399b92a272eadc49676375f48Marco Nelissen 73ce631a529b74ae79acc0d37da34a5ce8722fbc8cMarco Nelissen public void stop(boolean forReal) { 7469f9d2200feba0b961cb89f1710ecd647befced3Jason Sams mRS.bindRootScript(null); 75ce631a529b74ae79acc0d37da34a5ce8722fbc8cMarco Nelissen mIsStarted = false; 76423d39f6a9fd7b6399b92a272eadc49676375f48Marco Nelissen } 77423d39f6a9fd7b6399b92a272eadc49676375f48Marco Nelissen 78423d39f6a9fd7b6399b92a272eadc49676375f48Marco Nelissen public void start() { 7969f9d2200feba0b961cb89f1710ecd647befced3Jason Sams mRS.bindRootScript(mScript); 80ce631a529b74ae79acc0d37da34a5ce8722fbc8cMarco Nelissen mIsStarted = true; 81423d39f6a9fd7b6399b92a272eadc49676375f48Marco Nelissen } 82423d39f6a9fd7b6399b92a272eadc49676375f48Marco Nelissen 83423d39f6a9fd7b6399b92a272eadc49676375f48Marco Nelissen public void resize(int width, int height) { 84423d39f6a9fd7b6399b92a272eadc49676375f48Marco Nelissen mWidth = width; 85423d39f6a9fd7b6399b92a272eadc49676375f48Marco Nelissen mHeight = height; 86423d39f6a9fd7b6399b92a272eadc49676375f48Marco Nelissen } 87423d39f6a9fd7b6399b92a272eadc49676375f48Marco Nelissen 88423d39f6a9fd7b6399b92a272eadc49676375f48Marco Nelissen @SuppressWarnings({"UnusedDeclaration"}) 898d57c78704797dff5df2df2b10a08dec885fe489Marco Nelissen public void setOffset(float xOffset, float yOffset, float xStep, float yStep, int xPixels, int yPixels) { 90423d39f6a9fd7b6399b92a272eadc49676375f48Marco Nelissen } 91423d39f6a9fd7b6399b92a272eadc49676375f48Marco Nelissen 9231be678ff706bdf7e7c9f34c9ffcd8d2794643e2Alex Sakhartchouk @SuppressWarnings({"UnusedDeclaration"}) 9331be678ff706bdf7e7c9f34c9ffcd8d2794643e2Alex Sakhartchouk public Bundle onCommand(String action, int x, int y, int z, Bundle extras, 9431be678ff706bdf7e7c9f34c9ffcd8d2794643e2Alex Sakhartchouk boolean resultRequested) { 9531be678ff706bdf7e7c9f34c9ffcd8d2794643e2Alex Sakhartchouk return null; 9631be678ff706bdf7e7c9f34c9ffcd8d2794643e2Alex Sakhartchouk } 97423d39f6a9fd7b6399b92a272eadc49676375f48Marco Nelissen} 98