Home | History | Annotate | Download | only in scenegraph
      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 
     17 package com.android.scenegraph;
     18 
     19 import java.lang.Math;
     20 
     21 import com.android.scenegraph.SceneManager;
     22 import com.android.scenegraph.TextureBase;
     23 
     24 import android.content.res.Resources;
     25 import android.renderscript.*;
     26 import android.util.Log;
     27 
     28 /**
     29  * @hide
     30  */
     31 public 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