1e5f2f66f8c802d64ecf869081036ae13d4e9e19cJason Sams/*
2e5f2f66f8c802d64ecf869081036ae13d4e9e19cJason Sams * Copyright (C) 2008 The Android Open Source Project
3e5f2f66f8c802d64ecf869081036ae13d4e9e19cJason Sams *
4e5f2f66f8c802d64ecf869081036ae13d4e9e19cJason Sams * Licensed under the Apache License, Version 2.0 (the "License");
5e5f2f66f8c802d64ecf869081036ae13d4e9e19cJason Sams * you may not use this file except in compliance with the License.
6e5f2f66f8c802d64ecf869081036ae13d4e9e19cJason Sams * You may obtain a copy of the License at
7e5f2f66f8c802d64ecf869081036ae13d4e9e19cJason Sams *
8e5f2f66f8c802d64ecf869081036ae13d4e9e19cJason Sams *      http://www.apache.org/licenses/LICENSE-2.0
9e5f2f66f8c802d64ecf869081036ae13d4e9e19cJason Sams *
10e5f2f66f8c802d64ecf869081036ae13d4e9e19cJason Sams * Unless required by applicable law or agreed to in writing, software
11e5f2f66f8c802d64ecf869081036ae13d4e9e19cJason Sams * distributed under the License is distributed on an "AS IS" BASIS,
12e5f2f66f8c802d64ecf869081036ae13d4e9e19cJason Sams * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13e5f2f66f8c802d64ecf869081036ae13d4e9e19cJason Sams * See the License for the specific language governing permissions and
14e5f2f66f8c802d64ecf869081036ae13d4e9e19cJason Sams * limitations under the License.
15e5f2f66f8c802d64ecf869081036ae13d4e9e19cJason Sams */
16e5f2f66f8c802d64ecf869081036ae13d4e9e19cJason Sams
17e5f2f66f8c802d64ecf869081036ae13d4e9e19cJason Samspackage com.example.android.rs.miscsamples;
18e5f2f66f8c802d64ecf869081036ae13d4e9e19cJason Samsimport android.renderscript.RSSurfaceView;
19e5f2f66f8c802d64ecf869081036ae13d4e9e19cJason Samsimport android.renderscript.RenderScriptGL;
20e5f2f66f8c802d64ecf869081036ae13d4e9e19cJason Sams
21e5f2f66f8c802d64ecf869081036ae13d4e9e19cJason Samsimport android.content.Context;
22e5f2f66f8c802d64ecf869081036ae13d4e9e19cJason Samsimport android.view.MotionEvent;
23e5f2f66f8c802d64ecf869081036ae13d4e9e19cJason Sams
24e5f2f66f8c802d64ecf869081036ae13d4e9e19cJason Samspublic class RsListView extends RSSurfaceView {
25e5f2f66f8c802d64ecf869081036ae13d4e9e19cJason Sams
26e5f2f66f8c802d64ecf869081036ae13d4e9e19cJason Sams    public RsListView(Context context) {
27e5f2f66f8c802d64ecf869081036ae13d4e9e19cJason Sams        super(context);
28e5f2f66f8c802d64ecf869081036ae13d4e9e19cJason Sams        ensureRenderScript();
29e5f2f66f8c802d64ecf869081036ae13d4e9e19cJason Sams    }
30e5f2f66f8c802d64ecf869081036ae13d4e9e19cJason Sams
31e5f2f66f8c802d64ecf869081036ae13d4e9e19cJason Sams    private RenderScriptGL mRS;
32e5f2f66f8c802d64ecf869081036ae13d4e9e19cJason Sams    private RsListRS mRender;
33e5f2f66f8c802d64ecf869081036ae13d4e9e19cJason Sams
34e5f2f66f8c802d64ecf869081036ae13d4e9e19cJason Sams    private void ensureRenderScript() {
35e5f2f66f8c802d64ecf869081036ae13d4e9e19cJason Sams        if (mRS == null) {
36e5f2f66f8c802d64ecf869081036ae13d4e9e19cJason Sams            RenderScriptGL.SurfaceConfig sc = new RenderScriptGL.SurfaceConfig();
37e5f2f66f8c802d64ecf869081036ae13d4e9e19cJason Sams            mRS = createRenderScriptGL(sc);
38e5f2f66f8c802d64ecf869081036ae13d4e9e19cJason Sams            mRender = new RsListRS();
39e5f2f66f8c802d64ecf869081036ae13d4e9e19cJason Sams            mRender.init(mRS, getResources());
40e5f2f66f8c802d64ecf869081036ae13d4e9e19cJason Sams        }
41e5f2f66f8c802d64ecf869081036ae13d4e9e19cJason Sams    }
42e5f2f66f8c802d64ecf869081036ae13d4e9e19cJason Sams
43e5f2f66f8c802d64ecf869081036ae13d4e9e19cJason Sams    @Override
44e5f2f66f8c802d64ecf869081036ae13d4e9e19cJason Sams    protected void onAttachedToWindow() {
45e5f2f66f8c802d64ecf869081036ae13d4e9e19cJason Sams        super.onAttachedToWindow();
46e5f2f66f8c802d64ecf869081036ae13d4e9e19cJason Sams        ensureRenderScript();
47e5f2f66f8c802d64ecf869081036ae13d4e9e19cJason Sams    }
48e5f2f66f8c802d64ecf869081036ae13d4e9e19cJason Sams
49e5f2f66f8c802d64ecf869081036ae13d4e9e19cJason Sams    @Override
50e5f2f66f8c802d64ecf869081036ae13d4e9e19cJason Sams    protected void onDetachedFromWindow() {
51e5f2f66f8c802d64ecf869081036ae13d4e9e19cJason Sams        mRender = null;
52e5f2f66f8c802d64ecf869081036ae13d4e9e19cJason Sams        if (mRS != null) {
53e5f2f66f8c802d64ecf869081036ae13d4e9e19cJason Sams            mRS = null;
54e5f2f66f8c802d64ecf869081036ae13d4e9e19cJason Sams            destroyRenderScriptGL();
55e5f2f66f8c802d64ecf869081036ae13d4e9e19cJason Sams        }
56e5f2f66f8c802d64ecf869081036ae13d4e9e19cJason Sams    }
57e5f2f66f8c802d64ecf869081036ae13d4e9e19cJason Sams
58e5f2f66f8c802d64ecf869081036ae13d4e9e19cJason Sams    @Override
59e5f2f66f8c802d64ecf869081036ae13d4e9e19cJason Sams    public boolean onTouchEvent(MotionEvent ev)
60e5f2f66f8c802d64ecf869081036ae13d4e9e19cJason Sams    {
61e5f2f66f8c802d64ecf869081036ae13d4e9e19cJason Sams        boolean ret = false;
62e5f2f66f8c802d64ecf869081036ae13d4e9e19cJason Sams        int act = ev.getAction();
63e5f2f66f8c802d64ecf869081036ae13d4e9e19cJason Sams        if (act == MotionEvent.ACTION_DOWN) {
64e5f2f66f8c802d64ecf869081036ae13d4e9e19cJason Sams            mRender.onActionDown((int)ev.getX(), (int)ev.getY());
65e5f2f66f8c802d64ecf869081036ae13d4e9e19cJason Sams            ret = true;
66e5f2f66f8c802d64ecf869081036ae13d4e9e19cJason Sams        } else if (act == MotionEvent.ACTION_MOVE) {
67e5f2f66f8c802d64ecf869081036ae13d4e9e19cJason Sams            mRender.onActionMove((int)ev.getX(), (int)ev.getY());
68e5f2f66f8c802d64ecf869081036ae13d4e9e19cJason Sams            ret = true;
69e5f2f66f8c802d64ecf869081036ae13d4e9e19cJason Sams        }
70e5f2f66f8c802d64ecf869081036ae13d4e9e19cJason Sams
71e5f2f66f8c802d64ecf869081036ae13d4e9e19cJason Sams        return ret;
72e5f2f66f8c802d64ecf869081036ae13d4e9e19cJason Sams    }
73e5f2f66f8c802d64ecf869081036ae13d4e9e19cJason Sams}
74e5f2f66f8c802d64ecf869081036ae13d4e9e19cJason Sams
75e5f2f66f8c802d64ecf869081036ae13d4e9e19cJason Sams
76