summaryrefslogtreecommitdiff
path: root/src/us/minak/IMEModifiers.java
diff options
context:
space:
mode:
authorDavisLWebb <davislwebb@ymail.com>2014-05-06 23:26:39 -0400
committerDavisLWebb <davislwebb@ymail.com>2014-05-06 23:26:39 -0400
commit9ca3fa2d19c48dafb5f25f92bcd5ba87d03031b0 (patch)
tree16a4b3d3f41dd7df9046312fdb6db0d49a0bda7c /src/us/minak/IMEModifiers.java
parent69fd85ee8e91f610524dfa8134b1d2c56fd8a56d (diff)
parent5a7bbdeae6bde0c3ae202de7bac8a797fc51a68c (diff)
Merge branch 'master' of https://github.com/AndrewMurrell/minak
Diffstat (limited to 'src/us/minak/IMEModifiers.java')
-rw-r--r--src/us/minak/IMEModifiers.java69
1 files changed, 69 insertions, 0 deletions
diff --git a/src/us/minak/IMEModifiers.java b/src/us/minak/IMEModifiers.java
new file mode 100644
index 0000000..ef49f17
--- /dev/null
+++ b/src/us/minak/IMEModifiers.java
@@ -0,0 +1,69 @@
+package us.minak;
+
+import android.graphics.Canvas;
+import android.graphics.Color;
+import android.graphics.Paint;
+import java.util.List;
+import java.util.ArrayList;
+
+public class IMEModifiers {
+ private final String[] modifiers = { "shift", "ctrl", "alt" };
+ private final Paint colorPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
+ private final Paint textPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
+
+ private float cx = 0;
+ private float cy = 0;
+ private double innerR = 0;
+ private double outerR = 0;
+ private double radEach = 0;
+
+
+ public IMEModifiers() {
+ textPaint.setColor(Color.BLACK);
+ }
+
+ public void draw(Canvas canvas, float cx, float cy, float r) {
+ this.cx = cx;
+ this.cy = cy;
+ innerR = r*(1.0/3.0);
+ outerR = (float)(r*(2.0/3.0));
+ radEach = (Math.PI*2.0)/modifiers.length;
+
+ double rad = 0;
+ float[] hsv = {0F, 1F, .75F};
+
+ for (int i = 0; i < modifiers.length; i++) {
+ rad = radEach * i;
+ hsv[0] = (float)Math.toDegrees(rad);
+ colorPaint.setColor(Color.HSVToColor(0x80, hsv));
+
+ canvas.drawCircle(
+ (float)(cx+innerR*Math.cos(rad)),
+ (float)(cy+innerR*Math.sin(rad)),
+ (float)outerR,
+ colorPaint);
+ canvas.drawText(
+ modifiers[i],
+ (float)(cx+innerR*Math.cos(rad)),
+ (float)(cy+innerR*Math.sin(rad)),
+ textPaint);
+ }
+ }
+
+ public List<String> getModifiersAtPoint(float x, float y) {
+ ArrayList<String> ret = new ArrayList<String>();
+
+ double mx;
+ double my;
+ double rad = 0;
+ for (int i = 0; i < modifiers.length; i++) {
+ rad = radEach * i;
+ mx = cx+innerR*Math.cos(rad);
+ my = cy+innerR*Math.sin(rad);
+
+ if (Math.sqrt(Math.pow(mx-x,2)+Math.pow(my-y, 2)) > outerR)
+ ret.add(modifiers[i]);
+ }
+ return ret;
+ }
+}