From 6f5c61c8df70273e3bbc7fd07412cc69b6ce1e76 Mon Sep 17 00:00:00 2001 From: Jason Sams Date: Tue, 28 Jul 2009 17:20:11 -0700 Subject: [PATCH] Add new icons and implement text. Fix bug with uploading 8888 bitmaps of non-square size. --- libs/rs/java/Rollo/res/raw/calendar.png | Bin 0 -> 4551 bytes libs/rs/java/Rollo/res/raw/g1155.png | Bin 0 -> 5094 bytes libs/rs/java/Rollo/res/raw/g2140.png | Bin 0 -> 3982 bytes libs/rs/java/Rollo/res/raw/path1920.png | Bin 0 -> 3812 bytes libs/rs/java/Rollo/res/raw/path1927.png | Bin 0 -> 4034 bytes libs/rs/java/Rollo/res/raw/path3099.png | Bin 0 -> 4981 bytes libs/rs/java/Rollo/res/raw/path3950.png | Bin 0 -> 4873 bytes libs/rs/java/Rollo/res/raw/path431.png | Bin 0 -> 3995 bytes libs/rs/java/Rollo/res/raw/path4481.png | Bin 0 -> 4113 bytes libs/rs/java/Rollo/res/raw/path5168.png | Bin 0 -> 5328 bytes libs/rs/java/Rollo/res/raw/path676.png | Bin 0 -> 4351 bytes libs/rs/java/Rollo/res/raw/path754.png | Bin 0 -> 3205 bytes libs/rs/java/Rollo/res/raw/path815.png | Bin 0 -> 5536 bytes libs/rs/java/Rollo/res/raw/polygon2408.png | Bin 0 -> 3873 bytes libs/rs/java/Rollo/res/raw/rollo.c | 53 +++++- .../Rollo/src/com/android/rollo/RolloRS.java | 158 +++++++++++++----- .../src/com/android/rollo/RolloView.java | 7 +- libs/rs/rsAllocation.cpp | 30 ++-- libs/rs/rsScriptC_Lib.cpp | 13 +- 19 files changed, 204 insertions(+), 57 deletions(-) create mode 100644 libs/rs/java/Rollo/res/raw/calendar.png create mode 100644 libs/rs/java/Rollo/res/raw/g1155.png create mode 100644 libs/rs/java/Rollo/res/raw/g2140.png create mode 100644 libs/rs/java/Rollo/res/raw/path1920.png create mode 100644 libs/rs/java/Rollo/res/raw/path1927.png create mode 100644 libs/rs/java/Rollo/res/raw/path3099.png create mode 100644 libs/rs/java/Rollo/res/raw/path3950.png create mode 100644 libs/rs/java/Rollo/res/raw/path431.png create mode 100644 libs/rs/java/Rollo/res/raw/path4481.png create mode 100644 libs/rs/java/Rollo/res/raw/path5168.png create mode 100644 libs/rs/java/Rollo/res/raw/path676.png create mode 100644 libs/rs/java/Rollo/res/raw/path754.png create mode 100644 libs/rs/java/Rollo/res/raw/path815.png create mode 100644 libs/rs/java/Rollo/res/raw/polygon2408.png diff --git a/libs/rs/java/Rollo/res/raw/calendar.png b/libs/rs/java/Rollo/res/raw/calendar.png new file mode 100644 index 0000000000000000000000000000000000000000..030ae73d572c0902a1b8219014fc5321eedd1d67 GIT binary patch literal 4551 zcmV;&5jgINP)NJ=CniU)3Bcd@%~KP(mmL68J2x$5+tdAJ9bi}(4x|L1v+T?nNVelZN=&y-Ss zBBewKkrhIurIc4RO&bR$fJtDgx?SY|K@mQH>FMb^g%Ga`A!ufrrlIRPnx-M8MAI}= zN_klbF(IWqErd9a2ge6A2dFi_`Tt1K{T<7)M%HqE4GRe&hO71=P1EpAN{N)RBBh*@ zQcg)JPXnicGr%}-4lu5h&nrp|K&4X2w(2}UHB43=1OEAdlyWn$SqO1=10W@(T#!

T(Xct{;_BJ_0;h*SVBeN{) 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 IM6N<$f3Nt`}FmLI0527oP<2U5XyED1Q0}^ zrHNR&tSDJ^5h!XGM5VUTs@*=&ik5D-RaL2|Aazw0X#vressdUl2-GeLDM=x0NJ4lx zFUN!gUthoNYx|xvXJ-1xIp_L1zIN;o>aO6EM)#cYnRCDIH{X0S-^{hJ*79W*x!4LU zwtNL(u@zWs`3k^dE3nw|6@bN7V6o*Z0E?}_V#}8vfLnXBfB*i=j4?m7)=F#b5YUyB zFbumkZQ3-sC|Z7jB5HDht1FetyPoHH#uzG<3cl}CsZqFwZ#}i7>4-1UkipH2r6M1o>WR5 z2966My0q5ErIcO1?{{zByt%Ttrq-7#0IhYG5MtGQ0Mx5b{$`9pDMb(jwVyT&!#=I` zQDe+eqG5F$=n_J7-EhMVr9}r|j5!2cIUfL%laqL!hY(_3aBAzrFhnUu7={EvfYzEY z3@5eL-C-CWmQr>ZV~$&EyNoeMrIep+-n=>dzX0$iaPxeOIeq#x*IjoVd-m*M`SRsx zt$F_W=ehajn_04C$-KSh%=%<_C6Hn`It;`8*4qEfWHLWG-+{Px8vJy=jg~K8&K-B$ z!86Z113+hICl5XJ5Ca1PpGz4b1g`6nN~Or(`%8-KrvlAfM0Uy6(3(ZQ69x`FwX3 zfRwU(Aq_Wd*g!`|2d};M8t=aQF1Ox#>v>a32vN5_l}ZtY;Wg*&iH(x7-52Bab{nE|+8T=FM#1zMUgSjsUQA>sDTU^;G~~e)(l~?%cUxWgW-CTDxJv z4d;+r04IS3ZxP>p_uZ^tzn(&&0D$lNY~8w*d+)uMn{K*^S6+DqfR>h)YLGm1=nyZy z_~L?<6+$4TT)NRCVp1JX_l)$p_A? zKXBjxlarHNfBp5<{9)U+Z43+yuyNx?cJ125!Gi}EoOBh7MT*7ZHQTpuKX5((OxqAK z#(a{D%Or6bA0MYYJdB!{KuL*>|1N|`qH^^UsNSz#yA~k?l}eNayROR%FTB9m*cguE z@cQeoSB+YTNGY+_o;MGe2EcXQZmo6o-uHdd?|;ZeJ$)qMDv**27GDq*De)aikn#vp z9x9VYr&35MXDt9*wrs)o{aT}{-#ZtSxcwIcfM_*n0bz{6jEvISGks=E1p%orgrsOa zbsZOD4HYSwa2-Z-SwsWQ{ifpwz5J*Vf4}Bo~*~ntEdlBiRhYjSUPp78t#tnc*cDKrV+9 zgGovPCb_N!P^nZd1Tuh$As8WqjjwIQV}3x+1b`5t3s?eR<1aR=+p+DJAO?pJ1A~aZ z0q8A7K+XcAwoZm2EfW*8^p>Wc)0(kNn!%PP23nU;TCWWO*F< z;(x%gu|raQFy(da5oU6AuloO?B$c4v)}2Fht?g)4YA(cSxmDq|@o@kTAw916C0Y z0bSz(mDunhpdTm!qku1jF!dnJ03fCO#28ZzMxp28)dskM0d!*n>3s)~i7U_1IL4cmTu^H)p3Rba(l!se!Fbtr`nL$ua$ zF*Vmy_o3G0izUL?OOhVU<#IVd#6bGP<3b| z05X|Oww^IHHhDlEXa*XAG$89GUo(aP@y<{(1WchY&84dVVlbkwAEgwwv4E=-Cgl;{ z{Vm*3A^-Ixwx>vF4CcaRgzML0her^*-m2^J$-OojqYc^^+{wuq`A0gPPR{|L7KBUW z9kZsL^#Dv5V}^tfEkX!rYMchZ8HxY|xm>j_92&wD8ptRG#a@(B(9}dqDMYcCFbpaG z#{K9G>kyuY+rAQ>e5z`&XulM1SI1(F3vyEpBpctI!DMlV6CE5GG zhd$ng|IMvv$B6>l)mM`Jr=ODj>mSqn>homp{SHP@9RhNEqB;Z;@jQ>_=H|JEfsKt$ zrbWdp>w(z-9IswC7O*wZ-5DK4`#zO?wpwR?YybkL z)&q5CfLQ@h8wXr>D&i{zL4X(<#!sapg_J^+`Urx6Fz$8RQ^aqKrY;)~fiUo+`+fVP zlb>I{CQ7$cX_QjQIs#Fji8xX77(OM(Q9oU5)tYlAG$JWoiaQe?B)*#MZ>=%E;Z&m6nm^=1LI z*4?#prdhcH-keH&S`NIARjL{rvRx-gfAlc}S6jE?rG=C>*kXzB;)|$k zSciP)=Y(1#%Vnh2=(pa+?D#G8-hBkm{tHGMOg4j!gQN}O@2wHf^GKyqvjI>Q?^Ull0zvBdW2HhW9_9=eHlkZ*Iad z8j3~2@CwSmavO5vm4so4Gd_XP8q-rmf7FRswUP{7%I6TzN$q7|n$$cgC(!gByf z#{M9Y2TU@D`_Bph@THVL(^}sNz|vNNuYZlyTYKtec3Nw!QY?Axzp9IvOCH=o=(*8q zZudK=RGQSDcPRhneb_KWy#K+}BIv*OAb$NG>@RIZtXhfpgWo0iqd!G=pTy{BEpSE$ z;ks@;0Lj?zBMN|uvmEx!1^{dAtH7NQ#Q}BycL|qYgtv1S-tiNlHMS;`t6jY%ix}(s zXl-ym_=tx0Kfq{1!`^+Uopu192G#^w~B>W(DAR-cN%dxX)U91Axe8Fn4TWV#_x$$GdR%AB4`sIERlSdi$ms zekKSLFKUc2Xr-{nPE0L-wLu38^ZP$Ut-TDpW)=GIF~UzzV`Al{?@v2K@jQ=oI-RRg zH<|Z`iBjNU=9v5E1px4U-~X29d4FrIy$A4;9U0cFMz3BqWmNwF_Tx_Y_%M8Y7}0qY zTQ0{SYCR)Pc+6DpU(E-!L4Wu$=Fo>|ZKh3ovazwcZ?U15i$T2iGts}djG5d5@~2?C;@)~{N?cQ@JcCV z2hag@7-OyiE*C;%q?FN)jg;8ct8iDfW4^hiYNVW)K=+p5vm*4CFg-q9 z6ie8l;V5;E#a_0Wrq%6ave_yCYb~DVxlDKcB2n+px$rqB05xKpo143dj?iAIsh6cv zsa;ChA%y4XSh38F46+;h)$61jhp@PzX|4XKg; zR{-jX5P~P3cp_aW6qan?zI~LbEiTQ}xqvwrb%707*qoM6N<$f^@x%CjbBd literal 0 HcmV?d00001 diff --git a/libs/rs/java/Rollo/res/raw/path1920.png b/libs/rs/java/Rollo/res/raw/path1920.png new file mode 100644 index 0000000000000000000000000000000000000000..3510665cb68302ba6915a1858a64d5dd63bdda5f GIT binary patch literal 3812 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 !u(`SUyTJcY($ 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 literal 0 HcmV?d00001 diff --git a/libs/rs/java/Rollo/res/raw/path3099.png b/libs/rs/java/Rollo/res/raw/path3099.png new file mode 100644 index 0000000000000000000000000000000000000000..527ebf6f681f76d56381c31a23272a6e0b62a009 GIT binary patch literal 4981 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 literal 0 HcmV?d00001 diff --git a/libs/rs/java/Rollo/res/raw/path3950.png b/libs/rs/java/Rollo/res/raw/path3950.png new file mode 100644 index 0000000000000000000000000000000000000000..59a646ae6be243c6ac6ffad1ad9b6df708cf163e GIT binary patch literal 4873 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 literal 0 HcmV?d00001 diff --git a/libs/rs/java/Rollo/res/raw/path431.png b/libs/rs/java/Rollo/res/raw/path431.png new file mode 100644 index 0000000000000000000000000000000000000000..5d2ed75bb635c584541378cb8064bf67b6c22552 GIT binary patch literal 3995 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 BvW5Tv literal 0 HcmV?d00001 diff --git a/libs/rs/java/Rollo/res/raw/path4481.png b/libs/rs/java/Rollo/res/raw/path4481.png new file mode 100644 index 0000000000000000000000000000000000000000..78be0fcb7969a8b4dbe4a4902a7775678b40a2a3 GIT binary patch literal 4113 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 P00000NkvXXu0mjfs7?Az literal 0 HcmV?d00001 diff --git a/libs/rs/java/Rollo/res/raw/path5168.png b/libs/rs/java/Rollo/res/raw/path5168.png new file mode 100644 index 0000000000000000000000000000000000000000..a7c3a19eb99913099c1798d1dcd08d52cf51cf58 GIT binary patch literal 5328 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 literal 0 HcmV?d00001 diff --git a/libs/rs/java/Rollo/res/raw/path754.png b/libs/rs/java/Rollo/res/raw/path754.png new file mode 100644 index 0000000000000000000000000000000000000000..88aed5b86e4425f2cd3e6c35d97fa78caf3123d5 GIT binary patch literal 3205 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�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 literal 0 HcmV?d00001 diff --git a/libs/rs/java/Rollo/res/raw/rollo.c b/libs/rs/java/Rollo/res/raw/rollo.c index 960fdf0ab1077..9e03a448d00d3 100644 --- a/libs/rs/java/Rollo/res/raw/rollo.c +++ b/libs/rs/java/Rollo/res/raw/rollo.c @@ -19,6 +19,7 @@ #define STATE_COUNT 8 #define STATE_TOUCH 9 + float filter(float val, float target, float str) { float delta = (target - val); @@ -63,7 +64,7 @@ int main(void* con, int ft, int launchID) float drawRot = filter(loadF(2, SCRATCH_ROT), targetRot, 0.1f * touchCut); storeF(2, SCRATCH_ROT, drawRot); - float diam = 10.f; + float diam = 8.f; float scale = 1.0f / zoom; // Bug makes 1.0f alpha fail. @@ -77,6 +78,7 @@ int main(void* con, int ft, int launchID) while (iconCount) { float tmpSin = sinf(rot); float tmpCos = cosf(rot); + //debugF("rot", rot); float tx1 = tmpSin * diam - (tmpCos * scale); float tx2 = tx1 + (tmpCos * scale * 2.f); @@ -85,7 +87,7 @@ int main(void* con, int ft, int launchID) int y; for (y = rowCount -1; (y >= 0) && iconCount; y--) { - float ty1 = ((y * 3.5f) - 6.f) * scale; + float ty1 = ((y * 3.1f) - 5.f) * scale; float ty2 = ty1 + scale * 2.f; bindTexture(NAMED_PF, 0, loadI32(1, index)); //if (done && (index != selectedID)) { @@ -102,6 +104,51 @@ int main(void* con, int ft, int launchID) rot = rot + rotStep; } + if ((zoom < 1.1f) && (zoom > 0.9f)) { + bindProgramVertex(NAMED_PVOrtho); + bindProgramFragment(NAMED_PFText); + bindProgramFragmentStore(NAMED_PFSText); + + rot = drawRot * scale; + index = 0; + iconCount = loadI32(0, STATE_COUNT); + while (iconCount) { + int y; + + float tx = 240.f + floorf(sinf(rot) * 430.f) - 64.f + 16.f; + + float alpha = 2.4f - (fabsf(tx - 240.f + 48.f) / 76.f); + if (alpha > 0.99f) { + alpha = 0.99f; + } + alpha = alpha * (1.f - (fabsf(zoom - 1.f) * 10.f)); + + tx = tx + 0.25f; + + for (y = rowCount -1; (y >= 0) && iconCount; y--) { + + if (alpha > 0) { + color(1.0f, 1.0f, 1.0f, alpha); + + float ty = 605.f - y * 150.f; + + ty = ty + 0.25f; + + bindTexture(NAMED_PFText, 0, loadI32(3, index)); + drawRect(tx, ty, tx + 128.f, ty + 32.f, 0.5f); + } + iconCount--; + index++; + } + rot = rot + rotStep; + } + + + bindProgramVertex(NAMED_PV); + bindProgramFragment(NAMED_PF); + bindProgramFragmentStore(NAMED_PFS); + } + // Draw the selected icon color(1.0f, 1.0f, 1.0f, 0.9f); rot = drawRot * scale; @@ -119,7 +166,7 @@ int main(void* con, int ft, int launchID) float tz1 = tmpCos * diam * 0.9f + tmpSin * 2.f; float tz2 = tz1 - (tmpSin * 4.f); - float ty1 = ((y * 3.5f) - 5.f) * scale; + float ty1 = ((y * 3.1f) - 4.5f) * scale; float ty2 = ty1 + scale * 4.f; bindTexture(NAMED_PF, 0, loadI32(1, index)); drawQuad(tx1, ty1, tz1, diff --git a/libs/rs/java/Rollo/src/com/android/rollo/RolloRS.java b/libs/rs/java/Rollo/src/com/android/rollo/RolloRS.java index 46933f31a2678..520e3e4f55d53 100644 --- a/libs/rs/java/Rollo/src/com/android/rollo/RolloRS.java +++ b/libs/rs/java/Rollo/src/com/android/rollo/RolloRS.java @@ -26,8 +26,11 @@ import android.content.Context; import android.content.res.Resources; import android.graphics.Bitmap; import android.graphics.BitmapFactory; +import android.graphics.Canvas; +import android.graphics.Paint; import android.graphics.drawable.BitmapDrawable; import android.graphics.drawable.Drawable; +import android.graphics.Typeface; import android.os.Handler; import android.os.Message; import android.util.AttributeSet; @@ -57,6 +60,8 @@ public class RolloRS { public void init(RenderScript rs, Resources res, int width, int height) { mRS = rs; mRes = res; + mWidth = width; + mHeight = height; initNamed(); initRS(); } @@ -79,26 +84,32 @@ public class RolloRS { } public void setSelected(int index) { - Log.e("rs", "setSelected " + Integer.toString(index)); + //Log.e("rs", "setSelected " + Integer.toString(index)); mAllocStateBuf[STATE_SELECTION] = index; mAllocStateBuf[STATE_DONE] = 1; mAllocState.data(mAllocStateBuf); } + private int mWidth; + private int mHeight; private Resources mRes; private RenderScript mRS; private RenderScript.Script mScript; private RenderScript.Sampler mSampler; + private RenderScript.Sampler mSamplerText; private RenderScript.ProgramFragmentStore mPFSBackground; + private RenderScript.ProgramFragmentStore mPFSText; private RenderScript.ProgramFragment mPFBackground; private RenderScript.ProgramFragment mPFImages; + private RenderScript.ProgramFragment mPFText; private RenderScript.ProgramVertex mPV; private ProgramVertexAlloc mPVAlloc; private RenderScript.ProgramVertex mPVOrtho; private ProgramVertexAlloc mPVOrthoAlloc; private RenderScript.Allocation[] mIcons; + private RenderScript.Allocation[] mLabels; private RenderScript.Allocation mIconPlate; private RenderScript.Allocation mBackground; @@ -108,6 +119,9 @@ public class RolloRS { private int[] mAllocIconIDBuf; private RenderScript.Allocation mAllocIconID; + private int[] mAllocLabelIDBuf; + private RenderScript.Allocation mAllocLabelID; + private int[] mAllocScratchBuf; private RenderScript.Allocation mAllocScratch; @@ -123,6 +137,17 @@ public class RolloRS { RenderScript.SamplerValue.CLAMP); mSampler = mRS.samplerCreate(); + mRS.samplerBegin(); + mRS.samplerSet(RenderScript.SamplerParam.FILTER_MIN, + RenderScript.SamplerValue.NEAREST); + mRS.samplerSet(RenderScript.SamplerParam.FILTER_MAG, + RenderScript.SamplerValue.NEAREST); + mRS.samplerSet(RenderScript.SamplerParam.WRAP_MODE_S, + RenderScript.SamplerValue.CLAMP); + mRS.samplerSet(RenderScript.SamplerParam.WRAP_MODE_T, + RenderScript.SamplerValue.CLAMP); + mSamplerText = mRS.samplerCreate(); + mRS.programFragmentBegin(null, null); mRS.programFragmentSetTexEnable(0, true); @@ -131,6 +156,13 @@ public class RolloRS { mPFImages.setName("PF"); mPFImages.bindSampler(mSampler, 0); + mRS.programFragmentBegin(null, null); + mRS.programFragmentSetTexEnable(0, true); + mRS.programFragmentSetTexEnvMode(0, RenderScript.EnvMode.MODULATE); + mPFText = mRS.programFragmentCreate(); + mPFText.setName("PFText"); + mPFText.bindSampler(mSamplerText, 0); + mRS.programFragmentStoreBegin(null, null); mRS.programFragmentStoreDepthFunc(RenderScript.DepthFunc.LESS); mRS.programFragmentStoreDitherEnable(false); @@ -140,13 +172,22 @@ public class RolloRS { mPFSBackground = mRS.programFragmentStoreCreate(); mPFSBackground.setName("PFS"); + mRS.programFragmentStoreBegin(null, null); + mRS.programFragmentStoreDepthFunc(RenderScript.DepthFunc.ALWAYS); + mRS.programFragmentStoreDitherEnable(false); + mRS.programFragmentStoreDepthMask(false); + mRS.programFragmentStoreBlendFunc(RenderScript.BlendSrcFunc.SRC_ALPHA, + RenderScript.BlendDstFunc.ONE_MINUS_SRC_ALPHA); + mPFSText = mRS.programFragmentStoreCreate(); + mPFSText.setName("PFSText"); + mPVAlloc = new ProgramVertexAlloc(mRS); mRS.programVertexBegin(null, null); mRS.programVertexSetTextureMatrixEnable(false); mPV = mRS.programVertexCreate(); mPV.setName("PV"); mPV.bindAllocation(0, mPVAlloc.mAlloc); - mPVAlloc.setupProjectionNormalized(320, 480); + mPVAlloc.setupProjectionNormalized(mWidth, mHeight); mPVOrthoAlloc = new ProgramVertexAlloc(mRS); mRS.programVertexBegin(null, null); @@ -154,7 +195,7 @@ public class RolloRS { mPVOrtho = mRS.programVertexCreate(); mPVOrtho.setName("PVOrtho"); mPVOrtho.bindAllocation(0, mPVOrthoAlloc.mAlloc); - mPVOrthoAlloc.setupOrthoWindow(320, 480); + mPVOrthoAlloc.setupOrthoWindow(mWidth, mHeight); mRS.contextBindProgramVertex(mPV); @@ -176,6 +217,11 @@ public class RolloRS { mAllocIconID = mRS.allocationCreatePredefSized( RenderScript.ElementPredefined.USER_I32, mAllocIconIDBuf.length); + mLabels = new RenderScript.Allocation[29]; + mAllocLabelIDBuf = new int[mLabels.length]; + mAllocLabelID = mRS.allocationCreatePredefSized( + RenderScript.ElementPredefined.USER_I32, mLabels.length); + Bitmap b; BitmapFactory.Options opts = new BitmapFactory.Options(); @@ -188,109 +234,122 @@ public class RolloRS { b = BitmapFactory.decodeResource(mRes, R.raw.browser, opts); mIcons[0] = mRS.allocationCreateFromBitmap(b, RenderScript.ElementPredefined.RGBA_8888, true); + mLabels[0] = makeTextBitmap("browser"); b = BitmapFactory.decodeResource(mRes, R.raw.market, opts); mIcons[1] = mRS.allocationCreateFromBitmap(b, RenderScript.ElementPredefined.RGBA_8888, true); + mLabels[1] = makeTextBitmap("market"); b = BitmapFactory.decodeResource(mRes, R.raw.photos, opts); mIcons[2] = mRS.allocationCreateFromBitmap(b, RenderScript.ElementPredefined.RGBA_8888, true); + mLabels[2] = makeTextBitmap("photos"); b = BitmapFactory.decodeResource(mRes, R.raw.settings, opts); mIcons[3] = mRS.allocationCreateFromBitmap(b, RenderScript.ElementPredefined.RGBA_8888, true); + mLabels[3] = makeTextBitmap("settings"); -/* - b = BitmapFactory.decodeResource(mRes, R.raw.assasins_creed, opts); + b = BitmapFactory.decodeResource(mRes, R.raw.calendar, opts); mIcons[4] = mRS.allocationCreateFromBitmap(b, RenderScript.ElementPredefined.RGB_565, true); + mLabels[4] = makeTextBitmap("creed"); - b = BitmapFactory.decodeResource(mRes, R.raw.bankofamerica, opts); + b = BitmapFactory.decodeResource(mRes, R.raw.g1155, opts); mIcons[5] = mRS.allocationCreateFromBitmap(b, RenderScript.ElementPredefined.RGB_565, true); + mLabels[5] = makeTextBitmap("BOA"); - b = BitmapFactory.decodeResource(mRes, R.raw.chess, opts); + b = BitmapFactory.decodeResource(mRes, R.raw.g2140, opts); mIcons[6] = mRS.allocationCreateFromBitmap(b, RenderScript.ElementPredefined.RGB_565, true); + mLabels[6] = makeTextBitmap("chess"); - b = BitmapFactory.decodeResource(mRes, R.raw.dictionary, opts); + b = BitmapFactory.decodeResource(mRes, R.raw.maps, opts); mIcons[7] = mRS.allocationCreateFromBitmap(b, RenderScript.ElementPredefined.RGB_565, true); + mLabels[7] = makeTextBitmap("Dictionary"); - b = BitmapFactory.decodeResource(mRes, R.raw.facebook, opts); + b = BitmapFactory.decodeResource(mRes, R.raw.path431, opts); mIcons[8] = mRS.allocationCreateFromBitmap(b, RenderScript.ElementPredefined.RGB_565, true); + mLabels[8] = makeTextBitmap("facebook"); - b = BitmapFactory.decodeResource(mRes, R.raw.flashlight, opts); + b = BitmapFactory.decodeResource(mRes, R.raw.path676, opts); mIcons[9] = mRS.allocationCreateFromBitmap(b, RenderScript.ElementPredefined.RGB_565, true); + mLabels[9] = makeTextBitmap("Flash Light"); - b = BitmapFactory.decodeResource(mRes, R.raw.flight_control, opts); + b = BitmapFactory.decodeResource(mRes, R.raw.path754, opts); mIcons[10] = mRS.allocationCreateFromBitmap(b, RenderScript.ElementPredefined.RGB_565, true); + mLabels[10] = makeTextBitmap("Flight Control"); - b = BitmapFactory.decodeResource(mRes, R.raw.google_earth, opts); + b = BitmapFactory.decodeResource(mRes, R.raw.path815, opts); mIcons[11] = mRS.allocationCreateFromBitmap(b, RenderScript.ElementPredefined.RGB_565, true); + mLabels[11] = makeTextBitmap("google earth"); - b = BitmapFactory.decodeResource(mRes, R.raw.harry_potter, opts); + b = BitmapFactory.decodeResource(mRes, R.raw.path1920, opts); mIcons[12] = mRS.allocationCreateFromBitmap(b, RenderScript.ElementPredefined.RGB_565, true); + mLabels[12] = makeTextBitmap("Harry Potter"); - b = BitmapFactory.decodeResource(mRes, R.raw.movies, opts); + b = BitmapFactory.decodeResource(mRes, R.raw.path1927, opts); mIcons[13] = mRS.allocationCreateFromBitmap(b, RenderScript.ElementPredefined.RGB_565, true); + mLabels[13] = makeTextBitmap("Movies"); - b = BitmapFactory.decodeResource(mRes, R.raw.nytimes, opts); + b = BitmapFactory.decodeResource(mRes, R.raw.path3099, opts); mIcons[14] = mRS.allocationCreateFromBitmap(b, RenderScript.ElementPredefined.RGB_565, true); + mLabels[14] = makeTextBitmap("NY Times"); - b = BitmapFactory.decodeResource(mRes, R.raw.pandora, opts); + b = BitmapFactory.decodeResource(mRes, R.raw.path3950, opts); mIcons[15] = mRS.allocationCreateFromBitmap(b, RenderScript.ElementPredefined.RGB_565, true); + mLabels[15] = makeTextBitmap("Pandora"); - - - b = BitmapFactory.decodeResource(mRes, R.raw.public_radio, opts); + b = BitmapFactory.decodeResource(mRes, R.raw.path4481, opts); mIcons[16] = mRS.allocationCreateFromBitmap(b, RenderScript.ElementPredefined.RGB_565, true); + mLabels[16] = makeTextBitmap("Public Radio"); - b = BitmapFactory.decodeResource(mRes, R.raw.shazam, opts); + b = BitmapFactory.decodeResource(mRes, R.raw.path5168, opts); mIcons[17] = mRS.allocationCreateFromBitmap(b, RenderScript.ElementPredefined.RGB_565, true); + mLabels[17] = makeTextBitmap("Public Radio"); - b = BitmapFactory.decodeResource(mRes, R.raw.skype, opts); + b = BitmapFactory.decodeResource(mRes, R.raw.polygon2408, opts); mIcons[18] = mRS.allocationCreateFromBitmap(b, RenderScript.ElementPredefined.RGB_565, true); + mLabels[18] = makeTextBitmap("Public Radio"); + /* b = BitmapFactory.decodeResource(mRes, R.raw.solitaire, opts); mIcons[19] = mRS.allocationCreateFromBitmap(b, RenderScript.ElementPredefined.RGB_565, true); + mLabels[19] = makeTextBitmap("Public Radio"); b = BitmapFactory.decodeResource(mRes, R.raw.sudoku, opts); mIcons[20] = mRS.allocationCreateFromBitmap(b, RenderScript.ElementPredefined.RGB_565, true); + mLabels[20] = makeTextBitmap("Public Radio"); b = BitmapFactory.decodeResource(mRes, R.raw.taptaprevenge, opts); mIcons[21] = mRS.allocationCreateFromBitmap(b, RenderScript.ElementPredefined.RGB_565, true); + mLabels[21] = makeTextBitmap("Public Radio"); b = BitmapFactory.decodeResource(mRes, R.raw.tetris, opts); mIcons[22] = mRS.allocationCreateFromBitmap(b, RenderScript.ElementPredefined.RGB_565, true); + mLabels[22] = makeTextBitmap("Public Radio"); b = BitmapFactory.decodeResource(mRes, R.raw.tictactoe, opts); mIcons[23] = mRS.allocationCreateFromBitmap(b, RenderScript.ElementPredefined.RGB_565, true); + mLabels[23] = makeTextBitmap("Public Radio"); b = BitmapFactory.decodeResource(mRes, R.raw.tweetie, opts); mIcons[24] = mRS.allocationCreateFromBitmap(b, RenderScript.ElementPredefined.RGB_565, true); + mLabels[24] = makeTextBitmap("Public Radio"); b = BitmapFactory.decodeResource(mRes, R.raw.urbanspoon, opts); mIcons[25] = mRS.allocationCreateFromBitmap(b, RenderScript.ElementPredefined.RGB_565, true); + mLabels[25] = makeTextBitmap("Public Radio"); b = BitmapFactory.decodeResource(mRes, R.raw.waterslide_extreme, opts); mIcons[26] = mRS.allocationCreateFromBitmap(b, RenderScript.ElementPredefined.RGB_565, true); + mLabels[26] = makeTextBitmap("Public Radio"); b = BitmapFactory.decodeResource(mRes, R.raw.weather_channel, opts); mIcons[27] = mRS.allocationCreateFromBitmap(b, RenderScript.ElementPredefined.RGB_565, true); + mLabels[27] = makeTextBitmap("Public Radio"); b = BitmapFactory.decodeResource(mRes, R.raw.zippo, opts); mIcons[28] = mRS.allocationCreateFromBitmap(b, RenderScript.ElementPredefined.RGB_565, true); + mLabels[28] = makeTextBitmap("Public Radio"); */ - mIcons[4] = mIcons[3]; - mIcons[5] = mIcons[2]; - mIcons[6] = mIcons[1]; - mIcons[7] = mIcons[0]; - mIcons[8] = mIcons[1]; - mIcons[9] = mIcons[2]; - mIcons[10] = mIcons[3]; - mIcons[11] = mIcons[2]; - mIcons[12] = mIcons[1]; - mIcons[13] = mIcons[0]; - mIcons[14] = mIcons[1]; - mIcons[15] = mIcons[2]; - mIcons[16] = mIcons[3]; - mIcons[17] = mIcons[2]; - mIcons[18] = mIcons[1]; + mIcons[19] = mIcons[0]; mIcons[20] = mIcons[1]; mIcons[21] = mIcons[2]; @@ -302,13 +361,26 @@ public class RolloRS { mIcons[27] = mIcons[2]; mIcons[28] = mIcons[3]; + mLabels[19] = mLabels[0]; + mLabels[20] = mLabels[1]; + mLabels[21] = mLabels[2]; + mLabels[22] = mLabels[3]; + mLabels[23] = mLabels[2]; + mLabels[24] = mLabels[1]; + mLabels[25] = mLabels[0]; + mLabels[26] = mLabels[1]; + mLabels[27] = mLabels[2]; + mLabels[28] = mLabels[3]; for(int ct=0; ct < mIcons.length; ct++) { mIcons[ct].uploadToTexture(0); + mLabels[ct].uploadToTexture(0); mAllocIconIDBuf[ct] = mIcons[ct].getID(); + mAllocLabelIDBuf[ct] = mLabels[ct].getID(); } mAllocIconID.data(mAllocIconIDBuf); + mAllocLabelID.data(mAllocLabelIDBuf); RenderScript.Element e = mRS.elementGetPredefined(RenderScript.ElementPredefined.RGB_565); mRS.typeBegin(e); @@ -341,10 +413,15 @@ public class RolloRS { } - private void makeTextBitmap() { - //Bitmap b = Bitmap.createBitmap(128, 64, Bitmap.Config); - //Canvas c = new Canvas(b); - //canvas.drawText(); + RenderScript.Allocation makeTextBitmap(String t) { + Bitmap b = Bitmap.createBitmap(128, 32, Bitmap.Config.ARGB_8888); + Canvas c = new Canvas(b); + Paint p = new Paint(); + p.setTypeface(Typeface.DEFAULT_BOLD); + p.setTextSize(16); + p.setColor(0xffffffff); + c.drawText(t, 2, 20, p); + return mRS.allocationCreateFromBitmap(b, RenderScript.ElementPredefined.RGBA_8888, true); } @@ -363,6 +440,7 @@ public class RolloRS { mScript.bindAllocation(mAllocState, 0); mScript.bindAllocation(mAllocIconID, 1); mScript.bindAllocation(mAllocScratch, 2); + mScript.bindAllocation(mAllocLabelID, 3); setPosition(0); setZoom(1); diff --git a/libs/rs/java/Rollo/src/com/android/rollo/RolloView.java b/libs/rs/java/Rollo/src/com/android/rollo/RolloView.java index c67644becf9be..71d6c7e10ce4e 100644 --- a/libs/rs/java/Rollo/src/com/android/rollo/RolloView.java +++ b/libs/rs/java/Rollo/src/com/android/rollo/RolloView.java @@ -90,8 +90,8 @@ public class RolloView extends RSSurfaceView { if(c > (mColumns -2)) { c = (mColumns -2); } - if(c < 1) { - c = 1; + if(c < 0) { + c = 0; } mRender.setPosition(c); if(clamp) { @@ -122,6 +122,9 @@ public class RolloView extends RSSurfaceView { float nx = ev.getX() / getWidth(); float ny = ev.getY() / getHeight(); + //Log.e("rs", "width=" + Float.toString(getWidth())); + //Log.e("rs", "height=" + Float.toString(getHeight())); + mRender.setTouch(ret); if((ny > 0.85f) || mControlMode) { diff --git a/libs/rs/rsAllocation.cpp b/libs/rs/rsAllocation.cpp index a2e3babc05983..c6a9149bc5c29 100644 --- a/libs/rs/rsAllocation.cpp +++ b/libs/rs/rsAllocation.cpp @@ -204,12 +204,12 @@ static void mip565(const Adapter2D &out, const Adapter2D &in) uint32_t w = out.getDimX(); uint32_t h = out.getDimY(); - for (uint32_t y=0; y < w; y++) { + for (uint32_t y=0; y < h; y++) { uint16_t *oPtr = static_cast(out.getElement(0, y)); const uint16_t *i1 = static_cast(in.getElement(0, y*2)); const uint16_t *i2 = static_cast(in.getElement(0, y*2+1)); - for (uint32_t x=0; x < h; x++) { + for (uint32_t x=0; x < w; x++) { *oPtr = rsBoxFilter565(i1[0], i1[1], i2[0], i2[1]); oPtr ++; i1 += 2; @@ -223,21 +223,33 @@ static void mip8888(const Adapter2D &out, const Adapter2D &in) uint32_t w = out.getDimX(); uint32_t h = out.getDimY(); - for (uint32_t y=0; y < w; y++) { + for (uint32_t y=0; y < h; y++) { uint32_t *oPtr = static_cast(out.getElement(0, y)); const uint32_t *i1 = static_cast(in.getElement(0, y*2)); const uint32_t *i2 = static_cast(in.getElement(0, y*2+1)); - for (uint32_t x=0; x < h; x++) { + for (uint32_t x=0; x < w; x++) { *oPtr = rsBoxFilter8888(i1[0], i1[1], i2[0], i2[1]); oPtr ++; i1 += 2; i2 += 2; } } - } +static void mip(const Adapter2D &out, const Adapter2D &in) +{ + switch(out.getBaseType()->getElement()->getSizeBits()) { + case 32: + mip8888(out, in); + break; + case 16: + mip565(out, in); + break; + + } + +} typedef void (*ElementConverter_t)(void *dst, const void *src, uint32_t count); @@ -337,7 +349,7 @@ RsAllocation rsi_AllocationCreateFromBitmap(Context *rsc, uint32_t w, uint32_t h for(uint32_t lod=0; lod < (texAlloc->getType()->getLODCount() -1); lod++) { adapt.setLOD(lod); adapt2.setLOD(lod + 1); - mip565(adapt2, adapt); + mip(adapt2, adapt); } } @@ -482,11 +494,7 @@ RsAllocation rsi_AllocationCreateFromFile(Context *rsc, const char *file, bool g for(uint32_t lod=0; lod < (texAlloc->getType()->getLODCount() -1); lod++) { adapt.setLOD(lod); adapt2.setLOD(lod + 1); - if (use32bpp) { - mip8888(adapt2, adapt); - } else { - mip565(adapt2, adapt); - } + mip(adapt2, adapt); } } diff --git a/libs/rs/rsScriptC_Lib.cpp b/libs/rs/rsScriptC_Lib.cpp index 10d1120a26772..412190647ad54 100644 --- a/libs/rs/rsScriptC_Lib.cpp +++ b/libs/rs/rsScriptC_Lib.cpp @@ -356,6 +356,15 @@ static void SC_drawQuad(float x1, float y1, float z1, glDrawArrays(GL_TRIANGLE_FAN, 0, 4); } +static void SC_drawRect(float x1, float y1, + float x2, float y2, float z) +{ + SC_drawQuad(x1, y2, z, + x2, y2, z, + x2, y1, z, + x1, y1, z); +} + ////////////////////////////////////////////////////////////////////////////// // ////////////////////////////////////////////////////////////////////////////// @@ -442,7 +451,7 @@ ScriptCState::SymbolTable_t ScriptCState::gSyms[] = { "float", "(float)" }, { "cosf", (void *)&cosf, "float", "(float)" }, - { "fabs", (void *)&fabs, + { "fabsf", (void *)&fabsf, "float", "(float)" }, { "randf", (void *)&SC_randf, "float", "(float)" }, @@ -496,6 +505,8 @@ ScriptCState::SymbolTable_t ScriptCState::gSyms[] = { // drawing + { "drawRect", (void *)&SC_drawRect, + "void", "(float x1, float y1, float x2, float y2, float z)" }, { "drawQuad", (void *)&SC_drawQuad, "void", "(float x1, float y1, float z1, float x2, float y2, float z2, float x3, float y3, float z3, float x4, float y4, float z4)" }, { "drawTriangleArray", (void *)&SC_drawTriangleArray,