@Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); canvas.drawColor(backgroundColor); if (colorWheel != null) canvas.drawBitmap(colorWheel, 0, 0, null); if (currentColorCircle != null) { float maxRadius = canvas.getWidth() / 2f - STROKE_RATIO * (1f + ColorWheelRenderer.GAP_PERCENTAGE); float size = maxRadius / density / 2; colorWheelFill.setColor( Color.HSVToColor(currentColorCircle.getHsvWithLightness(this.lightness))); colorWheelFill.setAlpha((int) (alpha * 0xff)); canvas.drawCircle( currentColorCircle.getX(), currentColorCircle.getY(), size * STROKE_RATIO, selectorStroke1); canvas.drawCircle( currentColorCircle.getX(), currentColorCircle.getY(), size * (1 + (STROKE_RATIO - 1) / 2), selectorStroke2); canvas.drawCircle( currentColorCircle.getX(), currentColorCircle.getY(), size, alphaPatternPaint); canvas.drawCircle(currentColorCircle.getX(), currentColorCircle.getY(), size, colorWheelFill); } }
private ColorCircle findNearestByPosition(float x, float y) { ColorCircle near = null; double minDist = Double.MAX_VALUE; for (ColorCircle colorCircle : renderer.getColorCircleList()) { double dist = colorCircle.sqDist(x, y); if (minDist > dist) { minDist = dist; near = colorCircle; } } return near; }
public void setLightness(float lightness) { this.lightness = lightness; this.initialColor = Color.HSVToColor( Utils.alphaValueAsInt(this.alpha), currentColorCircle.getHsvWithLightness(lightness)); if (this.colorEdit != null) this.colorEdit.setText("#" + Integer.toHexString(this.initialColor).toUpperCase()); if (this.alphaSlider != null && this.initialColor != null) this.alphaSlider.setColor(this.initialColor); updateColorWheel(); invalidate(); }
private ColorCircle findNearestByColor(int color) { float[] hsv = new float[3]; Color.colorToHSV(color, hsv); ColorCircle near = null; double minDiff = Double.MAX_VALUE; double x = hsv[1] * Math.cos(hsv[0] * Math.PI / 180); double y = hsv[1] * Math.sin(hsv[0] * Math.PI / 180); for (ColorCircle colorCircle : renderer.getColorCircleList()) { float[] hsv1 = colorCircle.getHsv(); double x1 = hsv1[1] * Math.cos(hsv1[0] * Math.PI / 180); double y1 = hsv1[1] * Math.sin(hsv1[0] * Math.PI / 180); double dx = x - x1; double dy = y - y1; double dist = dx * dx + dy * dy; if (dist < minDiff) { minDiff = dist; near = colorCircle; } } return near; }
public int getSelectedColor() { int color = 0; if (currentColorCircle != null) color = Color.HSVToColor(currentColorCircle.getHsvWithLightness(this.lightness)); return Utils.adjustAlpha(this.alpha, color); }