diff options
author | Joseph Chang (bizkit) <bizkit@0xlab.org> | 2010-09-02 13:45:18 +0800 |
---|---|---|
committer | Joseph Chang (bizkit) <bizkit@0xlab.org> | 2010-09-02 13:45:18 +0800 |
commit | d6fab70950a35bcc408aa9dc0efb03c9f0ebcc2c (patch) | |
tree | 7c8b5c1f33ecc9cad5db4893f99ca6cf8e9dc962 | |
parent | e1ce979e8fe59e3fb17181b848d9d0a9a76346db (diff) | |
download | 0xbench-d6fab70950a35bcc408aa9dc0efb03c9f0ebcc2c.tar.gz |
Add 2D benchmark DrawImage
-rw-r--r-- | AndroidManifest.xml | 9 | ||||
-rw-r--r-- | res/layout/arc.xml | 2 | ||||
-rw-r--r-- | res/layout/image.xml | 12 | ||||
-rw-r--r-- | src/org/zeroxlab/benchmark/Benchmark.java | 1 | ||||
-rw-r--r-- | src/org/zeroxlab/benchmark/CaseDrawImage.java | 94 | ||||
-rw-r--r-- | src/org/zeroxlab/graphics/DrawArc.java | 2 | ||||
-rw-r--r-- | src/org/zeroxlab/graphics/DrawImage.java | 70 | ||||
-rw-r--r-- | src/org/zeroxlab/graphics/DrawImageView.java | 94 |
8 files changed, 282 insertions, 2 deletions
diff --git a/AndroidManifest.xml b/AndroidManifest.xml index 20b500f..b10971b 100644 --- a/AndroidManifest.xml +++ b/AndroidManifest.xml @@ -176,6 +176,15 @@ </intent-filter> </activity> + <activity + android:name="org.zeroxlab.graphics.DrawImage" + android:screenOrientation="portrait" + > + <intent-filter> + <action android:name="android.intent.action.MAIN" /> + </intent-filter> + </activity> + </application> <uses-sdk android:minSdkVersion="7" /> </manifest> diff --git a/res/layout/arc.xml b/res/layout/arc.xml index f4be562..222e432 100644 --- a/res/layout/arc.xml +++ b/res/layout/arc.xml @@ -5,7 +5,7 @@ android:layout_height="fill_parent"> <org.zeroxlab.graphics.DrawArcView - android:id="@+id/rect" + android:id="@+id/arc" android:layout_width="fill_parent" android:layout_height="fill_parent"/> diff --git a/res/layout/image.xml b/res/layout/image.xml new file mode 100644 index 0000000..bfa457f --- /dev/null +++ b/res/layout/image.xml @@ -0,0 +1,12 @@ +<?xml version="1.0" encoding="utf-8"?> + +<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" + android:layout_width="fill_parent" + android:layout_height="fill_parent"> + + <org.zeroxlab.graphics.DrawImageView + android:id="@+id/image" + android:layout_width="fill_parent" + android:layout_height="fill_parent"/> + +</FrameLayout> diff --git a/src/org/zeroxlab/benchmark/Benchmark.java b/src/org/zeroxlab/benchmark/Benchmark.java index 0810672..0ed4616 100644 --- a/src/org/zeroxlab/benchmark/Benchmark.java +++ b/src/org/zeroxlab/benchmark/Benchmark.java @@ -101,6 +101,7 @@ public class Benchmark extends Activity implements View.OnClickListener { Case libMicro = new NativeCaseMicro(); Case libUbench = new NativeCaseUbench(); + mCases.add(new CaseDrawImage()); mCases.add(new CaseDrawRect()); mCases.add(new CaseDrawArc()); mCases.add(new CaseDrawText()); diff --git a/src/org/zeroxlab/benchmark/CaseDrawImage.java b/src/org/zeroxlab/benchmark/CaseDrawImage.java new file mode 100644 index 0000000..b947c15 --- /dev/null +++ b/src/org/zeroxlab/benchmark/CaseDrawImage.java @@ -0,0 +1,94 @@ +/* + * Copyright (C) 2010 0xlab - http://0xlab.org/ + * + * 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 org.zeroxlab.benchmark; + +import android.util.Log; + +import android.os.SystemClock; + +import android.app.Activity; +import android.content.Context; +import android.content.BroadcastReceiver; +import android.content.Intent; +import android.os.Bundle; +import android.widget.*; +import android.view.*; +import java.nio.*; +import java.util.ArrayList; + +public class CaseDrawImage extends Case{ + + public static int ImageRound = 500; + + CaseDrawImage() { + super("CaseDrawImage", "org.zeroxlab.graphics.DrawImage", 2, ImageRound); + mType = "2d-fps"; + String [] _tmp = { + "2d", + "render", + "skia", + "view", + }; + mTags = _tmp; + } + + public String getTitle() { + return "Draw Image"; + } + + public String getDescription() { + return "call canvas.drawImage to draw icon for " + ImageRound + " times"; + } + + @Override + public String getBenchmark() { + if (!couldFetchReport()) { + return "DrawImage has no report"; + } + + String result = ""; + long total = 0; + int length = mResult.length; + + for (int i = 0; i < length; i++) { + float second = (mResult[i] / 1000f); + float fps = (float)mCaseRound / second; // milliseconds to seconds + result += "Round " + i +": fps = " + fps + "\n"; + total += fps; + } + + result += "Average: fps = " + ((float)total/length) + "\n"; + return result; + } + + @Override + public ArrayList<Scenario> getScenarios () { + ArrayList<Scenario> scenarios = new ArrayList<Scenario>(); + + Scenario s = new Scenario(getTitle(), mType, mTags); + s.mLog = getBenchmark(); + for (int i = 0; i < mResult.length; i++) { + float second = (mResult[i] / 1000f); + float fps = (float)mCaseRound / second; + s.mResults.add(((Float)fps).doubleValue()); + } + + scenarios.add(s); + return scenarios; + } + +} diff --git a/src/org/zeroxlab/graphics/DrawArc.java b/src/org/zeroxlab/graphics/DrawArc.java index 209c439..1ee495a 100644 --- a/src/org/zeroxlab/graphics/DrawArc.java +++ b/src/org/zeroxlab/graphics/DrawArc.java @@ -58,7 +58,7 @@ public class DrawArc extends Tester { super.onCreate(savedInstanceState); setContentView(R.layout.arc); - mView = (DrawArcView) findViewById(R.id.rect); + mView = (DrawArcView) findViewById(R.id.arc); startTester(); } diff --git a/src/org/zeroxlab/graphics/DrawImage.java b/src/org/zeroxlab/graphics/DrawImage.java new file mode 100644 index 0000000..a5c8581 --- /dev/null +++ b/src/org/zeroxlab/graphics/DrawImage.java @@ -0,0 +1,70 @@ +/* + * Copyright (C) 2010 0xlab - http://0xlab.org/ + * + * 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 org.zeroxlab.graphics; + +import org.zeroxlab.benchmark.R; + +import org.zeroxlab.benchmark.Tester; + +import android.app.Activity; +import android.content.Context; +import android.graphics.Canvas; +import android.graphics.Color; +import android.graphics.Paint; + +import android.os.Bundle; +import android.view.View; +import android.graphics.Bitmap; +import android.graphics.BitmapFactory; + +import org.zeroxlab.graphics.DrawImageView; + +public class DrawImage extends Tester { + /** Called when the activity is first created. */ + + private DrawImageView mView; + + public String getTag() { + return "DrawImage"; + } + + public int sleepBeforeStart() { + return 1000; + } + + public int sleepBetweenRound() { + return 0; + } + + public void oneRound() { + mView.doDraw(); + decreaseCounter(); + } + + @Override + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.image); + + mView = (DrawImageView) findViewById(R.id.image); + Bitmap bmp = BitmapFactory.decodeResource(getResources(), R.drawable.icon); + mView.setImage(bmp); + + startTester(); + } +} + diff --git a/src/org/zeroxlab/graphics/DrawImageView.java b/src/org/zeroxlab/graphics/DrawImageView.java new file mode 100644 index 0000000..88c0379 --- /dev/null +++ b/src/org/zeroxlab/graphics/DrawImageView.java @@ -0,0 +1,94 @@ +/* + * Copyright (C) 2007 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 org.zeroxlab.graphics; + +import org.zeroxlab.benchmark.R; + +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.RectF; +import android.graphics.Color; +import android.graphics.Bitmap; +import android.graphics.BitmapFactory; +import android.graphics.drawable.Drawable; +import android.os.Bundle; +import android.os.Handler; +import android.os.Message; +import android.util.AttributeSet; +import android.view.KeyEvent; +import android.view.SurfaceHolder; +import android.view.SurfaceView; +import android.view.View; +import android.widget.TextView; + +import android.util.Log; + +import java.util.ArrayList; +import java.util.Random; + + +class DrawImageView extends SurfaceView { + + private SurfaceHolder mSurfaceHolder; + private int position[] = {0,0,0,0,0}; + private boolean direction[] = {true,true,true,true,true}; + private Bitmap mBitmap; + private Paint bgPaint; + + protected void setImage(Bitmap bmp) { + mBitmap = bmp; + } + + protected void doDraw() { + Canvas canvas = mSurfaceHolder.lockCanvas(); + drawImage(canvas); + mSurfaceHolder.unlockCanvasAndPost(canvas); + } + + private void drawImage(Canvas canvas) { + canvas.drawRect(0,0,getWidth(),getHeight(),bgPaint); + + for(int x=0; x<5; x++) { + int speed = (x+1) * 2; + + canvas.drawBitmap(mBitmap, (getWidth() - mBitmap.getWidth())/2, position[x], null); + if(direction[x]) { + position[x] += speed; + if (position[x] + mBitmap.getHeight() >= getHeight()) + direction[x] = !direction[x]; + } else { + position[x] -= speed; + if (position[x] <= 0) + direction[x] = !direction[x]; + } + + } + } + + public DrawImageView(Context context, AttributeSet attrs) { + super(context, attrs); + mSurfaceHolder = getHolder(); + bgPaint = new Paint(); + bgPaint.setColor(Color.BLACK); + bgPaint.setStyle(Paint.Style.FILL); + } +} + |