Merge change 7633
* changes: Fix conflict with automatic DPI support on high density devices by forcing bitmap loading to not be scaled.
|
Before Width: | Height: | Size: 5.6 KiB After Width: | Height: | Size: 5.6 KiB |
|
Before Width: | Height: | Size: 4.7 KiB After Width: | Height: | Size: 4.7 KiB |
|
Before Width: | Height: | Size: 4.8 KiB After Width: | Height: | Size: 4.8 KiB |
|
Before Width: | Height: | Size: 3.7 KiB After Width: | Height: | Size: 3.7 KiB |
@@ -24,6 +24,7 @@ import android.renderscript.ProgramVertexAlloc;
|
||||
import android.content.Context;
|
||||
import android.content.res.Resources;
|
||||
import android.graphics.Bitmap;
|
||||
import android.graphics.BitmapFactory;
|
||||
import android.graphics.drawable.BitmapDrawable;
|
||||
import android.graphics.drawable.Drawable;
|
||||
import android.os.Handler;
|
||||
@@ -188,20 +189,21 @@ public class RolloRS {
|
||||
RenderScript.ElementPredefined.USER_I32, mAllocIconIDBuf.length);
|
||||
|
||||
|
||||
BitmapDrawable bd;
|
||||
Bitmap b;
|
||||
|
||||
bd = (BitmapDrawable)mRes.getDrawable(R.drawable.browser);
|
||||
mIcons[0] = mRS.allocationCreateFromBitmap(bd.getBitmap(), RenderScript.ElementPredefined.RGB_565, true);
|
||||
BitmapFactory.Options opts = new BitmapFactory.Options();
|
||||
opts.inScaled = false;
|
||||
|
||||
bd = (BitmapDrawable)mRes.getDrawable(R.drawable.market);
|
||||
mIcons[1] = mRS.allocationCreateFromBitmap(bd.getBitmap(), RenderScript.ElementPredefined.RGB_565, true);
|
||||
b = BitmapFactory.decodeResource(mRes, R.raw.browser, opts);
|
||||
mIcons[0] = mRS.allocationCreateFromBitmap(b, RenderScript.ElementPredefined.RGB_565, true);
|
||||
|
||||
bd = (BitmapDrawable)mRes.getDrawable(R.drawable.photos);
|
||||
mIcons[2] = mRS.allocationCreateFromBitmap(bd.getBitmap(), RenderScript.ElementPredefined.RGB_565, true);
|
||||
b = BitmapFactory.decodeResource(mRes, R.raw.market, opts);
|
||||
mIcons[1] = mRS.allocationCreateFromBitmap(b, RenderScript.ElementPredefined.RGB_565, true);
|
||||
|
||||
bd = (BitmapDrawable)mRes.getDrawable(R.drawable.settings);
|
||||
mIcons[3] = mRS.allocationCreateFromBitmap(bd.getBitmap(), RenderScript.ElementPredefined.RGB_565, true);
|
||||
b = BitmapFactory.decodeResource(mRes, R.raw.photos, opts);
|
||||
mIcons[2] = mRS.allocationCreateFromBitmap(b, RenderScript.ElementPredefined.RGB_565, true);
|
||||
|
||||
b = BitmapFactory.decodeResource(mRes, R.raw.settings, opts);
|
||||
mIcons[3] = mRS.allocationCreateFromBitmap(b, RenderScript.ElementPredefined.RGB_565, true);
|
||||
|
||||
for(int ct=0; ct < mIcons.length; ct++) {
|
||||
mIcons[ct].uploadToTexture(0);
|
||||
|
||||
@@ -353,67 +353,6 @@ static void SC_drawQuad(float x1, float y1, float z1,
|
||||
glDrawArrays(GL_TRIANGLE_FAN, 0, 4);
|
||||
}
|
||||
|
||||
extern "C" void drawQuad(int32_t x1, int32_t y1, int32_t z1,
|
||||
int32_t x2, int32_t y2, int32_t z2,
|
||||
int32_t x3, int32_t y3, int32_t z3,
|
||||
int32_t x4, int32_t y4, int32_t z4)
|
||||
{
|
||||
GET_TLS();
|
||||
//x1 = (x1 << 16);
|
||||
//x2 = (x2 << 16);
|
||||
//y1 = (y1 << 16);
|
||||
//y2 = (y2 << 16);
|
||||
|
||||
//LOGE("Quad");
|
||||
//LOGE("0x%08x, 0x%08x, 0x%08x", x1, y1, z1);
|
||||
//LOGE("0x%08x, 0x%08x, 0x%08x", x2, y2, z2);
|
||||
//LOGE("0x%08x, 0x%08x, 0x%08x", x3, y3, z3);
|
||||
//LOGE("0x%08x, 0x%08x, 0x%08x", x4, y4, z4);
|
||||
|
||||
int32_t vtx[] = {x1,y1,z1, x2,y2,z2, x3,y3,z3, x4,y4,z4};
|
||||
static const int32_t tex[] = {0,0, 0,0x10000, 0x10000,0x10000, 0x10000,0};
|
||||
|
||||
|
||||
rsc->setupCheck();
|
||||
|
||||
glBindBuffer(GL_ARRAY_BUFFER, 0);
|
||||
//glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, tm->mBufferObjects[1]);
|
||||
|
||||
glEnableClientState(GL_VERTEX_ARRAY);
|
||||
glVertexPointer(3, GL_FIXED, 0, vtx);
|
||||
|
||||
glClientActiveTexture(GL_TEXTURE0);
|
||||
glEnableClientState(GL_TEXTURE_COORD_ARRAY);
|
||||
glTexCoordPointer(2, GL_FIXED, 0, tex);
|
||||
glClientActiveTexture(GL_TEXTURE1);
|
||||
glEnableClientState(GL_TEXTURE_COORD_ARRAY);
|
||||
glTexCoordPointer(2, GL_FIXED, 0, tex);
|
||||
glClientActiveTexture(GL_TEXTURE0);
|
||||
|
||||
glDisableClientState(GL_NORMAL_ARRAY);
|
||||
glDisableClientState(GL_COLOR_ARRAY);
|
||||
|
||||
//glColorPointer(4, GL_UNSIGNED_BYTE, 12, ptr);
|
||||
|
||||
glDrawArrays(GL_TRIANGLE_FAN, 0, 4);
|
||||
}
|
||||
|
||||
extern "C" int32_t sinx(int32_t angle)
|
||||
{
|
||||
float a = ((float)angle) / 0x10000;
|
||||
a *= 3.14f / 180.f;
|
||||
float s = (float)sin(a);
|
||||
return int32_t(s * 0x10000);
|
||||
}
|
||||
|
||||
extern "C" int32_t cosx(int32_t angle)
|
||||
{
|
||||
float a = ((float)angle) / 0x10000;
|
||||
a *= 3.14f / 180.f;
|
||||
float s = (float)cos(a);
|
||||
return int32_t(s * 0x10000);
|
||||
}
|
||||
|
||||
extern "C" float sinf(float angle)
|
||||
{
|
||||
float s = (float)sin(angle);
|
||||
@@ -580,12 +519,12 @@ ScriptCState::SymbolTable_t ScriptCState::gSyms[] = {
|
||||
{ "loadF", (void *)&SC_loadF, "float loadF(int, int)" },
|
||||
{ "storeI32", (void *)&SC_storeI32, "void storeI32(int, int, int)" },
|
||||
{ "storeF", (void *)&SC_storeF, "void storeF(int, int, float)" },
|
||||
{ "drawQuad", (void *)&SC_drawQuad, "drawQuad(float x1, float y1, float z1, float x2, float y2, float z2, float x3, float y3, float z3, float x4, float y4, float z4)" },
|
||||
{ "drawQuad", (void *)&SC_drawQuad, "void drawQuad(float x1, float y1, float z1, float x2, float y2, float z2, float x3, float y3, float z3, float x4, float y4, float z4)" },
|
||||
{ "sinf", (void *)&sinf, "float sinf(float)" },
|
||||
{ "cosf", (void *)&cosf, "float cosf(float)" },
|
||||
{ "contextBindProgramFragmentStore", (void *)&contextBindProgramFragmentStore, "" },
|
||||
{ "pfClearColor", (void *)&pfClearColor, "" },
|
||||
{ "pfBindTexture", (void *)&pfBindTexture, "" },
|
||||
{ "contextBindProgramFragmentStore", (void *)&contextBindProgramFragmentStore, "void contextBindProgramFragmentStore(int)" },
|
||||
{ "pfClearColor", (void *)&pfClearColor, "void pfClearColor(float, float, float, float)" },
|
||||
{ "pfBindTexture", (void *)&pfBindTexture, "void pfBindTexture(int, int, int)" },
|
||||
|
||||
|
||||
{ NULL, NULL, NULL }
|
||||
@@ -618,12 +557,24 @@ static ACCvoid* symbolLookup(ACCvoid* pContext, const ACCchar* name)
|
||||
return NULL;
|
||||
}
|
||||
|
||||
void ScriptCState::appendDecls(String8 *str)
|
||||
{
|
||||
ScriptCState::SymbolTable_t *syms = gSyms;
|
||||
while (syms->mPtr) {
|
||||
str->append(syms->mDecl);
|
||||
str->append(";\n");
|
||||
syms++;
|
||||
}
|
||||
}
|
||||
|
||||
void ScriptCState::runCompiler(Context *rsc)
|
||||
{
|
||||
mAccScript = accCreateScript();
|
||||
String8 tmp;
|
||||
|
||||
rsc->appendNameDefines(&tmp);
|
||||
appendDecls(&tmp);
|
||||
//tmp.append("#line 1\n");
|
||||
|
||||
const char* scriptSource[] = {tmp.string(), mProgram.mScriptText};
|
||||
int scriptLength[] = {tmp.length(), mProgram.mScriptTextLength} ;
|
||||
@@ -633,6 +584,14 @@ void ScriptCState::runCompiler(Context *rsc)
|
||||
accGetScriptLabel(mAccScript, "main", (ACCvoid**) &mProgram.mScript);
|
||||
rsAssert(mProgram.mScript);
|
||||
|
||||
if (!mProgram.mScript) {
|
||||
ACCchar buf[4096];
|
||||
ACCsizei len;
|
||||
accGetScriptInfoLog(mAccScript, sizeof(buf), &len, buf);
|
||||
LOGE(buf);
|
||||
|
||||
}
|
||||
|
||||
mEnviroment.mFragment.set(rsc->getDefaultProgramFragment());
|
||||
mEnviroment.mVertex.set(rsc->getDefaultProgramVertex());
|
||||
mEnviroment.mFragmentStore.set(rsc->getDefaultProgramFragmentStore());
|
||||
|
||||
@@ -77,6 +77,7 @@ public:
|
||||
};
|
||||
static SymbolTable_t gSyms[];
|
||||
static const SymbolTable_t * lookupSymbol(const char *);
|
||||
static void appendDecls(String8 *str);
|
||||
};
|
||||
|
||||
|
||||
|
||||