1/*
2 * Copyright (C) 2011 The Android Open Source Project
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 *      http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17package com.android.scenegraph;
18
19import java.lang.Math;
20
21import com.android.scenegraph.SceneManager;
22import com.android.scenegraph.TextureBase;
23
24import android.content.res.Resources;
25import android.renderscript.*;
26import android.util.Log;
27
28/**
29 * @hide
30 */
31public class TextureCube extends TextureBase {
32    String mFileName;
33    String mFileDir;
34    int mResourceID;
35
36    public TextureCube() {
37        super(ScriptC_export.const_TextureType_TEXTURE_CUBE);
38    }
39
40    public TextureCube(Allocation tex) {
41        super(ScriptC_export.const_TextureType_TEXTURE_CUBE);
42        setTexture(tex);
43    }
44
45    public TextureCube(String dir, String file) {
46        super(ScriptC_export.const_TextureType_TEXTURE_CUBE);
47        setFileDir(dir);
48        setFileName(file);
49    }
50
51    public TextureCube(int resourceID) {
52        super(ScriptC_export.const_TextureType_TEXTURE_2D);
53        mResourceID = resourceID;
54    }
55
56    public void setFileDir(String dir) {
57        mFileDir = dir;
58    }
59
60    public void setFileName(String file) {
61        mFileName = file;
62    }
63
64    public String getFileName() {
65        return mFileName;
66    }
67
68    public void setTexture(Allocation tex) {
69        mData.texture = tex != null ? tex : SceneManager.getDefaultTexCube();
70        if (mField != null) {
71            mField.set_texture(0, mData.texture, true);
72        }
73    }
74
75    void load() {
76        RenderScriptGL rs = SceneManager.getRS();
77        Resources res = SceneManager.getRes();
78        if (mFileName != null && mFileName.length() > 0) {
79            String shortName = mFileName.substring(mFileName.lastIndexOf('/') + 1);
80            setTexture(SceneManager.loadCubemap(mFileDir + shortName, rs, res));
81        } else if (mResourceID != 0) {
82            setTexture(SceneManager.loadCubemap(mResourceID , rs, res));
83        }
84    }
85
86    ScriptField_Texture_s getRsData(boolean loadNow) {
87        if (mField != null) {
88            return mField;
89        }
90
91        RenderScriptGL rs = SceneManager.getRS();
92        Resources res = SceneManager.getRes();
93        if (rs == null || res == null) {
94            return null;
95        }
96
97        mField = new ScriptField_Texture_s(rs, 1);
98
99        if (loadNow) {
100            load();
101        } else {
102            mData.texture = SceneManager.getDefaultTexCube();
103            new SingleImageLoaderTask().execute(this);
104        }
105
106        mField.set(mData, 0, true);
107        return mField;
108    }
109}
110
111
112
113
114
115