summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorMike Reed <reed@google.com>2009-11-12 12:49:34 -0500
committerMike Reed <reed@google.com>2009-12-17 14:53:37 -0500
commitd5a80a5295438be18cfaebf197088d7c15f6d0ba (patch)
treed2f396ba8246001c57f42a3f9f84a032b99b3092 /src
parentc6343adff2abb5ae8ec2cc7ba613dd7e48ba7e9a (diff)
downloadpackages_apps_browser-d5a80a5295438be18cfaebf197088d7c15f6d0ba.zip
packages_apps_browser-d5a80a5295438be18cfaebf197088d7c15f6d0ba.tar.gz
packages_apps_browser-d5a80a5295438be18cfaebf197088d7c15f6d0ba.tar.bz2
add initial dragtrackers
deleted: src/com/android/browser/TestTracker.java
Diffstat (limited to 'src')
-rw-r--r--src/com/android/browser/MeshTracker.java147
-rw-r--r--src/com/android/browser/TabControl.java3
2 files changed, 150 insertions, 0 deletions
diff --git a/src/com/android/browser/MeshTracker.java b/src/com/android/browser/MeshTracker.java
new file mode 100644
index 0000000..a02f451
--- /dev/null
+++ b/src/com/android/browser/MeshTracker.java
@@ -0,0 +1,147 @@
+
+
+package com.android.browser;
+
+import android.graphics.Bitmap;
+import android.graphics.utils.BoundaryPatch;
+import android.graphics.Canvas;
+import android.graphics.Paint;
+import android.webkit.WebView;
+
+/*package*/ class MeshTracker extends WebView.DragTracker {
+
+ private static class Mesh {
+ private int mRows;
+ private int mCols;
+ private BoundaryPatch mPatch = new BoundaryPatch();
+ private float[] mCubics = new float[24];
+ private float[] mOrig = new float[24];
+ private float mStretchX, mStretchY;
+
+ Mesh(int rows, int cols) {
+ mRows = rows;
+ mCols = cols;
+ }
+
+ private void rebuildPatch() {
+ mPatch.setCubicBoundary(mCubics, 0, mRows, mCols);
+ }
+
+ private void setSize(float w, float h) {
+ float[] pts = mCubics;
+ float x1 = w*0.3333f;
+ float y1 = h*0.3333f;
+ float x2 = w*0.6667f;
+ float y2 = h*0.6667f;
+ pts[0*2+0] = 0; pts[0*2+1] = 0;
+ pts[1*2+0] = x1; pts[1*2+1] = 0;
+ pts[2*2+0] = x2; pts[2*2+1] = 0;
+
+ pts[3*2+0] = w; pts[3*2+1] = 0;
+ pts[4*2+0] = w; pts[4*2+1] = y1;
+ pts[5*2+0] = w; pts[5*2+1] = y2;
+
+ pts[6*2+0] = w; pts[6*2+1] = h;
+ pts[7*2+0] = x2; pts[7*2+1] = h;
+ pts[8*2+0] = x1; pts[8*2+1] = h;
+
+ pts[9*2+0] = 0; pts[9*2+1] = h;
+ pts[10*2+0] = 0; pts[10*2+1] = y2;
+ pts[11*2+0] = 0; pts[11*2+1] = y1;
+
+ System.arraycopy(pts, 0, mOrig, 0, 24);
+
+ // recall our stretcher
+ setStretch(mStretchX, mStretchY);
+ }
+
+ public void setBitmap(Bitmap bm) {
+ mPatch.setTexture(bm);
+ setSize(bm.getWidth(), bm.getHeight());
+ }
+
+ // first experimental behavior
+ private void doit0(float dx, float dy) {
+ int index;
+
+ if (dx < 0) {
+ index = 10;
+ } else {
+ index = 4;
+ }
+ mCubics[index*2 + 0] = mOrig[index*2 + 0] + dx;
+ mCubics[index*2 + 2] = mOrig[index*2 + 2] + dx;
+
+ if (dy < 0) {
+ index = 1;
+ } else {
+ index = 7;
+ }
+ mCubics[index*2 + 1] = mOrig[index*2 + 1] + dy;
+ mCubics[index*2 + 3] = mOrig[index*2 + 3] + dy;
+ }
+
+ private void doit1(float dx, float dy) {
+ int index;
+
+ if (dx < 0) {
+ index = 4;
+ } else {
+ index = 10;
+ }
+ mCubics[index*2 + 0] = mOrig[index*2 + 0] + dx;
+ mCubics[index*2 + 2] = mOrig[index*2 + 2] + dx;
+
+ if (dy < 0) {
+ index = 7;
+ } else {
+ index = 1;
+ }
+ mCubics[index*2 + 1] = mOrig[index*2 + 1] + dy;
+ mCubics[index*2 + 3] = mOrig[index*2 + 3] + dy;
+ }
+
+ public void setStretch(float dx, float dy) {
+ mStretchX = dx;
+ mStretchY = dy;
+ doit1(dx, dy);
+ rebuildPatch();
+ }
+
+ public void draw(Canvas canvas) {
+ mPatch.draw(canvas);
+ }
+ }
+
+ private Mesh mMesh;
+ private Bitmap mBitmap;
+
+ public MeshTracker() {}
+
+ @Override public void onStartDrag(float x, float y) {
+ mMesh = new Mesh(16, 16);
+ }
+
+ @Override public void onBitmapChange(Bitmap bm) {
+ mBitmap = bm;
+ mMesh.setBitmap(bm);
+ }
+
+ @Override public boolean onStretchChange(float sx, float sy) {
+ mMesh.setStretch(-sx, -sy);
+ return true;
+ }
+
+ @Override public void onStopDrag() {
+ mMesh = null;
+ }
+
+ @Override public void onDraw(Canvas canvas) {
+ canvas.drawColor(0xFF000000);
+ Paint paint = new Paint();
+ paint.setAlpha(0x80);
+ canvas.drawBitmap(mBitmap, 0, 0, paint);
+ mMesh.draw(canvas);
+ }
+}
+
diff --git a/src/com/android/browser/TabControl.java b/src/com/android/browser/TabControl.java
index 8373182..07cf2ac 100644
--- a/src/com/android/browser/TabControl.java
+++ b/src/com/android/browser/TabControl.java
@@ -520,6 +520,9 @@ class TabControl {
// settings
final BrowserSettings s = BrowserSettings.getInstance();
s.addObserver(w.getSettings()).update(s, null);
+
+ // disable for now
+ //w.setDragTracker(new MeshTracker());
return w;
}