16926c72e25b8dec3dd4b84af0819fa1937ae7296Romain Guy/* 26926c72e25b8dec3dd4b84af0819fa1937ae7296Romain Guy * Copyright (C) 2010 The Android Open Source Project 36926c72e25b8dec3dd4b84af0819fa1937ae7296Romain Guy * 46926c72e25b8dec3dd4b84af0819fa1937ae7296Romain Guy * Licensed under the Apache License, Version 2.0 (the "License"); 56926c72e25b8dec3dd4b84af0819fa1937ae7296Romain Guy * you may not use this file except in compliance with the License. 66926c72e25b8dec3dd4b84af0819fa1937ae7296Romain Guy * You may obtain a copy of the License at 76926c72e25b8dec3dd4b84af0819fa1937ae7296Romain Guy * 86926c72e25b8dec3dd4b84af0819fa1937ae7296Romain Guy * http://www.apache.org/licenses/LICENSE-2.0 96926c72e25b8dec3dd4b84af0819fa1937ae7296Romain Guy * 106926c72e25b8dec3dd4b84af0819fa1937ae7296Romain Guy * Unless required by applicable law or agreed to in writing, software 116926c72e25b8dec3dd4b84af0819fa1937ae7296Romain Guy * distributed under the License is distributed on an "AS IS" BASIS, 126926c72e25b8dec3dd4b84af0819fa1937ae7296Romain Guy * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 136926c72e25b8dec3dd4b84af0819fa1937ae7296Romain Guy * See the License for the specific language governing permissions and 146926c72e25b8dec3dd4b84af0819fa1937ae7296Romain Guy * limitations under the License. 156926c72e25b8dec3dd4b84af0819fa1937ae7296Romain Guy */ 166926c72e25b8dec3dd4b84af0819fa1937ae7296Romain Guy 17f607bdc167f66b3e7003acaa4736ae46d78c1492Romain Guypackage com.android.test.hwui; 186926c72e25b8dec3dd4b84af0819fa1937ae7296Romain Guy 196926c72e25b8dec3dd4b84af0819fa1937ae7296Romain Guyimport android.app.Activity; 206926c72e25b8dec3dd4b84af0819fa1937ae7296Romain Guyimport android.content.Context; 216926c72e25b8dec3dd4b84af0819fa1937ae7296Romain Guyimport android.graphics.Bitmap; 226926c72e25b8dec3dd4b84af0819fa1937ae7296Romain Guyimport android.graphics.BitmapFactory; 236926c72e25b8dec3dd4b84af0819fa1937ae7296Romain Guyimport android.graphics.Canvas; 246926c72e25b8dec3dd4b84af0819fa1937ae7296Romain Guyimport android.graphics.Paint; 256926c72e25b8dec3dd4b84af0819fa1937ae7296Romain Guyimport android.os.Bundle; 268fb954263dd2f918ad339045cc6d82e346515599Romain Guyimport android.util.Log; 276926c72e25b8dec3dd4b84af0819fa1937ae7296Romain Guyimport android.view.View; 286926c72e25b8dec3dd4b84af0819fa1937ae7296Romain Guy 296926c72e25b8dec3dd4b84af0819fa1937ae7296Romain Guy@SuppressWarnings({"UnusedDeclaration"}) 306926c72e25b8dec3dd4b84af0819fa1937ae7296Romain Guypublic class QuickRejectActivity extends Activity { 316926c72e25b8dec3dd4b84af0819fa1937ae7296Romain Guy @Override 326926c72e25b8dec3dd4b84af0819fa1937ae7296Romain Guy protected void onCreate(Bundle savedInstanceState) { 336926c72e25b8dec3dd4b84af0819fa1937ae7296Romain Guy super.onCreate(savedInstanceState); 346926c72e25b8dec3dd4b84af0819fa1937ae7296Romain Guy final QuickRejectView view = new QuickRejectView(this); 356926c72e25b8dec3dd4b84af0819fa1937ae7296Romain Guy setContentView(view); 366926c72e25b8dec3dd4b84af0819fa1937ae7296Romain Guy } 376926c72e25b8dec3dd4b84af0819fa1937ae7296Romain Guy 386926c72e25b8dec3dd4b84af0819fa1937ae7296Romain Guy static class QuickRejectView extends View { 396926c72e25b8dec3dd4b84af0819fa1937ae7296Romain Guy private Paint mBitmapPaint; 406926c72e25b8dec3dd4b84af0819fa1937ae7296Romain Guy private final Bitmap mBitmap1; 416926c72e25b8dec3dd4b84af0819fa1937ae7296Romain Guy 426926c72e25b8dec3dd4b84af0819fa1937ae7296Romain Guy QuickRejectView(Context c) { 436926c72e25b8dec3dd4b84af0819fa1937ae7296Romain Guy super(c); 446926c72e25b8dec3dd4b84af0819fa1937ae7296Romain Guy 456926c72e25b8dec3dd4b84af0819fa1937ae7296Romain Guy mBitmap1 = BitmapFactory.decodeResource(c.getResources(), R.drawable.sunset1); 466926c72e25b8dec3dd4b84af0819fa1937ae7296Romain Guy 476926c72e25b8dec3dd4b84af0819fa1937ae7296Romain Guy mBitmapPaint = new Paint(); 486926c72e25b8dec3dd4b84af0819fa1937ae7296Romain Guy mBitmapPaint.setFilterBitmap(true); 496926c72e25b8dec3dd4b84af0819fa1937ae7296Romain Guy } 506926c72e25b8dec3dd4b84af0819fa1937ae7296Romain Guy 516926c72e25b8dec3dd4b84af0819fa1937ae7296Romain Guy @Override 526926c72e25b8dec3dd4b84af0819fa1937ae7296Romain Guy protected void onDraw(Canvas canvas) { 536926c72e25b8dec3dd4b84af0819fa1937ae7296Romain Guy super.onDraw(canvas); 546926c72e25b8dec3dd4b84af0819fa1937ae7296Romain Guy 558fb954263dd2f918ad339045cc6d82e346515599Romain Guy int count = canvas.getSaveCount(); 568fb954263dd2f918ad339045cc6d82e346515599Romain Guy Log.d("OpenGLRenderer", "count=" + count); 578fb954263dd2f918ad339045cc6d82e346515599Romain Guy count = canvas.save(); 588fb954263dd2f918ad339045cc6d82e346515599Romain Guy Log.d("OpenGLRenderer", "count after save=" + count); 598fb954263dd2f918ad339045cc6d82e346515599Romain Guy count = canvas.getSaveCount(); 608fb954263dd2f918ad339045cc6d82e346515599Romain Guy Log.d("OpenGLRenderer", "getSaveCount after save=" + count); 618fb954263dd2f918ad339045cc6d82e346515599Romain Guy canvas.restore(); 628fb954263dd2f918ad339045cc6d82e346515599Romain Guy count = canvas.getSaveCount(); 638fb954263dd2f918ad339045cc6d82e346515599Romain Guy Log.d("OpenGLRenderer", "count after restore=" + count); 648fb954263dd2f918ad339045cc6d82e346515599Romain Guy canvas.save(); 658fb954263dd2f918ad339045cc6d82e346515599Romain Guy Log.d("OpenGLRenderer", "count after save=" + canvas.getSaveCount()); 668fb954263dd2f918ad339045cc6d82e346515599Romain Guy canvas.save(); 678fb954263dd2f918ad339045cc6d82e346515599Romain Guy Log.d("OpenGLRenderer", "count after save=" + canvas.getSaveCount()); 688fb954263dd2f918ad339045cc6d82e346515599Romain Guy canvas.save(); 698fb954263dd2f918ad339045cc6d82e346515599Romain Guy Log.d("OpenGLRenderer", "count after save=" + canvas.getSaveCount()); 708fb954263dd2f918ad339045cc6d82e346515599Romain Guy canvas.restoreToCount(count); 718fb954263dd2f918ad339045cc6d82e346515599Romain Guy count = canvas.getSaveCount(); 728fb954263dd2f918ad339045cc6d82e346515599Romain Guy Log.d("OpenGLRenderer", "count after restoreToCount=" + count); 738fb954263dd2f918ad339045cc6d82e346515599Romain Guy count = canvas.saveLayer(0, 0, 10, 10, mBitmapPaint, Canvas.ALL_SAVE_FLAG); 748fb954263dd2f918ad339045cc6d82e346515599Romain Guy Log.d("OpenGLRenderer", "count after saveLayer=" + count); 758fb954263dd2f918ad339045cc6d82e346515599Romain Guy count = canvas.getSaveCount(); 768fb954263dd2f918ad339045cc6d82e346515599Romain Guy Log.d("OpenGLRenderer", "getSaveCount after saveLayer=" + count); 778fb954263dd2f918ad339045cc6d82e346515599Romain Guy canvas.restore(); 788fb954263dd2f918ad339045cc6d82e346515599Romain Guy count = canvas.getSaveCount(); 798fb954263dd2f918ad339045cc6d82e346515599Romain Guy Log.d("OpenGLRenderer", "count after restore=" + count); 808fb954263dd2f918ad339045cc6d82e346515599Romain Guy 816926c72e25b8dec3dd4b84af0819fa1937ae7296Romain Guy canvas.save(); 826926c72e25b8dec3dd4b84af0819fa1937ae7296Romain Guy canvas.clipRect(0.0f, 0.0f, 40.0f, 40.0f); 836926c72e25b8dec3dd4b84af0819fa1937ae7296Romain Guy canvas.drawBitmap(mBitmap1, 0.0f, 0.0f, mBitmapPaint); 846926c72e25b8dec3dd4b84af0819fa1937ae7296Romain Guy canvas.drawBitmap(mBitmap1, -mBitmap1.getWidth(), 0.0f, mBitmapPaint); 856926c72e25b8dec3dd4b84af0819fa1937ae7296Romain Guy canvas.drawBitmap(mBitmap1, 50.0f, 0.0f, mBitmapPaint); 866926c72e25b8dec3dd4b84af0819fa1937ae7296Romain Guy canvas.restore(); 876926c72e25b8dec3dd4b84af0819fa1937ae7296Romain Guy } 886926c72e25b8dec3dd4b84af0819fa1937ae7296Romain Guy } 896926c72e25b8dec3dd4b84af0819fa1937ae7296Romain Guy}