FileDocCategorySizeDatePackage
ScriptC.javaAPI DocAndroid 5.1 API3523Thu Mar 12 22:22:56 GMT 2015android.support.v8.renderscript

ScriptC

public class ScriptC extends Script
The superclass for all user-defined scripts. This is only intended to be used by the generated derived classes.

Fields Summary
private static final String
TAG
Constructors Summary
protected ScriptC(int id, RenderScript rs)
Only intended for use by the generated derived classes.

param
id
param
rs


                      
         
        super(id, rs);
    
protected ScriptC(RenderScript rs, android.content.res.Resources resources, int resourceID)
Only intended for use by the generated derived classes.

param
rs
param
resources
param
resourceID

        super(0, rs);

        if (rs.isNative) {
            RenderScriptThunker rst = (RenderScriptThunker)rs;
            ScriptCThunker s = new ScriptCThunker(rst, resources, resourceID);
            mT = s;
            return;
        }

        int id = internalCreate(rs, resources, resourceID);
        if (id == 0) {
            throw new RSRuntimeException("Loading of ScriptC script failed.");
        }
        setID(id);
    
Methods Summary
private static synchronized intinternalCreate(RenderScript rs, android.content.res.Resources resources, int resourceID)

        byte[] pgm;
        int pgmLength;
        InputStream is = resources.openRawResource(resourceID);
        try {
            try {
                pgm = new byte[1024];
                pgmLength = 0;
                while(true) {
                    int bytesLeft = pgm.length - pgmLength;
                    if (bytesLeft == 0) {
                        byte[] buf2 = new byte[pgm.length * 2];
                        System.arraycopy(pgm, 0, buf2, 0, pgm.length);
                        pgm = buf2;
                        bytesLeft = pgm.length - pgmLength;
                    }
                    int bytesRead = is.read(pgm, pgmLength, bytesLeft);
                    if (bytesRead <= 0) {
                        break;
                    }
                    pgmLength += bytesRead;
                }
            } finally {
                is.close();
            }
        } catch(IOException e) {
            throw new Resources.NotFoundException();
        }

        String resName = resources.getResourceEntryName(resourceID);
        String cachePath = rs.getApplicationContext().getCacheDir().toString();

        //        Log.v(TAG, "Create script for resource = " + resName + ", " + pgmLength + ", " + pgm);
        //Log.v(TAG, " path = " + cachePath);
        return rs.nScriptCCreate(resName, cachePath, pgm, pgmLength);