From e5ebcb0107a939395e03592fd44c746cd09e311d Mon Sep 17 00:00:00 2001 From: Romain Guy Date: Fri, 15 Oct 2010 13:57:28 -0700 Subject: [PATCH] Fix clipping issue in StackView. Change-Id: I7ec28f25c3993a2bd7ef6399ba1923839d239905 --- core/java/android/widget/ImageView.java | 2 - core/java/android/widget/StackView.java | 18 ++--- libs/hwui/Matrix.cpp | 2 +- libs/hwui/OpenGLRenderer.cpp | 9 ++- tests/HwAccelerationTest/AndroidManifest.xml | 19 +++++ tests/HwAccelerationTest/res/anim/fade_in.xml | 19 +++++ .../HwAccelerationTest/res/anim/fade_out.xml | 19 +++++ .../drawable-hdpi/appwidget_background.xml | 22 ++++++ .../res/drawable-hdpi/appwidget_bg.9.png | Bin 0 -> 1694 bytes .../drawable-hdpi/appwidget_bg_focus.9.png | Bin 0 -> 1910 bytes .../drawable-hdpi/appwidget_bg_press.9.png | Bin 0 -> 1908 bytes .../res/drawable-hdpi/green_gradient.9.png | Bin 0 -> 1239 bytes .../res/drawable-hdpi/widget_header.png | Bin 0 -> 4092 bytes .../res/drawable-hdpi/widget_title_bg.9.png | Bin 0 -> 1429 bytes .../res/drawable/appwidget_background.xml | 22 ++++++ .../res/drawable/appwidget_bg.9.png | Bin 0 -> 1694 bytes .../res/drawable/appwidget_bg_focus.9.png | Bin 0 -> 1910 bytes .../res/drawable/appwidget_bg_press.9.png | Bin 0 -> 1908 bytes .../res/drawable/green_gradient.9.png | Bin 0 -> 1239 bytes .../res/drawable/widget_header.png | Bin 0 -> 6098 bytes .../res/drawable/widget_title_bg.9.png | Bin 0 -> 1429 bytes .../res/layout/flipper_item.xml | 39 +++++++++ .../HwAccelerationTest/res/layout/widget.xml | 46 +++++++++++ .../android/test/hwui/Bitmaps3dActivity.java | 74 ++++++++++++++++++ .../test/hwui/ViewFlipperActivity.java | 58 ++++++++++++++ 25 files changed, 333 insertions(+), 16 deletions(-) create mode 100644 tests/HwAccelerationTest/res/anim/fade_in.xml create mode 100644 tests/HwAccelerationTest/res/anim/fade_out.xml create mode 100644 tests/HwAccelerationTest/res/drawable-hdpi/appwidget_background.xml create mode 100644 tests/HwAccelerationTest/res/drawable-hdpi/appwidget_bg.9.png create mode 100644 tests/HwAccelerationTest/res/drawable-hdpi/appwidget_bg_focus.9.png create mode 100644 tests/HwAccelerationTest/res/drawable-hdpi/appwidget_bg_press.9.png create mode 100644 tests/HwAccelerationTest/res/drawable-hdpi/green_gradient.9.png create mode 100644 tests/HwAccelerationTest/res/drawable-hdpi/widget_header.png create mode 100644 tests/HwAccelerationTest/res/drawable-hdpi/widget_title_bg.9.png create mode 100644 tests/HwAccelerationTest/res/drawable/appwidget_background.xml create mode 100644 tests/HwAccelerationTest/res/drawable/appwidget_bg.9.png create mode 100644 tests/HwAccelerationTest/res/drawable/appwidget_bg_focus.9.png create mode 100644 tests/HwAccelerationTest/res/drawable/appwidget_bg_press.9.png create mode 100644 tests/HwAccelerationTest/res/drawable/green_gradient.9.png create mode 100644 tests/HwAccelerationTest/res/drawable/widget_header.png create mode 100644 tests/HwAccelerationTest/res/drawable/widget_title_bg.9.png create mode 100644 tests/HwAccelerationTest/res/layout/flipper_item.xml create mode 100644 tests/HwAccelerationTest/res/layout/widget.xml create mode 100644 tests/HwAccelerationTest/src/com/android/test/hwui/Bitmaps3dActivity.java create mode 100644 tests/HwAccelerationTest/src/com/android/test/hwui/ViewFlipperActivity.java diff --git a/core/java/android/widget/ImageView.java b/core/java/android/widget/ImageView.java index 46f7db484b45a..5c4a15643827a 100644 --- a/core/java/android/widget/ImageView.java +++ b/core/java/android/widget/ImageView.java @@ -34,8 +34,6 @@ import android.util.AttributeSet; import android.util.Log; import android.view.RemotableViewMethod; import android.view.View; -import android.view.accessibility.AccessibilityEvent; -import android.view.accessibility.AccessibilityManager; import android.widget.RemoteViews.RemoteView; diff --git a/core/java/android/widget/StackView.java b/core/java/android/widget/StackView.java index 7e01506378509..1f5b79087c3b0 100644 --- a/core/java/android/widget/StackView.java +++ b/core/java/android/widget/StackView.java @@ -16,10 +16,9 @@ package android.widget; -import android.animation.PropertyValuesHolder; import android.animation.ObjectAnimator; +import android.animation.PropertyValuesHolder; import android.content.Context; -import android.content.res.Resources; import android.graphics.Bitmap; import android.graphics.BlurMaskFilter; import android.graphics.Canvas; @@ -31,15 +30,12 @@ import android.graphics.Rect; import android.graphics.RectF; import android.graphics.TableMaskFilter; import android.util.AttributeSet; -import android.util.DisplayMetrics; import android.util.Log; import android.view.MotionEvent; import android.view.VelocityTracker; import android.view.View; import android.view.ViewConfiguration; import android.view.ViewGroup; -import android.view.View.MeasureSpec; -import android.view.ViewGroup.LayoutParams; import android.view.animation.LinearInterpolator; import android.widget.RemoteViews.RemoteView; @@ -54,13 +50,14 @@ public class StackView extends AdapterViewAnimator { /** * Default animation parameters */ - private final int DEFAULT_ANIMATION_DURATION = 400; - private final int MINIMUM_ANIMATION_DURATION = 50; + private static final int DEFAULT_ANIMATION_DURATION = 400; + private static final int MINIMUM_ANIMATION_DURATION = 50; /** * Parameters effecting the perspective visuals */ private static float PERSPECTIVE_SHIFT_FACTOR = 0.12f; + @SuppressWarnings({"FieldCanBeLocal"}) private static float PERSPECTIVE_SCALE_FACTOR = 0.35f; /** @@ -182,7 +179,6 @@ public class StackView extends AdapterViewAnimator { // Slide item in view.setVisibility(VISIBLE); - LayoutParams lp = (LayoutParams) view.getLayoutParams(); int duration = Math.round(mStackSlider.getDurationForNeutralPosition(mYVelocity)); StackSlider animationSlider = new StackSlider(mStackSlider); @@ -195,8 +191,6 @@ public class StackView extends AdapterViewAnimator { pa.start(); } else if (fromIndex == mNumActiveViews - 2 && toIndex == mNumActiveViews - 1) { // Slide item out - LayoutParams lp = (LayoutParams) view.getLayoutParams(); - int duration = Math.round(mStackSlider.getDurationForOffscreenPosition(mYVelocity)); StackSlider animationSlider = new StackSlider(mStackSlider); @@ -730,10 +724,14 @@ public class StackView extends AdapterViewAnimator { return 0; } + // Used for animations + @SuppressWarnings({"UnusedDeclaration"}) public float getYProgress() { return mYProgress; } + // Used for animations + @SuppressWarnings({"UnusedDeclaration"}) public float getXProgress() { return mXProgress; } diff --git a/libs/hwui/Matrix.cpp b/libs/hwui/Matrix.cpp index 5502e668d33a0..1a0fcf4b0bd2c 100644 --- a/libs/hwui/Matrix.cpp +++ b/libs/hwui/Matrix.cpp @@ -87,7 +87,7 @@ void Matrix4::load(const SkMatrix& v) { data[kScaleZ] = 1.0f; - mSimpleMatrix = (v.getType() <= SkMatrix::kScale_Mask); + mSimpleMatrix = (v.getType() <= (SkMatrix::kScale_Mask | SkMatrix::kTranslate_Mask)); } void Matrix4::copyTo(SkMatrix& v) const { diff --git a/libs/hwui/OpenGLRenderer.cpp b/libs/hwui/OpenGLRenderer.cpp index 81fa1ea521b24..0a95408ab2638 100644 --- a/libs/hwui/OpenGLRenderer.cpp +++ b/libs/hwui/OpenGLRenderer.cpp @@ -597,8 +597,10 @@ void OpenGLRenderer::getMatrix(SkMatrix* matrix) { } void OpenGLRenderer::concatMatrix(SkMatrix* matrix) { - mat4 m(*matrix); - mSnapshot->transform->multiply(m); + SkMatrix transform; + mSnapshot->transform->copyTo(transform); + transform.preConcat(*matrix); + mSnapshot->transform->load(transform); } /////////////////////////////////////////////////////////////////////////////// @@ -606,7 +608,8 @@ void OpenGLRenderer::concatMatrix(SkMatrix* matrix) { /////////////////////////////////////////////////////////////////////////////// void OpenGLRenderer::setScissorFromClip() { - const Rect& clip = *mSnapshot->clipRect; + Rect clip(*mSnapshot->clipRect); + clip.snapToPixelBoundaries(); glScissor(clip.left, mSnapshot->height - clip.bottom, clip.getWidth(), clip.getHeight()); } diff --git a/tests/HwAccelerationTest/AndroidManifest.xml b/tests/HwAccelerationTest/AndroidManifest.xml index df3c3ed15dfa8..196b0eb5c6451 100644 --- a/tests/HwAccelerationTest/AndroidManifest.xml +++ b/tests/HwAccelerationTest/AndroidManifest.xml @@ -39,6 +39,15 @@ + + + + + + + @@ -48,6 +57,16 @@ + + + + + + + + + + diff --git a/tests/HwAccelerationTest/res/anim/fade_out.xml b/tests/HwAccelerationTest/res/anim/fade_out.xml new file mode 100644 index 0000000000000..9832c322ff659 --- /dev/null +++ b/tests/HwAccelerationTest/res/anim/fade_out.xml @@ -0,0 +1,19 @@ + + + + diff --git a/tests/HwAccelerationTest/res/drawable-hdpi/appwidget_background.xml b/tests/HwAccelerationTest/res/drawable-hdpi/appwidget_background.xml new file mode 100644 index 0000000000000..abbb9e69af94b --- /dev/null +++ b/tests/HwAccelerationTest/res/drawable-hdpi/appwidget_background.xml @@ -0,0 +1,22 @@ + + + + + + + + + diff --git a/tests/HwAccelerationTest/res/drawable-hdpi/appwidget_bg.9.png b/tests/HwAccelerationTest/res/drawable-hdpi/appwidget_bg.9.png new file mode 100644 index 0000000000000000000000000000000000000000..80491912d80b1d4dd9951a542f8aac947ed9e92e GIT binary patch literal 1694 zcmV;P24VS$P)`M0}X;yllzqFWrt#TzMc6FS9(bt(hQTij|h1T!!*Ff%YSFf%Yy zv!x!jO02+)QKlX27|I%yG1fSFDPRzYgplChq_|&G;KWk`BUhk+WI{$LnNVkpd~#Qn zNQwfaE@VN-yUoqbpAHTVx|f%iSw7`kzu(Ue4-dO=&v5UkLtR?EMQ=8gPlUYR+S>Y% zztRov9dtll9^e!KlOpB!8yg!x4~N5iJRW;VRh#d9z`d`pum6Z}7ErgC0%HrFF~*U3 zA+5EwweOQ8d9_&v?p^5c1L%S}C85DrTFe8OcDvmYO-REU#}IB;Cuh9Xe(a}%)`Zh_~5<8mbm76rj}exm8Rj3EJAo#ayuf0T4> z3cfxCo_akMXSl8uYB80&k}74m6xZTRJ$#p_*=Q=#wGSMw#kk^!ODeONP@gu{EL3K4 z4K{^BsWe@yu2icPi`%Bm#IcwVE2-3C^qZHEd;ysPF*ml@dfF~1zSbUOF)9ojAX{bY z6Ju-@t*$%;Mc#juMUBDEGh7VQCtb_HB9r?MDhg1{N54vjMu7%GmK;!34p z)F05HP@u}1CJE^RP~a-7V<;$kHR>CLO$A_RpGdD=D$h!?VF`!Yx5XTvfErrRsX+AO zN`tS2pj!-Q+O%vioNBkybWM$(nT|P=T|VvEY8%_EuW3|_f}+CV%uTs0#TIZWAiiK~p$jWHal>cc z$W+Yv%ovo}9pPBaQ|qJANWS&>B2AktMo-`Rh@Wfv#n+W|Ythfcy@L)W-9laIVYSBf z^>v;kN!(~OUVxxniW;jiS%7I6lvCZ>V5o9`e;?i4+&o*NQzTu>hO*=1D^^YdtLZ|@h-1$D}7a8id0NietD+uK{MR_mM9)zz=t?RK=Zv=lX)O)^%f zW4gAP$TG)%^tZqVgF$q0aS@%Jokjcm`@iq(>}-QB3K-I*V#}a4yeJF-1r{cJF62ug zU#+aHe7C&3{B5VxX)Z1<#&dIX5lEV*Pa=fTmvNWTbV)k+y(~R3|^OqMG2oFoG+rs^*-+q zn0)W5)c?n_6Bh3s%?i;@D&8@qe`-efE!a%9wDQ ofthVy|McQb_#Aiq=|2Gm0NRE7DJ4ys9smFU07*qoM6N<$f{~phrT_o{ literal 0 HcmV?d00001 diff --git a/tests/HwAccelerationTest/res/drawable-hdpi/appwidget_bg_focus.9.png b/tests/HwAccelerationTest/res/drawable-hdpi/appwidget_bg_focus.9.png new file mode 100644 index 0000000000000000000000000000000000000000..c81f67582110ad3e8025cd0307b536fa285711b4 GIT binary patch literal 1910 zcmV-+2Z{KJP)I^(YA9McZ6*XfHxl#DjXU9t1@y+T5gAq^6Kf zO2q_28`gYmcGJ!5jPF1DUVM3dpEEn_ChWjt-n^O2&i^<6ulJvscu^EV+Qsv{^e1WI zLS*t%%hU=mdvVEi5p=Ya;R4xud^c(U5%b1I9o`x~4Of~upk8n- z7zX9eIe6|s0WRa%=J<>AD^I;YRv3SDq%b_1?_?O2_0>k@c4=+j@9&lSZ-4g)jxAT< z#KCvqXC0h4lgE9shWpV6z49y!G|t0~=mJDbzkD@hQV;}D7=}(QtHt#?@Y-u%o-D<(Ou>iLzj`V#x~PO;@;*9Ra_q{H$?;rn z_XaV%_J58}9z&n#aUohz!FqLBD6$=R8aXDw9uTbk>+$tZwv1G#ZWVyMk-kUB@x;&dH8r z$CxxnrvKryu#BrDHxW5xjB8_Rn z*=u#IXvd9DF(sfULdT2E#&Po6!yhlx5b?Mqnqu3JgNNmfw$>Ov&YPkVFRV;(o!>D* zG4*w0f+@8|V?-Zg@)0sXCOAo;sMZ!>QkESefGqq>nj(Cv0=}g@P8!2}jLRM8j~D;W zbRHWG5yy0z=w{j`DBH)k z3`}^h#_%w7fOMIyi;vM|w4(4TDD3((iAube7h$Lb*VTYsBav-r7R{$^K869oZPqsx zrFEvHnq4Pxx+*B!8k1$XmI2|%Tr@-FXKbCWjVbZ{Oy^1nfPqkHjm7IF&W_h)N(_Ju zO6xTyRBH@d>oh5C`O{WoWSS%Hb8)^-lSr4zT$+Ti6_Zot1T>49FQYCqC7EfZ(VV1H z0h7D$l}y3#KOjO;foj!bk|a|A6}Zgu7!?#T8+CQUvIH>c zoJh=FGS6dJU4y|<^>seS^~qzBgpLOyZf90@;30?_WAoUw)nIJ0-6W=D9j;Z?GugJT z$Yk^Px^OQ`@SKv%EWBS&b{ns|#*ZD20=}3z-CSoTF zf}r`9ki~g+ZHh3ad6CLQbPx4q z%j)VXR2JvgvA+?(j7ej12Jg}+Z^EzGJ9hoz?d9cVSXo(7-W6Ghv`O1d;aHc++Gq?y zDVNJ|Z06z}l%-rFGBsb7kCK2v+h`p98qRKP!L7r!tHu3)d~>r@D#60S0#vKj9dC=< zMi$rVToUcX1+NXSadB}GW@l$%|IDSE57d4uR_ZYS@aJ%rf>D;OJWbIW-<(E=GVRWcX!w;mpM%pI%t%gMQNCyVBsfV;7 z()OJ{4kuqN!n>ora2R&svRa3~zL$2CeHiIv7$k74EmdLe&k9_7`Fr?yeG8V65ruLW%_%7ukA`%FGeBB_ zwjpX}yO<;iE)+zCwi<;J;D>U~c})CCO4IHG?#BXp;x!7zr%*Z(47=Vs z1;N@D9Z&uht)MwMsvSOUc>#*oAy6U#PJ@C7xJZ=l^I{1g7UFqWoxFrx1tw&cU?p$& wAL}Ho;B~=t7q>zcmksU(fo=b>*S`V`0OTy`XmXc;WB>pF07*qoM6N<$f?m9zNdN!< literal 0 HcmV?d00001 diff --git a/tests/HwAccelerationTest/res/drawable-hdpi/appwidget_bg_press.9.png b/tests/HwAccelerationTest/res/drawable-hdpi/appwidget_bg_press.9.png new file mode 100644 index 0000000000000000000000000000000000000000..d060b77556bb6930c035116e65dbe6ae3fbed24e GIT binary patch literal 1908 zcmV-)2aEWLP)EJ?a zauVCr2`~q7$@CHQ!SuoO!SuoO!Su}HTGT4e_a8uZ?ijq9&A=S#y3cXord~FVR3d+p zj|-j;i;GJz|Io|e1%~yBwvIs{__28o9vm5h_sP~>`%wYJ%u8E!cxCK3EVOGtwc$!I z6w38);P|0Q_zwFTgHNoKC*PbJoxF2=bZjEq%P^{&6|Y(@Y)qElDCM`mx&!-)WqA1T zqi{|IC#>Z0J5j^$F$O*T2n=~Y!lmFm1Zx-HT?zK-vi1u(cVYvvi!OxcdAnByKSfs^`}iv- z+K=v|Q;tdnqVIHlXaoGanNIdKWhK^Fk>RSi zql2PbSM_nO)EUL_F-8|7M1XW~;y{so8h}YS?GON@5oeN2!Y7)*H?+q}F*L^5Tyb`P z{_k|hF;NKLr&5xQVys=s#C=RYO#-s1+ejgF0}QIgM#6F7#DSvgqwAf_N*G)>R zTuC;%juUicP*PJ2o32Gb*ghL&$l{D?&^2)-c0JXx5(1zgWU4WEyu>>2>RgEe5JBm@ zVtlz`=%-3aNvA(e6(dp(|DDZ{z-ka_Gnh+K5O!j4Djk5PG3QIEi(EcPOBX zIjO}M5d@Qo>bP-621XV~L~$imFzgTTP-LJwb(~nS29l5ve`4ywrY~e zK$|84znQ+7~MWb@9bdM(G|5lFk2`miwx>Wi%Y=kYWOQpjNBZ ze(I4?hsve+^v%!s>2AN+x)QGzz8}vWZD7CziCl>svzl>Wv{u{lv)ODWpU?jXgv_O6 zb2TPPGI1px47N3!O{mvvWM|0u0o0PF>!8+z0P9$o7)jBZ>ca}m`|ebG{> zRG_-PvWe?k+wiMSF&RyC@k&+r3D;(~&a4-UMJSic(yJm$ktSukE*+~XSrf$|lv1e# zvyC&?(U#Dr_M`Ga95Cn`-u-XEsjUWFJ({~PGrj)Bl|rEatE;O}tJU^AEpD1wY-i`< zs1p}FH$2B{*RH|x@-j@XpS^NR_UD;u16FQ-4NgU1q|;W8V$vF)oW_7M{>h8**mJY+ zG4@}s-@EcMxUJu=}A3}$k<9AI-@cel}P5|hHlu4BV^gH3cFoR3YS0E(YYOypkv=qL`_301r!t)=&*JO2rvk~t86!zg#sl)G|pNF?keg@x?%`%1>(wfq@+!SEi?-BqEMsOy^@^I+vNqFhD zX*hOd9A<_GV7!-Mki@aEwgH!a`wNzyIt?FgHlT=%A}HJFPI19FQA$TRL!^yHZ6tED z0nog~@joqo6hoTmE)j@o)antG7QQHFUB`s4q_q9M#r#++I`BpW#f_l!A{ctU%?Jc- zJ5hi9w`e)#WFmFAQOj~roF0J^aB#c`M2pEp$zCrO0HP_Lh1JW8&&oR?1k literal 0 HcmV?d00001 diff --git a/tests/HwAccelerationTest/res/drawable-hdpi/green_gradient.9.png b/tests/HwAccelerationTest/res/drawable-hdpi/green_gradient.9.png new file mode 100644 index 0000000000000000000000000000000000000000..a535678ab531fb6b2eef1b44ba8c08c54617ec37 GIT binary patch literal 1239 zcmV;|1StE7P)*B{sOG+ex84Lh{qygv`!v2TfSd@SK_4Ds>?R)jj#?8DM z{RzwWF}21htHnS+_wT>``Qy7!{V-kB&Wpq1U7yqEEe^)??su7b>%*oNAokgB#`JJ3 z{5?P|v2WvUZa}m?*h~&>c5siwq-a6hx=mSce+vt~`rvzvC8z@o^&NcNd>q^^%eZiF zfNlY&1(^cy7beBHK$g{*&92r2$Y1@TcLMl&81o+6s*LZ@_ST}+i7vb29r)tF81J>Be>0>lY>kfbQiIi_!l@?Fiixp z&l3E_zU76LSbz~|_GolpV^Y80BMX{yH7E-cW+_Fl*YFUK@#@EJ>W(lsEK&w-?1PUz z5CMUpxTw#)`lD_7Qz8*T!kCy|YDJl2X>R|IL9u}L>f?AYfVk7)r2h_8fbitoS+MYRO3Wb!b7?G&?2?=zF1q4?EYBE%n+(*lJyBDvWl?Js7r`+&)uVu=)o{oI;K%MM1)8tBy$|HtGpPpuqba*> zFiS@&Nzy^39bl>Gnr%8$aw#;>T&{WR$0F4r%ZJJnSmMMMLGBjdmNP!Lrxc7(-kDm5 zvcZ;~Ta!~89xF{BdD?^-JjKKTt4V7v`YtW1)dCM6 zLt@eE3ylN|r1M7j4fi(oY^Jug+IYx1tA@hXZX6o%`$rHSV!#eDpn&_=mR2zMItH$G z_B`+r>4QQJz=XlDAWSRKx-COp80Eu9awQT5y-$vXX9|t)M#-5hQ>8H&fuG?7!|eYPo*}7yy2m?(r^|+@}Bl002ovPDHLkV1g|6 BQ>Xv{ literal 0 HcmV?d00001 diff --git a/tests/HwAccelerationTest/res/drawable-hdpi/widget_header.png b/tests/HwAccelerationTest/res/drawable-hdpi/widget_header.png new file mode 100644 index 0000000000000000000000000000000000000000..cd9ec4488486e3256e475ba295531606932b6438 GIT binary patch literal 4092 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 literal 0 HcmV?d00001 diff --git a/tests/HwAccelerationTest/res/drawable/appwidget_background.xml b/tests/HwAccelerationTest/res/drawable/appwidget_background.xml new file mode 100644 index 0000000000000..abbb9e69af94b --- /dev/null +++ b/tests/HwAccelerationTest/res/drawable/appwidget_background.xml @@ -0,0 +1,22 @@ + + + + + + + + + diff --git a/tests/HwAccelerationTest/res/drawable/appwidget_bg.9.png b/tests/HwAccelerationTest/res/drawable/appwidget_bg.9.png new file mode 100644 index 0000000000000000000000000000000000000000..80491912d80b1d4dd9951a542f8aac947ed9e92e GIT binary patch literal 1694 zcmV;P24VS$P)`M0}X;yllzqFWrt#TzMc6FS9(bt(hQTij|h1T!!*Ff%YSFf%Yy zv!x!jO02+)QKlX27|I%yG1fSFDPRzYgplChq_|&G;KWk`BUhk+WI{$LnNVkpd~#Qn zNQwfaE@VN-yUoqbpAHTVx|f%iSw7`kzu(Ue4-dO=&v5UkLtR?EMQ=8gPlUYR+S>Y% zztRov9dtll9^e!KlOpB!8yg!x4~N5iJRW;VRh#d9z`d`pum6Z}7ErgC0%HrFF~*U3 zA+5EwweOQ8d9_&v?p^5c1L%S}C85DrTFe8OcDvmYO-REU#}IB;Cuh9Xe(a}%)`Zh_~5<8mbm76rj}exm8Rj3EJAo#ayuf0T4> z3cfxCo_akMXSl8uYB80&k}74m6xZTRJ$#p_*=Q=#wGSMw#kk^!ODeONP@gu{EL3K4 z4K{^BsWe@yu2icPi`%Bm#IcwVE2-3C^qZHEd;ysPF*ml@dfF~1zSbUOF)9ojAX{bY z6Ju-@t*$%;Mc#juMUBDEGh7VQCtb_HB9r?MDhg1{N54vjMu7%GmK;!34p z)F05HP@u}1CJE^RP~a-7V<;$kHR>CLO$A_RpGdD=D$h!?VF`!Yx5XTvfErrRsX+AO zN`tS2pj!-Q+O%vioNBkybWM$(nT|P=T|VvEY8%_EuW3|_f}+CV%uTs0#TIZWAiiK~p$jWHal>cc z$W+Yv%ovo}9pPBaQ|qJANWS&>B2AktMo-`Rh@Wfv#n+W|Ythfcy@L)W-9laIVYSBf z^>v;kN!(~OUVxxniW;jiS%7I6lvCZ>V5o9`e;?i4+&o*NQzTu>hO*=1D^^YdtLZ|@h-1$D}7a8id0NietD+uK{MR_mM9)zz=t?RK=Zv=lX)O)^%f zW4gAP$TG)%^tZqVgF$q0aS@%Jokjcm`@iq(>}-QB3K-I*V#}a4yeJF-1r{cJF62ug zU#+aHe7C&3{B5VxX)Z1<#&dIX5lEV*Pa=fTmvNWTbV)k+y(~R3|^OqMG2oFoG+rs^*-+q zn0)W5)c?n_6Bh3s%?i;@D&8@qe`-efE!a%9wDQ ofthVy|McQb_#Aiq=|2Gm0NRE7DJ4ys9smFU07*qoM6N<$f{~phrT_o{ literal 0 HcmV?d00001 diff --git a/tests/HwAccelerationTest/res/drawable/appwidget_bg_focus.9.png b/tests/HwAccelerationTest/res/drawable/appwidget_bg_focus.9.png new file mode 100644 index 0000000000000000000000000000000000000000..c81f67582110ad3e8025cd0307b536fa285711b4 GIT binary patch literal 1910 zcmV-+2Z{KJP)I^(YA9McZ6*XfHxl#DjXU9t1@y+T5gAq^6Kf zO2q_28`gYmcGJ!5jPF1DUVM3dpEEn_ChWjt-n^O2&i^<6ulJvscu^EV+Qsv{^e1WI zLS*t%%hU=mdvVEi5p=Ya;R4xud^c(U5%b1I9o`x~4Of~upk8n- z7zX9eIe6|s0WRa%=J<>AD^I;YRv3SDq%b_1?_?O2_0>k@c4=+j@9&lSZ-4g)jxAT< z#KCvqXC0h4lgE9shWpV6z49y!G|t0~=mJDbzkD@hQV;}D7=}(QtHt#?@Y-u%o-D<(Ou>iLzj`V#x~PO;@;*9Ra_q{H$?;rn z_XaV%_J58}9z&n#aUohz!FqLBD6$=R8aXDw9uTbk>+$tZwv1G#ZWVyMk-kUB@x;&dH8r z$CxxnrvKryu#BrDHxW5xjB8_Rn z*=u#IXvd9DF(sfULdT2E#&Po6!yhlx5b?Mqnqu3JgNNmfw$>Ov&YPkVFRV;(o!>D* zG4*w0f+@8|V?-Zg@)0sXCOAo;sMZ!>QkESefGqq>nj(Cv0=}g@P8!2}jLRM8j~D;W zbRHWG5yy0z=w{j`DBH)k z3`}^h#_%w7fOMIyi;vM|w4(4TDD3((iAube7h$Lb*VTYsBav-r7R{$^K869oZPqsx zrFEvHnq4Pxx+*B!8k1$XmI2|%Tr@-FXKbCWjVbZ{Oy^1nfPqkHjm7IF&W_h)N(_Ju zO6xTyRBH@d>oh5C`O{WoWSS%Hb8)^-lSr4zT$+Ti6_Zot1T>49FQYCqC7EfZ(VV1H z0h7D$l}y3#KOjO;foj!bk|a|A6}Zgu7!?#T8+CQUvIH>c zoJh=FGS6dJU4y|<^>seS^~qzBgpLOyZf90@;30?_WAoUw)nIJ0-6W=D9j;Z?GugJT z$Yk^Px^OQ`@SKv%EWBS&b{ns|#*ZD20=}3z-CSoTF zf}r`9ki~g+ZHh3ad6CLQbPx4q z%j)VXR2JvgvA+?(j7ej12Jg}+Z^EzGJ9hoz?d9cVSXo(7-W6Ghv`O1d;aHc++Gq?y zDVNJ|Z06z}l%-rFGBsb7kCK2v+h`p98qRKP!L7r!tHu3)d~>r@D#60S0#vKj9dC=< zMi$rVToUcX1+NXSadB}GW@l$%|IDSE57d4uR_ZYS@aJ%rf>D;OJWbIW-<(E=GVRWcX!w;mpM%pI%t%gMQNCyVBsfV;7 z()OJ{4kuqN!n>ora2R&svRa3~zL$2CeHiIv7$k74EmdLe&k9_7`Fr?yeG8V65ruLW%_%7ukA`%FGeBB_ zwjpX}yO<;iE)+zCwi<;J;D>U~c})CCO4IHG?#BXp;x!7zr%*Z(47=Vs z1;N@D9Z&uht)MwMsvSOUc>#*oAy6U#PJ@C7xJZ=l^I{1g7UFqWoxFrx1tw&cU?p$& wAL}Ho;B~=t7q>zcmksU(fo=b>*S`V`0OTy`XmXc;WB>pF07*qoM6N<$f?m9zNdN!< literal 0 HcmV?d00001 diff --git a/tests/HwAccelerationTest/res/drawable/appwidget_bg_press.9.png b/tests/HwAccelerationTest/res/drawable/appwidget_bg_press.9.png new file mode 100644 index 0000000000000000000000000000000000000000..d060b77556bb6930c035116e65dbe6ae3fbed24e GIT binary patch literal 1908 zcmV-)2aEWLP)EJ?a zauVCr2`~q7$@CHQ!SuoO!SuoO!Su}HTGT4e_a8uZ?ijq9&A=S#y3cXord~FVR3d+p zj|-j;i;GJz|Io|e1%~yBwvIs{__28o9vm5h_sP~>`%wYJ%u8E!cxCK3EVOGtwc$!I z6w38);P|0Q_zwFTgHNoKC*PbJoxF2=bZjEq%P^{&6|Y(@Y)qElDCM`mx&!-)WqA1T zqi{|IC#>Z0J5j^$F$O*T2n=~Y!lmFm1Zx-HT?zK-vi1u(cVYvvi!OxcdAnByKSfs^`}iv- z+K=v|Q;tdnqVIHlXaoGanNIdKWhK^Fk>RSi zql2PbSM_nO)EUL_F-8|7M1XW~;y{so8h}YS?GON@5oeN2!Y7)*H?+q}F*L^5Tyb`P z{_k|hF;NKLr&5xQVys=s#C=RYO#-s1+ejgF0}QIgM#6F7#DSvgqwAf_N*G)>R zTuC;%juUicP*PJ2o32Gb*ghL&$l{D?&^2)-c0JXx5(1zgWU4WEyu>>2>RgEe5JBm@ zVtlz`=%-3aNvA(e6(dp(|DDZ{z-ka_Gnh+K5O!j4Djk5PG3QIEi(EcPOBX zIjO}M5d@Qo>bP-621XV~L~$imFzgTTP-LJwb(~nS29l5ve`4ywrY~e zK$|84znQ+7~MWb@9bdM(G|5lFk2`miwx>Wi%Y=kYWOQpjNBZ ze(I4?hsve+^v%!s>2AN+x)QGzz8}vWZD7CziCl>svzl>Wv{u{lv)ODWpU?jXgv_O6 zb2TPPGI1px47N3!O{mvvWM|0u0o0PF>!8+z0P9$o7)jBZ>ca}m`|ebG{> zRG_-PvWe?k+wiMSF&RyC@k&+r3D;(~&a4-UMJSic(yJm$ktSukE*+~XSrf$|lv1e# zvyC&?(U#Dr_M`Ga95Cn`-u-XEsjUWFJ({~PGrj)Bl|rEatE;O}tJU^AEpD1wY-i`< zs1p}FH$2B{*RH|x@-j@XpS^NR_UD;u16FQ-4NgU1q|;W8V$vF)oW_7M{>h8**mJY+ zG4@}s-@EcMxUJu=}A3}$k<9AI-@cel}P5|hHlu4BV^gH3cFoR3YS0E(YYOypkv=qL`_301r!t)=&*JO2rvk~t86!zg#sl)G|pNF?keg@x?%`%1>(wfq@+!SEi?-BqEMsOy^@^I+vNqFhD zX*hOd9A<_GV7!-Mki@aEwgH!a`wNzyIt?FgHlT=%A}HJFPI19FQA$TRL!^yHZ6tED z0nog~@joqo6hoTmE)j@o)antG7QQHFUB`s4q_q9M#r#++I`BpW#f_l!A{ctU%?Jc- zJ5hi9w`e)#WFmFAQOj~roF0J^aB#c`M2pEp$zCrO0HP_Lh1JW8&&oR?1k literal 0 HcmV?d00001 diff --git a/tests/HwAccelerationTest/res/drawable/green_gradient.9.png b/tests/HwAccelerationTest/res/drawable/green_gradient.9.png new file mode 100644 index 0000000000000000000000000000000000000000..a535678ab531fb6b2eef1b44ba8c08c54617ec37 GIT binary patch literal 1239 zcmV;|1StE7P)*B{sOG+ex84Lh{qygv`!v2TfSd@SK_4Ds>?R)jj#?8DM z{RzwWF}21htHnS+_wT>``Qy7!{V-kB&Wpq1U7yqEEe^)??su7b>%*oNAokgB#`JJ3 z{5?P|v2WvUZa}m?*h~&>c5siwq-a6hx=mSce+vt~`rvzvC8z@o^&NcNd>q^^%eZiF zfNlY&1(^cy7beBHK$g{*&92r2$Y1@TcLMl&81o+6s*LZ@_ST}+i7vb29r)tF81J>Be>0>lY>kfbQiIi_!l@?Fiixp z&l3E_zU76LSbz~|_GolpV^Y80BMX{yH7E-cW+_Fl*YFUK@#@EJ>W(lsEK&w-?1PUz z5CMUpxTw#)`lD_7Qz8*T!kCy|YDJl2X>R|IL9u}L>f?AYfVk7)r2h_8fbitoS+MYRO3Wb!b7?G&?2?=zF1q4?EYBE%n+(*lJyBDvWl?Js7r`+&)uVu=)o{oI;K%MM1)8tBy$|HtGpPpuqba*> zFiS@&Nzy^39bl>Gnr%8$aw#;>T&{WR$0F4r%ZJJnSmMMMLGBjdmNP!Lrxc7(-kDm5 zvcZ;~Ta!~89xF{BdD?^-JjKKTt4V7v`YtW1)dCM6 zLt@eE3ylN|r1M7j4fi(oY^Jug+IYx1tA@hXZX6o%`$rHSV!#eDpn&_=mR2zMItH$G z_B`+r>4QQJz=XlDAWSRKx-COp80Eu9awQT5y-$vXX9|t)M#-5hQ>8H&fuG?7!|eYPo*}7yy2m?(r^|+@}Bl002ovPDHLkV1g|6 BQ>Xv{ literal 0 HcmV?d00001 diff --git a/tests/HwAccelerationTest/res/drawable/widget_header.png b/tests/HwAccelerationTest/res/drawable/widget_header.png new file mode 100644 index 0000000000000000000000000000000000000000..0297dd109bdf3b958ca80bd7f661c4f9abaca421 GIT binary patch literal 6098 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 literal 0 HcmV?d00001 diff --git a/tests/HwAccelerationTest/res/layout/flipper_item.xml b/tests/HwAccelerationTest/res/layout/flipper_item.xml new file mode 100644 index 0000000000000..43a7bbfc2deb3 --- /dev/null +++ b/tests/HwAccelerationTest/res/layout/flipper_item.xml @@ -0,0 +1,39 @@ + + + + + + + + + + \ No newline at end of file diff --git a/tests/HwAccelerationTest/res/layout/widget.xml b/tests/HwAccelerationTest/res/layout/widget.xml new file mode 100644 index 0000000000000..503facedbf282 --- /dev/null +++ b/tests/HwAccelerationTest/res/layout/widget.xml @@ -0,0 +1,46 @@ + + + + + + + + + + diff --git a/tests/HwAccelerationTest/src/com/android/test/hwui/Bitmaps3dActivity.java b/tests/HwAccelerationTest/src/com/android/test/hwui/Bitmaps3dActivity.java new file mode 100644 index 0000000000000..baa1cb9168645 --- /dev/null +++ b/tests/HwAccelerationTest/src/com/android/test/hwui/Bitmaps3dActivity.java @@ -0,0 +1,74 @@ +/* + * Copyright (C) 2010 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.test.hwui; + +import android.app.Activity; +import android.content.Context; +import android.graphics.Bitmap; +import android.graphics.BitmapFactory; +import android.graphics.Canvas; +import android.graphics.Matrix; +import android.graphics.Paint; +import android.os.Bundle; +import android.view.Gravity; +import android.view.View; +import android.widget.FrameLayout; + +@SuppressWarnings({"UnusedDeclaration"}) +public class Bitmaps3dActivity extends Activity { + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + final BitmapsView view = new BitmapsView(this); + final FrameLayout layout = new FrameLayout(this); + layout.addView(view, new FrameLayout.LayoutParams(800, 400, Gravity.CENTER)); + view.setRotationX(-35.0f); + setContentView(layout); + } + + static class BitmapsView extends View { + private final Paint mBitmapPaint; + private final Bitmap mBitmap1; + private Matrix mMatrix; + + BitmapsView(Context c) { + super(c); + + mBitmap1 = BitmapFactory.decodeResource(c.getResources(), R.drawable.sunset1); + mBitmapPaint = new Paint(); + + mMatrix = new Matrix(); + mMatrix.setScale(2.0f, 2.0f); + mMatrix.preTranslate(0.0f, -10.0f); + } + + @Override + protected void onDraw(Canvas canvas) { + super.onDraw(canvas); + + canvas.drawColor(0xffffffff); + + canvas.save(); + canvas.translate(120.0f, 50.0f); + + canvas.concat(mMatrix); + canvas.drawBitmap(mBitmap1, 0.0f, 0.0f, mBitmapPaint); + + canvas.restore(); + } + } +} diff --git a/tests/HwAccelerationTest/src/com/android/test/hwui/ViewFlipperActivity.java b/tests/HwAccelerationTest/src/com/android/test/hwui/ViewFlipperActivity.java new file mode 100644 index 0000000000000..0e244fc0a31b0 --- /dev/null +++ b/tests/HwAccelerationTest/src/com/android/test/hwui/ViewFlipperActivity.java @@ -0,0 +1,58 @@ +/* + * Copyright (C) 2010 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.test.hwui; + +import android.app.Activity; +import android.os.Bundle; +import android.view.Gravity; +import android.view.LayoutInflater; +import android.view.View; +import android.widget.FrameLayout; +import android.widget.ImageView; +import android.widget.TextView; +import android.widget.ViewFlipper; + +@SuppressWarnings({"UnusedDeclaration"}) +public class ViewFlipperActivity extends Activity { + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + + final LayoutInflater inflater = getLayoutInflater(); + final View widget = inflater.inflate(R.layout.widget, null); + widget.setLayoutParams(new FrameLayout.LayoutParams(180, 180, Gravity.CENTER)); + + ViewFlipper flipper = (ViewFlipper) widget.findViewById(R.id.flipper); + + View view = inflater.inflate(R.layout.flipper_item, flipper, false); + flipper.addView(view); + ((ImageView) view.findViewById(R.id.widget_image)).setImageResource(R.drawable.sunset1); + ((TextView) view.findViewById(R.id.widget_text)).setText("This is a long line of text, " + + "enjoy the wrapping and drawing"); + + view = inflater.inflate(R.layout.flipper_item, flipper, false); + flipper.addView(view); + ((ImageView) view.findViewById(R.id.widget_image)).setImageResource(R.drawable.sunset3); + ((TextView) view.findViewById(R.id.widget_text)).setText("Another very long line of text, " + + "enjoy the wrapping and drawing"); + + FrameLayout layout = new FrameLayout(this); + layout.addView(widget); + + setContentView(layout); + } +}