Loading libs/hwui/OpenGLRenderer.cpp +5 −1 Original line number Diff line number Diff line Loading @@ -289,8 +289,11 @@ bool OpenGLRenderer::createLayer(sp<Snapshot> snapshot, float left, float top, Rect bounds(left, top, right, bottom); mSnapshot->transform->mapRect(bounds); LayerSize size(bounds.getWidth(), bounds.getHeight()); // Layers only make sense if they are in the framebuffer's bounds bounds.intersect(*mSnapshot->clipRect); if (bounds.isEmpty()) return; LayerSize size(bounds.getWidth(), bounds.getHeight()); Layer* layer = mCaches.layerCache.get(size); if (!layer) { return false; Loading Loading @@ -525,6 +528,7 @@ void OpenGLRenderer::drawPatch(SkBitmap* bitmap, Res_png_9patch* patch, Patch* mesh = mCaches.patchCache.get(patch); mesh->updateVertices(bitmap, left, top, right, bottom, &patch->xDivs[0], &patch->yDivs[0], patch->numXDivs, patch->numYDivs); mesh->dump(); // Specify right and bottom as +1.0f from left/top to prevent scaling since the // patch mesh already defines the final size Loading tests/HwAccelerationTest/AndroidManifest.xml +10 −0 Original line number Diff line number Diff line Loading @@ -119,6 +119,16 @@ </intent-filter> </activity> <activity android:name="ThinPatchesActivity" android:label="_9patchThin" android:theme="@android:style/Theme.Translucent.NoTitleBar"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name="NinePatchesActivity" android:label="_9patch"> Loading tests/HwAccelerationTest/res/drawable/btn_toggle_off.9.png 0 → 100644 +364 B Loading image diff... tests/HwAccelerationTest/res/drawable/btn_toggle_on.9.png 0 → 100644 +442 B Loading image diff... tests/HwAccelerationTest/src/com/android/test/hwui/NewLayersActivity.java +11 −17 Original line number Diff line number Diff line Loading @@ -39,6 +39,7 @@ public class NewLayersActivity extends Activity { super(c); mLayerPaint = new Paint(); mLayerPaint.setAlpha(127); mRectPaint = new Paint(); mRectPaint.setAntiAlias(true); mRectPaint.setTextSize(24.0f); Loading @@ -47,28 +48,21 @@ public class NewLayersActivity extends Activity { @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); canvas.drawRGB(128, 255, 128); canvas.translate(140.0f, 100.0f); mLayerPaint.setAlpha(127); int count = canvas.saveLayer(0.0f, 0.0f, 200.0f, 100.0f, mLayerPaint, Canvas.ALL_SAVE_FLAG); mRectPaint.setColor(0x7fff0000); canvas.drawRect(-20.0f, -20.0f, 220.0f, 120.0f, mRectPaint); mRectPaint.setColor(0xff000000); canvas.drawText("This is a very long string to overlap between layers and framebuffer", -100.0f, 50.0f, mRectPaint); canvas.save(); canvas.restoreToCount(count); canvas.translate(140.0f, 100.0f); drawStuff(canvas, Canvas.ALL_SAVE_FLAG); canvas.translate(0.0f, 200.0f); drawStuff(canvas, Canvas.HAS_ALPHA_LAYER_SAVE_FLAG); mLayerPaint.setAlpha(127); count = canvas.saveLayer(0.0f, 0.0f, 200.0f, 100.0f, mLayerPaint, Canvas.HAS_ALPHA_LAYER_SAVE_FLAG); canvas.restore(); } private void drawStuff(Canvas canvas, int saveFlags) { int count = canvas.saveLayer(0.0f, 0.0f, 200.0f, 100.0f, mLayerPaint, saveFlags); mRectPaint.setColor(0x7fff0000); canvas.drawRect(-20.0f, -20.0f, 220.0f, 120.0f, mRectPaint); Loading Loading
libs/hwui/OpenGLRenderer.cpp +5 −1 Original line number Diff line number Diff line Loading @@ -289,8 +289,11 @@ bool OpenGLRenderer::createLayer(sp<Snapshot> snapshot, float left, float top, Rect bounds(left, top, right, bottom); mSnapshot->transform->mapRect(bounds); LayerSize size(bounds.getWidth(), bounds.getHeight()); // Layers only make sense if they are in the framebuffer's bounds bounds.intersect(*mSnapshot->clipRect); if (bounds.isEmpty()) return; LayerSize size(bounds.getWidth(), bounds.getHeight()); Layer* layer = mCaches.layerCache.get(size); if (!layer) { return false; Loading Loading @@ -525,6 +528,7 @@ void OpenGLRenderer::drawPatch(SkBitmap* bitmap, Res_png_9patch* patch, Patch* mesh = mCaches.patchCache.get(patch); mesh->updateVertices(bitmap, left, top, right, bottom, &patch->xDivs[0], &patch->yDivs[0], patch->numXDivs, patch->numYDivs); mesh->dump(); // Specify right and bottom as +1.0f from left/top to prevent scaling since the // patch mesh already defines the final size Loading
tests/HwAccelerationTest/AndroidManifest.xml +10 −0 Original line number Diff line number Diff line Loading @@ -119,6 +119,16 @@ </intent-filter> </activity> <activity android:name="ThinPatchesActivity" android:label="_9patchThin" android:theme="@android:style/Theme.Translucent.NoTitleBar"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name="NinePatchesActivity" android:label="_9patch"> Loading
tests/HwAccelerationTest/src/com/android/test/hwui/NewLayersActivity.java +11 −17 Original line number Diff line number Diff line Loading @@ -39,6 +39,7 @@ public class NewLayersActivity extends Activity { super(c); mLayerPaint = new Paint(); mLayerPaint.setAlpha(127); mRectPaint = new Paint(); mRectPaint.setAntiAlias(true); mRectPaint.setTextSize(24.0f); Loading @@ -47,28 +48,21 @@ public class NewLayersActivity extends Activity { @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); canvas.drawRGB(128, 255, 128); canvas.translate(140.0f, 100.0f); mLayerPaint.setAlpha(127); int count = canvas.saveLayer(0.0f, 0.0f, 200.0f, 100.0f, mLayerPaint, Canvas.ALL_SAVE_FLAG); mRectPaint.setColor(0x7fff0000); canvas.drawRect(-20.0f, -20.0f, 220.0f, 120.0f, mRectPaint); mRectPaint.setColor(0xff000000); canvas.drawText("This is a very long string to overlap between layers and framebuffer", -100.0f, 50.0f, mRectPaint); canvas.save(); canvas.restoreToCount(count); canvas.translate(140.0f, 100.0f); drawStuff(canvas, Canvas.ALL_SAVE_FLAG); canvas.translate(0.0f, 200.0f); drawStuff(canvas, Canvas.HAS_ALPHA_LAYER_SAVE_FLAG); mLayerPaint.setAlpha(127); count = canvas.saveLayer(0.0f, 0.0f, 200.0f, 100.0f, mLayerPaint, Canvas.HAS_ALPHA_LAYER_SAVE_FLAG); canvas.restore(); } private void drawStuff(Canvas canvas, int saveFlags) { int count = canvas.saveLayer(0.0f, 0.0f, 200.0f, 100.0f, mLayerPaint, saveFlags); mRectPaint.setColor(0x7fff0000); canvas.drawRect(-20.0f, -20.0f, 220.0f, 120.0f, mRectPaint); Loading