diff options
-rw-r--r-- | 1251.odp (renamed from doc/1251.odp) | bin | 11501 -> 11501 bytes | |||
-rw-r--r-- | src/us/minak/IMEGestureOverlayView.java | 22 | ||||
-rw-r--r-- | src/us/minak/IMEView.java | 37 | ||||
-rw-r--r-- | src/us/minak/MetaCircle.java | 29 | ||||
-rw-r--r-- | src/us/minak/MetaExpression.java | 24 |
5 files changed, 98 insertions, 14 deletions
Binary files differ diff --git a/src/us/minak/IMEGestureOverlayView.java b/src/us/minak/IMEGestureOverlayView.java index 1a88cd6..b167c53 100644 --- a/src/us/minak/IMEGestureOverlayView.java +++ b/src/us/minak/IMEGestureOverlayView.java @@ -12,6 +12,7 @@ package us.minak; +import java.util.LinkedList; import java.util.List; import android.content.Context; @@ -21,7 +22,6 @@ import android.gesture.GestureOverlayView; import android.gesture.GestureOverlayView.OnGesturePerformedListener; import android.gesture.Prediction; import android.graphics.Canvas; -import android.graphics.Color; import android.graphics.Paint; import android.util.AttributeSet; @@ -32,6 +32,7 @@ public class IMEGestureOverlayView extends GestureOverlayView implements OnGestu private static final double SCORE_TRESHOLD = 3.0; private final GestureLibrary mGestureLibrary; private StringReciever mOnGestureRecognizedListener; + public List<MetaCircle> circles = new LinkedList<MetaCircle>(); public IMEGestureOverlayView(Context context, AttributeSet attrs) { super(context, attrs); @@ -59,19 +60,12 @@ public class IMEGestureOverlayView extends GestureOverlayView implements OnGestu } } } - private final Paint mPaintRed = new Paint(); - private final Paint mPaintBlue = new Paint(); + public void onDraw(Canvas canvas) { - mPaintRed.setColor(Color.RED); - mPaintBlue.setColor(Color.BLUE); - canvas.drawCircle( - 0F/*(float)(canvas.getWidth()/2.0)*/, - 0F/*(float)(canvas.getHeight()/2.0)*/, - 10F, - mPaintRed); - canvas.drawLine(0, 0, - canvas.getWidth(), - canvas.getHeight(), - mPaintBlue); + for (MetaCircle circle : circles) { + final Paint p = new Paint(); + p.setColor(circle.color); + canvas.drawCircle(circle.x, circle.y, circle.radius, p); + } } } diff --git a/src/us/minak/IMEView.java b/src/us/minak/IMEView.java index 724d69d..7cdf4fd 100644 --- a/src/us/minak/IMEView.java +++ b/src/us/minak/IMEView.java @@ -13,11 +13,14 @@ package us.minak; import java.util.LinkedList; +import java.util.List; import java.util.Locale; import java.util.Queue; import android.content.Context; +import android.graphics.Color; import android.util.AttributeSet; +import android.view.MotionEvent; import android.view.View; import android.widget.Button; import android.widget.RelativeLayout; @@ -32,6 +35,27 @@ public class IMEView extends RelativeLayout { private ShiftState mShiftState = ShiftState.OFF; private final Queue<Character> mSymbolsQueue = new LinkedList<Character>(); + private float x; + private float y; + private boolean ongoingGesture = false; + + public boolean setTouchLocation(float x, float y) { + if (!ongoingGesture) { + this.x = x; + this.y = y; + return true; + } + return false; + } + + public void setState(boolean state) { + ongoingGesture = state; + } + + public boolean getState() { + return ongoingGesture; + } + private enum ShiftState { OFF, ON, CAPS_LOCK }; @@ -61,6 +85,11 @@ public class IMEView extends RelativeLayout { final Button spaceButton = (Button) findViewById(R.id.space_btn); spaceButton.setOnClickListener(mButtonClickListener); spaceButton.setOnLongClickListener(mButtonLongClickListener); + + //dynamic MetaCircle adding stuff here. replace null with Shift or Ctrl or Meta or Alt or Hyper or whatever. + drawingSpaceView.circles.add(new MetaCircle((float)50.0, (float)50.0, (float)20.0, Color.RED, new MetaExpression(null))); + drawingSpaceView.circles.add(new MetaCircle((float)70.0, (float)70.0, (float)20.0, Color.RED, new MetaExpression(null))); + drawingSpaceView.circles.add(new MetaCircle((float)50.0, (float)30.0, (float)20.0, Color.RED, new MetaExpression(null))); } public void setOnCharacterEnteredListener(StringReciever onCharacterEnteredListener) { @@ -119,6 +148,13 @@ public class IMEView extends RelativeLayout { } }; + private final OnTouchListener mOnTouchListener = new OnTouchListener() { + @Override + public boolean onTouch(View v, MotionEvent event) { + return setTouchLocation(event.getX(), event.getY()); + } + }; + /** * Changes shift state to the next one (OFF -> ON -> CAPS LOCK). */ @@ -148,6 +184,7 @@ public class IMEView extends RelativeLayout { * The character to enter */ private void enterCharacter(String character) { + //for each circle in circles check to see if the touch was in the circle and apply the meta-key switch (mShiftState) { case OFF: mOnCharacterEnteredListener.putString(character); diff --git a/src/us/minak/MetaCircle.java b/src/us/minak/MetaCircle.java new file mode 100644 index 0000000..908842a --- /dev/null +++ b/src/us/minak/MetaCircle.java @@ -0,0 +1,29 @@ +package us.minak; + +/* + * Not sure if this should be drawable or what. + * + */ +public class MetaCircle { + public MetaExpression metaExpr; + public float x; + public float y; + public float radius; + public int color; + public boolean expanded; + public int expansion; //the level of expansion (if multiple circles are expanded, this decides precidence) + + MetaCircle(float x, float y, float radius, int color, MetaExpression metaExpr) { + this.metaExpr = metaExpr; + this.x = x; + this.y = y; + this.radius = radius; + this.color = color; + this.expanded = false; + this.expansion = 0; + } + + public boolean containsPoint(float x, float y) { + return Math.pow(x - this.x, 2) + Math.pow(y - this.y, 2) < Math.pow(this.radius, 2) ? true : false; + } +} diff --git a/src/us/minak/MetaExpression.java b/src/us/minak/MetaExpression.java new file mode 100644 index 0000000..4398c42 --- /dev/null +++ b/src/us/minak/MetaExpression.java @@ -0,0 +1,24 @@ +package us.minak; + +public class MetaExpression { + public enum State { + ON, OFF, LOCK + } + + public State state; + private String value; + + public String getValue() { + //however we want to do return this + return this.value; + } + + public void setValue(String value) { + this.value = value; + } + + MetaExpression(String value) { + this.value = value; + this.state = State.OFF; + } +} |