Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 7605bf35 authored by Android (Google) Code Review's avatar Android (Google) Code Review
Browse files

Merge change 5984

* changes:
  Update rollo and support functions.  Includes mockup of some new ui concepts.
parents d4b95fd8 fdcc14e7
Loading
Loading
Loading
Loading
+50 −2
Original line number Diff line number Diff line
@@ -5,10 +5,58 @@

int main(void* con, int ft, int launchID)
{
    int rowCount;
    int x;
    int y;
    int row;
    int col;
    int imageID;
    int tx1;
    int ty1;
    int tz1;
    int tx2;
    int ty2;
    int tz2;
    int rot;
    int rotStep;
    int tmpSin;
    int tmpCos;
    int iconCount;
    int pressure;

    renderTriangleMesh(con, NAMED_MeshCard);
    renderTriangleMesh(con, NAMED_MeshTab);

    iconCount = 38;//loadI32(0, 1);
    rotStep = 20 * 0x10000;
    pressure = loadI32(0, 2);

    rowCount = 4;
    rot = (-20 + loadI32(0, 0)) * 0x10000;

    while (iconCount) {
        tmpSin = sinx(rot);
        tmpCos = cosx(rot);

        tx1 = tmpSin * 8 - tmpCos;
        tx2 = tx1 + tmpCos * 2;

        tz1 = tmpCos * 8 + tmpSin + pressure;
        tz2 = tz1 - tmpSin * 2;

        for (y = 0; (y < rowCount) && iconCount; y++) {
            ty1 = (y * 0x30000) - 0x48000;
            ty2 = ty1 + 0x20000;

            drawQuad(tx1, ty1, tz1,
                     tx2, ty1, tz2,
                     tx2, ty2, tz2,
                     tx1, ty2, tz1);
            iconCount--;
        }
        rot = rot + rotStep;
    }

    //renderTriangleMesh(con, NAMED_MeshCard);
    //renderTriangleMesh(con, NAMED_MeshTab);
    return 1;
}
+15 −11
Original line number Diff line number Diff line
@@ -48,6 +48,12 @@ public class RolloRS {
        initRS();
    }

    public void setPosition(float dx, float pressure) {
        mAllocStateBuf[0] += (int)(dx);
        mAllocStateBuf[2] = (int)(pressure * 0x40000);
        mAllocState.data(mAllocStateBuf);
    }


    private Resources mRes;
    private RenderScript mRS;
@@ -63,23 +69,13 @@ public class RolloRS {
    private RenderScript.ProgramVertex mPV;
    private ProgramVertexAlloc mPVAlloc;

    private RenderScript.Allocation mAllocEnv;
    private RenderScript.Allocation mAllocPos;
    private int[] mAllocStateBuf;
    private RenderScript.Allocation mAllocState;
    //private RenderScript.Allocation mAllocPV;
    private RenderScript.TriangleMesh mMeshCard;
    private RenderScript.TriangleMesh mMeshTab;

    private float[] mBufferPos;
    //private float[] mBufferPV;

    private void initNamed() {
        mMeshTab = RolloMesh.createTab(mRS);
        mMeshTab.setName("MeshTab");
        mMeshCard = RolloMesh.createCard(mRS);
        mMeshCard.setName("MeshCard");
        Log.e("rs", "Done loading strips");

        mRS.samplerBegin();
        mRS.samplerSet(RenderScript.SamplerParam.FILTER_MIN,
                       RenderScript.SamplerValue.LINEAR_MIP_LINEAR);
@@ -122,6 +118,8 @@ public class RolloRS {
        mPV.setName("PV");
        mPV.bindAllocation(0, mPVAlloc.mAlloc);



        mPVAlloc.setupProjectionNormalized(320, 480);
        //mPVAlloc.setupOrthoNormalized(320, 480);
        mRS.contextBindProgramVertex(mPV);
@@ -131,6 +129,7 @@ public class RolloRS {
    }



    private void initRS() {
        mRS.scriptCBegin();
        mRS.scriptCSetClearColor(0.0f, 0.7f, 0.0f, 1.0f);
@@ -138,6 +137,11 @@ public class RolloRS {
        mRS.scriptCSetRoot(true);
        mScript = mRS.scriptCCreate();

        mAllocStateBuf = new int[] {0, 38, 0};
        mAllocState = mRS.allocationCreatePredefSized(
            RenderScript.ElementPredefined.USER_I32, mAllocStateBuf.length);
        mScript.bindAllocation(mAllocState, 0);
        setPosition(0, 0);

        mRS.contextBindRootScript(mScript);
    }
+5 −0
Original line number Diff line number Diff line
@@ -74,6 +74,11 @@ public class RolloView extends RSSurfaceView {
        if (act == ev.ACTION_UP) {
            ret = false;
        }
        float x = ev.getX();
        x = (x - 180) / 40;
        //Log.e("rs", Float(x).toString());

        mRender.setPosition(x, ev.getPressure());
        //mRender.newTouchPosition((int)ev.getX(), (int)ev.getY());
        return ret;
    }
+54 −0
Original line number Diff line number Diff line
@@ -307,6 +307,60 @@ extern "C" void drawRect(int32_t x1, int32_t x2, int32_t y1, int32_t y2)
    glDrawArrays(GL_TRIANGLE_STRIP, 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, x4,y4,z4, x3,y3,z3, x2,y2,z2};
    static const int32_t tex[] = {0,0, 0,0x10000, 0x10000,0, 0x10000,0x10000};


    rsc->setupCheck();

    glBindBuffer(GL_ARRAY_BUFFER, 0);
    //glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, tm->mBufferObjects[1]);

    glEnableClientState(GL_VERTEX_ARRAY);
    glEnableClientState(GL_TEXTURE_COORD_ARRAY);
    glDisableClientState(GL_NORMAL_ARRAY);
    glDisableClientState(GL_COLOR_ARRAY);

    glVertexPointer(3, GL_FIXED, 0, vtx);
    glTexCoordPointer(2, GL_FIXED, 0, tex);
    //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" void pfBindTexture(RsProgramFragment vpf, uint32_t slot, RsAllocation va)
{
    GET_TLS();