From 5a7bbdeae6bde0c3ae202de7bac8a797fc51a68c Mon Sep 17 00:00:00 2001 From: Luke Shumaker Date: Tue, 6 May 2014 23:26:18 -0400 Subject: Draw circles gooder --- src/us/minak/IMEModifiers.java | 69 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 69 insertions(+) create mode 100644 src/us/minak/IMEModifiers.java (limited to 'src/us/minak/IMEModifiers.java') 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 getModifiersAtPoint(float x, float y) { + ArrayList ret = new ArrayList(); + + 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; + } +} -- cgit v1.2.3